react-native-audio-api 0.6.1-rc.7 → 0.6.1-rc.9

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 (88) hide show
  1. package/README.md +6 -11
  2. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +12 -1
  3. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.h +2 -0
  4. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +10 -0
  5. package/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +10 -1
  6. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionCallback.kt +0 -4
  7. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +1 -1
  8. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +2 -1
  9. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +10 -0
  10. package/common/cpp/audioapi/core/AudioContext.cpp +30 -5
  11. package/common/cpp/audioapi/core/AudioContext.h +2 -1
  12. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +6 -10
  13. package/ios/audioapi/ios/AudioAPIModule.mm +1 -1
  14. package/ios/audioapi/ios/core/IOSAudioPlayer.h +2 -0
  15. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +16 -0
  16. package/ios/audioapi/ios/core/NativeAudioPlayer.h +4 -0
  17. package/ios/audioapi/ios/core/NativeAudioPlayer.m +15 -0
  18. package/ios/audioapi/ios/system/AudioEngine.h +1 -0
  19. package/ios/audioapi/ios/system/AudioEngine.mm +11 -1
  20. package/lib/commonjs/api.js.map +1 -1
  21. package/lib/commonjs/core/AudioContext.js +2 -2
  22. package/lib/commonjs/core/AudioContext.js.map +1 -1
  23. package/lib/commonjs/plugin/withAudioAPI.js +15 -14
  24. package/lib/commonjs/plugin/withAudioAPI.js.map +1 -1
  25. package/lib/commonjs/web-core/AudioBufferSourceNode.js +4 -4
  26. package/lib/commonjs/web-core/AudioBufferSourceNode.js.map +1 -1
  27. package/lib/commonjs/web-core/AudioContext.js +5 -3
  28. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  29. package/lib/commonjs/web-core/AudioNode.js +8 -2
  30. package/lib/commonjs/web-core/AudioNode.js.map +1 -1
  31. package/lib/commonjs/web-core/AudioParam.js +2 -1
  32. package/lib/commonjs/web-core/AudioParam.js.map +1 -1
  33. package/lib/commonjs/web-core/BiquadFilterNode.js +4 -4
  34. package/lib/commonjs/web-core/BiquadFilterNode.js.map +1 -1
  35. package/lib/commonjs/web-core/GainNode.js +1 -1
  36. package/lib/commonjs/web-core/GainNode.js.map +1 -1
  37. package/lib/commonjs/web-core/OscillatorNode.js +2 -2
  38. package/lib/commonjs/web-core/OscillatorNode.js.map +1 -1
  39. package/lib/commonjs/web-core/StereoPannerNode.js +1 -1
  40. package/lib/commonjs/web-core/StereoPannerNode.js.map +1 -1
  41. package/lib/module/api.js.map +1 -1
  42. package/lib/module/core/AudioContext.js +2 -2
  43. package/lib/module/core/AudioContext.js.map +1 -1
  44. package/lib/module/plugin/withAudioAPI.js +15 -14
  45. package/lib/module/plugin/withAudioAPI.js.map +1 -1
  46. package/lib/module/web-core/AudioBufferSourceNode.js +4 -4
  47. package/lib/module/web-core/AudioBufferSourceNode.js.map +1 -1
  48. package/lib/module/web-core/AudioContext.js +5 -3
  49. package/lib/module/web-core/AudioContext.js.map +1 -1
  50. package/lib/module/web-core/AudioNode.js +7 -2
  51. package/lib/module/web-core/AudioNode.js.map +1 -1
  52. package/lib/module/web-core/AudioParam.js +2 -1
  53. package/lib/module/web-core/AudioParam.js.map +1 -1
  54. package/lib/module/web-core/BiquadFilterNode.js +4 -4
  55. package/lib/module/web-core/BiquadFilterNode.js.map +1 -1
  56. package/lib/module/web-core/GainNode.js +1 -1
  57. package/lib/module/web-core/GainNode.js.map +1 -1
  58. package/lib/module/web-core/OscillatorNode.js +2 -2
  59. package/lib/module/web-core/OscillatorNode.js.map +1 -1
  60. package/lib/module/web-core/StereoPannerNode.js +1 -1
  61. package/lib/module/web-core/StereoPannerNode.js.map +1 -1
  62. package/lib/typescript/api.d.ts +1 -1
  63. package/lib/typescript/api.d.ts.map +1 -1
  64. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  65. package/lib/typescript/plugin/withAudioAPI.d.ts +7 -6
  66. package/lib/typescript/plugin/withAudioAPI.d.ts.map +1 -1
  67. package/lib/typescript/types.d.ts +2 -1
  68. package/lib/typescript/types.d.ts.map +1 -1
  69. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts.map +1 -1
  70. package/lib/typescript/web-core/AudioContext.d.ts +1 -1
  71. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  72. package/lib/typescript/web-core/AudioNode.d.ts +2 -1
  73. package/lib/typescript/web-core/AudioNode.d.ts.map +1 -1
  74. package/lib/typescript/web-core/AudioParam.d.ts +4 -2
  75. package/lib/typescript/web-core/AudioParam.d.ts.map +1 -1
  76. package/package.json +2 -1
  77. package/src/api.ts +4 -1
  78. package/src/core/AudioContext.ts +7 -2
  79. package/src/plugin/withAudioAPI.ts +36 -29
  80. package/src/types.ts +2 -1
  81. package/src/web-core/AudioBufferSourceNode.tsx +9 -4
  82. package/src/web-core/AudioContext.tsx +7 -3
  83. package/src/web-core/AudioNode.tsx +10 -3
  84. package/src/web-core/AudioParam.tsx +5 -2
  85. package/src/web-core/BiquadFilterNode.tsx +4 -4
  86. package/src/web-core/GainNode.tsx +1 -1
  87. package/src/web-core/OscillatorNode.tsx +2 -2
  88. package/src/web-core/StereoPannerNode.tsx +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"withAudioAPI.d.ts","sourceRoot":"","sources":["../../../src/plugin/withAudioAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAGb,MAAM,sBAAsB,CAAC;;;;;;;AAoF9B,wBAAwE"}
1
+ {"version":3,"file":"withAudioAPI.d.ts","sourceRoot":"","sources":["../../../src/plugin/withAudioAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAGb,MAAM,sBAAsB,CAAC;AAG9B,UAAU,OAAO;IACf,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wBAAwB,EAAE,OAAO,CAAC;IAClC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;;AAmFD,wBAAwE"}
@@ -7,7 +7,8 @@ export interface PeriodicWaveConstraints {
7
7
  disableNormalization: boolean;
8
8
  }
9
9
  export interface AudioContextOptions {
10
- sampleRate: number;
10
+ sampleRate?: number;
11
+ initSuspended?: boolean;
11
12
  }
12
13
  export interface OfflineAudioContextOptions {
13
14
  numberOfChannels: number;
@@ -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,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"}
@@ -1 +1 @@
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
+ {"version":3,"file":"AudioBufferSourceNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioBufferSourceNode.tsx"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export default class AudioContext implements BaseAudioContext {
13
13
  readonly context: globalThis.AudioContext;
14
14
  readonly destination: AudioDestinationNode;
15
15
  readonly sampleRate: number;
16
- constructor(options?: AudioContextOptions);
16
+ constructor(options?: AudioContextOptions, _initSuspended?: boolean);
17
17
  get currentTime(): number;
18
18
  get state(): ContextState;
19
19
  createOscillator(): OscillatorNode;
@@ -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,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,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/D,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,EAAE,cAAc,GAAE,OAAe;IAiB1E,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,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -1,5 +1,6 @@
1
1
  import BaseAudioContext from './BaseAudioContext';
2
2
  import { ChannelCountMode, ChannelInterpretation } from '../types';
3
+ import AudioParam from './AudioParam';
3
4
  export default class AudioNode {
4
5
  readonly context: BaseAudioContext;
5
6
  readonly numberOfInputs: number;
@@ -9,7 +10,7 @@ export default class AudioNode {
9
10
  readonly channelInterpretation: ChannelInterpretation;
10
11
  protected readonly node: globalThis.AudioNode;
11
12
  constructor(context: BaseAudioContext, node: globalThis.AudioNode);
12
- connect(destination: AudioNode): AudioNode;
13
+ connect(destination: AudioNode | AudioParam): AudioNode | AudioParam;
13
14
  disconnect(destination?: AudioNode): void;
14
15
  }
15
16
  //# sourceMappingURL=AudioNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioNode.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEtD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC;gBAElC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS;IAU1D,OAAO,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS;IAU1C,UAAU,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,IAAI;CAQjD"}
1
+ {"version":3,"file":"AudioNode.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioNode.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEtD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC;gBAElC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS;IAU1D,OAAO,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU;IAgBpE,UAAU,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,IAAI;CAQjD"}
@@ -1,9 +1,11 @@
1
+ import BaseAudioContext from './BaseAudioContext';
1
2
  export default class AudioParam {
2
3
  readonly defaultValue: number;
3
4
  readonly minValue: number;
4
5
  readonly maxValue: number;
5
- private readonly param;
6
- constructor(param: globalThis.AudioParam);
6
+ readonly context: BaseAudioContext;
7
+ readonly param: globalThis.AudioParam;
8
+ constructor(param: globalThis.AudioParam, context: BaseAudioContext);
7
9
  get value(): number;
8
10
  set value(value: number);
9
11
  setValueAtTime(value: number, startTime: number): AudioParam;
@@ -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,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"}
1
+ {"version":3,"file":"AudioParam.d.ts","sourceRoot":"","sources":["../../../src/web-core/AudioParam.tsx"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,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;IAC1B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAEnC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC;gBAE1B,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB;IAQnE,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.6.1-rc.7",
3
+ "version": "0.6.1-rc.9",
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"
@@ -90,6 +90,7 @@
90
90
  "@commitlint/config-conventional": "^17.0.2",
91
91
  "@evilmartians/lefthook": "^1.5.0",
92
92
  "@expo/config-plugins": "^9.0.0",
93
+ "@expo/config-types": "^53.0.4",
93
94
  "@react-native/babel-preset": "0.77.1",
94
95
  "@react-native/eslint-config": "^0.77.1",
95
96
  "@react-native/metro-config": "0.77.1",
package/src/api.ts CHANGED
@@ -9,7 +9,10 @@ import type {
9
9
 
10
10
  /* eslint-disable no-var */
11
11
  declare global {
12
- var createAudioContext: (sampleRate?: number) => IAudioContext;
12
+ var createAudioContext: (
13
+ sampleRate: number,
14
+ initSuspended: boolean
15
+ ) => IAudioContext;
13
16
  var createOfflineAudioContext: (
14
17
  numberOfChannels: number,
15
18
  length: number,
@@ -6,7 +6,11 @@ import { NotSupportedError } from '../errors';
6
6
 
7
7
  export default class AudioContext extends BaseAudioContext {
8
8
  constructor(options?: AudioContextOptions) {
9
- if (options && (options.sampleRate < 8000 || options.sampleRate > 96000)) {
9
+ if (
10
+ options &&
11
+ options.sampleRate &&
12
+ (options.sampleRate < 8000 || options.sampleRate > 96000)
13
+ ) {
10
14
  throw new NotSupportedError(
11
15
  `The provided sampleRate is not supported: ${options.sampleRate}`
12
16
  );
@@ -14,7 +18,8 @@ export default class AudioContext extends BaseAudioContext {
14
18
 
15
19
  super(
16
20
  global.createAudioContext(
17
- options?.sampleRate || AudioManager.getDevicePreferredSampleRate()
21
+ options?.sampleRate || AudioManager.getDevicePreferredSampleRate(),
22
+ options?.initSuspended || false
18
23
  )
19
24
  );
20
25
  }
@@ -5,9 +5,28 @@ import {
5
5
  withInfoPlist,
6
6
  withAndroidManifest,
7
7
  } from '@expo/config-plugins';
8
-
9
8
  const pkg = require('react-native-audio-api/package.json');
10
9
 
10
+ interface Options {
11
+ iosBackgroundMode: boolean;
12
+ androidForegroundService: boolean;
13
+ androidFSPermissions: string[];
14
+ androidFSTypes: string[];
15
+ }
16
+
17
+ const withDefaultOptions = (options: Partial<Options>): Options => {
18
+ return {
19
+ iosBackgroundMode: true,
20
+ androidForegroundService: true,
21
+ androidFSPermissions: [
22
+ 'android.permission.FOREGROUND_SERVICE',
23
+ 'android.permission.WAKE_LOCK',
24
+ ],
25
+ androidFSTypes: ['mediaPlayback'],
26
+ ...options,
27
+ };
28
+ };
29
+
11
30
  const withBackgroundAudio: ConfigPlugin = (config) => {
12
31
  return withInfoPlist(config, (iosConfig) => {
13
32
  iosConfig.modResults.UIBackgroundModes = [
@@ -20,18 +39,20 @@ const withBackgroundAudio: ConfigPlugin = (config) => {
20
39
  });
21
40
  };
22
41
 
23
- const withAndroidPermissions: ConfigPlugin<{
24
- androidFSPermissions: string[];
25
- }> = (config, { androidFSPermissions }) => {
42
+ const withAndroidPermissions: ConfigPlugin<Options> = (
43
+ config,
44
+ { androidFSPermissions }: Options
45
+ ) => {
26
46
  return AndroidConfig.Permissions.withPermissions(
27
47
  config,
28
48
  androidFSPermissions
29
49
  );
30
50
  };
31
51
 
32
- const withForegroundService: ConfigPlugin<{
33
- androidFSTypes: string[];
34
- }> = (config, { androidFSTypes }) => {
52
+ const withForegroundService: ConfigPlugin<Options> = (
53
+ config,
54
+ { androidFSTypes }: Options
55
+ ) => {
35
56
  return withAndroidManifest(config, (mod) => {
36
57
  const manifest = mod.modResults;
37
58
  const mainApplication =
@@ -59,30 +80,16 @@ const withForegroundService: ConfigPlugin<{
59
80
  });
60
81
  };
61
82
 
62
- const withAudioAPI: ConfigPlugin<{
63
- iosBackgroundMode?: boolean;
64
- androidForegroundService?: boolean;
65
- androidFSPermissions?: string[];
66
- androidFSTypes?: string[];
67
- }> = (
68
- config,
69
- {
70
- iosBackgroundMode = true,
71
- androidForegroundService = true,
72
- androidFSPermissions = [],
73
- androidFSTypes = [],
74
- } = {}
75
- ) => {
76
- if (iosBackgroundMode) {
83
+ const withAudioAPI: ConfigPlugin<Options> = (config, optionsIn) => {
84
+ const options = withDefaultOptions(optionsIn ?? {});
85
+
86
+ if (options.iosBackgroundMode) {
77
87
  config = withBackgroundAudio(config);
78
88
  }
79
- if (androidForegroundService) {
80
- config = withAndroidPermissions(config, {
81
- androidFSPermissions,
82
- });
83
- config = withForegroundService(config, {
84
- androidFSTypes,
85
- });
89
+
90
+ if (options.androidForegroundService) {
91
+ config = withAndroidPermissions(config, options);
92
+ config = withForegroundService(config, options);
86
93
  }
87
94
 
88
95
  return config;
package/src/types.ts CHANGED
@@ -26,7 +26,8 @@ export interface PeriodicWaveConstraints {
26
26
  }
27
27
 
28
28
  export interface AudioContextOptions {
29
- sampleRate: number;
29
+ sampleRate?: number;
30
+ initSuspended?: boolean;
30
31
  }
31
32
 
32
33
  export interface OfflineAudioContextOptions {
@@ -210,7 +210,8 @@ export default class AudioBufferSourceNode<
210
210
  -1200,
211
211
  1200,
212
212
  0
213
- )
213
+ ),
214
+ context
214
215
  );
215
216
 
216
217
  this.playbackRate = new AudioParam(
@@ -221,11 +222,15 @@ export default class AudioBufferSourceNode<
221
222
  0,
222
223
  Infinity,
223
224
  1
224
- )
225
+ ),
226
+ context
225
227
  );
226
228
  } else {
227
- this.detune = new AudioParam((node as DefaultSource).detune);
228
- this.playbackRate = new AudioParam((node as DefaultSource).playbackRate);
229
+ this.detune = new AudioParam((node as DefaultSource).detune, context);
230
+ this.playbackRate = new AudioParam(
231
+ (node as DefaultSource).playbackRate,
232
+ context
233
+ );
229
234
  }
230
235
  }
231
236
 
@@ -24,14 +24,18 @@ export default class AudioContext implements BaseAudioContext {
24
24
  readonly destination: AudioDestinationNode;
25
25
  readonly sampleRate: number;
26
26
 
27
- constructor(options?: AudioContextOptions) {
28
- if (options && (options.sampleRate < 8000 || options.sampleRate > 96000)) {
27
+ constructor(options?: AudioContextOptions, _initSuspended: boolean = false) {
28
+ if (
29
+ options &&
30
+ options.sampleRate &&
31
+ (options.sampleRate < 8000 || options.sampleRate > 96000)
32
+ ) {
29
33
  throw new NotSupportedError(
30
34
  `The provided sampleRate is not supported: ${options.sampleRate}`
31
35
  );
32
36
  }
33
37
 
34
- this.context = new window.AudioContext(options);
38
+ this.context = new window.AudioContext({ sampleRate: options?.sampleRate });
35
39
 
36
40
  this.sampleRate = this.context.sampleRate;
37
41
  this.destination = new AudioDestinationNode(this, this.context.destination);
@@ -1,5 +1,6 @@
1
1
  import BaseAudioContext from './BaseAudioContext';
2
2
  import { ChannelCountMode, ChannelInterpretation } from '../types';
3
+ import AudioParam from './AudioParam';
3
4
 
4
5
  export default class AudioNode {
5
6
  readonly context: BaseAudioContext;
@@ -21,12 +22,18 @@ export default class AudioNode {
21
22
  this.channelInterpretation = this.node.channelInterpretation;
22
23
  }
23
24
 
24
- public connect(destination: AudioNode): AudioNode {
25
+ public connect(destination: AudioNode | AudioParam): AudioNode | AudioParam {
25
26
  if (this.context !== destination.context) {
26
- throw new Error('The AudioNodes are from different BaseAudioContexts');
27
+ throw new Error(
28
+ 'Source and destination are from different BaseAudioContexts'
29
+ );
27
30
  }
28
31
 
29
- this.node.connect(destination.node);
32
+ if (destination instanceof AudioParam) {
33
+ this.node.connect(destination.param);
34
+ } else {
35
+ this.node.connect(destination.node);
36
+ }
30
37
 
31
38
  return destination;
32
39
  }
@@ -1,17 +1,20 @@
1
1
  import { RangeError, InvalidStateError } from '../errors';
2
+ import BaseAudioContext from './BaseAudioContext';
2
3
 
3
4
  export default class AudioParam {
4
5
  readonly defaultValue: number;
5
6
  readonly minValue: number;
6
7
  readonly maxValue: number;
8
+ readonly context: BaseAudioContext;
7
9
 
8
- private readonly param: globalThis.AudioParam;
10
+ readonly param: globalThis.AudioParam;
9
11
 
10
- constructor(param: globalThis.AudioParam) {
12
+ constructor(param: globalThis.AudioParam, context: BaseAudioContext) {
11
13
  this.param = param;
12
14
  this.defaultValue = param.defaultValue;
13
15
  this.minValue = param.minValue;
14
16
  this.maxValue = param.maxValue;
17
+ this.context = context;
15
18
  }
16
19
 
17
20
  public get value(): number {
@@ -15,10 +15,10 @@ export default class BiquadFilterNode extends AudioNode {
15
15
  biquadFilter: globalThis.BiquadFilterNode
16
16
  ) {
17
17
  super(context, biquadFilter);
18
- this.frequency = new AudioParam(biquadFilter.frequency);
19
- this.detune = new AudioParam(biquadFilter.detune);
20
- this.Q = new AudioParam(biquadFilter.Q);
21
- this.gain = new AudioParam(biquadFilter.gain);
18
+ this.frequency = new AudioParam(biquadFilter.frequency, context);
19
+ this.detune = new AudioParam(biquadFilter.detune, context);
20
+ this.Q = new AudioParam(biquadFilter.Q, context);
21
+ this.gain = new AudioParam(biquadFilter.gain, context);
22
22
  }
23
23
 
24
24
  public get type(): BiquadFilterType {
@@ -7,6 +7,6 @@ export default class GainNode extends AudioNode {
7
7
 
8
8
  constructor(context: BaseAudioContext, gain: globalThis.GainNode) {
9
9
  super(context, gain);
10
- this.gain = new AudioParam(gain.gain);
10
+ this.gain = new AudioParam(gain.gain, context);
11
11
  }
12
12
  }
@@ -12,8 +12,8 @@ export default class OscillatorNode extends AudioScheduledSourceNode {
12
12
  constructor(context: BaseAudioContext, node: globalThis.OscillatorNode) {
13
13
  super(context, node);
14
14
 
15
- this.detune = new AudioParam(node.detune);
16
- this.frequency = new AudioParam(node.frequency);
15
+ this.detune = new AudioParam(node.detune, context);
16
+ this.frequency = new AudioParam(node.frequency, context);
17
17
  }
18
18
 
19
19
  public get type(): OscillatorType {
@@ -7,6 +7,6 @@ export default class StereoPannerNode extends AudioNode {
7
7
 
8
8
  constructor(context: BaseAudioContext, pan: globalThis.StereoPannerNode) {
9
9
  super(context, pan);
10
- this.pan = new AudioParam(pan.pan);
10
+ this.pan = new AudioParam(pan.pan, context);
11
11
  }
12
12
  }