Tone.js/CHANGELOG.md

195 lines
10 KiB
Markdown
Raw Normal View History

2017-03-13 01:49:49 +00:00
### r10
* Tone.Context wraps AudioContext
* Tone.OfflineContext wraps OfflineAudioContext
* Tone.Offline: method for rendering audio offline
* Rewritting 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-13 01:49:49 +00:00
2016-12-19 01:33:12 +00:00
### r9
* Tone.Clock performance and lookAhead updates.
* 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
* 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
2016-08-16 03:35:44 +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
2016-10-02 01:47:23 +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
* 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.
2016-04-18 04:33:21 +00:00
* 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.
* 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
2015-09-30 18:01:27 +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.
2015-08-31 20:42:43 +00:00
* Transport is an event emitter. triggers events on "start", "stop", "pause", and "loop".
2015-10-21 17:16:39 +00:00
* Oscillator accepts a "partials" array.
* 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.
2015-11-04 21:02:35 +00:00
* Tone.Param wraps the native AudioParam and allows for unit conversion.
* Quantization with Transport.quantize and using "@" in any Time. [Read more](https://github.com/Tonejs/Tone.js/wiki/Time).
* 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.
2015-11-11 04:47:29 +00:00
* Player's playbackRate is now a signal and Noise includes a playbackRate signal.
2015-12-07 05:50:39 +00:00
* 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`.
* Tone.Signal no longer takes an AudioParam in the first argument. Use Tone.Param instead.
2015-12-06 18:14:32 +00:00
* 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.
2015-05-23 22:27:09 +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`.
* Envelope supports "linear" and "exponential" attack curves.
* Renamed Tone.EQ -> Tone.EQ3.
* 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.
2015-05-23 22:27:09 +00:00
* mute/unmute the master output: `Tone.Master.mute = true`.
* 3 new simplified synths: SimpleSynth, SimpleAM and SimpleFM
2015-07-04 20:45:05 +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`.
2015-02-10 21:35:50 +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
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.
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
2014-09-24 01:56:34 +00:00
### r1 - First!