xxxxxxxxxx
105
let sequence1 = [1, 2, 4, 1, 2, 4, 2, 7, 2, 5]
let sequence1Interval = 10
let sequence1Index = 0
let sequence2 = [0, -1, 4, 3, -1, 5, 4, 2, -1, 2, 6 ,7]
let sequence2Interval = 10
let sequence2Index = 0
let waveform = new Tone.Waveform(512)
/* Envelope and Player for sequence 1 */
let env1 = new Tone.AmplitudeEnvelope({
"attack" : 0.1,
"decay" : 0.01,
"sustain" : 0.40,
"release" : 0.1
}).chain(waveform, Tone.Master);
let player1 = new Tone.Player({
"url" : "./sample.ogg",
"playbackRate": 0.04,
"loop" : true,
"autostart":true,
"volume": 12
}).connect(env1);
/* Envelope and Player for sequence 2 */
let env2 = new Tone.AmplitudeEnvelope({
"attack" : 0.01,
"decay" : 0.01,
"sustain" : 0.1,
"release" : 0.1
}).chain(waveform, Tone.Master);
let player2 = new Tone.Player({
"url" : "./sample.ogg",
"playbackRate": 1110.10,
"loop" : true,
"autostart":true,
"volume": -2
}).connect(env2);
function setup() {
createCanvas(720, 400);
}
function draw() {
background(frameCount%120)
updateSound()
noFill()
stroke(255)
push()
translate(40,height/2)
beginShape()
waveform.getValue().forEach((el,i) => {
let x = map(i,0,waveform.size,0,width-80)
let amp = 100
vertex(x,el * amp)
})
endShape()
pop()
}
function updateSound() {
if(!keyIsPressed) {
if(frameCount % sequence1Interval == 0) {
sequence1Index++
sequence1Index %= sequence1.length
let n = sequence1[sequence1Index]
if(n>=0) {
player1.seek(n)
env1.triggerAttack();
} else {
env1.triggerRelease();
}
}
if(frameCount % sequence2Interval == 0) {
sequence2Index++
sequence2Index %= sequence2.length
let n = sequence2[sequence2Index]
if(n>=0) {
player2.seek(n)
env2.triggerAttack();
} else {
env2.triggerRelease();
}
}
}
}