2019-08-26 22:40:43 -07:00
### 13.8.24
2019-01-31 12:32:16 -05:00
* Moving to common.js-style code
2019-02-15 13:02:38 -05:00
**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.
2019-01-31 12:32:16 -05:00
### 13.4.9
2018-04-12 17:14:26 -04:00
* Updating semantic versioning to be more in line with other [semvers ](https://semver.org/ ). Now version is 13.x.x
2018-08-29 23:19:39 -04:00
* logging full version
2018-04-25 11:09:52 -04:00
* Added Object notation for Tone.TimeBase and classes that extend it.
- i.e. Tone.Time({'4n' : 1, '8t' : 2})
- Replacement for deprecated expression strings.
2018-05-17 11:55:03 -04:00
* Tone.Meter uses RMS instead of peak (thanks [@Idicious ](https://github.com/Idicious ))
* Tone.Sampler supports polyphonic syntax (thanks [@zfan40 ](https://github.com/zfan40 ))
2018-05-19 11:56:47 -04:00
* Building files with [webpack ](https://webpack.js.org/ )
2018-06-05 22:43:01 -04:00
* Follower/Gate uses a single "smoothing" value instead of separate attacks and releases
2018-08-29 23:19:39 -04:00
* Changing references to `window` allowing it to not throw error in node context
* Testing examples
2019-01-08 11:34:14 -05:00
* Tone.Channel combines Tone.PanVol with Tone.Solo.
* Removing require.html example.
* adding `partialCount` and `baseType` to Oscillator classes, helps with getting/setting complex types.
2018-04-25 11:09:52 -04:00
2018-04-12 17:14:26 -04:00
2017-11-29 17:11:25 -05:00
### r12
* Consolidating all shims into [shim folder ](https://github.com/Tonejs/Tone.js/tree/dev/Tone/shim )
* Using ConstantSourceNode in Signal when available
* switching to eslint from jshint
2018-01-03 12:42:22 -05:00
* Running [CI tests ](https://travis-ci.org/Tonejs/Tone.js/ ) on Firefox, Chrome (latest and canary) and Safari (latest and version 9).
2018-04-06 17:20:49 -07:00
* [Tone.Reverb ](https://tonejs.github.io/docs/Reverb ) is a convolution-based stereo reverb. [Example ](https://tonejs.github.io/examples/#reverb ).
2018-02-05 16:54:15 -05:00
* Optimizing basic Oscillator types and many Signal use-case
2018-03-05 11:32:18 -05:00
* Optimizing basic connection use-case of Tone.Signal where one signal is controlling another signal
2018-02-05 16:54:15 -05:00
* Testing rendered output against an existing audio file for continuity and consistency
* Optimizing triggerAttack/Release by starting/stopping oscillators when not playing
2018-03-05 11:32:18 -05:00
* [TickSource ](https://tonejs.github.io/docs/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
2018-03-05 22:29:08 -05:00
* Removing `retrigger` option with Tone.Player. Tone.BufferSource should be used if retriggering is desired.
2017-11-29 17:11:25 -05:00
2017-12-16 14:31:37 -05:00
**BREAKING CHANGES:**
* Tone.TimeBase and all classes that extend it not longer support string expressions.
RATIONALE :
* Since all classes implement `valueOf` , expressions can be composed in JS instead of as strings
2018-03-05 11:32:18 -05:00
* e.g. `Time('4n') * 2 + Time('3t')` instead of `Time('4n * 2 + 3t')`
2017-12-16 14:31:37 -05:00
* this change greatly simplifies the code and is more performant
2017-05-13 22:17:10 -04: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 15:10:47 -04: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 11:20:10 -04:00
* [Tone.AudioNode ](https://tonejs.github.io/docs/AudioNode ) is base class for all classes which generate or process audio
2017-08-28 11:09:05 -04: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 17:53:42 -04:00
* [Mixer ](https://tonejs.github.io/examples/#mixer ) and [sampler ](https://tonejs.github.io/examples/#sampler ) examples
2017-08-28 15:10:47 -04: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 11:20:10 -04: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 15:19:27 -04:00
* [Tone.BufferSource ](https://tonejs.github.io/docs/BufferSource ) fadeIn/Out can be either "linear" or "exponential" curve
2017-05-13 22:17:10 -04:00
2017-03-12 21:49:49 -04:00
### r10
* Tone.Context wraps AudioContext
* Tone.OfflineContext wraps OfflineAudioContext
* Tone.Offline: method for rendering audio offline
2017-03-26 12:33:34 -04:00
* Rewriting tests with Tone.Offline
2017-03-12 21:51:19 -04: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 12:33:34 -04:00
* [Offline example ](https://tonejs.github.io/examples/#offline )
2017-03-12 21:49:49 -04:00
2016-12-18 20:33:12 -05:00
### r9
2017-08-27 17:53:42 -04:00
* Tone.Clock performance and lookAhead updates.
2016-12-18 20:33:12 -05:00
* Tone.Transport.lookAhead = seconds|'playback'|'interactive'|'balanced'
* Convolver.load and Player.load returns Promise
2017-01-08 17:29:11 -05:00
* Tone.ExternalInput -> Tone.UserMedia, simplified API, open() returns Promise.
2016-12-18 20:33:12 -05:00
* Tone.Draw for animation-frame synced drawing
2017-01-08 17:29:11 -05:00
* Compressor Parameters are now Tone.Params
* Bug fixes
2016-12-18 20:33:12 -05:00
2016-08-15 07:29:16 -04:00
### r8
2017-08-27 17:53:42 -04:00
* Transport.seconds returns the progress in seconds.
2016-08-15 23:15:16 -04:00
* Buffer.from/toArray, Float32Array < - > Buffer conversions
* Buffer.slice(start, end) slices and returns a subsection of the Buffer
2017-08-27 17:53:42 -04:00
* Source.sync now syncs all subsequent calls to `start` and `stop` to the TransportTime instead of the AudioContext time.
2016-09-18 19:42:57 -04:00
* e.g. source.sync().start(0).stop(0.8); //plays source between 0 and 0.8 of the Transport
2016-10-01 16:26:49 -04:00
* Transport.on("start" / "stop") callbacks are invoked just before the event.
2016-09-18 19:42:57 -04: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 00:09:18 -04:00
* Tone.Buffer.prototype.load returns Promise
2016-09-24 11:02:15 -04:00
* Using Tone.Delay and Tone.Gain everywhere
2016-10-01 16:26:49 -04:00
* Patch for Chrome 53+ issue of not correctly scheduling AudioParams with setValueAtTime
2017-08-27 17:53:42 -04:00
* Panner3D and Tone.Listener wrap native PannerNode and AudioListener to give 3D panning ability.
2016-10-01 16:26:49 -04:00
2016-03-05 00:25:27 -05:00
### r7
2015-08-16 20:33:18 -04:00
2016-01-30 15:58:07 -05: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 00:25:27 -05:00
* Panner.pan is between -1,1 like the StereoPannerNode
2017-08-27 17:53:42 -04: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 00:25:27 -05:00
* Automated test runner using [Travis CI ](https://travis-ci.org/Tonejs/Tone.js/ )
2016-04-18 00:33:21 -04:00
* Simplified NoiseSynth by removing filter and filter envelope.
2016-04-18 02:40:18 -04:00
* Added new timing primitive types: Time, Frequency, TransportTime.
2016-05-14 16:40:00 -04:00
* Switching parameter position of type and size in Tone.Analyser
2016-05-14 19:16:03 -04:00
* Tone.Meter uses Tone.Analyser instead of ScriptProcessorNode.
2016-06-15 00:42:50 -04:00
* Tone.Envelope has 5 new attack/release curves: "sine", "cosine", "bounce", "ripple", "step"
2016-05-23 19:52:56 -04:00
* Renamed Tone.SimpleSynth -> Tone.Synth
2016-06-15 00:42:50 -04:00
* Tone.Buffers combines multiple buffers
* Tone.BufferSource a low-level wrapper, and Tone.MultiPlayer which is good for multisampled instruments.
2017-08-27 17:53:42 -04:00
* Tone.GrainPlayer: granular synthesis buffer player.
2016-07-07 10:40:30 -04:00
* Simplified Sampler
2016-01-30 15:58:07 -05:00
DEPRECATED:
* Removed SimpleFM and SimpleAM
### r6
2015-08-21 15:02:33 -04:00
* Added PitchShift and Vibrato Effect.
2015-12-06 13:14:32 -05:00
* Added Timeline/TimelineState/TimelineSignal which keeps track of all scheduled state changes.
2015-08-21 15:02:33 -04:00
* Clock uses requestAnimationFrame instead of ScriptProcessorNode
* Removed `onended` event from Tone.Source
2017-08-27 17:53:42 -04:00
* Refactored tests into individual files.
2015-10-21 13:16:39 -04:00
* Renamed some Signal methods: `exponentialRampToValueNow` ->`exponentialRampToValue` , `setCurrentValueNow` ->`setRampPoint`
2015-08-31 11:43:44 -04:00
* LFO no longer starts at bottom of cycle. Starts at whatever phase it's set at.
2017-08-27 17:53:42 -04:00
* Transport is an event emitter. triggers events on "start", "stop", "pause", and "loop".
* Oscillator accepts a "partials" array.
2015-10-21 13:16:39 -04: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 17:53:42 -04:00
* Tone.Param wraps the native AudioParam and allows for unit conversion.
2015-11-04 16:02:35 -05:00
* Quantization with Transport.quantize and using "@" in any Time. [Read more ](https://github.com/Tonejs/Tone.js/wiki/Time ).
2017-08-27 17:53:42 -04: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-07 21:32:40 -05:00
* Presets now have [their own repo ](https://github.com/Tonejs/Presets )
2015-10-21 13:16:39 -04:00
DEPRECATED:
* `setTimeout` , `setInterval` , `setTimeline` in favor of new `schedule` , `scheduleOnce` , and `scheduleRepeat` .
2017-08-27 17:53:42 -04: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-16 20:33:18 -04:00
2015-06-13 21:03:48 -04:00
### r5
2015-04-20 15:46:19 -04:00
* reverse buffer for Player and Sampler.
* Tone.Volume for simple volume control in Decibels.
* Panner uses StereoPannerNode when available.
2017-08-27 17:53:42 -04:00
* AutoFilter and Tremolo effects.
2015-04-20 15:46:19 -04: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 17:53:42 -04:00
* Envelope supports "linear" and "exponential" attack curves.
* Renamed Tone.EQ -> Tone.EQ3.
2015-04-20 15:46:19 -04:00
* Tone.DrumSynth makes kick and tom sounds.
* Tone.MidSideCompressor and Tone.MidSideSplit/Tone.MidSideMerge
2015-05-12 23:58:41 -04:00
* Tone.Oscillator - can specify the number of partials in the type: i.e. "sine10", "triangle3", "square4", etc.
2017-08-27 17:53:42 -04:00
* mute/unmute the master output: `Tone.Master.mute = true` .
2015-05-23 18:27:09 -04:00
* 3 new simplified synths: SimpleSynth, SimpleAM and SimpleFM
2017-08-27 17:53:42 -04: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-27 20:54:14 -04:00
* [new docs ](http://tonejs.org/docs )
2015-10-21 13:16:39 -04:00
* [updated examples ](http://tonejs.org/examples )
2015-04-20 15:46:19 -04:00
2015-08-16 20:33:18 -04:00
### r4
2014-12-06 16:49:04 -05:00
2015-02-10 16:35:50 -05:00
* `toFrequency` accepts notes by name (i.e. `"C4"` )
2015-01-05 22:02:48 -05:00
* Envelope no longer accepts exponential scaling, only Tone.ScaledEnvelope
2015-02-10 16:35:50 -05:00
* Buffer progress and load events which tracks the progress of all downloads
2015-01-05 22:02:48 -05:00
* Buffer only accepts a single url
2015-02-21 14:06:10 -05:00
* Sampler accepts multiple samples as an object.
2015-02-10 16:35:50 -05:00
* `setPitch` in sampler -> `setNote`
* Deprecated MultiSampler - use Sampler with PolySynth instead
2015-04-20 15:46:19 -04:00
* Added [cdn ](http://cdn.tonejs.org/latest/Tone.min.js ) - please don't use for production code
2015-02-02 12:48:04 -05:00
* Renamed DryWet to CrossFade
2015-02-10 16:35:50 -05:00
* Functions return `this` to allow for chaining. i.e. `player.toMaster().start(2)` .
2015-02-21 14:06:10 -05: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 17:53:42 -04: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 14:08:22 -05:00
* set/get methods for all components
2015-02-21 14:06:10 -05:00
* syncSignal and unsyncSignal moved from Signal to Transport
2015-02-23 14:08:22 -05: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-23 22:15:22 -05:00
* Deprecated Tone.Divide and Tone.Inverse. They were more complicated than they were useful.
2015-02-21 14:06:10 -05:00
2015-02-23 14:08:22 -05:00
BREAKING CHANGES:
2015-02-21 14:06:10 -05:00
2017-08-27 17:53:42 -04: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 14:06:10 -05: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 16:49:04 -05:00
2015-08-16 20:33:18 -04:00
### r3
2014-09-25 13:44:55 -04:00
2014-11-01 21:55:45 -04:00
Core Change:
2015-01-04 21:46:56 -05:00
2014-09-25 13:44:55 -04:00
* Swing parameter on Transport
2014-10-02 13:40:35 -04:00
* Player loop positions stay in tempo-relative terms even with tempo changes
2014-11-01 21:55:45 -04:00
* Envelope ASDR stay in tempo-relative terms even with tempo changes
2014-11-30 13:21:12 -05:00
* Modified build script to accommodate using requirejs with build and minified version
2014-12-03 22:48:20 -05:00
2014-11-01 21:55:45 -04:00
Signal Processing:
2014-12-03 22:48:20 -05:00
2014-11-01 21:55:45 -04:00
* Tone.Expr: signal processing expression parser for Tone.Signal math
* All signal binary operators accept two signals as inputs
2014-10-03 13:08:37 -04:00
* Deprecated Tone.Threshold - new class Tone.GreaterThanZero
2014-10-19 22:08:15 -04:00
* NOT, OR, AND, and IfThenElse signal logic operators
2014-11-29 21:36:43 -05: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 13:21:12 -05:00
* WaveShaper function wraps the WaveShaperNode
2014-12-03 22:48:20 -05:00
2014-11-01 21:55:45 -04:00
Effects:
2014-12-03 22:48:20 -05:00
2014-11-01 21:55:45 -04:00
* Distortion and Chebyshev distortion effects
* Compressor and MultibandCompressor
2014-11-29 21:36:43 -05:00
* MidSide effect type and StereoWidener
2014-11-01 21:55:45 -04:00
* Convolver effect and example
2014-12-03 22:48:20 -05:00
2014-11-01 21:55:45 -04:00
Synths:
2014-12-03 22:48:20 -05:00
2014-11-01 21:55:45 -04:00
* Setters on PluckSynth and PulseOscillator
* new PWMOscillator
* OmniOscillator which combines PWMOscillator, Oscillator, and PulseOscillator into one
2014-11-29 22:03:28 -05:00
* NoiseSynth
2014-09-25 13:44:55 -04:00
2014-10-02 18:56:13 -04:00
2015-08-16 20:33:18 -04:00
### r2
2014-09-12 01:19:45 -04:00
2014-09-20 19:24:56 -04:00
* PluckSynth - Karplus-Strong Plucked String modeling synth
2014-09-23 21:56:34 -04:00
* Freeverb
* John Chowning Reverb (JCReverb)
* LowpassCombFilter and FeedbackCombFilter
* Sampler with pitch control
2014-09-20 19:24:56 -04:00
* Clock tick callback is out of the audio thread using setTimeout
2014-09-12 01:19:45 -04:00
* Optimized Tone.Modulo
2014-09-14 15:36:31 -04:00
* Tests run using OfflineRenderingContext
* Fixed Transport bug where timeouts/intervals and timelines were on a different tick counter
2014-09-20 19:24:56 -04:00
* AmplitudeEnvelope + triggerAttackDecay on Envelope
2014-09-23 21:56:34 -04:00
* Instruments inherit from Tone.Instrument base-class
* midi< -- > note conversions
2014-09-20 19:24:56 -04:00
2014-09-12 01:19:45 -04:00
2017-08-27 17:53:42 -04:00
### r1 - First!