react-native-audio-api 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/android/src/main/cpp/core/AudioPlayer.cpp +38 -11
  2. package/android/src/main/cpp/core/AudioPlayer.h +5 -1
  3. package/common/cpp/HostObjects/AudioAPIInstallerHostObject.h +11 -3
  4. package/common/cpp/HostObjects/AudioNodeHostObject.h +5 -0
  5. package/common/cpp/core/AudioContext.cpp +41 -1
  6. package/common/cpp/core/AudioContext.h +17 -0
  7. package/common/cpp/core/AudioNode.cpp +15 -3
  8. package/common/cpp/core/AudioNode.h +1 -0
  9. package/common/cpp/core/BaseAudioContext.cpp +0 -40
  10. package/common/cpp/core/BaseAudioContext.h +5 -18
  11. package/common/cpp/core/Constants.h +3 -2
  12. package/common/cpp/jsi/JsiHostObject.h +1 -1
  13. package/common/cpp/jsi/JsiPromise.h +1 -0
  14. package/common/cpp/utils/VectorMath.cpp +1 -1
  15. package/ios/core/AudioPlayer.h +3 -2
  16. package/ios/core/AudioPlayer.m +49 -15
  17. package/ios/core/IOSAudioPlayer.h +3 -1
  18. package/ios/core/IOSAudioPlayer.mm +46 -10
  19. package/lib/module/core/AudioContext.js +2 -2
  20. package/lib/module/core/AudioContext.js.map +1 -1
  21. package/lib/module/core/AudioNode.js +5 -5
  22. package/lib/module/core/AudioNode.js.map +1 -1
  23. package/lib/module/index.js +10 -6
  24. package/lib/module/index.js.map +1 -1
  25. package/lib/typescript/core/AudioContext.d.ts +1 -1
  26. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  27. package/lib/typescript/core/AudioNode.d.ts +2 -2
  28. package/lib/typescript/core/AudioNode.d.ts.map +1 -1
  29. package/lib/typescript/index.d.ts +3 -3
  30. package/lib/typescript/index.d.ts.map +1 -1
  31. package/lib/typescript/interfaces.d.ts +1 -1
  32. package/lib/typescript/interfaces.d.ts.map +1 -1
  33. package/package.json +1 -1
  34. package/src/core/AudioContext.ts +2 -2
  35. package/src/core/AudioNode.ts +5 -5
  36. package/src/index.ts +11 -6
  37. package/src/interfaces.ts +1 -1
  38. package/src/specs/global.d.ts +1 -1
@@ -21,17 +21,36 @@ AudioPlayer::AudioPlayer(
21
21
  ->setDataCallback(this)
22
22
  ->openStream(mStream_);
23
23
 
24
+ sampleRate_ = mStream_->getSampleRate();
24
25
  mBus_ = std::make_shared<AudioBus>(
25
- getSampleRate(), getBufferSizeInFrames(), CHANNEL_COUNT);
26
+ sampleRate_, RENDER_QUANTUM_SIZE, CHANNEL_COUNT);
26
27
  isInitialized_ = true;
27
28
  }
28
29
 
29
- int AudioPlayer::getSampleRate() const {
30
- return mStream_->getSampleRate();
30
+ AudioPlayer::AudioPlayer(
31
+ const std::function<void(AudioBus *, int)> &renderAudio,
32
+ int sampleRate)
33
+ : renderAudio_(renderAudio) {
34
+ AudioStreamBuilder builder;
35
+
36
+ builder.setSharingMode(SharingMode::Exclusive)
37
+ ->setFormat(AudioFormat::Float)
38
+ ->setFormatConversionAllowed(true)
39
+ ->setPerformanceMode(PerformanceMode::LowLatency)
40
+ ->setChannelCount(CHANNEL_COUNT)
41
+ ->setSampleRateConversionQuality(SampleRateConversionQuality::Medium)
42
+ ->setDataCallback(this)
43
+ ->setSampleRate(sampleRate)
44
+ ->openStream(mStream_);
45
+
46
+ sampleRate_ = sampleRate;
47
+ mBus_ = std::make_shared<AudioBus>(
48
+ sampleRate_, RENDER_QUANTUM_SIZE, CHANNEL_COUNT);
49
+ isInitialized_ = true;
31
50
  }
32
51
 
33
- int AudioPlayer::getBufferSizeInFrames() const {
34
- return mStream_->getBufferSizeInFrames();
52
+ int AudioPlayer::getSampleRate() const {
53
+ return sampleRate_;
35
54
  }
36
55
 
37
56
  void AudioPlayer::start() {
@@ -59,14 +78,22 @@ DataCallbackResult AudioPlayer::onAudioReady(
59
78
  }
60
79
 
61
80
  auto buffer = static_cast<float *>(audioData);
62
- renderAudio_(mBus_.get(), numFrames);
81
+ int processedFrames = 0;
63
82
 
64
- // TODO: optimize this with SIMD?
65
- for (int32_t i = 0; i < numFrames; i += 1) {
66
- for (int channel = 0; channel < CHANNEL_COUNT; channel += 1) {
67
- buffer[i * CHANNEL_COUNT + channel] =
68
- mBus_->getChannel(channel)->getData()[i];
83
+ while (processedFrames < numFrames) {
84
+ int framesToProcess =
85
+ std::min(numFrames - processedFrames, RENDER_QUANTUM_SIZE);
86
+ renderAudio_(mBus_.get(), framesToProcess);
87
+
88
+ // TODO: optimize this with SIMD?
89
+ for (int i = 0; i < framesToProcess; i++) {
90
+ for (int channel = 0; channel < CHANNEL_COUNT; channel += 1) {
91
+ buffer[(processedFrames + i) * CHANNEL_COUNT + channel] =
92
+ mBus_->getChannel(channel)->getData()[i];
93
+ }
69
94
  }
95
+
96
+ processedFrames += framesToProcess;
70
97
  }
71
98
 
72
99
  return DataCallbackResult::Continue;
@@ -2,6 +2,7 @@
2
2
 
3
3
  #include <oboe/Oboe.h>
4
4
  #include <memory>
5
+ #include <functional>
5
6
 
6
7
  namespace audioapi {
7
8
 
@@ -13,9 +14,11 @@ class AudioBus;
13
14
  class AudioPlayer : public AudioStreamDataCallback {
14
15
  public:
15
16
  explicit AudioPlayer(const std::function<void(AudioBus *, int)> &renderAudio);
17
+ AudioPlayer(
18
+ const std::function<void(AudioBus *, int)> &renderAudio,
19
+ int sampleRate);
16
20
 
17
21
  [[nodiscard]] int getSampleRate() const;
18
- [[nodiscard]] int getBufferSizeInFrames() const;
19
22
  void start();
20
23
  void stop();
21
24
 
@@ -29,6 +32,7 @@ class AudioPlayer : public AudioStreamDataCallback {
29
32
  std::shared_ptr<AudioStream> mStream_;
30
33
  std::shared_ptr<AudioBus> mBus_;
31
34
  bool isInitialized_ = false;
35
+ int sampleRate_;
32
36
  };
33
37
 
34
38
  } // namespace audioapi
@@ -35,10 +35,18 @@ class AudioAPIInstallerHostObject
35
35
  }
36
36
 
37
37
  JSI_HOST_FUNCTION(createAudioContext) {
38
- auto audioContext = std::make_shared<AudioContext>();
39
- auto audioContextHostObject =
38
+ std::shared_ptr<AudioContext> audioContext;
39
+ if (args[0].isUndefined()) {
40
+ audioContext = std::make_shared<AudioContext>();
41
+ } else {
42
+ int sampleRate = static_cast<int>(args[0].getNumber());
43
+ audioContext = std::make_shared<AudioContext>(sampleRate);
44
+ }
45
+
46
+ auto audioContextHostObject =
40
47
  std::make_shared<AudioContextHostObject>(audioContext, promiseVendor_);
41
- return jsi::Object::createFromHostObject(runtime, audioContextHostObject);
48
+
49
+ return jsi::Object::createFromHostObject(runtime, audioContextHostObject);
42
50
  }
43
51
 
44
52
  private:
@@ -54,6 +54,11 @@ class AudioNodeHostObject : public JsiHostObject {
54
54
  }
55
55
 
56
56
  JSI_HOST_FUNCTION(disconnect) {
57
+ if(args[0].isUndefined()) {
58
+ node_->disconnect();
59
+ return jsi::Value::undefined();
60
+ }
61
+
57
62
  auto node =
58
63
  args[0].getObject(runtime).getHostObject<AudioNodeHostObject>(runtime);
59
64
  node_->disconnect(std::shared_ptr<AudioNodeHostObject>(node)->node_);
@@ -5,16 +5,56 @@
5
5
  #endif
6
6
 
7
7
  #include "AudioContext.h"
8
+ #include "AudioDecoder.h"
9
+ #include "AudioDestinationNode.h"
8
10
 
9
11
  namespace audioapi {
10
-
11
12
  AudioContext::AudioContext() : BaseAudioContext() {
13
+ #ifdef ANDROID
14
+ audioPlayer_ = std::make_shared<AudioPlayer>(this->renderAudio());
15
+ #else
16
+ audioPlayer_ = std::make_shared<IOSAudioPlayer>(this->renderAudio());
17
+ #endif
18
+ sampleRate_ = audioPlayer_->getSampleRate();
19
+ audioDecoder_ = std::make_shared<AudioDecoder>(sampleRate_);
20
+
21
+ audioPlayer_->start();
22
+ }
23
+
24
+ AudioContext::AudioContext(int sampleRate) : BaseAudioContext() {
25
+ #ifdef ANDROID
26
+ audioPlayer_ = std::make_shared<AudioPlayer>(this->renderAudio(), sampleRate);
27
+ #else
28
+ audioPlayer_ =
29
+ std::make_shared<IOSAudioPlayer>(this->renderAudio(), sampleRate);
30
+ #endif
31
+ sampleRate_ = audioPlayer_->getSampleRate();
32
+ audioDecoder_ = std::make_shared<AudioDecoder>(sampleRate_);
33
+
12
34
  audioPlayer_->start();
13
35
  }
14
36
 
37
+ AudioContext::~AudioContext() {
38
+ if (isRunning()) {
39
+ return;
40
+ }
41
+
42
+ close();
43
+ }
44
+
15
45
  void AudioContext::close() {
16
46
  state_ = ContextState::CLOSED;
17
47
  audioPlayer_->stop();
18
48
  }
19
49
 
50
+ std::function<void(AudioBus *, int)> AudioContext::renderAudio() {
51
+ if (!isRunning()) {
52
+ return [](AudioBus *, int) {};
53
+ }
54
+
55
+ return [this](AudioBus *data, int frames) {
56
+ destination_->renderAudio(data, frames);
57
+ };
58
+ }
59
+
20
60
  } // namespace audioapi
@@ -1,16 +1,33 @@
1
1
  #pragma once
2
2
 
3
3
  #include <memory>
4
+ #include <functional>
4
5
 
5
6
  #include "BaseAudioContext.h"
6
7
 
7
8
  namespace audioapi {
9
+ #ifdef ANDROID
10
+ class AudioPlayer;
11
+ #else
12
+ class IOSAudioPlayer;
13
+ #endif
8
14
 
9
15
  class AudioContext : public BaseAudioContext {
10
16
  public:
11
17
  AudioContext();
18
+ explicit AudioContext(int sampleRate);
19
+ ~AudioContext() override;
12
20
 
13
21
  void close();
22
+
23
+ std::function<void(AudioBus *, int)> renderAudio();
24
+
25
+ private:
26
+ #ifdef ANDROID
27
+ std::shared_ptr<AudioPlayer> audioPlayer_;
28
+ #else
29
+ std::shared_ptr<IOSAudioPlayer> audioPlayer_;
30
+ #endif
14
31
  };
15
32
 
16
33
  } // namespace audioapi
@@ -9,9 +9,7 @@ namespace audioapi {
9
9
 
10
10
  AudioNode::AudioNode(BaseAudioContext *context) : context_(context) {
11
11
  audioBus_ = std::make_shared<AudioBus>(
12
- context->getSampleRate(),
13
- context->getBufferSizeInFrames(),
14
- channelCount_);
12
+ context->getSampleRate(), RENDER_QUANTUM_SIZE, channelCount_);
15
13
  }
16
14
 
17
15
  AudioNode::~AudioNode() {
@@ -49,6 +47,12 @@ void AudioNode::connectNode(const std::shared_ptr<AudioNode> &node) {
49
47
  node->onInputConnected(this);
50
48
  }
51
49
 
50
+ void AudioNode::disconnect() {
51
+ for (auto &outputNode : outputNodes_) {
52
+ disconnectNode(outputNode);
53
+ }
54
+ }
55
+
52
56
  void AudioNode::disconnect(const std::shared_ptr<AudioNode> &node) {
53
57
  context_->getNodeManager()->addPendingConnection(
54
58
  shared_from_this(), node, AudioNodeManager::ConnectionType::DISCONNECT);
@@ -201,6 +205,10 @@ void AudioNode::onInputDisabled() {
201
205
  }
202
206
 
203
207
  void AudioNode::onInputConnected(AudioNode *node) {
208
+ if (!isInitialized_) {
209
+ return;
210
+ }
211
+
204
212
  inputNodes_.push_back(node);
205
213
 
206
214
  if (node->isEnabled()) {
@@ -209,6 +217,10 @@ void AudioNode::onInputConnected(AudioNode *node) {
209
217
  }
210
218
 
211
219
  void AudioNode::onInputDisconnected(AudioNode *node) {
220
+ if (!isInitialized_) {
221
+ return;
222
+ }
223
+
212
224
  auto position = std::find(inputNodes_.begin(), inputNodes_.end(), node);
213
225
 
214
226
  if (position != inputNodes_.end()) {
@@ -23,6 +23,7 @@ class AudioNode : public std::enable_shared_from_this<AudioNode> {
23
23
  std::string getChannelCountMode() const;
24
24
  std::string getChannelInterpretation() const;
25
25
  void connect(const std::shared_ptr<AudioNode> &node);
26
+ void disconnect();
26
27
  void disconnect(const std::shared_ptr<AudioNode> &node);
27
28
 
28
29
  bool isEnabled() const;
@@ -1,9 +1,3 @@
1
- #ifdef ANDROID
2
- #include "AudioPlayer.h"
3
- #else
4
- #include "IOSAudioPlayer.h"
5
- #endif
6
-
7
1
  #include "BaseAudioContext.h"
8
2
 
9
3
  #include "AnalyserNode.h"
@@ -23,30 +17,10 @@
23
17
  namespace audioapi {
24
18
 
25
19
  BaseAudioContext::BaseAudioContext() {
26
- #ifdef ANDROID
27
- audioPlayer_ = std::make_shared<AudioPlayer>(this->renderAudio());
28
- #else
29
- audioPlayer_ = std::make_shared<IOSAudioPlayer>(this->renderAudio());
30
- #endif
31
-
32
- audioDecoder_ = std::make_shared<AudioDecoder>(audioPlayer_->getSampleRate());
33
-
34
- sampleRate_ = audioPlayer_->getSampleRate();
35
- bufferSizeInFrames_ = audioPlayer_->getBufferSizeInFrames();
36
-
37
20
  nodeManager_ = std::make_shared<AudioNodeManager>();
38
21
  destination_ = std::make_shared<AudioDestinationNode>(this);
39
22
  }
40
23
 
41
- BaseAudioContext::~BaseAudioContext() {
42
- if (isRunning()) {
43
- return;
44
- }
45
-
46
- state_ = ContextState::CLOSED;
47
- audioPlayer_->stop();
48
- }
49
-
50
24
  std::string BaseAudioContext::getState() {
51
25
  return BaseAudioContext::toString(state_);
52
26
  }
@@ -55,10 +29,6 @@ int BaseAudioContext::getSampleRate() const {
55
29
  return sampleRate_;
56
30
  }
57
31
 
58
- int BaseAudioContext::getBufferSizeInFrames() const {
59
- return bufferSizeInFrames_;
60
- }
61
-
62
32
  std::size_t BaseAudioContext::getCurrentSampleFrame() const {
63
33
  return destination_->getCurrentSampleFrame();
64
34
  }
@@ -117,16 +87,6 @@ std::shared_ptr<AudioBuffer> BaseAudioContext::decodeAudioDataSource(
117
87
  return std::make_shared<AudioBuffer>(audioBus);
118
88
  }
119
89
 
120
- std::function<void(AudioBus *, int)> BaseAudioContext::renderAudio() {
121
- if (!isRunning()) {
122
- return [](AudioBus *, int) {};
123
- }
124
-
125
- return [this](AudioBus *data, int frames) {
126
- destination_->renderAudio(data, frames);
127
- };
128
- }
129
-
130
90
  AudioNodeManager *BaseAudioContext::getNodeManager() {
131
91
  return nodeManager_.get();
132
92
  }
@@ -24,21 +24,14 @@ class AudioBufferSourceNode;
24
24
  class AudioDecoder;
25
25
  class AnalyserNode;
26
26
 
27
- #ifdef ANDROID
28
- class AudioPlayer;
29
- #else
30
- class IOSAudioPlayer;
31
- #endif
32
-
33
27
  class BaseAudioContext {
34
28
  public:
35
29
  BaseAudioContext();
36
- ~BaseAudioContext();
30
+ virtual ~BaseAudioContext() = default;
37
31
 
38
32
  std::string getState();
39
33
  [[nodiscard]] int getSampleRate() const;
40
34
  [[nodiscard]] double getCurrentTime() const;
41
- [[nodiscard]] int getBufferSizeInFrames() const;
42
35
  [[nodiscard]] std::size_t getCurrentSampleFrame() const;
43
36
  std::shared_ptr<AudioDestinationNode> getDestination();
44
37
 
@@ -58,7 +51,6 @@ class BaseAudioContext {
58
51
 
59
52
  std::shared_ptr<AudioBuffer> decodeAudioDataSource(const std::string &path);
60
53
  std::shared_ptr<PeriodicWave> getBasicWaveForm(OscillatorType type);
61
- std::function<void(AudioBus *, int)> renderAudio();
62
54
  AudioNodeManager *getNodeManager();
63
55
  [[nodiscard]] bool isRunning() const;
64
56
  [[nodiscard]] bool isClosed() const;
@@ -66,16 +58,11 @@ class BaseAudioContext {
66
58
  protected:
67
59
  static std::string toString(ContextState state);
68
60
  std::shared_ptr<AudioDestinationNode> destination_;
69
- std::shared_ptr<AudioDecoder> audioDecoder_;
70
-
71
- #ifdef ANDROID
72
- std::shared_ptr<AudioPlayer> audioPlayer_;
73
- #else
74
- std::shared_ptr<IOSAudioPlayer> audioPlayer_;
75
- #endif
61
+ // init in AudioContext or OfflineContext constructor
62
+ std::shared_ptr<AudioDecoder> audioDecoder_ {};
76
63
 
77
- int sampleRate_;
78
- int bufferSizeInFrames_;
64
+ // init in AudioContext or OfflineContext constructor
65
+ int sampleRate_ {};
79
66
  ContextState state_ = ContextState::RUNNING;
80
67
  std::shared_ptr<AudioNodeManager> nodeManager_;
81
68
 
@@ -6,13 +6,14 @@
6
6
  // https://webaudio.github.io/web-audio-api/
7
7
 
8
8
  namespace audioapi {
9
- constexpr int SAMPLE_RATE = 48000;
9
+ constexpr int DEFAULT_SAMPLE_RATE = 48000;
10
+ constexpr int RENDER_QUANTUM_SIZE = 128;
10
11
  constexpr int CHANNEL_COUNT = 2;
11
12
 
12
13
  constexpr float MOST_POSITIVE_SINGLE_FLOAT = static_cast<float>(std::numeric_limits<float>::max());
13
14
  constexpr float MOST_NEGATIVE_SINGLE_FLOAT = static_cast<float>(std::numeric_limits<float>::lowest());
14
15
 
15
- constexpr float NYQUIST_FREQUENCY = SAMPLE_RATE / 2.0;
16
+ constexpr float NYQUIST_FREQUENCY = DEFAULT_SAMPLE_RATE / 2.0;
16
17
  static float MAX_DETUNE = 1200 * std::log2(MOST_POSITIVE_SINGLE_FLOAT);
17
18
  constexpr float MAX_GAIN = MOST_POSITIVE_SINGLE_FLOAT;
18
19
  constexpr float MAX_PAN = 1.0;
@@ -13,7 +13,7 @@
13
13
  #define JSI_HOST_FUNCTION(NAME) \
14
14
  jsi::Value NAME( \
15
15
  jsi::Runtime &runtime, \
16
- const jsi::Value &thisVal, \
16
+ const jsi::Value &thisValue, \
17
17
  const jsi::Value *args, \
18
18
  size_t count)
19
19
 
@@ -5,6 +5,7 @@
5
5
  #include <memory>
6
6
  #include <string>
7
7
  #include <utility>
8
+ #include <functional>
8
9
 
9
10
  namespace audioapi {
10
11
 
@@ -693,7 +693,7 @@ void multiplyByScalarThenAddToOutput(
693
693
 
694
694
  #endif
695
695
 
696
- void VectorMath::linearToDecibels(
696
+ void linearToDecibels(
697
697
  const float *inputVector,
698
698
  float *outputVector,
699
699
  size_t numberOfElementsToProcess) {
@@ -12,12 +12,13 @@ typedef void (^RenderAudioBlock)(AudioBufferList *outputBuffer, int numFrames);
12
12
  @property (nonatomic, strong) AVAudioFormat *format;
13
13
  @property (nonatomic, strong) AVAudioSourceNode *sourceNode;
14
14
  @property (nonatomic, copy) RenderAudioBlock renderAudio;
15
+ @property (nonatomic, assign) int sampleRate;
15
16
 
16
17
  - (instancetype)initWithRenderAudioBlock:(RenderAudioBlock)renderAudio;
17
18
 
18
- - (int)getSampleRate;
19
+ - (instancetype)initWithRenderAudioBlock:(RenderAudioBlock)renderAudio sampleRate:(int)sampleRate;
19
20
 
20
- - (int)getBufferSizeInFrames;
21
+ - (int)getSampleRate;
21
22
 
22
23
  - (void)start;
23
24
 
@@ -28,7 +28,9 @@
28
28
  @throw error;
29
29
  }
30
30
 
31
- _format = [[AVAudioFormat alloc] initStandardFormatWithSampleRate:[self.audioSession sampleRate] channels:2];
31
+ self.sampleRate = [self.audioSession sampleRate];
32
+
33
+ _format = [[AVAudioFormat alloc] initStandardFormatWithSampleRate:self.sampleRate channels:2];
32
34
 
33
35
  __weak typeof(self) weakSelf = self;
34
36
  _sourceNode = [[AVAudioSourceNode alloc] initWithFormat:self.format
@@ -47,24 +49,56 @@
47
49
  return self;
48
50
  }
49
51
 
50
- - (int)getSampleRate
52
+ - (instancetype)initWithRenderAudioBlock:(RenderAudioBlock)renderAudio sampleRate:(int)sampleRate
51
53
  {
52
- return [self.audioSession sampleRate];
54
+ if (self = [super init]) {
55
+ self.renderAudio = [renderAudio copy];
56
+ self.audioEngine = [[AVAudioEngine alloc] init];
57
+ self.audioEngine.mainMixerNode.outputVolume = 1;
58
+
59
+ self.audioSession = AVAudioSession.sharedInstance;
60
+ NSError *error = nil;
61
+
62
+ // TODO:
63
+ // We will probably want to change it to AVAudioSessionCategoryPlayAndRecord in the future.
64
+ // Eventually we to make this a dynamic setting, if user of the lib wants to use recording features.
65
+ // But setting a recording category might require some setup first, so lets skip it for now :)
66
+ [self.audioSession setCategory:AVAudioSessionCategoryPlayback error:&error];
67
+
68
+ if (error != nil) {
69
+ @throw error;
70
+ }
71
+
72
+ [self.audioSession setActive:true error:&error];
73
+
74
+ if (error != nil) {
75
+ @throw error;
76
+ }
77
+
78
+ self.sampleRate = sampleRate;
79
+
80
+ _format = [[AVAudioFormat alloc] initStandardFormatWithSampleRate:self.sampleRate channels:2];
81
+
82
+ __weak typeof(self) weakSelf = self;
83
+ _sourceNode = [[AVAudioSourceNode alloc] initWithFormat:self.format
84
+ renderBlock:^OSStatus(
85
+ BOOL *isSilence,
86
+ const AudioTimeStamp *timestamp,
87
+ AVAudioFrameCount frameCount,
88
+ AudioBufferList *outputData) {
89
+ return [weakSelf renderCallbackWithIsSilence:isSilence
90
+ timestamp:timestamp
91
+ frameCount:frameCount
92
+ outputData:outputData];
93
+ }];
94
+ }
95
+
96
+ return self;
53
97
  }
54
98
 
55
- - (int)getBufferSizeInFrames
99
+ - (int)getSampleRate
56
100
  {
57
- // Note: might be important in the future.
58
- // For some reason audioSession.IOBufferDuration is always 0.01, which for sample rate of 48k
59
- // gives exactly 480 frames, while at the same time frameCount requested by AVAudioSourceEngine
60
- // might vary f.e. between 555-560.
61
- // preferredIOBufferDuration seems to be double the value (resulting in 960 frames),
62
- // which is safer to base our internal AudioBus sizes.
63
- // Buut no documentation => no guarantee :)
64
- // If something is crackling when it should play silence, start here 📻
65
- double maxBufferDuration =
66
- fmax(0.02, fmax(self.audioSession.IOBufferDuration, self.audioSession.preferredIOBufferDuration));
67
- return (int)(maxBufferDuration * self.audioSession.sampleRate + 1);
101
+ return self.sampleRate;
68
102
  }
69
103
 
70
104
  - (void)start
@@ -22,10 +22,12 @@ class IOSAudioPlayer {
22
22
  public:
23
23
  explicit IOSAudioPlayer(
24
24
  const std::function<void(AudioBus *, int)> &renderAudio);
25
+ IOSAudioPlayer(
26
+ const std::function<void(AudioBus *, int)> &renderAudio,
27
+ int sampleRate);
25
28
  ~IOSAudioPlayer();
26
29
 
27
30
  int getSampleRate() const;
28
- int getBufferSizeInFrames() const;
29
31
 
30
32
  void start();
31
33
  void stop();
@@ -10,18 +10,59 @@ namespace audioapi {
10
10
  IOSAudioPlayer::IOSAudioPlayer(const std::function<void(AudioBus *, int)> &renderAudio)
11
11
  : renderAudio_(renderAudio), audioBus_(0)
12
12
  {
13
+ audioBus_ = new AudioBus(getSampleRate(), RENDER_QUANTUM_SIZE, CHANNEL_COUNT);
14
+
13
15
  RenderAudioBlock renderAudioBlock = ^(AudioBufferList *outputData, int numFrames) {
14
- renderAudio_(audioBus_, numFrames);
16
+ int processedFrames = 0;
17
+
18
+ while (processedFrames < numFrames) {
19
+ int framesToProcess = std::min(numFrames - processedFrames, RENDER_QUANTUM_SIZE);
20
+ renderAudio_(audioBus_, framesToProcess);
21
+
22
+ // TODO: optimize this with SIMD?
23
+ for (int channel = 0; channel < CHANNEL_COUNT; channel += 1) {
24
+ float *outputChannel = (float *)outputData->mBuffers[channel].mData;
25
+ auto *inputChannel = audioBus_->getChannel(channel)->getData();
15
26
 
16
- for (int i = 0; i < outputData->mNumberBuffers; i += 1) {
17
- float *outputBuffer = (float *)outputData->mBuffers[i].mData;
27
+ for (int i = 0; i < framesToProcess; i++) {
28
+ outputChannel[processedFrames + i] = inputChannel[i];
29
+ }
30
+ }
18
31
 
19
- memcpy(outputBuffer, audioBus_->getChannel(i)->getData(), sizeof(float) * numFrames);
32
+ processedFrames += framesToProcess;
20
33
  }
21
34
  };
22
35
 
23
36
  audioPlayer_ = [[AudioPlayer alloc] initWithRenderAudioBlock:renderAudioBlock];
24
- audioBus_ = new AudioBus(getSampleRate(), getBufferSizeInFrames(), CHANNEL_COUNT);
37
+ audioBus_ = new AudioBus([audioPlayer_ getSampleRate], RENDER_QUANTUM_SIZE, CHANNEL_COUNT);
38
+ }
39
+
40
+ IOSAudioPlayer::IOSAudioPlayer(const std::function<void(AudioBus *, int)> &renderAudio, int sampleRate)
41
+ : renderAudio_(renderAudio), audioBus_(0)
42
+ {
43
+ RenderAudioBlock renderAudioBlock = ^(AudioBufferList *outputData, int numFrames) {
44
+ int processedFrames = 0;
45
+
46
+ while (processedFrames < numFrames) {
47
+ int framesToProcess = std::min(numFrames - processedFrames, RENDER_QUANTUM_SIZE);
48
+ renderAudio_(audioBus_, framesToProcess);
49
+
50
+ // TODO: optimize this with SIMD?
51
+ for (int channel = 0; channel < CHANNEL_COUNT; channel += 1) {
52
+ float *outputChannel = (float *)outputData->mBuffers[channel].mData;
53
+ auto *inputChannel = audioBus_->getChannel(channel)->getData();
54
+
55
+ for (int i = 0; i < framesToProcess; i++) {
56
+ outputChannel[processedFrames + i] = inputChannel[i];
57
+ }
58
+ }
59
+
60
+ processedFrames += framesToProcess;
61
+ }
62
+ };
63
+
64
+ audioPlayer_ = [[AudioPlayer alloc] initWithRenderAudioBlock:renderAudioBlock sampleRate:sampleRate];
65
+ audioBus_ = new AudioBus([audioPlayer_ getSampleRate], RENDER_QUANTUM_SIZE, CHANNEL_COUNT);
25
66
  }
26
67
 
27
68
  IOSAudioPlayer::~IOSAudioPlayer()
@@ -50,9 +91,4 @@ int IOSAudioPlayer::getSampleRate() const
50
91
  return [audioPlayer_ getSampleRate];
51
92
  }
52
93
 
53
- int IOSAudioPlayer::getBufferSizeInFrames() const
54
- {
55
- return [audioPlayer_ getBufferSizeInFrames];
56
- }
57
-
58
94
  } // namespace audioapi
@@ -2,8 +2,8 @@
2
2
 
3
3
  import BaseAudioContext from "./BaseAudioContext.js";
4
4
  export default class AudioContext extends BaseAudioContext {
5
- constructor() {
6
- super(global.__AudioAPIInstaller.createAudioContext());
5
+ constructor(sampleRate) {
6
+ super(global.__AudioAPIInstaller.createAudioContext(sampleRate));
7
7
  }
8
8
  close() {
9
9
  this.context.close();
@@ -1 +1 @@
1
- {"version":3,"names":["BaseAudioContext","AudioContext","constructor","global","__AudioAPIInstaller","createAudioContext","close","context"],"sourceRoot":"../../../src","sources":["core/AudioContext.ts"],"mappings":";;AACA,OAAOA,gBAAgB,MAAM,uBAAoB;AAEjD,eAAe,MAAMC,YAAY,SAASD,gBAAgB,CAAC;EACzDE,WAAWA,CAAA,EAAG;IACZ,KAAK,CAACC,MAAM,CAACC,mBAAmB,CAACC,kBAAkB,CAAC,CAAC,CAAC;EACxD;EAEAC,KAAKA,CAAA,EAAS;IACX,IAAI,CAACC,OAAO,CAAmBD,KAAK,CAAC,CAAC;EACzC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["BaseAudioContext","AudioContext","constructor","sampleRate","global","__AudioAPIInstaller","createAudioContext","close","context"],"sourceRoot":"../../../src","sources":["core/AudioContext.ts"],"mappings":";;AACA,OAAOA,gBAAgB,MAAM,uBAAoB;AAEjD,eAAe,MAAMC,YAAY,SAASD,gBAAgB,CAAC;EACzDE,WAAWA,CAACC,UAAmB,EAAE;IAC/B,KAAK,CAACC,MAAM,CAACC,mBAAmB,CAACC,kBAAkB,CAACH,UAAU,CAAC,CAAC;EAClE;EAEAI,KAAKA,CAAA,EAAS;IACX,IAAI,CAACC,OAAO,CAAmBD,KAAK,CAAC,CAAC;EACzC;AACF","ignoreList":[]}
@@ -11,14 +11,14 @@ export default class AudioNode {
11
11
  this.channelCountMode = this.node.channelCountMode;
12
12
  this.channelInterpretation = this.node.channelInterpretation;
13
13
  }
14
- connect(node) {
15
- if (this.context !== node.context) {
14
+ connect(destination) {
15
+ if (this.context !== destination.context) {
16
16
  throw new InvalidAccessError('The AudioNodes are from different BaseAudioContexts');
17
17
  }
18
- this.node.connect(node.node);
18
+ this.node.connect(destination.node);
19
19
  }
20
- disconnect(node) {
21
- this.node.disconnect(node.node);
20
+ disconnect(destination) {
21
+ this.node.disconnect(destination?.node);
22
22
  }
23
23
  }
24
24
  //# sourceMappingURL=AudioNode.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["InvalidAccessError","AudioNode","constructor","context","node","numberOfInputs","numberOfOutputs","channelCount","channelCountMode","channelInterpretation","connect","disconnect"],"sourceRoot":"../../../src","sources":["core/AudioNode.ts"],"mappings":";;AAGA,SAASA,kBAAkB,QAAQ,oBAAW;AAE9C,eAAe,MAAMC,SAAS,CAAC;EAS7BC,WAAWA,CAACC,OAAyB,EAAEC,IAAgB,EAAE;IACvD,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,cAAc,GAAG,IAAI,CAACD,IAAI,CAACC,cAAc;IAC9C,IAAI,CAACC,eAAe,GAAG,IAAI,CAACF,IAAI,CAACE,eAAe;IAChD,IAAI,CAACC,YAAY,GAAG,IAAI,CAACH,IAAI,CAACG,YAAY;IAC1C,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACJ,IAAI,CAACI,gBAAgB;IAClD,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACL,IAAI,CAACK,qBAAqB;EAC9D;EAEOC,OAAOA,CAACN,IAAe,EAAQ;IACpC,IAAI,IAAI,CAACD,OAAO,KAAKC,IAAI,CAACD,OAAO,EAAE;MACjC,MAAM,IAAIH,kBAAkB,CAC1B,qDACF,CAAC;IACH;IAEA,IAAI,CAACI,IAAI,CAACM,OAAO,CAACN,IAAI,CAACA,IAAI,CAAC;EAC9B;EAEOO,UAAUA,CAACP,IAAe,EAAQ;IACvC,IAAI,CAACA,IAAI,CAACO,UAAU,CAACP,IAAI,CAACA,IAAI,CAAC;EACjC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["InvalidAccessError","AudioNode","constructor","context","node","numberOfInputs","numberOfOutputs","channelCount","channelCountMode","channelInterpretation","connect","destination","disconnect"],"sourceRoot":"../../../src","sources":["core/AudioNode.ts"],"mappings":";;AAGA,SAASA,kBAAkB,QAAQ,oBAAW;AAE9C,eAAe,MAAMC,SAAS,CAAC;EAS7BC,WAAWA,CAACC,OAAyB,EAAEC,IAAgB,EAAE;IACvD,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,cAAc,GAAG,IAAI,CAACD,IAAI,CAACC,cAAc;IAC9C,IAAI,CAACC,eAAe,GAAG,IAAI,CAACF,IAAI,CAACE,eAAe;IAChD,IAAI,CAACC,YAAY,GAAG,IAAI,CAACH,IAAI,CAACG,YAAY;IAC1C,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACJ,IAAI,CAACI,gBAAgB;IAClD,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACL,IAAI,CAACK,qBAAqB;EAC9D;EAEOC,OAAOA,CAACC,WAAsB,EAAQ;IAC3C,IAAI,IAAI,CAACR,OAAO,KAAKQ,WAAW,CAACR,OAAO,EAAE;MACxC,MAAM,IAAIH,kBAAkB,CAC1B,qDACF,CAAC;IACH;IAEA,IAAI,CAACI,IAAI,CAACM,OAAO,CAACC,WAAW,CAACP,IAAI,CAAC;EACrC;EAEOQ,UAAUA,CAACD,WAAuB,EAAQ;IAC/C,IAAI,CAACP,IAAI,CAACQ,UAAU,CAACD,WAAW,EAAEP,IAAI,CAAC;EACzC;AACF","ignoreList":[]}
@@ -47,14 +47,18 @@ export class AudioNode {
47
47
  this.channelCountMode = this.node.channelCountMode;
48
48
  this.channelInterpretation = this.node.channelInterpretation;
49
49
  }
50
- connect(node) {
51
- if (this.context !== node.context) {
50
+ connect(destination) {
51
+ if (this.context !== destination.context) {
52
52
  throw new Error('The AudioNodes are from different BaseAudioContexts');
53
53
  }
54
- this.node.connect(node.node);
54
+ this.node.connect(destination.node);
55
55
  }
56
- disconnect(node) {
57
- this.node.disconnect(node.node);
56
+ disconnect(destination) {
57
+ if (destination === undefined) {
58
+ this.node.disconnect();
59
+ return;
60
+ }
61
+ this.node.disconnect(destination.node);
58
62
  }
59
63
  }
60
64
  export class AnalyserNode extends AudioNode {
@@ -236,7 +240,7 @@ export class StereoPannerNode extends AudioNode {
236
240
  }
237
241
  }
238
242
  export class AudioContext {
239
- constructor() {
243
+ constructor(_sampleRate) {
240
244
  this.context = new window.AudioContext();
241
245
  this.sampleRate = this.context.sampleRate;
242
246
  this.destination = new AudioDestinationNode(this, this.context.destination);
@@ -1 +1 @@
1
- {"version":3,"names":["AudioBuffer","constructor","buffer","length","duration","sampleRate","numberOfChannels","getChannelData","channel","Error","Array","from","copyFromChannel","destination","channelNumber","startInChannel","Float32Array","copyToChannel","source","AudioNode","context","node","numberOfInputs","numberOfOutputs","channelCount","channelCountMode","channelInterpretation","connect","disconnect","AnalyserNode","fftSize","frequencyBinCount","minDecibels","maxDecibels","smoothingTimeConstant","getByteFrequencyData","array","Uint8Array","getByteTimeDomainData","getFloatFrequencyData","getFloatTimeDomainData","AudioScheduledSourceNode","hasBeenStarted","start","when","RangeError","stop","AudioBufferSourceNode","detune","AudioParam","playbackRate","loop","value","loopStart","loopEnd","AudioDestinationNode","param","defaultValue","minValue","maxValue","setValueAtTime","startTime","linearRampToValueAtTime","endTime","exponentialRampToValueAtTime","setTargetAtTime","target","timeConstant","setValueCurveAtTime","values","cancelScheduledValues","cancelAndHoldAtTime","cancelTime","BiquadFilterNode","biquadFilter","frequency","Q","gain","type","getFrequencyResponse","frequencyArray","magResponseOutput","phaseResponseOutput","PeriodicWave","periodicWave","OscillatorNode","setPeriodicWave","wave","GainNode","StereoPannerNode","pan","AudioContext","window","currentTime","state","createOscillator","createGain","createStereoPanner","createBiquadFilter","createBufferSource","createBuffer","numOfChannels","createPeriodicWave","real","imag","constraints","createAnalyser","decodeAudioDataSource","arrayBuffer","fetch","then","response","decodeAudioData","close","ContextState","OscillatorType","BiquadFilterType","ChannelCountMode","ChannelInterpretation"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AudioBuffer","constructor","buffer","length","duration","sampleRate","numberOfChannels","getChannelData","channel","Error","Array","from","copyFromChannel","destination","channelNumber","startInChannel","Float32Array","copyToChannel","source","AudioNode","context","node","numberOfInputs","numberOfOutputs","channelCount","channelCountMode","channelInterpretation","connect","disconnect","undefined","AnalyserNode","fftSize","frequencyBinCount","minDecibels","maxDecibels","smoothingTimeConstant","getByteFrequencyData","array","Uint8Array","getByteTimeDomainData","getFloatFrequencyData","getFloatTimeDomainData","AudioScheduledSourceNode","hasBeenStarted","start","when","RangeError","stop","AudioBufferSourceNode","detune","AudioParam","playbackRate","loop","value","loopStart","loopEnd","AudioDestinationNode","param","defaultValue","minValue","maxValue","setValueAtTime","startTime","linearRampToValueAtTime","endTime","exponentialRampToValueAtTime","setTargetAtTime","target","timeConstant","setValueCurveAtTime","values","cancelScheduledValues","cancelAndHoldAtTime","cancelTime","BiquadFilterNode","biquadFilter","frequency","Q","gain","type","getFrequencyResponse","frequencyArray","magResponseOutput","phaseResponseOutput","PeriodicWave","periodicWave","OscillatorNode","setPeriodicWave","wave","GainNode","StereoPannerNode","pan","AudioContext","_sampleRate","window","currentTime","state","createOscillator","createGain","createStereoPanner","createBiquadFilter","createBufferSource","createBuffer","numOfChannels","createPeriodicWave","real","imag","constraints","createAnalyser","decodeAudioDataSource","arrayBuffer","fetch","then","response","decodeAudioData","close","ContextState","OscillatorType","BiquadFilterType","ChannelCountMode","ChannelInterpretation"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import BaseAudioContext from './BaseAudioContext';
2
2
  export default class AudioContext extends BaseAudioContext {
3
- constructor();
3
+ constructor(sampleRate?: number);
4
4
  close(): void;
5
5
  }
6
6
  //# sourceMappingURL=AudioContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/AudioContext.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,gBAAgB;;IAKxD,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"AudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/AudioContext.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,gBAAgB;gBAC5C,UAAU,CAAC,EAAE,MAAM;IAI/B,KAAK,IAAI,IAAI;CAGd"}
@@ -10,7 +10,7 @@ export default class AudioNode {
10
10
  readonly channelInterpretation: ChannelInterpretation;
11
11
  protected readonly node: IAudioNode;
12
12
  constructor(context: BaseAudioContext, node: IAudioNode);
13
- connect(node: AudioNode): void;
14
- disconnect(node: AudioNode): void;
13
+ connect(destination: AudioNode): void;
14
+ disconnect(destination?: AudioNode): void;
15
15
  }
16
16
  //# sourceMappingURL=AudioNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioNode.d.ts","sourceRoot":"","sources":["../../../src/core/AudioNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAGlD,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;IACtD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;gBAExB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU;IAUhD,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAU9B,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;CAGzC"}
1
+ {"version":3,"file":"AudioNode.d.ts","sourceRoot":"","sources":["../../../src/core/AudioNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAGlD,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;IACtD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;gBAExB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU;IAUhD,OAAO,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI;IAUrC,UAAU,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,IAAI;CAGjD"}
@@ -20,8 +20,8 @@ export declare class AudioNode {
20
20
  readonly channelInterpretation: ChannelInterpretation;
21
21
  protected readonly node: globalThis.AudioNode;
22
22
  constructor(context: AudioContext, node: globalThis.AudioNode);
23
- connect(node: AudioNode): void;
24
- disconnect(node: AudioNode): void;
23
+ connect(destination: AudioNode): void;
24
+ disconnect(destination?: AudioNode): void;
25
25
  }
26
26
  export declare class AnalyserNode extends AudioNode {
27
27
  fftSize: number;
@@ -106,7 +106,7 @@ export declare class AudioContext {
106
106
  protected readonly context: globalThis.AudioContext;
107
107
  readonly destination: AudioDestinationNode;
108
108
  readonly sampleRate: number;
109
- constructor();
109
+ constructor(_sampleRate?: number);
110
110
  get currentTime(): number;
111
111
  get state(): ContextState;
112
112
  createOscillator(): OscillatorNode;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export interface IAudioNode {
25
25
  readonly channelCountMode: ChannelCountMode;
26
26
  readonly channelInterpretation: ChannelInterpretation;
27
27
  connect: (node: IAudioNode) => void;
28
- disconnect: (node: IAudioNode) => void;
28
+ disconnect: (node?: IAudioNode) => void;
29
29
  }
30
30
  export interface IGainNode extends IAudioNode {
31
31
  readonly gain: IAudioParam;
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -2,8 +2,8 @@ import { IAudioContext } from '../interfaces';
2
2
  import BaseAudioContext from './BaseAudioContext';
3
3
 
4
4
  export default class AudioContext extends BaseAudioContext {
5
- constructor() {
6
- super(global.__AudioAPIInstaller.createAudioContext());
5
+ constructor(sampleRate?: number) {
6
+ super(global.__AudioAPIInstaller.createAudioContext(sampleRate));
7
7
  }
8
8
 
9
9
  close(): void {
@@ -22,17 +22,17 @@ export default class AudioNode {
22
22
  this.channelInterpretation = this.node.channelInterpretation;
23
23
  }
24
24
 
25
- public connect(node: AudioNode): void {
26
- if (this.context !== node.context) {
25
+ public connect(destination: AudioNode): void {
26
+ if (this.context !== destination.context) {
27
27
  throw new InvalidAccessError(
28
28
  'The AudioNodes are from different BaseAudioContexts'
29
29
  );
30
30
  }
31
31
 
32
- this.node.connect(node.node);
32
+ this.node.connect(destination.node);
33
33
  }
34
34
 
35
- public disconnect(node: AudioNode): void {
36
- this.node.disconnect(node.node);
35
+ public disconnect(destination?: AudioNode): void {
36
+ this.node.disconnect(destination?.node);
37
37
  }
38
38
  }
package/src/index.ts CHANGED
@@ -97,16 +97,21 @@ export class AudioNode {
97
97
  this.channelInterpretation = this.node.channelInterpretation;
98
98
  }
99
99
 
100
- public connect(node: AudioNode): void {
101
- if (this.context !== node.context) {
100
+ public connect(destination: AudioNode): void {
101
+ if (this.context !== destination.context) {
102
102
  throw new Error('The AudioNodes are from different BaseAudioContexts');
103
103
  }
104
104
 
105
- this.node.connect(node.node);
105
+ this.node.connect(destination.node);
106
106
  }
107
107
 
108
- public disconnect(node: AudioNode): void {
109
- this.node.disconnect(node.node);
108
+ public disconnect(destination?: AudioNode): void {
109
+ if (destination === undefined) {
110
+ this.node.disconnect();
111
+ return;
112
+ }
113
+
114
+ this.node.disconnect(destination.node);
110
115
  }
111
116
  }
112
117
 
@@ -415,7 +420,7 @@ export class AudioContext {
415
420
  readonly destination: AudioDestinationNode;
416
421
  readonly sampleRate: number;
417
422
 
418
- constructor() {
423
+ constructor(_sampleRate?: number) {
419
424
  this.context = new window.AudioContext();
420
425
 
421
426
  this.sampleRate = this.context.sampleRate;
package/src/interfaces.ts CHANGED
@@ -44,7 +44,7 @@ export interface IAudioNode {
44
44
  readonly channelInterpretation: ChannelInterpretation;
45
45
 
46
46
  connect: (node: IAudioNode) => void;
47
- disconnect: (node: IAudioNode) => void;
47
+ disconnect: (node?: IAudioNode) => void;
48
48
  }
49
49
 
50
50
  export interface IGainNode extends IAudioNode {
@@ -2,7 +2,7 @@
2
2
  import type { IAudioContext } from '../interfaces';
3
3
 
4
4
  type AudioAPIInstaller = {
5
- createAudioContext: () => IAudioContext;
5
+ createAudioContext: (sampleRate?: number) => IAudioContext;
6
6
  };
7
7
 
8
8
  declare global {