2017-05-14 02:17:10 +00:00
### r11
* [Code coverage ](https://coveralls.io/github/Tonejs/Tone.js ) analysis
* [Dev build ](https://tonejs.github.io/build/dev/Tone.js ) with each successful commit
2017-08-28 19:10:47 +00:00
* [Versioned docs ](https://tonejs.github.io/docs/Tone ) plus a [dev build of the docs ](https://tonejs.github.io/docs/dev/Tone ) on successful commits
2017-09-13 15:20:10 +00:00
* [Tone.AudioNode ](https://tonejs.github.io/docs/AudioNode ) is base class for all classes which generate or process audio
2017-08-28 15:09:05 +00:00
* [Tone.Sampler ](https://tonejs.github.io/docs/Sampler ) simplifies creating multisampled instruments
* [Tone.Solo ](https://tonejs.github.io/docs/Solo ) makes it easier to mute/solo audio
2017-08-27 21:53:42 +00:00
* [Mixer ](https://tonejs.github.io/examples/#mixer ) and [sampler ](https://tonejs.github.io/examples/#sampler ) examples
2017-08-28 19:10:47 +00:00
* Making type-checking methods static
* [Tone.TransportTimelineSignal ](https://tonejs.github.io/docs/TransportTimelineSignal ) is a signal which can be scheduled along the Transport
2017-09-13 15:20:10 +00:00
* [Tone.FFT ](https://tonejs.github.io/docs/FFT ) and [Tone.Waveform ](https://tonejs.github.io/docs/Waveform ) abstract Tone.Analyser
* [Tone.Meter ](https://tonejs.github.io/docs/Meter ) returns decibels
* [Tone.Envelope ](https://tonejs.github.io/docs/Envelope ) uses exponential approach instead of exponential curve for decay and release curves
2017-09-16 19:19:27 +00:00
* [Tone.BufferSource ](https://tonejs.github.io/docs/BufferSource ) fadeIn/Out can be either "linear" or "exponential" curve
2017-05-14 02:17:10 +00:00
2017-03-13 01:49:49 +00:00
### r10
* Tone.Context wraps AudioContext
* Tone.OfflineContext wraps OfflineAudioContext
* Tone.Offline: method for rendering audio offline
2017-03-26 16:33:34 +00:00
* Rewriting tests with Tone.Offline
2017-03-13 01:51:19 +00:00
* Optimizing Tone.Draw to only loop when events are scheduled: [#194 ](https://github.com/Tonejs/Tone.js/issues/194 )
* Time.eval->valueOf which takes advantage of build-in primitive evaluation [#205 ](https://github.com/Tonejs/Tone.js/issues/205 )
2017-03-26 16:33:34 +00:00
* [Offline example ](https://tonejs.github.io/examples/#offline )
2017-03-13 01:49:49 +00:00
2016-12-19 01:33:12 +00:00
### r9
2017-08-27 21:53:42 +00:00
* Tone.Clock performance and lookAhead updates.
2016-12-19 01:33:12 +00:00
* Tone.Transport.lookAhead = seconds|'playback'|'interactive'|'balanced'
* Convolver.load and Player.load returns Promise
2017-01-08 22:29:11 +00:00
* Tone.ExternalInput -> Tone.UserMedia, simplified API, open() returns Promise.
2016-12-19 01:33:12 +00:00
* Tone.Draw for animation-frame synced drawing
2017-01-08 22:29:11 +00:00
* Compressor Parameters are now Tone.Params
* Bug fixes
2016-12-19 01:33:12 +00:00
2016-08-15 11:29:16 +00:00
### r8
2017-08-27 21:53:42 +00:00
* Transport.seconds returns the progress in seconds.
2016-08-16 03:15:16 +00:00
* Buffer.from/toArray, Float32Array < - > Buffer conversions
* Buffer.slice(start, end) slices and returns a subsection of the Buffer
2017-08-27 21:53:42 +00:00
* Source.sync now syncs all subsequent calls to `start` and `stop` to the TransportTime instead of the AudioContext time.
2016-09-18 23:42:57 +00:00
* e.g. source.sync().start(0).stop(0.8); //plays source between 0 and 0.8 of the Transport
2016-10-01 20:26:49 +00:00
* Transport.on("start" / "stop") callbacks are invoked just before the event.
2016-09-18 23:42:57 +00:00
* 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.
2016-09-19 04:09:18 +00:00
* Tone.Buffer.prototype.load returns Promise
2016-09-24 15:02:15 +00:00
* Using Tone.Delay and Tone.Gain everywhere
2016-10-01 20:26:49 +00:00
* Patch for Chrome 53+ issue of not correctly scheduling AudioParams with setValueAtTime
2017-08-27 21:53:42 +00:00
* Panner3D and Tone.Listener wrap native PannerNode and AudioListener to give 3D panning ability.
2016-10-01 20:26:49 +00:00
2016-03-05 05:25:27 +00:00
### r7
2015-08-17 00:33:18 +00:00
2016-01-30 20:58:07 +00:00
* 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
2016-03-05 05:25:27 +00:00
* Panner.pan is between -1,1 like the StereoPannerNode
2017-08-27 21:53:42 +00:00
* 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 ](https://github.com/tambien/StartAudioContext ) in examples.
2016-03-05 05:25:27 +00:00
* Automated test runner using [Travis CI ](https://travis-ci.org/Tonejs/Tone.js/ )
2016-04-18 04:33:21 +00:00
* Simplified NoiseSynth by removing filter and filter envelope.
2016-04-18 06:40:18 +00:00
* Added new timing primitive types: Time, Frequency, TransportTime.
2016-05-14 20:40:00 +00:00
* Switching parameter position of type and size in Tone.Analyser
2016-05-14 23:16:03 +00:00
* Tone.Meter uses Tone.Analyser instead of ScriptProcessorNode.
2016-06-15 04:42:50 +00:00
* Tone.Envelope has 5 new attack/release curves: "sine", "cosine", "bounce", "ripple", "step"
2016-05-23 23:52:56 +00:00
* Renamed Tone.SimpleSynth -> Tone.Synth
2016-06-15 04:42:50 +00:00
* Tone.Buffers combines multiple buffers
* Tone.BufferSource a low-level wrapper, and Tone.MultiPlayer which is good for multisampled instruments.
2017-08-27 21:53:42 +00:00
* Tone.GrainPlayer: granular synthesis buffer player.
2016-07-07 14:40:30 +00:00
* Simplified Sampler
2016-01-30 20:58:07 +00:00
DEPRECATED:
* Removed SimpleFM and SimpleAM
### r6
2015-08-21 19:02:33 +00:00
* Added PitchShift and Vibrato Effect.
2015-12-06 18:14:32 +00:00
* Added Timeline/TimelineState/TimelineSignal which keeps track of all scheduled state changes.
2015-08-21 19:02:33 +00:00
* Clock uses requestAnimationFrame instead of ScriptProcessorNode
* Removed `onended` event from Tone.Source
2017-08-27 21:53:42 +00:00
* Refactored tests into individual files.
2015-10-21 17:16:39 +00:00
* Renamed some Signal methods: `exponentialRampToValueNow` ->`exponentialRampToValue`, `setCurrentValueNow` ->`setRampPoint`
2015-08-31 15:43:44 +00:00
* LFO no longer starts at bottom of cycle. Starts at whatever phase it's set at.
2017-08-27 21:53:42 +00:00
* Transport is an event emitter. triggers events on "start", "stop", "pause", and "loop".
* Oscillator accepts a "partials" array.
2015-10-21 17:16:39 +00:00
* Microphone inherits from ExternalInput which is generalized for different inputs.
* New scheduling methods on Transport - `schedule` , `scheduleOnce` , and `scheduleRepeat` .
* Tone.Gain and Tone.Delay classes wrap the native Web Audio nodes.
* Moved [MidiToScore ](https://github.com/Tonejs/MidiConvert ) and [TypeScript ](https://github.com/Tonejs/TypeScript ) definitions to separate repos.
2017-08-27 21:53:42 +00:00
* Tone.Param wraps the native AudioParam and allows for unit conversion.
2015-11-04 21:02:35 +00:00
* Quantization with Transport.quantize and using "@" in any Time. [Read more ](https://github.com/Tonejs/Tone.js/wiki/Time ).
2017-08-27 21:53:42 +00:00
* 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` and `octaves` instead of `min` and `max` .
* Phaser uses "octaves" instead of "depth" to be more consistent across the whole Tone.js API.
2015-12-08 02:32:40 +00:00
* Presets now have [their own repo ](https://github.com/Tonejs/Presets )
2015-10-21 17:16:39 +00:00
DEPRECATED:
* `setTimeout` , `setInterval` , `setTimeline` in favor of new `schedule` , `scheduleOnce` , and `scheduleRepeat` .
2017-08-27 21:53:42 +00:00
* 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.
2015-08-17 00:33:18 +00:00
2015-06-14 01:03:48 +00:00
### r5
2015-04-20 19:46:19 +00:00
* reverse buffer for Player and Sampler.
* Tone.Volume for simple volume control in Decibels.
* Panner uses StereoPannerNode when available.
2017-08-27 21:53:42 +00:00
* AutoFilter and Tremolo effects.
2015-04-20 19:46:19 +00:00
* Made many attributes read-only. preventing this common type of error: `oscillator.frequency = 200` when it should be `oscillator.frequency.value = 200` .
2017-08-27 21:53:42 +00:00
* Envelope supports "linear" and "exponential" attack curves.
* Renamed Tone.EQ -> Tone.EQ3.
2015-04-20 19:46:19 +00:00
* Tone.DrumSynth makes kick and tom sounds.
* Tone.MidSideCompressor and Tone.MidSideSplit/Tone.MidSideMerge
2015-05-13 03:58:41 +00:00
* Tone.Oscillator - can specify the number of partials in the type: i.e. "sine10", "triangle3", "square4", etc.
2017-08-27 21:53:42 +00:00
* mute/unmute the master output: `Tone.Master.mute = true` .
2015-05-23 22:27:09 +00:00
* 3 new simplified synths: SimpleSynth, SimpleAM and SimpleFM
2017-08-27 21:53:42 +00:00
* `harmonicity` is a signal-rate value for all instruments.
* expose Q in Phaser.
* unit conversions using Tone.Type for signals and LFO.
2015-06-28 00:54:14 +00:00
* [new docs ](http://tonejs.org/docs )
2015-10-21 17:16:39 +00:00
* [updated examples ](http://tonejs.org/examples )
2015-04-20 19:46:19 +00:00
2015-08-17 00:33:18 +00:00
### r4
2014-12-06 21:49:04 +00:00
2015-02-10 21:35:50 +00:00
* `toFrequency` accepts notes by name (i.e. `"C4"` )
2015-01-06 03:02:48 +00:00
* Envelope no longer accepts exponential scaling, only Tone.ScaledEnvelope
2015-02-10 21:35:50 +00:00
* Buffer progress and load events which tracks the progress of all downloads
2015-01-06 03:02:48 +00:00
* Buffer only accepts a single url
2015-02-21 19:06:10 +00:00
* Sampler accepts multiple samples as an object.
2015-02-10 21:35:50 +00:00
* `setPitch` in sampler -> `setNote`
* Deprecated MultiSampler - use Sampler with PolySynth instead
2015-04-20 19:46:19 +00:00
* Added [cdn ](http://cdn.tonejs.org/latest/Tone.min.js ) - please don't use for production code
2015-02-02 17:48:04 +00:00
* Renamed DryWet to CrossFade
2015-02-10 21:35:50 +00:00
* Functions return `this` to allow for chaining. i.e. `player.toMaster().start(2)` .
2015-02-21 19:06:10 +00:00
* Added `units` to Signal class which allows signals to be set in terms of Tone.Time, Tone.Frequency, Numbers, or Decibels.
* Replaced set/get method with ES5 dot notation. i.e. `player.setVolume(-10)` is now `player.volume.value = -10` .
2017-08-27 21:53:42 +00:00
To ramp the volume use either `player.volume.linearRampToValueNow(-10, "4n")` , or the new `rampTo` method which automaically selects the ramp (linear|exponential) based on the type of data.
2015-02-23 19:08:22 +00:00
* set/get methods for all components
2015-02-21 19:06:10 +00:00
* syncSignal and unsyncSignal moved from Signal to Transport
2015-02-23 19:08:22 +00:00
* Add/Multiply/Subtract/Min/Max/GreaterThan/LessThan all extend Tone.Signal which allows them to be scheduled and automated just like Tone.Signal.
2015-02-24 03:15:22 +00:00
* Deprecated Tone.Divide and Tone.Inverse. They were more complicated than they were useful.
2015-02-21 19:06:10 +00:00
2015-02-23 19:08:22 +00:00
BREAKING CHANGES:
2015-02-21 19:06:10 +00:00
2017-08-27 21:53:42 +00:00
The API has been changed consistently to use `.attribute` for getting and setting instead of `getAttribute` and `setAttribute` methods. The reasoning for this is twofold: firstly, Tone.Signal attributes were previously limited in their scheduling capabilities when set through a setter function. For exactly, it was not possible to do a setValueAtTime on the `bpm` of the Transport. Secondly, the new EcmaScript 5 getter/setter approach resembles the Web Audio API much more closely, which will make intermixing the two APIs even easier.
2015-02-21 19:06:10 +00:00
If you're using Sublime Text, one way to transition from the old API to the new one is with a regex find/replace:
find `Tone.Transport.setBpm\((\d+)\)` and replace it with `Tone.Transport.bpm.value = $1` .
Or if setBpm was being invoked with a rampTime:
find `Tone.Transport.setBpm\((\d+)\, (\d+)\)` and replace it with `Tone.Transport.bpm.rampTo($1, $2)` .
2014-12-06 21:49:04 +00:00
2015-08-17 00:33:18 +00:00
### r3
2014-09-25 17:44:55 +00:00
2014-11-02 01:55:45 +00:00
Core Change:
2015-01-05 02:46:56 +00:00
2014-09-25 17:44:55 +00:00
* Swing parameter on Transport
2014-10-02 17:40:35 +00:00
* Player loop positions stay in tempo-relative terms even with tempo changes
2014-11-02 01:55:45 +00:00
* Envelope ASDR stay in tempo-relative terms even with tempo changes
2014-11-30 18:21:12 +00:00
* Modified build script to accommodate using requirejs with build and minified version
2014-12-04 03:48:20 +00:00
2014-11-02 01:55:45 +00:00
Signal Processing:
2014-12-04 03:48:20 +00:00
2014-11-02 01:55:45 +00:00
* Tone.Expr: signal processing expression parser for Tone.Signal math
* All signal binary operators accept two signals as inputs
2014-10-03 17:08:37 +00:00
* Deprecated Tone.Threshold - new class Tone.GreaterThanZero
2014-10-20 02:08:15 +00:00
* NOT, OR, AND, and IfThenElse signal logic operators
2014-11-30 02:36:43 +00:00
* Additional signal classes: Inverse, Divide, Pow, AudioToGain, Subtract
* Scale no longer accepts input min/max. Assumes [0,1] range.
* Normalize class if scaling needs to happen from other input ranges
2014-11-30 18:21:12 +00:00
* WaveShaper function wraps the WaveShaperNode
2014-12-04 03:48:20 +00:00
2014-11-02 01:55:45 +00:00
Effects:
2014-12-04 03:48:20 +00:00
2014-11-02 01:55:45 +00:00
* Distortion and Chebyshev distortion effects
* Compressor and MultibandCompressor
2014-11-30 02:36:43 +00:00
* MidSide effect type and StereoWidener
2014-11-02 01:55:45 +00:00
* Convolver effect and example
2014-12-04 03:48:20 +00:00
2014-11-02 01:55:45 +00:00
Synths:
2014-12-04 03:48:20 +00:00
2014-11-02 01:55:45 +00:00
* Setters on PluckSynth and PulseOscillator
* new PWMOscillator
* OmniOscillator which combines PWMOscillator, Oscillator, and PulseOscillator into one
2014-11-30 03:03:28 +00:00
* NoiseSynth
2014-09-25 17:44:55 +00:00
2014-10-02 22:56:13 +00:00
2015-08-17 00:33:18 +00:00
### r2
2014-09-12 05:19:45 +00:00
2014-09-20 23:24:56 +00:00
* PluckSynth - Karplus-Strong Plucked String modeling synth
2014-09-24 01:56:34 +00:00
* Freeverb
* John Chowning Reverb (JCReverb)
* LowpassCombFilter and FeedbackCombFilter
* Sampler with pitch control
2014-09-20 23:24:56 +00:00
* Clock tick callback is out of the audio thread using setTimeout
2014-09-12 05:19:45 +00:00
* Optimized Tone.Modulo
2014-09-14 19:36:31 +00:00
* Tests run using OfflineRenderingContext
* Fixed Transport bug where timeouts/intervals and timelines were on a different tick counter
2014-09-20 23:24:56 +00:00
* AmplitudeEnvelope + triggerAttackDecay on Envelope
2014-09-24 01:56:34 +00:00
* Instruments inherit from Tone.Instrument base-class
* midi< -- > note conversions
2014-09-20 23:24:56 +00:00
2014-09-12 05:19:45 +00:00
2017-08-27 21:53:42 +00:00
### r1 - First!