Releases: Tonejs/Tone.js
Releases · Tonejs/Tone.js
14.7.39
14.7.x
Features
- Converted to typescript!!!
- adding AudioWorkletNode constructors to Context (f7bdd75)
- adding ability to get the frequency at the FFT index (22cecdc)
- adding AudioWorkletNode constructors to Context (f7bdd75)
- adding BiquadFilter (75617d3), closes #686
- adding linting to jsdocs (10ef513)
- adding send/receive to Channel (703f27a)
- Adding triggerRelease to PluckSynth (04405af)
- Can set the parameter after constructing Param (23ca0f9)
- adding onerror to Sampler (7236600), closes #605
- Chorus extends StereoFeedbackEffect (a28f1af), closes #575
- Convolver is just a wrapper around the ConvolverNode, no longer an effect (1668dec)
- Get an oscillator wave as an array (9ad519e)
- OfflineContext returns a ToneAudioBuffer (889dafa)
- OfflineContext yields thread every second of audio rendered (1154470), closes #436
- Renaming TransportTimelineSignal to SyncedSignal (86853fb)
- es6 output (e5d28ba)
- Render a segment of the envelope as an array (fc5b6f7)
- testing examples in jsdocs (e306319)
- Wrapper around the AudioWorkletNode (2ee8cb1)
- Input/Outputs are no longer arrays.
- simplifies connect/disconnect logic greatly. Simplifies API to just have clearly named inputs/outputs instead of overloading input/output connect numbers
- Using "Destination" instead of "Master" for output
- More consistent with Web Audio API
- FrequencyShifter - thanks @Foaly
- PolySynth does not require a polyphony value.
- Voice allocation and disposing is done automatically based on demand.
- MetalSynth and MembraneSynth extends Monophonic enabling them to be used in PolySynth
- OnePoleFilter is a 6b-per-octave lowpass or highpass filter
- Using OnePoleFilter in PluckSynth and LowpassCombFilter
- latencyHint is now set in constructor (ba8e82b), closes #658
- meter output can be normalRange in addition to decibels (2625a13)
- option to pass in the number of input channels to Panner (d966735), closes #609
BREAKING CHANGES
13.8.25
- Moving to common.js-style code
Breaking Changes
- AudioNode.prototype.connect is no longer overwritten. This means that you can no longer connect native nodes to Tone.js Nodes.
- Tone.connect(srcNode, destNode, [ouputNum], [inputNum]) is the way to connect native Web Audio nodes with Tone.js nodes.
13.4.9
- Updating semantic versioning to be more in line with other semvers. Now version is 13.x.x
- logging full version
- Added Object notation for Tone.TimeBase and classes that extend it.
- i.e. Tone.Time({'4n' : 1, '8t' : 2})
- Replacement for deprecated expression strings.
- Tone.Meter uses RMS instead of peak (thanks @Idicious)
- Tone.Sampler supports polyphonic syntax (thanks @zfan40)
- Building files with webpack
- Follower/Gate uses a single "smoothing" value instead of separate attacks and releases
- Changing references to
window
allowing it to not throw error in node context - Testing examples
- Tone.Channel combines Tone.PanVol with Tone.Solo.
- Removing require.html example.
- adding
partialCount
andbaseType
to Oscillator classes, helps with getting/setting complex types. - New examples with updated interface
Tone.start()
to simplify resuming the AudioContext
r12
- Consolidating all shims into shim folder
- Using ConstantSourceNode in Signal when available
- switching to eslint from jshint
- Running CI tests on Firefox, Chrome (latest and canary) and Safari (latest and version 9).
- Tone.Reverb is a convolution-based stereo reverb. Example.
- Optimizing basic Oscillator types and many Signal use-case
- Optimizing basic connection use-case of Tone.Signal where one signal is controlling another signal
- Testing rendered output against an existing audio file for continuity and consistency
- Optimizing triggerAttack/Release by starting/stopping oscillators when not playing
- TickSource (used in Clock and Player) tracks the elapsed ticks
- Improved precision of tracking ticks in Transport and Clock
Player.position
returns the playback position of the AudioBuffer accounting for any playbackRate changes- Removing
retrigger
option with Tone.Player. Tone.BufferSource should be used if retriggering is desired.
BREAKING CHANGES:
- Tone.TimeBase and all classes that extend it not longer support string expressions.
RATIONALE :
* Since all classes implementvalueOf
, expressions can be composed in JS instead of as strings
* e.g.Time('4n') * 2 + Time('3t')
instead ofTime('4n * 2 + 3t')
* this change greatly simplifies the code and is more performant
r11
- Code coverage analysis
- Dev build with each successful commit
- Versioned docs plus a dev build of the docs on successful commits
- Tone.AudioNode is base class for all classes which generate or process audio
- Tone.Sampler simplifies creating multisampled instruments
- Tone.Solo makes it easier to mute/solo audio
- Mixer and sampler examples
- Making type-checking methods static
- Tone.TransportTimelineSignal is a signal which can be scheduled along the Transport
- Tone.FFT and Tone.Waveform abstract Tone.Analyser
- Tone.Meter returns decibels
- Tone.Envelope uses exponential approach instead of exponential curve for decay and release curves
- Tone.BufferSource fadeIn/Out can be either "linear" or "exponential" curve
r10
- Tone.Context wraps AudioContext
- Tone.OfflineContext wraps OfflineAudioContext
- Tone.Offline: method for rendering audio offline
- Rewriting tests with Tone.Offline
- Optimizing Tone.Draw to only loop when events are scheduled: #194
- Time.eval->valueOf which takes advantage of build-in primitive evaluation #205
- Offline example
r9
- Tone.Clock performance and lookAhead updates.
- Tone.Transport.lookAhead = seconds|'playback'|'interactive'|'balanced'
- Convolver.load and Player.load returns Promise
- Tone.ExternalInput -> Tone.UserMedia, simplified API, open() returns Promise.
- Tone.Draw for animation-frame synced drawing
- Compressor Parameters are now Tone.Params
- Bug fixes
r8
Better Source syncing to the transport, 3D Audio Spatialization and temporary fix for bug in Chrome 53+.
CHANGELOG:
- Transport.seconds returns the progress in seconds.
- Buffer.from/toArray, Float32Array <-> Buffer conversions
- Buffer.slice(start, end) slices and returns a subsection of the Buffer
- Source.sync now syncs all subsequent calls to
start
andstop
to the TransportTime instead of the AudioContext time.- e.g. source.sync().start(0).stop(0.8); //plays source between 0 and 0.8 of the Transport
- Transport.on("start" / "stop") callbacks are invoked just before the event.
- Param can accept an LFO description in the constructor or .value
- e.g. param.value = {min : 10, max : 20, frequency : 0.4}
- Time.TimeBase has clone/copy methods.
- Tone.Buffer.prototype.load returns Promise
- Using Tone.Delay and Tone.Gain everywhere
- Patch for Chrome 53+ issue of not correctly scheduling AudioParams with setValueAtTime
- Panner3D and Tone.Listener wrap native PannerNode and AudioListener to give 3D panning ability.
r7
- MetalSynth creates metalic, cymbal sounds
- DrumSynth -> MembraneSynth
- FMOscillator, AMOscillator types
- FatOscillator creates multiple oscillators and detunes them slightly
- FM, AM, Fat Oscillators incorporated into OmniOscillator
- Simplified FM and AM Synths and APIs
- Panner.pan is between -1,1 like the StereoPannerNode
- Pruned away unused (or little used) Signal classes.
- All this functionality will be available when the AudioWorkerNode is introduced.
- Clock uses Web Workers instead of requestAnimationFrame which allows it to run in the background.
- Removed
startMobile
. Using StartAudioContext in examples. - Automated test runner using Travis CI
- Simplified NoiseSynth by removing filter and filter envelope.
- Added new timing primitive types: Time, Frequency, TransportTime.
- Switching parameter position of type and size in Tone.Analyser
- Tone.Meter uses Tone.Analyser instead of ScriptProcessorNode.
- Tone.Envelope has 5 new attack/release curves: "sine", "cosine", "bounce", "ripple", "step"
- Renamed Tone.SimpleSynth -> Tone.Synth
- Tone.Buffers combines multiple buffers
- Tone.BufferSource a low-level wrapper, and Tone.MultiPlayer which is good for multisampled instruments.
- Tone.GrainPlayer: granular synthesis buffer player.
- Simplified Sampler
DEPRECATED:
- Removed SimpleFM and SimpleAM
r6
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.