xxxxxxxxxx
59
let synth = new Tone.PolySynth();
synth.set({
"volume": 0.3,
"envelope": {
"attack": 0.8,
"release": 0.4
}
})
synth.toMaster();
//Melodies
let ml = new Tone.Loop(melodyLoop, "4n");
let major = [0, 2, 4, 5, 7, 9, 11, 12];
let minor = [0, 2, 3, 5, 7, 9, 10, 12];
let root = 21; // lowest A in MIDI
let octave = 2;
let myScale = major; // try minor and other modes
function melodyLoop(time) {
let p = random();
if(p < 0.9){
// melody
let pos = floor(random(0, myScale.length));
let note1 = root + myScale[pos] + octave * 12;
let note1Object = Tone.Frequency(note1, "midi");
// parallel harmony
let semitones = 7; // a fifth
let note2 = note1 + semitones;
let note2Object = Tone.Frequency(note2, "midi");
synth.triggerAttackRelease(note1Object, "4n", time);
synth.triggerAttackRelease(note2Object, "4n", time);
}
}
// Start
function mouseClicked() {
if (Tone.context.state !== 'running') {
Tone.context.resume();
}
Tone.Transport.start();
ml.start();
}
let label;
let slider;
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
text("Click to Start", 40, 40);
}