tone 14.8.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +313 -0
- package/LICENSE.md +21 -0
- package/README.md +255 -0
- package/Tone/classes.ts +7 -0
- package/Tone/component/analysis/Analyser.test.ts +78 -0
- package/Tone/component/analysis/Analyser.ts +168 -0
- package/Tone/component/analysis/DCMeter.test.ts +34 -0
- package/Tone/component/analysis/DCMeter.ts +38 -0
- package/Tone/component/analysis/FFT.test.ts +83 -0
- package/Tone/component/analysis/FFT.ts +92 -0
- package/Tone/component/analysis/Follower.test.ts +111 -0
- package/Tone/component/analysis/Follower.ts +85 -0
- package/Tone/component/analysis/Meter.test.ts +91 -0
- package/Tone/component/analysis/Meter.ts +123 -0
- package/Tone/component/analysis/MeterBase.ts +45 -0
- package/Tone/component/analysis/Waveform.test.ts +49 -0
- package/Tone/component/analysis/Waveform.ts +57 -0
- package/Tone/component/channel/Channel.test.ts +77 -0
- package/Tone/component/channel/Channel.ts +178 -0
- package/Tone/component/channel/CrossFade.test.ts +57 -0
- package/Tone/component/channel/CrossFade.ts +143 -0
- package/Tone/component/channel/Merge.test.ts +59 -0
- package/Tone/component/channel/Merge.ts +62 -0
- package/Tone/component/channel/MidSideMerge.test.ts +28 -0
- package/Tone/component/channel/MidSideMerge.ts +105 -0
- package/Tone/component/channel/MidSideSplit.test.ts +79 -0
- package/Tone/component/channel/MidSideSplit.ts +90 -0
- package/Tone/component/channel/Mono.test.ts +43 -0
- package/Tone/component/channel/Mono.ts +55 -0
- package/Tone/component/channel/MultibandSplit.test.ts +66 -0
- package/Tone/component/channel/MultibandSplit.ts +166 -0
- package/Tone/component/channel/PanVol.test.ts +58 -0
- package/Tone/component/channel/PanVol.ts +110 -0
- package/Tone/component/channel/Panner.test.ts +86 -0
- package/Tone/component/channel/Panner.ts +89 -0
- package/Tone/component/channel/Panner3D.test.ts +77 -0
- package/Tone/component/channel/Panner3D.ts +234 -0
- package/Tone/component/channel/Recorder.test.ts +119 -0
- package/Tone/component/channel/Recorder.ts +162 -0
- package/Tone/component/channel/Solo.test.ts +138 -0
- package/Tone/component/channel/Solo.ts +148 -0
- package/Tone/component/channel/Split.test.ts +62 -0
- package/Tone/component/channel/Split.ts +51 -0
- package/Tone/component/channel/Volume.test.ts +129 -0
- package/Tone/component/channel/Volume.ts +109 -0
- package/Tone/component/dynamics/Compressor.test.ts +85 -0
- package/Tone/component/dynamics/Compressor.ts +163 -0
- package/Tone/component/dynamics/Gate.test.ts +72 -0
- package/Tone/component/dynamics/Gate.ts +110 -0
- package/Tone/component/dynamics/Limiter.test.ts +43 -0
- package/Tone/component/dynamics/Limiter.ts +78 -0
- package/Tone/component/dynamics/MidSideCompressor.test.ts +59 -0
- package/Tone/component/dynamics/MidSideCompressor.ts +87 -0
- package/Tone/component/dynamics/MultibandCompressor.test.ts +54 -0
- package/Tone/component/dynamics/MultibandCompressor.ts +130 -0
- package/Tone/component/envelope/AmplitudeEnvelope.test.ts +92 -0
- package/Tone/component/envelope/AmplitudeEnvelope.ts +65 -0
- package/Tone/component/envelope/Envelope.test.ts +834 -0
- package/Tone/component/envelope/Envelope.ts +623 -0
- package/Tone/component/envelope/FrequencyEnvelope.test.ts +92 -0
- package/Tone/component/envelope/FrequencyEnvelope.ts +134 -0
- package/Tone/component/filter/BiquadFilter.test.ts +94 -0
- package/Tone/component/filter/BiquadFilter.ts +158 -0
- package/Tone/component/filter/Convolver.test.ts +106 -0
- package/Tone/component/filter/Convolver.ts +134 -0
- package/Tone/component/filter/EQ3.test.ts +60 -0
- package/Tone/component/filter/EQ3.ts +163 -0
- package/Tone/component/filter/FeedbackCombFilter.test.ts +80 -0
- package/Tone/component/filter/FeedbackCombFilter.ts +105 -0
- package/Tone/component/filter/FeedbackCombFilter.worklet.ts +39 -0
- package/Tone/component/filter/Filter.test.ts +114 -0
- package/Tone/component/filter/Filter.ts +202 -0
- package/Tone/component/filter/LowpassCombFilter.test.ts +75 -0
- package/Tone/component/filter/LowpassCombFilter.ts +100 -0
- package/Tone/component/filter/OnePoleFilter.test.ts +90 -0
- package/Tone/component/filter/OnePoleFilter.ts +146 -0
- package/Tone/component/filter/PhaseShiftAllpass.test.ts +71 -0
- package/Tone/component/filter/PhaseShiftAllpass.ts +81 -0
- package/Tone/component/index.ts +39 -0
- package/Tone/core/Global.ts +73 -0
- package/Tone/core/Tone.ts +107 -0
- package/Tone/core/clock/Clock.test.ts +663 -0
- package/Tone/core/clock/Clock.ts +317 -0
- package/Tone/core/clock/TickParam.test.ts +15 -0
- package/Tone/core/clock/TickParam.ts +271 -0
- package/Tone/core/clock/TickSignal.test.ts +455 -0
- package/Tone/core/clock/TickSignal.ts +94 -0
- package/Tone/core/clock/TickSource.test.ts +655 -0
- package/Tone/core/clock/TickSource.ts +338 -0
- package/Tone/core/clock/Ticker.test.ts +86 -0
- package/Tone/core/clock/Ticker.ts +149 -0
- package/Tone/core/clock/Transport.test.ts +972 -0
- package/Tone/core/clock/Transport.ts +731 -0
- package/Tone/core/clock/TransportEvent.test.ts +45 -0
- package/Tone/core/clock/TransportEvent.ts +105 -0
- package/Tone/core/clock/TransportRepeatEvent.test.ts +43 -0
- package/Tone/core/clock/TransportRepeatEvent.ts +150 -0
- package/Tone/core/context/AbstractParam.ts +260 -0
- package/Tone/core/context/AudioContext.ts +60 -0
- package/Tone/core/context/BaseContext.ts +162 -0
- package/Tone/core/context/Context.test.ts +358 -0
- package/Tone/core/context/Context.ts +628 -0
- package/Tone/core/context/ContextInitialization.ts +42 -0
- package/Tone/core/context/Delay.test.ts +105 -0
- package/Tone/core/context/Delay.ts +103 -0
- package/Tone/core/context/Destination.test.ts +76 -0
- package/Tone/core/context/Destination.ts +128 -0
- package/Tone/core/context/DummyContext.test.ts +47 -0
- package/Tone/core/context/DummyContext.ts +201 -0
- package/Tone/core/context/Gain.test.ts +75 -0
- package/Tone/core/context/Gain.ts +90 -0
- package/Tone/core/context/Listener.test.ts +22 -0
- package/Tone/core/context/Listener.ts +117 -0
- package/Tone/core/context/Offline.test.ts +79 -0
- package/Tone/core/context/Offline.ts +65 -0
- package/Tone/core/context/OfflineContext.test.ts +64 -0
- package/Tone/core/context/OfflineContext.ts +118 -0
- package/Tone/core/context/Param.test.ts +607 -0
- package/Tone/core/context/Param.ts +541 -0
- package/Tone/core/context/ToneAudioBuffer.test.ts +360 -0
- package/Tone/core/context/ToneAudioBuffer.ts +412 -0
- package/Tone/core/context/ToneAudioBuffers.test.ts +159 -0
- package/Tone/core/context/ToneAudioBuffers.ts +167 -0
- package/Tone/core/context/ToneAudioNode.test.ts +345 -0
- package/Tone/core/context/ToneAudioNode.ts +396 -0
- package/Tone/core/context/ToneWithContext.ts +205 -0
- package/Tone/core/index.ts +38 -0
- package/Tone/core/type/Conversions.test.ts +34 -0
- package/Tone/core/type/Conversions.ts +78 -0
- package/Tone/core/type/Frequency.test.ts +220 -0
- package/Tone/core/type/Frequency.ts +249 -0
- package/Tone/core/type/Midi.test.ts +137 -0
- package/Tone/core/type/Midi.ts +82 -0
- package/Tone/core/type/NoteUnits.ts +36 -0
- package/Tone/core/type/Ticks.test.ts +190 -0
- package/Tone/core/type/Ticks.ts +69 -0
- package/Tone/core/type/Time.test.ts +181 -0
- package/Tone/core/type/Time.ts +156 -0
- package/Tone/core/type/TimeBase.ts +324 -0
- package/Tone/core/type/TransportTime.test.ts +184 -0
- package/Tone/core/type/TransportTime.ts +34 -0
- package/Tone/core/type/Units.ts +204 -0
- package/Tone/core/util/AdvancedTypeCheck.ts +40 -0
- package/Tone/core/util/Debug.test.ts +74 -0
- package/Tone/core/util/Debug.ts +63 -0
- package/Tone/core/util/Decorator.ts +51 -0
- package/Tone/core/util/Defaults.ts +123 -0
- package/Tone/core/util/Draw.test.ts +72 -0
- package/Tone/core/util/Draw.ts +125 -0
- package/Tone/core/util/Emitter.test.ts +109 -0
- package/Tone/core/util/Emitter.ts +125 -0
- package/Tone/core/util/Interface.ts +45 -0
- package/Tone/core/util/IntervalTimeline.test.ts +465 -0
- package/Tone/core/util/IntervalTimeline.ts +569 -0
- package/Tone/core/util/Math.ts +40 -0
- package/Tone/core/util/StateTimeline.test.ts +103 -0
- package/Tone/core/util/StateTimeline.ts +96 -0
- package/Tone/core/util/Timeline.test.ts +606 -0
- package/Tone/core/util/Timeline.ts +399 -0
- package/Tone/core/util/TimelineValue.test.ts +29 -0
- package/Tone/core/util/TimelineValue.ts +56 -0
- package/Tone/core/util/TypeCheck.ts +65 -0
- package/Tone/core/util/global.d.ts +7 -0
- package/Tone/core/worklet/DelayLine.worklet.ts +49 -0
- package/Tone/core/worklet/SingleIOProcessor.worklet.ts +73 -0
- package/Tone/core/worklet/ToneAudioWorklet.ts +76 -0
- package/Tone/core/worklet/ToneAudioWorkletProcessor.worklet.ts +35 -0
- package/Tone/core/worklet/WorkletGlobalScope.ts +26 -0
- package/Tone/effect/AutoFilter.test.ts +113 -0
- package/Tone/effect/AutoFilter.ts +102 -0
- package/Tone/effect/AutoPanner.test.ts +90 -0
- package/Tone/effect/AutoPanner.ts +63 -0
- package/Tone/effect/AutoWah.test.ts +61 -0
- package/Tone/effect/AutoWah.ts +208 -0
- package/Tone/effect/BitCrusher.test.ts +42 -0
- package/Tone/effect/BitCrusher.ts +129 -0
- package/Tone/effect/BitCrusher.worklet.ts +27 -0
- package/Tone/effect/Chebyshev.test.ts +49 -0
- package/Tone/effect/Chebyshev.ts +123 -0
- package/Tone/effect/Chorus.test.ts +87 -0
- package/Tone/effect/Chorus.ts +225 -0
- package/Tone/effect/Distortion.test.ts +41 -0
- package/Tone/effect/Distortion.ts +98 -0
- package/Tone/effect/Effect.ts +88 -0
- package/Tone/effect/FeedbackDelay.test.ts +75 -0
- package/Tone/effect/FeedbackDelay.ts +73 -0
- package/Tone/effect/FeedbackEffect.ts +68 -0
- package/Tone/effect/Freeverb.test.ts +45 -0
- package/Tone/effect/Freeverb.ts +137 -0
- package/Tone/effect/FrequencyShifter.test.ts +55 -0
- package/Tone/effect/FrequencyShifter.ts +155 -0
- package/Tone/effect/JCReverb.test.ts +41 -0
- package/Tone/effect/JCReverb.ts +130 -0
- package/Tone/effect/LFOEffect.ts +115 -0
- package/Tone/effect/MidSideEffect.ts +93 -0
- package/Tone/effect/Phaser.test.ts +44 -0
- package/Tone/effect/Phaser.ts +187 -0
- package/Tone/effect/PingPongDelay.test.ts +41 -0
- package/Tone/effect/PingPongDelay.ts +105 -0
- package/Tone/effect/PitchShift.test.ts +66 -0
- package/Tone/effect/PitchShift.ts +218 -0
- package/Tone/effect/Reverb.test.ts +75 -0
- package/Tone/effect/Reverb.ts +145 -0
- package/Tone/effect/StereoEffect.ts +99 -0
- package/Tone/effect/StereoFeedbackEffect.ts +91 -0
- package/Tone/effect/StereoWidener.test.ts +41 -0
- package/Tone/effect/StereoWidener.ts +112 -0
- package/Tone/effect/StereoXFeedbackEffect.ts +37 -0
- package/Tone/effect/Tremolo.test.ts +88 -0
- package/Tone/effect/Tremolo.ts +191 -0
- package/Tone/effect/Vibrato.test.ts +52 -0
- package/Tone/effect/Vibrato.ts +104 -0
- package/Tone/effect/index.ts +18 -0
- package/Tone/event/Loop.test.ts +334 -0
- package/Tone/event/Loop.ts +210 -0
- package/Tone/event/Part.test.ts +848 -0
- package/Tone/event/Part.ts +473 -0
- package/Tone/event/Pattern.test.ts +137 -0
- package/Tone/event/Pattern.ts +121 -0
- package/Tone/event/PatternGenerator.test.ts +95 -0
- package/Tone/event/PatternGenerator.ts +176 -0
- package/Tone/event/Sequence.test.ts +453 -0
- package/Tone/event/Sequence.ts +300 -0
- package/Tone/event/ToneEvent.test.ts +485 -0
- package/Tone/event/ToneEvent.ts +392 -0
- package/Tone/event/index.ts +5 -0
- package/Tone/fromContext.test.ts +29 -0
- package/Tone/fromContext.ts +77 -0
- package/Tone/index.test.ts +54 -0
- package/Tone/index.ts +116 -0
- package/Tone/instrument/AMSynth.test.ts +79 -0
- package/Tone/instrument/AMSynth.ts +51 -0
- package/Tone/instrument/DuoSynth.test.ts +95 -0
- package/Tone/instrument/DuoSynth.ts +216 -0
- package/Tone/instrument/FMSynth.test.ts +72 -0
- package/Tone/instrument/FMSynth.ts +65 -0
- package/Tone/instrument/Instrument.ts +180 -0
- package/Tone/instrument/MembraneSynth.test.ts +74 -0
- package/Tone/instrument/MembraneSynth.ts +96 -0
- package/Tone/instrument/MetalSynth.test.ts +66 -0
- package/Tone/instrument/MetalSynth.ts +272 -0
- package/Tone/instrument/ModulationSynth.ts +217 -0
- package/Tone/instrument/MonoSynth.test.ts +88 -0
- package/Tone/instrument/MonoSynth.ts +177 -0
- package/Tone/instrument/Monophonic.ts +135 -0
- package/Tone/instrument/NoiseSynth.test.ts +82 -0
- package/Tone/instrument/NoiseSynth.ts +127 -0
- package/Tone/instrument/PluckSynth.test.ts +62 -0
- package/Tone/instrument/PluckSynth.ts +127 -0
- package/Tone/instrument/PolySynth.test.ts +298 -0
- package/Tone/instrument/PolySynth.ts +393 -0
- package/Tone/instrument/Sampler.test.ts +275 -0
- package/Tone/instrument/Sampler.ts +329 -0
- package/Tone/instrument/Synth.test.ts +132 -0
- package/Tone/instrument/Synth.ts +141 -0
- package/Tone/instrument/index.ts +11 -0
- package/Tone/signal/Abs.test.ts +42 -0
- package/Tone/signal/Abs.ts +53 -0
- package/Tone/signal/Add.test.ts +60 -0
- package/Tone/signal/Add.ts +63 -0
- package/Tone/signal/AudioToGain.test.ts +53 -0
- package/Tone/signal/AudioToGain.ts +40 -0
- package/Tone/signal/GainToAudio.test.ts +41 -0
- package/Tone/signal/GainToAudio.ts +40 -0
- package/Tone/signal/GreaterThan.test.ts +81 -0
- package/Tone/signal/GreaterThan.ts +88 -0
- package/Tone/signal/GreaterThanZero.test.ts +49 -0
- package/Tone/signal/GreaterThanZero.ts +67 -0
- package/Tone/signal/Multiply.test.ts +46 -0
- package/Tone/signal/Multiply.ts +85 -0
- package/Tone/signal/Negate.test.ts +30 -0
- package/Tone/signal/Negate.ts +41 -0
- package/Tone/signal/Pow.test.ts +40 -0
- package/Tone/signal/Pow.ts +84 -0
- package/Tone/signal/Scale.test.ts +58 -0
- package/Tone/signal/Scale.ts +119 -0
- package/Tone/signal/ScaleExp.test.ts +49 -0
- package/Tone/signal/ScaleExp.ts +69 -0
- package/Tone/signal/Signal.test.ts +519 -0
- package/Tone/signal/Signal.ts +226 -0
- package/Tone/signal/SignalOperator.ts +21 -0
- package/Tone/signal/Subtract.test.ts +60 -0
- package/Tone/signal/Subtract.ts +74 -0
- package/Tone/signal/SyncedSignal.test.ts +245 -0
- package/Tone/signal/SyncedSignal.ts +172 -0
- package/Tone/signal/ToneConstantSource.test.ts +202 -0
- package/Tone/signal/ToneConstantSource.ts +90 -0
- package/Tone/signal/WaveShaper.test.ts +95 -0
- package/Tone/signal/WaveShaper.ts +136 -0
- package/Tone/signal/Zero.test.ts +25 -0
- package/Tone/signal/Zero.ts +45 -0
- package/Tone/signal/index.ts +16 -0
- package/Tone/source/Noise.test.ts +121 -0
- package/Tone/source/Noise.ts +287 -0
- package/Tone/source/OneShotSource.ts +260 -0
- package/Tone/source/Source.test.ts +408 -0
- package/Tone/source/Source.ts +339 -0
- package/Tone/source/UserMedia.test.ts +177 -0
- package/Tone/source/UserMedia.ts +260 -0
- package/Tone/source/buffer/GrainPlayer.test.ts +235 -0
- package/Tone/source/buffer/GrainPlayer.ts +322 -0
- package/Tone/source/buffer/Player.test.ts +651 -0
- package/Tone/source/buffer/Player.ts +440 -0
- package/Tone/source/buffer/Players.test.ts +288 -0
- package/Tone/source/buffer/Players.ts +235 -0
- package/Tone/source/buffer/ToneBufferSource.test.ts +578 -0
- package/Tone/source/buffer/ToneBufferSource.ts +253 -0
- package/Tone/source/index.ts +15 -0
- package/Tone/source/oscillator/AMOscillator.test.ts +69 -0
- package/Tone/source/oscillator/AMOscillator.ts +222 -0
- package/Tone/source/oscillator/FMOscillator.test.ts +85 -0
- package/Tone/source/oscillator/FMOscillator.ts +236 -0
- package/Tone/source/oscillator/FatOscillator.test.ts +91 -0
- package/Tone/source/oscillator/FatOscillator.ts +255 -0
- package/Tone/source/oscillator/LFO.test.ts +234 -0
- package/Tone/source/oscillator/LFO.ts +332 -0
- package/Tone/source/oscillator/OmniOscillator.test.ts +303 -0
- package/Tone/source/oscillator/OmniOscillator.ts +428 -0
- package/Tone/source/oscillator/Oscillator.test.ts +278 -0
- package/Tone/source/oscillator/Oscillator.ts +448 -0
- package/Tone/source/oscillator/OscillatorInterface.ts +462 -0
- package/Tone/source/oscillator/PWMOscillator.test.ts +49 -0
- package/Tone/source/oscillator/PWMOscillator.ts +190 -0
- package/Tone/source/oscillator/PulseOscillator.test.ts +126 -0
- package/Tone/source/oscillator/PulseOscillator.ts +225 -0
- package/Tone/source/oscillator/ToneOscillatorNode.test.ts +241 -0
- package/Tone/source/oscillator/ToneOscillatorNode.ts +131 -0
- package/Tone/version.ts +1 -0
- package/build/Tone.js +22 -0
- package/build/Tone.js.map +1 -0
- package/build/esm/classes.d.ts +7 -0
- package/build/esm/classes.js +8 -0
- package/build/esm/classes.js.map +1 -0
- package/build/esm/component/analysis/Analyser.d.ts +77 -0
- package/build/esm/component/analysis/Analyser.js +121 -0
- package/build/esm/component/analysis/Analyser.js.map +1 -0
- package/build/esm/component/analysis/DCMeter.d.ts +23 -0
- package/build/esm/component/analysis/DCMeter.js +31 -0
- package/build/esm/component/analysis/DCMeter.js.map +1 -0
- package/build/esm/component/analysis/FFT.d.ts +50 -0
- package/build/esm/component/analysis/FFT.js +65 -0
- package/build/esm/component/analysis/FFT.js.map +1 -0
- package/build/esm/component/analysis/Follower.d.ts +44 -0
- package/build/esm/component/analysis/Follower.js +51 -0
- package/build/esm/component/analysis/Follower.js.map +1 -0
- package/build/esm/component/analysis/Meter.d.ts +62 -0
- package/build/esm/component/analysis/Meter.js +90 -0
- package/build/esm/component/analysis/Meter.js.map +1 -0
- package/build/esm/component/analysis/MeterBase.d.ts +23 -0
- package/build/esm/component/analysis/MeterBase.js +23 -0
- package/build/esm/component/analysis/MeterBase.js.map +1 -0
- package/build/esm/component/analysis/Waveform.d.ts +32 -0
- package/build/esm/component/analysis/Waveform.js +38 -0
- package/build/esm/component/analysis/Waveform.js.map +1 -0
- package/build/esm/component/channel/Channel.d.ts +91 -0
- package/build/esm/component/channel/Channel.js +124 -0
- package/build/esm/component/channel/Channel.js.map +1 -0
- package/build/esm/component/channel/CrossFade.d.ts +80 -0
- package/build/esm/component/channel/CrossFade.js +106 -0
- package/build/esm/component/channel/CrossFade.js.map +1 -0
- package/build/esm/component/channel/Merge.d.ts +39 -0
- package/build/esm/component/channel/Merge.js +32 -0
- package/build/esm/component/channel/Merge.js.map +1 -0
- package/build/esm/component/channel/MidSideMerge.d.ts +52 -0
- package/build/esm/component/channel/MidSideMerge.js +53 -0
- package/build/esm/component/channel/MidSideMerge.js.map +1 -0
- package/build/esm/component/channel/MidSideSplit.d.ts +42 -0
- package/build/esm/component/channel/MidSideSplit.js +51 -0
- package/build/esm/component/channel/MidSideSplit.js.map +1 -0
- package/build/esm/component/channel/Mono.d.ts +26 -0
- package/build/esm/component/channel/Mono.js +30 -0
- package/build/esm/component/channel/Mono.js.map +1 -0
- package/build/esm/component/channel/MultibandSplit.d.ts +80 -0
- package/build/esm/component/channel/MultibandSplit.js +121 -0
- package/build/esm/component/channel/MultibandSplit.js.map +1 -0
- package/build/esm/component/channel/PanVol.d.ts +53 -0
- package/build/esm/component/channel/PanVol.js +61 -0
- package/build/esm/component/channel/PanVol.js.map +1 -0
- package/build/esm/component/channel/Panner.d.ts +49 -0
- package/build/esm/component/channel/Panner.js +55 -0
- package/build/esm/component/channel/Panner.js.map +1 -0
- package/build/esm/component/channel/Panner3D.d.ts +98 -0
- package/build/esm/component/channel/Panner3D.js +177 -0
- package/build/esm/component/channel/Panner3D.js.map +1 -0
- package/build/esm/component/channel/Recorder.d.ts +77 -0
- package/build/esm/component/channel/Recorder.js +131 -0
- package/build/esm/component/channel/Recorder.js.map +1 -0
- package/build/esm/component/channel/Solo.d.ts +68 -0
- package/build/esm/component/channel/Solo.js +121 -0
- package/build/esm/component/channel/Solo.js.map +1 -0
- package/build/esm/component/channel/Split.d.ts +29 -0
- package/build/esm/component/channel/Split.js +30 -0
- package/build/esm/component/channel/Split.js.map +1 -0
- package/build/esm/component/channel/Volume.d.ts +60 -0
- package/build/esm/component/channel/Volume.js +66 -0
- package/build/esm/component/channel/Volume.js.map +1 -0
- package/build/esm/component/dynamics/Compressor.d.ts +73 -0
- package/build/esm/component/dynamics/Compressor.js +99 -0
- package/build/esm/component/dynamics/Compressor.js.map +1 -0
- package/build/esm/component/dynamics/Gate.d.ts +53 -0
- package/build/esm/component/dynamics/Gate.js +72 -0
- package/build/esm/component/dynamics/Gate.js.map +1 -0
- package/build/esm/component/dynamics/Limiter.d.ts +39 -0
- package/build/esm/component/dynamics/Limiter.js +51 -0
- package/build/esm/component/dynamics/Limiter.js.map +1 -0
- package/build/esm/component/dynamics/MidSideCompressor.d.ts +36 -0
- package/build/esm/component/dynamics/MidSideCompressor.js +52 -0
- package/build/esm/component/dynamics/MidSideCompressor.js.map +1 -0
- package/build/esm/component/dynamics/MultibandCompressor.d.ts +57 -0
- package/build/esm/component/dynamics/MultibandCompressor.js +79 -0
- package/build/esm/component/dynamics/MultibandCompressor.js.map +1 -0
- package/build/esm/component/envelope/AmplitudeEnvelope.d.ts +46 -0
- package/build/esm/component/envelope/AmplitudeEnvelope.js +49 -0
- package/build/esm/component/envelope/AmplitudeEnvelope.js.map +1 -0
- package/build/esm/component/envelope/Envelope.d.ts +302 -0
- package/build/esm/component/envelope/Envelope.js +470 -0
- package/build/esm/component/envelope/Envelope.js.map +1 -0
- package/build/esm/component/envelope/FrequencyEnvelope.d.ts +71 -0
- package/build/esm/component/envelope/FrequencyEnvelope.js +91 -0
- package/build/esm/component/envelope/FrequencyEnvelope.js.map +1 -0
- package/build/esm/component/filter/BiquadFilter.d.ts +64 -0
- package/build/esm/component/filter/BiquadFilter.js +101 -0
- package/build/esm/component/filter/BiquadFilter.js.map +1 -0
- package/build/esm/component/filter/Convolver.d.ts +59 -0
- package/build/esm/component/filter/Convolver.js +104 -0
- package/build/esm/component/filter/Convolver.js.map +1 -0
- package/build/esm/component/filter/EQ3.d.ts +77 -0
- package/build/esm/component/filter/EQ3.js +81 -0
- package/build/esm/component/filter/EQ3.js.map +1 -0
- package/build/esm/component/filter/FeedbackCombFilter.d.ts +45 -0
- package/build/esm/component/filter/FeedbackCombFilter.js +72 -0
- package/build/esm/component/filter/FeedbackCombFilter.js.map +1 -0
- package/build/esm/component/filter/FeedbackCombFilter.worklet.d.ts +3 -0
- package/build/esm/component/filter/FeedbackCombFilter.worklet.js +37 -0
- package/build/esm/component/filter/FeedbackCombFilter.worklet.js.map +1 -0
- package/build/esm/component/filter/Filter.d.ts +79 -0
- package/build/esm/component/filter/Filter.js +150 -0
- package/build/esm/component/filter/Filter.js.map +1 -0
- package/build/esm/component/filter/LowpassCombFilter.d.ts +50 -0
- package/build/esm/component/filter/LowpassCombFilter.js +53 -0
- package/build/esm/component/filter/LowpassCombFilter.js.map +1 -0
- package/build/esm/component/filter/OnePoleFilter.d.ts +64 -0
- package/build/esm/component/filter/OnePoleFilter.js +104 -0
- package/build/esm/component/filter/OnePoleFilter.js.map +1 -0
- package/build/esm/component/filter/PhaseShiftAllpass.d.ts +40 -0
- package/build/esm/component/filter/PhaseShiftAllpass.js +54 -0
- package/build/esm/component/filter/PhaseShiftAllpass.js.map +1 -0
- package/build/esm/component/index.d.ts +35 -0
- package/build/esm/component/index.js +36 -0
- package/build/esm/component/index.js.map +1 -0
- package/build/esm/core/Global.d.ts +26 -0
- package/build/esm/core/Global.js +69 -0
- package/build/esm/core/Global.js.map +1 -0
- package/build/esm/core/Tone.d.ts +60 -0
- package/build/esm/core/Tone.js +87 -0
- package/build/esm/core/Tone.js.map +1 -0
- package/build/esm/core/clock/Clock.d.ts +156 -0
- package/build/esm/core/clock/Clock.js +251 -0
- package/build/esm/core/clock/Clock.js.map +1 -0
- package/build/esm/core/clock/TickParam.d.ts +97 -0
- package/build/esm/core/clock/TickParam.js +237 -0
- package/build/esm/core/clock/TickParam.js.map +1 -0
- package/build/esm/core/clock/TickSignal.d.ts +43 -0
- package/build/esm/core/clock/TickSignal.js +64 -0
- package/build/esm/core/clock/TickSignal.js.map +1 -0
- package/build/esm/core/clock/TickSource.d.ts +115 -0
- package/build/esm/core/clock/TickSource.js +284 -0
- package/build/esm/core/clock/TickSource.js.map +1 -0
- package/build/esm/core/clock/Ticker.d.ts +59 -0
- package/build/esm/core/clock/Ticker.js +110 -0
- package/build/esm/core/clock/Ticker.js.map +1 -0
- package/build/esm/core/clock/Transport.d.ts +331 -0
- package/build/esm/core/clock/Transport.js +591 -0
- package/build/esm/core/clock/Transport.js.map +1 -0
- package/build/esm/core/clock/TransportEvent.d.ts +62 -0
- package/build/esm/core/clock/TransportEvent.js +66 -0
- package/build/esm/core/clock/TransportEvent.js.map +1 -0
- package/build/esm/core/clock/TransportRepeatEvent.d.ts +70 -0
- package/build/esm/core/clock/TransportRepeatEvent.js +110 -0
- package/build/esm/core/clock/TransportRepeatEvent.js.map +1 -0
- package/build/esm/core/context/AbstractParam.d.ts +239 -0
- package/build/esm/core/context/AbstractParam.js +6 -0
- package/build/esm/core/context/AbstractParam.js.map +1 -0
- package/build/esm/core/context/AudioContext.d.ts +36 -0
- package/build/esm/core/context/AudioContext.js +38 -0
- package/build/esm/core/context/AudioContext.js.map +1 -0
- package/build/esm/core/context/BaseContext.d.ts +56 -0
- package/build/esm/core/context/BaseContext.js +16 -0
- package/build/esm/core/context/BaseContext.js.map +1 -0
- package/build/esm/core/context/Context.d.ts +255 -0
- package/build/esm/core/context/Context.js +474 -0
- package/build/esm/core/context/Context.js.map +1 -0
- package/build/esm/core/context/ContextInitialization.d.ts +15 -0
- package/build/esm/core/context/ContextInitialization.js +35 -0
- package/build/esm/core/context/ContextInitialization.js.map +1 -0
- package/build/esm/core/context/Delay.d.ts +58 -0
- package/build/esm/core/context/Delay.js +58 -0
- package/build/esm/core/context/Delay.js.map +1 -0
- package/build/esm/core/context/Destination.d.ts +73 -0
- package/build/esm/core/context/Destination.js +105 -0
- package/build/esm/core/context/Destination.js.map +1 -0
- package/build/esm/core/context/DummyContext.d.ts +54 -0
- package/build/esm/core/context/DummyContext.js +138 -0
- package/build/esm/core/context/DummyContext.js.map +1 -0
- package/build/esm/core/context/Gain.d.ts +53 -0
- package/build/esm/core/context/Gain.js +58 -0
- package/build/esm/core/context/Gain.js.map +1 -0
- package/build/esm/core/context/Listener.d.ts +38 -0
- package/build/esm/core/context/Listener.js +87 -0
- package/build/esm/core/context/Listener.js.map +1 -0
- package/build/esm/core/context/Offline.d.ts +37 -0
- package/build/esm/core/context/Offline.js +56 -0
- package/build/esm/core/context/Offline.js.map +1 -0
- package/build/esm/core/context/OfflineContext.d.ts +58 -0
- package/build/esm/core/context/OfflineContext.js +87 -0
- package/build/esm/core/context/OfflineContext.js.map +1 -0
- package/build/esm/core/context/Param.d.ts +132 -0
- package/build/esm/core/context/Param.js +446 -0
- package/build/esm/core/context/Param.js.map +1 -0
- package/build/esm/core/context/ToneAudioBuffer.d.ts +162 -0
- package/build/esm/core/context/ToneAudioBuffer.js +364 -0
- package/build/esm/core/context/ToneAudioBuffer.js.map +1 -0
- package/build/esm/core/context/ToneAudioBuffers.d.ts +89 -0
- package/build/esm/core/context/ToneAudioBuffers.js +119 -0
- package/build/esm/core/context/ToneAudioBuffers.js.map +1 -0
- package/build/esm/core/context/ToneAudioNode.d.ts +173 -0
- package/build/esm/core/context/ToneAudioNode.js +342 -0
- package/build/esm/core/context/ToneAudioNode.js.map +1 -0
- package/build/esm/core/context/ToneWithContext.d.ts +108 -0
- package/build/esm/core/context/ToneWithContext.js +170 -0
- package/build/esm/core/context/ToneWithContext.js.map +1 -0
- package/build/esm/core/index.d.ts +28 -0
- package/build/esm/core/index.js +33 -0
- package/build/esm/core/index.js.map +1 -0
- package/build/esm/core/type/Conversions.d.ts +44 -0
- package/build/esm/core/type/Conversions.js +68 -0
- package/build/esm/core/type/Conversions.js.map +1 -0
- package/build/esm/core/type/Frequency.d.ts +101 -0
- package/build/esm/core/type/Frequency.js +225 -0
- package/build/esm/core/type/Frequency.js.map +1 -0
- package/build/esm/core/type/Midi.d.ts +53 -0
- package/build/esm/core/type/Midi.js +73 -0
- package/build/esm/core/type/Midi.js.map +1 -0
- package/build/esm/core/type/NoteUnits.d.ts +12 -0
- package/build/esm/core/type/NoteUnits.js +3 -0
- package/build/esm/core/type/NoteUnits.js.map +1 -0
- package/build/esm/core/type/Ticks.d.ts +44 -0
- package/build/esm/core/type/Ticks.js +61 -0
- package/build/esm/core/type/Ticks.js.map +1 -0
- package/build/esm/core/type/Time.d.ts +69 -0
- package/build/esm/core/type/Time.js +147 -0
- package/build/esm/core/type/Time.js.map +1 -0
- package/build/esm/core/type/TimeBase.d.ts +120 -0
- package/build/esm/core/type/TimeBase.js +251 -0
- package/build/esm/core/type/TimeBase.js.map +1 -0
- package/build/esm/core/type/TransportTime.d.ts +25 -0
- package/build/esm/core/type/TransportTime.js +32 -0
- package/build/esm/core/type/TransportTime.js.map +1 -0
- package/build/esm/core/type/Units.d.ts +176 -0
- package/build/esm/core/type/Units.js +2 -0
- package/build/esm/core/type/Units.js.map +1 -0
- package/build/esm/core/util/AdvancedTypeCheck.d.ts +21 -0
- package/build/esm/core/util/AdvancedTypeCheck.js +32 -0
- package/build/esm/core/util/AdvancedTypeCheck.js.map +1 -0
- package/build/esm/core/util/Debug.d.ts +34 -0
- package/build/esm/core/util/Debug.js +50 -0
- package/build/esm/core/util/Debug.js.map +1 -0
- package/build/esm/core/util/Decorator.d.ts +9 -0
- package/build/esm/core/util/Decorator.js +41 -0
- package/build/esm/core/util/Decorator.js.map +1 -0
- package/build/esm/core/util/Defaults.d.ts +32 -0
- package/build/esm/core/util/Defaults.js +99 -0
- package/build/esm/core/util/Defaults.js.map +1 -0
- package/build/esm/core/util/Draw.d.ts +67 -0
- package/build/esm/core/util/Draw.js +110 -0
- package/build/esm/core/util/Draw.js.map +1 -0
- package/build/esm/core/util/Emitter.d.ts +52 -0
- package/build/esm/core/util/Emitter.js +113 -0
- package/build/esm/core/util/Emitter.js.map +1 -0
- package/build/esm/core/util/Interface.d.ts +16 -0
- package/build/esm/core/util/Interface.js +32 -0
- package/build/esm/core/util/Interface.js.map +1 -0
- package/build/esm/core/util/IntervalTimeline.d.ts +106 -0
- package/build/esm/core/util/IntervalTimeline.js +539 -0
- package/build/esm/core/util/IntervalTimeline.js.map +1 -0
- package/build/esm/core/util/Math.d.ts +20 -0
- package/build/esm/core/util/Math.js +36 -0
- package/build/esm/core/util/Math.js.map +1 -0
- package/build/esm/core/util/StateTimeline.d.ts +47 -0
- package/build/esm/core/util/StateTimeline.js +78 -0
- package/build/esm/core/util/StateTimeline.js.map +1 -0
- package/build/esm/core/util/Timeline.d.ts +156 -0
- package/build/esm/core/util/Timeline.js +351 -0
- package/build/esm/core/util/Timeline.js.map +1 -0
- package/build/esm/core/util/TimelineValue.d.ts +28 -0
- package/build/esm/core/util/TimelineValue.js +41 -0
- package/build/esm/core/util/TimelineValue.js.map +1 -0
- package/build/esm/core/util/TypeCheck.d.ts +38 -0
- package/build/esm/core/util/TypeCheck.js +56 -0
- package/build/esm/core/util/TypeCheck.js.map +1 -0
- package/build/esm/core/worklet/DelayLine.worklet.d.ts +1 -0
- package/build/esm/core/worklet/DelayLine.worklet.js +48 -0
- package/build/esm/core/worklet/DelayLine.worklet.js.map +1 -0
- package/build/esm/core/worklet/SingleIOProcessor.worklet.d.ts +2 -0
- package/build/esm/core/worklet/SingleIOProcessor.worklet.js +72 -0
- package/build/esm/core/worklet/SingleIOProcessor.worklet.js.map +1 -0
- package/build/esm/core/worklet/ToneAudioWorklet.d.ts +35 -0
- package/build/esm/core/worklet/ToneAudioWorklet.js +40 -0
- package/build/esm/core/worklet/ToneAudioWorklet.js.map +1 -0
- package/build/esm/core/worklet/ToneAudioWorkletProcessor.worklet.d.ts +1 -0
- package/build/esm/core/worklet/ToneAudioWorkletProcessor.worklet.js +34 -0
- package/build/esm/core/worklet/ToneAudioWorkletProcessor.worklet.js.map +1 -0
- package/build/esm/core/worklet/WorkletGlobalScope.d.ts +12 -0
- package/build/esm/core/worklet/WorkletGlobalScope.js +24 -0
- package/build/esm/core/worklet/WorkletGlobalScope.js.map +1 -0
- package/build/esm/effect/AutoFilter.d.ts +51 -0
- package/build/esm/effect/AutoFilter.js +68 -0
- package/build/esm/effect/AutoFilter.js.map +1 -0
- package/build/esm/effect/AutoPanner.d.ts +31 -0
- package/build/esm/effect/AutoPanner.js +41 -0
- package/build/esm/effect/AutoPanner.js.map +1 -0
- package/build/esm/effect/AutoWah.d.ts +99 -0
- package/build/esm/effect/AutoWah.js +131 -0
- package/build/esm/effect/AutoWah.js.map +1 -0
- package/build/esm/effect/BitCrusher.d.ts +40 -0
- package/build/esm/effect/BitCrusher.js +85 -0
- package/build/esm/effect/BitCrusher.js.map +1 -0
- package/build/esm/effect/BitCrusher.worklet.d.ts +3 -0
- package/build/esm/effect/BitCrusher.worklet.js +25 -0
- package/build/esm/effect/BitCrusher.worklet.js.map +1 -0
- package/build/esm/effect/Chebyshev.d.ts +62 -0
- package/build/esm/effect/Chebyshev.js +95 -0
- package/build/esm/effect/Chebyshev.js.map +1 -0
- package/build/esm/effect/Chorus.d.ts +104 -0
- package/build/esm/effect/Chorus.js +157 -0
- package/build/esm/effect/Chorus.js.map +1 -0
- package/build/esm/effect/Distortion.d.ts +43 -0
- package/build/esm/effect/Distortion.js +69 -0
- package/build/esm/effect/Distortion.js.map +1 -0
- package/build/esm/effect/Effect.d.ts +49 -0
- package/build/esm/effect/Effect.js +70 -0
- package/build/esm/effect/Effect.js.map +1 -0
- package/build/esm/effect/FeedbackDelay.d.ts +37 -0
- package/build/esm/effect/FeedbackDelay.js +47 -0
- package/build/esm/effect/FeedbackDelay.js.map +1 -0
- package/build/esm/effect/FeedbackEffect.d.ts +34 -0
- package/build/esm/effect/FeedbackEffect.js +34 -0
- package/build/esm/effect/FeedbackEffect.js.map +1 -0
- package/build/esm/effect/Freeverb.d.ts +51 -0
- package/build/esm/effect/Freeverb.js +104 -0
- package/build/esm/effect/Freeverb.js.map +1 -0
- package/build/esm/effect/FrequencyShifter.d.ts +68 -0
- package/build/esm/effect/FrequencyShifter.js +88 -0
- package/build/esm/effect/FrequencyShifter.js.map +1 -0
- package/build/esm/effect/JCReverb.d.ts +46 -0
- package/build/esm/effect/JCReverb.js +97 -0
- package/build/esm/effect/JCReverb.js.map +1 -0
- package/build/esm/effect/LFOEffect.d.ts +58 -0
- package/build/esm/effect/LFOEffect.js +77 -0
- package/build/esm/effect/LFOEffect.js.map +1 -0
- package/build/esm/effect/MidSideEffect.d.ts +50 -0
- package/build/esm/effect/MidSideEffect.js +51 -0
- package/build/esm/effect/MidSideEffect.js.map +1 -0
- package/build/esm/effect/Phaser.d.ts +80 -0
- package/build/esm/effect/Phaser.js +119 -0
- package/build/esm/effect/Phaser.js.map +1 -0
- package/build/esm/effect/PingPongDelay.d.ts +48 -0
- package/build/esm/effect/PingPongDelay.js +66 -0
- package/build/esm/effect/PingPongDelay.js.map +1 -0
- package/build/esm/effect/PitchShift.d.ts +89 -0
- package/build/esm/effect/PitchShift.js +140 -0
- package/build/esm/effect/PitchShift.js.map +1 -0
- package/build/esm/effect/Reverb.d.ts +62 -0
- package/build/esm/effect/Reverb.js +111 -0
- package/build/esm/effect/Reverb.js.map +1 -0
- package/build/esm/effect/StereoEffect.d.ts +44 -0
- package/build/esm/effect/StereoEffect.js +61 -0
- package/build/esm/effect/StereoEffect.js.map +1 -0
- package/build/esm/effect/StereoFeedbackEffect.d.ts +39 -0
- package/build/esm/effect/StereoFeedbackEffect.js +49 -0
- package/build/esm/effect/StereoFeedbackEffect.js.map +1 -0
- package/build/esm/effect/StereoWidener.d.ts +50 -0
- package/build/esm/effect/StereoWidener.js +65 -0
- package/build/esm/effect/StereoWidener.js.map +1 -0
- package/build/esm/effect/StereoXFeedbackEffect.d.ts +21 -0
- package/build/esm/effect/StereoXFeedbackEffect.js +28 -0
- package/build/esm/effect/StereoXFeedbackEffect.js.map +1 -0
- package/build/esm/effect/Tremolo.d.ts +86 -0
- package/build/esm/effect/Tremolo.js +131 -0
- package/build/esm/effect/Tremolo.js.map +1 -0
- package/build/esm/effect/Vibrato.d.ts +48 -0
- package/build/esm/effect/Vibrato.js +61 -0
- package/build/esm/effect/Vibrato.js.map +1 -0
- package/build/esm/effect/index.d.ts +18 -0
- package/build/esm/effect/index.js +19 -0
- package/build/esm/effect/index.js.map +1 -0
- package/build/esm/event/Loop.d.ts +107 -0
- package/build/esm/event/Loop.js +164 -0
- package/build/esm/event/Loop.js.map +1 -0
- package/build/esm/event/Part.d.ts +193 -0
- package/build/esm/event/Part.js +401 -0
- package/build/esm/event/Part.js.map +1 -0
- package/build/esm/event/Pattern.d.ts +67 -0
- package/build/esm/event/Pattern.js +67 -0
- package/build/esm/event/Pattern.js.map +1 -0
- package/build/esm/event/PatternGenerator.d.ts +12 -0
- package/build/esm/event/PatternGenerator.js +165 -0
- package/build/esm/event/PatternGenerator.js.map +1 -0
- package/build/esm/event/Sequence.d.ts +127 -0
- package/build/esm/event/Sequence.js +247 -0
- package/build/esm/event/Sequence.js.map +1 -0
- package/build/esm/event/ToneEvent.d.ts +188 -0
- package/build/esm/event/ToneEvent.js +299 -0
- package/build/esm/event/ToneEvent.js.map +1 -0
- package/build/esm/event/index.d.ts +5 -0
- package/build/esm/event/index.js +6 -0
- package/build/esm/event/index.js.map +1 -0
- package/build/esm/fromContext.d.ts +26 -0
- package/build/esm/fromContext.js +41 -0
- package/build/esm/fromContext.js.map +1 -0
- package/build/esm/index.d.ts +86 -0
- package/build/esm/index.js +102 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/instrument/AMSynth.d.ts +25 -0
- package/build/esm/instrument/AMSynth.js +37 -0
- package/build/esm/instrument/AMSynth.js.map +1 -0
- package/build/esm/instrument/DuoSynth.d.ts +72 -0
- package/build/esm/instrument/DuoSynth.js +140 -0
- package/build/esm/instrument/DuoSynth.js.map +1 -0
- package/build/esm/instrument/FMSynth.d.ts +31 -0
- package/build/esm/instrument/FMSynth.js +45 -0
- package/build/esm/instrument/FMSynth.js.map +1 -0
- package/build/esm/instrument/Instrument.d.ts +100 -0
- package/build/esm/instrument/Instrument.js +127 -0
- package/build/esm/instrument/Instrument.js.map +1 -0
- package/build/esm/instrument/MembraneSynth.d.ts +47 -0
- package/build/esm/instrument/MembraneSynth.js +69 -0
- package/build/esm/instrument/MembraneSynth.js.map +1 -0
- package/build/esm/instrument/MetalSynth.d.ts +109 -0
- package/build/esm/instrument/MetalSynth.js +198 -0
- package/build/esm/instrument/MetalSynth.js.map +1 -0
- package/build/esm/instrument/ModulationSynth.d.ts +81 -0
- package/build/esm/instrument/ModulationSynth.js +122 -0
- package/build/esm/instrument/ModulationSynth.js.map +1 -0
- package/build/esm/instrument/MonoSynth.d.ts +76 -0
- package/build/esm/instrument/MonoSynth.js +113 -0
- package/build/esm/instrument/MonoSynth.js.map +1 -0
- package/build/esm/instrument/Monophonic.d.ts +82 -0
- package/build/esm/instrument/Monophonic.js +83 -0
- package/build/esm/instrument/Monophonic.js.map +1 -0
- package/build/esm/instrument/NoiseSynth.d.ts +51 -0
- package/build/esm/instrument/NoiseSynth.js +93 -0
- package/build/esm/instrument/NoiseSynth.js.map +1 -0
- package/build/esm/instrument/PluckSynth.d.ts +57 -0
- package/build/esm/instrument/PluckSynth.js +80 -0
- package/build/esm/instrument/PluckSynth.js.map +1 -0
- package/build/esm/instrument/PolySynth.d.ts +176 -0
- package/build/esm/instrument/PolySynth.js +302 -0
- package/build/esm/instrument/PolySynth.js.map +1 -0
- package/build/esm/instrument/Sampler.d.ts +126 -0
- package/build/esm/instrument/Sampler.js +259 -0
- package/build/esm/instrument/Sampler.js.map +1 -0
- package/build/esm/instrument/Synth.d.ts +65 -0
- package/build/esm/instrument/Synth.js +91 -0
- package/build/esm/instrument/Synth.js.map +1 -0
- package/build/esm/instrument/index.d.ts +11 -0
- package/build/esm/instrument/index.js +12 -0
- package/build/esm/instrument/index.js.map +1 -0
- package/build/esm/signal/Abs.d.ts +34 -0
- package/build/esm/signal/Abs.js +51 -0
- package/build/esm/signal/Abs.js.map +1 -0
- package/build/esm/signal/Add.d.ts +40 -0
- package/build/esm/signal/Add.js +49 -0
- package/build/esm/signal/Add.js.map +1 -0
- package/build/esm/signal/AudioToGain.d.ts +27 -0
- package/build/esm/signal/AudioToGain.js +37 -0
- package/build/esm/signal/AudioToGain.js.map +1 -0
- package/build/esm/signal/GainToAudio.d.ts +27 -0
- package/build/esm/signal/GainToAudio.js +37 -0
- package/build/esm/signal/GainToAudio.js.map +1 -0
- package/build/esm/signal/GreaterThan.d.ts +47 -0
- package/build/esm/signal/GreaterThan.js +46 -0
- package/build/esm/signal/GreaterThan.js.map +1 -0
- package/build/esm/signal/GreaterThanZero.d.ts +29 -0
- package/build/esm/signal/GreaterThanZero.js +45 -0
- package/build/esm/signal/GreaterThanZero.js.map +1 -0
- package/build/esm/signal/Multiply.d.ts +52 -0
- package/build/esm/signal/Multiply.js +51 -0
- package/build/esm/signal/Multiply.js.map +1 -0
- package/build/esm/signal/Negate.d.ts +29 -0
- package/build/esm/signal/Negate.js +39 -0
- package/build/esm/signal/Negate.js.map +1 -0
- package/build/esm/signal/Pow.d.ts +42 -0
- package/build/esm/signal/Pow.js +58 -0
- package/build/esm/signal/Pow.js.map +1 -0
- package/build/esm/signal/Scale.d.ts +62 -0
- package/build/esm/signal/Scale.js +73 -0
- package/build/esm/signal/Scale.js.map +1 -0
- package/build/esm/signal/ScaleExp.d.ts +37 -0
- package/build/esm/signal/ScaleExp.js +46 -0
- package/build/esm/signal/ScaleExp.js.map +1 -0
- package/build/esm/signal/Signal.d.ts +92 -0
- package/build/esm/signal/Signal.js +183 -0
- package/build/esm/signal/Signal.js.map +1 -0
- package/build/esm/signal/SignalOperator.d.ts +9 -0
- package/build/esm/signal/SignalOperator.js +16 -0
- package/build/esm/signal/SignalOperator.js.map +1 -0
- package/build/esm/signal/Subtract.d.ts +48 -0
- package/build/esm/signal/Subtract.js +58 -0
- package/build/esm/signal/Subtract.js.map +1 -0
- package/build/esm/signal/SyncedSignal.d.ts +53 -0
- package/build/esm/signal/SyncedSignal.js +124 -0
- package/build/esm/signal/SyncedSignal.js.map +1 -0
- package/build/esm/signal/ToneConstantSource.d.ts +39 -0
- package/build/esm/signal/ToneConstantSource.js +61 -0
- package/build/esm/signal/ToneConstantSource.js.map +1 -0
- package/build/esm/signal/WaveShaper.d.ts +81 -0
- package/build/esm/signal/WaveShaper.js +99 -0
- package/build/esm/signal/WaveShaper.js.map +1 -0
- package/build/esm/signal/Zero.d.ts +29 -0
- package/build/esm/signal/Zero.js +38 -0
- package/build/esm/signal/Zero.js.map +1 -0
- package/build/esm/signal/index.d.ts +16 -0
- package/build/esm/signal/index.js +17 -0
- package/build/esm/signal/index.js.map +1 -0
- package/build/esm/source/Noise.d.ts +96 -0
- package/build/esm/source/Noise.js +225 -0
- package/build/esm/source/Noise.js.map +1 -0
- package/build/esm/source/OneShotSource.d.ts +102 -0
- package/build/esm/source/OneShotSource.js +183 -0
- package/build/esm/source/OneShotSource.js.map +1 -0
- package/build/esm/source/Source.d.ts +155 -0
- package/build/esm/source/Source.js +281 -0
- package/build/esm/source/Source.js.map +1 -0
- package/build/esm/source/UserMedia.d.ts +123 -0
- package/build/esm/source/UserMedia.js +214 -0
- package/build/esm/source/UserMedia.js.map +1 -0
- package/build/esm/source/buffer/GrainPlayer.d.ts +135 -0
- package/build/esm/source/buffer/GrainPlayer.js +235 -0
- package/build/esm/source/buffer/GrainPlayer.js.map +1 -0
- package/build/esm/source/buffer/Player.d.ts +190 -0
- package/build/esm/source/buffer/Player.js +352 -0
- package/build/esm/source/buffer/Player.js.map +1 -0
- package/build/esm/source/buffer/Players.d.ts +121 -0
- package/build/esm/source/buffer/Players.js +162 -0
- package/build/esm/source/buffer/Players.js.map +1 -0
- package/build/esm/source/buffer/ToneBufferSource.d.ts +97 -0
- package/build/esm/source/buffer/ToneBufferSource.js +196 -0
- package/build/esm/source/buffer/ToneBufferSource.js.map +1 -0
- package/build/esm/source/index.d.ts +15 -0
- package/build/esm/source/index.js +16 -0
- package/build/esm/source/index.js.map +1 -0
- package/build/esm/source/oscillator/AMOscillator.d.ts +101 -0
- package/build/esm/source/oscillator/AMOscillator.js +157 -0
- package/build/esm/source/oscillator/AMOscillator.js.map +1 -0
- package/build/esm/source/oscillator/FMOscillator.d.ts +101 -0
- package/build/esm/source/oscillator/FMOscillator.js +172 -0
- package/build/esm/source/oscillator/FMOscillator.js.map +1 -0
- package/build/esm/source/oscillator/FatOscillator.d.ts +99 -0
- package/build/esm/source/oscillator/FatOscillator.js +195 -0
- package/build/esm/source/oscillator/FatOscillator.js.map +1 -0
- package/build/esm/source/oscillator/LFO.d.ts +167 -0
- package/build/esm/source/oscillator/LFO.js +233 -0
- package/build/esm/source/oscillator/LFO.js.map +1 -0
- package/build/esm/source/oscillator/OmniOscillator.d.ts +162 -0
- package/build/esm/source/oscillator/OmniOscillator.js +348 -0
- package/build/esm/source/oscillator/OmniOscillator.js.map +1 -0
- package/build/esm/source/oscillator/Oscillator.d.ts +125 -0
- package/build/esm/source/oscillator/Oscillator.js +379 -0
- package/build/esm/source/oscillator/Oscillator.js.map +1 -0
- package/build/esm/source/oscillator/OscillatorInterface.d.ts +298 -0
- package/build/esm/source/oscillator/OscillatorInterface.js +22 -0
- package/build/esm/source/oscillator/OscillatorInterface.js.map +1 -0
- package/build/esm/source/oscillator/PWMOscillator.d.ts +94 -0
- package/build/esm/source/oscillator/PWMOscillator.js +136 -0
- package/build/esm/source/oscillator/PWMOscillator.js.map +1 -0
- package/build/esm/source/oscillator/PulseOscillator.d.ts +119 -0
- package/build/esm/source/oscillator/PulseOscillator.js +175 -0
- package/build/esm/source/oscillator/PulseOscillator.js.map +1 -0
- package/build/esm/source/oscillator/ToneOscillatorNode.d.ts +57 -0
- package/build/esm/source/oscillator/ToneOscillatorNode.js +90 -0
- package/build/esm/source/oscillator/ToneOscillatorNode.js.map +1 -0
- package/build/esm/version.d.ts +1 -0
- package/build/esm/version.js +2 -0
- package/build/esm/version.js.map +1 -0
- package/docs/tone.json +1 -0
- package/package.json +116 -0
|
@@ -0,0 +1,731 @@
|
|
|
1
|
+
import { TimeClass } from "../../core/type/Time";
|
|
2
|
+
import { PlaybackState } from "../../core/util/StateTimeline";
|
|
3
|
+
import { TimelineValue } from "../../core/util/TimelineValue";
|
|
4
|
+
import { Signal } from "../../signal/Signal";
|
|
5
|
+
import { onContextClose, onContextInit } from "../context/ContextInitialization";
|
|
6
|
+
import { Gain } from "../context/Gain";
|
|
7
|
+
import { ToneWithContext, ToneWithContextOptions } from "../context/ToneWithContext";
|
|
8
|
+
import { TicksClass } from "../type/Ticks";
|
|
9
|
+
import { TransportTimeClass } from "../type/TransportTime";
|
|
10
|
+
import {
|
|
11
|
+
BarsBeatsSixteenths, BPM, NormalRange, Seconds,
|
|
12
|
+
Subdivision, Ticks, Time, TimeSignature, TransportTime
|
|
13
|
+
} from "../type/Units";
|
|
14
|
+
import { optionsFromArguments } from "../util/Defaults";
|
|
15
|
+
import { Emitter } from "../util/Emitter";
|
|
16
|
+
import { readOnly, writable } from "../util/Interface";
|
|
17
|
+
import { IntervalTimeline } from "../util/IntervalTimeline";
|
|
18
|
+
import { Timeline } from "../util/Timeline";
|
|
19
|
+
import { isArray, isDefined } from "../util/TypeCheck";
|
|
20
|
+
import { Clock } from "./Clock";
|
|
21
|
+
import { TickParam } from "./TickParam";
|
|
22
|
+
import { TransportEvent } from "./TransportEvent";
|
|
23
|
+
import { TransportRepeatEvent } from "./TransportRepeatEvent";
|
|
24
|
+
|
|
25
|
+
interface TransportOptions extends ToneWithContextOptions {
|
|
26
|
+
bpm: BPM;
|
|
27
|
+
swing: NormalRange;
|
|
28
|
+
swingSubdivision: Subdivision;
|
|
29
|
+
timeSignature: number;
|
|
30
|
+
loopStart: Time;
|
|
31
|
+
loopEnd: Time;
|
|
32
|
+
ppq: number;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type TransportEventNames = "start" | "stop" | "pause" | "loop" | "loopEnd" | "loopStart" | "ticks";
|
|
36
|
+
|
|
37
|
+
interface SyncedSignalEvent {
|
|
38
|
+
signal: Signal;
|
|
39
|
+
initial: number;
|
|
40
|
+
ratio: Gain;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type TransportCallback = (time: Seconds) => void;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Transport for timing musical events.
|
|
47
|
+
* Supports tempo curves and time changes. Unlike browser-based timing (setInterval, requestAnimationFrame)
|
|
48
|
+
* Transport timing events pass in the exact time of the scheduled event
|
|
49
|
+
* in the argument of the callback function. Pass that time value to the object
|
|
50
|
+
* you're scheduling. <br><br>
|
|
51
|
+
* A single transport is created for you when the library is initialized.
|
|
52
|
+
* <br><br>
|
|
53
|
+
* The transport emits the events: "start", "stop", "pause", and "loop" which are
|
|
54
|
+
* called with the time of that event as the argument.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* const osc = new Tone.Oscillator().toDestination();
|
|
58
|
+
* // repeated event every 8th note
|
|
59
|
+
* Tone.Transport.scheduleRepeat((time) => {
|
|
60
|
+
* // use the callback time to schedule events
|
|
61
|
+
* osc.start(time).stop(time + 0.1);
|
|
62
|
+
* }, "8n");
|
|
63
|
+
* // transport must be started before it starts invoking events
|
|
64
|
+
* Tone.Transport.start();
|
|
65
|
+
* @category Core
|
|
66
|
+
*/
|
|
67
|
+
export class Transport extends ToneWithContext<TransportOptions> implements Emitter<TransportEventNames> {
|
|
68
|
+
|
|
69
|
+
readonly name: string = "Transport";
|
|
70
|
+
|
|
71
|
+
//-------------------------------------
|
|
72
|
+
// LOOPING
|
|
73
|
+
//-------------------------------------
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* If the transport loops or not.
|
|
77
|
+
*/
|
|
78
|
+
private _loop: TimelineValue<boolean> = new TimelineValue(false);
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The loop start position in ticks
|
|
82
|
+
*/
|
|
83
|
+
private _loopStart: Ticks = 0;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* The loop end position in ticks
|
|
87
|
+
*/
|
|
88
|
+
private _loopEnd: Ticks = 0;
|
|
89
|
+
|
|
90
|
+
//-------------------------------------
|
|
91
|
+
// CLOCK/TEMPO
|
|
92
|
+
//-------------------------------------
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Pulses per quarter is the number of ticks per quarter note.
|
|
96
|
+
*/
|
|
97
|
+
private _ppq: number;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* watches the main oscillator for timing ticks
|
|
101
|
+
* initially starts at 120bpm
|
|
102
|
+
*/
|
|
103
|
+
private _clock: Clock<"bpm">;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The Beats Per Minute of the Transport.
|
|
107
|
+
* @example
|
|
108
|
+
* const osc = new Tone.Oscillator().toDestination();
|
|
109
|
+
* Tone.Transport.bpm.value = 80;
|
|
110
|
+
* // start/stop the oscillator every quarter note
|
|
111
|
+
* Tone.Transport.scheduleRepeat(time => {
|
|
112
|
+
* osc.start(time).stop(time + 0.1);
|
|
113
|
+
* }, "4n");
|
|
114
|
+
* Tone.Transport.start();
|
|
115
|
+
* // ramp the bpm to 120 over 10 seconds
|
|
116
|
+
* Tone.Transport.bpm.rampTo(120, 10);
|
|
117
|
+
*/
|
|
118
|
+
bpm: TickParam<"bpm">;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* The time signature, or more accurately the numerator
|
|
122
|
+
* of the time signature over a denominator of 4.
|
|
123
|
+
*/
|
|
124
|
+
private _timeSignature: number;
|
|
125
|
+
|
|
126
|
+
//-------------------------------------
|
|
127
|
+
// TIMELINE EVENTS
|
|
128
|
+
//-------------------------------------
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* All the events in an object to keep track by ID
|
|
132
|
+
*/
|
|
133
|
+
private _scheduledEvents = {};
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* The scheduled events.
|
|
137
|
+
*/
|
|
138
|
+
private _timeline: Timeline<TransportEvent> = new Timeline();
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Repeated events
|
|
142
|
+
*/
|
|
143
|
+
private _repeatedEvents: IntervalTimeline = new IntervalTimeline();
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* All of the synced Signals
|
|
147
|
+
*/
|
|
148
|
+
private _syncedSignals: SyncedSignalEvent[] = [];
|
|
149
|
+
|
|
150
|
+
//-------------------------------------
|
|
151
|
+
// SWING
|
|
152
|
+
//-------------------------------------
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* The subdivision of the swing
|
|
156
|
+
*/
|
|
157
|
+
private _swingTicks: Ticks;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* The swing amount
|
|
161
|
+
*/
|
|
162
|
+
private _swingAmount: NormalRange = 0;
|
|
163
|
+
|
|
164
|
+
constructor(options?: Partial<TransportOptions>);
|
|
165
|
+
constructor() {
|
|
166
|
+
|
|
167
|
+
super(optionsFromArguments(Transport.getDefaults(), arguments));
|
|
168
|
+
const options = optionsFromArguments(Transport.getDefaults(), arguments);
|
|
169
|
+
|
|
170
|
+
// CLOCK/TEMPO
|
|
171
|
+
this._ppq = options.ppq;
|
|
172
|
+
this._clock = new Clock({
|
|
173
|
+
callback: this._processTick.bind(this),
|
|
174
|
+
context: this.context,
|
|
175
|
+
frequency: 0,
|
|
176
|
+
units: "bpm",
|
|
177
|
+
});
|
|
178
|
+
this._bindClockEvents();
|
|
179
|
+
this.bpm = this._clock.frequency as unknown as TickParam<"bpm">;
|
|
180
|
+
this._clock.frequency.multiplier = options.ppq;
|
|
181
|
+
this.bpm.setValueAtTime(options.bpm, 0);
|
|
182
|
+
readOnly(this, "bpm");
|
|
183
|
+
this._timeSignature = options.timeSignature;
|
|
184
|
+
|
|
185
|
+
// SWING
|
|
186
|
+
this._swingTicks = options.ppq / 2; // 8n
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
static getDefaults(): TransportOptions {
|
|
190
|
+
return Object.assign(ToneWithContext.getDefaults(), {
|
|
191
|
+
bpm: 120,
|
|
192
|
+
loopEnd: "4m" as Subdivision,
|
|
193
|
+
loopStart: 0,
|
|
194
|
+
ppq: 192,
|
|
195
|
+
swing: 0,
|
|
196
|
+
swingSubdivision: "8n" as Subdivision,
|
|
197
|
+
timeSignature: 4,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
//-------------------------------------
|
|
202
|
+
// TICKS
|
|
203
|
+
//-------------------------------------
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* called on every tick
|
|
207
|
+
* @param tickTime clock relative tick time
|
|
208
|
+
*/
|
|
209
|
+
private _processTick(tickTime: Seconds, ticks: Ticks): void {
|
|
210
|
+
// do the loop test
|
|
211
|
+
if (this._loop.get(tickTime)) {
|
|
212
|
+
if (ticks >= this._loopEnd) {
|
|
213
|
+
this.emit("loopEnd", tickTime);
|
|
214
|
+
this._clock.setTicksAtTime(this._loopStart, tickTime);
|
|
215
|
+
ticks = this._loopStart;
|
|
216
|
+
this.emit("loopStart", tickTime, this._clock.getSecondsAtTime(tickTime));
|
|
217
|
+
this.emit("loop", tickTime);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// handle swing
|
|
221
|
+
if (this._swingAmount > 0 &&
|
|
222
|
+
ticks % this._ppq !== 0 && // not on a downbeat
|
|
223
|
+
ticks % (this._swingTicks * 2) !== 0) {
|
|
224
|
+
// add some swing
|
|
225
|
+
const progress = (ticks % (this._swingTicks * 2)) / (this._swingTicks * 2);
|
|
226
|
+
const amount = Math.sin((progress) * Math.PI) * this._swingAmount;
|
|
227
|
+
tickTime += new TicksClass(this.context, this._swingTicks * 2 / 3).toSeconds() * amount;
|
|
228
|
+
}
|
|
229
|
+
// invoke the timeline events scheduled on this tick
|
|
230
|
+
this._timeline.forEachAtTime(ticks, event => event.invoke(tickTime));
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
//-------------------------------------
|
|
234
|
+
// SCHEDULABLE EVENTS
|
|
235
|
+
//-------------------------------------
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Schedule an event along the timeline.
|
|
239
|
+
* @param callback The callback to be invoked at the time.
|
|
240
|
+
* @param time The time to invoke the callback at.
|
|
241
|
+
* @return The id of the event which can be used for canceling the event.
|
|
242
|
+
* @example
|
|
243
|
+
* // schedule an event on the 16th measure
|
|
244
|
+
* Tone.Transport.schedule((time) => {
|
|
245
|
+
* // invoked on measure 16
|
|
246
|
+
* console.log("measure 16!");
|
|
247
|
+
* }, "16:0:0");
|
|
248
|
+
*/
|
|
249
|
+
schedule(callback: TransportCallback, time: TransportTime | TransportTimeClass): number {
|
|
250
|
+
const event = new TransportEvent(this, {
|
|
251
|
+
callback,
|
|
252
|
+
time: new TransportTimeClass(this.context, time).toTicks(),
|
|
253
|
+
});
|
|
254
|
+
return this._addEvent(event, this._timeline);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Schedule a repeated event along the timeline. The event will fire
|
|
259
|
+
* at the `interval` starting at the `startTime` and for the specified
|
|
260
|
+
* `duration`.
|
|
261
|
+
* @param callback The callback to invoke.
|
|
262
|
+
* @param interval The duration between successive callbacks. Must be a positive number.
|
|
263
|
+
* @param startTime When along the timeline the events should start being invoked.
|
|
264
|
+
* @param duration How long the event should repeat.
|
|
265
|
+
* @return The ID of the scheduled event. Use this to cancel the event.
|
|
266
|
+
* @example
|
|
267
|
+
* const osc = new Tone.Oscillator().toDestination().start();
|
|
268
|
+
* // a callback invoked every eighth note after the first measure
|
|
269
|
+
* Tone.Transport.scheduleRepeat((time) => {
|
|
270
|
+
* osc.start(time).stop(time + 0.1);
|
|
271
|
+
* }, "8n", "1m");
|
|
272
|
+
*/
|
|
273
|
+
scheduleRepeat(
|
|
274
|
+
callback: TransportCallback,
|
|
275
|
+
interval: Time | TimeClass,
|
|
276
|
+
startTime?: TransportTime | TransportTimeClass,
|
|
277
|
+
duration: Time = Infinity,
|
|
278
|
+
): number {
|
|
279
|
+
const event = new TransportRepeatEvent(this, {
|
|
280
|
+
callback,
|
|
281
|
+
duration: new TimeClass(this.context, duration).toTicks(),
|
|
282
|
+
interval: new TimeClass(this.context, interval).toTicks(),
|
|
283
|
+
time: new TransportTimeClass(this.context, startTime).toTicks(),
|
|
284
|
+
});
|
|
285
|
+
// kick it off if the Transport is started
|
|
286
|
+
// @ts-ignore
|
|
287
|
+
return this._addEvent(event, this._repeatedEvents);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Schedule an event that will be removed after it is invoked.
|
|
292
|
+
* @param callback The callback to invoke once.
|
|
293
|
+
* @param time The time the callback should be invoked.
|
|
294
|
+
* @returns The ID of the scheduled event.
|
|
295
|
+
*/
|
|
296
|
+
scheduleOnce(callback: TransportCallback, time: TransportTime | TransportTimeClass): number {
|
|
297
|
+
const event = new TransportEvent(this, {
|
|
298
|
+
callback,
|
|
299
|
+
once: true,
|
|
300
|
+
time: new TransportTimeClass(this.context, time).toTicks(),
|
|
301
|
+
});
|
|
302
|
+
return this._addEvent(event, this._timeline);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Clear the passed in event id from the timeline
|
|
307
|
+
* @param eventId The id of the event.
|
|
308
|
+
*/
|
|
309
|
+
clear(eventId: number): this {
|
|
310
|
+
if (this._scheduledEvents.hasOwnProperty(eventId)) {
|
|
311
|
+
const item = this._scheduledEvents[eventId.toString()];
|
|
312
|
+
item.timeline.remove(item.event);
|
|
313
|
+
item.event.dispose();
|
|
314
|
+
delete this._scheduledEvents[eventId.toString()];
|
|
315
|
+
}
|
|
316
|
+
return this;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Add an event to the correct timeline. Keep track of the
|
|
321
|
+
* timeline it was added to.
|
|
322
|
+
* @returns the event id which was just added
|
|
323
|
+
*/
|
|
324
|
+
private _addEvent(event: TransportEvent, timeline: Timeline<TransportEvent>): number {
|
|
325
|
+
this._scheduledEvents[event.id.toString()] = {
|
|
326
|
+
event,
|
|
327
|
+
timeline,
|
|
328
|
+
};
|
|
329
|
+
timeline.add(event);
|
|
330
|
+
return event.id;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Remove scheduled events from the timeline after
|
|
335
|
+
* the given time. Repeated events will be removed
|
|
336
|
+
* if their startTime is after the given time
|
|
337
|
+
* @param after Clear all events after this time.
|
|
338
|
+
*/
|
|
339
|
+
cancel(after: TransportTime = 0): this {
|
|
340
|
+
const computedAfter = this.toTicks(after);
|
|
341
|
+
this._timeline.forEachFrom(computedAfter, event => this.clear(event.id));
|
|
342
|
+
this._repeatedEvents.forEachFrom(computedAfter, event => this.clear(event.id));
|
|
343
|
+
return this;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
//-------------------------------------
|
|
347
|
+
// START/STOP/PAUSE
|
|
348
|
+
//-------------------------------------
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Bind start/stop/pause events from the clock and emit them.
|
|
352
|
+
*/
|
|
353
|
+
private _bindClockEvents(): void {
|
|
354
|
+
this._clock.on("start", (time, offset) => {
|
|
355
|
+
offset = new TicksClass(this.context, offset).toSeconds();
|
|
356
|
+
this.emit("start", time, offset);
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
this._clock.on("stop", (time) => {
|
|
360
|
+
this.emit("stop", time);
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
this._clock.on("pause", (time) => {
|
|
364
|
+
this.emit("pause", time);
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Returns the playback state of the source, either "started", "stopped", or "paused"
|
|
370
|
+
*/
|
|
371
|
+
get state(): PlaybackState {
|
|
372
|
+
return this._clock.getStateAtTime(this.now());
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Start the transport and all sources synced to the transport.
|
|
377
|
+
* @param time The time when the transport should start.
|
|
378
|
+
* @param offset The timeline offset to start the transport.
|
|
379
|
+
* @example
|
|
380
|
+
* // start the transport in one second starting at beginning of the 5th measure.
|
|
381
|
+
* Tone.Transport.start("+1", "4:0:0");
|
|
382
|
+
*/
|
|
383
|
+
start(time?: Time, offset?: TransportTime): this {
|
|
384
|
+
let offsetTicks;
|
|
385
|
+
if (isDefined(offset)) {
|
|
386
|
+
offsetTicks = this.toTicks(offset);
|
|
387
|
+
}
|
|
388
|
+
// start the clock
|
|
389
|
+
this._clock.start(time, offsetTicks);
|
|
390
|
+
return this;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Stop the transport and all sources synced to the transport.
|
|
395
|
+
* @param time The time when the transport should stop.
|
|
396
|
+
* @example
|
|
397
|
+
* Tone.Transport.stop();
|
|
398
|
+
*/
|
|
399
|
+
stop(time?: Time): this {
|
|
400
|
+
this._clock.stop(time);
|
|
401
|
+
return this;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* Pause the transport and all sources synced to the transport.
|
|
406
|
+
*/
|
|
407
|
+
pause(time?: Time): this {
|
|
408
|
+
this._clock.pause(time);
|
|
409
|
+
return this;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Toggle the current state of the transport. If it is
|
|
414
|
+
* started, it will stop it, otherwise it will start the Transport.
|
|
415
|
+
* @param time The time of the event
|
|
416
|
+
*/
|
|
417
|
+
toggle(time?: Time): this {
|
|
418
|
+
time = this.toSeconds(time);
|
|
419
|
+
if (this._clock.getStateAtTime(time) !== "started") {
|
|
420
|
+
this.start(time);
|
|
421
|
+
} else {
|
|
422
|
+
this.stop(time);
|
|
423
|
+
}
|
|
424
|
+
return this;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
//-------------------------------------
|
|
428
|
+
// SETTERS/GETTERS
|
|
429
|
+
//-------------------------------------
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* The time signature as just the numerator over 4.
|
|
433
|
+
* For example 4/4 would be just 4 and 6/8 would be 3.
|
|
434
|
+
* @example
|
|
435
|
+
* // common time
|
|
436
|
+
* Tone.Transport.timeSignature = 4;
|
|
437
|
+
* // 7/8
|
|
438
|
+
* Tone.Transport.timeSignature = [7, 8];
|
|
439
|
+
* // this will be reduced to a single number
|
|
440
|
+
* Tone.Transport.timeSignature; // returns 3.5
|
|
441
|
+
*/
|
|
442
|
+
get timeSignature(): TimeSignature {
|
|
443
|
+
return this._timeSignature;
|
|
444
|
+
}
|
|
445
|
+
set timeSignature(timeSig: TimeSignature) {
|
|
446
|
+
if (isArray(timeSig)) {
|
|
447
|
+
timeSig = (timeSig[0] / timeSig[1]) * 4;
|
|
448
|
+
}
|
|
449
|
+
this._timeSignature = timeSig;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* When the Transport.loop = true, this is the starting position of the loop.
|
|
454
|
+
*/
|
|
455
|
+
get loopStart(): Time {
|
|
456
|
+
return new TimeClass(this.context, this._loopStart, "i").toSeconds();
|
|
457
|
+
}
|
|
458
|
+
set loopStart(startPosition: Time) {
|
|
459
|
+
this._loopStart = this.toTicks(startPosition);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* When the Transport.loop = true, this is the ending position of the loop.
|
|
464
|
+
*/
|
|
465
|
+
get loopEnd(): Time {
|
|
466
|
+
return new TimeClass(this.context, this._loopEnd, "i").toSeconds();
|
|
467
|
+
}
|
|
468
|
+
set loopEnd(endPosition: Time) {
|
|
469
|
+
this._loopEnd = this.toTicks(endPosition);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* If the transport loops or not.
|
|
474
|
+
*/
|
|
475
|
+
get loop(): boolean {
|
|
476
|
+
return this._loop.get(this.now());
|
|
477
|
+
}
|
|
478
|
+
set loop(loop) {
|
|
479
|
+
this._loop.set(loop, this.now());
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* Set the loop start and stop at the same time.
|
|
484
|
+
* @example
|
|
485
|
+
* // loop over the first measure
|
|
486
|
+
* Tone.Transport.setLoopPoints(0, "1m");
|
|
487
|
+
* Tone.Transport.loop = true;
|
|
488
|
+
*/
|
|
489
|
+
setLoopPoints(startPosition: TransportTime, endPosition: TransportTime): this {
|
|
490
|
+
this.loopStart = startPosition;
|
|
491
|
+
this.loopEnd = endPosition;
|
|
492
|
+
return this;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
/**
|
|
496
|
+
* The swing value. Between 0-1 where 1 equal to the note + half the subdivision.
|
|
497
|
+
*/
|
|
498
|
+
get swing(): NormalRange {
|
|
499
|
+
return this._swingAmount;
|
|
500
|
+
}
|
|
501
|
+
set swing(amount: NormalRange) {
|
|
502
|
+
// scale the values to a normal range
|
|
503
|
+
this._swingAmount = amount;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Set the subdivision which the swing will be applied to.
|
|
508
|
+
* The default value is an 8th note. Value must be less
|
|
509
|
+
* than a quarter note.
|
|
510
|
+
*/
|
|
511
|
+
get swingSubdivision(): Subdivision {
|
|
512
|
+
return new TicksClass(this.context, this._swingTicks).toNotation();
|
|
513
|
+
}
|
|
514
|
+
set swingSubdivision(subdivision: Subdivision) {
|
|
515
|
+
this._swingTicks = this.toTicks(subdivision);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* The Transport's position in Bars:Beats:Sixteenths.
|
|
520
|
+
* Setting the value will jump to that position right away.
|
|
521
|
+
*/
|
|
522
|
+
get position(): BarsBeatsSixteenths | Time {
|
|
523
|
+
const now = this.now();
|
|
524
|
+
const ticks = this._clock.getTicksAtTime(now);
|
|
525
|
+
return new TicksClass(this.context, ticks).toBarsBeatsSixteenths();
|
|
526
|
+
}
|
|
527
|
+
set position(progress: Time) {
|
|
528
|
+
const ticks = this.toTicks(progress);
|
|
529
|
+
this.ticks = ticks;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* The Transport's position in seconds
|
|
534
|
+
* Setting the value will jump to that position right away.
|
|
535
|
+
*/
|
|
536
|
+
get seconds(): Seconds {
|
|
537
|
+
return this._clock.seconds;
|
|
538
|
+
}
|
|
539
|
+
set seconds(s: Seconds) {
|
|
540
|
+
const now = this.now();
|
|
541
|
+
const ticks = this._clock.frequency.timeToTicks(s, now);
|
|
542
|
+
this.ticks = ticks;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* The Transport's loop position as a normalized value. Always
|
|
547
|
+
* returns 0 if the transport if loop is not true.
|
|
548
|
+
*/
|
|
549
|
+
get progress(): NormalRange {
|
|
550
|
+
if (this.loop) {
|
|
551
|
+
const now = this.now();
|
|
552
|
+
const ticks = this._clock.getTicksAtTime(now);
|
|
553
|
+
return (ticks - this._loopStart) / (this._loopEnd - this._loopStart);
|
|
554
|
+
} else {
|
|
555
|
+
return 0;
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* The transports current tick position.
|
|
561
|
+
*/
|
|
562
|
+
get ticks(): Ticks {
|
|
563
|
+
return this._clock.ticks;
|
|
564
|
+
}
|
|
565
|
+
set ticks(t: Ticks) {
|
|
566
|
+
if (this._clock.ticks !== t) {
|
|
567
|
+
const now = this.now();
|
|
568
|
+
// stop everything synced to the transport
|
|
569
|
+
if (this.state === "started") {
|
|
570
|
+
const ticks = this._clock.getTicksAtTime(now);
|
|
571
|
+
// schedule to start on the next tick, #573
|
|
572
|
+
const remainingTick = this._clock.frequency.getDurationOfTicks(Math.ceil(ticks) - ticks, now);
|
|
573
|
+
const time = now + remainingTick;
|
|
574
|
+
this.emit("stop", time);
|
|
575
|
+
this._clock.setTicksAtTime(t, time);
|
|
576
|
+
// restart it with the new time
|
|
577
|
+
this.emit("start", time, this._clock.getSecondsAtTime(time));
|
|
578
|
+
} else {
|
|
579
|
+
this.emit("ticks", now);
|
|
580
|
+
this._clock.setTicksAtTime(t, now);
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* Get the clock's ticks at the given time.
|
|
587
|
+
* @param time When to get the tick value
|
|
588
|
+
* @return The tick value at the given time.
|
|
589
|
+
*/
|
|
590
|
+
getTicksAtTime(time?: Time): Ticks {
|
|
591
|
+
return this._clock.getTicksAtTime(time);
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* Return the elapsed seconds at the given time.
|
|
596
|
+
* @param time When to get the elapsed seconds
|
|
597
|
+
* @return The number of elapsed seconds
|
|
598
|
+
*/
|
|
599
|
+
getSecondsAtTime(time: Time): Seconds {
|
|
600
|
+
return this._clock.getSecondsAtTime(time);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Pulses Per Quarter note. This is the smallest resolution
|
|
605
|
+
* the Transport timing supports. This should be set once
|
|
606
|
+
* on initialization and not set again. Changing this value
|
|
607
|
+
* after other objects have been created can cause problems.
|
|
608
|
+
*/
|
|
609
|
+
get PPQ(): number {
|
|
610
|
+
return this._clock.frequency.multiplier;
|
|
611
|
+
}
|
|
612
|
+
set PPQ(ppq: number) {
|
|
613
|
+
this._clock.frequency.multiplier = ppq;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
//-------------------------------------
|
|
617
|
+
// SYNCING
|
|
618
|
+
//-------------------------------------
|
|
619
|
+
|
|
620
|
+
/**
|
|
621
|
+
* Returns the time aligned to the next subdivision
|
|
622
|
+
* of the Transport. If the Transport is not started,
|
|
623
|
+
* it will return 0.
|
|
624
|
+
* Note: this will not work precisely during tempo ramps.
|
|
625
|
+
* @param subdivision The subdivision to quantize to
|
|
626
|
+
* @return The context time of the next subdivision.
|
|
627
|
+
* @example
|
|
628
|
+
* // the transport must be started, otherwise returns 0
|
|
629
|
+
* Tone.Transport.start();
|
|
630
|
+
* Tone.Transport.nextSubdivision("4n");
|
|
631
|
+
*/
|
|
632
|
+
nextSubdivision(subdivision?: Time): Seconds {
|
|
633
|
+
subdivision = this.toTicks(subdivision);
|
|
634
|
+
if (this.state !== "started") {
|
|
635
|
+
// if the transport's not started, return 0
|
|
636
|
+
return 0;
|
|
637
|
+
} else {
|
|
638
|
+
const now = this.now();
|
|
639
|
+
// the remainder of the current ticks and the subdivision
|
|
640
|
+
const transportPos = this.getTicksAtTime(now);
|
|
641
|
+
const remainingTicks = subdivision - transportPos % subdivision;
|
|
642
|
+
return this._clock.nextTickTime(remainingTicks, now);
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
/**
|
|
647
|
+
* Attaches the signal to the tempo control signal so that
|
|
648
|
+
* any changes in the tempo will change the signal in the same
|
|
649
|
+
* ratio.
|
|
650
|
+
*
|
|
651
|
+
* @param signal
|
|
652
|
+
* @param ratio Optionally pass in the ratio between the two signals.
|
|
653
|
+
* Otherwise it will be computed based on their current values.
|
|
654
|
+
*/
|
|
655
|
+
syncSignal(signal: Signal<any>, ratio?: number): this {
|
|
656
|
+
if (!ratio) {
|
|
657
|
+
// get the sync ratio
|
|
658
|
+
const now = this.now();
|
|
659
|
+
if (signal.getValueAtTime(now) !== 0) {
|
|
660
|
+
const bpm = this.bpm.getValueAtTime(now);
|
|
661
|
+
const computedFreq = 1 / (60 / bpm / this.PPQ);
|
|
662
|
+
ratio = signal.getValueAtTime(now) / computedFreq;
|
|
663
|
+
} else {
|
|
664
|
+
ratio = 0;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
const ratioSignal = new Gain(ratio);
|
|
668
|
+
// @ts-ignore
|
|
669
|
+
this.bpm.connect(ratioSignal);
|
|
670
|
+
// @ts-ignore
|
|
671
|
+
ratioSignal.connect(signal._param);
|
|
672
|
+
this._syncedSignals.push({
|
|
673
|
+
initial: signal.value,
|
|
674
|
+
ratio: ratioSignal,
|
|
675
|
+
signal,
|
|
676
|
+
});
|
|
677
|
+
signal.value = 0;
|
|
678
|
+
return this;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* Unsyncs a previously synced signal from the transport's control.
|
|
683
|
+
* See Transport.syncSignal.
|
|
684
|
+
*/
|
|
685
|
+
unsyncSignal(signal: Signal<any>): this {
|
|
686
|
+
for (let i = this._syncedSignals.length - 1; i >= 0; i--) {
|
|
687
|
+
const syncedSignal = this._syncedSignals[i];
|
|
688
|
+
if (syncedSignal.signal === signal) {
|
|
689
|
+
syncedSignal.ratio.dispose();
|
|
690
|
+
syncedSignal.signal.value = syncedSignal.initial;
|
|
691
|
+
this._syncedSignals.splice(i, 1);
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
return this;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* Clean up.
|
|
699
|
+
*/
|
|
700
|
+
dispose(): this {
|
|
701
|
+
super.dispose();
|
|
702
|
+
this._clock.dispose();
|
|
703
|
+
writable(this, "bpm");
|
|
704
|
+
this._timeline.dispose();
|
|
705
|
+
this._repeatedEvents.dispose();
|
|
706
|
+
return this;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
//-------------------------------------
|
|
710
|
+
// EMITTER MIXIN TO SATISFY COMPILER
|
|
711
|
+
//-------------------------------------
|
|
712
|
+
|
|
713
|
+
on!: (event: TransportEventNames, callback: (...args: any[]) => void) => this;
|
|
714
|
+
once!: (event: TransportEventNames, callback: (...args: any[]) => void) => this;
|
|
715
|
+
off!: (event: TransportEventNames, callback?: ((...args: any[]) => void) | undefined) => this;
|
|
716
|
+
emit!: (event: any, ...args: any[]) => this;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
Emitter.mixin(Transport);
|
|
720
|
+
|
|
721
|
+
//-------------------------------------
|
|
722
|
+
// INITIALIZATION
|
|
723
|
+
//-------------------------------------
|
|
724
|
+
|
|
725
|
+
onContextInit(context => {
|
|
726
|
+
context.transport = new Transport({ context });
|
|
727
|
+
});
|
|
728
|
+
|
|
729
|
+
onContextClose(context => {
|
|
730
|
+
context.transport.dispose();
|
|
731
|
+
});
|