react-native-audio-api 0.4.13 → 0.5.0-rc.1

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 (110) hide show
  1. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +7 -6
  2. package/android/src/main/java/com/swmansion/audioapi/AudioAPIPackage.kt +25 -24
  3. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +17 -41
  4. package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +22 -32
  5. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +2 -17
  6. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +14 -4
  7. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +5 -8
  8. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +13 -9
  9. package/common/cpp/audioapi/HostObjects/BiquadFilterNodeHostObject.h +8 -19
  10. package/common/cpp/audioapi/core/AudioContext.cpp +14 -4
  11. package/common/cpp/audioapi/core/AudioContext.h +2 -2
  12. package/common/cpp/audioapi/core/BaseAudioContext.cpp +4 -2
  13. package/common/cpp/audioapi/core/BaseAudioContext.h +1 -1
  14. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +5 -6
  15. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +4 -3
  16. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +5 -11
  17. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +3 -31
  18. package/lib/module/api.js +1 -1
  19. package/lib/module/api.js.map +1 -1
  20. package/lib/module/api.web.js +1 -2
  21. package/lib/module/api.web.js.map +1 -1
  22. package/lib/module/core/AnalyserNode.js.map +1 -1
  23. package/lib/module/core/AudioBuffer.js.map +1 -1
  24. package/lib/module/core/AudioBufferSourceNode.js +0 -6
  25. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  26. package/lib/module/core/AudioParam.js.map +1 -1
  27. package/lib/module/core/BaseAudioContext.js +3 -2
  28. package/lib/module/core/BaseAudioContext.js.map +1 -1
  29. package/lib/module/core/BiquadFilterNode.js.map +1 -1
  30. package/lib/module/utils/index.js +6 -0
  31. package/lib/module/utils/index.js.map +1 -0
  32. package/lib/module/web-core/AnalyserNode.js +4 -20
  33. package/lib/module/web-core/AnalyserNode.js.map +1 -1
  34. package/lib/module/web-core/AudioBuffer.js +2 -6
  35. package/lib/module/web-core/AudioBuffer.js.map +1 -1
  36. package/lib/module/web-core/AudioBufferSourceNode.js +161 -21
  37. package/lib/module/web-core/AudioBufferSourceNode.js.map +1 -1
  38. package/lib/module/web-core/AudioContext.js +7 -8
  39. package/lib/module/web-core/AudioContext.js.map +1 -1
  40. package/lib/module/web-core/AudioParam.js +1 -1
  41. package/lib/module/web-core/AudioParam.js.map +1 -1
  42. package/lib/module/web-core/BiquadFilterNode.js +1 -9
  43. package/lib/module/web-core/BiquadFilterNode.js.map +1 -1
  44. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs +2 -2
  45. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs.map +1 -1
  46. package/lib/typescript/api.d.ts +1 -1
  47. package/lib/typescript/api.d.ts.map +1 -1
  48. package/lib/typescript/api.web.d.ts +1 -2
  49. package/lib/typescript/api.web.d.ts.map +1 -1
  50. package/lib/typescript/core/AnalyserNode.d.ts +4 -4
  51. package/lib/typescript/core/AnalyserNode.d.ts.map +1 -1
  52. package/lib/typescript/core/AudioBuffer.d.ts +3 -3
  53. package/lib/typescript/core/AudioBuffer.d.ts.map +1 -1
  54. package/lib/typescript/core/AudioBufferSourceNode.d.ts +0 -3
  55. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  56. package/lib/typescript/core/AudioParam.d.ts +1 -1
  57. package/lib/typescript/core/AudioParam.d.ts.map +1 -1
  58. package/lib/typescript/core/BaseAudioContext.d.ts +3 -3
  59. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  60. package/lib/typescript/core/BiquadFilterNode.d.ts +1 -1
  61. package/lib/typescript/core/BiquadFilterNode.d.ts.map +1 -1
  62. package/lib/typescript/interfaces.d.ts +12 -13
  63. package/lib/typescript/interfaces.d.ts.map +1 -1
  64. package/lib/typescript/types.d.ts +3 -1
  65. package/lib/typescript/types.d.ts.map +1 -1
  66. package/lib/typescript/utils/index.d.ts +2 -0
  67. package/lib/typescript/utils/index.d.ts.map +1 -0
  68. package/lib/typescript/web-core/AnalyserNode.d.ts +4 -4
  69. package/lib/typescript/web-core/AnalyserNode.d.ts.map +1 -1
  70. package/lib/typescript/web-core/AudioBuffer.d.ts +2 -2
  71. package/lib/typescript/web-core/AudioBuffer.d.ts.map +1 -1
  72. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +58 -6
  73. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts.map +1 -1
  74. package/lib/typescript/web-core/AudioContext.d.ts +3 -5
  75. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  76. package/lib/typescript/web-core/AudioParam.d.ts +1 -1
  77. package/lib/typescript/web-core/AudioParam.d.ts.map +1 -1
  78. package/lib/typescript/web-core/BaseAudioContext.d.ts +2 -2
  79. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  80. package/lib/typescript/web-core/BiquadFilterNode.d.ts +1 -1
  81. package/lib/typescript/web-core/BiquadFilterNode.d.ts.map +1 -1
  82. package/package.json +6 -6
  83. package/src/api.ts +0 -1
  84. package/src/api.web.ts +0 -2
  85. package/src/core/AnalyserNode.ts +4 -4
  86. package/src/core/AudioBuffer.ts +3 -3
  87. package/src/core/AudioBufferSourceNode.ts +0 -9
  88. package/src/core/AudioParam.ts +1 -1
  89. package/src/core/BaseAudioContext.ts +16 -5
  90. package/src/core/BiquadFilterNode.ts +3 -3
  91. package/src/interfaces.ts +14 -16
  92. package/src/types.ts +3 -1
  93. package/src/utils/index.ts +3 -0
  94. package/src/web-core/AnalyserNode.tsx +8 -30
  95. package/src/web-core/AudioBuffer.tsx +4 -14
  96. package/src/web-core/AudioBufferSourceNode.tsx +357 -31
  97. package/src/web-core/AudioContext.tsx +19 -13
  98. package/src/web-core/AudioParam.tsx +2 -6
  99. package/src/web-core/BaseAudioContext.tsx +3 -3
  100. package/src/web-core/BiquadFilterNode.tsx +6 -16
  101. package/src/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs +4 -3
  102. package/common/cpp/audioapi/core/types/TimeStretchType.h +0 -7
  103. package/lib/module/web-core/StretcherNode.js +0 -81
  104. package/lib/module/web-core/StretcherNode.js.map +0 -1
  105. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js +0 -823
  106. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js.map +0 -1
  107. package/lib/typescript/web-core/StretcherNode.d.ts +0 -48
  108. package/lib/typescript/web-core/StretcherNode.d.ts.map +0 -1
  109. package/src/web-core/StretcherNode.tsx +0 -145
  110. package/src/web-core/custom/signalsmithStretch/SignalsmithStretch.js +0 -946
@@ -10,9 +10,9 @@ export default class AnalyserNode extends AudioNode {
10
10
  constructor(context: BaseAudioContext, node: globalThis.AnalyserNode);
11
11
  get window(): WindowType;
12
12
  set window(value: WindowType);
13
- getByteFrequencyData(array: number[]): void;
14
- getByteTimeDomainData(array: number[]): void;
15
- getFloatFrequencyData(array: number[]): void;
16
- getFloatTimeDomainData(array: number[]): void;
13
+ getByteFrequencyData(array: Uint8Array): void;
14
+ getByteTimeDomainData(array: Uint8Array): void;
15
+ getFloatFrequencyData(array: Float32Array): void;
16
+ getFloatTimeDomainData(array: Float32Array): void;
17
17
  }
18
18
  //# sourceMappingURL=AnalyserNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnalyserNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AnalyserNode.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAAS;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;gBAElB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY;IAUpE,IAAW,MAAM,IAAI,UAAU,CAE9B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,UAAU,EAIlC;IAEM,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAU3C,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAU5C,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAS5C,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;CAQrD"}
1
+ {"version":3,"file":"AnalyserNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AnalyserNode.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAAS;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;gBAElB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY;IAUpE,IAAW,MAAM,IAAI,UAAU,CAE9B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,UAAU,EAIlC;IAEM,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAI7C,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAI9C,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAIhD,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;CAGzD"}
@@ -7,7 +7,7 @@ export default class AudioBuffer {
7
7
  readonly buffer: globalThis.AudioBuffer;
8
8
  constructor(buffer: globalThis.AudioBuffer);
9
9
  getChannelData(channel: number): Float32Array;
10
- copyFromChannel(destination: number[], channelNumber: number, startInChannel?: number): void;
11
- copyToChannel(source: number[], channelNumber: number, startInChannel?: number): void;
10
+ copyFromChannel(destination: Float32Array, channelNumber: number, startInChannel?: number): void;
11
+ copyToChannel(source: Float32Array, channelNumber: number, startInChannel?: number): void;
12
12
  }
13
13
  //# sourceMappingURL=AudioBuffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioBuffer.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioBuffer.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC,gBAAgB;IAChB,SAAgB,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC;gBAEnC,MAAM,EAAE,UAAU,CAAC,WAAW;IAQnC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAU7C,eAAe,CACpB,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,MAAM,EACrB,cAAc,GAAE,MAAU,GACzB,IAAI;IAsBA,aAAa,CAClB,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,MAAM,EACrB,cAAc,GAAE,MAAU,GACzB,IAAI;CAmBR"}
1
+ {"version":3,"file":"AudioBuffer.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioBuffer.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC,gBAAgB;IAChB,SAAgB,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC;gBAEnC,MAAM,EAAE,UAAU,CAAC,WAAW;IAQnC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAU7C,eAAe,CACpB,WAAW,EAAE,YAAY,EACzB,aAAa,EAAE,MAAM,EACrB,cAAc,GAAE,MAAU,GACzB,IAAI;IAgBA,aAAa,CAClB,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EACrB,cAAc,GAAE,MAAU,GACzB,IAAI;CAeR"}
@@ -1,12 +1,64 @@
1
- import AudioScheduledSourceNode from './AudioScheduledSourceNode';
2
1
  import AudioParam from './AudioParam';
3
2
  import AudioBuffer from './AudioBuffer';
4
3
  import BaseAudioContext from './BaseAudioContext';
5
- import { TimeStretchType } from '../types';
6
- export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
4
+ import AudioScheduledSourceNode from './AudioScheduledSourceNode';
5
+ import { globalTag } from './custom/LoadCustomWasm';
6
+ interface ScheduleOptions {
7
+ rate?: number;
8
+ active?: boolean;
9
+ output?: number;
10
+ input?: number;
11
+ semitones?: number;
12
+ loopStart?: number;
13
+ loopEnd?: number;
14
+ }
15
+ interface IStretcherNode extends globalThis.AudioNode {
16
+ channelCount: number;
17
+ channelCountMode: globalThis.ChannelCountMode;
18
+ channelInterpretation: globalThis.ChannelInterpretation;
19
+ context: globalThis.BaseAudioContext;
20
+ numberOfInputs: number;
21
+ numberOfOutputs: number;
22
+ onended: ((this: globalThis.AudioScheduledSourceNode, ev: Event) => unknown) | null;
23
+ addEventListener: (type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions | undefined) => void;
24
+ dispatchEvent: (event: Event) => boolean;
25
+ removeEventListener: (type: string, callback: EventListenerOrEventListenerObject | null, options?: boolean | EventListenerOptions | undefined) => void;
26
+ addBuffers(channels: Float32Array[]): void;
27
+ dropBuffers(): void;
28
+ schedule(options: ScheduleOptions): void;
29
+ start(when?: number, offset?: number, duration?: number, rate?: number, semitones?: number): void;
30
+ stop(when?: number): void;
31
+ connect(destination: globalThis.AudioNode, output?: number, input?: number): globalThis.AudioNode;
32
+ connect(destination: globalThis.AudioParam, output?: number): void;
33
+ disconnect(): void;
34
+ disconnect(output: number): void;
35
+ disconnect(destination: globalThis.AudioNode): globalThis.AudioNode;
36
+ disconnect(destination: globalThis.AudioNode, output: number): void;
37
+ disconnect(destination: globalThis.AudioNode, output: number, input: number): void;
38
+ disconnect(destination: globalThis.AudioParam): void;
39
+ disconnect(destination: globalThis.AudioParam, output: number): void;
40
+ }
41
+ type DefaultSource = globalThis.AudioBufferSourceNode;
42
+ type IAudioBufferSourceNode = DefaultSource | IStretcherNode;
43
+ declare global {
44
+ interface Window {
45
+ [globalTag]: (audioContext: globalThis.BaseAudioContext) => Promise<IStretcherNode>;
46
+ }
47
+ }
48
+ export default class AudioBufferSourceNode<T extends IAudioBufferSourceNode = DefaultSource> extends AudioScheduledSourceNode {
49
+ private _pitchCorrection;
7
50
  readonly playbackRate: AudioParam;
8
51
  readonly detune: AudioParam;
9
- constructor(context: BaseAudioContext, node: globalThis.AudioBufferSourceNode);
52
+ private _loop;
53
+ private _loopStart;
54
+ private _loopEnd;
55
+ private _buffer;
56
+ constructor(context: BaseAudioContext, node: T, pitchCorrection: boolean);
57
+ private isStretcherNode;
58
+ private asStretcher;
59
+ private asBufferSource;
60
+ setDetune(value: number, when?: number): void;
61
+ setPlaybackRate(value: number, when?: number): void;
10
62
  get buffer(): AudioBuffer | null;
11
63
  set buffer(buffer: AudioBuffer | null);
12
64
  get loop(): boolean;
@@ -15,8 +67,8 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
15
67
  set loopStart(value: number);
16
68
  get loopEnd(): number;
17
69
  set loopEnd(value: number);
18
- get timeStretch(): TimeStretchType;
19
- set timeStretch(value: TimeStretchType);
20
70
  start(when?: number, offset?: number, duration?: number): void;
71
+ stop(when?: number): void;
21
72
  }
73
+ export {};
22
74
  //# 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;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"}
1
+ {"version":3,"file":"AudioBufferSourceNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioBufferSourceNode.tsx"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAe,SAAQ,UAAU,CAAC,SAAS;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAC9C,qBAAqB,EAAE,UAAU,CAAC,qBAAqB,CAAC;IACxD,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IAExB,OAAO,EACH,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,wBAAwB,EAAE,EAAE,EAAE,KAAK,KAAK,OAAO,CAAC,GACnE,IAAI,CAAC;IACT,gBAAgB,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,KACpD,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IACzC,mBAAmB,EAAE,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,KACjD,IAAI,CAAC;IAEV,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC3C,WAAW,IAAI,IAAI,CAAC;IAEpB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAEzC,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,CAAC;IAER,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,OAAO,CACL,WAAW,EAAE,UAAU,CAAC,SAAS,EACjC,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnE,UAAU,IAAI,IAAI,CAAC;IACnB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACpE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACpE,UAAU,CACR,WAAW,EAAE,UAAU,CAAC,SAAS,EACjC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,IAAI,CAAC;IAER,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;IACrD,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACtE;AA+FD,KAAK,aAAa,GAAG,UAAU,CAAC,qBAAqB,CAAC;AAEtD,KAAK,sBAAsB,GAAG,aAAa,GAAG,cAAc,CAAC;AAE7D,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,qBAAqB,CACxC,CAAC,SAAS,sBAAsB,GAAG,aAAa,CAChD,SAAQ,wBAAwB;IAChC,OAAO,CAAC,gBAAgB,CAAU;IAClC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAE5B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,QAAQ,CAAc;IAE9B,OAAO,CAAC,OAAO,CAA4B;gBAE/B,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO;IAiCxE,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IAIf,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,IAAI;IAWhD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,IAAI;IAW7D,IAAW,MAAM,IAAI,WAAW,GAAG,IAAI,CAYtC;IAED,IAAW,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EA2B3C;IAED,IAAW,IAAI,IAAI,OAAO,CAMzB;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,OAAO,EAO7B;IAED,IAAW,SAAS,IAAI,MAAM,CAM7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAOjC;IAED,IAAW,OAAO,IAAI,MAAM,CAM3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAO/B;IAEM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAmD9D,IAAI,CAAC,IAAI,GAAE,MAAU,GAAG,IAAI;CAoBpC"}
@@ -1,4 +1,4 @@
1
- import { ContextState, PeriodicWaveConstraints, AudioContextOptions } from '../types';
1
+ import { ContextState, PeriodicWaveConstraints, AudioContextOptions, AudioBufferSourceNodeOptions } from '../types';
2
2
  import BaseAudioContext from './BaseAudioContext';
3
3
  import AnalyserNode from './AnalyserNode';
4
4
  import AudioDestinationNode from './AudioDestinationNode';
@@ -9,7 +9,6 @@ import GainNode from './GainNode';
9
9
  import OscillatorNode from './OscillatorNode';
10
10
  import PeriodicWave from './PeriodicWave';
11
11
  import StereoPannerNode from './StereoPannerNode';
12
- import StretcherNode from './StretcherNode';
13
12
  export default class AudioContext implements BaseAudioContext {
14
13
  readonly context: globalThis.AudioContext;
15
14
  readonly destination: AudioDestinationNode;
@@ -21,11 +20,10 @@ export default class AudioContext implements BaseAudioContext {
21
20
  createGain(): GainNode;
22
21
  createStereoPanner(): StereoPannerNode;
23
22
  createBiquadFilter(): BiquadFilterNode;
24
- createBufferSource(): AudioBufferSourceNode;
23
+ createBufferSource(options?: AudioBufferSourceNodeOptions): Promise<AudioBufferSourceNode>;
25
24
  createBuffer(numOfChannels: number, length: number, sampleRate: number): AudioBuffer;
26
- createPeriodicWave(real: number[], imag: number[], constraints?: PeriodicWaveConstraints): PeriodicWave;
25
+ createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;
27
26
  createAnalyser(): AnalyserNode;
28
- createStretcher(): Promise<StretcherNode>;
29
27
  decodeAudioDataSource(source: string): Promise<AudioBuffer>;
30
28
  close(): Promise<void>;
31
29
  resume(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"AudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAElB,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,gBAAgB;IAC3D,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC;IAE1C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,CAAC,EAAE,mBAAmB;IAazC,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,qBAAqB;IAI3C,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAYf,cAAc,IAAI,YAAY;IAIxB,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC;IAQzC,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
1
+ {"version":3,"file":"AudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAIlD,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,gBAAgB;IAC3D,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC;IAE1C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,CAAC,EAAE,mBAAmB;IAazC,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAIhC,kBAAkB,CACtB,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,CAAC,qBAAqB,CAAC;IAgBjC,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAYf,cAAc,IAAI,YAAY;IAIxB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -10,7 +10,7 @@ export default class AudioParam {
10
10
  linearRampToValueAtTime(value: number, endTime: number): AudioParam;
11
11
  exponentialRampToValueAtTime(value: number, endTime: number): AudioParam;
12
12
  setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParam;
13
- setValueCurveAtTime(values: number[], startTime: number, duration: number): AudioParam;
13
+ setValueCurveAtTime(values: Float32Array, startTime: number, duration: number): AudioParam;
14
14
  cancelScheduledValues(cancelTime: number): AudioParam;
15
15
  cancelAndHoldAtTime(cancelTime: number): AudioParam;
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AudioParam.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioParam.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;gBAElC,KAAK,EAAE,UAAU,CAAC,UAAU;IAOxC,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IAEM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU;IAY5D,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;IAYnE,4BAA4B,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,UAAU;IAYN,eAAe,CACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,UAAU;IAkBN,mBAAmB,CACxB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,UAAU;IA0BN,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;IAYrD,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;CAW3D"}
1
+ {"version":3,"file":"AudioParam.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioParam.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;gBAElC,KAAK,EAAE,UAAU,CAAC,UAAU;IAOxC,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IAEM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU;IAY5D,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;IAYnE,4BAA4B,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,UAAU;IAYN,eAAe,CACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,UAAU;IAkBN,mBAAmB,CACxB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,UAAU;IAsBN,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;IAYrD,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU;CAW3D"}
@@ -18,9 +18,9 @@ export default interface BaseAudioContext {
18
18
  createGain(): GainNode;
19
19
  createStereoPanner(): StereoPannerNode;
20
20
  createBiquadFilter(): BiquadFilterNode;
21
- createBufferSource(): AudioBufferSourceNode;
21
+ createBufferSource(): Promise<AudioBufferSourceNode>;
22
22
  createBuffer(numOfChannels: number, length: number, sampleRate: number): AudioBuffer;
23
- createPeriodicWave(real: number[], imag: number[], constraints?: PeriodicWaveConstraints): PeriodicWave;
23
+ createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;
24
24
  createAnalyser(): AnalyserNode;
25
25
  decodeAudioDataSource(source: string): Promise<AudioBuffer>;
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/BaseAudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACvC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAE9C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,IAAI,WAAW,IAAI,MAAM,CAAC;IAC1B,IAAI,KAAK,IAAI,YAAY,CAAC;IAC1B,gBAAgB,IAAI,cAAc,CAAC;IACnC,UAAU,IAAI,QAAQ,CAAC;IACvB,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,kBAAkB,IAAI,qBAAqB,CAAC;IAC5C,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW,CAAC;IACf,kBAAkB,CAChB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY,CAAC;IAChB,cAAc,IAAI,YAAY,CAAC;IAC/B,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7D"}
1
+ {"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/web-core/BaseAudioContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACvC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC;IAE9C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,IAAI,WAAW,IAAI,MAAM,CAAC;IAC1B,IAAI,KAAK,IAAI,YAAY,CAAC;IAC1B,gBAAgB,IAAI,cAAc,CAAC;IACnC,UAAU,IAAI,QAAQ,CAAC;IACvB,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,kBAAkB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrD,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW,CAAC;IACf,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY,CAAC;IAChB,cAAc,IAAI,YAAY,CAAC;IAC/B,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7D"}
@@ -10,6 +10,6 @@ export default class BiquadFilterNode extends AudioNode {
10
10
  constructor(context: BaseAudioContext, biquadFilter: globalThis.BiquadFilterNode);
11
11
  get type(): BiquadFilterType;
12
12
  set type(value: BiquadFilterType);
13
- getFrequencyResponse(frequencyArray: number[], magResponseOutput: number[], phaseResponseOutput: number[]): void;
13
+ getFrequencyResponse(frequencyArray: Float32Array, magResponseOutput: Float32Array, phaseResponseOutput: Float32Array): void;
14
14
  }
15
15
  //# sourceMappingURL=BiquadFilterNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BiquadFilterNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/BiquadFilterNode.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAS;IACrD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;gBAGxB,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,UAAU,CAAC,gBAAgB;IAS3C,IAAW,IAAI,IAAI,gBAAgB,CAElC;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAEtC;IAEM,oBAAoB,CACzB,cAAc,EAAE,MAAM,EAAE,EACxB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,mBAAmB,EAAE,MAAM,EAAE;CA2BhC"}
1
+ {"version":3,"file":"BiquadFilterNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/BiquadFilterNode.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAS;IACrD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;gBAGxB,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,UAAU,CAAC,gBAAgB;IAS3C,IAAW,IAAI,IAAI,gBAAgB,CAElC;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAEtC;IAEM,oBAAoB,CACzB,cAAc,EAAE,YAAY,EAC5B,iBAAiB,EAAE,YAAY,EAC/B,mBAAmB,EAAE,YAAY;CAiBpC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.4.13",
3
+ "version": "0.5.0-rc.1",
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
6
  "setup-rn-audio-api-web": "./scripts/setup-rn-audio-api-web.js"
@@ -87,10 +87,10 @@
87
87
  "@babel/types": "^7.20.0",
88
88
  "@commitlint/config-conventional": "^17.0.2",
89
89
  "@evilmartians/lefthook": "^1.5.0",
90
- "@react-native/babel-preset": "0.76.5",
91
- "@react-native/eslint-config": "^0.76.5",
92
- "@react-native/metro-config": "0.76.5",
93
- "@react-native/typescript-config": "0.76.5",
90
+ "@react-native/babel-preset": "0.77.1",
91
+ "@react-native/eslint-config": "^0.77.1",
92
+ "@react-native/metro-config": "0.77.1",
93
+ "@react-native/typescript-config": "0.77.1",
94
94
  "@types/babel__core": "^7.20.0",
95
95
  "@types/babel__generator": "^7.6.4",
96
96
  "@types/babel__traverse": "^7.14.2",
@@ -119,7 +119,7 @@
119
119
  "jest": "^29.7.0",
120
120
  "prettier": "^3.3.3",
121
121
  "react": "18.3.1",
122
- "react-native": "0.76.5",
122
+ "react-native": "0.77.1",
123
123
  "react-native-builder-bob": "0.33.1",
124
124
  "turbo": "^1.10.7",
125
125
  "typescript": "~5.3.0"
package/src/api.ts CHANGED
@@ -39,7 +39,6 @@ export {
39
39
  ContextState,
40
40
  WindowType,
41
41
  PeriodicWaveConstraints,
42
- TimeStretchType,
43
42
  } from './types';
44
43
 
45
44
  export {
package/src/api.web.ts CHANGED
@@ -11,7 +11,6 @@ export { default as BiquadFilterNode } from './web-core/BiquadFilterNode';
11
11
  export { default as GainNode } from './web-core/GainNode';
12
12
  export { default as OscillatorNode } from './web-core/OscillatorNode';
13
13
  export { default as StereoPannerNode } from './web-core/StereoPannerNode';
14
- export { default as StretcherNode } from './web-core/StretcherNode';
15
14
 
16
15
  export * from './web-core/custom';
17
16
 
@@ -23,7 +22,6 @@ export {
23
22
  ContextState,
24
23
  WindowType,
25
24
  PeriodicWaveConstraints,
26
- TimeStretchType,
27
25
  } from './types';
28
26
 
29
27
  export {
@@ -76,19 +76,19 @@ export default class AnalyserNode extends AudioNode {
76
76
  return (this.node as IAnalyserNode).frequencyBinCount;
77
77
  }
78
78
 
79
- public getFloatFrequencyData(array: number[]): void {
79
+ public getFloatFrequencyData(array: Float32Array): void {
80
80
  (this.node as IAnalyserNode).getFloatFrequencyData(array);
81
81
  }
82
82
 
83
- public getByteFrequencyData(array: number[]): void {
83
+ public getByteFrequencyData(array: Uint8Array): void {
84
84
  (this.node as IAnalyserNode).getByteFrequencyData(array);
85
85
  }
86
86
 
87
- public getFloatTimeDomainData(array: number[]): void {
87
+ public getFloatTimeDomainData(array: Float32Array): void {
88
88
  (this.node as IAnalyserNode).getFloatTimeDomainData(array);
89
89
  }
90
90
 
91
- public getByteTimeDomainData(array: number[]): void {
91
+ public getByteTimeDomainData(array: Uint8Array): void {
92
92
  (this.node as IAnalyserNode).getByteTimeDomainData(array);
93
93
  }
94
94
  }
@@ -17,7 +17,7 @@ export default class AudioBuffer {
17
17
  this.numberOfChannels = buffer.numberOfChannels;
18
18
  }
19
19
 
20
- public getChannelData(channel: number): number[] {
20
+ public getChannelData(channel: number): Float32Array {
21
21
  if (channel < 0 || channel >= this.numberOfChannels) {
22
22
  throw new IndexSizeError(
23
23
  `The channel number provided (${channel}) is outside the range [0, ${this.numberOfChannels - 1}]`
@@ -27,7 +27,7 @@ export default class AudioBuffer {
27
27
  }
28
28
 
29
29
  public copyFromChannel(
30
- destination: number[],
30
+ destination: Float32Array,
31
31
  channelNumber: number,
32
32
  startInChannel: number = 0
33
33
  ): void {
@@ -47,7 +47,7 @@ export default class AudioBuffer {
47
47
  }
48
48
 
49
49
  public copyToChannel(
50
- source: number[],
50
+ source: Float32Array,
51
51
  channelNumber: number,
52
52
  startInChannel: number = 0
53
53
  ): void {
@@ -4,7 +4,6 @@ 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';
8
7
 
9
8
  export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
10
9
  readonly playbackRate: AudioParam;
@@ -58,14 +57,6 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
58
57
  (this.node as IAudioBufferSourceNode).loopEnd = value;
59
58
  }
60
59
 
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
-
69
60
  public start(when: number = 0, offset: number = 0, duration?: number): void {
70
61
  if (when < 0) {
71
62
  throw new RangeError(
@@ -85,7 +85,7 @@ export default class AudioParam {
85
85
  }
86
86
 
87
87
  public setValueCurveAtTime(
88
- values: number[],
88
+ values: Float32Array,
89
89
  startTime: number,
90
90
  duration: number
91
91
  ): AudioParam {
@@ -1,5 +1,9 @@
1
1
  import { IBaseAudioContext } from '../interfaces';
2
- import { ContextState, PeriodicWaveConstraints } from '../types';
2
+ import {
3
+ ContextState,
4
+ PeriodicWaveConstraints,
5
+ AudioBufferSourceNodeOptions,
6
+ } from '../types';
3
7
  import AudioDestinationNode from './AudioDestinationNode';
4
8
  import OscillatorNode from './OscillatorNode';
5
9
  import GainNode from './GainNode';
@@ -46,8 +50,15 @@ export default class BaseAudioContext {
46
50
  return new BiquadFilterNode(this, this.context.createBiquadFilter());
47
51
  }
48
52
 
49
- createBufferSource(): AudioBufferSourceNode {
50
- return new AudioBufferSourceNode(this, this.context.createBufferSource());
53
+ createBufferSource(
54
+ options?: AudioBufferSourceNodeOptions
55
+ ): AudioBufferSourceNode {
56
+ const pitchCorrection = options?.pitchCorrection ?? false;
57
+
58
+ return new AudioBufferSourceNode(
59
+ this,
60
+ this.context.createBufferSource(pitchCorrection)
61
+ );
51
62
  }
52
63
 
53
64
  createBuffer(
@@ -79,8 +90,8 @@ export default class BaseAudioContext {
79
90
  }
80
91
 
81
92
  createPeriodicWave(
82
- real: number[],
83
- imag: number[],
93
+ real: Float32Array,
94
+ imag: Float32Array,
84
95
  constraints?: PeriodicWaveConstraints
85
96
  ): PeriodicWave {
86
97
  if (real.length !== imag.length) {
@@ -28,9 +28,9 @@ export default class BiquadFilterNode extends AudioNode {
28
28
  }
29
29
 
30
30
  public getFrequencyResponse(
31
- frequencyArray: number[],
32
- magResponseOutput: number[],
33
- phaseResponseOutput: number[]
31
+ frequencyArray: Float32Array,
32
+ magResponseOutput: Float32Array,
33
+ phaseResponseOutput: Float32Array
34
34
  ) {
35
35
  if (
36
36
  frequencyArray.length !== magResponseOutput.length ||
package/src/interfaces.ts CHANGED
@@ -5,7 +5,6 @@ import {
5
5
  ChannelCountMode,
6
6
  ChannelInterpretation,
7
7
  WindowType,
8
- TimeStretchType,
9
8
  } from './types';
10
9
 
11
10
  export interface AudioAPIInstaller {
@@ -22,15 +21,15 @@ export interface IBaseAudioContext {
22
21
  createGain(): IGainNode;
23
22
  createStereoPanner(): IStereoPannerNode;
24
23
  createBiquadFilter: () => IBiquadFilterNode;
25
- createBufferSource: () => IAudioBufferSourceNode;
24
+ createBufferSource: (pitchCorrection: boolean) => IAudioBufferSourceNode;
26
25
  createBuffer: (
27
26
  channels: number,
28
27
  length: number,
29
28
  sampleRate: number
30
29
  ) => IAudioBuffer;
31
30
  createPeriodicWave: (
32
- real: number[],
33
- imag: number[],
31
+ real: Float32Array,
32
+ imag: Float32Array,
34
33
  disableNormalization: boolean
35
34
  ) => IPeriodicWave;
36
35
  createAnalyser: () => IAnalyserNode;
@@ -71,9 +70,9 @@ export interface IBiquadFilterNode extends IAudioNode {
71
70
  type: BiquadFilterType;
72
71
 
73
72
  getFrequencyResponse(
74
- frequencyArray: number[],
75
- magResponseOutput: number[],
76
- phaseResponseOutput: number[]
73
+ frequencyArray: Float32Array,
74
+ magResponseOutput: Float32Array,
75
+ phaseResponseOutput: Float32Array
77
76
  ): void;
78
77
  }
79
78
 
@@ -100,7 +99,6 @@ export interface IAudioBufferSourceNode extends IAudioScheduledSourceNode {
100
99
  loopEnd: number;
101
100
  detune: IAudioParam;
102
101
  playbackRate: IAudioParam;
103
- timeStretch: TimeStretchType;
104
102
 
105
103
  start: (when?: number, offset?: number, duration?: number) => void;
106
104
  }
@@ -111,14 +109,14 @@ export interface IAudioBuffer {
111
109
  readonly sampleRate: number;
112
110
  readonly numberOfChannels: number;
113
111
 
114
- getChannelData(channel: number): number[];
112
+ getChannelData(channel: number): Float32Array;
115
113
  copyFromChannel(
116
- destination: number[],
114
+ destination: Float32Array,
117
115
  channelNumber: number,
118
116
  startInChannel: number
119
117
  ): void;
120
118
  copyToChannel(
121
- source: number[],
119
+ source: Float32Array,
122
120
  channelNumber: number,
123
121
  startInChannel: number
124
122
  ): void;
@@ -139,7 +137,7 @@ export interface IAudioParam {
139
137
  timeConstant: number
140
138
  ) => void;
141
139
  setValueCurveAtTime: (
142
- values: number[],
140
+ values: Float32Array,
143
141
  startTime: number,
144
142
  duration: number
145
143
  ) => void;
@@ -157,8 +155,8 @@ export interface IAnalyserNode extends IAudioNode {
157
155
  smoothingTimeConstant: number;
158
156
  window: WindowType;
159
157
 
160
- getFloatFrequencyData: (array: number[]) => void;
161
- getByteFrequencyData: (array: number[]) => void;
162
- getFloatTimeDomainData: (array: number[]) => void;
163
- getByteTimeDomainData: (array: number[]) => void;
158
+ getFloatFrequencyData: (array: Float32Array) => void;
159
+ getByteFrequencyData: (array: Uint8Array) => void;
160
+ getFloatTimeDomainData: (array: Float32Array) => void;
161
+ getByteTimeDomainData: (array: Uint8Array) => void;
164
162
  }
package/src/types.ts CHANGED
@@ -31,4 +31,6 @@ export interface AudioContextOptions {
31
31
 
32
32
  export type WindowType = 'blackman' | 'hann';
33
33
 
34
- export type TimeStretchType = 'linear' | 'speech-music';
34
+ export interface AudioBufferSourceNodeOptions {
35
+ pitchCorrection: boolean;
36
+ }
@@ -0,0 +1,3 @@
1
+ export function clamp(value: number, min: number, max: number): number {
2
+ return Math.min(Math.max(value, min), max);
3
+ }
@@ -29,41 +29,19 @@ export default class AnalyserNode extends AudioNode {
29
29
  );
30
30
  }
31
31
 
32
- public getByteFrequencyData(array: number[]): void {
33
- const data = new Uint8Array(array);
34
-
35
- (this.node as globalThis.AnalyserNode).getByteFrequencyData(data);
36
-
37
- for (let i = 0; i < array.length; i++) {
38
- array[i] = data[i];
39
- }
32
+ public getByteFrequencyData(array: Uint8Array): void {
33
+ (this.node as globalThis.AnalyserNode).getByteFrequencyData(array);
40
34
  }
41
35
 
42
- public getByteTimeDomainData(array: number[]): void {
43
- const data = new Uint8Array(array);
44
-
45
- (this.node as globalThis.AnalyserNode).getByteTimeDomainData(data);
46
-
47
- for (let i = 0; i < array.length; i++) {
48
- array[i] = data[i];
49
- }
36
+ public getByteTimeDomainData(array: Uint8Array): void {
37
+ (this.node as globalThis.AnalyserNode).getByteTimeDomainData(array);
50
38
  }
51
39
 
52
- public getFloatFrequencyData(array: number[]): void {
53
- const data = new Float32Array(array);
54
- (this.node as globalThis.AnalyserNode).getFloatFrequencyData(data);
55
-
56
- for (let i = 0; i < array.length; i++) {
57
- array[i] = data[i];
58
- }
40
+ public getFloatFrequencyData(array: Float32Array): void {
41
+ (this.node as globalThis.AnalyserNode).getFloatFrequencyData(array);
59
42
  }
60
43
 
61
- public getFloatTimeDomainData(array: number[]): void {
62
- const data = new Float32Array(array);
63
- (this.node as globalThis.AnalyserNode).getFloatTimeDomainData(data);
64
-
65
- for (let i = 0; i < array.length; i++) {
66
- array[i] = data[i];
67
- }
44
+ public getFloatTimeDomainData(array: Float32Array): void {
45
+ (this.node as globalThis.AnalyserNode).getFloatTimeDomainData(array);
68
46
  }
69
47
  }
@@ -28,7 +28,7 @@ export default class AudioBuffer {
28
28
  }
29
29
 
30
30
  public copyFromChannel(
31
- destination: number[],
31
+ destination: Float32Array,
32
32
  channelNumber: number,
33
33
  startInChannel: number = 0
34
34
  ): void {
@@ -44,17 +44,11 @@ export default class AudioBuffer {
44
44
  );
45
45
  }
46
46
 
47
- const array = new Float32Array(destination);
48
-
49
- this.buffer.copyFromChannel(array, channelNumber, startInChannel);
50
-
51
- for (let i = 0; i < destination.length; i++) {
52
- destination[i] = array[i];
53
- }
47
+ this.buffer.copyFromChannel(destination, channelNumber, startInChannel);
54
48
  }
55
49
 
56
50
  public copyToChannel(
57
- source: number[],
51
+ source: Float32Array,
58
52
  channelNumber: number,
59
53
  startInChannel: number = 0
60
54
  ): void {
@@ -70,10 +64,6 @@ export default class AudioBuffer {
70
64
  );
71
65
  }
72
66
 
73
- this.buffer.copyToChannel(
74
- new Float32Array(source),
75
- channelNumber,
76
- startInChannel
77
- );
67
+ this.buffer.copyToChannel(source, channelNumber, startInChannel);
78
68
  }
79
69
  }