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
package/README.md CHANGED
@@ -34,17 +34,12 @@ check out the [Getting Started](https://docs.swmansion.com/react-native-audio-ap
34
34
  Ability to modify playback speed without affecting pitch of the sound
35
35
  <br />
36
36
 
37
- - <sub>![Coming in 0.6.0](https://img.shields.io/badge/Coming_in-0.6.0-blue)</sub> **System configuration** 🛠️ <br />
38
- Full control of system audio settings, remote controls, lock screen integration and most importantly configurable background modes
39
- <br />
40
-
41
- - **Microphone support** 🎙️ <br />
42
- Grab audio data from device microphone or connected device, connect it to the audio graph or stream through the internet
43
- <br />
44
-
45
- - **Connect audio param** 🤞 <br />
46
- Ability to connect Audio nodes to audio params, which will allow for powerful and efficient modulation of audio parameters, creating effects like tremolo, vibrato or complex envelope followers.
47
- <br />
37
+ - <sub>[![Released in 0.6.0](https://img.shields.io/badge/Released_in-0.6.0-green)](https://github.com/software-mansion/react-native-audio-api/releases/tag/0.6.0)</sub> <br/> **System configuration** 🛠️ <br />
38
+ Full control of system audio settings, remote controls, lock screen integration and most importantly configurable background modes <br />
39
+ <br /> **Microphone support** 🎙️ <br />
40
+ Grab audio data from device microphone or connected device, connect it to the audio graph or stream through the internet <br />
41
+ <br /> **Connect audio param** 🤞 <br />
42
+ Ability to connect Audio nodes to audio params, which will allow for powerful and efficient modulation of audio parameters, creating effects like tremolo, vibrato or complex envelope followers. <br />
48
43
 
49
44
  - **JS Audio Worklets** 🐎 <br />
50
45
  Ability to run JS functions connected to the audio graph running on audio thread allowing for full customization of what happens to the audio signal.
@@ -34,6 +34,18 @@ void AudioPlayer::start() {
34
34
  }
35
35
 
36
36
  void AudioPlayer::stop() {
37
+ if (mStream_) {
38
+ mStream_->requestStop();
39
+ }
40
+ }
41
+
42
+ void AudioPlayer::resume() {
43
+ if (mStream_) {
44
+ mStream_->requestStart();
45
+ }
46
+ }
47
+
48
+ void AudioPlayer::suspend() {
37
49
  if (mStream_) {
38
50
  mStream_->requestPause();
39
51
  }
@@ -43,7 +55,6 @@ void AudioPlayer::cleanup() {
43
55
  isInitialized_ = false;
44
56
 
45
57
  if (mStream_) {
46
- mStream_->requestStop();
47
58
  mStream_->close();
48
59
  mStream_.reset();
49
60
  }
@@ -20,6 +20,8 @@ class AudioPlayer : public AudioStreamDataCallback {
20
20
 
21
21
  void start();
22
22
  void stop();
23
+ void resume();
24
+ void suspend();
23
25
  void cleanup();
24
26
 
25
27
  DataCallbackResult onAudioReady(
@@ -53,8 +53,10 @@ class AudioAPIModule(
53
53
  return true
54
54
  }
55
55
 
56
+ @Synchronized
56
57
  override fun getDevicePreferredSampleRate(): Double = MediaSessionManager.getDevicePreferredSampleRate()
57
58
 
59
+ @Synchronized
58
60
  override fun setAudioSessionActivity(
59
61
  enabled: Boolean,
60
62
  promise: Promise?,
@@ -62,6 +64,7 @@ class AudioAPIModule(
62
64
  // noting to do here
63
65
  }
64
66
 
67
+ @Synchronized
65
68
  override fun setAudioSessionOptions(
66
69
  category: String?,
67
70
  mode: String?,
@@ -70,14 +73,17 @@ class AudioAPIModule(
70
73
  // noting to do here
71
74
  }
72
75
 
76
+ @Synchronized
73
77
  override fun setLockScreenInfo(info: ReadableMap?) {
74
78
  MediaSessionManager.setLockScreenInfo(info)
75
79
  }
76
80
 
81
+ @Synchronized
77
82
  override fun resetLockScreenInfo() {
78
83
  MediaSessionManager.resetLockScreenInfo()
79
84
  }
80
85
 
86
+ @Synchronized
81
87
  override fun enableRemoteCommand(
82
88
  name: String?,
83
89
  enabled: Boolean,
@@ -85,19 +91,23 @@ class AudioAPIModule(
85
91
  MediaSessionManager.enableRemoteCommand(name!!, enabled)
86
92
  }
87
93
 
94
+ @Synchronized
88
95
  override fun observeAudioInterruptions(enabled: Boolean) {
89
96
  MediaSessionManager.observeAudioInterruptions(enabled)
90
97
  }
91
98
 
99
+ @Synchronized
92
100
  override fun observeVolumeChanges(enabled: Boolean) {
93
101
  MediaSessionManager.observeVolumeChanges(enabled)
94
102
  }
95
103
 
104
+ @Synchronized
96
105
  override fun requestRecordingPermissions(promise: Promise?) {
97
106
  val res = MediaSessionManager.requestRecordingPermissions(currentActivity)
98
107
  promise!!.resolve(res)
99
108
  }
100
109
 
110
+ @Synchronized
101
111
  override fun checkRecordingPermissions(promise: Promise?) {
102
112
  val res = MediaSessionManager.checkRecordingPermissions()
103
113
  promise!!.resolve(res)
@@ -142,6 +142,10 @@ class LockScreenManager(
142
142
  state.playbackSpeed
143
143
  }
144
144
 
145
+ if (isPlaying && speed == 0F) {
146
+ speed = 1F
147
+ }
148
+
145
149
  elapsedTime =
146
150
  if (info.hasKey("elapsedTime")) {
147
151
  (info.getDouble("elapsedTime") * 1000).toLong()
@@ -250,7 +254,7 @@ class LockScreenManager(
250
254
  return bitmap
251
255
  }
252
256
 
253
- fun updatePlaybackState(playbackState: Int) {
257
+ private fun updatePlaybackState(playbackState: Int) {
254
258
  isPlaying = playbackState == PlaybackStateCompat.STATE_PLAYING
255
259
 
256
260
  pb.setState(playbackState, elapsedTime, speed)
@@ -285,6 +289,11 @@ class LockScreenManager(
285
289
  if (hasControl(PlaybackStateCompat.ACTION_REWIND)) {
286
290
  controlCount += 1
287
291
  }
292
+
293
+ if (hasControl(PlaybackStateCompat.ACTION_SEEK_TO)) {
294
+ controlCount += 1
295
+ }
296
+
288
297
  val actions = IntArray(controlCount)
289
298
  for (i in actions.indices) {
290
299
  actions[i] = i
@@ -3,7 +3,6 @@ package com.swmansion.audioapi.system
3
3
  import android.content.Intent
4
4
  import android.os.Build
5
5
  import android.support.v4.media.session.MediaSessionCompat
6
- import android.support.v4.media.session.PlaybackStateCompat
7
6
  import androidx.core.app.NotificationManagerCompat
8
7
  import com.swmansion.audioapi.AudioAPIModule
9
8
  import java.lang.ref.WeakReference
@@ -11,15 +10,12 @@ import java.util.HashMap
11
10
 
12
11
  class MediaSessionCallback(
13
12
  private val audioAPIModule: WeakReference<AudioAPIModule>,
14
- private val lockScreenManager: WeakReference<LockScreenManager>,
15
13
  ) : MediaSessionCompat.Callback() {
16
14
  override fun onPlay() {
17
- lockScreenManager.get()?.updatePlaybackState(PlaybackStateCompat.STATE_PLAYING)
18
15
  audioAPIModule.get()?.invokeHandlerWithEventNameAndEventBody("remotePlay", mapOf())
19
16
  }
20
17
 
21
18
  override fun onPause() {
22
- lockScreenManager.get()?.updatePlaybackState(PlaybackStateCompat.STATE_PAUSED)
23
19
  audioAPIModule.get()?.invokeHandlerWithEventNameAndEventBody("remotePause", mapOf())
24
20
  }
25
21
 
@@ -81,7 +81,7 @@ object MediaSessionManager {
81
81
  this.lockScreenManager = LockScreenManager(this.reactContext, WeakReference(this.mediaSession), WeakReference(mediaNotificationManager))
82
82
  this.mediaReceiver =
83
83
  MediaReceiver(this.reactContext, WeakReference(this.mediaSession), WeakReference(mediaNotificationManager), this.audioAPIModule)
84
- this.mediaSession.setCallback(MediaSessionCallback(this.audioAPIModule, WeakReference(this.lockScreenManager)))
84
+ this.mediaSession.setCallback(MediaSessionCallback(this.audioAPIModule))
85
85
 
86
86
  val filter = IntentFilter()
87
87
  filter.addAction(MediaNotificationManager.REMOVE_NOTIFICATION)
@@ -45,7 +45,8 @@ class AudioAPIModuleInstaller {
45
45
  size_t count) -> jsi::Value {
46
46
  std::shared_ptr<AudioContext> audioContext;
47
47
  auto sampleRate = static_cast<float>(args[0].getNumber());
48
- audioContext = std::make_shared<AudioContext>(sampleRate, audioEventHandlerRegistry);
48
+ auto initSuspended = args[1].getBool();
49
+ audioContext = std::make_shared<AudioContext>(sampleRate, initSuspended, audioEventHandlerRegistry);
49
50
 
50
51
  auto audioContextHostObject = std::make_shared<AudioContextHostObject>(
51
52
  audioContext, &runtime, jsCallInvoker);
@@ -45,6 +45,11 @@ class AudioContextHostObject : public BaseAudioContextHostObject {
45
45
  auto audioContext = std::static_pointer_cast<AudioContext>(context_);
46
46
  auto result = audioContext->resume();
47
47
 
48
+ if (!result) {
49
+ promise->reject("Failed to resume audio context because it is already closed.");
50
+ return;
51
+ }
52
+
48
53
  promise->resolve([result](jsi::Runtime &runtime) {
49
54
  return jsi::Value(result);
50
55
  });
@@ -60,6 +65,11 @@ class AudioContextHostObject : public BaseAudioContextHostObject {
60
65
  auto audioContext = std::static_pointer_cast<AudioContext>(context_);
61
66
  auto result = audioContext->suspend();
62
67
 
68
+ if (!result) {
69
+ promise->reject("Failed to suspend audio context because it is already closed.");
70
+ return;
71
+ }
72
+
63
73
  promise->resolve([result](jsi::Runtime &runtime) {
64
74
  return jsi::Value(result);
65
75
  });
@@ -12,6 +12,7 @@
12
12
  namespace audioapi {
13
13
  AudioContext::AudioContext(
14
14
  float sampleRate,
15
+ bool initSuspended,
15
16
  const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry)
16
17
  : BaseAudioContext(audioEventHandlerRegistry) {
17
18
  #ifdef ANDROID
@@ -24,8 +25,16 @@ AudioContext::AudioContext(
24
25
  sampleRate_ = sampleRate;
25
26
  audioDecoder_ = std::make_shared<AudioDecoder>(sampleRate);
26
27
 
27
- state_ = ContextState::RUNNING;
28
+ if (initSuspended) {
29
+ playerHasBeenStarted_ = false;
30
+ state_ = ContextState::SUSPENDED;
31
+
32
+ return;
33
+ }
34
+
35
+ playerHasBeenStarted_ = true;
28
36
  audioPlayer_->start();
37
+ state_ = ContextState::RUNNING;
29
38
  }
30
39
 
31
40
  AudioContext::~AudioContext() {
@@ -37,27 +46,43 @@ AudioContext::~AudioContext() {
37
46
  void AudioContext::close() {
38
47
  state_ = ContextState::CLOSED;
39
48
 
49
+ audioPlayer_->stop();
40
50
  audioPlayer_->cleanup();
41
51
  nodeManager_->cleanup();
42
52
  }
43
53
 
44
54
  bool AudioContext::resume() {
45
- if (isClosed() || isRunning()) {
55
+ if (isClosed()) {
46
56
  return false;
47
57
  }
48
58
 
59
+ if (isRunning()) {
60
+ return true;
61
+ }
62
+
63
+ if (!playerHasBeenStarted_) {
64
+ playerHasBeenStarted_ = true;
65
+ audioPlayer_->start();
66
+ } else {
67
+ audioPlayer_->resume();
68
+ }
69
+
49
70
  state_ = ContextState::RUNNING;
50
- audioPlayer_->start();
51
71
  return true;
52
72
  }
53
73
 
54
74
  bool AudioContext::suspend() {
55
- if (isClosed() || isSuspended()) {
75
+ if (isClosed()) {
56
76
  return false;
57
77
  }
58
78
 
79
+ if (isSuspended()) {
80
+ return true;
81
+ }
82
+
83
+ audioPlayer_->suspend();
84
+
59
85
  state_ = ContextState::SUSPENDED;
60
- audioPlayer_->stop();
61
86
  return true;
62
87
  }
63
88
 
@@ -14,7 +14,7 @@ class IOSAudioPlayer;
14
14
 
15
15
  class AudioContext : public BaseAudioContext {
16
16
  public:
17
- explicit AudioContext(float sampleRate, const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry);
17
+ explicit AudioContext(float sampleRate, bool initSuspended, const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry);
18
18
  ~AudioContext() override;
19
19
 
20
20
  void close();
@@ -27,6 +27,7 @@ class AudioContext : public BaseAudioContext {
27
27
  #else
28
28
  std::shared_ptr<IOSAudioPlayer> audioPlayer_;
29
29
  #endif
30
+ bool playerHasBeenStarted_;
30
31
 
31
32
  std::function<void(std::shared_ptr<AudioBus>, int)> renderAudio();
32
33
  };
@@ -152,7 +152,11 @@ void AudioBufferQueueSourceNode::processWithPitchCorrection(
152
152
 
153
153
  playbackRateBus_->zero();
154
154
 
155
- updatePlaybackInfo(processingBus, framesToProcess, startOffset, offsetLength);
155
+ auto framesNeededToStretch =
156
+ static_cast<int>(playbackRate * static_cast<float>(framesToProcess));
157
+
158
+ updatePlaybackInfo(
159
+ playbackRateBus_, framesNeededToStretch, startOffset, offsetLength);
156
160
 
157
161
  if (playbackRate == 0.0f || (!isPlaying() && !isStopScheduled())) {
158
162
  processingBus->zero();
@@ -162,15 +166,7 @@ void AudioBufferQueueSourceNode::processWithPitchCorrection(
162
166
  // Send position changed event
163
167
  sendOnPositionChangedEvent();
164
168
 
165
- auto framesNeededToStretch =
166
- static_cast<int>(playbackRate * static_cast<float>(framesToProcess));
167
- auto stretchedStartOffset =
168
- static_cast<size_t>(static_cast<float>(startOffset) * playbackRate);
169
- auto stretchedOffsetLength =
170
- static_cast<size_t>(static_cast<float>(offsetLength) * playbackRate);
171
-
172
- processWithoutInterpolation(
173
- playbackRateBus_, stretchedStartOffset, stretchedOffsetLength);
169
+ processWithoutInterpolation(playbackRateBus_, startOffset, offsetLength);
174
170
 
175
171
  stretch_->process(
176
172
  playbackRateBus_.get()[0],
@@ -171,7 +171,7 @@ RCT_EXPORT_METHOD(
171
171
  body[stdKey] = EventValue([value doubleValue]);
172
172
  } else if (strcmp(type, @encode(float)) == 0) {
173
173
  body[stdKey] = EventValue([value floatValue]);
174
- } else if (strcmp(type, @encode(BOOL)) == 0) {
174
+ } else {
175
175
  body[stdKey] = EventValue([value boolValue]);
176
176
  }
177
177
  }
@@ -22,6 +22,8 @@ class IOSAudioPlayer {
22
22
 
23
23
  void start();
24
24
  void stop();
25
+ void resume();
26
+ void suspend();
25
27
  void cleanup();
26
28
 
27
29
  protected:
@@ -62,6 +62,22 @@ void IOSAudioPlayer::stop()
62
62
  [audioPlayer_ stop];
63
63
  }
64
64
 
65
+ void IOSAudioPlayer::resume()
66
+ {
67
+ if (isRunning_.load()) {
68
+ return;
69
+ }
70
+
71
+ [audioPlayer_ resume];
72
+ isRunning_.store(true);
73
+ }
74
+
75
+ void IOSAudioPlayer::suspend()
76
+ {
77
+ isRunning_.store(false);
78
+ [audioPlayer_ suspend];
79
+ }
80
+
65
81
  void IOSAudioPlayer::cleanup()
66
82
  {
67
83
  stop();
@@ -23,6 +23,10 @@ typedef void (^RenderAudioBlock)(AudioBufferList *outputBuffer, int numFrames);
23
23
 
24
24
  - (void)stop;
25
25
 
26
+ - (void)resume;
27
+
28
+ - (void)suspend;
29
+
26
30
  - (void)cleanup;
27
31
 
28
32
  @end
@@ -51,6 +51,21 @@
51
51
  self.sourceNodeId = nil;
52
52
  }
53
53
 
54
+ - (void)resume
55
+ {
56
+ NSLog(@"[AudioPlayer] resume");
57
+ AudioEngine *audioEngine = [AudioEngine sharedInstance];
58
+ assert(audioEngine != nil);
59
+ [audioEngine startEngine];
60
+ }
61
+
62
+ - (void)suspend
63
+ {
64
+ AudioEngine *audioEngine = [AudioEngine sharedInstance];
65
+ assert(audioEngine != nil);
66
+ [audioEngine pauseEngine];
67
+ }
68
+
54
69
  - (void)cleanup
55
70
  {
56
71
  self.renderAudio = nil;
@@ -20,6 +20,7 @@
20
20
  - (bool)rebuildAudioEngine;
21
21
  - (void)startEngine;
22
22
  - (void)stopEngine;
23
+ - (void)pauseEngine;
23
24
  - (bool)isRunning;
24
25
 
25
26
  - (NSString *)attachSourceNode:(AVAudioSourceNode *)sourceNode format:(AVAudioFormat *)format;
@@ -20,7 +20,6 @@ static AudioEngine *_sharedInstance = nil;
20
20
  self.sourceFormats = [[NSMutableDictionary alloc] init];
21
21
 
22
22
  self.sessionManager = sessionManager;
23
- [self.sessionManager setActive:true];
24
23
  }
25
24
 
26
25
  _sharedInstance = self;
@@ -76,6 +75,7 @@ static AudioEngine *_sharedInstance = nil;
76
75
  }
77
76
 
78
77
  [self.audioEngine startAndReturnError:&error];
78
+ [self.sessionManager setActive:true];
79
79
 
80
80
  if (error != nil) {
81
81
  NSLog(@"Error while starting the audio engine: %@", [error debugDescription]);
@@ -92,6 +92,16 @@ static AudioEngine *_sharedInstance = nil;
92
92
  [self.audioEngine stop];
93
93
  }
94
94
 
95
+ - (void)pauseEngine
96
+ {
97
+ NSLog(@"[AudioEngine] pauseEngine");
98
+ if (![self.audioEngine isRunning]) {
99
+ return;
100
+ }
101
+
102
+ [self.audioEngine pause];
103
+ }
104
+
95
105
  - (bool)isRunning
96
106
  {
97
107
  return [self.audioEngine isRunning];
@@ -1 +1 @@
1
- {"version":3,"names":["_specs","require","_AudioBuffer","_interopRequireDefault","_AudioBufferSourceNode","_AudioBufferQueueSourceNode","_AudioContext","_OfflineAudioContext","_AudioDestinationNode","_AudioNode","_AnalyserNode","_AudioParam","_AudioScheduledSourceNode","_BaseAudioContext","_BiquadFilterNode","_GainNode","_OscillatorNode","_StereoPannerNode","_AudioRecorder","_system","_useSytemVolume","_types","_errors","e","__esModule","default","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","AudioEventEmitter","NativeAudioAPIModule","Error","install"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAuCA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,2BAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,aAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,oBAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,qBAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,UAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,aAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,WAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,yBAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,iBAAA,GAAAV,sBAAA,CAAAF,OAAA;AACA,IAAAa,iBAAA,GAAAX,sBAAA,CAAAF,OAAA;AACA,IAAAc,SAAA,GAAAZ,sBAAA,CAAAF,OAAA;AACA,IAAAe,eAAA,GAAAb,sBAAA,CAAAF,OAAA;AACA,IAAAgB,iBAAA,GAAAd,sBAAA,CAAAF,OAAA;AACA,IAAAiB,cAAA,GAAAf,sBAAA,CAAAF,OAAA;AACA,IAAAkB,OAAA,GAAAhB,sBAAA,CAAAF,OAAA;AACA,IAAAmB,eAAA,GAAAjB,sBAAA,CAAAF,OAAA;AAEA,IAAAoB,MAAA,GAAApB,OAAA;AAUA,IAAAqB,OAAA,GAAArB,OAAA;AAMkB,SAAAE,uBAAAoB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAjElB;;AAaA;;AAEA,IACEG,MAAM,CAACC,kBAAkB,IAAI,IAAI,IACjCD,MAAM,CAACE,yBAAyB,IAAI,IAAI,IACxCF,MAAM,CAACG,mBAAmB,IAAI,IAAI,IAClCH,MAAM,CAACI,iBAAiB,IAAI,IAAI,EAChC;EACA,IAAI,CAACC,2BAAoB,EAAE;IACzB,MAAM,IAAIC,KAAK,CACb,iFACF,CAAC;EACH;EAEAD,2BAAoB,CAACE,OAAO,CAAC,CAAC;AAChC","ignoreList":[]}
1
+ {"version":3,"names":["_specs","require","_AudioBuffer","_interopRequireDefault","_AudioBufferSourceNode","_AudioBufferQueueSourceNode","_AudioContext","_OfflineAudioContext","_AudioDestinationNode","_AudioNode","_AnalyserNode","_AudioParam","_AudioScheduledSourceNode","_BaseAudioContext","_BiquadFilterNode","_GainNode","_OscillatorNode","_StereoPannerNode","_AudioRecorder","_system","_useSytemVolume","_types","_errors","e","__esModule","default","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","AudioEventEmitter","NativeAudioAPIModule","Error","install"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AA0CA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,2BAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,aAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,oBAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,qBAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,UAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,aAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,WAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,yBAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,iBAAA,GAAAV,sBAAA,CAAAF,OAAA;AACA,IAAAa,iBAAA,GAAAX,sBAAA,CAAAF,OAAA;AACA,IAAAc,SAAA,GAAAZ,sBAAA,CAAAF,OAAA;AACA,IAAAe,eAAA,GAAAb,sBAAA,CAAAF,OAAA;AACA,IAAAgB,iBAAA,GAAAd,sBAAA,CAAAF,OAAA;AACA,IAAAiB,cAAA,GAAAf,sBAAA,CAAAF,OAAA;AACA,IAAAkB,OAAA,GAAAhB,sBAAA,CAAAF,OAAA;AACA,IAAAmB,eAAA,GAAAjB,sBAAA,CAAAF,OAAA;AAEA,IAAAoB,MAAA,GAAApB,OAAA;AAUA,IAAAqB,OAAA,GAAArB,OAAA;AAMkB,SAAAE,uBAAAoB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AApElB;;AAgBA;;AAEA,IACEG,MAAM,CAACC,kBAAkB,IAAI,IAAI,IACjCD,MAAM,CAACE,yBAAyB,IAAI,IAAI,IACxCF,MAAM,CAACG,mBAAmB,IAAI,IAAI,IAClCH,MAAM,CAACI,iBAAiB,IAAI,IAAI,EAChC;EACA,IAAI,CAACC,2BAAoB,EAAE;IACzB,MAAM,IAAIC,KAAK,CACb,iFACF,CAAC;EACH;EAEAD,2BAAoB,CAACE,OAAO,CAAC,CAAC;AAChC","ignoreList":[]}
@@ -10,10 +10,10 @@ var _errors = require("../errors");
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  class AudioContext extends _BaseAudioContext.default {
12
12
  constructor(options) {
13
- if (options && (options.sampleRate < 8000 || options.sampleRate > 96000)) {
13
+ if (options && options.sampleRate && (options.sampleRate < 8000 || options.sampleRate > 96000)) {
14
14
  throw new _errors.NotSupportedError(`The provided sampleRate is not supported: ${options.sampleRate}`);
15
15
  }
16
- super(global.createAudioContext(options?.sampleRate || _system.default.getDevicePreferredSampleRate()));
16
+ super(global.createAudioContext(options?.sampleRate || _system.default.getDevicePreferredSampleRate(), options?.initSuspended || false));
17
17
  }
18
18
  async close() {
19
19
  await this.context.close();
@@ -1 +1 @@
1
- {"version":3,"names":["_BaseAudioContext","_interopRequireDefault","require","_system","_errors","e","__esModule","default","AudioContext","BaseAudioContext","constructor","options","sampleRate","NotSupportedError","global","createAudioContext","AudioManager","getDevicePreferredSampleRate","close","context","resume","suspend","exports"],"sourceRoot":"../../../src","sources":["core/AudioContext.ts"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE/B,MAAMG,YAAY,SAASC,yBAAgB,CAAC;EACzDC,WAAWA,CAACC,OAA6B,EAAE;IACzC,IAAIA,OAAO,KAAKA,OAAO,CAACC,UAAU,GAAG,IAAI,IAAID,OAAO,CAACC,UAAU,GAAG,KAAK,CAAC,EAAE;MACxE,MAAM,IAAIC,yBAAiB,CACzB,6CAA6CF,OAAO,CAACC,UAAU,EACjE,CAAC;IACH;IAEA,KAAK,CACHE,MAAM,CAACC,kBAAkB,CACvBJ,OAAO,EAAEC,UAAU,IAAII,eAAY,CAACC,4BAA4B,CAAC,CACnE,CACF,CAAC;EACH;EAEA,MAAMC,KAAKA,CAAA,EAAuB;IAChC,MAAO,IAAI,CAACC,OAAO,CAAmBD,KAAK,CAAC,CAAC;EAC/C;EAEA,MAAME,MAAMA,CAAA,EAAuB;IACjC,MAAO,IAAI,CAACD,OAAO,CAAmBC,MAAM,CAAC,CAAC;EAChD;EAEA,MAAMC,OAAOA,CAAA,EAAuB;IAClC,MAAO,IAAI,CAACF,OAAO,CAAmBE,OAAO,CAAC,CAAC;EACjD;AACF;AAACC,OAAA,CAAAf,OAAA,GAAAC,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_BaseAudioContext","_interopRequireDefault","require","_system","_errors","e","__esModule","default","AudioContext","BaseAudioContext","constructor","options","sampleRate","NotSupportedError","global","createAudioContext","AudioManager","getDevicePreferredSampleRate","initSuspended","close","context","resume","suspend","exports"],"sourceRoot":"../../../src","sources":["core/AudioContext.ts"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE/B,MAAMG,YAAY,SAASC,yBAAgB,CAAC;EACzDC,WAAWA,CAACC,OAA6B,EAAE;IACzC,IACEA,OAAO,IACPA,OAAO,CAACC,UAAU,KACjBD,OAAO,CAACC,UAAU,GAAG,IAAI,IAAID,OAAO,CAACC,UAAU,GAAG,KAAK,CAAC,EACzD;MACA,MAAM,IAAIC,yBAAiB,CACzB,6CAA6CF,OAAO,CAACC,UAAU,EACjE,CAAC;IACH;IAEA,KAAK,CACHE,MAAM,CAACC,kBAAkB,CACvBJ,OAAO,EAAEC,UAAU,IAAII,eAAY,CAACC,4BAA4B,CAAC,CAAC,EAClEN,OAAO,EAAEO,aAAa,IAAI,KAC5B,CACF,CAAC;EACH;EAEA,MAAMC,KAAKA,CAAA,EAAuB;IAChC,MAAO,IAAI,CAACC,OAAO,CAAmBD,KAAK,CAAC,CAAC;EAC/C;EAEA,MAAME,MAAMA,CAAA,EAAuB;IACjC,MAAO,IAAI,CAACD,OAAO,CAAmBC,MAAM,CAAC,CAAC;EAChD;EAEA,MAAMC,OAAOA,CAAA,EAAuB;IAClC,MAAO,IAAI,CAACF,OAAO,CAAmBE,OAAO,CAAC,CAAC;EACjD;AACF;AAACC,OAAA,CAAAhB,OAAA,GAAAC,YAAA","ignoreList":[]}
@@ -6,6 +6,15 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _configPlugins = require("@expo/config-plugins");
8
8
  const pkg = require('react-native-audio-api/package.json');
9
+ const withDefaultOptions = options => {
10
+ return {
11
+ iosBackgroundMode: true,
12
+ androidForegroundService: true,
13
+ androidFSPermissions: ['android.permission.FOREGROUND_SERVICE', 'android.permission.WAKE_LOCK'],
14
+ androidFSTypes: ['mediaPlayback'],
15
+ ...options
16
+ };
17
+ };
9
18
  const withBackgroundAudio = config => {
10
19
  return (0, _configPlugins.withInfoPlist)(config, iosConfig => {
11
20
  iosConfig.modResults.UIBackgroundModes = [...Array.from(new Set([...(iosConfig.modResults.UIBackgroundModes ?? []), 'audio']))];
@@ -39,22 +48,14 @@ const withForegroundService = (config, {
39
48
  return mod;
40
49
  });
41
50
  };
42
- const withAudioAPI = (config, {
43
- iosBackgroundMode = true,
44
- androidForegroundService = true,
45
- androidFSPermissions = [],
46
- androidFSTypes = []
47
- } = {}) => {
48
- if (iosBackgroundMode) {
51
+ const withAudioAPI = (config, optionsIn) => {
52
+ const options = withDefaultOptions(optionsIn ?? {});
53
+ if (options.iosBackgroundMode) {
49
54
  config = withBackgroundAudio(config);
50
55
  }
51
- if (androidForegroundService) {
52
- config = withAndroidPermissions(config, {
53
- androidFSPermissions
54
- });
55
- config = withForegroundService(config, {
56
- androidFSTypes
57
- });
56
+ if (options.androidForegroundService) {
57
+ config = withAndroidPermissions(config, options);
58
+ config = withForegroundService(config, options);
58
59
  }
59
60
  return config;
60
61
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_configPlugins","require","pkg","withBackgroundAudio","config","withInfoPlist","iosConfig","modResults","UIBackgroundModes","Array","from","Set","withAndroidPermissions","androidFSPermissions","AndroidConfig","Permissions","withPermissions","withForegroundService","androidFSTypes","withAndroidManifest","mod","manifest","mainApplication","Manifest","getMainApplicationOrThrow","SFTypes","join","serviceElement","$","intentFilter","service","push","withAudioAPI","iosBackgroundMode","androidForegroundService","_default","exports","default","createRunOncePlugin","name","version"],"sourceRoot":"../../../src","sources":["plugin/withAudioAPI.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAQA,MAAMC,GAAG,GAAGD,OAAO,CAAC,qCAAqC,CAAC;AAE1D,MAAME,mBAAiC,GAAIC,MAAM,IAAK;EACpD,OAAO,IAAAC,4BAAa,EAACD,MAAM,EAAGE,SAAS,IAAK;IAC1CA,SAAS,CAACC,UAAU,CAACC,iBAAiB,GAAG,CACvC,GAAGC,KAAK,CAACC,IAAI,CACX,IAAIC,GAAG,CAAC,CAAC,IAAIL,SAAS,CAACC,UAAU,CAACC,iBAAiB,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CACtE,CAAC,CACF;IAED,OAAOF,SAAS;EAClB,CAAC,CAAC;AACJ,CAAC;AAED,MAAMM,sBAEJ,GAAGA,CAACR,MAAM,EAAE;EAAES;AAAqB,CAAC,KAAK;EACzC,OAAOC,4BAAa,CAACC,WAAW,CAACC,eAAe,CAC9CZ,MAAM,EACNS,oBACF,CAAC;AACH,CAAC;AAED,MAAMI,qBAEJ,GAAGA,CAACb,MAAM,EAAE;EAAEc;AAAe,CAAC,KAAK;EACnC,OAAO,IAAAC,kCAAmB,EAACf,MAAM,EAAGgB,GAAG,IAAK;IAC1C,MAAMC,QAAQ,GAAGD,GAAG,CAACb,UAAU;IAC/B,MAAMe,eAAe,GACnBR,4BAAa,CAACS,QAAQ,CAACC,yBAAyB,CAACH,QAAQ,CAAC;IAE5D,MAAMI,OAAO,GAAGP,cAAc,CAACQ,IAAI,CAAC,GAAG,CAAC;IAExC,MAAMC,cAAc,GAAG;MACrBC,CAAC,EAAE;QACD,cAAc,EACZ,4EAA4E;QAC9E,sBAAsB,EAAE,MAAM;QAC9B,+BAA+B,EAAEH;MACnC,CAAC;MACDI,YAAY,EAAE;IAChB,CAAC;IAED,IAAI,CAACP,eAAe,CAACQ,OAAO,EAAE;MAC5BR,eAAe,CAACQ,OAAO,GAAG,EAAE;IAC9B;IAEAR,eAAe,CAACQ,OAAO,CAACC,IAAI,CAACJ,cAAc,CAAC;IAE5C,OAAOP,GAAG;EACZ,CAAC,CAAC;AACJ,CAAC;AAED,MAAMY,YAKJ,GAAGA,CACH5B,MAAM,EACN;EACE6B,iBAAiB,GAAG,IAAI;EACxBC,wBAAwB,GAAG,IAAI;EAC/BrB,oBAAoB,GAAG,EAAE;EACzBK,cAAc,GAAG;AACnB,CAAC,GAAG,CAAC,CAAC,KACH;EACH,IAAIe,iBAAiB,EAAE;IACrB7B,MAAM,GAAGD,mBAAmB,CAACC,MAAM,CAAC;EACtC;EACA,IAAI8B,wBAAwB,EAAE;IAC5B9B,MAAM,GAAGQ,sBAAsB,CAACR,MAAM,EAAE;MACtCS;IACF,CAAC,CAAC;IACFT,MAAM,GAAGa,qBAAqB,CAACb,MAAM,EAAE;MACrCc;IACF,CAAC,CAAC;EACJ;EAEA,OAAOd,MAAM;AACf,CAAC;AAAC,IAAA+B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,kCAAmB,EAACN,YAAY,EAAE9B,GAAG,CAACqC,IAAI,EAAErC,GAAG,CAACsC,OAAO,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_configPlugins","require","pkg","withDefaultOptions","options","iosBackgroundMode","androidForegroundService","androidFSPermissions","androidFSTypes","withBackgroundAudio","config","withInfoPlist","iosConfig","modResults","UIBackgroundModes","Array","from","Set","withAndroidPermissions","AndroidConfig","Permissions","withPermissions","withForegroundService","withAndroidManifest","mod","manifest","mainApplication","Manifest","getMainApplicationOrThrow","SFTypes","join","serviceElement","$","intentFilter","service","push","withAudioAPI","optionsIn","_default","exports","default","createRunOncePlugin","name","version"],"sourceRoot":"../../../src","sources":["plugin/withAudioAPI.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAOA,MAAMC,GAAG,GAAGD,OAAO,CAAC,qCAAqC,CAAC;AAS1D,MAAME,kBAAkB,GAAIC,OAAyB,IAAc;EACjE,OAAO;IACLC,iBAAiB,EAAE,IAAI;IACvBC,wBAAwB,EAAE,IAAI;IAC9BC,oBAAoB,EAAE,CACpB,uCAAuC,EACvC,8BAA8B,CAC/B;IACDC,cAAc,EAAE,CAAC,eAAe,CAAC;IACjC,GAAGJ;EACL,CAAC;AACH,CAAC;AAED,MAAMK,mBAAiC,GAAIC,MAAM,IAAK;EACpD,OAAO,IAAAC,4BAAa,EAACD,MAAM,EAAGE,SAAS,IAAK;IAC1CA,SAAS,CAACC,UAAU,CAACC,iBAAiB,GAAG,CACvC,GAAGC,KAAK,CAACC,IAAI,CACX,IAAIC,GAAG,CAAC,CAAC,IAAIL,SAAS,CAACC,UAAU,CAACC,iBAAiB,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CACtE,CAAC,CACF;IAED,OAAOF,SAAS;EAClB,CAAC,CAAC;AACJ,CAAC;AAED,MAAMM,sBAA6C,GAAGA,CACpDR,MAAM,EACN;EAAEH;AAA8B,CAAC,KAC9B;EACH,OAAOY,4BAAa,CAACC,WAAW,CAACC,eAAe,CAC9CX,MAAM,EACNH,oBACF,CAAC;AACH,CAAC;AAED,MAAMe,qBAA4C,GAAGA,CACnDZ,MAAM,EACN;EAAEF;AAAwB,CAAC,KACxB;EACH,OAAO,IAAAe,kCAAmB,EAACb,MAAM,EAAGc,GAAG,IAAK;IAC1C,MAAMC,QAAQ,GAAGD,GAAG,CAACX,UAAU;IAC/B,MAAMa,eAAe,GACnBP,4BAAa,CAACQ,QAAQ,CAACC,yBAAyB,CAACH,QAAQ,CAAC;IAE5D,MAAMI,OAAO,GAAGrB,cAAc,CAACsB,IAAI,CAAC,GAAG,CAAC;IAExC,MAAMC,cAAc,GAAG;MACrBC,CAAC,EAAE;QACD,cAAc,EACZ,4EAA4E;QAC9E,sBAAsB,EAAE,MAAM;QAC9B,+BAA+B,EAAEH;MACnC,CAAC;MACDI,YAAY,EAAE;IAChB,CAAC;IAED,IAAI,CAACP,eAAe,CAACQ,OAAO,EAAE;MAC5BR,eAAe,CAACQ,OAAO,GAAG,EAAE;IAC9B;IAEAR,eAAe,CAACQ,OAAO,CAACC,IAAI,CAACJ,cAAc,CAAC;IAE5C,OAAOP,GAAG;EACZ,CAAC,CAAC;AACJ,CAAC;AAED,MAAMY,YAAmC,GAAGA,CAAC1B,MAAM,EAAE2B,SAAS,KAAK;EACjE,MAAMjC,OAAO,GAAGD,kBAAkB,CAACkC,SAAS,IAAI,CAAC,CAAC,CAAC;EAEnD,IAAIjC,OAAO,CAACC,iBAAiB,EAAE;IAC7BK,MAAM,GAAGD,mBAAmB,CAACC,MAAM,CAAC;EACtC;EAEA,IAAIN,OAAO,CAACE,wBAAwB,EAAE;IACpCI,MAAM,GAAGQ,sBAAsB,CAACR,MAAM,EAAEN,OAAO,CAAC;IAChDM,MAAM,GAAGY,qBAAqB,CAACZ,MAAM,EAAEN,OAAO,CAAC;EACjD;EAEA,OAAOM,MAAM;AACf,CAAC;AAAC,IAAA4B,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,kCAAmB,EAACL,YAAY,EAAElC,GAAG,CAACwC,IAAI,EAAExC,GAAG,CAACyC,OAAO,CAAC","ignoreList":[]}
@@ -65,11 +65,11 @@ class AudioBufferSourceNode extends _AudioScheduledSourceNode.default {
65
65
  super(context, node);
66
66
  this._pitchCorrection = pitchCorrection;
67
67
  if (pitchCorrection) {
68
- this.detune = new _AudioParam.default(new IStretcherNodeAudioParam(0, this.setDetune.bind(this), 'a-rate', -1200, 1200, 0));
69
- this.playbackRate = new _AudioParam.default(new IStretcherNodeAudioParam(1, this.setPlaybackRate.bind(this), 'a-rate', 0, Infinity, 1));
68
+ this.detune = new _AudioParam.default(new IStretcherNodeAudioParam(0, this.setDetune.bind(this), 'a-rate', -1200, 1200, 0), context);
69
+ this.playbackRate = new _AudioParam.default(new IStretcherNodeAudioParam(1, this.setPlaybackRate.bind(this), 'a-rate', 0, Infinity, 1), context);
70
70
  } else {
71
- this.detune = new _AudioParam.default(node.detune);
72
- this.playbackRate = new _AudioParam.default(node.playbackRate);
71
+ this.detune = new _AudioParam.default(node.detune, context);
72
+ this.playbackRate = new _AudioParam.default(node.playbackRate, context);
73
73
  }
74
74
  }
75
75
  isStretcherNode() {
@@ -1 +1 @@
1
- {"version":3,"names":["_errors","require","_AudioParam","_interopRequireDefault","_AudioBuffer","_AudioScheduledSourceNode","_utils","_LoadCustomWasm","e","__esModule","default","IStretcherNodeAudioParam","constructor","value","setter","automationRate","minValue","maxValue","defaultValue","_value","_setter","cancelAndHoldAtTime","cancelTime","cancelScheduledValues","exponentialRampToValueAtTime","_endTime","console","warn","linearRampToValueAtTime","setTargetAtTime","_target","_startTime","_timeConstant","setValueAtTime","startTime","setValueCurveAtTime","_values","_duration","AudioBufferSourceNode","AudioScheduledSourceNode","_loop","_loopStart","_loopEnd","_buffer","context","node","pitchCorrection","_pitchCorrection","detune","AudioParam","setDetune","bind","playbackRate","setPlaybackRate","Infinity","isStretcherNode","asStretcher","asBufferSource","when","hasBeenStarted","schedule","semitones","Math","floor","clamp","output","rate","buffer","AudioBuffer","stretcher","dropBuffers","channelArrays","i","numberOfChannels","push","getChannelData","addBuffers","loop","loopStart","loopEnd","start","offset","duration","RangeError","InvalidStateError","startAt","currentTime","stop","exports"],"sourceRoot":"../../../src","sources":["web-core/AudioBufferSourceNode.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_errors","require","_AudioParam","_interopRequireDefault","_AudioBuffer","_AudioScheduledSourceNode","_utils","_LoadCustomWasm","e","__esModule","default","IStretcherNodeAudioParam","constructor","value","setter","automationRate","minValue","maxValue","defaultValue","_value","_setter","cancelAndHoldAtTime","cancelTime","cancelScheduledValues","exponentialRampToValueAtTime","_endTime","console","warn","linearRampToValueAtTime","setTargetAtTime","_target","_startTime","_timeConstant","setValueAtTime","startTime","setValueCurveAtTime","_values","_duration","AudioBufferSourceNode","AudioScheduledSourceNode","_loop","_loopStart","_loopEnd","_buffer","context","node","pitchCorrection","_pitchCorrection","detune","AudioParam","setDetune","bind","playbackRate","setPlaybackRate","Infinity","isStretcherNode","asStretcher","asBufferSource","when","hasBeenStarted","schedule","semitones","Math","floor","clamp","output","rate","buffer","AudioBuffer","stretcher","dropBuffers","channelArrays","i","numberOfChannels","push","getChannelData","addBuffers","loop","loopStart","loopEnd","start","offset","duration","RangeError","InvalidStateError","startAt","currentTime","stop","exports"],"sourceRoot":"../../../src","sources":["web-core/AudioBufferSourceNode.tsx"],"mappings":"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","ignoreList":[]}
@@ -17,11 +17,13 @@ var _StereoPannerNode = _interopRequireDefault(require("./StereoPannerNode"));
17
17
  var _LoadCustomWasm = require("./custom/LoadCustomWasm");
18
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
19
  class AudioContext {
20
- constructor(options) {
21
- if (options && (options.sampleRate < 8000 || options.sampleRate > 96000)) {
20
+ constructor(options, _initSuspended = false) {
21
+ if (options && options.sampleRate && (options.sampleRate < 8000 || options.sampleRate > 96000)) {
22
22
  throw new _errors.NotSupportedError(`The provided sampleRate is not supported: ${options.sampleRate}`);
23
23
  }
24
- this.context = new window.AudioContext(options);
24
+ this.context = new window.AudioContext({
25
+ sampleRate: options?.sampleRate
26
+ });
25
27
  this.sampleRate = this.context.sampleRate;
26
28
  this.destination = new _AudioDestinationNode.default(this, this.context.destination);
27
29
  }