react-native-audio-api 0.4.12-beta.4 → 0.4.12

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 (157) hide show
  1. package/android/src/main/cpp/audioapi/CMakeLists.txt +2 -3
  2. package/android/src/main/cpp/audioapi/android/core/AudioDecoder.cpp +3 -3
  3. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +10 -11
  4. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.h +1 -0
  5. package/android/src/main/java/com/swmansion/audioapi/AudioAPIPackage.kt +0 -1
  6. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +1 -3
  7. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +24 -16
  8. package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +4 -0
  9. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +20 -4
  10. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +3 -2
  11. package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +32 -2
  12. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +14 -21
  13. package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +4 -2
  14. package/common/cpp/audioapi/core/AudioNode.cpp +2 -2
  15. package/common/cpp/audioapi/core/AudioParam.cpp +1 -1
  16. package/common/cpp/audioapi/core/BaseAudioContext.cpp +4 -12
  17. package/common/cpp/audioapi/core/BaseAudioContext.h +2 -4
  18. package/common/cpp/audioapi/core/Constants.h +8 -33
  19. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +42 -45
  20. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +8 -6
  21. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.cpp +1 -1
  22. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +12 -8
  23. package/common/cpp/audioapi/core/effects/GainNode.cpp +4 -3
  24. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +32 -49
  25. package/common/cpp/audioapi/core/effects/PeriodicWave.h +8 -3
  26. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +3 -3
  27. package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +9 -2
  28. package/common/cpp/audioapi/core/sources/AudioBuffer.h +5 -2
  29. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +72 -35
  30. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +41 -8
  31. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +18 -6
  32. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +7 -0
  33. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +12 -3
  34. package/common/cpp/audioapi/core/sources/OscillatorNode.h +1 -0
  35. package/common/cpp/audioapi/core/types/TimeStretchType.h +7 -0
  36. package/common/cpp/audioapi/dsp/AudioUtils.cpp +2 -2
  37. package/common/cpp/audioapi/dsp/AudioUtils.h +2 -2
  38. package/common/cpp/audioapi/dsp/FFT.cpp +41 -0
  39. package/common/cpp/audioapi/dsp/FFT.h +29 -0
  40. package/common/cpp/audioapi/dsp/VectorMath.cpp +3 -3
  41. package/common/cpp/audioapi/dsp/VectorMath.h +2 -2
  42. package/common/cpp/audioapi/dsp/Windows.cpp +80 -0
  43. package/common/cpp/audioapi/dsp/Windows.h +95 -0
  44. package/{android/src/main/cpp/audioapi/android/libs → common/cpp/audioapi/libs/pffft}/pffft.c +1 -1
  45. package/common/cpp/audioapi/libs/{dsp → signalsmith-stretch}/delay.h +9 -11
  46. package/common/cpp/audioapi/libs/{dsp → signalsmith-stretch}/fft.h +6 -7
  47. package/common/cpp/audioapi/libs/{dsp → signalsmith-stretch}/perf.h +0 -2
  48. package/common/cpp/audioapi/libs/{signalsmith-stretch.h → signalsmith-stretch/signalsmith-stretch.h} +3 -4
  49. package/common/cpp/audioapi/libs/{dsp → signalsmith-stretch}/spectral.h +10 -13
  50. package/common/cpp/audioapi/{core/utils → utils}/AudioArray.cpp +5 -5
  51. package/common/cpp/audioapi/{core/utils → utils}/AudioBus.cpp +29 -29
  52. package/ios/audioapi/ios/core/AudioDecoder.mm +3 -3
  53. package/ios/audioapi/ios/core/AudioPlayer.h +5 -2
  54. package/ios/audioapi/ios/core/AudioPlayer.m +9 -5
  55. package/ios/audioapi/ios/core/IOSAudioPlayer.h +1 -0
  56. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +12 -10
  57. package/lib/module/api.js +30 -0
  58. package/lib/module/api.js.map +1 -0
  59. package/lib/module/{index.web.js → api.web.js} +4 -2
  60. package/lib/module/api.web.js.map +1 -0
  61. package/lib/module/core/AudioBufferSourceNode.js +6 -0
  62. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  63. package/lib/module/core/AudioScheduledSourceNode.js +5 -0
  64. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  65. package/lib/module/core/BaseAudioContext.js +0 -4
  66. package/lib/module/core/BaseAudioContext.js.map +1 -1
  67. package/lib/module/index.js +1 -28
  68. package/lib/module/index.js.map +1 -1
  69. package/lib/module/web-core/AudioBuffer.js +1 -1
  70. package/lib/module/web-core/AudioBuffer.js.map +1 -1
  71. package/lib/module/web-core/AudioBufferSourceNode.js +6 -0
  72. package/lib/module/web-core/AudioBufferSourceNode.js.map +1 -1
  73. package/lib/module/web-core/AudioContext.js +7 -0
  74. package/lib/module/web-core/AudioContext.js.map +1 -1
  75. package/lib/module/web-core/AudioScheduledSourceNode.js +8 -0
  76. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  77. package/lib/module/web-core/StretcherNode.js +64 -0
  78. package/lib/module/web-core/StretcherNode.js.map +1 -0
  79. package/lib/module/web-core/custom/LoadCustomWasm.js +33 -0
  80. package/lib/module/web-core/custom/LoadCustomWasm.js.map +1 -0
  81. package/lib/module/web-core/custom/index.js +4 -0
  82. package/lib/module/web-core/custom/index.js.map +1 -0
  83. package/lib/module/web-core/custom/signalsmithStretch/LICENSE.txt +21 -0
  84. package/lib/module/web-core/custom/signalsmithStretch/README.md +46 -0
  85. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js +822 -0
  86. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js.map +1 -0
  87. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs +826 -0
  88. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs.map +1 -0
  89. package/lib/typescript/api.d.ts +20 -0
  90. package/lib/typescript/api.d.ts.map +1 -0
  91. package/lib/typescript/{index.web.d.ts → api.web.d.ts} +4 -2
  92. package/lib/typescript/api.web.d.ts.map +1 -0
  93. package/lib/typescript/core/AudioBufferSourceNode.d.ts +3 -0
  94. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  95. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -0
  96. package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
  97. package/lib/typescript/core/BaseAudioContext.d.ts +0 -2
  98. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  99. package/lib/typescript/index.d.ts +1 -20
  100. package/lib/typescript/index.d.ts.map +1 -1
  101. package/lib/typescript/interfaces.d.ts +3 -6
  102. package/lib/typescript/interfaces.d.ts.map +1 -1
  103. package/lib/typescript/types.d.ts +1 -0
  104. package/lib/typescript/types.d.ts.map +1 -1
  105. package/lib/typescript/web-core/AudioBuffer.d.ts +1 -1
  106. package/lib/typescript/web-core/AudioBuffer.d.ts.map +1 -1
  107. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +3 -0
  108. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts.map +1 -1
  109. package/lib/typescript/web-core/AudioContext.d.ts +2 -0
  110. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  111. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -0
  112. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts.map +1 -1
  113. package/lib/typescript/web-core/StretcherNode.d.ts +45 -0
  114. package/lib/typescript/web-core/StretcherNode.d.ts.map +1 -0
  115. package/lib/typescript/web-core/custom/LoadCustomWasm.d.ts +5 -0
  116. package/lib/typescript/web-core/custom/LoadCustomWasm.d.ts.map +1 -0
  117. package/lib/typescript/web-core/custom/index.d.ts +2 -0
  118. package/lib/typescript/web-core/custom/index.d.ts.map +1 -0
  119. package/package.json +8 -5
  120. package/scripts/setup-custom-wasm.js +104 -0
  121. package/src/api.ts +51 -0
  122. package/src/{index.web.ts → api.web.ts} +4 -0
  123. package/src/core/AudioBufferSourceNode.ts +9 -0
  124. package/src/core/AudioScheduledSourceNode.ts +5 -0
  125. package/src/core/BaseAudioContext.ts +0 -5
  126. package/src/index.ts +1 -51
  127. package/src/interfaces.ts +3 -6
  128. package/src/types.ts +2 -0
  129. package/src/web-core/AudioBuffer.tsx +2 -2
  130. package/src/web-core/AudioBufferSourceNode.tsx +11 -0
  131. package/src/web-core/AudioContext.tsx +11 -0
  132. package/src/web-core/AudioScheduledSourceNode.tsx +9 -0
  133. package/src/web-core/StretcherNode.tsx +125 -0
  134. package/src/web-core/custom/LoadCustomWasm.ts +39 -0
  135. package/src/web-core/custom/index.ts +1 -0
  136. package/src/web-core/custom/signalsmithStretch/LICENSE.txt +21 -0
  137. package/src/web-core/custom/signalsmithStretch/README.md +46 -0
  138. package/src/web-core/custom/signalsmithStretch/SignalsmithStretch.js +945 -0
  139. package/src/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs +949 -0
  140. package/common/cpp/audioapi/HostObjects/StretcherNodeHostObject.h +0 -35
  141. package/common/cpp/audioapi/core/effects/StretcherNode.cpp +0 -94
  142. package/common/cpp/audioapi/core/effects/StretcherNode.h +0 -35
  143. package/common/cpp/audioapi/dsp/FFTFrame.cpp +0 -100
  144. package/common/cpp/audioapi/dsp/FFTFrame.h +0 -74
  145. package/common/cpp/audioapi/libs/dsp/common.h +0 -47
  146. package/common/cpp/audioapi/libs/dsp/windows.h +0 -219
  147. package/lib/module/core/StretcherNode.js +0 -12
  148. package/lib/module/core/StretcherNode.js.map +0 -1
  149. package/lib/module/index.web.js.map +0 -1
  150. package/lib/typescript/core/StretcherNode.d.ts +0 -10
  151. package/lib/typescript/core/StretcherNode.d.ts.map +0 -1
  152. package/lib/typescript/index.web.d.ts.map +0 -1
  153. package/src/core/StretcherNode.ts +0 -15
  154. /package/common/cpp/audioapi/libs/{miniaudio.h → miniaudio/miniaudio.h} +0 -0
  155. /package/{android/src/main/cpp/audioapi/android/libs → common/cpp/audioapi/libs/pffft}/pffft.h +0 -0
  156. /package/common/cpp/audioapi/{core/utils → utils}/AudioArray.h +0 -0
  157. /package/common/cpp/audioapi/{core/utils → utils}/AudioBus.h +0 -0
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ import NativeAudioAPIModule from "./specs/NativeAudioAPIModule.js";
4
+
5
+ /* eslint-disable no-var */
6
+
7
+ /* eslint-disable no-var */
8
+
9
+ if (global.createAudioContext == null) {
10
+ if (!NativeAudioAPIModule) {
11
+ throw new Error(`Failed to install react-native-audio-api: The native module could not be found.`);
12
+ }
13
+ NativeAudioAPIModule.install();
14
+ }
15
+ export { default as AudioBuffer } from "./core/AudioBuffer.js";
16
+ export { default as AudioBufferSourceNode } from "./core/AudioBufferSourceNode.js";
17
+ export { default as AudioContext } from "./core/AudioContext.js";
18
+ export { default as AudioDestinationNode } from "./core/AudioDestinationNode.js";
19
+ export { default as AudioNode } from "./core/AudioNode.js";
20
+ export { default as AnalyserNode } from "./core/AnalyserNode.js";
21
+ export { default as AudioParam } from "./core/AudioParam.js";
22
+ export { default as AudioScheduledSourceNode } from "./core/AudioScheduledSourceNode.js";
23
+ export { default as BaseAudioContext } from "./core/BaseAudioContext.js";
24
+ export { default as BiquadFilterNode } from "./core/BiquadFilterNode.js";
25
+ export { default as GainNode } from "./core/GainNode.js";
26
+ export { default as OscillatorNode } from "./core/OscillatorNode.js";
27
+ export { default as StereoPannerNode } from "./core/StereoPannerNode.js";
28
+ export { OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, WindowType, PeriodicWaveConstraints, TimeStretchType } from "./types.js";
29
+ export { IndexSizeError, InvalidAccessError, InvalidStateError, RangeError, NotSupportedError } from "./errors/index.js";
30
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeAudioAPIModule","global","createAudioContext","Error","install","default","AudioBuffer","AudioBufferSourceNode","AudioContext","AudioDestinationNode","AudioNode","AnalyserNode","AudioParam","AudioScheduledSourceNode","BaseAudioContext","BiquadFilterNode","GainNode","OscillatorNode","StereoPannerNode","OscillatorType","BiquadFilterType","ChannelCountMode","ChannelInterpretation","ContextState","WindowType","PeriodicWaveConstraints","TimeStretchType","IndexSizeError","InvalidAccessError","InvalidStateError","RangeError","NotSupportedError"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;AAAA,OAAOA,oBAAoB,MAAM,iCAA8B;;AAG/D;;AAIA;;AAEA,IAAIC,MAAM,CAACC,kBAAkB,IAAI,IAAI,EAAE;EACrC,IAAI,CAACF,oBAAoB,EAAE;IACzB,MAAM,IAAIG,KAAK,CACb,iFACF,CAAC;EACH;EAEAH,oBAAoB,CAACI,OAAO,CAAC,CAAC;AAChC;AAEA,SAASC,OAAO,IAAIC,WAAW,QAAQ,uBAAoB;AAC3D,SAASD,OAAO,IAAIE,qBAAqB,QAAQ,iCAA8B;AAC/E,SAASF,OAAO,IAAIG,YAAY,QAAQ,wBAAqB;AAC7D,SAASH,OAAO,IAAII,oBAAoB,QAAQ,gCAA6B;AAC7E,SAASJ,OAAO,IAAIK,SAAS,QAAQ,qBAAkB;AACvD,SAASL,OAAO,IAAIM,YAAY,QAAQ,wBAAqB;AAC7D,SAASN,OAAO,IAAIO,UAAU,QAAQ,sBAAmB;AACzD,SAASP,OAAO,IAAIQ,wBAAwB,QAAQ,oCAAiC;AACrF,SAASR,OAAO,IAAIS,gBAAgB,QAAQ,4BAAyB;AACrE,SAAST,OAAO,IAAIU,gBAAgB,QAAQ,4BAAyB;AACrE,SAASV,OAAO,IAAIW,QAAQ,QAAQ,oBAAiB;AACrD,SAASX,OAAO,IAAIY,cAAc,QAAQ,0BAAuB;AACjE,SAASZ,OAAO,IAAIa,gBAAgB,QAAQ,4BAAyB;AAErE,SACEC,cAAc,EACdC,gBAAgB,EAChBC,gBAAgB,EAChBC,qBAAqB,EACrBC,YAAY,EACZC,UAAU,EACVC,uBAAuB,EACvBC,eAAe,QACV,YAAS;AAEhB,SACEC,cAAc,EACdC,kBAAkB,EAClBC,iBAAiB,EACjBC,UAAU,EACVC,iBAAiB,QACZ,mBAAU","ignoreList":[]}
@@ -13,6 +13,8 @@ export { default as BiquadFilterNode } from "./web-core/BiquadFilterNode.js";
13
13
  export { default as GainNode } from "./web-core/GainNode.js";
14
14
  export { default as OscillatorNode } from "./web-core/OscillatorNode.js";
15
15
  export { default as StereoPannerNode } from "./web-core/StereoPannerNode.js";
16
- export { OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, WindowType, PeriodicWaveConstraints } from "./types.js";
16
+ export { default as StretcherNode } from "./web-core/StretcherNode.js";
17
+ export * from "./web-core/custom/index.js";
18
+ export { OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, WindowType, PeriodicWaveConstraints, TimeStretchType } from "./types.js";
17
19
  export { IndexSizeError, InvalidAccessError, InvalidStateError, RangeError, NotSupportedError } from "./errors/index.js";
18
- //# sourceMappingURL=index.web.js.map
20
+ //# sourceMappingURL=api.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","AudioBuffer","AudioBufferSourceNode","AudioContext","AudioDestinationNode","AudioNode","AnalyserNode","AudioParam","AudioScheduledSourceNode","BaseAudioContext","BiquadFilterNode","GainNode","OscillatorNode","StereoPannerNode","StretcherNode","OscillatorType","BiquadFilterType","ChannelCountMode","ChannelInterpretation","ContextState","WindowType","PeriodicWaveConstraints","TimeStretchType","IndexSizeError","InvalidAccessError","InvalidStateError","RangeError","NotSupportedError"],"sourceRoot":"../../src","sources":["api.web.ts"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,WAAW,QAAQ,2BAAwB;AAC/D,SAASD,OAAO,IAAIE,qBAAqB,QAAQ,qCAAkC;AACnF,SAASF,OAAO,IAAIG,YAAY,QAAQ,4BAAyB;AACjE,SAASH,OAAO,IAAII,oBAAoB,QAAQ,oCAAiC;AACjF,SAASJ,OAAO,IAAIK,SAAS,QAAQ,yBAAsB;AAC3D,SAASL,OAAO,IAAIM,YAAY,QAAQ,4BAAyB;AACjE,SAASN,OAAO,IAAIO,UAAU,QAAQ,0BAAuB;AAC7D,SAASP,OAAO,IAAIQ,wBAAwB,QAAQ,wCAAqC;AACzF,SAASR,OAAO,IAAIS,gBAAgB,QAAQ,gCAA6B;AACzE,SAAST,OAAO,IAAIU,gBAAgB,QAAQ,gCAA6B;AACzE,SAASV,OAAO,IAAIW,QAAQ,QAAQ,wBAAqB;AACzD,SAASX,OAAO,IAAIY,cAAc,QAAQ,8BAA2B;AACrE,SAASZ,OAAO,IAAIa,gBAAgB,QAAQ,gCAA6B;AACzE,SAASb,OAAO,IAAIc,aAAa,QAAQ,6BAA0B;AAEnE,cAAc,4BAAmB;AAEjC,SACEC,cAAc,EACdC,gBAAgB,EAChBC,gBAAgB,EAChBC,qBAAqB,EACrBC,YAAY,EACZC,UAAU,EACVC,uBAAuB,EACvBC,eAAe,QACV,YAAS;AAEhB,SACEC,cAAc,EACdC,kBAAkB,EAClBC,iBAAiB,EACjBC,UAAU,EACVC,iBAAiB,QACZ,mBAAU","ignoreList":[]}
@@ -42,6 +42,12 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
42
42
  set loopEnd(value) {
43
43
  this.node.loopEnd = value;
44
44
  }
45
+ get timeStretch() {
46
+ return this.node.timeStretch;
47
+ }
48
+ set timeStretch(value) {
49
+ this.node.timeStretch = value;
50
+ }
45
51
  start(when = 0, offset = 0, duration) {
46
52
  if (when < 0) {
47
53
  throw new RangeError(`when must be a finite non-negative number: ${when}`);
@@ -1 +1 @@
1
- {"version":3,"names":["AudioScheduledSourceNode","AudioBuffer","AudioParam","InvalidStateError","RangeError","AudioBufferSourceNode","constructor","context","node","detune","playbackRate","buffer","loop","value","loopStart","loopEnd","start","when","offset","duration","hasBeenStarted"],"sourceRoot":"../../../src","sources":["core/AudioBufferSourceNode.ts"],"mappings":";;AACA,OAAOA,wBAAwB,MAAM,+BAA4B;AAEjE,OAAOC,WAAW,MAAM,kBAAe;AACvC,OAAOC,UAAU,MAAM,iBAAc;AACrC,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,oBAAW;AAEzD,eAAe,MAAMC,qBAAqB,SAASL,wBAAwB,CAAC;EAI1EM,WAAWA,CAACC,OAAyB,EAAEC,IAA4B,EAAE;IACnE,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IAEpB,IAAI,CAACC,MAAM,GAAG,IAAIP,UAAU,CAACM,IAAI,CAACC,MAAM,CAAC;IACzC,IAAI,CAACC,YAAY,GAAG,IAAIR,UAAU,CAACM,IAAI,CAACE,YAAY,CAAC;EACvD;EAEA,IAAWC,MAAMA,CAAA,EAAuB;IACtC,MAAMA,MAAM,GAAI,IAAI,CAACH,IAAI,CAA4BG,MAAM;IAC3D,IAAI,CAACA,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,IAAIV,WAAW,CAACU,MAAM,CAAC;EAChC;EAEA,IAAWA,MAAMA,CAACA,MAA0B,EAAE;IAC5C,IAAI,CAACA,MAAM,EAAE;MACV,IAAI,CAACH,IAAI,CAA4BG,MAAM,GAAG,IAAI;MACnD;IACF;IAEC,IAAI,CAACH,IAAI,CAA4BG,MAAM,GAAGA,MAAM,CAACA,MAAM;EAC9D;EAEA,IAAWC,IAAIA,CAAA,EAAY;IACzB,OAAQ,IAAI,CAACJ,IAAI,CAA4BI,IAAI;EACnD;EAEA,IAAWA,IAAIA,CAACC,KAAc,EAAE;IAC7B,IAAI,CAACL,IAAI,CAA4BI,IAAI,GAAGC,KAAK;EACpD;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC7B,OAAQ,IAAI,CAACN,IAAI,CAA4BM,SAAS;EACxD;EAEA,IAAWA,SAASA,CAACD,KAAa,EAAE;IACjC,IAAI,CAACL,IAAI,CAA4BM,SAAS,GAAGD,KAAK;EACzD;EAEA,IAAWE,OAAOA,CAAA,EAAW;IAC3B,OAAQ,IAAI,CAACP,IAAI,CAA4BO,OAAO;EACtD;EAEA,IAAWA,OAAOA,CAACF,KAAa,EAAE;IAC/B,IAAI,CAACL,IAAI,CAA4BO,OAAO,GAAGF,KAAK;EACvD;EAEOG,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAEC,MAAc,GAAG,CAAC,EAAEC,QAAiB,EAAQ;IAC1E,IAAIF,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIb,UAAU,CAClB,8CAA8Ca,IAAI,EACpD,CAAC;IACH;IAEA,IAAIC,MAAM,GAAG,CAAC,EAAE;MACd,MAAM,IAAId,UAAU,CAClB,gDAAgDc,MAAM,EACxD,CAAC;IACH;IAEA,IAAIC,QAAQ,IAAIA,QAAQ,GAAG,CAAC,EAAE;MAC5B,MAAM,IAAIf,UAAU,CAClB,kDAAkDe,QAAQ,EAC5D,CAAC;IACH;IAEA,IAAI,IAAI,CAACC,cAAc,EAAE;MACvB,MAAM,IAAIjB,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACiB,cAAc,GAAG,IAAI;IACzB,IAAI,CAACZ,IAAI,CAA4BQ,KAAK,CAACC,IAAI,EAAEC,MAAM,EAAEC,QAAQ,CAAC;EACrE;AACF","ignoreList":[]}
1
+ {"version":3,"names":["AudioScheduledSourceNode","AudioBuffer","AudioParam","InvalidStateError","RangeError","AudioBufferSourceNode","constructor","context","node","detune","playbackRate","buffer","loop","value","loopStart","loopEnd","timeStretch","start","when","offset","duration","hasBeenStarted"],"sourceRoot":"../../../src","sources":["core/AudioBufferSourceNode.ts"],"mappings":";;AACA,OAAOA,wBAAwB,MAAM,+BAA4B;AAEjE,OAAOC,WAAW,MAAM,kBAAe;AACvC,OAAOC,UAAU,MAAM,iBAAc;AACrC,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,oBAAW;AAGzD,eAAe,MAAMC,qBAAqB,SAASL,wBAAwB,CAAC;EAI1EM,WAAWA,CAACC,OAAyB,EAAEC,IAA4B,EAAE;IACnE,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IAEpB,IAAI,CAACC,MAAM,GAAG,IAAIP,UAAU,CAACM,IAAI,CAACC,MAAM,CAAC;IACzC,IAAI,CAACC,YAAY,GAAG,IAAIR,UAAU,CAACM,IAAI,CAACE,YAAY,CAAC;EACvD;EAEA,IAAWC,MAAMA,CAAA,EAAuB;IACtC,MAAMA,MAAM,GAAI,IAAI,CAACH,IAAI,CAA4BG,MAAM;IAC3D,IAAI,CAACA,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,IAAIV,WAAW,CAACU,MAAM,CAAC;EAChC;EAEA,IAAWA,MAAMA,CAACA,MAA0B,EAAE;IAC5C,IAAI,CAACA,MAAM,EAAE;MACV,IAAI,CAACH,IAAI,CAA4BG,MAAM,GAAG,IAAI;MACnD;IACF;IAEC,IAAI,CAACH,IAAI,CAA4BG,MAAM,GAAGA,MAAM,CAACA,MAAM;EAC9D;EAEA,IAAWC,IAAIA,CAAA,EAAY;IACzB,OAAQ,IAAI,CAACJ,IAAI,CAA4BI,IAAI;EACnD;EAEA,IAAWA,IAAIA,CAACC,KAAc,EAAE;IAC7B,IAAI,CAACL,IAAI,CAA4BI,IAAI,GAAGC,KAAK;EACpD;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC7B,OAAQ,IAAI,CAACN,IAAI,CAA4BM,SAAS;EACxD;EAEA,IAAWA,SAASA,CAACD,KAAa,EAAE;IACjC,IAAI,CAACL,IAAI,CAA4BM,SAAS,GAAGD,KAAK;EACzD;EAEA,IAAWE,OAAOA,CAAA,EAAW;IAC3B,OAAQ,IAAI,CAACP,IAAI,CAA4BO,OAAO;EACtD;EAEA,IAAWA,OAAOA,CAACF,KAAa,EAAE;IAC/B,IAAI,CAACL,IAAI,CAA4BO,OAAO,GAAGF,KAAK;EACvD;EAEA,IAAWG,WAAWA,CAAA,EAAoB;IACxC,OAAQ,IAAI,CAACR,IAAI,CAA4BQ,WAAW;EAC1D;EAEA,IAAWA,WAAWA,CAACH,KAAsB,EAAE;IAC5C,IAAI,CAACL,IAAI,CAA4BQ,WAAW,GAAGH,KAAK;EAC3D;EAEOI,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAEC,MAAc,GAAG,CAAC,EAAEC,QAAiB,EAAQ;IAC1E,IAAIF,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAId,UAAU,CAClB,8CAA8Cc,IAAI,EACpD,CAAC;IACH;IAEA,IAAIC,MAAM,GAAG,CAAC,EAAE;MACd,MAAM,IAAIf,UAAU,CAClB,gDAAgDe,MAAM,EACxD,CAAC;IACH;IAEA,IAAIC,QAAQ,IAAIA,QAAQ,GAAG,CAAC,EAAE;MAC5B,MAAM,IAAIhB,UAAU,CAClB,kDAAkDgB,QAAQ,EAC5D,CAAC;IACH;IAEA,IAAI,IAAI,CAACC,cAAc,EAAE;MACvB,MAAM,IAAIlB,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACkB,cAAc,GAAG,IAAI;IACzB,IAAI,CAACb,IAAI,CAA4BS,KAAK,CAACC,IAAI,EAAEC,MAAM,EAAEC,QAAQ,CAAC;EACrE;AACF","ignoreList":[]}
@@ -23,5 +23,10 @@ export default class AudioScheduledSourceNode extends AudioNode {
23
23
  }
24
24
  this.node.stop(when);
25
25
  }
26
+
27
+ // eslint-disable-next-line accessor-pairs
28
+ set onended(callback) {
29
+ this.node.onended = callback;
30
+ }
26
31
  }
27
32
  //# sourceMappingURL=AudioScheduledSourceNode.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AudioNode","InvalidStateError","RangeError","AudioScheduledSourceNode","hasBeenStarted","start","when","node","stop"],"sourceRoot":"../../../src","sources":["core/AudioScheduledSourceNode.ts"],"mappings":";;AACA,OAAOA,SAAS,MAAM,gBAAa;AACnC,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,oBAAW;AAEzD,eAAe,MAAMC,wBAAwB,SAASH,SAAS,CAAC;EACpDI,cAAc,GAAY,KAAK;EAElCC,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAQ;IACnC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIJ,UAAU,CAClB,8CAA8CI,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,IAAI,CAACF,cAAc,EAAE;MACvB,MAAM,IAAIH,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACG,cAAc,GAAG,IAAI;IACzB,IAAI,CAACG,IAAI,CAA+BF,KAAK,CAACC,IAAI,CAAC;EACtD;EAEOE,IAAIA,CAACF,IAAY,GAAG,CAAC,EAAQ;IAClC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIJ,UAAU,CAClB,8CAA8CI,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,CAAC,IAAI,CAACF,cAAc,EAAE;MACxB,MAAM,IAAIH,iBAAiB,CACzB,8CACF,CAAC;IACH;IAEC,IAAI,CAACM,IAAI,CAA+BC,IAAI,CAACF,IAAI,CAAC;EACrD;AACF","ignoreList":[]}
1
+ {"version":3,"names":["AudioNode","InvalidStateError","RangeError","AudioScheduledSourceNode","hasBeenStarted","start","when","node","stop","onended","callback"],"sourceRoot":"../../../src","sources":["core/AudioScheduledSourceNode.ts"],"mappings":";;AACA,OAAOA,SAAS,MAAM,gBAAa;AACnC,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,oBAAW;AAEzD,eAAe,MAAMC,wBAAwB,SAASH,SAAS,CAAC;EACpDI,cAAc,GAAY,KAAK;EAElCC,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAQ;IACnC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIJ,UAAU,CAClB,8CAA8CI,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,IAAI,CAACF,cAAc,EAAE;MACvB,MAAM,IAAIH,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACG,cAAc,GAAG,IAAI;IACzB,IAAI,CAACG,IAAI,CAA+BF,KAAK,CAACC,IAAI,CAAC;EACtD;EAEOE,IAAIA,CAACF,IAAY,GAAG,CAAC,EAAQ;IAClC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIJ,UAAU,CAClB,8CAA8CI,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,CAAC,IAAI,CAACF,cAAc,EAAE;MACxB,MAAM,IAAIH,iBAAiB,CACzB,8CACF,CAAC;IACH;IAEC,IAAI,CAACM,IAAI,CAA+BC,IAAI,CAACF,IAAI,CAAC;EACrD;;EAEA;EACA,IAAWG,OAAOA,CAACC,QAAgC,EAAE;IAClD,IAAI,CAACH,IAAI,CAA+BE,OAAO,GAAGC,QAAQ;EAC7D;AACF","ignoreList":[]}
@@ -9,7 +9,6 @@ import AudioBufferSourceNode from "./AudioBufferSourceNode.js";
9
9
  import AudioBuffer from "./AudioBuffer.js";
10
10
  import PeriodicWave from "./PeriodicWave.js";
11
11
  import AnalyserNode from "./AnalyserNode.js";
12
- import StretcherNode from "./StretcherNode.js";
13
12
  import { InvalidAccessError, NotSupportedError } from "../errors/index.js";
14
13
  export default class BaseAudioContext {
15
14
  constructor(context) {
@@ -60,9 +59,6 @@ export default class BaseAudioContext {
60
59
  createAnalyser() {
61
60
  return new AnalyserNode(this, this.context.createAnalyser());
62
61
  }
63
- createStretcher() {
64
- return new StretcherNode(this, this.context.createStretcher());
65
- }
66
62
  async decodeAudioDataSource(sourcePath) {
67
63
  // Remove the file:// prefix if it exists
68
64
  if (sourcePath.startsWith('file://')) {
@@ -1 +1 @@
1
- {"version":3,"names":["AudioDestinationNode","OscillatorNode","GainNode","StereoPannerNode","BiquadFilterNode","AudioBufferSourceNode","AudioBuffer","PeriodicWave","AnalyserNode","StretcherNode","InvalidAccessError","NotSupportedError","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","createOscillator","createGain","createStereoPanner","createBiquadFilter","createBufferSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser","createStretcher","decodeAudioDataSource","sourcePath","startsWith","replace"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":";;AAEA,OAAOA,oBAAoB,MAAM,2BAAwB;AACzD,OAAOC,cAAc,MAAM,qBAAkB;AAC7C,OAAOC,QAAQ,MAAM,eAAY;AACjC,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,qBAAqB,MAAM,4BAAyB;AAC3D,OAAOC,WAAW,MAAM,kBAAe;AACvC,OAAOC,YAAY,MAAM,mBAAgB;AACzC,OAAOC,YAAY,MAAM,mBAAgB;AACzC,OAAOC,aAAa,MAAM,oBAAiB;AAC3C,SAASC,kBAAkB,EAAEC,iBAAiB,QAAQ,oBAAW;AAEjE,eAAe,MAAMC,gBAAgB,CAAC;EAKpCC,WAAWA,CAACC,OAA0B,EAAE;IACtC,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,WAAW,GAAG,IAAIf,oBAAoB,CAAC,IAAI,EAAEc,OAAO,CAACC,WAAW,CAAC;IACtE,IAAI,CAACC,UAAU,GAAGF,OAAO,CAACE,UAAU;EACtC;EAEA,IAAWC,WAAWA,CAAA,EAAW;IAC/B,OAAO,IAAI,CAACH,OAAO,CAACG,WAAW;EACjC;EAEA,IAAWC,KAAKA,CAAA,EAAiB;IAC/B,OAAO,IAAI,CAACJ,OAAO,CAACI,KAAK;EAC3B;EAEAC,gBAAgBA,CAAA,EAAmB;IACjC,OAAO,IAAIlB,cAAc,CAAC,IAAI,EAAE,IAAI,CAACa,OAAO,CAACK,gBAAgB,CAAC,CAAC,CAAC;EAClE;EAEAC,UAAUA,CAAA,EAAa;IACrB,OAAO,IAAIlB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACY,OAAO,CAACM,UAAU,CAAC,CAAC,CAAC;EACtD;EAEAC,kBAAkBA,CAAA,EAAqB;IACrC,OAAO,IAAIlB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAACW,OAAO,CAACO,kBAAkB,CAAC,CAAC,CAAC;EACtE;EAEAC,kBAAkBA,CAAA,EAAqB;IACrC,OAAO,IAAIlB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAACU,OAAO,CAACQ,kBAAkB,CAAC,CAAC,CAAC;EACtE;EAEAC,kBAAkBA,CAAA,EAA0B;IAC1C,OAAO,IAAIlB,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAACS,OAAO,CAACS,kBAAkB,CAAC,CAAC,CAAC;EAC3E;EAEAC,YAAYA,CACVC,aAAqB,EACrBC,MAAc,EACdV,UAAkB,EACL;IACb,IAAIS,aAAa,GAAG,CAAC,IAAIA,aAAa,IAAI,EAAE,EAAE;MAC5C,MAAM,IAAId,iBAAiB,CACzB,oCAAoCc,aAAa,gCACnD,CAAC;IACH;IAEA,IAAIC,MAAM,IAAI,CAAC,EAAE;MACf,MAAM,IAAIf,iBAAiB,CACzB,kCAAkCe,MAAM,kDAC1C,CAAC;IACH;IAEA,IAAIV,UAAU,GAAG,IAAI,IAAIA,UAAU,GAAG,KAAK,EAAE;MAC3C,MAAM,IAAIL,iBAAiB,CACzB,6BAA6BK,UAAU,sCACzC,CAAC;IACH;IAEA,OAAO,IAAIV,WAAW,CACpB,IAAI,CAACQ,OAAO,CAACU,YAAY,CAACC,aAAa,EAAEC,MAAM,EAAEV,UAAU,CAC7D,CAAC;EACH;EAEAW,kBAAkBA,CAChBC,IAAc,EACdC,IAAc,EACdC,WAAqC,EACvB;IACd,IAAIF,IAAI,CAACF,MAAM,KAAKG,IAAI,CAACH,MAAM,EAAE;MAC/B,MAAM,IAAIhB,kBAAkB,CAC1B,4BAA4BkB,IAAI,CAACF,MAAM,oBAAoBG,IAAI,CAACH,MAAM,sBACxE,CAAC;IACH;IAEA,MAAMK,oBAAoB,GAAGD,WAAW,EAAEC,oBAAoB,IAAI,KAAK;IAEvE,OAAO,IAAIxB,YAAY,CACrB,IAAI,CAACO,OAAO,CAACa,kBAAkB,CAACC,IAAI,EAAEC,IAAI,EAAEE,oBAAoB,CAClE,CAAC;EACH;EAEAC,cAAcA,CAAA,EAAiB;IAC7B,OAAO,IAAIxB,YAAY,CAAC,IAAI,EAAE,IAAI,CAACM,OAAO,CAACkB,cAAc,CAAC,CAAC,CAAC;EAC9D;EAEAC,eAAeA,CAAA,EAAkB;IAC/B,OAAO,IAAIxB,aAAa,CAAC,IAAI,EAAE,IAAI,CAACK,OAAO,CAACmB,eAAe,CAAC,CAAC,CAAC;EAChE;EAEA,MAAMC,qBAAqBA,CAACC,UAAkB,EAAwB;IACpE;IACA,IAAIA,UAAU,CAACC,UAAU,CAAC,SAAS,CAAC,EAAE;MACpCD,UAAU,GAAGA,UAAU,CAACE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAChD;IAEA,OAAO,IAAI/B,WAAW,CACpB,MAAM,IAAI,CAACQ,OAAO,CAACoB,qBAAqB,CAACC,UAAU,CACrD,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"names":["AudioDestinationNode","OscillatorNode","GainNode","StereoPannerNode","BiquadFilterNode","AudioBufferSourceNode","AudioBuffer","PeriodicWave","AnalyserNode","InvalidAccessError","NotSupportedError","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","createOscillator","createGain","createStereoPanner","createBiquadFilter","createBufferSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser","decodeAudioDataSource","sourcePath","startsWith","replace"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":";;AAEA,OAAOA,oBAAoB,MAAM,2BAAwB;AACzD,OAAOC,cAAc,MAAM,qBAAkB;AAC7C,OAAOC,QAAQ,MAAM,eAAY;AACjC,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,OAAOC,qBAAqB,MAAM,4BAAyB;AAC3D,OAAOC,WAAW,MAAM,kBAAe;AACvC,OAAOC,YAAY,MAAM,mBAAgB;AACzC,OAAOC,YAAY,MAAM,mBAAgB;AACzC,SAASC,kBAAkB,EAAEC,iBAAiB,QAAQ,oBAAW;AAEjE,eAAe,MAAMC,gBAAgB,CAAC;EAKpCC,WAAWA,CAACC,OAA0B,EAAE;IACtC,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,WAAW,GAAG,IAAId,oBAAoB,CAAC,IAAI,EAAEa,OAAO,CAACC,WAAW,CAAC;IACtE,IAAI,CAACC,UAAU,GAAGF,OAAO,CAACE,UAAU;EACtC;EAEA,IAAWC,WAAWA,CAAA,EAAW;IAC/B,OAAO,IAAI,CAACH,OAAO,CAACG,WAAW;EACjC;EAEA,IAAWC,KAAKA,CAAA,EAAiB;IAC/B,OAAO,IAAI,CAACJ,OAAO,CAACI,KAAK;EAC3B;EAEAC,gBAAgBA,CAAA,EAAmB;IACjC,OAAO,IAAIjB,cAAc,CAAC,IAAI,EAAE,IAAI,CAACY,OAAO,CAACK,gBAAgB,CAAC,CAAC,CAAC;EAClE;EAEAC,UAAUA,CAAA,EAAa;IACrB,OAAO,IAAIjB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAACW,OAAO,CAACM,UAAU,CAAC,CAAC,CAAC;EACtD;EAEAC,kBAAkBA,CAAA,EAAqB;IACrC,OAAO,IAAIjB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAACU,OAAO,CAACO,kBAAkB,CAAC,CAAC,CAAC;EACtE;EAEAC,kBAAkBA,CAAA,EAAqB;IACrC,OAAO,IAAIjB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAACS,OAAO,CAACQ,kBAAkB,CAAC,CAAC,CAAC;EACtE;EAEAC,kBAAkBA,CAAA,EAA0B;IAC1C,OAAO,IAAIjB,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAACQ,OAAO,CAACS,kBAAkB,CAAC,CAAC,CAAC;EAC3E;EAEAC,YAAYA,CACVC,aAAqB,EACrBC,MAAc,EACdV,UAAkB,EACL;IACb,IAAIS,aAAa,GAAG,CAAC,IAAIA,aAAa,IAAI,EAAE,EAAE;MAC5C,MAAM,IAAId,iBAAiB,CACzB,oCAAoCc,aAAa,gCACnD,CAAC;IACH;IAEA,IAAIC,MAAM,IAAI,CAAC,EAAE;MACf,MAAM,IAAIf,iBAAiB,CACzB,kCAAkCe,MAAM,kDAC1C,CAAC;IACH;IAEA,IAAIV,UAAU,GAAG,IAAI,IAAIA,UAAU,GAAG,KAAK,EAAE;MAC3C,MAAM,IAAIL,iBAAiB,CACzB,6BAA6BK,UAAU,sCACzC,CAAC;IACH;IAEA,OAAO,IAAIT,WAAW,CACpB,IAAI,CAACO,OAAO,CAACU,YAAY,CAACC,aAAa,EAAEC,MAAM,EAAEV,UAAU,CAC7D,CAAC;EACH;EAEAW,kBAAkBA,CAChBC,IAAc,EACdC,IAAc,EACdC,WAAqC,EACvB;IACd,IAAIF,IAAI,CAACF,MAAM,KAAKG,IAAI,CAACH,MAAM,EAAE;MAC/B,MAAM,IAAIhB,kBAAkB,CAC1B,4BAA4BkB,IAAI,CAACF,MAAM,oBAAoBG,IAAI,CAACH,MAAM,sBACxE,CAAC;IACH;IAEA,MAAMK,oBAAoB,GAAGD,WAAW,EAAEC,oBAAoB,IAAI,KAAK;IAEvE,OAAO,IAAIvB,YAAY,CACrB,IAAI,CAACM,OAAO,CAACa,kBAAkB,CAACC,IAAI,EAAEC,IAAI,EAAEE,oBAAoB,CAClE,CAAC;EACH;EAEAC,cAAcA,CAAA,EAAiB;IAC7B,OAAO,IAAIvB,YAAY,CAAC,IAAI,EAAE,IAAI,CAACK,OAAO,CAACkB,cAAc,CAAC,CAAC,CAAC;EAC9D;EAEA,MAAMC,qBAAqBA,CAACC,UAAkB,EAAwB;IACpE;IACA,IAAIA,UAAU,CAACC,UAAU,CAAC,SAAS,CAAC,EAAE;MACpCD,UAAU,GAAGA,UAAU,CAACE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAChD;IAEA,OAAO,IAAI7B,WAAW,CACpB,MAAM,IAAI,CAACO,OAAO,CAACmB,qBAAqB,CAACC,UAAU,CACrD,CAAC;EACH;AACF","ignoreList":[]}
@@ -1,31 +1,4 @@
1
1
  "use strict";
2
2
 
3
- import NativeAudioAPIModule from "./specs/NativeAudioAPIModule.js";
4
-
5
- /* eslint-disable no-var */
6
-
7
- /* eslint-disable no-var */
8
-
9
- if (global.createAudioContext == null) {
10
- if (!NativeAudioAPIModule) {
11
- throw new Error(`Failed to install react-native-audio-api: The native module could not be found.`);
12
- }
13
- NativeAudioAPIModule.install();
14
- }
15
- export { default as AudioBuffer } from "./core/AudioBuffer.js";
16
- export { default as AudioBufferSourceNode } from "./core/AudioBufferSourceNode.js";
17
- export { default as AudioContext } from "./core/AudioContext.js";
18
- export { default as AudioDestinationNode } from "./core/AudioDestinationNode.js";
19
- export { default as AudioNode } from "./core/AudioNode.js";
20
- export { default as AnalyserNode } from "./core/AnalyserNode.js";
21
- export { default as AudioParam } from "./core/AudioParam.js";
22
- export { default as AudioScheduledSourceNode } from "./core/AudioScheduledSourceNode.js";
23
- export { default as BaseAudioContext } from "./core/BaseAudioContext.js";
24
- export { default as BiquadFilterNode } from "./core/BiquadFilterNode.js";
25
- export { default as GainNode } from "./core/GainNode.js";
26
- export { default as OscillatorNode } from "./core/OscillatorNode.js";
27
- export { default as StereoPannerNode } from "./core/StereoPannerNode.js";
28
- export { default as StretcherNode } from "./core/StretcherNode.js";
29
- export { OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, WindowType, PeriodicWaveConstraints } from "./types.js";
30
- export { IndexSizeError, InvalidAccessError, InvalidStateError, RangeError, NotSupportedError } from "./errors/index.js";
3
+ export * from './api';
31
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeAudioAPIModule","global","createAudioContext","Error","install","default","AudioBuffer","AudioBufferSourceNode","AudioContext","AudioDestinationNode","AudioNode","AnalyserNode","AudioParam","AudioScheduledSourceNode","BaseAudioContext","BiquadFilterNode","GainNode","OscillatorNode","StereoPannerNode","StretcherNode","OscillatorType","BiquadFilterType","ChannelCountMode","ChannelInterpretation","ContextState","WindowType","PeriodicWaveConstraints","IndexSizeError","InvalidAccessError","InvalidStateError","RangeError","NotSupportedError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,OAAOA,oBAAoB,MAAM,iCAA8B;;AAG/D;;AAIA;;AAEA,IAAIC,MAAM,CAACC,kBAAkB,IAAI,IAAI,EAAE;EACrC,IAAI,CAACF,oBAAoB,EAAE;IACzB,MAAM,IAAIG,KAAK,CACb,iFACF,CAAC;EACH;EAEAH,oBAAoB,CAACI,OAAO,CAAC,CAAC;AAChC;AAEA,SAASC,OAAO,IAAIC,WAAW,QAAQ,uBAAoB;AAC3D,SAASD,OAAO,IAAIE,qBAAqB,QAAQ,iCAA8B;AAC/E,SAASF,OAAO,IAAIG,YAAY,QAAQ,wBAAqB;AAC7D,SAASH,OAAO,IAAII,oBAAoB,QAAQ,gCAA6B;AAC7E,SAASJ,OAAO,IAAIK,SAAS,QAAQ,qBAAkB;AACvD,SAASL,OAAO,IAAIM,YAAY,QAAQ,wBAAqB;AAC7D,SAASN,OAAO,IAAIO,UAAU,QAAQ,sBAAmB;AACzD,SAASP,OAAO,IAAIQ,wBAAwB,QAAQ,oCAAiC;AACrF,SAASR,OAAO,IAAIS,gBAAgB,QAAQ,4BAAyB;AACrE,SAAST,OAAO,IAAIU,gBAAgB,QAAQ,4BAAyB;AACrE,SAASV,OAAO,IAAIW,QAAQ,QAAQ,oBAAiB;AACrD,SAASX,OAAO,IAAIY,cAAc,QAAQ,0BAAuB;AACjE,SAASZ,OAAO,IAAIa,gBAAgB,QAAQ,4BAAyB;AACrE,SAASb,OAAO,IAAIc,aAAa,QAAQ,yBAAsB;AAE/D,SACEC,cAAc,EACdC,gBAAgB,EAChBC,gBAAgB,EAChBC,qBAAqB,EACrBC,YAAY,EACZC,UAAU,EACVC,uBAAuB,QAClB,YAAS;AAEhB,SACEC,cAAc,EACdC,kBAAkB,EAClBC,iBAAiB,EACjBC,UAAU,EACVC,iBAAiB,QACZ,mBAAU","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,OAAO","ignoreList":[]}
@@ -15,7 +15,7 @@ export default class AudioBuffer {
15
15
  if (channel < 0 || channel >= this.numberOfChannels) {
16
16
  throw new IndexSizeError(`The channel number provided (${channel}) is outside the range [0, ${this.numberOfChannels - 1}]`);
17
17
  }
18
- return Array.from(this.buffer.getChannelData(channel));
18
+ return this.buffer.getChannelData(channel);
19
19
  }
20
20
  copyFromChannel(destination, channelNumber, startInChannel = 0) {
21
21
  if (channelNumber < 0 || channelNumber >= this.numberOfChannels) {
@@ -1 +1 @@
1
- {"version":3,"names":["IndexSizeError","AudioBuffer","constructor","buffer","length","duration","sampleRate","numberOfChannels","getChannelData","channel","Array","from","copyFromChannel","destination","channelNumber","startInChannel","array","Float32Array","i","copyToChannel","source"],"sourceRoot":"../../../src","sources":["web-core/AudioBuffer.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,oBAAW;AAE1C,eAAe,MAAMC,WAAW,CAAC;EAM/B;;EAGAC,WAAWA,CAACC,MAA8B,EAAE;IAC1C,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,MAAM,GAAGD,MAAM,CAACC,MAAM;IAC3B,IAAI,CAACC,QAAQ,GAAGF,MAAM,CAACE,QAAQ;IAC/B,IAAI,CAACC,UAAU,GAAGH,MAAM,CAACG,UAAU;IACnC,IAAI,CAACC,gBAAgB,GAAGJ,MAAM,CAACI,gBAAgB;EACjD;EAEOC,cAAcA,CAACC,OAAe,EAAY;IAC/C,IAAIA,OAAO,GAAG,CAAC,IAAIA,OAAO,IAAI,IAAI,CAACF,gBAAgB,EAAE;MACnD,MAAM,IAAIP,cAAc,CACtB,gCAAgCS,OAAO,8BAA8B,IAAI,CAACF,gBAAgB,GAAG,CAAC,GAChG,CAAC;IACH;IAEA,OAAOG,KAAK,CAACC,IAAI,CAAC,IAAI,CAACR,MAAM,CAACK,cAAc,CAACC,OAAO,CAAC,CAAC;EACxD;EAEOG,eAAeA,CACpBC,WAAqB,EACrBC,aAAqB,EACrBC,cAAsB,GAAG,CAAC,EACpB;IACN,IAAID,aAAa,GAAG,CAAC,IAAIA,aAAa,IAAI,IAAI,CAACP,gBAAgB,EAAE;MAC/D,MAAM,IAAIP,cAAc,CACtB,gCAAgCc,aAAa,8BAA8B,IAAI,CAACP,gBAAgB,GAAG,CAAC,GACtG,CAAC;IACH;IAEA,IAAIQ,cAAc,GAAG,CAAC,IAAIA,cAAc,IAAI,IAAI,CAACX,MAAM,EAAE;MACvD,MAAM,IAAIJ,cAAc,CACtB,uCAAuCe,cAAc,8BAA8B,IAAI,CAACX,MAAM,GAAG,CAAC,GACpG,CAAC;IACH;IAEA,MAAMY,KAAK,GAAG,IAAIC,YAAY,CAACJ,WAAW,CAAC;IAE3C,IAAI,CAACV,MAAM,CAACS,eAAe,CAACI,KAAK,EAAEF,aAAa,EAAEC,cAAc,CAAC;IAEjE,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,WAAW,CAACT,MAAM,EAAEc,CAAC,EAAE,EAAE;MAC3CL,WAAW,CAACK,CAAC,CAAC,GAAGF,KAAK,CAACE,CAAC,CAAC;IAC3B;EACF;EAEOC,aAAaA,CAClBC,MAAgB,EAChBN,aAAqB,EACrBC,cAAsB,GAAG,CAAC,EACpB;IACN,IAAID,aAAa,GAAG,CAAC,IAAIA,aAAa,IAAI,IAAI,CAACP,gBAAgB,EAAE;MAC/D,MAAM,IAAIP,cAAc,CACtB,gCAAgCc,aAAa,8BAA8B,IAAI,CAACP,gBAAgB,GAAG,CAAC,GACtG,CAAC;IACH;IAEA,IAAIQ,cAAc,GAAG,CAAC,IAAIA,cAAc,IAAI,IAAI,CAACX,MAAM,EAAE;MACvD,MAAM,IAAIJ,cAAc,CACtB,uCAAuCe,cAAc,8BAA8B,IAAI,CAACX,MAAM,GAAG,CAAC,GACpG,CAAC;IACH;IAEA,IAAI,CAACD,MAAM,CAACgB,aAAa,CACvB,IAAIF,YAAY,CAACG,MAAM,CAAC,EACxBN,aAAa,EACbC,cACF,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"names":["IndexSizeError","AudioBuffer","constructor","buffer","length","duration","sampleRate","numberOfChannels","getChannelData","channel","copyFromChannel","destination","channelNumber","startInChannel","array","Float32Array","i","copyToChannel","source"],"sourceRoot":"../../../src","sources":["web-core/AudioBuffer.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,oBAAW;AAE1C,eAAe,MAAMC,WAAW,CAAC;EAM/B;;EAGAC,WAAWA,CAACC,MAA8B,EAAE;IAC1C,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,MAAM,GAAGD,MAAM,CAACC,MAAM;IAC3B,IAAI,CAACC,QAAQ,GAAGF,MAAM,CAACE,QAAQ;IAC/B,IAAI,CAACC,UAAU,GAAGH,MAAM,CAACG,UAAU;IACnC,IAAI,CAACC,gBAAgB,GAAGJ,MAAM,CAACI,gBAAgB;EACjD;EAEOC,cAAcA,CAACC,OAAe,EAAgB;IACnD,IAAIA,OAAO,GAAG,CAAC,IAAIA,OAAO,IAAI,IAAI,CAACF,gBAAgB,EAAE;MACnD,MAAM,IAAIP,cAAc,CACtB,gCAAgCS,OAAO,8BAA8B,IAAI,CAACF,gBAAgB,GAAG,CAAC,GAChG,CAAC;IACH;IAEA,OAAO,IAAI,CAACJ,MAAM,CAACK,cAAc,CAACC,OAAO,CAAC;EAC5C;EAEOC,eAAeA,CACpBC,WAAqB,EACrBC,aAAqB,EACrBC,cAAsB,GAAG,CAAC,EACpB;IACN,IAAID,aAAa,GAAG,CAAC,IAAIA,aAAa,IAAI,IAAI,CAACL,gBAAgB,EAAE;MAC/D,MAAM,IAAIP,cAAc,CACtB,gCAAgCY,aAAa,8BAA8B,IAAI,CAACL,gBAAgB,GAAG,CAAC,GACtG,CAAC;IACH;IAEA,IAAIM,cAAc,GAAG,CAAC,IAAIA,cAAc,IAAI,IAAI,CAACT,MAAM,EAAE;MACvD,MAAM,IAAIJ,cAAc,CACtB,uCAAuCa,cAAc,8BAA8B,IAAI,CAACT,MAAM,GAAG,CAAC,GACpG,CAAC;IACH;IAEA,MAAMU,KAAK,GAAG,IAAIC,YAAY,CAACJ,WAAW,CAAC;IAE3C,IAAI,CAACR,MAAM,CAACO,eAAe,CAACI,KAAK,EAAEF,aAAa,EAAEC,cAAc,CAAC;IAEjE,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,WAAW,CAACP,MAAM,EAAEY,CAAC,EAAE,EAAE;MAC3CL,WAAW,CAACK,CAAC,CAAC,GAAGF,KAAK,CAACE,CAAC,CAAC;IAC3B;EACF;EAEOC,aAAaA,CAClBC,MAAgB,EAChBN,aAAqB,EACrBC,cAAsB,GAAG,CAAC,EACpB;IACN,IAAID,aAAa,GAAG,CAAC,IAAIA,aAAa,IAAI,IAAI,CAACL,gBAAgB,EAAE;MAC/D,MAAM,IAAIP,cAAc,CACtB,gCAAgCY,aAAa,8BAA8B,IAAI,CAACL,gBAAgB,GAAG,CAAC,GACtG,CAAC;IACH;IAEA,IAAIM,cAAc,GAAG,CAAC,IAAIA,cAAc,IAAI,IAAI,CAACT,MAAM,EAAE;MACvD,MAAM,IAAIJ,cAAc,CACtB,uCAAuCa,cAAc,8BAA8B,IAAI,CAACT,MAAM,GAAG,CAAC,GACpG,CAAC;IACH;IAEA,IAAI,CAACD,MAAM,CAACc,aAAa,CACvB,IAAIF,YAAY,CAACG,MAAM,CAAC,EACxBN,aAAa,EACbC,cACF,CAAC;EACH;AACF","ignoreList":[]}
@@ -42,6 +42,12 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
42
42
  set loopEnd(value) {
43
43
  this.node.loopEnd = value;
44
44
  }
45
+ get timeStretch() {
46
+ return 'linear';
47
+ }
48
+ set timeStretch(value) {
49
+ console.log('React Native Audio API: setting timeStretch is not supported on web');
50
+ }
45
51
  start(when, offset, duration) {
46
52
  if (when && when < 0) {
47
53
  throw new RangeError(`when must be a finite non-negative number: ${when}`);
@@ -1 +1 @@
1
- {"version":3,"names":["AudioScheduledSourceNode","AudioParam","AudioBuffer","InvalidStateError","RangeError","AudioBufferSourceNode","constructor","context","node","detune","playbackRate","buffer","loop","value","loopStart","loopEnd","start","when","offset","duration","hasBeenStarted"],"sourceRoot":"../../../src","sources":["web-core/AudioBufferSourceNode.tsx"],"mappings":";;AAAA,OAAOA,wBAAwB,MAAM,+BAA4B;AACjE,OAAOC,UAAU,MAAM,iBAAc;AACrC,OAAOC,WAAW,MAAM,kBAAe;AACvC,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,oBAAW;AAGzD,eAAe,MAAMC,qBAAqB,SAASL,wBAAwB,CAAC;EAI1EM,WAAWA,CACTC,OAAyB,EACzBC,IAAsC,EACtC;IACA,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IAEpB,IAAI,CAACC,MAAM,GAAG,IAAIR,UAAU,CAACO,IAAI,CAACC,MAAM,CAAC;IACzC,IAAI,CAACC,YAAY,GAAG,IAAIT,UAAU,CAACO,IAAI,CAACE,YAAY,CAAC;EACvD;EAEA,IAAWC,MAAMA,CAAA,EAAuB;IACtC,MAAMA,MAAM,GAAI,IAAI,CAACH,IAAI,CAAsCG,MAAM;IAErE,IAAI,CAACA,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IAEA,OAAO,IAAIT,WAAW,CAACS,MAAM,CAAC;EAChC;EAEA,IAAWA,MAAMA,CAACA,MAA0B,EAAE;IAC5C,IAAI,CAACA,MAAM,EAAE;MACV,IAAI,CAACH,IAAI,GAA+C,IAAI;MAC7D;IACF;IAEC,IAAI,CAACA,IAAI,CAAsCG,MAAM,GAAGA,MAAM,CAACA,MAAM;EACxE;EAEA,IAAWC,IAAIA,CAAA,EAAY;IACzB,OAAQ,IAAI,CAACJ,IAAI,CAAsCI,IAAI;EAC7D;EAEA,IAAWA,IAAIA,CAACC,KAAc,EAAE;IAC7B,IAAI,CAACL,IAAI,CAAsCI,IAAI,GAAGC,KAAK;EAC9D;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC7B,OAAQ,IAAI,CAACN,IAAI,CAAsCM,SAAS;EAClE;EAEA,IAAWA,SAASA,CAACD,KAAa,EAAE;IACjC,IAAI,CAACL,IAAI,CAAsCM,SAAS,GAAGD,KAAK;EACnE;EAEA,IAAWE,OAAOA,CAAA,EAAW;IAC3B,OAAQ,IAAI,CAACP,IAAI,CAAsCO,OAAO;EAChE;EAEA,IAAWA,OAAOA,CAACF,KAAa,EAAE;IAC/B,IAAI,CAACL,IAAI,CAAsCO,OAAO,GAAGF,KAAK;EACjE;EAEOG,KAAKA,CAACC,IAAa,EAAEC,MAAe,EAAEC,QAAiB,EAAQ;IACpE,IAAIF,IAAI,IAAIA,IAAI,GAAG,CAAC,EAAE;MACpB,MAAM,IAAIb,UAAU,CAClB,8CAA8Ca,IAAI,EACpD,CAAC;IACH;IAEA,IAAIC,MAAM,IAAIA,MAAM,GAAG,CAAC,EAAE;MACxB,MAAM,IAAId,UAAU,CAClB,gDAAgDc,MAAM,EACxD,CAAC;IACH;IAEA,IAAIC,QAAQ,IAAIA,QAAQ,GAAG,CAAC,EAAE;MAC5B,MAAM,IAAIf,UAAU,CAClB,kDAAkDe,QAAQ,EAC5D,CAAC;IACH;IAEA,IAAI,IAAI,CAACC,cAAc,EAAE;MACvB,MAAM,IAAIjB,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACiB,cAAc,GAAG,IAAI;IACzB,IAAI,CAACZ,IAAI,CAAsCQ,KAAK,CACnDC,IAAI,EACJC,MAAM,EACNC,QACF,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"names":["AudioScheduledSourceNode","AudioParam","AudioBuffer","InvalidStateError","RangeError","AudioBufferSourceNode","constructor","context","node","detune","playbackRate","buffer","loop","value","loopStart","loopEnd","timeStretch","console","log","start","when","offset","duration","hasBeenStarted"],"sourceRoot":"../../../src","sources":["web-core/AudioBufferSourceNode.tsx"],"mappings":";;AAAA,OAAOA,wBAAwB,MAAM,+BAA4B;AACjE,OAAOC,UAAU,MAAM,iBAAc;AACrC,OAAOC,WAAW,MAAM,kBAAe;AACvC,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,oBAAW;AAIzD,eAAe,MAAMC,qBAAqB,SAASL,wBAAwB,CAAC;EAI1EM,WAAWA,CACTC,OAAyB,EACzBC,IAAsC,EACtC;IACA,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IAEpB,IAAI,CAACC,MAAM,GAAG,IAAIR,UAAU,CAACO,IAAI,CAACC,MAAM,CAAC;IACzC,IAAI,CAACC,YAAY,GAAG,IAAIT,UAAU,CAACO,IAAI,CAACE,YAAY,CAAC;EACvD;EAEA,IAAWC,MAAMA,CAAA,EAAuB;IACtC,MAAMA,MAAM,GAAI,IAAI,CAACH,IAAI,CAAsCG,MAAM;IAErE,IAAI,CAACA,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IAEA,OAAO,IAAIT,WAAW,CAACS,MAAM,CAAC;EAChC;EAEA,IAAWA,MAAMA,CAACA,MAA0B,EAAE;IAC5C,IAAI,CAACA,MAAM,EAAE;MACV,IAAI,CAACH,IAAI,GAA+C,IAAI;MAC7D;IACF;IAEC,IAAI,CAACA,IAAI,CAAsCG,MAAM,GAAGA,MAAM,CAACA,MAAM;EACxE;EAEA,IAAWC,IAAIA,CAAA,EAAY;IACzB,OAAQ,IAAI,CAACJ,IAAI,CAAsCI,IAAI;EAC7D;EAEA,IAAWA,IAAIA,CAACC,KAAc,EAAE;IAC7B,IAAI,CAACL,IAAI,CAAsCI,IAAI,GAAGC,KAAK;EAC9D;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC7B,OAAQ,IAAI,CAACN,IAAI,CAAsCM,SAAS;EAClE;EAEA,IAAWA,SAASA,CAACD,KAAa,EAAE;IACjC,IAAI,CAACL,IAAI,CAAsCM,SAAS,GAAGD,KAAK;EACnE;EAEA,IAAWE,OAAOA,CAAA,EAAW;IAC3B,OAAQ,IAAI,CAACP,IAAI,CAAsCO,OAAO;EAChE;EAEA,IAAWA,OAAOA,CAACF,KAAa,EAAE;IAC/B,IAAI,CAACL,IAAI,CAAsCO,OAAO,GAAGF,KAAK;EACjE;EAEA,IAAWG,WAAWA,CAAA,EAAoB;IACxC,OAAO,QAAQ;EACjB;EAEA,IAAWA,WAAWA,CAACH,KAAsB,EAAE;IAC7CI,OAAO,CAACC,GAAG,CACT,qEACF,CAAC;EACH;EAEOC,KAAKA,CAACC,IAAa,EAAEC,MAAe,EAAEC,QAAiB,EAAQ;IACpE,IAAIF,IAAI,IAAIA,IAAI,GAAG,CAAC,EAAE;MACpB,MAAM,IAAIhB,UAAU,CAClB,8CAA8CgB,IAAI,EACpD,CAAC;IACH;IAEA,IAAIC,MAAM,IAAIA,MAAM,GAAG,CAAC,EAAE;MACxB,MAAM,IAAIjB,UAAU,CAClB,gDAAgDiB,MAAM,EACxD,CAAC;IACH;IAEA,IAAIC,QAAQ,IAAIA,QAAQ,GAAG,CAAC,EAAE;MAC5B,MAAM,IAAIlB,UAAU,CAClB,kDAAkDkB,QAAQ,EAC5D,CAAC;IACH;IAEA,IAAI,IAAI,CAACC,cAAc,EAAE;MACvB,MAAM,IAAIpB,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACoB,cAAc,GAAG,IAAI;IACzB,IAAI,CAACf,IAAI,CAAsCW,KAAK,CACnDC,IAAI,EACJC,MAAM,EACNC,QACF,CAAC;EACH;AACF","ignoreList":[]}
@@ -10,6 +10,8 @@ import GainNode from "./GainNode.js";
10
10
  import OscillatorNode from "./OscillatorNode.js";
11
11
  import PeriodicWave from "./PeriodicWave.js";
12
12
  import StereoPannerNode from "./StereoPannerNode.js";
13
+ import StretcherNode from "./StretcherNode.js";
14
+ import { globalWasmPromise, globalTag } from "./custom/LoadCustomWasm.js";
13
15
  export default class AudioContext {
14
16
  constructor(options) {
15
17
  if (options && (options.sampleRate < 8000 || options.sampleRate > 96000)) {
@@ -61,6 +63,11 @@ export default class AudioContext {
61
63
  createAnalyser() {
62
64
  return new AnalyserNode(this, this.context.createAnalyser());
63
65
  }
66
+ async createStretcher() {
67
+ await globalWasmPromise;
68
+ const wasmStretch = await window[globalTag](this.context);
69
+ return new StretcherNode(this, wasmStretch);
70
+ }
64
71
  async decodeAudioDataSource(source) {
65
72
  const arrayBuffer = await fetch(source).then(response => response.arrayBuffer());
66
73
  return new AudioBuffer(await this.context.decodeAudioData(arrayBuffer));
@@ -1 +1 @@
1
- {"version":3,"names":["InvalidAccessError","NotSupportedError","AnalyserNode","AudioDestinationNode","AudioBuffer","AudioBufferSourceNode","BiquadFilterNode","GainNode","OscillatorNode","PeriodicWave","StereoPannerNode","AudioContext","constructor","options","sampleRate","context","window","destination","currentTime","state","createOscillator","createGain","createStereoPanner","createBiquadFilter","createBufferSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","createAnalyser","decodeAudioDataSource","source","arrayBuffer","fetch","then","response","decodeAudioData","close","resume","suspend"],"sourceRoot":"../../../src","sources":["web-core/AudioContext.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["InvalidAccessError","NotSupportedError","AnalyserNode","AudioDestinationNode","AudioBuffer","AudioBufferSourceNode","BiquadFilterNode","GainNode","OscillatorNode","PeriodicWave","StereoPannerNode","StretcherNode","globalWasmPromise","globalTag","AudioContext","constructor","options","sampleRate","context","window","destination","currentTime","state","createOscillator","createGain","createStereoPanner","createBiquadFilter","createBufferSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","createAnalyser","createStretcher","wasmStretch","decodeAudioDataSource","source","arrayBuffer","fetch","then","response","decodeAudioData","close","resume","suspend"],"sourceRoot":"../../../src","sources":["web-core/AudioContext.tsx"],"mappings":"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","ignoreList":[]}
@@ -23,5 +23,13 @@ export default class AudioScheduledSourceNode extends AudioNode {
23
23
  }
24
24
  this.node.stop(when);
25
25
  }
26
+
27
+ // eslint-disable-next-line accessor-pairs
28
+ set onended(callback) {
29
+ const eventCallback = _event => {
30
+ callback();
31
+ };
32
+ this.node.onended = eventCallback;
33
+ }
26
34
  }
27
35
  //# sourceMappingURL=AudioScheduledSourceNode.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AudioNode","RangeError","InvalidStateError","AudioScheduledSourceNode","hasBeenStarted","start","when","node","stop"],"sourceRoot":"../../../src","sources":["web-core/AudioScheduledSourceNode.tsx"],"mappings":";;AAAA,OAAOA,SAAS,MAAM,gBAAa;AACnC,SAASC,UAAU,EAAEC,iBAAiB,QAAQ,oBAAW;AAEzD,eAAe,MAAMC,wBAAwB,SAASH,SAAS,CAAC;EACpDI,cAAc,GAAY,KAAK;EAElCC,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAQ;IACnC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIL,UAAU,CAClB,8CAA8CK,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,IAAI,CAACF,cAAc,EAAE;MACvB,MAAM,IAAIF,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACE,cAAc,GAAG,IAAI;IACzB,IAAI,CAACG,IAAI,CAAyCF,KAAK,CAACC,IAAI,CAAC;EAChE;EAEOE,IAAIA,CAACF,IAAY,GAAG,CAAC,EAAQ;IAClC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIL,UAAU,CAClB,8CAA8CK,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,CAAC,IAAI,CAACF,cAAc,EAAE;MACxB,MAAM,IAAIF,iBAAiB,CACzB,8CACF,CAAC;IACH;IAEC,IAAI,CAACK,IAAI,CAAyCC,IAAI,CAACF,IAAI,CAAC;EAC/D;AACF","ignoreList":[]}
1
+ {"version":3,"names":["AudioNode","RangeError","InvalidStateError","AudioScheduledSourceNode","hasBeenStarted","start","when","node","stop","onended","callback","eventCallback","_event"],"sourceRoot":"../../../src","sources":["web-core/AudioScheduledSourceNode.tsx"],"mappings":";;AAAA,OAAOA,SAAS,MAAM,gBAAa;AACnC,SAASC,UAAU,EAAEC,iBAAiB,QAAQ,oBAAW;AAEzD,eAAe,MAAMC,wBAAwB,SAASH,SAAS,CAAC;EACpDI,cAAc,GAAY,KAAK;EAElCC,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAQ;IACnC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIL,UAAU,CAClB,8CAA8CK,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,IAAI,CAACF,cAAc,EAAE;MACvB,MAAM,IAAIF,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACE,cAAc,GAAG,IAAI;IACzB,IAAI,CAACG,IAAI,CAAyCF,KAAK,CAACC,IAAI,CAAC;EAChE;EAEOE,IAAIA,CAACF,IAAY,GAAG,CAAC,EAAQ;IAClC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIL,UAAU,CAClB,8CAA8CK,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,CAAC,IAAI,CAACF,cAAc,EAAE;MACxB,MAAM,IAAIF,iBAAiB,CACzB,8CACF,CAAC;IACH;IAEC,IAAI,CAACK,IAAI,CAAyCC,IAAI,CAACF,IAAI,CAAC;EAC/D;;EAEA;EACA,IAAWG,OAAOA,CAACC,QAAgC,EAAE;IACnD,MAAMC,aAAa,GAAIC,MAAa,IAAK;MACvCF,QAAQ,CAAC,CAAC;IACZ,CAAC;IAEA,IAAI,CAACH,IAAI,CAAyCE,OAAO,GAAGE,aAAa;EAC5E;AACF","ignoreList":[]}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ import AudioNode from "./AudioNode.js";
4
+ import { globalTag } from "./custom/LoadCustomWasm.js";
5
+ export default class StretcherNode extends AudioNode {
6
+ _buffer = null;
7
+ _playbackRate = 1;
8
+ _loopStart = -1;
9
+ _loopEnd = -1;
10
+ _isPlaying = false;
11
+ constructor(context, node) {
12
+ super(context, node);
13
+ this._buffer = null;
14
+ }
15
+ get buffer() {
16
+ return this._buffer;
17
+ }
18
+ set buffer(buffer) {
19
+ this._buffer = buffer;
20
+ const channelArrays = [];
21
+ for (let i = 0; i < buffer.numberOfChannels; i += 1) {
22
+ channelArrays.push(buffer.getChannelData(i));
23
+ }
24
+ this.node.addBuffers(channelArrays);
25
+ }
26
+ get playbackRate() {
27
+ return this._playbackRate;
28
+ }
29
+ set playbackRate(value) {
30
+ this._playbackRate = value;
31
+ if (this._isPlaying) {
32
+ this.node.schedule({
33
+ rate: value
34
+ });
35
+ }
36
+ }
37
+ get loopStart() {
38
+ return this._loopStart;
39
+ }
40
+ set loopStart(value) {
41
+ this._loopStart = value;
42
+ this.node.schedule({
43
+ loopStart: value
44
+ });
45
+ }
46
+ get loopEnd() {
47
+ return this._loopEnd;
48
+ }
49
+ set loopEnd(value) {
50
+ this._loopEnd = value;
51
+ this.node.schedule({
52
+ loopEnd: value
53
+ });
54
+ }
55
+ start(when, offset, duration, rate, semitones) {
56
+ this._isPlaying = true;
57
+ this.node.start(when, offset, duration, rate, semitones);
58
+ }
59
+ stop(when) {
60
+ this._isPlaying = false;
61
+ this.node.stop(when);
62
+ }
63
+ }
64
+ //# sourceMappingURL=StretcherNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AudioNode","globalTag","StretcherNode","_buffer","_playbackRate","_loopStart","_loopEnd","_isPlaying","constructor","context","node","buffer","channelArrays","i","numberOfChannels","push","getChannelData","addBuffers","playbackRate","value","schedule","rate","loopStart","loopEnd","start","when","offset","duration","semitones","stop"],"sourceRoot":"../../../src","sources":["web-core/StretcherNode.tsx"],"mappings":";;AAEA,OAAOA,SAAS,MAAM,gBAAa;AAEnC,SAASC,SAAS,QAAQ,4BAAyB;AAsCnD,eAAe,MAAMC,aAAa,SAASF,SAAS,CAAC;EACnDG,OAAO,GAAuB,IAAI;EAElCC,aAAa,GAAW,CAAC;EACzBC,UAAU,GAAW,CAAC,CAAC;EACvBC,QAAQ,GAAW,CAAC,CAAC;EACrBC,UAAU,GAAG,KAAK;EAElBC,WAAWA,CAACC,OAAyB,EAAEC,IAAoB,EAAE;IAC3D,KAAK,CAACD,OAAO,EAAEC,IAAuC,CAAC;IACvD,IAAI,CAACP,OAAO,GAAG,IAAI;EACrB;EAEA,IAAWQ,MAAMA,CAAA,EAAuB;IACtC,OAAO,IAAI,CAACR,OAAO;EACrB;EAEA,IAAWQ,MAAMA,CAACA,MAAmB,EAAE;IACrC,IAAI,CAACR,OAAO,GAAGQ,MAAM;IACrB,MAAMC,aAAa,GAAG,EAAE;IAExB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,gBAAgB,EAAED,CAAC,IAAI,CAAC,EAAE;MACnDD,aAAa,CAACG,IAAI,CAACJ,MAAM,CAACK,cAAc,CAACH,CAAC,CAAC,CAAC;IAC9C;IAEC,IAAI,CAACH,IAAI,CAA+BO,UAAU,CAACL,aAAa,CAAC;EACpE;EAEA,IAAWM,YAAYA,CAAA,EAAW;IAChC,OAAO,IAAI,CAACd,aAAa;EAC3B;EAEA,IAAWc,YAAYA,CAACC,KAAa,EAAE;IACrC,IAAI,CAACf,aAAa,GAAGe,KAAK;IAE1B,IAAI,IAAI,CAACZ,UAAU,EAAE;MAClB,IAAI,CAACG,IAAI,CAA+BU,QAAQ,CAAC;QAAEC,IAAI,EAAEF;MAAM,CAAC,CAAC;IACpE;EACF;EAEA,IAAWG,SAASA,CAAA,EAAW;IAC7B,OAAO,IAAI,CAACjB,UAAU;EACxB;EAEA,IAAWiB,SAASA,CAACH,KAAa,EAAE;IAClC,IAAI,CAACd,UAAU,GAAGc,KAAK;IAEtB,IAAI,CAACT,IAAI,CAA+BU,QAAQ,CAAC;MAAEE,SAAS,EAAEH;IAAM,CAAC,CAAC;EACzE;EAEA,IAAWI,OAAOA,CAAA,EAAW;IAC3B,OAAO,IAAI,CAACjB,QAAQ;EACtB;EAEA,IAAWiB,OAAOA,CAACJ,KAAa,EAAE;IAChC,IAAI,CAACb,QAAQ,GAAGa,KAAK;IAEpB,IAAI,CAACT,IAAI,CAA+BU,QAAQ,CAAC;MAAEG,OAAO,EAAEJ;IAAM,CAAC,CAAC;EACvE;EAEOK,KAAKA,CACVC,IAAa,EACbC,MAAe,EACfC,QAAiB,EACjBN,IAAa,EACbO,SAAkB,EACZ;IACN,IAAI,CAACrB,UAAU,GAAG,IAAI;IAErB,IAAI,CAACG,IAAI,CAA+Bc,KAAK,CAC5CC,IAAI,EACJC,MAAM,EACNC,QAAQ,EACRN,IAAI,EACJO,SACF,CAAC;EACH;EAEOC,IAAIA,CAACJ,IAAa,EAAQ;IAC/B,IAAI,CAAClB,UAAU,GAAG,KAAK;IACtB,IAAI,CAACG,IAAI,CAA+BmB,IAAI,CAACJ,IAAI,CAAC;EACrD;AACF","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ export const globalTag = '__rnaaCstStretch';
4
+ const eventTitle = 'rnaaCstStretchLoaded';
5
+ export let globalWasmPromise = null;
6
+ const LoadCustomWasm = async () => {
7
+ if (typeof window === 'undefined') {
8
+ return null;
9
+ }
10
+ if (globalWasmPromise) {
11
+ return globalWasmPromise;
12
+ }
13
+ globalWasmPromise = new Promise(resolve => {
14
+ const loadScript = document.createElement('script');
15
+ document.head.appendChild(loadScript);
16
+ loadScript.type = 'module';
17
+ loadScript.textContent = `
18
+ import SignalsmithStretch from '/signalsmithStretch.mjs';
19
+ window.${globalTag} = SignalsmithStretch;
20
+ window.postMessage('${eventTitle}');
21
+ `;
22
+ function onScriptLoaded(event) {
23
+ if (event.data !== eventTitle) {
24
+ return;
25
+ }
26
+ resolve();
27
+ window.removeEventListener('message', onScriptLoaded);
28
+ }
29
+ window.addEventListener('message', onScriptLoaded);
30
+ });
31
+ };
32
+ export default LoadCustomWasm;
33
+ //# sourceMappingURL=LoadCustomWasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["globalTag","eventTitle","globalWasmPromise","LoadCustomWasm","window","Promise","resolve","loadScript","document","createElement","head","appendChild","type","textContent","onScriptLoaded","event","data","removeEventListener","addEventListener"],"sourceRoot":"../../../../src","sources":["web-core/custom/LoadCustomWasm.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,GAAG,kBAAkB;AAC3C,MAAMC,UAAU,GAAG,sBAAsB;AAEzC,OAAO,IAAIC,iBAAuC,GAAG,IAAI;AAEzD,MAAMC,cAAc,GAAG,MAAAA,CAAA,KAAY;EACjC,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC,OAAO,IAAI;EACb;EAEA,IAAIF,iBAAiB,EAAE;IACrB,OAAOA,iBAAiB;EAC1B;EAEAA,iBAAiB,GAAG,IAAIG,OAAO,CAAQC,OAAO,IAAK;IACjD,MAAMC,UAAU,GAAGC,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;IACnDD,QAAQ,CAACE,IAAI,CAACC,WAAW,CAACJ,UAAU,CAAC;IACrCA,UAAU,CAACK,IAAI,GAAG,QAAQ;IAE1BL,UAAU,CAACM,WAAW,GAAG;AAC7B;AACA,eAAeb,SAAS;AACxB,4BAA4BC,UAAU;AACtC,KAAK;IAED,SAASa,cAAcA,CAACC,KAA2B,EAAE;MACnD,IAAIA,KAAK,CAACC,IAAI,KAAKf,UAAU,EAAE;QAC7B;MACF;MAEAK,OAAO,CAAC,CAAC;MACTF,MAAM,CAACa,mBAAmB,CAAC,SAAS,EAAEH,cAAc,CAAC;IACvD;IAEAV,MAAM,CAACc,gBAAgB,CAAC,SAAS,EAAEJ,cAAc,CAAC;EACpD,CAAC,CAAC;AACJ,CAAC;AAED,eAAeX,cAAc","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { default as LoadCustomWasm } from "./LoadCustomWasm.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","LoadCustomWasm"],"sourceRoot":"../../../../src","sources":["web-core/custom/index.ts"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,cAAc,QAAQ,qBAAkB","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Geraint Luff / Signalsmith Audio Ltd.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,46 @@
1
+ # Signalsmith Stretch Web
2
+
3
+ This is an official release of the Signalsmith Stretch library for Web Audio, using WASM/AudioWorklet. It includes both plain `.js` (UMD), and ES6 `.mjs` versions.
4
+
5
+ ## How to use it
6
+
7
+ Call `SignalsmithStretch(audioContext, ?channelOptions)` from the main thread. This returns a Promise which resolves to an `AudioNode`, with extra methods attached to it.
8
+
9
+ It can operate either on live/streaming input, or on a sample buffer you load into it.
10
+
11
+ ### `stretch.inputTime`
12
+
13
+ The current input time, within the sample buffer. You can change how often this is updated, with an optional callback function, using `stretch.setUpdateInterval(seconds, ?callback)`.
14
+
15
+ ### `stretch.schedule({...})`
16
+
17
+ This adds a scheduled change, removing any scheduled changes occuring after this one. The object properties are:
18
+
19
+ - `output` (seconds): audio context time for this change. The node compensates for its own latency, but this means you might want to schedule some things ahead of time, otherwise you'll have a softer transition as it catches up.
20
+ - `active` (bool): processing audio
21
+ - `input` (seconds): position in input buffer
22
+ - `rate` (number): playback rate, e.g. 0.5 == half speed
23
+ - `semitones` (number): pitch shift
24
+ - `loopStart` / `loopEnd`: sets a section of the input to auto-loop. Disabled if both are set to the same value.
25
+
26
+ ### `stretch.start(?when)` / `stretch.stop(?when)`
27
+
28
+ Starts/stops playback or processing, immediately or at some future time. These are convenience methods which call `.schedule(...)` under the hood.
29
+
30
+ `.start()` actually has more parameters, presenting a similar interface to [AudioBufferSourceNode](https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start).
31
+
32
+ ### `stretch.addBuffers([...])`
33
+
34
+ This adds buffers to the end of the current input. Buffers should be typed arrays of equal length, one per channel.
35
+
36
+ It can be called multiple times, and the new buffers are inserted after the existing ones, which lets you start playback before the entire audio is loaded. It returns (as a Promise) the new end time for the stored input, in seconds.
37
+
38
+ ### `stretch.dropBuffers()`
39
+
40
+ This drops all input buffers, and resets the input buffer start time to 0.
41
+
42
+ ### `stretch.dropBuffers(toSeconds)`
43
+
44
+ This drops all input buffers before the given time. It returns (as a Promise) the an object with the current input buffer extent: `{start: ..., end: ...}`.
45
+
46
+ This can be useful when processing streams or very long audio files, letting the Stretch node release old buffers once that section of the input will no longer be played back.