Big changes are the new event classes: Tone.Event, Tone.Loop, Tone.Part, Tone.Sequence, and Tone.Pattern. These simplify interacting with the Transport.schedule
(formerly Transport.setTimeline
). They allow you to more easily schedule loopable, schedulable, and modifiable events along the Transport's timeline.
All Changes:
- Added PitchShift and Vibrato Effect.
- Added Timeline/TimelineState/TimelineSignal which keeps track of all scheduled state changes.
- Clock uses requestAnimationFrame instead of ScriptProcessorNode
- Removed
onended
event from Tone.Source - Refactored tests into individual files.
- Renamed some Signal methods:
exponentialRampToValueNow
->exponentialRampToValue
,setCurrentValueNow
->setRampPoint
- LFO no longer starts at bottom of cycle. Starts at whatever phase it's set at.
- Transport is an event emitter. triggers events on "start", "stop", "pause", and "loop".
- Oscillator accepts a "partials" array.
- Microphone inherits from ExternalInput which is generalized for different inputs.
- New scheduling methods on Transport -
schedule
,scheduleOnce
, andscheduleRepeat
. - Tone.Gain and Tone.Delay classes wrap the native Web Audio nodes.
- Moved MidiToScore and TypeScript definitions to separate repos.
- Tone.Param wraps the native AudioParam and allows for unit conversion.
- Quantization with Transport.quantize and using "@" in any Time. Read more.
- Control-rate generators for value interpolation, patterns, random numbers, and markov chains.
- Scheduable musical events: Tone.Event, Tone.Loop, Tone.Part, Tone.Pattern, Tone.Sequence.
- Player's playbackRate is now a signal and Noise includes a playbackRate signal.
- All filterEnvelopes use new Tone.FrequencyEnvelope with frequency units and
baseFrequency
andoctaves
instead ofmin
andmax
. - Phaser uses "octaves" instead of "depth" to be more consistent across the whole Tone.js API.
- Presets now have their own repo
DEPRECATED:
setTimeout
,setInterval
,setTimeline
in favor of newschedule
,scheduleOnce
, andscheduleRepeat
.- Tone.Signal no longer takes an AudioParam in the first argument. Use Tone.Param instead.
- Tone.Buffer.onload/onprogress/onerror is deprecated. Use
Tone.Buffer.on("load", callback)
instead.