Tone.js/CHANGELOG.md

273 lines
14 KiB
Markdown
Raw Normal View History

2019-08-21 05:02:13 +00:00
### 14.2.0
2019-07-25 14:43:58 +00:00
* **Converted to typescript!!! (WIP)**
* 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
2019-08-21 05:02:13 +00:00
* FrequencyShifter - thanks @Foaly
2019-07-25 14:43:58 +00:00
### 13.8.19
2019-01-31 17:32:16 +00:00
* Moving to common.js-style code
2019-02-15 18:02:38 +00: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 17:32:16 +00:00
### 13.4.9
2018-04-12 21:14:26 +00:00
* Updating semantic versioning to be more in line with other [semvers](https://semver.org/). Now version is 13.x.x
2018-08-30 03:19:39 +00:00
* logging full version
2018-04-25 15:09:52 +00: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 15:55:03 +00: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 15:56:47 +00:00
* Building files with [webpack](https://webpack.js.org/)
* Follower/Gate uses a single "smoothing" value instead of separate attacks and releases
2018-08-30 03:19:39 +00:00
* Changing references to `window` allowing it to not throw error in node context
* Testing examples
2019-01-08 16:34:14 +00: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 15:09:52 +00:00
2018-04-12 21:14:26 +00:00
2017-11-29 22:11:25 +00: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 17:42:22 +00: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-07 00:20:49 +00: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 21:54:15 +00:00
* Optimizing basic Oscillator types and many Signal use-case
2018-03-05 16:32:18 +00:00
* Optimizing basic connection use-case of Tone.Signal where one signal is controlling another signal
2018-02-05 21:54:15 +00: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 16:32:18 +00: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-06 03:29:08 +00:00
* Removing `retrigger` option with Tone.Player. Tone.BufferSource should be used if retriggering is desired.
2017-11-29 22:11:25 +00:00
2017-12-16 19:31:37 +00: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 16:32:18 +00:00
* e.g. `Time('4n') * 2 + Time('3t')` instead of `Time('4n * 2 + 3t')`
2017-12-16 19:31:37 +00:00
* this change greatly simplifies the code and is more performant
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"
* 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
* 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.
* 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!