xxxxxxxxxx
56
let synth = new Tone.PolySynth();
synth.set({
"envelope": {
"attack": 0.8,
"release": 0.4
}
})
synth.toMaster();
//Drone
let dl = new Tone.Loop(droneLoop, "8n");
function droneLoop(time) {
synth.triggerAttackRelease("A1", "8n", time);
}
//Melody
let ml = new Tone.Loop(melodyLoop, "8n");
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 = 3;
let myScale = major; // try minor and other modes
var probability = 0.7;
function melodyLoop(time) {
if (random() < probability) { //stay silent sometimes
let pos = floor(random(0, myScale.length));
let note = root + myScale[pos] + octave * 12;
let noteObject = Tone.Frequency(note, "midi");
synth.triggerAttackRelease(noteObject, "8n", time);
}
}
// Start
function mouseClicked() {
if (Tone.context.state !== 'running') {
Tone.context.resume();
}
Tone.Transport.start();
dl.start();
ml.start();
}
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
}