Draw is useful for synchronizing visuals and audio events. Callbacks from Tone.Transport or any of the Tone.Event classes always happen before the scheduled time and are not synchronized to the animation frame so they are not good for triggering tightly synchronized visuals and sound. Draw makes it easy to schedule callbacks using the AudioContext time and uses requestAnimationFrame. Draw is used to synchronize the draw frame with the Transport's callbacks. See Draw
Tone.Transport.schedule((time) => {
// use the time argument to schedule a callback with Draw
Tone.Draw.schedule(() => {
// do drawing or DOM manipulation here
console.log(time);
}, time);
}, "+0.5");
Tone.Transport.start();
Pass in a constructor as the first argument
Pass in a constructor as the first argument
The amount of time before the scheduled time that the callback can be invoked. Default is half the time of an animation frame (0.008 seconds).
The number of seconds of 1 processing block (128 samples)
console.log(Tone.Destination.blockTime);
The context belonging to the node.
Set this debug flag to log all events that happen in this class.
Indicates if the instance was disposed. 'Disposing' an instance means that all of the Web Audio nodes that were created for the instance are disconnected and freed for garbage collection.
The duration after which events are not invoked.
The duration in seconds of one sample.
console.log(Tone.Transport.sampleTime);
The version number semver
Cancel events scheduled after the given time
Get the object's attributes.
const osc = new Tone.Oscillator();
console.log(osc.get());
Returns all of the default options belonging to the class.
Return the current time of the Context clock without any lookAhead.
setInterval(() => {
console.log(Tone.immediate());
}, 100);
Return the current time of the Context clock plus the lookAhead.
setInterval(() => {
console.log(Tone.now());
}, 100);
Schedule a function at the given time to be invoked on the nearest animation frame.
Tone.Transport.scheduleRepeat(time => {
Tone.Draw.schedule(() => console.log(time), time);
}, 1);
Tone.Transport.start();
Callback is invoked at the given time.
Set multiple properties at once with an object.
const filter = new Tone.Filter().toDestination();
// set values using an object
filter.set({
frequency: "C6",
type: "highpass"
});
const player = new Tone.Player("https://tonejs.github.io/audio/berklee/Analogsynth_octaves_highmid.mp3").connect(filter);
player.autostart = true;
Convert the input to a frequency number
const gain = new Tone.Gain();
console.log(gain.toFrequency("4n"));
Convert the incoming time to seconds. This is calculated against the current Tone.Transport bpm
const gain = new Tone.Gain();
setInterval(() => console.log(gain.toSeconds("4n")), 100);
// ramp the tempo to 60 bpm over 30 seconds
Tone.getTransport().bpm.rampTo(60, 30);
Convert the class to a string
const osc = new Tone.Oscillator();
console.log(osc.toString());
Convert the input time into ticks
const gain = new Tone.Gain();
console.log(gain.toTicks("4n"));