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.
Files changed (887) hide show
  1. package/CHANGELOG.md +313 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +255 -0
  4. package/Tone/classes.ts +7 -0
  5. package/Tone/component/analysis/Analyser.test.ts +78 -0
  6. package/Tone/component/analysis/Analyser.ts +168 -0
  7. package/Tone/component/analysis/DCMeter.test.ts +34 -0
  8. package/Tone/component/analysis/DCMeter.ts +38 -0
  9. package/Tone/component/analysis/FFT.test.ts +83 -0
  10. package/Tone/component/analysis/FFT.ts +92 -0
  11. package/Tone/component/analysis/Follower.test.ts +111 -0
  12. package/Tone/component/analysis/Follower.ts +85 -0
  13. package/Tone/component/analysis/Meter.test.ts +91 -0
  14. package/Tone/component/analysis/Meter.ts +123 -0
  15. package/Tone/component/analysis/MeterBase.ts +45 -0
  16. package/Tone/component/analysis/Waveform.test.ts +49 -0
  17. package/Tone/component/analysis/Waveform.ts +57 -0
  18. package/Tone/component/channel/Channel.test.ts +77 -0
  19. package/Tone/component/channel/Channel.ts +178 -0
  20. package/Tone/component/channel/CrossFade.test.ts +57 -0
  21. package/Tone/component/channel/CrossFade.ts +143 -0
  22. package/Tone/component/channel/Merge.test.ts +59 -0
  23. package/Tone/component/channel/Merge.ts +62 -0
  24. package/Tone/component/channel/MidSideMerge.test.ts +28 -0
  25. package/Tone/component/channel/MidSideMerge.ts +105 -0
  26. package/Tone/component/channel/MidSideSplit.test.ts +79 -0
  27. package/Tone/component/channel/MidSideSplit.ts +90 -0
  28. package/Tone/component/channel/Mono.test.ts +43 -0
  29. package/Tone/component/channel/Mono.ts +55 -0
  30. package/Tone/component/channel/MultibandSplit.test.ts +66 -0
  31. package/Tone/component/channel/MultibandSplit.ts +166 -0
  32. package/Tone/component/channel/PanVol.test.ts +58 -0
  33. package/Tone/component/channel/PanVol.ts +110 -0
  34. package/Tone/component/channel/Panner.test.ts +86 -0
  35. package/Tone/component/channel/Panner.ts +89 -0
  36. package/Tone/component/channel/Panner3D.test.ts +77 -0
  37. package/Tone/component/channel/Panner3D.ts +234 -0
  38. package/Tone/component/channel/Recorder.test.ts +119 -0
  39. package/Tone/component/channel/Recorder.ts +162 -0
  40. package/Tone/component/channel/Solo.test.ts +138 -0
  41. package/Tone/component/channel/Solo.ts +148 -0
  42. package/Tone/component/channel/Split.test.ts +62 -0
  43. package/Tone/component/channel/Split.ts +51 -0
  44. package/Tone/component/channel/Volume.test.ts +129 -0
  45. package/Tone/component/channel/Volume.ts +109 -0
  46. package/Tone/component/dynamics/Compressor.test.ts +85 -0
  47. package/Tone/component/dynamics/Compressor.ts +163 -0
  48. package/Tone/component/dynamics/Gate.test.ts +72 -0
  49. package/Tone/component/dynamics/Gate.ts +110 -0
  50. package/Tone/component/dynamics/Limiter.test.ts +43 -0
  51. package/Tone/component/dynamics/Limiter.ts +78 -0
  52. package/Tone/component/dynamics/MidSideCompressor.test.ts +59 -0
  53. package/Tone/component/dynamics/MidSideCompressor.ts +87 -0
  54. package/Tone/component/dynamics/MultibandCompressor.test.ts +54 -0
  55. package/Tone/component/dynamics/MultibandCompressor.ts +130 -0
  56. package/Tone/component/envelope/AmplitudeEnvelope.test.ts +92 -0
  57. package/Tone/component/envelope/AmplitudeEnvelope.ts +65 -0
  58. package/Tone/component/envelope/Envelope.test.ts +834 -0
  59. package/Tone/component/envelope/Envelope.ts +623 -0
  60. package/Tone/component/envelope/FrequencyEnvelope.test.ts +92 -0
  61. package/Tone/component/envelope/FrequencyEnvelope.ts +134 -0
  62. package/Tone/component/filter/BiquadFilter.test.ts +94 -0
  63. package/Tone/component/filter/BiquadFilter.ts +158 -0
  64. package/Tone/component/filter/Convolver.test.ts +106 -0
  65. package/Tone/component/filter/Convolver.ts +134 -0
  66. package/Tone/component/filter/EQ3.test.ts +60 -0
  67. package/Tone/component/filter/EQ3.ts +163 -0
  68. package/Tone/component/filter/FeedbackCombFilter.test.ts +80 -0
  69. package/Tone/component/filter/FeedbackCombFilter.ts +105 -0
  70. package/Tone/component/filter/FeedbackCombFilter.worklet.ts +39 -0
  71. package/Tone/component/filter/Filter.test.ts +114 -0
  72. package/Tone/component/filter/Filter.ts +202 -0
  73. package/Tone/component/filter/LowpassCombFilter.test.ts +75 -0
  74. package/Tone/component/filter/LowpassCombFilter.ts +100 -0
  75. package/Tone/component/filter/OnePoleFilter.test.ts +90 -0
  76. package/Tone/component/filter/OnePoleFilter.ts +146 -0
  77. package/Tone/component/filter/PhaseShiftAllpass.test.ts +71 -0
  78. package/Tone/component/filter/PhaseShiftAllpass.ts +81 -0
  79. package/Tone/component/index.ts +39 -0
  80. package/Tone/core/Global.ts +73 -0
  81. package/Tone/core/Tone.ts +107 -0
  82. package/Tone/core/clock/Clock.test.ts +663 -0
  83. package/Tone/core/clock/Clock.ts +317 -0
  84. package/Tone/core/clock/TickParam.test.ts +15 -0
  85. package/Tone/core/clock/TickParam.ts +271 -0
  86. package/Tone/core/clock/TickSignal.test.ts +455 -0
  87. package/Tone/core/clock/TickSignal.ts +94 -0
  88. package/Tone/core/clock/TickSource.test.ts +655 -0
  89. package/Tone/core/clock/TickSource.ts +338 -0
  90. package/Tone/core/clock/Ticker.test.ts +86 -0
  91. package/Tone/core/clock/Ticker.ts +149 -0
  92. package/Tone/core/clock/Transport.test.ts +972 -0
  93. package/Tone/core/clock/Transport.ts +731 -0
  94. package/Tone/core/clock/TransportEvent.test.ts +45 -0
  95. package/Tone/core/clock/TransportEvent.ts +105 -0
  96. package/Tone/core/clock/TransportRepeatEvent.test.ts +43 -0
  97. package/Tone/core/clock/TransportRepeatEvent.ts +150 -0
  98. package/Tone/core/context/AbstractParam.ts +260 -0
  99. package/Tone/core/context/AudioContext.ts +60 -0
  100. package/Tone/core/context/BaseContext.ts +162 -0
  101. package/Tone/core/context/Context.test.ts +358 -0
  102. package/Tone/core/context/Context.ts +628 -0
  103. package/Tone/core/context/ContextInitialization.ts +42 -0
  104. package/Tone/core/context/Delay.test.ts +105 -0
  105. package/Tone/core/context/Delay.ts +103 -0
  106. package/Tone/core/context/Destination.test.ts +76 -0
  107. package/Tone/core/context/Destination.ts +128 -0
  108. package/Tone/core/context/DummyContext.test.ts +47 -0
  109. package/Tone/core/context/DummyContext.ts +201 -0
  110. package/Tone/core/context/Gain.test.ts +75 -0
  111. package/Tone/core/context/Gain.ts +90 -0
  112. package/Tone/core/context/Listener.test.ts +22 -0
  113. package/Tone/core/context/Listener.ts +117 -0
  114. package/Tone/core/context/Offline.test.ts +79 -0
  115. package/Tone/core/context/Offline.ts +65 -0
  116. package/Tone/core/context/OfflineContext.test.ts +64 -0
  117. package/Tone/core/context/OfflineContext.ts +118 -0
  118. package/Tone/core/context/Param.test.ts +607 -0
  119. package/Tone/core/context/Param.ts +541 -0
  120. package/Tone/core/context/ToneAudioBuffer.test.ts +360 -0
  121. package/Tone/core/context/ToneAudioBuffer.ts +412 -0
  122. package/Tone/core/context/ToneAudioBuffers.test.ts +159 -0
  123. package/Tone/core/context/ToneAudioBuffers.ts +167 -0
  124. package/Tone/core/context/ToneAudioNode.test.ts +345 -0
  125. package/Tone/core/context/ToneAudioNode.ts +396 -0
  126. package/Tone/core/context/ToneWithContext.ts +205 -0
  127. package/Tone/core/index.ts +38 -0
  128. package/Tone/core/type/Conversions.test.ts +34 -0
  129. package/Tone/core/type/Conversions.ts +78 -0
  130. package/Tone/core/type/Frequency.test.ts +220 -0
  131. package/Tone/core/type/Frequency.ts +249 -0
  132. package/Tone/core/type/Midi.test.ts +137 -0
  133. package/Tone/core/type/Midi.ts +82 -0
  134. package/Tone/core/type/NoteUnits.ts +36 -0
  135. package/Tone/core/type/Ticks.test.ts +190 -0
  136. package/Tone/core/type/Ticks.ts +69 -0
  137. package/Tone/core/type/Time.test.ts +181 -0
  138. package/Tone/core/type/Time.ts +156 -0
  139. package/Tone/core/type/TimeBase.ts +324 -0
  140. package/Tone/core/type/TransportTime.test.ts +184 -0
  141. package/Tone/core/type/TransportTime.ts +34 -0
  142. package/Tone/core/type/Units.ts +204 -0
  143. package/Tone/core/util/AdvancedTypeCheck.ts +40 -0
  144. package/Tone/core/util/Debug.test.ts +74 -0
  145. package/Tone/core/util/Debug.ts +63 -0
  146. package/Tone/core/util/Decorator.ts +51 -0
  147. package/Tone/core/util/Defaults.ts +123 -0
  148. package/Tone/core/util/Draw.test.ts +72 -0
  149. package/Tone/core/util/Draw.ts +125 -0
  150. package/Tone/core/util/Emitter.test.ts +109 -0
  151. package/Tone/core/util/Emitter.ts +125 -0
  152. package/Tone/core/util/Interface.ts +45 -0
  153. package/Tone/core/util/IntervalTimeline.test.ts +465 -0
  154. package/Tone/core/util/IntervalTimeline.ts +569 -0
  155. package/Tone/core/util/Math.ts +40 -0
  156. package/Tone/core/util/StateTimeline.test.ts +103 -0
  157. package/Tone/core/util/StateTimeline.ts +96 -0
  158. package/Tone/core/util/Timeline.test.ts +606 -0
  159. package/Tone/core/util/Timeline.ts +399 -0
  160. package/Tone/core/util/TimelineValue.test.ts +29 -0
  161. package/Tone/core/util/TimelineValue.ts +56 -0
  162. package/Tone/core/util/TypeCheck.ts +65 -0
  163. package/Tone/core/util/global.d.ts +7 -0
  164. package/Tone/core/worklet/DelayLine.worklet.ts +49 -0
  165. package/Tone/core/worklet/SingleIOProcessor.worklet.ts +73 -0
  166. package/Tone/core/worklet/ToneAudioWorklet.ts +76 -0
  167. package/Tone/core/worklet/ToneAudioWorkletProcessor.worklet.ts +35 -0
  168. package/Tone/core/worklet/WorkletGlobalScope.ts +26 -0
  169. package/Tone/effect/AutoFilter.test.ts +113 -0
  170. package/Tone/effect/AutoFilter.ts +102 -0
  171. package/Tone/effect/AutoPanner.test.ts +90 -0
  172. package/Tone/effect/AutoPanner.ts +63 -0
  173. package/Tone/effect/AutoWah.test.ts +61 -0
  174. package/Tone/effect/AutoWah.ts +208 -0
  175. package/Tone/effect/BitCrusher.test.ts +42 -0
  176. package/Tone/effect/BitCrusher.ts +129 -0
  177. package/Tone/effect/BitCrusher.worklet.ts +27 -0
  178. package/Tone/effect/Chebyshev.test.ts +49 -0
  179. package/Tone/effect/Chebyshev.ts +123 -0
  180. package/Tone/effect/Chorus.test.ts +87 -0
  181. package/Tone/effect/Chorus.ts +225 -0
  182. package/Tone/effect/Distortion.test.ts +41 -0
  183. package/Tone/effect/Distortion.ts +98 -0
  184. package/Tone/effect/Effect.ts +88 -0
  185. package/Tone/effect/FeedbackDelay.test.ts +75 -0
  186. package/Tone/effect/FeedbackDelay.ts +73 -0
  187. package/Tone/effect/FeedbackEffect.ts +68 -0
  188. package/Tone/effect/Freeverb.test.ts +45 -0
  189. package/Tone/effect/Freeverb.ts +137 -0
  190. package/Tone/effect/FrequencyShifter.test.ts +55 -0
  191. package/Tone/effect/FrequencyShifter.ts +155 -0
  192. package/Tone/effect/JCReverb.test.ts +41 -0
  193. package/Tone/effect/JCReverb.ts +130 -0
  194. package/Tone/effect/LFOEffect.ts +115 -0
  195. package/Tone/effect/MidSideEffect.ts +93 -0
  196. package/Tone/effect/Phaser.test.ts +44 -0
  197. package/Tone/effect/Phaser.ts +187 -0
  198. package/Tone/effect/PingPongDelay.test.ts +41 -0
  199. package/Tone/effect/PingPongDelay.ts +105 -0
  200. package/Tone/effect/PitchShift.test.ts +66 -0
  201. package/Tone/effect/PitchShift.ts +218 -0
  202. package/Tone/effect/Reverb.test.ts +75 -0
  203. package/Tone/effect/Reverb.ts +145 -0
  204. package/Tone/effect/StereoEffect.ts +99 -0
  205. package/Tone/effect/StereoFeedbackEffect.ts +91 -0
  206. package/Tone/effect/StereoWidener.test.ts +41 -0
  207. package/Tone/effect/StereoWidener.ts +112 -0
  208. package/Tone/effect/StereoXFeedbackEffect.ts +37 -0
  209. package/Tone/effect/Tremolo.test.ts +88 -0
  210. package/Tone/effect/Tremolo.ts +191 -0
  211. package/Tone/effect/Vibrato.test.ts +52 -0
  212. package/Tone/effect/Vibrato.ts +104 -0
  213. package/Tone/effect/index.ts +18 -0
  214. package/Tone/event/Loop.test.ts +334 -0
  215. package/Tone/event/Loop.ts +210 -0
  216. package/Tone/event/Part.test.ts +848 -0
  217. package/Tone/event/Part.ts +473 -0
  218. package/Tone/event/Pattern.test.ts +137 -0
  219. package/Tone/event/Pattern.ts +121 -0
  220. package/Tone/event/PatternGenerator.test.ts +95 -0
  221. package/Tone/event/PatternGenerator.ts +176 -0
  222. package/Tone/event/Sequence.test.ts +453 -0
  223. package/Tone/event/Sequence.ts +300 -0
  224. package/Tone/event/ToneEvent.test.ts +485 -0
  225. package/Tone/event/ToneEvent.ts +392 -0
  226. package/Tone/event/index.ts +5 -0
  227. package/Tone/fromContext.test.ts +29 -0
  228. package/Tone/fromContext.ts +77 -0
  229. package/Tone/index.test.ts +54 -0
  230. package/Tone/index.ts +116 -0
  231. package/Tone/instrument/AMSynth.test.ts +79 -0
  232. package/Tone/instrument/AMSynth.ts +51 -0
  233. package/Tone/instrument/DuoSynth.test.ts +95 -0
  234. package/Tone/instrument/DuoSynth.ts +216 -0
  235. package/Tone/instrument/FMSynth.test.ts +72 -0
  236. package/Tone/instrument/FMSynth.ts +65 -0
  237. package/Tone/instrument/Instrument.ts +180 -0
  238. package/Tone/instrument/MembraneSynth.test.ts +74 -0
  239. package/Tone/instrument/MembraneSynth.ts +96 -0
  240. package/Tone/instrument/MetalSynth.test.ts +66 -0
  241. package/Tone/instrument/MetalSynth.ts +272 -0
  242. package/Tone/instrument/ModulationSynth.ts +217 -0
  243. package/Tone/instrument/MonoSynth.test.ts +88 -0
  244. package/Tone/instrument/MonoSynth.ts +177 -0
  245. package/Tone/instrument/Monophonic.ts +135 -0
  246. package/Tone/instrument/NoiseSynth.test.ts +82 -0
  247. package/Tone/instrument/NoiseSynth.ts +127 -0
  248. package/Tone/instrument/PluckSynth.test.ts +62 -0
  249. package/Tone/instrument/PluckSynth.ts +127 -0
  250. package/Tone/instrument/PolySynth.test.ts +298 -0
  251. package/Tone/instrument/PolySynth.ts +393 -0
  252. package/Tone/instrument/Sampler.test.ts +275 -0
  253. package/Tone/instrument/Sampler.ts +329 -0
  254. package/Tone/instrument/Synth.test.ts +132 -0
  255. package/Tone/instrument/Synth.ts +141 -0
  256. package/Tone/instrument/index.ts +11 -0
  257. package/Tone/signal/Abs.test.ts +42 -0
  258. package/Tone/signal/Abs.ts +53 -0
  259. package/Tone/signal/Add.test.ts +60 -0
  260. package/Tone/signal/Add.ts +63 -0
  261. package/Tone/signal/AudioToGain.test.ts +53 -0
  262. package/Tone/signal/AudioToGain.ts +40 -0
  263. package/Tone/signal/GainToAudio.test.ts +41 -0
  264. package/Tone/signal/GainToAudio.ts +40 -0
  265. package/Tone/signal/GreaterThan.test.ts +81 -0
  266. package/Tone/signal/GreaterThan.ts +88 -0
  267. package/Tone/signal/GreaterThanZero.test.ts +49 -0
  268. package/Tone/signal/GreaterThanZero.ts +67 -0
  269. package/Tone/signal/Multiply.test.ts +46 -0
  270. package/Tone/signal/Multiply.ts +85 -0
  271. package/Tone/signal/Negate.test.ts +30 -0
  272. package/Tone/signal/Negate.ts +41 -0
  273. package/Tone/signal/Pow.test.ts +40 -0
  274. package/Tone/signal/Pow.ts +84 -0
  275. package/Tone/signal/Scale.test.ts +58 -0
  276. package/Tone/signal/Scale.ts +119 -0
  277. package/Tone/signal/ScaleExp.test.ts +49 -0
  278. package/Tone/signal/ScaleExp.ts +69 -0
  279. package/Tone/signal/Signal.test.ts +519 -0
  280. package/Tone/signal/Signal.ts +226 -0
  281. package/Tone/signal/SignalOperator.ts +21 -0
  282. package/Tone/signal/Subtract.test.ts +60 -0
  283. package/Tone/signal/Subtract.ts +74 -0
  284. package/Tone/signal/SyncedSignal.test.ts +245 -0
  285. package/Tone/signal/SyncedSignal.ts +172 -0
  286. package/Tone/signal/ToneConstantSource.test.ts +202 -0
  287. package/Tone/signal/ToneConstantSource.ts +90 -0
  288. package/Tone/signal/WaveShaper.test.ts +95 -0
  289. package/Tone/signal/WaveShaper.ts +136 -0
  290. package/Tone/signal/Zero.test.ts +25 -0
  291. package/Tone/signal/Zero.ts +45 -0
  292. package/Tone/signal/index.ts +16 -0
  293. package/Tone/source/Noise.test.ts +121 -0
  294. package/Tone/source/Noise.ts +287 -0
  295. package/Tone/source/OneShotSource.ts +260 -0
  296. package/Tone/source/Source.test.ts +408 -0
  297. package/Tone/source/Source.ts +339 -0
  298. package/Tone/source/UserMedia.test.ts +177 -0
  299. package/Tone/source/UserMedia.ts +260 -0
  300. package/Tone/source/buffer/GrainPlayer.test.ts +235 -0
  301. package/Tone/source/buffer/GrainPlayer.ts +322 -0
  302. package/Tone/source/buffer/Player.test.ts +651 -0
  303. package/Tone/source/buffer/Player.ts +440 -0
  304. package/Tone/source/buffer/Players.test.ts +288 -0
  305. package/Tone/source/buffer/Players.ts +235 -0
  306. package/Tone/source/buffer/ToneBufferSource.test.ts +578 -0
  307. package/Tone/source/buffer/ToneBufferSource.ts +253 -0
  308. package/Tone/source/index.ts +15 -0
  309. package/Tone/source/oscillator/AMOscillator.test.ts +69 -0
  310. package/Tone/source/oscillator/AMOscillator.ts +222 -0
  311. package/Tone/source/oscillator/FMOscillator.test.ts +85 -0
  312. package/Tone/source/oscillator/FMOscillator.ts +236 -0
  313. package/Tone/source/oscillator/FatOscillator.test.ts +91 -0
  314. package/Tone/source/oscillator/FatOscillator.ts +255 -0
  315. package/Tone/source/oscillator/LFO.test.ts +234 -0
  316. package/Tone/source/oscillator/LFO.ts +332 -0
  317. package/Tone/source/oscillator/OmniOscillator.test.ts +303 -0
  318. package/Tone/source/oscillator/OmniOscillator.ts +428 -0
  319. package/Tone/source/oscillator/Oscillator.test.ts +278 -0
  320. package/Tone/source/oscillator/Oscillator.ts +448 -0
  321. package/Tone/source/oscillator/OscillatorInterface.ts +462 -0
  322. package/Tone/source/oscillator/PWMOscillator.test.ts +49 -0
  323. package/Tone/source/oscillator/PWMOscillator.ts +190 -0
  324. package/Tone/source/oscillator/PulseOscillator.test.ts +126 -0
  325. package/Tone/source/oscillator/PulseOscillator.ts +225 -0
  326. package/Tone/source/oscillator/ToneOscillatorNode.test.ts +241 -0
  327. package/Tone/source/oscillator/ToneOscillatorNode.ts +131 -0
  328. package/Tone/version.ts +1 -0
  329. package/build/Tone.js +22 -0
  330. package/build/Tone.js.map +1 -0
  331. package/build/esm/classes.d.ts +7 -0
  332. package/build/esm/classes.js +8 -0
  333. package/build/esm/classes.js.map +1 -0
  334. package/build/esm/component/analysis/Analyser.d.ts +77 -0
  335. package/build/esm/component/analysis/Analyser.js +121 -0
  336. package/build/esm/component/analysis/Analyser.js.map +1 -0
  337. package/build/esm/component/analysis/DCMeter.d.ts +23 -0
  338. package/build/esm/component/analysis/DCMeter.js +31 -0
  339. package/build/esm/component/analysis/DCMeter.js.map +1 -0
  340. package/build/esm/component/analysis/FFT.d.ts +50 -0
  341. package/build/esm/component/analysis/FFT.js +65 -0
  342. package/build/esm/component/analysis/FFT.js.map +1 -0
  343. package/build/esm/component/analysis/Follower.d.ts +44 -0
  344. package/build/esm/component/analysis/Follower.js +51 -0
  345. package/build/esm/component/analysis/Follower.js.map +1 -0
  346. package/build/esm/component/analysis/Meter.d.ts +62 -0
  347. package/build/esm/component/analysis/Meter.js +90 -0
  348. package/build/esm/component/analysis/Meter.js.map +1 -0
  349. package/build/esm/component/analysis/MeterBase.d.ts +23 -0
  350. package/build/esm/component/analysis/MeterBase.js +23 -0
  351. package/build/esm/component/analysis/MeterBase.js.map +1 -0
  352. package/build/esm/component/analysis/Waveform.d.ts +32 -0
  353. package/build/esm/component/analysis/Waveform.js +38 -0
  354. package/build/esm/component/analysis/Waveform.js.map +1 -0
  355. package/build/esm/component/channel/Channel.d.ts +91 -0
  356. package/build/esm/component/channel/Channel.js +124 -0
  357. package/build/esm/component/channel/Channel.js.map +1 -0
  358. package/build/esm/component/channel/CrossFade.d.ts +80 -0
  359. package/build/esm/component/channel/CrossFade.js +106 -0
  360. package/build/esm/component/channel/CrossFade.js.map +1 -0
  361. package/build/esm/component/channel/Merge.d.ts +39 -0
  362. package/build/esm/component/channel/Merge.js +32 -0
  363. package/build/esm/component/channel/Merge.js.map +1 -0
  364. package/build/esm/component/channel/MidSideMerge.d.ts +52 -0
  365. package/build/esm/component/channel/MidSideMerge.js +53 -0
  366. package/build/esm/component/channel/MidSideMerge.js.map +1 -0
  367. package/build/esm/component/channel/MidSideSplit.d.ts +42 -0
  368. package/build/esm/component/channel/MidSideSplit.js +51 -0
  369. package/build/esm/component/channel/MidSideSplit.js.map +1 -0
  370. package/build/esm/component/channel/Mono.d.ts +26 -0
  371. package/build/esm/component/channel/Mono.js +30 -0
  372. package/build/esm/component/channel/Mono.js.map +1 -0
  373. package/build/esm/component/channel/MultibandSplit.d.ts +80 -0
  374. package/build/esm/component/channel/MultibandSplit.js +121 -0
  375. package/build/esm/component/channel/MultibandSplit.js.map +1 -0
  376. package/build/esm/component/channel/PanVol.d.ts +53 -0
  377. package/build/esm/component/channel/PanVol.js +61 -0
  378. package/build/esm/component/channel/PanVol.js.map +1 -0
  379. package/build/esm/component/channel/Panner.d.ts +49 -0
  380. package/build/esm/component/channel/Panner.js +55 -0
  381. package/build/esm/component/channel/Panner.js.map +1 -0
  382. package/build/esm/component/channel/Panner3D.d.ts +98 -0
  383. package/build/esm/component/channel/Panner3D.js +177 -0
  384. package/build/esm/component/channel/Panner3D.js.map +1 -0
  385. package/build/esm/component/channel/Recorder.d.ts +77 -0
  386. package/build/esm/component/channel/Recorder.js +131 -0
  387. package/build/esm/component/channel/Recorder.js.map +1 -0
  388. package/build/esm/component/channel/Solo.d.ts +68 -0
  389. package/build/esm/component/channel/Solo.js +121 -0
  390. package/build/esm/component/channel/Solo.js.map +1 -0
  391. package/build/esm/component/channel/Split.d.ts +29 -0
  392. package/build/esm/component/channel/Split.js +30 -0
  393. package/build/esm/component/channel/Split.js.map +1 -0
  394. package/build/esm/component/channel/Volume.d.ts +60 -0
  395. package/build/esm/component/channel/Volume.js +66 -0
  396. package/build/esm/component/channel/Volume.js.map +1 -0
  397. package/build/esm/component/dynamics/Compressor.d.ts +73 -0
  398. package/build/esm/component/dynamics/Compressor.js +99 -0
  399. package/build/esm/component/dynamics/Compressor.js.map +1 -0
  400. package/build/esm/component/dynamics/Gate.d.ts +53 -0
  401. package/build/esm/component/dynamics/Gate.js +72 -0
  402. package/build/esm/component/dynamics/Gate.js.map +1 -0
  403. package/build/esm/component/dynamics/Limiter.d.ts +39 -0
  404. package/build/esm/component/dynamics/Limiter.js +51 -0
  405. package/build/esm/component/dynamics/Limiter.js.map +1 -0
  406. package/build/esm/component/dynamics/MidSideCompressor.d.ts +36 -0
  407. package/build/esm/component/dynamics/MidSideCompressor.js +52 -0
  408. package/build/esm/component/dynamics/MidSideCompressor.js.map +1 -0
  409. package/build/esm/component/dynamics/MultibandCompressor.d.ts +57 -0
  410. package/build/esm/component/dynamics/MultibandCompressor.js +79 -0
  411. package/build/esm/component/dynamics/MultibandCompressor.js.map +1 -0
  412. package/build/esm/component/envelope/AmplitudeEnvelope.d.ts +46 -0
  413. package/build/esm/component/envelope/AmplitudeEnvelope.js +49 -0
  414. package/build/esm/component/envelope/AmplitudeEnvelope.js.map +1 -0
  415. package/build/esm/component/envelope/Envelope.d.ts +302 -0
  416. package/build/esm/component/envelope/Envelope.js +470 -0
  417. package/build/esm/component/envelope/Envelope.js.map +1 -0
  418. package/build/esm/component/envelope/FrequencyEnvelope.d.ts +71 -0
  419. package/build/esm/component/envelope/FrequencyEnvelope.js +91 -0
  420. package/build/esm/component/envelope/FrequencyEnvelope.js.map +1 -0
  421. package/build/esm/component/filter/BiquadFilter.d.ts +64 -0
  422. package/build/esm/component/filter/BiquadFilter.js +101 -0
  423. package/build/esm/component/filter/BiquadFilter.js.map +1 -0
  424. package/build/esm/component/filter/Convolver.d.ts +59 -0
  425. package/build/esm/component/filter/Convolver.js +104 -0
  426. package/build/esm/component/filter/Convolver.js.map +1 -0
  427. package/build/esm/component/filter/EQ3.d.ts +77 -0
  428. package/build/esm/component/filter/EQ3.js +81 -0
  429. package/build/esm/component/filter/EQ3.js.map +1 -0
  430. package/build/esm/component/filter/FeedbackCombFilter.d.ts +45 -0
  431. package/build/esm/component/filter/FeedbackCombFilter.js +72 -0
  432. package/build/esm/component/filter/FeedbackCombFilter.js.map +1 -0
  433. package/build/esm/component/filter/FeedbackCombFilter.worklet.d.ts +3 -0
  434. package/build/esm/component/filter/FeedbackCombFilter.worklet.js +37 -0
  435. package/build/esm/component/filter/FeedbackCombFilter.worklet.js.map +1 -0
  436. package/build/esm/component/filter/Filter.d.ts +79 -0
  437. package/build/esm/component/filter/Filter.js +150 -0
  438. package/build/esm/component/filter/Filter.js.map +1 -0
  439. package/build/esm/component/filter/LowpassCombFilter.d.ts +50 -0
  440. package/build/esm/component/filter/LowpassCombFilter.js +53 -0
  441. package/build/esm/component/filter/LowpassCombFilter.js.map +1 -0
  442. package/build/esm/component/filter/OnePoleFilter.d.ts +64 -0
  443. package/build/esm/component/filter/OnePoleFilter.js +104 -0
  444. package/build/esm/component/filter/OnePoleFilter.js.map +1 -0
  445. package/build/esm/component/filter/PhaseShiftAllpass.d.ts +40 -0
  446. package/build/esm/component/filter/PhaseShiftAllpass.js +54 -0
  447. package/build/esm/component/filter/PhaseShiftAllpass.js.map +1 -0
  448. package/build/esm/component/index.d.ts +35 -0
  449. package/build/esm/component/index.js +36 -0
  450. package/build/esm/component/index.js.map +1 -0
  451. package/build/esm/core/Global.d.ts +26 -0
  452. package/build/esm/core/Global.js +69 -0
  453. package/build/esm/core/Global.js.map +1 -0
  454. package/build/esm/core/Tone.d.ts +60 -0
  455. package/build/esm/core/Tone.js +87 -0
  456. package/build/esm/core/Tone.js.map +1 -0
  457. package/build/esm/core/clock/Clock.d.ts +156 -0
  458. package/build/esm/core/clock/Clock.js +251 -0
  459. package/build/esm/core/clock/Clock.js.map +1 -0
  460. package/build/esm/core/clock/TickParam.d.ts +97 -0
  461. package/build/esm/core/clock/TickParam.js +237 -0
  462. package/build/esm/core/clock/TickParam.js.map +1 -0
  463. package/build/esm/core/clock/TickSignal.d.ts +43 -0
  464. package/build/esm/core/clock/TickSignal.js +64 -0
  465. package/build/esm/core/clock/TickSignal.js.map +1 -0
  466. package/build/esm/core/clock/TickSource.d.ts +115 -0
  467. package/build/esm/core/clock/TickSource.js +284 -0
  468. package/build/esm/core/clock/TickSource.js.map +1 -0
  469. package/build/esm/core/clock/Ticker.d.ts +59 -0
  470. package/build/esm/core/clock/Ticker.js +110 -0
  471. package/build/esm/core/clock/Ticker.js.map +1 -0
  472. package/build/esm/core/clock/Transport.d.ts +331 -0
  473. package/build/esm/core/clock/Transport.js +591 -0
  474. package/build/esm/core/clock/Transport.js.map +1 -0
  475. package/build/esm/core/clock/TransportEvent.d.ts +62 -0
  476. package/build/esm/core/clock/TransportEvent.js +66 -0
  477. package/build/esm/core/clock/TransportEvent.js.map +1 -0
  478. package/build/esm/core/clock/TransportRepeatEvent.d.ts +70 -0
  479. package/build/esm/core/clock/TransportRepeatEvent.js +110 -0
  480. package/build/esm/core/clock/TransportRepeatEvent.js.map +1 -0
  481. package/build/esm/core/context/AbstractParam.d.ts +239 -0
  482. package/build/esm/core/context/AbstractParam.js +6 -0
  483. package/build/esm/core/context/AbstractParam.js.map +1 -0
  484. package/build/esm/core/context/AudioContext.d.ts +36 -0
  485. package/build/esm/core/context/AudioContext.js +38 -0
  486. package/build/esm/core/context/AudioContext.js.map +1 -0
  487. package/build/esm/core/context/BaseContext.d.ts +56 -0
  488. package/build/esm/core/context/BaseContext.js +16 -0
  489. package/build/esm/core/context/BaseContext.js.map +1 -0
  490. package/build/esm/core/context/Context.d.ts +255 -0
  491. package/build/esm/core/context/Context.js +474 -0
  492. package/build/esm/core/context/Context.js.map +1 -0
  493. package/build/esm/core/context/ContextInitialization.d.ts +15 -0
  494. package/build/esm/core/context/ContextInitialization.js +35 -0
  495. package/build/esm/core/context/ContextInitialization.js.map +1 -0
  496. package/build/esm/core/context/Delay.d.ts +58 -0
  497. package/build/esm/core/context/Delay.js +58 -0
  498. package/build/esm/core/context/Delay.js.map +1 -0
  499. package/build/esm/core/context/Destination.d.ts +73 -0
  500. package/build/esm/core/context/Destination.js +105 -0
  501. package/build/esm/core/context/Destination.js.map +1 -0
  502. package/build/esm/core/context/DummyContext.d.ts +54 -0
  503. package/build/esm/core/context/DummyContext.js +138 -0
  504. package/build/esm/core/context/DummyContext.js.map +1 -0
  505. package/build/esm/core/context/Gain.d.ts +53 -0
  506. package/build/esm/core/context/Gain.js +58 -0
  507. package/build/esm/core/context/Gain.js.map +1 -0
  508. package/build/esm/core/context/Listener.d.ts +38 -0
  509. package/build/esm/core/context/Listener.js +87 -0
  510. package/build/esm/core/context/Listener.js.map +1 -0
  511. package/build/esm/core/context/Offline.d.ts +37 -0
  512. package/build/esm/core/context/Offline.js +56 -0
  513. package/build/esm/core/context/Offline.js.map +1 -0
  514. package/build/esm/core/context/OfflineContext.d.ts +58 -0
  515. package/build/esm/core/context/OfflineContext.js +87 -0
  516. package/build/esm/core/context/OfflineContext.js.map +1 -0
  517. package/build/esm/core/context/Param.d.ts +132 -0
  518. package/build/esm/core/context/Param.js +446 -0
  519. package/build/esm/core/context/Param.js.map +1 -0
  520. package/build/esm/core/context/ToneAudioBuffer.d.ts +162 -0
  521. package/build/esm/core/context/ToneAudioBuffer.js +364 -0
  522. package/build/esm/core/context/ToneAudioBuffer.js.map +1 -0
  523. package/build/esm/core/context/ToneAudioBuffers.d.ts +89 -0
  524. package/build/esm/core/context/ToneAudioBuffers.js +119 -0
  525. package/build/esm/core/context/ToneAudioBuffers.js.map +1 -0
  526. package/build/esm/core/context/ToneAudioNode.d.ts +173 -0
  527. package/build/esm/core/context/ToneAudioNode.js +342 -0
  528. package/build/esm/core/context/ToneAudioNode.js.map +1 -0
  529. package/build/esm/core/context/ToneWithContext.d.ts +108 -0
  530. package/build/esm/core/context/ToneWithContext.js +170 -0
  531. package/build/esm/core/context/ToneWithContext.js.map +1 -0
  532. package/build/esm/core/index.d.ts +28 -0
  533. package/build/esm/core/index.js +33 -0
  534. package/build/esm/core/index.js.map +1 -0
  535. package/build/esm/core/type/Conversions.d.ts +44 -0
  536. package/build/esm/core/type/Conversions.js +68 -0
  537. package/build/esm/core/type/Conversions.js.map +1 -0
  538. package/build/esm/core/type/Frequency.d.ts +101 -0
  539. package/build/esm/core/type/Frequency.js +225 -0
  540. package/build/esm/core/type/Frequency.js.map +1 -0
  541. package/build/esm/core/type/Midi.d.ts +53 -0
  542. package/build/esm/core/type/Midi.js +73 -0
  543. package/build/esm/core/type/Midi.js.map +1 -0
  544. package/build/esm/core/type/NoteUnits.d.ts +12 -0
  545. package/build/esm/core/type/NoteUnits.js +3 -0
  546. package/build/esm/core/type/NoteUnits.js.map +1 -0
  547. package/build/esm/core/type/Ticks.d.ts +44 -0
  548. package/build/esm/core/type/Ticks.js +61 -0
  549. package/build/esm/core/type/Ticks.js.map +1 -0
  550. package/build/esm/core/type/Time.d.ts +69 -0
  551. package/build/esm/core/type/Time.js +147 -0
  552. package/build/esm/core/type/Time.js.map +1 -0
  553. package/build/esm/core/type/TimeBase.d.ts +120 -0
  554. package/build/esm/core/type/TimeBase.js +251 -0
  555. package/build/esm/core/type/TimeBase.js.map +1 -0
  556. package/build/esm/core/type/TransportTime.d.ts +25 -0
  557. package/build/esm/core/type/TransportTime.js +32 -0
  558. package/build/esm/core/type/TransportTime.js.map +1 -0
  559. package/build/esm/core/type/Units.d.ts +176 -0
  560. package/build/esm/core/type/Units.js +2 -0
  561. package/build/esm/core/type/Units.js.map +1 -0
  562. package/build/esm/core/util/AdvancedTypeCheck.d.ts +21 -0
  563. package/build/esm/core/util/AdvancedTypeCheck.js +32 -0
  564. package/build/esm/core/util/AdvancedTypeCheck.js.map +1 -0
  565. package/build/esm/core/util/Debug.d.ts +34 -0
  566. package/build/esm/core/util/Debug.js +50 -0
  567. package/build/esm/core/util/Debug.js.map +1 -0
  568. package/build/esm/core/util/Decorator.d.ts +9 -0
  569. package/build/esm/core/util/Decorator.js +41 -0
  570. package/build/esm/core/util/Decorator.js.map +1 -0
  571. package/build/esm/core/util/Defaults.d.ts +32 -0
  572. package/build/esm/core/util/Defaults.js +99 -0
  573. package/build/esm/core/util/Defaults.js.map +1 -0
  574. package/build/esm/core/util/Draw.d.ts +67 -0
  575. package/build/esm/core/util/Draw.js +110 -0
  576. package/build/esm/core/util/Draw.js.map +1 -0
  577. package/build/esm/core/util/Emitter.d.ts +52 -0
  578. package/build/esm/core/util/Emitter.js +113 -0
  579. package/build/esm/core/util/Emitter.js.map +1 -0
  580. package/build/esm/core/util/Interface.d.ts +16 -0
  581. package/build/esm/core/util/Interface.js +32 -0
  582. package/build/esm/core/util/Interface.js.map +1 -0
  583. package/build/esm/core/util/IntervalTimeline.d.ts +106 -0
  584. package/build/esm/core/util/IntervalTimeline.js +539 -0
  585. package/build/esm/core/util/IntervalTimeline.js.map +1 -0
  586. package/build/esm/core/util/Math.d.ts +20 -0
  587. package/build/esm/core/util/Math.js +36 -0
  588. package/build/esm/core/util/Math.js.map +1 -0
  589. package/build/esm/core/util/StateTimeline.d.ts +47 -0
  590. package/build/esm/core/util/StateTimeline.js +78 -0
  591. package/build/esm/core/util/StateTimeline.js.map +1 -0
  592. package/build/esm/core/util/Timeline.d.ts +156 -0
  593. package/build/esm/core/util/Timeline.js +351 -0
  594. package/build/esm/core/util/Timeline.js.map +1 -0
  595. package/build/esm/core/util/TimelineValue.d.ts +28 -0
  596. package/build/esm/core/util/TimelineValue.js +41 -0
  597. package/build/esm/core/util/TimelineValue.js.map +1 -0
  598. package/build/esm/core/util/TypeCheck.d.ts +38 -0
  599. package/build/esm/core/util/TypeCheck.js +56 -0
  600. package/build/esm/core/util/TypeCheck.js.map +1 -0
  601. package/build/esm/core/worklet/DelayLine.worklet.d.ts +1 -0
  602. package/build/esm/core/worklet/DelayLine.worklet.js +48 -0
  603. package/build/esm/core/worklet/DelayLine.worklet.js.map +1 -0
  604. package/build/esm/core/worklet/SingleIOProcessor.worklet.d.ts +2 -0
  605. package/build/esm/core/worklet/SingleIOProcessor.worklet.js +72 -0
  606. package/build/esm/core/worklet/SingleIOProcessor.worklet.js.map +1 -0
  607. package/build/esm/core/worklet/ToneAudioWorklet.d.ts +35 -0
  608. package/build/esm/core/worklet/ToneAudioWorklet.js +40 -0
  609. package/build/esm/core/worklet/ToneAudioWorklet.js.map +1 -0
  610. package/build/esm/core/worklet/ToneAudioWorkletProcessor.worklet.d.ts +1 -0
  611. package/build/esm/core/worklet/ToneAudioWorkletProcessor.worklet.js +34 -0
  612. package/build/esm/core/worklet/ToneAudioWorkletProcessor.worklet.js.map +1 -0
  613. package/build/esm/core/worklet/WorkletGlobalScope.d.ts +12 -0
  614. package/build/esm/core/worklet/WorkletGlobalScope.js +24 -0
  615. package/build/esm/core/worklet/WorkletGlobalScope.js.map +1 -0
  616. package/build/esm/effect/AutoFilter.d.ts +51 -0
  617. package/build/esm/effect/AutoFilter.js +68 -0
  618. package/build/esm/effect/AutoFilter.js.map +1 -0
  619. package/build/esm/effect/AutoPanner.d.ts +31 -0
  620. package/build/esm/effect/AutoPanner.js +41 -0
  621. package/build/esm/effect/AutoPanner.js.map +1 -0
  622. package/build/esm/effect/AutoWah.d.ts +99 -0
  623. package/build/esm/effect/AutoWah.js +131 -0
  624. package/build/esm/effect/AutoWah.js.map +1 -0
  625. package/build/esm/effect/BitCrusher.d.ts +40 -0
  626. package/build/esm/effect/BitCrusher.js +85 -0
  627. package/build/esm/effect/BitCrusher.js.map +1 -0
  628. package/build/esm/effect/BitCrusher.worklet.d.ts +3 -0
  629. package/build/esm/effect/BitCrusher.worklet.js +25 -0
  630. package/build/esm/effect/BitCrusher.worklet.js.map +1 -0
  631. package/build/esm/effect/Chebyshev.d.ts +62 -0
  632. package/build/esm/effect/Chebyshev.js +95 -0
  633. package/build/esm/effect/Chebyshev.js.map +1 -0
  634. package/build/esm/effect/Chorus.d.ts +104 -0
  635. package/build/esm/effect/Chorus.js +157 -0
  636. package/build/esm/effect/Chorus.js.map +1 -0
  637. package/build/esm/effect/Distortion.d.ts +43 -0
  638. package/build/esm/effect/Distortion.js +69 -0
  639. package/build/esm/effect/Distortion.js.map +1 -0
  640. package/build/esm/effect/Effect.d.ts +49 -0
  641. package/build/esm/effect/Effect.js +70 -0
  642. package/build/esm/effect/Effect.js.map +1 -0
  643. package/build/esm/effect/FeedbackDelay.d.ts +37 -0
  644. package/build/esm/effect/FeedbackDelay.js +47 -0
  645. package/build/esm/effect/FeedbackDelay.js.map +1 -0
  646. package/build/esm/effect/FeedbackEffect.d.ts +34 -0
  647. package/build/esm/effect/FeedbackEffect.js +34 -0
  648. package/build/esm/effect/FeedbackEffect.js.map +1 -0
  649. package/build/esm/effect/Freeverb.d.ts +51 -0
  650. package/build/esm/effect/Freeverb.js +104 -0
  651. package/build/esm/effect/Freeverb.js.map +1 -0
  652. package/build/esm/effect/FrequencyShifter.d.ts +68 -0
  653. package/build/esm/effect/FrequencyShifter.js +88 -0
  654. package/build/esm/effect/FrequencyShifter.js.map +1 -0
  655. package/build/esm/effect/JCReverb.d.ts +46 -0
  656. package/build/esm/effect/JCReverb.js +97 -0
  657. package/build/esm/effect/JCReverb.js.map +1 -0
  658. package/build/esm/effect/LFOEffect.d.ts +58 -0
  659. package/build/esm/effect/LFOEffect.js +77 -0
  660. package/build/esm/effect/LFOEffect.js.map +1 -0
  661. package/build/esm/effect/MidSideEffect.d.ts +50 -0
  662. package/build/esm/effect/MidSideEffect.js +51 -0
  663. package/build/esm/effect/MidSideEffect.js.map +1 -0
  664. package/build/esm/effect/Phaser.d.ts +80 -0
  665. package/build/esm/effect/Phaser.js +119 -0
  666. package/build/esm/effect/Phaser.js.map +1 -0
  667. package/build/esm/effect/PingPongDelay.d.ts +48 -0
  668. package/build/esm/effect/PingPongDelay.js +66 -0
  669. package/build/esm/effect/PingPongDelay.js.map +1 -0
  670. package/build/esm/effect/PitchShift.d.ts +89 -0
  671. package/build/esm/effect/PitchShift.js +140 -0
  672. package/build/esm/effect/PitchShift.js.map +1 -0
  673. package/build/esm/effect/Reverb.d.ts +62 -0
  674. package/build/esm/effect/Reverb.js +111 -0
  675. package/build/esm/effect/Reverb.js.map +1 -0
  676. package/build/esm/effect/StereoEffect.d.ts +44 -0
  677. package/build/esm/effect/StereoEffect.js +61 -0
  678. package/build/esm/effect/StereoEffect.js.map +1 -0
  679. package/build/esm/effect/StereoFeedbackEffect.d.ts +39 -0
  680. package/build/esm/effect/StereoFeedbackEffect.js +49 -0
  681. package/build/esm/effect/StereoFeedbackEffect.js.map +1 -0
  682. package/build/esm/effect/StereoWidener.d.ts +50 -0
  683. package/build/esm/effect/StereoWidener.js +65 -0
  684. package/build/esm/effect/StereoWidener.js.map +1 -0
  685. package/build/esm/effect/StereoXFeedbackEffect.d.ts +21 -0
  686. package/build/esm/effect/StereoXFeedbackEffect.js +28 -0
  687. package/build/esm/effect/StereoXFeedbackEffect.js.map +1 -0
  688. package/build/esm/effect/Tremolo.d.ts +86 -0
  689. package/build/esm/effect/Tremolo.js +131 -0
  690. package/build/esm/effect/Tremolo.js.map +1 -0
  691. package/build/esm/effect/Vibrato.d.ts +48 -0
  692. package/build/esm/effect/Vibrato.js +61 -0
  693. package/build/esm/effect/Vibrato.js.map +1 -0
  694. package/build/esm/effect/index.d.ts +18 -0
  695. package/build/esm/effect/index.js +19 -0
  696. package/build/esm/effect/index.js.map +1 -0
  697. package/build/esm/event/Loop.d.ts +107 -0
  698. package/build/esm/event/Loop.js +164 -0
  699. package/build/esm/event/Loop.js.map +1 -0
  700. package/build/esm/event/Part.d.ts +193 -0
  701. package/build/esm/event/Part.js +401 -0
  702. package/build/esm/event/Part.js.map +1 -0
  703. package/build/esm/event/Pattern.d.ts +67 -0
  704. package/build/esm/event/Pattern.js +67 -0
  705. package/build/esm/event/Pattern.js.map +1 -0
  706. package/build/esm/event/PatternGenerator.d.ts +12 -0
  707. package/build/esm/event/PatternGenerator.js +165 -0
  708. package/build/esm/event/PatternGenerator.js.map +1 -0
  709. package/build/esm/event/Sequence.d.ts +127 -0
  710. package/build/esm/event/Sequence.js +247 -0
  711. package/build/esm/event/Sequence.js.map +1 -0
  712. package/build/esm/event/ToneEvent.d.ts +188 -0
  713. package/build/esm/event/ToneEvent.js +299 -0
  714. package/build/esm/event/ToneEvent.js.map +1 -0
  715. package/build/esm/event/index.d.ts +5 -0
  716. package/build/esm/event/index.js +6 -0
  717. package/build/esm/event/index.js.map +1 -0
  718. package/build/esm/fromContext.d.ts +26 -0
  719. package/build/esm/fromContext.js +41 -0
  720. package/build/esm/fromContext.js.map +1 -0
  721. package/build/esm/index.d.ts +86 -0
  722. package/build/esm/index.js +102 -0
  723. package/build/esm/index.js.map +1 -0
  724. package/build/esm/instrument/AMSynth.d.ts +25 -0
  725. package/build/esm/instrument/AMSynth.js +37 -0
  726. package/build/esm/instrument/AMSynth.js.map +1 -0
  727. package/build/esm/instrument/DuoSynth.d.ts +72 -0
  728. package/build/esm/instrument/DuoSynth.js +140 -0
  729. package/build/esm/instrument/DuoSynth.js.map +1 -0
  730. package/build/esm/instrument/FMSynth.d.ts +31 -0
  731. package/build/esm/instrument/FMSynth.js +45 -0
  732. package/build/esm/instrument/FMSynth.js.map +1 -0
  733. package/build/esm/instrument/Instrument.d.ts +100 -0
  734. package/build/esm/instrument/Instrument.js +127 -0
  735. package/build/esm/instrument/Instrument.js.map +1 -0
  736. package/build/esm/instrument/MembraneSynth.d.ts +47 -0
  737. package/build/esm/instrument/MembraneSynth.js +69 -0
  738. package/build/esm/instrument/MembraneSynth.js.map +1 -0
  739. package/build/esm/instrument/MetalSynth.d.ts +109 -0
  740. package/build/esm/instrument/MetalSynth.js +198 -0
  741. package/build/esm/instrument/MetalSynth.js.map +1 -0
  742. package/build/esm/instrument/ModulationSynth.d.ts +81 -0
  743. package/build/esm/instrument/ModulationSynth.js +122 -0
  744. package/build/esm/instrument/ModulationSynth.js.map +1 -0
  745. package/build/esm/instrument/MonoSynth.d.ts +76 -0
  746. package/build/esm/instrument/MonoSynth.js +113 -0
  747. package/build/esm/instrument/MonoSynth.js.map +1 -0
  748. package/build/esm/instrument/Monophonic.d.ts +82 -0
  749. package/build/esm/instrument/Monophonic.js +83 -0
  750. package/build/esm/instrument/Monophonic.js.map +1 -0
  751. package/build/esm/instrument/NoiseSynth.d.ts +51 -0
  752. package/build/esm/instrument/NoiseSynth.js +93 -0
  753. package/build/esm/instrument/NoiseSynth.js.map +1 -0
  754. package/build/esm/instrument/PluckSynth.d.ts +57 -0
  755. package/build/esm/instrument/PluckSynth.js +80 -0
  756. package/build/esm/instrument/PluckSynth.js.map +1 -0
  757. package/build/esm/instrument/PolySynth.d.ts +176 -0
  758. package/build/esm/instrument/PolySynth.js +302 -0
  759. package/build/esm/instrument/PolySynth.js.map +1 -0
  760. package/build/esm/instrument/Sampler.d.ts +126 -0
  761. package/build/esm/instrument/Sampler.js +259 -0
  762. package/build/esm/instrument/Sampler.js.map +1 -0
  763. package/build/esm/instrument/Synth.d.ts +65 -0
  764. package/build/esm/instrument/Synth.js +91 -0
  765. package/build/esm/instrument/Synth.js.map +1 -0
  766. package/build/esm/instrument/index.d.ts +11 -0
  767. package/build/esm/instrument/index.js +12 -0
  768. package/build/esm/instrument/index.js.map +1 -0
  769. package/build/esm/signal/Abs.d.ts +34 -0
  770. package/build/esm/signal/Abs.js +51 -0
  771. package/build/esm/signal/Abs.js.map +1 -0
  772. package/build/esm/signal/Add.d.ts +40 -0
  773. package/build/esm/signal/Add.js +49 -0
  774. package/build/esm/signal/Add.js.map +1 -0
  775. package/build/esm/signal/AudioToGain.d.ts +27 -0
  776. package/build/esm/signal/AudioToGain.js +37 -0
  777. package/build/esm/signal/AudioToGain.js.map +1 -0
  778. package/build/esm/signal/GainToAudio.d.ts +27 -0
  779. package/build/esm/signal/GainToAudio.js +37 -0
  780. package/build/esm/signal/GainToAudio.js.map +1 -0
  781. package/build/esm/signal/GreaterThan.d.ts +47 -0
  782. package/build/esm/signal/GreaterThan.js +46 -0
  783. package/build/esm/signal/GreaterThan.js.map +1 -0
  784. package/build/esm/signal/GreaterThanZero.d.ts +29 -0
  785. package/build/esm/signal/GreaterThanZero.js +45 -0
  786. package/build/esm/signal/GreaterThanZero.js.map +1 -0
  787. package/build/esm/signal/Multiply.d.ts +52 -0
  788. package/build/esm/signal/Multiply.js +51 -0
  789. package/build/esm/signal/Multiply.js.map +1 -0
  790. package/build/esm/signal/Negate.d.ts +29 -0
  791. package/build/esm/signal/Negate.js +39 -0
  792. package/build/esm/signal/Negate.js.map +1 -0
  793. package/build/esm/signal/Pow.d.ts +42 -0
  794. package/build/esm/signal/Pow.js +58 -0
  795. package/build/esm/signal/Pow.js.map +1 -0
  796. package/build/esm/signal/Scale.d.ts +62 -0
  797. package/build/esm/signal/Scale.js +73 -0
  798. package/build/esm/signal/Scale.js.map +1 -0
  799. package/build/esm/signal/ScaleExp.d.ts +37 -0
  800. package/build/esm/signal/ScaleExp.js +46 -0
  801. package/build/esm/signal/ScaleExp.js.map +1 -0
  802. package/build/esm/signal/Signal.d.ts +92 -0
  803. package/build/esm/signal/Signal.js +183 -0
  804. package/build/esm/signal/Signal.js.map +1 -0
  805. package/build/esm/signal/SignalOperator.d.ts +9 -0
  806. package/build/esm/signal/SignalOperator.js +16 -0
  807. package/build/esm/signal/SignalOperator.js.map +1 -0
  808. package/build/esm/signal/Subtract.d.ts +48 -0
  809. package/build/esm/signal/Subtract.js +58 -0
  810. package/build/esm/signal/Subtract.js.map +1 -0
  811. package/build/esm/signal/SyncedSignal.d.ts +53 -0
  812. package/build/esm/signal/SyncedSignal.js +124 -0
  813. package/build/esm/signal/SyncedSignal.js.map +1 -0
  814. package/build/esm/signal/ToneConstantSource.d.ts +39 -0
  815. package/build/esm/signal/ToneConstantSource.js +61 -0
  816. package/build/esm/signal/ToneConstantSource.js.map +1 -0
  817. package/build/esm/signal/WaveShaper.d.ts +81 -0
  818. package/build/esm/signal/WaveShaper.js +99 -0
  819. package/build/esm/signal/WaveShaper.js.map +1 -0
  820. package/build/esm/signal/Zero.d.ts +29 -0
  821. package/build/esm/signal/Zero.js +38 -0
  822. package/build/esm/signal/Zero.js.map +1 -0
  823. package/build/esm/signal/index.d.ts +16 -0
  824. package/build/esm/signal/index.js +17 -0
  825. package/build/esm/signal/index.js.map +1 -0
  826. package/build/esm/source/Noise.d.ts +96 -0
  827. package/build/esm/source/Noise.js +225 -0
  828. package/build/esm/source/Noise.js.map +1 -0
  829. package/build/esm/source/OneShotSource.d.ts +102 -0
  830. package/build/esm/source/OneShotSource.js +183 -0
  831. package/build/esm/source/OneShotSource.js.map +1 -0
  832. package/build/esm/source/Source.d.ts +155 -0
  833. package/build/esm/source/Source.js +281 -0
  834. package/build/esm/source/Source.js.map +1 -0
  835. package/build/esm/source/UserMedia.d.ts +123 -0
  836. package/build/esm/source/UserMedia.js +214 -0
  837. package/build/esm/source/UserMedia.js.map +1 -0
  838. package/build/esm/source/buffer/GrainPlayer.d.ts +135 -0
  839. package/build/esm/source/buffer/GrainPlayer.js +235 -0
  840. package/build/esm/source/buffer/GrainPlayer.js.map +1 -0
  841. package/build/esm/source/buffer/Player.d.ts +190 -0
  842. package/build/esm/source/buffer/Player.js +352 -0
  843. package/build/esm/source/buffer/Player.js.map +1 -0
  844. package/build/esm/source/buffer/Players.d.ts +121 -0
  845. package/build/esm/source/buffer/Players.js +162 -0
  846. package/build/esm/source/buffer/Players.js.map +1 -0
  847. package/build/esm/source/buffer/ToneBufferSource.d.ts +97 -0
  848. package/build/esm/source/buffer/ToneBufferSource.js +196 -0
  849. package/build/esm/source/buffer/ToneBufferSource.js.map +1 -0
  850. package/build/esm/source/index.d.ts +15 -0
  851. package/build/esm/source/index.js +16 -0
  852. package/build/esm/source/index.js.map +1 -0
  853. package/build/esm/source/oscillator/AMOscillator.d.ts +101 -0
  854. package/build/esm/source/oscillator/AMOscillator.js +157 -0
  855. package/build/esm/source/oscillator/AMOscillator.js.map +1 -0
  856. package/build/esm/source/oscillator/FMOscillator.d.ts +101 -0
  857. package/build/esm/source/oscillator/FMOscillator.js +172 -0
  858. package/build/esm/source/oscillator/FMOscillator.js.map +1 -0
  859. package/build/esm/source/oscillator/FatOscillator.d.ts +99 -0
  860. package/build/esm/source/oscillator/FatOscillator.js +195 -0
  861. package/build/esm/source/oscillator/FatOscillator.js.map +1 -0
  862. package/build/esm/source/oscillator/LFO.d.ts +167 -0
  863. package/build/esm/source/oscillator/LFO.js +233 -0
  864. package/build/esm/source/oscillator/LFO.js.map +1 -0
  865. package/build/esm/source/oscillator/OmniOscillator.d.ts +162 -0
  866. package/build/esm/source/oscillator/OmniOscillator.js +348 -0
  867. package/build/esm/source/oscillator/OmniOscillator.js.map +1 -0
  868. package/build/esm/source/oscillator/Oscillator.d.ts +125 -0
  869. package/build/esm/source/oscillator/Oscillator.js +379 -0
  870. package/build/esm/source/oscillator/Oscillator.js.map +1 -0
  871. package/build/esm/source/oscillator/OscillatorInterface.d.ts +298 -0
  872. package/build/esm/source/oscillator/OscillatorInterface.js +22 -0
  873. package/build/esm/source/oscillator/OscillatorInterface.js.map +1 -0
  874. package/build/esm/source/oscillator/PWMOscillator.d.ts +94 -0
  875. package/build/esm/source/oscillator/PWMOscillator.js +136 -0
  876. package/build/esm/source/oscillator/PWMOscillator.js.map +1 -0
  877. package/build/esm/source/oscillator/PulseOscillator.d.ts +119 -0
  878. package/build/esm/source/oscillator/PulseOscillator.js +175 -0
  879. package/build/esm/source/oscillator/PulseOscillator.js.map +1 -0
  880. package/build/esm/source/oscillator/ToneOscillatorNode.d.ts +57 -0
  881. package/build/esm/source/oscillator/ToneOscillatorNode.js +90 -0
  882. package/build/esm/source/oscillator/ToneOscillatorNode.js.map +1 -0
  883. package/build/esm/version.d.ts +1 -0
  884. package/build/esm/version.js +2 -0
  885. package/build/esm/version.js.map +1 -0
  886. package/docs/tone.json +1 -0
  887. package/package.json +116 -0
@@ -0,0 +1,57 @@
1
+ import { Frequency, NormalRange, Time } from "../core/type/Units";
2
+ import { RecursivePartial } from "../core/util/Interface";
3
+ import { Instrument, InstrumentOptions } from "./Instrument";
4
+ export interface PluckSynthOptions extends InstrumentOptions {
5
+ attackNoise: number;
6
+ dampening: Frequency;
7
+ resonance: NormalRange;
8
+ release: Time;
9
+ }
10
+ /**
11
+ * Karplus-Strong string synthesis.
12
+ * @example
13
+ * const plucky = new Tone.PluckSynth().toDestination();
14
+ * plucky.triggerAttack("C4", "+0.5");
15
+ * plucky.triggerAttack("C3", "+1");
16
+ * plucky.triggerAttack("C2", "+1.5");
17
+ * plucky.triggerAttack("C1", "+2");
18
+ * @category Instrument
19
+ */
20
+ export declare class PluckSynth extends Instrument<PluckSynthOptions> {
21
+ readonly name = "PluckSynth";
22
+ /**
23
+ * Noise burst at the beginning
24
+ */
25
+ private _noise;
26
+ private _lfcf;
27
+ /**
28
+ * The amount of noise at the attack.
29
+ * Nominal range of [0.1, 20]
30
+ * @min 0.1
31
+ * @max 20
32
+ */
33
+ attackNoise: number;
34
+ /**
35
+ * The amount of resonance of the pluck. Also correlates to the sustain duration.
36
+ */
37
+ resonance: NormalRange;
38
+ /**
39
+ * The release time which corresponds to a resonance ramp down to 0
40
+ */
41
+ release: Time;
42
+ constructor(options?: RecursivePartial<PluckSynthOptions>);
43
+ static getDefaults(): PluckSynthOptions;
44
+ /**
45
+ * The dampening control. i.e. the lowpass filter frequency of the comb filter
46
+ * @min 0
47
+ * @max 7000
48
+ */
49
+ get dampening(): Frequency;
50
+ set dampening(fq: Frequency);
51
+ triggerAttack(note: Frequency, time?: Time): this;
52
+ /**
53
+ * Ramp down the [[resonance]] to 0 over the duration of the release time.
54
+ */
55
+ triggerRelease(time?: Time): this;
56
+ dispose(): this;
57
+ }
@@ -0,0 +1,80 @@
1
+ import { LowpassCombFilter } from "../component/filter/LowpassCombFilter";
2
+ import { deepMerge } from "../core/util/Defaults";
3
+ import { optionsFromArguments } from "../core/util/Defaults";
4
+ import { Noise } from "../source/Noise";
5
+ import { Instrument } from "./Instrument";
6
+ /**
7
+ * Karplus-Strong string synthesis.
8
+ * @example
9
+ * const plucky = new Tone.PluckSynth().toDestination();
10
+ * plucky.triggerAttack("C4", "+0.5");
11
+ * plucky.triggerAttack("C3", "+1");
12
+ * plucky.triggerAttack("C2", "+1.5");
13
+ * plucky.triggerAttack("C1", "+2");
14
+ * @category Instrument
15
+ */
16
+ export class PluckSynth extends Instrument {
17
+ constructor() {
18
+ super(optionsFromArguments(PluckSynth.getDefaults(), arguments));
19
+ this.name = "PluckSynth";
20
+ const options = optionsFromArguments(PluckSynth.getDefaults(), arguments);
21
+ this._noise = new Noise({
22
+ context: this.context,
23
+ type: "pink"
24
+ });
25
+ this.attackNoise = options.attackNoise;
26
+ this._lfcf = new LowpassCombFilter({
27
+ context: this.context,
28
+ dampening: options.dampening,
29
+ resonance: options.resonance,
30
+ });
31
+ this.resonance = options.resonance;
32
+ this.release = options.release;
33
+ this._noise.connect(this._lfcf);
34
+ this._lfcf.connect(this.output);
35
+ }
36
+ static getDefaults() {
37
+ return deepMerge(Instrument.getDefaults(), {
38
+ attackNoise: 1,
39
+ dampening: 4000,
40
+ resonance: 0.7,
41
+ release: 1,
42
+ });
43
+ }
44
+ /**
45
+ * The dampening control. i.e. the lowpass filter frequency of the comb filter
46
+ * @min 0
47
+ * @max 7000
48
+ */
49
+ get dampening() {
50
+ return this._lfcf.dampening;
51
+ }
52
+ set dampening(fq) {
53
+ this._lfcf.dampening = fq;
54
+ }
55
+ triggerAttack(note, time) {
56
+ const freq = this.toFrequency(note);
57
+ time = this.toSeconds(time);
58
+ const delayAmount = 1 / freq;
59
+ this._lfcf.delayTime.setValueAtTime(delayAmount, time);
60
+ this._noise.start(time);
61
+ this._noise.stop(time + delayAmount * this.attackNoise);
62
+ this._lfcf.resonance.cancelScheduledValues(time);
63
+ this._lfcf.resonance.setValueAtTime(this.resonance, time);
64
+ return this;
65
+ }
66
+ /**
67
+ * Ramp down the [[resonance]] to 0 over the duration of the release time.
68
+ */
69
+ triggerRelease(time) {
70
+ this._lfcf.resonance.linearRampTo(0, this.release, time);
71
+ return this;
72
+ }
73
+ dispose() {
74
+ super.dispose();
75
+ this._noise.dispose();
76
+ this._lfcf.dispose();
77
+ return this;
78
+ }
79
+ }
80
+ //# sourceMappingURL=PluckSynth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluckSynth.js","sourceRoot":"","sources":["../../../Tone/instrument/PluckSynth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ import { Frequency, NormalRange, Time } from "../core/type/Units";
2
+ import { RecursivePartial } from "../core/util/Interface";
3
+ import { Instrument, InstrumentOptions } from "./Instrument";
4
+ import { MembraneSynth, MembraneSynthOptions } from "./MembraneSynth";
5
+ import { FMSynth, FMSynthOptions } from "./FMSynth";
6
+ import { AMSynth, AMSynthOptions } from "./AMSynth";
7
+ import { MonoSynth, MonoSynthOptions } from "./MonoSynth";
8
+ import { MetalSynth, MetalSynthOptions } from "./MetalSynth";
9
+ import { Monophonic } from "./Monophonic";
10
+ import { Synth, SynthOptions } from "./Synth";
11
+ declare type VoiceConstructor<V> = {
12
+ getDefaults: () => VoiceOptions<V>;
13
+ } & (new (...args: any[]) => V);
14
+ declare type OmitMonophonicOptions<T> = Omit<T, "context" | "onsilence">;
15
+ declare type VoiceOptions<T> = T extends MembraneSynth ? MembraneSynthOptions : T extends MetalSynth ? MetalSynthOptions : T extends FMSynth ? FMSynthOptions : T extends MonoSynth ? MonoSynthOptions : T extends AMSynth ? AMSynthOptions : T extends Synth ? SynthOptions : never;
16
+ /**
17
+ * The settable synth options. excludes monophonic options.
18
+ */
19
+ declare type PartialVoiceOptions<T> = RecursivePartial<OmitMonophonicOptions<VoiceOptions<T>>>;
20
+ export interface PolySynthOptions<Voice> extends InstrumentOptions {
21
+ maxPolyphony: number;
22
+ voice: VoiceConstructor<Voice>;
23
+ options: PartialVoiceOptions<Voice>;
24
+ }
25
+ /**
26
+ * PolySynth handles voice creation and allocation for any
27
+ * instruments passed in as the second paramter. PolySynth is
28
+ * not a synthesizer by itself, it merely manages voices of
29
+ * one of the other types of synths, allowing any of the
30
+ * monophonic synthesizers to be polyphonic.
31
+ *
32
+ * @example
33
+ * const synth = new Tone.PolySynth().toDestination();
34
+ * // set the attributes across all the voices using 'set'
35
+ * synth.set({ detune: -1200 });
36
+ * // play a chord
37
+ * synth.triggerAttackRelease(["C4", "E4", "A4"], 1);
38
+ * @category Instrument
39
+ */
40
+ export declare class PolySynth<Voice extends Monophonic<any> = Synth> extends Instrument<VoiceOptions<Voice>> {
41
+ readonly name: string;
42
+ /**
43
+ * The voices which are not currently in use
44
+ */
45
+ private _availableVoices;
46
+ /**
47
+ * The currently active voices
48
+ */
49
+ private _activeVoices;
50
+ /**
51
+ * All of the allocated voices for this synth.
52
+ */
53
+ private _voices;
54
+ /**
55
+ * The options that are set on the synth.
56
+ */
57
+ private options;
58
+ /**
59
+ * The polyphony limit.
60
+ */
61
+ maxPolyphony: number;
62
+ /**
63
+ * The voice constructor
64
+ */
65
+ private readonly voice;
66
+ /**
67
+ * A voice used for holding the get/set values
68
+ */
69
+ private _dummyVoice;
70
+ /**
71
+ * The GC timeout. Held so that it could be cancelled when the node is disposed.
72
+ */
73
+ private _gcTimeout;
74
+ /**
75
+ * A moving average of the number of active voices
76
+ */
77
+ private _averageActiveVoices;
78
+ /**
79
+ * @param voice The constructor of the voices
80
+ * @param options The options object to set the synth voice
81
+ */
82
+ constructor(voice?: VoiceConstructor<Voice>, options?: PartialVoiceOptions<Voice>);
83
+ constructor(options?: Partial<PolySynthOptions<Voice>>);
84
+ static getDefaults(): PolySynthOptions<Synth>;
85
+ /**
86
+ * The number of active voices.
87
+ */
88
+ get activeVoices(): number;
89
+ /**
90
+ * Invoked when the source is done making sound, so that it can be
91
+ * readded to the pool of available voices
92
+ */
93
+ private _makeVoiceAvailable;
94
+ /**
95
+ * Get an available voice from the pool of available voices.
96
+ * If one is not available and the maxPolyphony limit is reached,
97
+ * steal a voice, otherwise return null.
98
+ */
99
+ private _getNextAvailableVoice;
100
+ /**
101
+ * Occasionally check if there are any allocated voices which can be cleaned up.
102
+ */
103
+ private _collectGarbage;
104
+ /**
105
+ * Internal method which triggers the attack
106
+ */
107
+ private _triggerAttack;
108
+ /**
109
+ * Internal method which triggers the release
110
+ */
111
+ private _triggerRelease;
112
+ /**
113
+ * Schedule the attack/release events. If the time is in the future, then it should set a timeout
114
+ * to wait for just-in-time scheduling
115
+ */
116
+ private _scheduleEvent;
117
+ /**
118
+ * Trigger the attack portion of the note
119
+ * @param notes The notes to play. Accepts a single Frequency or an array of frequencies.
120
+ * @param time The start time of the note.
121
+ * @param velocity The velocity of the note.
122
+ * @example
123
+ * const synth = new Tone.PolySynth(Tone.FMSynth).toDestination();
124
+ * // trigger a chord immediately with a velocity of 0.2
125
+ * synth.triggerAttack(["Ab3", "C4", "F5"], Tone.now(), 0.2);
126
+ */
127
+ triggerAttack(notes: Frequency | Frequency[], time?: Time, velocity?: NormalRange): this;
128
+ /**
129
+ * Trigger the release of the note. Unlike monophonic instruments,
130
+ * a note (or array of notes) needs to be passed in as the first argument.
131
+ * @param notes The notes to play. Accepts a single Frequency or an array of frequencies.
132
+ * @param time When the release will be triggered.
133
+ * @example
134
+ * @example
135
+ * const poly = new Tone.PolySynth(Tone.AMSynth).toDestination();
136
+ * poly.triggerAttack(["Ab3", "C4", "F5"]);
137
+ * // trigger the release of the given notes.
138
+ * poly.triggerRelease(["Ab3", "C4"], "+1");
139
+ * poly.triggerRelease("F5", "+3");
140
+ */
141
+ triggerRelease(notes: Frequency | Frequency[], time?: Time): this;
142
+ /**
143
+ * Trigger the attack and release after the specified duration
144
+ * @param notes The notes to play. Accepts a single Frequency or an array of frequencies.
145
+ * @param duration the duration of the note
146
+ * @param time if no time is given, defaults to now
147
+ * @param velocity the velocity of the attack (0-1)
148
+ * @example
149
+ * const poly = new Tone.PolySynth(Tone.AMSynth).toDestination();
150
+ * // can pass in an array of durations as well
151
+ * poly.triggerAttackRelease(["Eb3", "G4", "Bb4", "D5"], [4, 3, 2, 1]);
152
+ */
153
+ triggerAttackRelease(notes: Frequency | Frequency[], duration: Time | Time[], time?: Time, velocity?: NormalRange): this;
154
+ sync(): this;
155
+ /**
156
+ * Set a member/attribute of the voices
157
+ * @example
158
+ * const poly = new Tone.PolySynth().toDestination();
159
+ * // set all of the voices using an options object for the synth type
160
+ * poly.set({
161
+ * envelope: {
162
+ * attack: 0.25
163
+ * }
164
+ * });
165
+ * poly.triggerAttackRelease("Bb3", 0.2);
166
+ */
167
+ set(options: RecursivePartial<VoiceOptions<Voice>>): this;
168
+ get(): VoiceOptions<Voice>;
169
+ /**
170
+ * Trigger the release portion of all the currently active voices immediately.
171
+ * Useful for silencing the synth.
172
+ */
173
+ releaseAll(time?: Time): this;
174
+ dispose(): this;
175
+ }
176
+ export {};
@@ -0,0 +1,302 @@
1
+ import { MidiClass } from "../core/type/Midi";
2
+ import { deepMerge, omitFromObject, optionsFromArguments } from "../core/util/Defaults";
3
+ import { isArray, isNumber } from "../core/util/TypeCheck";
4
+ import { Instrument } from "./Instrument";
5
+ import { Synth } from "./Synth";
6
+ import { assert, warn } from "../core/util/Debug";
7
+ /**
8
+ * PolySynth handles voice creation and allocation for any
9
+ * instruments passed in as the second paramter. PolySynth is
10
+ * not a synthesizer by itself, it merely manages voices of
11
+ * one of the other types of synths, allowing any of the
12
+ * monophonic synthesizers to be polyphonic.
13
+ *
14
+ * @example
15
+ * const synth = new Tone.PolySynth().toDestination();
16
+ * // set the attributes across all the voices using 'set'
17
+ * synth.set({ detune: -1200 });
18
+ * // play a chord
19
+ * synth.triggerAttackRelease(["C4", "E4", "A4"], 1);
20
+ * @category Instrument
21
+ */
22
+ export class PolySynth extends Instrument {
23
+ constructor() {
24
+ super(optionsFromArguments(PolySynth.getDefaults(), arguments, ["voice", "options"]));
25
+ this.name = "PolySynth";
26
+ /**
27
+ * The voices which are not currently in use
28
+ */
29
+ this._availableVoices = [];
30
+ /**
31
+ * The currently active voices
32
+ */
33
+ this._activeVoices = [];
34
+ /**
35
+ * All of the allocated voices for this synth.
36
+ */
37
+ this._voices = [];
38
+ /**
39
+ * The GC timeout. Held so that it could be cancelled when the node is disposed.
40
+ */
41
+ this._gcTimeout = -1;
42
+ /**
43
+ * A moving average of the number of active voices
44
+ */
45
+ this._averageActiveVoices = 0;
46
+ const options = optionsFromArguments(PolySynth.getDefaults(), arguments, ["voice", "options"]);
47
+ // check against the old API (pre 14.3.0)
48
+ assert(!isNumber(options.voice), "DEPRECATED: The polyphony count is no longer the first argument.");
49
+ const defaults = options.voice.getDefaults();
50
+ this.options = Object.assign(defaults, options.options);
51
+ this.voice = options.voice;
52
+ this.maxPolyphony = options.maxPolyphony;
53
+ // create the first voice
54
+ this._dummyVoice = this._getNextAvailableVoice();
55
+ // remove it from the voices list
56
+ const index = this._voices.indexOf(this._dummyVoice);
57
+ this._voices.splice(index, 1);
58
+ // kick off the GC interval
59
+ this._gcTimeout = this.context.setInterval(this._collectGarbage.bind(this), 1);
60
+ }
61
+ static getDefaults() {
62
+ return Object.assign(Instrument.getDefaults(), {
63
+ maxPolyphony: 32,
64
+ options: {},
65
+ voice: Synth,
66
+ });
67
+ }
68
+ /**
69
+ * The number of active voices.
70
+ */
71
+ get activeVoices() {
72
+ return this._activeVoices.length;
73
+ }
74
+ /**
75
+ * Invoked when the source is done making sound, so that it can be
76
+ * readded to the pool of available voices
77
+ */
78
+ _makeVoiceAvailable(voice) {
79
+ this._availableVoices.push(voice);
80
+ // remove the midi note from 'active voices'
81
+ const activeVoiceIndex = this._activeVoices.findIndex((e) => e.voice === voice);
82
+ this._activeVoices.splice(activeVoiceIndex, 1);
83
+ }
84
+ /**
85
+ * Get an available voice from the pool of available voices.
86
+ * If one is not available and the maxPolyphony limit is reached,
87
+ * steal a voice, otherwise return null.
88
+ */
89
+ _getNextAvailableVoice() {
90
+ // if there are available voices, return the first one
91
+ if (this._availableVoices.length) {
92
+ return this._availableVoices.shift();
93
+ }
94
+ else if (this._voices.length < this.maxPolyphony) {
95
+ // otherwise if there is still more maxPolyphony, make a new voice
96
+ const voice = new this.voice(Object.assign(this.options, {
97
+ context: this.context,
98
+ onsilence: this._makeVoiceAvailable.bind(this),
99
+ }));
100
+ voice.connect(this.output);
101
+ this._voices.push(voice);
102
+ return voice;
103
+ }
104
+ else {
105
+ warn("Max polyphony exceeded. Note dropped.");
106
+ }
107
+ }
108
+ /**
109
+ * Occasionally check if there are any allocated voices which can be cleaned up.
110
+ */
111
+ _collectGarbage() {
112
+ this._averageActiveVoices = Math.max(this._averageActiveVoices * 0.95, this.activeVoices);
113
+ if (this._availableVoices.length && this._voices.length > Math.ceil(this._averageActiveVoices + 1)) {
114
+ // take off an available note
115
+ const firstAvail = this._availableVoices.shift();
116
+ const index = this._voices.indexOf(firstAvail);
117
+ this._voices.splice(index, 1);
118
+ if (!this.context.isOffline) {
119
+ firstAvail.dispose();
120
+ }
121
+ }
122
+ }
123
+ /**
124
+ * Internal method which triggers the attack
125
+ */
126
+ _triggerAttack(notes, time, velocity) {
127
+ notes.forEach(note => {
128
+ const midiNote = new MidiClass(this.context, note).toMidi();
129
+ const voice = this._getNextAvailableVoice();
130
+ if (voice) {
131
+ voice.triggerAttack(note, time, velocity);
132
+ this._activeVoices.push({
133
+ midi: midiNote, voice, released: false,
134
+ });
135
+ this.log("triggerAttack", note, time);
136
+ }
137
+ });
138
+ }
139
+ /**
140
+ * Internal method which triggers the release
141
+ */
142
+ _triggerRelease(notes, time) {
143
+ notes.forEach(note => {
144
+ const midiNote = new MidiClass(this.context, note).toMidi();
145
+ const event = this._activeVoices.find(({ midi, released }) => midi === midiNote && !released);
146
+ if (event) {
147
+ // trigger release on that note
148
+ event.voice.triggerRelease(time);
149
+ // mark it as released
150
+ event.released = true;
151
+ this.log("triggerRelease", note, time);
152
+ }
153
+ });
154
+ }
155
+ /**
156
+ * Schedule the attack/release events. If the time is in the future, then it should set a timeout
157
+ * to wait for just-in-time scheduling
158
+ */
159
+ _scheduleEvent(type, notes, time, velocity) {
160
+ assert(!this.disposed, "Synth was already disposed");
161
+ // if the notes are greater than this amount of time in the future, they should be scheduled with setTimeout
162
+ if (time <= this.now()) {
163
+ // do it immediately
164
+ if (type === "attack") {
165
+ this._triggerAttack(notes, time, velocity);
166
+ }
167
+ else {
168
+ this._triggerRelease(notes, time);
169
+ }
170
+ }
171
+ else {
172
+ // schedule it to start in the future
173
+ this.context.setTimeout(() => {
174
+ if (!this.disposed) {
175
+ this._scheduleEvent(type, notes, time, velocity);
176
+ }
177
+ }, time - this.now());
178
+ }
179
+ }
180
+ /**
181
+ * Trigger the attack portion of the note
182
+ * @param notes The notes to play. Accepts a single Frequency or an array of frequencies.
183
+ * @param time The start time of the note.
184
+ * @param velocity The velocity of the note.
185
+ * @example
186
+ * const synth = new Tone.PolySynth(Tone.FMSynth).toDestination();
187
+ * // trigger a chord immediately with a velocity of 0.2
188
+ * synth.triggerAttack(["Ab3", "C4", "F5"], Tone.now(), 0.2);
189
+ */
190
+ triggerAttack(notes, time, velocity) {
191
+ if (!Array.isArray(notes)) {
192
+ notes = [notes];
193
+ }
194
+ const computedTime = this.toSeconds(time);
195
+ this._scheduleEvent("attack", notes, computedTime, velocity);
196
+ return this;
197
+ }
198
+ /**
199
+ * Trigger the release of the note. Unlike monophonic instruments,
200
+ * a note (or array of notes) needs to be passed in as the first argument.
201
+ * @param notes The notes to play. Accepts a single Frequency or an array of frequencies.
202
+ * @param time When the release will be triggered.
203
+ * @example
204
+ * @example
205
+ * const poly = new Tone.PolySynth(Tone.AMSynth).toDestination();
206
+ * poly.triggerAttack(["Ab3", "C4", "F5"]);
207
+ * // trigger the release of the given notes.
208
+ * poly.triggerRelease(["Ab3", "C4"], "+1");
209
+ * poly.triggerRelease("F5", "+3");
210
+ */
211
+ triggerRelease(notes, time) {
212
+ if (!Array.isArray(notes)) {
213
+ notes = [notes];
214
+ }
215
+ const computedTime = this.toSeconds(time);
216
+ this._scheduleEvent("release", notes, computedTime);
217
+ return this;
218
+ }
219
+ /**
220
+ * Trigger the attack and release after the specified duration
221
+ * @param notes The notes to play. Accepts a single Frequency or an array of frequencies.
222
+ * @param duration the duration of the note
223
+ * @param time if no time is given, defaults to now
224
+ * @param velocity the velocity of the attack (0-1)
225
+ * @example
226
+ * const poly = new Tone.PolySynth(Tone.AMSynth).toDestination();
227
+ * // can pass in an array of durations as well
228
+ * poly.triggerAttackRelease(["Eb3", "G4", "Bb4", "D5"], [4, 3, 2, 1]);
229
+ */
230
+ triggerAttackRelease(notes, duration, time, velocity) {
231
+ const computedTime = this.toSeconds(time);
232
+ this.triggerAttack(notes, computedTime, velocity);
233
+ if (isArray(duration)) {
234
+ assert(isArray(notes), "If the duration is an array, the notes must also be an array");
235
+ notes = notes;
236
+ for (let i = 0; i < notes.length; i++) {
237
+ const d = duration[Math.min(i, duration.length - 1)];
238
+ const durationSeconds = this.toSeconds(d);
239
+ assert(durationSeconds > 0, "The duration must be greater than 0");
240
+ this.triggerRelease(notes[i], computedTime + durationSeconds);
241
+ }
242
+ }
243
+ else {
244
+ const durationSeconds = this.toSeconds(duration);
245
+ assert(durationSeconds > 0, "The duration must be greater than 0");
246
+ this.triggerRelease(notes, computedTime + durationSeconds);
247
+ }
248
+ return this;
249
+ }
250
+ sync() {
251
+ if (this._syncState()) {
252
+ this._syncMethod("triggerAttack", 1);
253
+ this._syncMethod("triggerRelease", 1);
254
+ }
255
+ return this;
256
+ }
257
+ /**
258
+ * Set a member/attribute of the voices
259
+ * @example
260
+ * const poly = new Tone.PolySynth().toDestination();
261
+ * // set all of the voices using an options object for the synth type
262
+ * poly.set({
263
+ * envelope: {
264
+ * attack: 0.25
265
+ * }
266
+ * });
267
+ * poly.triggerAttackRelease("Bb3", 0.2);
268
+ */
269
+ set(options) {
270
+ // remove options which are controlled by the PolySynth
271
+ const sanitizedOptions = omitFromObject(options, ["onsilence", "context"]);
272
+ // store all of the options
273
+ this.options = deepMerge(this.options, sanitizedOptions);
274
+ this._voices.forEach(voice => voice.set(sanitizedOptions));
275
+ this._dummyVoice.set(sanitizedOptions);
276
+ return this;
277
+ }
278
+ get() {
279
+ return this._dummyVoice.get();
280
+ }
281
+ /**
282
+ * Trigger the release portion of all the currently active voices immediately.
283
+ * Useful for silencing the synth.
284
+ */
285
+ releaseAll(time) {
286
+ const computedTime = this.toSeconds(time);
287
+ this._activeVoices.forEach(({ voice }) => {
288
+ voice.triggerRelease(computedTime);
289
+ });
290
+ return this;
291
+ }
292
+ dispose() {
293
+ super.dispose();
294
+ this._dummyVoice.dispose();
295
+ this._voices.forEach(v => v.dispose());
296
+ this._activeVoices = [];
297
+ this._availableVoices = [];
298
+ this.context.clearInterval(this._gcTimeout);
299
+ return this;
300
+ }
301
+ }
302
+ //# sourceMappingURL=PolySynth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolySynth.js","sourceRoot":"","sources":["../../../Tone/instrument/PolySynth.ts"],"names":[],"mappings":"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"}