react-native-audio-api 0.4.12-beta.5 → 0.4.13

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 (126) 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 +1 -2
  58. package/lib/module/api.js.map +1 -1
  59. package/lib/module/api.web.js +1 -1
  60. package/lib/module/api.web.js.map +1 -1
  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/web-core/AudioBufferSourceNode.js +6 -0
  68. package/lib/module/web-core/AudioBufferSourceNode.js.map +1 -1
  69. package/lib/module/web-core/AudioScheduledSourceNode.js +8 -0
  70. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  71. package/lib/module/web-core/StretcherNode.js +24 -7
  72. package/lib/module/web-core/StretcherNode.js.map +1 -1
  73. package/lib/module/web-core/custom/signalsmithStretch/README.md +1 -1
  74. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js +1 -0
  75. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js.map +1 -1
  76. package/lib/typescript/api.d.ts +1 -2
  77. package/lib/typescript/api.d.ts.map +1 -1
  78. package/lib/typescript/api.web.d.ts +1 -1
  79. package/lib/typescript/api.web.d.ts.map +1 -1
  80. package/lib/typescript/core/AudioBufferSourceNode.d.ts +3 -0
  81. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  82. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -0
  83. package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
  84. package/lib/typescript/core/BaseAudioContext.d.ts +0 -2
  85. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  86. package/lib/typescript/interfaces.d.ts +3 -6
  87. package/lib/typescript/interfaces.d.ts.map +1 -1
  88. package/lib/typescript/types.d.ts +1 -0
  89. package/lib/typescript/types.d.ts.map +1 -1
  90. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +3 -0
  91. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts.map +1 -1
  92. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -0
  93. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts.map +1 -1
  94. package/lib/typescript/web-core/StretcherNode.d.ts +3 -0
  95. package/lib/typescript/web-core/StretcherNode.d.ts.map +1 -1
  96. package/package.json +3 -4
  97. package/scripts/setup-rn-audio-api-web.js +58 -0
  98. package/src/api.ts +1 -1
  99. package/src/api.web.ts +1 -0
  100. package/src/core/AudioBufferSourceNode.ts +9 -0
  101. package/src/core/AudioScheduledSourceNode.ts +5 -0
  102. package/src/core/BaseAudioContext.ts +0 -5
  103. package/src/interfaces.ts +3 -6
  104. package/src/types.ts +2 -0
  105. package/src/web-core/AudioBufferSourceNode.tsx +11 -0
  106. package/src/web-core/AudioScheduledSourceNode.tsx +9 -0
  107. package/src/web-core/StretcherNode.tsx +28 -8
  108. package/src/web-core/custom/signalsmithStretch/README.md +1 -1
  109. package/src/web-core/custom/signalsmithStretch/SignalsmithStretch.js +1 -0
  110. package/common/cpp/audioapi/HostObjects/StretcherNodeHostObject.h +0 -35
  111. package/common/cpp/audioapi/core/effects/StretcherNode.cpp +0 -94
  112. package/common/cpp/audioapi/core/effects/StretcherNode.h +0 -35
  113. package/common/cpp/audioapi/dsp/FFTFrame.cpp +0 -100
  114. package/common/cpp/audioapi/dsp/FFTFrame.h +0 -74
  115. package/common/cpp/audioapi/libs/dsp/common.h +0 -47
  116. package/common/cpp/audioapi/libs/dsp/windows.h +0 -219
  117. package/lib/module/core/StretcherNode.js +0 -12
  118. package/lib/module/core/StretcherNode.js.map +0 -1
  119. package/lib/typescript/core/StretcherNode.d.ts +0 -10
  120. package/lib/typescript/core/StretcherNode.d.ts.map +0 -1
  121. package/scripts/setup-custom-wasm.js +0 -104
  122. package/src/core/StretcherNode.ts +0 -15
  123. /package/common/cpp/audioapi/libs/{miniaudio.h → miniaudio/miniaudio.h} +0 -0
  124. /package/{android/src/main/cpp/audioapi/android/libs → common/cpp/audioapi/libs/pffft}/pffft.h +0 -0
  125. /package/common/cpp/audioapi/{core/utils → utils}/AudioArray.h +0 -0
  126. /package/common/cpp/audioapi/{core/utils → utils}/AudioBus.h +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -10,4 +10,5 @@ export interface AudioContextOptions {
10
10
  sampleRate: number;
11
11
  }
12
12
  export type WindowType = 'blackman' | 'hann';
13
+ export type TimeStretchType = 'linear' | 'speech-music';
13
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,aAAa,GAAG,UAAU,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,SAAS,GACT,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,QAAQ,GACR,UAAU,GACV,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,aAAa,GAAG,UAAU,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,SAAS,GACT,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,QAAQ,GACR,UAAU,GACV,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,uBAAuB;IACtC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,cAAc,CAAC"}
@@ -2,6 +2,7 @@ import AudioScheduledSourceNode from './AudioScheduledSourceNode';
2
2
  import AudioParam from './AudioParam';
3
3
  import AudioBuffer from './AudioBuffer';
4
4
  import BaseAudioContext from './BaseAudioContext';
5
+ import { TimeStretchType } from '../types';
5
6
  export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
6
7
  readonly playbackRate: AudioParam;
7
8
  readonly detune: AudioParam;
@@ -14,6 +15,8 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
14
15
  set loopStart(value: number);
15
16
  get loopEnd(): number;
16
17
  set loopEnd(value: number);
18
+ get timeStretch(): TimeStretchType;
19
+ set timeStretch(value: TimeStretchType);
17
20
  start(when?: number, offset?: number, duration?: number): void;
18
21
  }
19
22
  //# sourceMappingURL=AudioBufferSourceNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioBufferSourceNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioBufferSourceNode.tsx"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,wBAAwB;IACzE,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAG1B,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,UAAU,CAAC,qBAAqB;IAQxC,IAAW,MAAM,IAAI,WAAW,GAAG,IAAI,CAQtC;IAED,IAAW,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EAO3C;IAED,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,OAAO,EAE7B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAEjC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAE/B;IAEM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CA8BtE"}
1
+ {"version":3,"file":"AudioBufferSourceNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioBufferSourceNode.tsx"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,wBAAwB;IACzE,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAG1B,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,UAAU,CAAC,qBAAqB;IAQxC,IAAW,MAAM,IAAI,WAAW,GAAG,IAAI,CAQtC;IAED,IAAW,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EAO3C;IAED,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,OAAO,EAE7B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAEjC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAE/B;IAED,IAAW,WAAW,IAAI,eAAe,CAExC;IAED,IAAW,WAAW,CAAC,KAAK,EAAE,eAAe,EAI5C;IAEM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CA8BtE"}
@@ -3,5 +3,6 @@ export default class AudioScheduledSourceNode extends AudioNode {
3
3
  protected hasBeenStarted: boolean;
4
4
  start(when?: number): void;
5
5
  stop(when?: number): void;
6
+ set onended(callback: (arg?: number) => void);
6
7
  }
7
8
  //# sourceMappingURL=AudioScheduledSourceNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioScheduledSourceNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioScheduledSourceNode.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AAGpC,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,SAAS;IAC7D,SAAS,CAAC,cAAc,EAAE,OAAO,CAAS;IAEnC,KAAK,CAAC,IAAI,GAAE,MAAU,GAAG,IAAI;IAe7B,IAAI,CAAC,IAAI,GAAE,MAAU,GAAG,IAAI;CAepC"}
1
+ {"version":3,"file":"AudioScheduledSourceNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioScheduledSourceNode.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AAGpC,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,SAAS;IAC7D,SAAS,CAAC,cAAc,EAAE,OAAO,CAAS;IAEnC,KAAK,CAAC,IAAI,GAAE,MAAU,GAAG,IAAI;IAe7B,IAAI,CAAC,IAAI,GAAE,MAAU,GAAG,IAAI;IAiBnC,IAAW,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,EAMlD;CACF"}
@@ -28,6 +28,7 @@ export default class StretcherNode extends AudioNode {
28
28
  _playbackRate: number;
29
29
  _loopStart: number;
30
30
  _loopEnd: number;
31
+ _loop: boolean;
31
32
  _isPlaying: boolean;
32
33
  constructor(context: BaseAudioContext, node: IStretcherNode);
33
34
  get buffer(): AudioBuffer | null;
@@ -38,6 +39,8 @@ export default class StretcherNode extends AudioNode {
38
39
  set loopStart(value: number);
39
40
  get loopEnd(): number;
40
41
  set loopEnd(value: number);
42
+ get loop(): boolean;
43
+ set loop(value: boolean);
41
44
  start(when?: number, offset?: number, duration?: number, rate?: number, semitones?: number): void;
42
45
  stop(when?: number): void;
43
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StretcherNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/StretcherNode.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,OAAO,cAAc;IAC1B,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAE1C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAExC,KAAK,CACH,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAEP,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAEzB,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI;IAChD,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,CAAC,SAAS,CAAC,EAAE,CACX,YAAY,EAAE,UAAU,CAAC,gBAAgB,KACtC,OAAO,CAAC,cAAc,CAAC,CAAC;KAC9B;CACF;AAED,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,SAAS;IAClD,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnC,aAAa,EAAE,MAAM,CAAK;IAC1B,UAAU,EAAE,MAAM,CAAM;IACxB,QAAQ,EAAE,MAAM,CAAM;IACtB,UAAU,UAAS;gBAEP,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc;IAK3D,IAAW,MAAM,IAAI,WAAW,GAAG,IAAI,CAEtC;IAED,IAAW,MAAM,CAAC,MAAM,EAAE,WAAW,EASpC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAMpC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAIjC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAI/B;IAEM,KAAK,CACV,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAYA,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;CAIjC"}
1
+ {"version":3,"file":"StretcherNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/StretcherNode.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,OAAO,cAAc;IAC1B,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAE1C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAExC,KAAK,CACH,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAEP,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAEzB,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI;IAChD,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI;CACpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,CAAC,SAAS,CAAC,EAAE,CACX,YAAY,EAAE,UAAU,CAAC,gBAAgB,KACtC,OAAO,CAAC,cAAc,CAAC,CAAC;KAC9B;CACF;AAED,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,SAAS;IAClD,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnC,aAAa,EAAE,MAAM,CAAK;IAC1B,UAAU,EAAE,MAAM,CAAM;IACxB,QAAQ,EAAE,MAAM,CAAM;IACtB,KAAK,UAAS;IACd,UAAU,UAAS;gBAEP,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc;IAK3D,IAAW,MAAM,IAAI,WAAW,GAAG,IAAI,CAEtC;IAED,IAAW,MAAM,CAAC,MAAM,EAAE,WAAW,EASpC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAMpC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAMjC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAM/B;IAED,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,OAAO,EAE7B;IAEM,KAAK,CACV,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAmBA,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;CAIjC"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.4.12-beta.5",
3
+ "version": "0.4.13",
4
4
  "description": "react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification",
5
5
  "bin": {
6
- "setup-custom-wasm": "./scripts/setup-custom-wasm.js"
6
+ "setup-rn-audio-api-web": "./scripts/setup-rn-audio-api-web.js"
7
7
  },
8
8
  "source": "src/index",
9
9
  "main": "lib/module/index",
@@ -20,7 +20,6 @@
20
20
  "android/",
21
21
  "ios",
22
22
  "RNAudioAPI.podspec",
23
- "scripts/audioapi_utils.rb",
24
23
  "metro-config",
25
24
  "!ios/build",
26
25
  "!android/build",
@@ -35,7 +34,7 @@
35
34
  "!**/__mocks__",
36
35
  "!**/.*",
37
36
  "!**/node_modules",
38
- "scripts/setup-custom-wasm.js"
37
+ "scripts/setup-rn-audio-api-web.js"
39
38
  ],
40
39
  "scripts": {
41
40
  "test": "jest",
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ const args = process.argv.slice(2);
7
+
8
+ /**
9
+ * Resolves and returns the absolute path to the SignalsmithStretch.mjs file.
10
+ *
11
+ * @returns {string} The absolute path to the SignalsmithStretch.mjs file.
12
+ */
13
+ function getInputFilePath() {
14
+ return path.resolve(
15
+ __dirname,
16
+ '../lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs'
17
+ );
18
+ }
19
+
20
+ /**
21
+ * Generates the output file path for the WebAssembly module.
22
+ *
23
+ * @param {boolean} isExpoAndMetro - A flag indicating whether the environment is Expo and Metro.
24
+ * @returns {string} The resolved output file path.
25
+ */
26
+ function getOutputFilePath() {
27
+ const publicFolder = path.resolve(
28
+ args[0] || 'public'
29
+ );
30
+
31
+ const publicFile = './signalsmithStretch.mjs';
32
+ const outputPath = path.join(publicFolder, publicFile);
33
+
34
+ console.log(`> Output file path: ${outputPath}\n`);
35
+
36
+ return outputPath;
37
+ }
38
+
39
+ /**
40
+ * Copies a file from the input path to the output path.
41
+ *
42
+ * @param {string} inputPath - The path of the file to be copied.
43
+ * @param {string} outputPath - The destination path where the file should be copied.
44
+ */
45
+ function copyFile(inputPath, outputPath) {
46
+ const data = fs.readFileSync(inputPath);
47
+ fs.mkdirSync(path.dirname(outputPath), { recursive: true });
48
+ fs.writeFileSync(outputPath, data);
49
+ }
50
+
51
+ (function main() {
52
+ const inputPath = getInputFilePath();
53
+ const outputPath = getOutputFilePath();
54
+
55
+ copyFile(inputPath, outputPath);
56
+
57
+ console.log(`> WebAssembly module setup complete\n`);
58
+ })();
package/src/api.ts CHANGED
@@ -30,7 +30,6 @@ export { default as BiquadFilterNode } from './core/BiquadFilterNode';
30
30
  export { default as GainNode } from './core/GainNode';
31
31
  export { default as OscillatorNode } from './core/OscillatorNode';
32
32
  export { default as StereoPannerNode } from './core/StereoPannerNode';
33
- export { default as StretcherNode } from './core/StretcherNode';
34
33
 
35
34
  export {
36
35
  OscillatorType,
@@ -40,6 +39,7 @@ export {
40
39
  ContextState,
41
40
  WindowType,
42
41
  PeriodicWaveConstraints,
42
+ TimeStretchType,
43
43
  } from './types';
44
44
 
45
45
  export {
package/src/api.web.ts CHANGED
@@ -23,6 +23,7 @@ export {
23
23
  ContextState,
24
24
  WindowType,
25
25
  PeriodicWaveConstraints,
26
+ TimeStretchType,
26
27
  } from './types';
27
28
 
28
29
  export {
@@ -4,6 +4,7 @@ import BaseAudioContext from './BaseAudioContext';
4
4
  import AudioBuffer from './AudioBuffer';
5
5
  import AudioParam from './AudioParam';
6
6
  import { InvalidStateError, RangeError } from '../errors';
7
+ import { TimeStretchType } from '../types';
7
8
 
8
9
  export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
9
10
  readonly playbackRate: AudioParam;
@@ -57,6 +58,14 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
57
58
  (this.node as IAudioBufferSourceNode).loopEnd = value;
58
59
  }
59
60
 
61
+ public get timeStretch(): TimeStretchType {
62
+ return (this.node as IAudioBufferSourceNode).timeStretch;
63
+ }
64
+
65
+ public set timeStretch(value: TimeStretchType) {
66
+ (this.node as IAudioBufferSourceNode).timeStretch = value;
67
+ }
68
+
60
69
  public start(when: number = 0, offset: number = 0, duration?: number): void {
61
70
  if (when < 0) {
62
71
  throw new RangeError(
@@ -35,4 +35,9 @@ export default class AudioScheduledSourceNode extends AudioNode {
35
35
 
36
36
  (this.node as IAudioScheduledSourceNode).stop(when);
37
37
  }
38
+
39
+ // eslint-disable-next-line accessor-pairs
40
+ public set onended(callback: (arg?: number) => void) {
41
+ (this.node as IAudioScheduledSourceNode).onended = callback;
42
+ }
38
43
  }
@@ -9,7 +9,6 @@ import AudioBufferSourceNode from './AudioBufferSourceNode';
9
9
  import AudioBuffer from './AudioBuffer';
10
10
  import PeriodicWave from './PeriodicWave';
11
11
  import AnalyserNode from './AnalyserNode';
12
- import StretcherNode from './StretcherNode';
13
12
  import { InvalidAccessError, NotSupportedError } from '../errors';
14
13
 
15
14
  export default class BaseAudioContext {
@@ -101,10 +100,6 @@ export default class BaseAudioContext {
101
100
  return new AnalyserNode(this, this.context.createAnalyser());
102
101
  }
103
102
 
104
- createStretcher(): StretcherNode {
105
- return new StretcherNode(this, this.context.createStretcher());
106
- }
107
-
108
103
  async decodeAudioDataSource(sourcePath: string): Promise<AudioBuffer> {
109
104
  // Remove the file:// prefix if it exists
110
105
  if (sourcePath.startsWith('file://')) {
package/src/interfaces.ts CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  ChannelCountMode,
6
6
  ChannelInterpretation,
7
7
  WindowType,
8
+ TimeStretchType,
8
9
  } from './types';
9
10
 
10
11
  export interface AudioAPIInstaller {
@@ -33,7 +34,6 @@ export interface IBaseAudioContext {
33
34
  disableNormalization: boolean
34
35
  ) => IPeriodicWave;
35
36
  createAnalyser: () => IAnalyserNode;
36
- createStretcher: () => IStretcherNode;
37
37
  decodeAudioDataSource: (sourcePath: string) => Promise<IAudioBuffer>;
38
38
  }
39
39
 
@@ -82,6 +82,7 @@ export interface IAudioDestinationNode extends IAudioNode {}
82
82
  export interface IAudioScheduledSourceNode extends IAudioNode {
83
83
  start(when?: number): void;
84
84
  stop: (when: number) => void;
85
+ onended: (arg?: number) => void | null;
85
86
  }
86
87
 
87
88
  export interface IOscillatorNode extends IAudioScheduledSourceNode {
@@ -99,6 +100,7 @@ export interface IAudioBufferSourceNode extends IAudioScheduledSourceNode {
99
100
  loopEnd: number;
100
101
  detune: IAudioParam;
101
102
  playbackRate: IAudioParam;
103
+ timeStretch: TimeStretchType;
102
104
 
103
105
  start: (when?: number, offset?: number, duration?: number) => void;
104
106
  }
@@ -160,8 +162,3 @@ export interface IAnalyserNode extends IAudioNode {
160
162
  getFloatTimeDomainData: (array: number[]) => void;
161
163
  getByteTimeDomainData: (array: number[]) => void;
162
164
  }
163
-
164
- export interface IStretcherNode extends IAudioNode {
165
- readonly rate: IAudioParam;
166
- readonly semitones: IAudioParam;
167
- }
package/src/types.ts CHANGED
@@ -30,3 +30,5 @@ export interface AudioContextOptions {
30
30
  }
31
31
 
32
32
  export type WindowType = 'blackman' | 'hann';
33
+
34
+ export type TimeStretchType = 'linear' | 'speech-music';
@@ -3,6 +3,7 @@ import AudioParam from './AudioParam';
3
3
  import AudioBuffer from './AudioBuffer';
4
4
  import { InvalidStateError, RangeError } from '../errors';
5
5
  import BaseAudioContext from './BaseAudioContext';
6
+ import { TimeStretchType } from '../types';
6
7
 
7
8
  export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
8
9
  readonly playbackRate: AudioParam;
@@ -61,6 +62,16 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
61
62
  (this.node as globalThis.AudioBufferSourceNode).loopEnd = value;
62
63
  }
63
64
 
65
+ public get timeStretch(): TimeStretchType {
66
+ return 'linear';
67
+ }
68
+
69
+ public set timeStretch(value: TimeStretchType) {
70
+ console.log(
71
+ 'React Native Audio API: setting timeStretch is not supported on web'
72
+ );
73
+ }
74
+
64
75
  public start(when?: number, offset?: number, duration?: number): void {
65
76
  if (when && when < 0) {
66
77
  throw new RangeError(
@@ -34,4 +34,13 @@ export default class AudioScheduledSourceNode extends AudioNode {
34
34
 
35
35
  (this.node as globalThis.AudioScheduledSourceNode).stop(when);
36
36
  }
37
+
38
+ // eslint-disable-next-line accessor-pairs
39
+ public set onended(callback: (arg?: number) => void) {
40
+ const eventCallback = (_event: Event) => {
41
+ callback();
42
+ };
43
+
44
+ (this.node as globalThis.AudioScheduledSourceNode).onended = eventCallback;
45
+ }
37
46
  }
@@ -46,6 +46,7 @@ export default class StretcherNode extends AudioNode {
46
46
  _playbackRate: number = 1;
47
47
  _loopStart: number = -1;
48
48
  _loopEnd: number = -1;
49
+ _loop = false;
49
50
  _isPlaying = false;
50
51
 
51
52
  constructor(context: BaseAudioContext, node: IStretcherNode) {
@@ -59,7 +60,7 @@ export default class StretcherNode extends AudioNode {
59
60
 
60
61
  public set buffer(buffer: AudioBuffer) {
61
62
  this._buffer = buffer;
62
- const channelArrays = [];
63
+ const channelArrays: Float32Array[] = [];
63
64
 
64
65
  for (let i = 0; i < buffer.numberOfChannels; i += 1) {
65
66
  channelArrays.push(buffer.getChannelData(i));
@@ -87,7 +88,9 @@ export default class StretcherNode extends AudioNode {
87
88
  public set loopStart(value: number) {
88
89
  this._loopStart = value;
89
90
 
90
- (this.node as unknown as IStretcherNode).schedule({ loopStart: value });
91
+ if (this._isPlaying) {
92
+ (this.node as unknown as IStretcherNode).schedule({ loopStart: value });
93
+ }
91
94
  }
92
95
 
93
96
  public get loopEnd(): number {
@@ -97,7 +100,17 @@ export default class StretcherNode extends AudioNode {
97
100
  public set loopEnd(value: number) {
98
101
  this._loopEnd = value;
99
102
 
100
- (this.node as unknown as IStretcherNode).schedule({ loopEnd: value });
103
+ if (this._isPlaying) {
104
+ (this.node as unknown as IStretcherNode).schedule({ loopEnd: value });
105
+ }
106
+ }
107
+
108
+ public get loop(): boolean {
109
+ return this._loop;
110
+ }
111
+
112
+ public set loop(value: boolean) {
113
+ this._loop = value;
101
114
  }
102
115
 
103
116
  public start(
@@ -109,12 +122,19 @@ export default class StretcherNode extends AudioNode {
109
122
  ): void {
110
123
  this._isPlaying = true;
111
124
 
125
+ if (this.loop && this._loopStart !== -1 && this._loopEnd !== -1) {
126
+ (this.node as unknown as IStretcherNode).schedule({
127
+ loopStart: this._loopStart,
128
+ loopEnd: this._loopEnd,
129
+ });
130
+ }
131
+
112
132
  (this.node as unknown as IStretcherNode).start(
113
- when,
114
- offset,
115
- duration,
116
- rate,
117
- semitones
133
+ when ?? 0,
134
+ offset ?? 0,
135
+ duration ?? this._buffer?.duration ?? 0,
136
+ rate ?? this._playbackRate ?? 0,
137
+ semitones ?? 0
118
138
  );
119
139
  }
120
140
 
@@ -14,7 +14,7 @@ The current input time, within the sample buffer. You can change how often this
14
14
 
15
15
  ### `stretch.schedule({...})`
16
16
 
17
- This adds a scheduled change, removing any scheduled changes occuring after this one. The object properties are:
17
+ This adds a scheduled change, removing any scheduled changes occurring after this one. The object properties are:
18
18
 
19
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
20
  - `active` (bool): processing audio
@@ -1,3 +1,4 @@
1
+ /* eslint-disable */
1
2
  var SignalsmithStretch = (() => {
2
3
  var _scriptName =
3
4
  typeof document != 'undefined' ? document.currentScript?.src : undefined;
@@ -1,35 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
- #include <audioapi/HostObjects/AudioParamHostObject.h>
5
- #include <audioapi/core/effects/StretcherNode.h>
6
-
7
- #include <memory>
8
- #include <vector>
9
-
10
- namespace audioapi {
11
-
12
- using namespace facebook;
13
-
14
- class StretcherNodeHostObject : public AudioNodeHostObject {
15
- public:
16
- explicit StretcherNodeHostObject(const std::shared_ptr<StretcherNode> &node): AudioNodeHostObject(node) {
17
- addGetters(JSI_EXPORT_PROPERTY_GETTER(StretcherNodeHostObject, rate),
18
- JSI_EXPORT_PROPERTY_GETTER(StretcherNodeHostObject, semitones));
19
- }
20
-
21
- JSI_PROPERTY_GETTER(rate) {
22
- auto stretcherNode = std::static_pointer_cast<StretcherNode>(node_);
23
- auto rateParam =
24
- std::make_shared<AudioParamHostObject>(stretcherNode->getRateParam());
25
- return jsi::Object::createFromHostObject(runtime, rateParam);
26
- }
27
-
28
- JSI_PROPERTY_GETTER(semitones) {
29
- auto stretcherNode = std::static_pointer_cast<StretcherNode>(node_);
30
- auto semitonesParam =
31
- std::make_shared<AudioParamHostObject>(stretcherNode->getSemitonesParam());
32
- return jsi::Object::createFromHostObject(runtime, semitonesParam);
33
- }
34
- };
35
- } // namespace audioapi
@@ -1,94 +0,0 @@
1
- #include <audioapi/core/BaseAudioContext.h>
2
- #include <audioapi/core/effects/StretcherNode.h>
3
- #include <audioapi/core/utils/AudioArray.h>
4
- #include <audioapi/core/utils/AudioBus.h>
5
-
6
- namespace audioapi {
7
-
8
- StretcherNode::StretcherNode(BaseAudioContext *context) : AudioNode(context) {
9
- channelCountMode_ = ChannelCountMode::EXPLICIT;
10
- rate_ = std::make_shared<AudioParam>(1.0, 0.0, 3.0);
11
- semitones_ = std::make_shared<AudioParam>(0.0, -12.0, 12.0);
12
-
13
- stretch_ =
14
- std::make_shared<signalsmith::stretch::SignalsmithStretch<float>>();
15
- stretch_->presetDefault(channelCount_, context->getSampleRate());
16
- playbackRateBus_ = std::make_shared<AudioBus>(
17
- RENDER_QUANTUM_SIZE * 3, channelCount_, context_->getSampleRate());
18
-
19
- isInitialized_ = true;
20
- }
21
-
22
- std::shared_ptr<AudioParam> StretcherNode::getRateParam() const {
23
- return rate_;
24
- }
25
-
26
- std::shared_ptr<AudioParam> StretcherNode::getSemitonesParam() const {
27
- return semitones_;
28
- }
29
-
30
- void StretcherNode::processNode(
31
- const std::shared_ptr<AudioBus> &processingBus,
32
- int framesToProcess) {
33
- auto time = context_->getCurrentTime();
34
- auto semitones = semitones_->getValueAtTime(time);
35
-
36
- stretch_->setTransposeSemitones(semitones);
37
- stretch_->process(
38
- playbackRateBus_.get()[0],
39
- framesNeededToStretch_,
40
- audioBus_.get()[0],
41
- framesToProcess);
42
- }
43
-
44
- std::shared_ptr<AudioBus> StretcherNode::processAudio(
45
- std::shared_ptr<AudioBus> outputBus,
46
- int framesToProcess,
47
- bool checkIsAlreadyProcessed) {
48
- if (!isInitialized_) {
49
- return outputBus;
50
- }
51
-
52
- if (isAlreadyProcessed()) {
53
- return audioBus_;
54
- }
55
-
56
- auto time = context_->getCurrentTime();
57
-
58
- auto rate = rate_->getValueAtTime(time);
59
- framesNeededToStretch_ =
60
- static_cast<int>(rate * static_cast<float>(framesToProcess));
61
-
62
- playbackRateBus_->zero();
63
- auto writeIndex = 0;
64
- auto framesNeededToStretch = framesNeededToStretch_;
65
-
66
- // Collecting frames needed to stretch
67
- while (framesNeededToStretch > 0) {
68
- auto framesToCopy = std::min(framesNeededToStretch, framesToProcess);
69
-
70
- // Process inputs and return the bus with the most channels. We must not
71
- // check if the node has already been processed, cause we need to process it
72
- // multiple times in this case.
73
- auto processingBus = processInputs(outputBus, framesToCopy, false);
74
-
75
- // Apply channel count mode.
76
- processingBus = applyChannelCountMode(processingBus);
77
-
78
- // Mix all input buses into the processing bus.
79
- mixInputsBuses(processingBus);
80
-
81
- assert(processingBus != nullptr);
82
-
83
- playbackRateBus_->copy(processingBus.get(), 0, writeIndex, framesToCopy);
84
-
85
- writeIndex += framesToCopy;
86
- framesNeededToStretch -= framesToCopy;
87
- }
88
-
89
- processNode(audioBus_, framesToProcess);
90
-
91
- return audioBus_;
92
- }
93
-
94
- } // namespace audioapi
@@ -1,35 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/libs/signalsmith-stretch.h>
4
- #include <audioapi/core/AudioNode.h>
5
- #include <audioapi/core/AudioParam.h>
6
-
7
- #include <memory>
8
- #include <string>
9
- #include <cassert>
10
-
11
- namespace audioapi {
12
- class AudioBus;
13
-
14
- class StretcherNode : public AudioNode {
15
- public:
16
- explicit StretcherNode(BaseAudioContext *context);
17
-
18
- [[nodiscard]] std::shared_ptr<AudioParam> getRateParam() const;
19
- [[nodiscard]] std::shared_ptr<AudioParam> getSemitonesParam() const;
20
-
21
- protected:
22
- void processNode(const std::shared_ptr<AudioBus>& processingBus, int framesToProcess) override;
23
- std::shared_ptr<AudioBus> processAudio(std::shared_ptr<AudioBus> outputBus, int framesToProcess, bool checkIsAlreadyProcessed) override;
24
-
25
- private:
26
- // k-rate params
27
- std::shared_ptr<AudioParam> rate_;
28
- std::shared_ptr<AudioParam> semitones_;
29
-
30
- std::shared_ptr<signalsmith::stretch::SignalsmithStretch<float>> stretch_;
31
- std::shared_ptr<AudioBus> playbackRateBus_;
32
- int framesNeededToStretch_ = RENDER_QUANTUM_SIZE;
33
- };
34
-
35
- } // namespace audioapi