Published
Edited
Aug 2, 2021
2 forks
2 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
playerNotes = cMajScale
Insert cell
Insert cell
Insert cell
Insert cell
// Create a synth and connect it to the main output (your speakers)
// Encapsuled into an object to make it mutable
// (it needs to be disposable to be able to stop the player)
synth = {
return {
synth: new Tone.Synth().toDestination()
};
}
Insert cell
function startPlayer(notes) {
synth.synth.dispose();
synth.synth = new Tone.Synth().toDestination();
const now = Tone.now();
for (const { note, start, duration } of notes) {
synth.synth.triggerAttackRelease(note, duration, now + start + 0.5);
}
}
Insert cell
function stopPlayer() {
synth.synth.dispose();
}
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more