react-native-audio-api 0.6.2-rc.6 → 0.6.2

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 (92) hide show
  1. package/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +25 -0
  2. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionCallback.kt +13 -0
  3. package/common/cpp/audioapi/HostObjects/AudioBufferBaseSourceNodeHostObject.h +60 -0
  4. package/common/cpp/audioapi/HostObjects/AudioBufferQueueSourceNodeHostObject.h +5 -67
  5. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +26 -56
  6. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +9 -0
  7. package/common/cpp/audioapi/HostObjects/CustomProcessorNodeHostObject.h +54 -0
  8. package/common/cpp/audioapi/core/BaseAudioContext.cpp +9 -0
  9. package/common/cpp/audioapi/core/BaseAudioContext.h +2 -0
  10. package/common/cpp/audioapi/core/effects/CustomProcessorNode.cpp +173 -0
  11. package/common/cpp/audioapi/core/effects/CustomProcessorNode.h +186 -0
  12. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +104 -0
  13. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +54 -0
  14. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +12 -129
  15. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +8 -37
  16. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +4 -93
  17. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +4 -30
  18. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +1 -11
  19. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +2 -3
  20. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +0 -5
  21. package/common/cpp/audioapi/core/sources/OscillatorNode.h +0 -1
  22. package/common/cpp/audioapi/core/utils/AudioNodeDestructor.cpp +3 -1
  23. package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +1 -1
  24. package/ios/audioapi/ios/system/AudioEngine.h +1 -0
  25. package/ios/audioapi/ios/system/AudioEngine.mm +14 -3
  26. package/ios/audioapi/ios/system/AudioSessionManager.h +1 -0
  27. package/ios/audioapi/ios/system/AudioSessionManager.mm +10 -0
  28. package/ios/audioapi/ios/system/NotificationManager.mm +2 -4
  29. package/lib/commonjs/api.js +7 -0
  30. package/lib/commonjs/api.js.map +1 -1
  31. package/lib/commonjs/core/AudioBufferBaseSourceNode.js +29 -0
  32. package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -0
  33. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +5 -22
  34. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  35. package/lib/commonjs/core/AudioBufferSourceNode.js +4 -21
  36. package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
  37. package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
  38. package/lib/commonjs/core/BaseAudioContext.js +4 -0
  39. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  40. package/lib/commonjs/core/CustomProcessorNode.js +23 -0
  41. package/lib/commonjs/core/CustomProcessorNode.js.map +1 -0
  42. package/lib/commonjs/web-core/AudioScheduledSourceNode.js +1 -4
  43. package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
  44. package/lib/module/api.js +1 -0
  45. package/lib/module/api.js.map +1 -1
  46. package/lib/module/core/AudioBufferBaseSourceNode.js +23 -0
  47. package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -0
  48. package/lib/module/core/AudioBufferQueueSourceNode.js +5 -22
  49. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  50. package/lib/module/core/AudioBufferSourceNode.js +4 -21
  51. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  52. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  53. package/lib/module/core/BaseAudioContext.js +4 -0
  54. package/lib/module/core/BaseAudioContext.js.map +1 -1
  55. package/lib/module/core/CustomProcessorNode.js +17 -0
  56. package/lib/module/core/CustomProcessorNode.js.map +1 -0
  57. package/lib/module/web-core/AudioScheduledSourceNode.js +1 -4
  58. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  59. package/lib/typescript/api.d.ts +1 -0
  60. package/lib/typescript/api.d.ts.map +1 -1
  61. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +13 -0
  62. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -0
  63. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +3 -12
  64. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  65. package/lib/typescript/core/AudioBufferSourceNode.d.ts +2 -11
  66. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  67. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +2 -2
  68. package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
  69. package/lib/typescript/core/BaseAudioContext.d.ts +2 -0
  70. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  71. package/lib/typescript/core/CustomProcessorNode.d.ts +12 -0
  72. package/lib/typescript/core/CustomProcessorNode.d.ts.map +1 -0
  73. package/lib/typescript/events/types.d.ts +2 -7
  74. package/lib/typescript/events/types.d.ts.map +1 -1
  75. package/lib/typescript/interfaces.d.ts +16 -13
  76. package/lib/typescript/interfaces.d.ts.map +1 -1
  77. package/lib/typescript/types.d.ts +1 -0
  78. package/lib/typescript/types.d.ts.map +1 -1
  79. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +2 -1
  80. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts.map +1 -1
  81. package/package.json +1 -1
  82. package/src/api.ts +1 -0
  83. package/src/core/AudioBufferBaseSourceNode.ts +33 -0
  84. package/src/core/AudioBufferQueueSourceNode.ts +3 -35
  85. package/src/core/AudioBufferSourceNode.ts +10 -33
  86. package/src/core/AudioScheduledSourceNode.ts +2 -2
  87. package/src/core/BaseAudioContext.ts +8 -0
  88. package/src/core/CustomProcessorNode.ts +28 -0
  89. package/src/events/types.ts +2 -8
  90. package/src/interfaces.ts +25 -23
  91. package/src/types.ts +2 -0
  92. package/src/web-core/AudioScheduledSourceNode.tsx +3 -6
@@ -1,4 +1,4 @@
1
- import { WindowType, ContextState, OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation } from './types';
1
+ import { WindowType, ContextState, OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ProcessorMode } from './types';
2
2
  import { AudioEventName, AudioEventCallback } from './events/types';
3
3
  export interface IBaseAudioContext {
4
4
  readonly destination: IAudioDestinationNode;
@@ -6,6 +6,7 @@ export interface IBaseAudioContext {
6
6
  readonly sampleRate: number;
7
7
  readonly currentTime: number;
8
8
  createOscillator(): IOscillatorNode;
9
+ createCustomProcessor(identifier: string): ICustomProcessorNode;
9
10
  createGain(): IGainNode;
10
11
  createStereoPanner(): IStereoPannerNode;
11
12
  createBiquadFilter: () => IBiquadFilterNode;
@@ -38,6 +39,10 @@ export interface IAudioNode {
38
39
  connect: (destination: IAudioNode | IAudioParam) => void;
39
40
  disconnect: (destination?: IAudioNode | IAudioParam) => void;
40
41
  }
42
+ export interface ICustomProcessorNode extends IAudioNode {
43
+ readonly customProcessor: IAudioParam;
44
+ processorMode: ProcessorMode;
45
+ }
41
46
  export interface IGainNode extends IAudioNode {
42
47
  readonly gain: IAudioParam;
43
48
  }
@@ -59,32 +64,30 @@ export interface IAudioScheduledSourceNode extends IAudioNode {
59
64
  stop: (when: number) => void;
60
65
  onended: string;
61
66
  }
67
+ export interface IAudioBufferBaseSourceNode extends IAudioScheduledSourceNode {
68
+ detune: IAudioParam;
69
+ playbackRate: IAudioParam;
70
+ onPositionChanged: string;
71
+ onPositionChangedInterval: number;
72
+ }
62
73
  export interface IOscillatorNode extends IAudioScheduledSourceNode {
63
74
  readonly frequency: IAudioParam;
64
75
  readonly detune: IAudioParam;
65
76
  type: OscillatorType;
66
77
  setPeriodicWave(periodicWave: IPeriodicWave): void;
67
78
  }
68
- export interface IAudioBufferSourceNode extends IAudioScheduledSourceNode {
79
+ export interface IAudioBufferSourceNode extends IAudioBufferBaseSourceNode {
69
80
  buffer: IAudioBuffer | null;
70
81
  loop: boolean;
71
82
  loopSkip: boolean;
72
83
  loopStart: number;
73
84
  loopEnd: number;
74
- detune: IAudioParam;
75
- playbackRate: IAudioParam;
76
85
  start: (when?: number, offset?: number, duration?: number) => void;
77
- onPositionChanged: string;
78
- onPositionChangedInterval: number;
86
+ setBuffer: (audioBufferSourceNode: IAudioBufferSourceNode, audioBuffer: IAudioBuffer | null) => void;
79
87
  }
80
- export interface IAudioBufferQueueSourceNode extends IAudioScheduledSourceNode {
81
- detune: IAudioParam;
82
- playbackRate: IAudioParam;
83
- enqueueBuffer: (audioBuffer: IAudioBuffer, bufferId: number, isLastBuffer: boolean) => void;
84
- start: (when: number, offset?: number) => void;
88
+ export interface IAudioBufferQueueSourceNode extends IAudioBufferBaseSourceNode {
89
+ enqueueBuffer: (audioBuffer: IAudioBuffer, isLastBuffer: boolean) => void;
85
90
  pause: () => void;
86
- onPositionChanged: string;
87
- onPositionChangedInterval: number;
88
91
  }
89
92
  export interface IAudioBuffer {
90
93
  readonly length: number;
@@ -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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"}
@@ -23,4 +23,5 @@ export type WindowType = 'blackman' | 'hann';
23
23
  export interface AudioBufferSourceNodeOptions {
24
24
  pitchCorrection: boolean;
25
25
  }
26
+ export type ProcessorMode = 'processInPlace' | 'processThrough';
26
27
  //# 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,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,OAAO,CAAC;CAC1B"}
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,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import AudioNode from './AudioNode';
2
+ import { EventEmptyType } from '../events/types';
2
3
  export default class AudioScheduledSourceNode extends AudioNode {
3
4
  protected hasBeenStarted: boolean;
4
5
  start(when?: number): void;
5
6
  stop(when?: number): void;
6
- set onended(callback: (arg?: number) => void);
7
+ set onended(callback: (event: EventEmptyType) => void);
7
8
  }
8
9
  //# 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;IAiBnC,IAAW,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,EAMlD;CACF"}
1
+ {"version":3,"file":"AudioScheduledSourceNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioScheduledSourceNode.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,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,KAAK,EAAE,cAAc,KAAK,IAAI,EAE3D;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.6.2-rc.6",
3
+ "version": "0.6.2",
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"
package/src/api.ts CHANGED
@@ -52,6 +52,7 @@ export { default as AudioParam } from './core/AudioParam';
52
52
  export { default as AudioScheduledSourceNode } from './core/AudioScheduledSourceNode';
53
53
  export { default as BaseAudioContext } from './core/BaseAudioContext';
54
54
  export { default as BiquadFilterNode } from './core/BiquadFilterNode';
55
+ export { default as CustomProcessorNode } from './core/CustomProcessorNode';
55
56
  export { default as GainNode } from './core/GainNode';
56
57
  export { default as OscillatorNode } from './core/OscillatorNode';
57
58
  export { default as StereoPannerNode } from './core/StereoPannerNode';
@@ -0,0 +1,33 @@
1
+ import { IAudioBufferBaseSourceNode } from '../interfaces';
2
+ import AudioScheduledSourceNode from './AudioScheduledSourceNode';
3
+ import BaseAudioContext from './BaseAudioContext';
4
+ import AudioParam from './AudioParam';
5
+ import { EventTypeWithValue } from '../events/types';
6
+
7
+ export default class AudioBufferBaseSourceNode extends AudioScheduledSourceNode {
8
+ readonly playbackRate: AudioParam;
9
+ readonly detune: AudioParam;
10
+
11
+ constructor(context: BaseAudioContext, node: IAudioBufferBaseSourceNode) {
12
+ super(context, node);
13
+
14
+ this.detune = new AudioParam(node.detune, context);
15
+ this.playbackRate = new AudioParam(node.playbackRate, context);
16
+ }
17
+
18
+ // eslint-disable-next-line accessor-pairs
19
+ public set onPositionChanged(callback: (event: EventTypeWithValue) => void) {
20
+ const subscription = this.audioEventEmitter.addAudioEventListener(
21
+ 'positionChanged',
22
+ callback
23
+ );
24
+
25
+ (this.node as IAudioBufferBaseSourceNode).onPositionChanged =
26
+ subscription.subscriptionId;
27
+ }
28
+
29
+ // eslint-disable-next-line accessor-pairs
30
+ public set onPositionChangedInterval(value: number) {
31
+ (this.node as IAudioBufferBaseSourceNode).onPositionChangedInterval = value;
32
+ }
33
+ }
@@ -1,30 +1,15 @@
1
1
  import { IAudioBufferQueueSourceNode } from '../interfaces';
2
- import AudioScheduledSourceNode from './AudioScheduledSourceNode';
3
- import BaseAudioContext from './BaseAudioContext';
2
+ import AudioBufferBaseSourceNode from './AudioBufferBaseSourceNode';
4
3
  import AudioBuffer from './AudioBuffer';
5
- import AudioParam from './AudioParam';
6
4
  import { RangeError } from '../errors';
7
- import { EventTypeWithValue } from '../events/types';
8
-
9
- export default class AudioBufferQueueSourceNode extends AudioScheduledSourceNode {
10
- readonly playbackRate: AudioParam;
11
- readonly detune: AudioParam;
12
-
13
- constructor(context: BaseAudioContext, node: IAudioBufferQueueSourceNode) {
14
- super(context, node);
15
-
16
- this.detune = new AudioParam(node.detune, context);
17
- this.playbackRate = new AudioParam(node.playbackRate, context);
18
- }
19
5
 
6
+ export default class AudioBufferQueueSourceNode extends AudioBufferBaseSourceNode {
20
7
  public enqueueBuffer(
21
8
  buffer: AudioBuffer,
22
- bufferId: number = 0,
23
9
  isLastBuffer: boolean = false
24
10
  ): void {
25
11
  (this.node as IAudioBufferQueueSourceNode).enqueueBuffer(
26
12
  buffer.buffer,
27
- bufferId,
28
13
  isLastBuffer
29
14
  );
30
15
  }
@@ -44,7 +29,7 @@ export default class AudioBufferQueueSourceNode extends AudioScheduledSourceNode
44
29
  }
45
30
  }
46
31
 
47
- (this.node as IAudioBufferQueueSourceNode).start(when, offset);
32
+ (this.node as IAudioBufferQueueSourceNode).start(when);
48
33
  }
49
34
 
50
35
  public override stop(when: number = 0): void {
@@ -60,21 +45,4 @@ export default class AudioBufferQueueSourceNode extends AudioScheduledSourceNode
60
45
  public pause(): void {
61
46
  (this.node as IAudioBufferQueueSourceNode).pause();
62
47
  }
63
-
64
- // eslint-disable-next-line accessor-pairs
65
- public set onPositionChanged(callback: (event: EventTypeWithValue) => void) {
66
- const subscription = this.audioEventEmitter.addAudioEventListener(
67
- 'positionChanged',
68
- callback
69
- );
70
-
71
- (this.node as IAudioBufferQueueSourceNode).onPositionChanged =
72
- subscription.subscriptionId;
73
- }
74
-
75
- // eslint-disable-next-line accessor-pairs
76
- public set onPositionChangedInterval(value: number) {
77
- (this.node as IAudioBufferQueueSourceNode).onPositionChangedInterval =
78
- value;
79
- }
80
48
  }
@@ -1,22 +1,9 @@
1
1
  import { IAudioBufferSourceNode } from '../interfaces';
2
- import AudioScheduledSourceNode from './AudioScheduledSourceNode';
3
- import BaseAudioContext from './BaseAudioContext';
2
+ import AudioBufferBaseSourceNode from './AudioBufferBaseSourceNode';
4
3
  import AudioBuffer from './AudioBuffer';
5
- import AudioParam from './AudioParam';
6
4
  import { InvalidStateError, RangeError } from '../errors';
7
- import { EventTypeWithValue } from '../events/types';
8
-
9
- export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
10
- readonly playbackRate: AudioParam;
11
- readonly detune: AudioParam;
12
-
13
- constructor(context: BaseAudioContext, node: IAudioBufferSourceNode) {
14
- super(context, node);
15
-
16
- this.detune = new AudioParam(node.detune, context);
17
- this.playbackRate = new AudioParam(node.playbackRate, context);
18
- }
19
5
 
6
+ export default class AudioBufferSourceNode extends AudioBufferBaseSourceNode {
20
7
  public get buffer(): AudioBuffer | null {
21
8
  const buffer = (this.node as IAudioBufferSourceNode).buffer;
22
9
  if (!buffer) {
@@ -27,11 +14,17 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
27
14
 
28
15
  public set buffer(buffer: AudioBuffer | null) {
29
16
  if (!buffer) {
30
- (this.node as IAudioBufferSourceNode).buffer = null;
17
+ (this.node as IAudioBufferSourceNode).setBuffer(
18
+ this.node as IAudioBufferSourceNode,
19
+ null
20
+ );
31
21
  return;
32
22
  }
33
23
 
34
- (this.node as IAudioBufferSourceNode).buffer = buffer.buffer;
24
+ (this.node as IAudioBufferSourceNode).setBuffer(
25
+ this.node as IAudioBufferSourceNode,
26
+ buffer.buffer
27
+ );
35
28
  }
36
29
 
37
30
  public get loopSkip(): boolean {
@@ -92,20 +85,4 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
92
85
  this.hasBeenStarted = true;
93
86
  (this.node as IAudioBufferSourceNode).start(when, offset, duration);
94
87
  }
95
-
96
- // eslint-disable-next-line accessor-pairs
97
- public set onPositionChanged(callback: (event: EventTypeWithValue) => void) {
98
- const subscription = this.audioEventEmitter.addAudioEventListener(
99
- 'positionChanged',
100
- callback
101
- );
102
-
103
- (this.node as IAudioBufferSourceNode).onPositionChanged =
104
- subscription.subscriptionId;
105
- }
106
-
107
- // eslint-disable-next-line accessor-pairs
108
- public set onPositionChangedInterval(value: number) {
109
- (this.node as IAudioBufferSourceNode).onPositionChangedInterval = value;
110
- }
111
88
  }
@@ -1,7 +1,7 @@
1
1
  import { IAudioScheduledSourceNode } from '../interfaces';
2
2
  import AudioNode from './AudioNode';
3
3
  import { InvalidStateError, RangeError } from '../errors';
4
- import { OnEndedEventType } from '../events/types';
4
+ import { EventEmptyType } from '../events/types';
5
5
  import { AudioEventEmitter } from '../events';
6
6
 
7
7
  export default class AudioScheduledSourceNode extends AudioNode {
@@ -42,7 +42,7 @@ export default class AudioScheduledSourceNode extends AudioNode {
42
42
  }
43
43
 
44
44
  // eslint-disable-next-line accessor-pairs
45
- public set onended(callback: (event: OnEndedEventType) => void) {
45
+ public set onended(callback: (event: EventEmptyType) => void) {
46
46
  const subscription = this.audioEventEmitter.addAudioEventListener(
47
47
  'ended',
48
48
  callback
@@ -6,6 +6,7 @@ import {
6
6
  } from '../types';
7
7
  import AudioDestinationNode from './AudioDestinationNode';
8
8
  import OscillatorNode from './OscillatorNode';
9
+ import CustomProcessorNode from './CustomProcessorNode';
9
10
  import GainNode from './GainNode';
10
11
  import StereoPannerNode from './StereoPannerNode';
11
12
  import BiquadFilterNode from './BiquadFilterNode';
@@ -39,6 +40,13 @@ export default class BaseAudioContext {
39
40
  return new OscillatorNode(this, this.context.createOscillator());
40
41
  }
41
42
 
43
+ createCustomProcessor(identifier: string): CustomProcessorNode {
44
+ return new CustomProcessorNode(
45
+ this,
46
+ this.context.createCustomProcessor(identifier)
47
+ );
48
+ }
49
+
42
50
  createGain(): GainNode {
43
51
  return new GainNode(this, this.context.createGain());
44
52
  }
@@ -0,0 +1,28 @@
1
+ import { ICustomProcessorNode } from '../interfaces';
2
+ import { ProcessorMode } from '../types';
3
+ import AudioNode from './AudioNode';
4
+ import AudioParam from './AudioParam';
5
+ import BaseAudioContext from './BaseAudioContext';
6
+
7
+ export default class CustomProcessorNode extends AudioNode {
8
+ readonly customProcessor: AudioParam;
9
+
10
+ constructor(
11
+ context: BaseAudioContext,
12
+ customProcessor: ICustomProcessorNode
13
+ ) {
14
+ super(context, customProcessor);
15
+ this.customProcessor = new AudioParam(
16
+ customProcessor.customProcessor,
17
+ context
18
+ );
19
+ }
20
+
21
+ public get processorMode(): ProcessorMode {
22
+ return (this.node as ICustomProcessorNode).processorMode;
23
+ }
24
+
25
+ public set processorMode(value: ProcessorMode) {
26
+ (this.node as ICustomProcessorNode).processorMode = value;
27
+ }
28
+ }
@@ -1,17 +1,11 @@
1
1
  import AudioBuffer from '../core/AudioBuffer';
2
2
 
3
- interface EventEmptyType {}
3
+ export interface EventEmptyType {}
4
4
 
5
5
  export interface EventTypeWithValue {
6
6
  value: number;
7
7
  }
8
8
 
9
- export interface OnEndedEventType {
10
- value: number;
11
- state: 'stopped' | 'ended';
12
- bufferId: number | undefined;
13
- }
14
-
15
9
  interface OnInterruptionEventType {
16
10
  type: 'ended' | 'began';
17
11
  shouldResume: boolean;
@@ -57,7 +51,7 @@ export interface OnAudioReadyEventType {
57
51
  }
58
52
 
59
53
  interface AudioAPIEvents {
60
- ended: OnEndedEventType;
54
+ ended: EventEmptyType;
61
55
  audioReady: OnAudioReadyEventType;
62
56
  positionChanged: EventTypeWithValue;
63
57
  audioError: EventEmptyType; // to change
package/src/interfaces.ts CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  BiquadFilterType,
6
6
  ChannelCountMode,
7
7
  ChannelInterpretation,
8
+ ProcessorMode,
8
9
  } from './types';
9
10
  import { AudioEventName, AudioEventCallback } from './events/types';
10
11
 
@@ -15,6 +16,7 @@ export interface IBaseAudioContext {
15
16
  readonly currentTime: number;
16
17
 
17
18
  createOscillator(): IOscillatorNode;
19
+ createCustomProcessor(identifier: string): ICustomProcessorNode;
18
20
  createGain(): IGainNode;
19
21
  createStereoPanner(): IStereoPannerNode;
20
22
  createBiquadFilter: () => IBiquadFilterNode;
@@ -60,6 +62,11 @@ export interface IAudioNode {
60
62
  disconnect: (destination?: IAudioNode | IAudioParam) => void;
61
63
  }
62
64
 
65
+ export interface ICustomProcessorNode extends IAudioNode {
66
+ readonly customProcessor: IAudioParam;
67
+ processorMode: ProcessorMode;
68
+ }
69
+
63
70
  export interface IGainNode extends IAudioNode {
64
71
  readonly gain: IAudioParam;
65
72
  }
@@ -92,6 +99,16 @@ export interface IAudioScheduledSourceNode extends IAudioNode {
92
99
  onended: string;
93
100
  }
94
101
 
102
+ export interface IAudioBufferBaseSourceNode extends IAudioScheduledSourceNode {
103
+ detune: IAudioParam;
104
+ playbackRate: IAudioParam;
105
+
106
+ // passing subscriptionId(uint_64 in cpp, string in js) to the cpp
107
+ onPositionChanged: string;
108
+ // set how often the onPositionChanged event is called
109
+ onPositionChangedInterval: number;
110
+ }
111
+
95
112
  export interface IOscillatorNode extends IAudioScheduledSourceNode {
96
113
  readonly frequency: IAudioParam;
97
114
  readonly detune: IAudioParam;
@@ -100,39 +117,24 @@ export interface IOscillatorNode extends IAudioScheduledSourceNode {
100
117
  setPeriodicWave(periodicWave: IPeriodicWave): void;
101
118
  }
102
119
 
103
- export interface IAudioBufferSourceNode extends IAudioScheduledSourceNode {
120
+ export interface IAudioBufferSourceNode extends IAudioBufferBaseSourceNode {
104
121
  buffer: IAudioBuffer | null;
105
122
  loop: boolean;
106
123
  loopSkip: boolean;
107
124
  loopStart: number;
108
125
  loopEnd: number;
109
- detune: IAudioParam;
110
- playbackRate: IAudioParam;
111
126
 
112
127
  start: (when?: number, offset?: number, duration?: number) => void;
113
-
114
- // passing subscriptionId(uint_64 in cpp, string in js) to the cpp
115
- onPositionChanged: string;
116
- // set how often the onPositionChanged event is called
117
- onPositionChangedInterval: number;
128
+ setBuffer: (
129
+ audioBufferSourceNode: IAudioBufferSourceNode,
130
+ audioBuffer: IAudioBuffer | null
131
+ ) => void;
118
132
  }
119
133
 
120
- export interface IAudioBufferQueueSourceNode extends IAudioScheduledSourceNode {
121
- detune: IAudioParam;
122
- playbackRate: IAudioParam;
123
-
124
- enqueueBuffer: (
125
- audioBuffer: IAudioBuffer,
126
- bufferId: number,
127
- isLastBuffer: boolean
128
- ) => void;
129
- start: (when: number, offset?: number) => void;
134
+ export interface IAudioBufferQueueSourceNode
135
+ extends IAudioBufferBaseSourceNode {
136
+ enqueueBuffer: (audioBuffer: IAudioBuffer, isLastBuffer: boolean) => void;
130
137
  pause: () => void;
131
-
132
- // passing subscriptionId(uint_64 in cpp, string in js) to the cpp
133
- onPositionChanged: string;
134
- // set how often the onPositionChanged event is called
135
- onPositionChangedInterval: number;
136
138
  }
137
139
 
138
140
  export interface IAudioBuffer {
package/src/types.ts CHANGED
@@ -46,3 +46,5 @@ export type WindowType = 'blackman' | 'hann';
46
46
  export interface AudioBufferSourceNodeOptions {
47
47
  pitchCorrection: boolean;
48
48
  }
49
+
50
+ export type ProcessorMode = 'processInPlace' | 'processThrough';
@@ -1,4 +1,5 @@
1
1
  import AudioNode from './AudioNode';
2
+ import { EventEmptyType } from '../events/types';
2
3
  import { RangeError, InvalidStateError } from '../errors';
3
4
 
4
5
  export default class AudioScheduledSourceNode extends AudioNode {
@@ -36,11 +37,7 @@ export default class AudioScheduledSourceNode extends AudioNode {
36
37
  }
37
38
 
38
39
  // 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;
40
+ public set onended(callback: (event: EventEmptyType) => void) {
41
+ (this.node as globalThis.AudioScheduledSourceNode).onended = callback;
45
42
  }
46
43
  }