react-native-audio-api 0.4.7 → 0.4.8-rc1

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.
@@ -20,7 +20,7 @@ AudioBus *AudioDecoder::decodeWithFilePath(const std::string &path) const {
20
20
  "AudioDecoder",
21
21
  "Failed to initialize decoder for file: %s",
22
22
  path.c_str());
23
- return new AudioBus(1, 1, 1);
23
+ return nullptr;
24
24
  }
25
25
 
26
26
  ma_uint64 totalFrameCount;
@@ -124,10 +124,17 @@ class AudioBufferSourceNodeHostObject
124
124
  JSI_HOST_FUNCTION(start) {
125
125
  auto when = args[0].getNumber();
126
126
  auto offset = args[1].getNumber();
127
- auto duration = args[2].getNumber();
128
127
 
129
128
  auto audioBufferSourceNode =
130
129
  std::static_pointer_cast<AudioBufferSourceNode>(node_);
130
+
131
+ if (args[2].isUndefined()) {
132
+ audioBufferSourceNode->start(when, offset);
133
+
134
+ return jsi::Value::undefined();
135
+ }
136
+
137
+ auto duration = args[2].getNumber();
131
138
  audioBufferSourceNode->start(when, offset, duration);
132
139
 
133
140
  return jsi::Value::undefined();
@@ -148,6 +148,11 @@ class BaseAudioContextHostObject : public JsiHostObject {
148
148
  auto results = context_->decodeAudioDataSource(sourcePath);
149
149
  auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(results);
150
150
 
151
+ if (!results) {
152
+ promise->reject("Failed to decode audio data source");
153
+ return;
154
+ }
155
+
151
156
  promise->resolve([audioBufferHostObject = std::move(audioBufferHostObject)](jsi::Runtime &runtime) {
152
157
  return jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
153
158
  });
@@ -17,6 +17,7 @@ AudioBufferSourceNode::AudioBufferSourceNode(BaseAudioContext *context)
17
17
  loopEnd_(0),
18
18
  vReadIndex_(0.0) {
19
19
  buffer_ = std::shared_ptr<AudioBuffer>(nullptr);
20
+ alignedBus_ = std::shared_ptr<AudioBus>(nullptr);
20
21
 
21
22
  detuneParam_ = std::make_shared<AudioParam>(0.0, MIN_DETUNE, MAX_DETUNE);
22
23
  playbackRateParam_ = std::make_shared<AudioParam>(
@@ -67,6 +68,7 @@ void AudioBufferSourceNode::setBuffer(
67
68
  if (!buffer) {
68
69
  buffer_ = std::shared_ptr<AudioBuffer>(nullptr);
69
70
  alignedBus_ = std::shared_ptr<AudioBus>(nullptr);
71
+ loopEnd_ = 0;
70
72
  return;
71
73
  }
72
74
 
@@ -78,19 +80,28 @@ void AudioBufferSourceNode::setBuffer(
78
80
 
79
81
  alignedBus_->zero();
80
82
  alignedBus_->sum(buffer_->bus_.get());
83
+
84
+ loopEnd_ = buffer_->getDuration();
81
85
  }
82
86
 
83
87
  void AudioBufferSourceNode::start(double when, double offset, double duration) {
84
88
  AudioScheduledSourceNode::start(when);
85
89
 
90
+ if (!buffer_) {
91
+ return;
92
+ }
93
+
86
94
  offset = std::min(offset, buffer_->getDuration());
95
+
87
96
  if (loop_) {
88
97
  offset = std::min(offset, loopEnd_);
89
98
  }
90
99
 
91
100
  vReadIndex_ = static_cast<double>(buffer_->getSampleRate() * offset);
92
101
 
93
- AudioScheduledSourceNode::stop(when + duration);
102
+ if (duration > 0) {
103
+ AudioScheduledSourceNode::stop(when + duration);
104
+ }
94
105
  }
95
106
 
96
107
  void AudioBufferSourceNode::processNode(
@@ -27,7 +27,7 @@ class AudioBufferSourceNode : public AudioScheduledSourceNode {
27
27
  void setLoopEnd(double loopEnd);
28
28
  void setBuffer(const std::shared_ptr<AudioBuffer> &buffer);
29
29
 
30
- void start(double when, double offset, double duration);
30
+ void start(double when, double offset, double duration = -1);
31
31
 
32
32
  protected:
33
33
  void processNode(AudioBus *processingBus, int framesToProcess) override;
@@ -96,6 +96,11 @@ std::shared_ptr<AnalyserNode> BaseAudioContext::createAnalyser() {
96
96
  std::shared_ptr<AudioBuffer> BaseAudioContext::decodeAudioDataSource(
97
97
  const std::string &path) {
98
98
  auto audioBus = audioDecoder_->decodeWithFilePath(path);
99
+
100
+ if (!audioBus) {
101
+ return nullptr;
102
+ }
103
+
99
104
  return std::make_shared<AudioBuffer>(audioBus);
100
105
  }
101
106
 
@@ -14,7 +14,7 @@ AudioBus *AudioDecoder::decodeWithFilePath(const std::string &path) const
14
14
  ma_result result = ma_decoder_init_file(path.c_str(), &config, &decoder);
15
15
  if (result != MA_SUCCESS) {
16
16
  NSLog(@"Failed to initialize decoder for file: %s", path.c_str());
17
- return new AudioBus(1, 1, 1);
17
+ return nullptr;
18
18
  }
19
19
 
20
20
  ma_uint64 totalFrameCount;
@@ -56,11 +56,7 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
56
56
  throw new InvalidStateError('Cannot call start more than once');
57
57
  }
58
58
  this.hasBeenStarted = true;
59
- if (duration) {
60
- this.node.start(when, offset, duration);
61
- return;
62
- }
63
- this.node.start(when, offset, this.buffer.duration);
59
+ this.node.start(when, offset, duration);
64
60
  }
65
61
  }
66
62
  //# sourceMappingURL=AudioBufferSourceNode.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AudioScheduledSourceNode","AudioBuffer","AudioParam","InvalidStateError","RangeError","AudioBufferSourceNode","constructor","context","node","detune","playbackRate","buffer","loop","value","loopStart","loopEnd","start","when","offset","duration","hasBeenStarted"],"sourceRoot":"../../../src","sources":["core/AudioBufferSourceNode.ts"],"mappings":";;AACA,OAAOA,wBAAwB,MAAM,+BAA4B;AAEjE,OAAOC,WAAW,MAAM,kBAAe;AACvC,OAAOC,UAAU,MAAM,iBAAc;AACrC,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,oBAAW;AAEzD,eAAe,MAAMC,qBAAqB,SAASL,wBAAwB,CAAC;EAI1EM,WAAWA,CAACC,OAAyB,EAAEC,IAA4B,EAAE;IACnE,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IAEpB,IAAI,CAACC,MAAM,GAAG,IAAIP,UAAU,CAACM,IAAI,CAACC,MAAM,CAAC;IACzC,IAAI,CAACC,YAAY,GAAG,IAAIR,UAAU,CAACM,IAAI,CAACE,YAAY,CAAC;EACvD;EAEA,IAAWC,MAAMA,CAAA,EAAuB;IACtC,MAAMA,MAAM,GAAI,IAAI,CAACH,IAAI,CAA4BG,MAAM;IAC3D,IAAI,CAACA,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,IAAIV,WAAW,CAACU,MAAM,CAAC;EAChC;EAEA,IAAWA,MAAMA,CAACA,MAA0B,EAAE;IAC5C,IAAI,CAACA,MAAM,EAAE;MACV,IAAI,CAACH,IAAI,CAA4BG,MAAM,GAAG,IAAI;MACnD;IACF;IAEC,IAAI,CAACH,IAAI,CAA4BG,MAAM,GAAGA,MAAM,CAACA,MAAM;EAC9D;EAEA,IAAWC,IAAIA,CAAA,EAAY;IACzB,OAAQ,IAAI,CAACJ,IAAI,CAA4BI,IAAI;EACnD;EAEA,IAAWA,IAAIA,CAACC,KAAc,EAAE;IAC7B,IAAI,CAACL,IAAI,CAA4BI,IAAI,GAAGC,KAAK;EACpD;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC7B,OAAQ,IAAI,CAACN,IAAI,CAA4BM,SAAS;EACxD;EAEA,IAAWA,SAASA,CAACD,KAAa,EAAE;IACjC,IAAI,CAACL,IAAI,CAA4BM,SAAS,GAAGD,KAAK;EACzD;EAEA,IAAWE,OAAOA,CAAA,EAAW;IAC3B,OAAQ,IAAI,CAACP,IAAI,CAA4BO,OAAO;EACtD;EAEA,IAAWA,OAAOA,CAACF,KAAa,EAAE;IAC/B,IAAI,CAACL,IAAI,CAA4BO,OAAO,GAAGF,KAAK;EACvD;EAEOG,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAEC,MAAc,GAAG,CAAC,EAAEC,QAAiB,EAAQ;IAC1E,IAAIF,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIb,UAAU,CAClB,8CAA8Ca,IAAI,EACpD,CAAC;IACH;IAEA,IAAIC,MAAM,GAAG,CAAC,EAAE;MACd,MAAM,IAAId,UAAU,CAClB,gDAAgDa,IAAI,EACtD,CAAC;IACH;IAEA,IAAIE,QAAQ,IAAIA,QAAQ,GAAG,CAAC,EAAE;MAC5B,MAAM,IAAIf,UAAU,CAClB,kDAAkDa,IAAI,EACxD,CAAC;IACH;IAEA,IAAI,IAAI,CAACG,cAAc,EAAE;MACvB,MAAM,IAAIjB,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACiB,cAAc,GAAG,IAAI;IAE1B,IAAID,QAAQ,EAAE;MACX,IAAI,CAACX,IAAI,CAA4BQ,KAAK,CAACC,IAAI,EAAEC,MAAM,EAAEC,QAAQ,CAAC;MACnE;IACF;IAEC,IAAI,CAACX,IAAI,CAA4BQ,KAAK,CACzCC,IAAI,EACJC,MAAM,EACN,IAAI,CAACP,MAAM,CAAEQ,QACf,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"names":["AudioScheduledSourceNode","AudioBuffer","AudioParam","InvalidStateError","RangeError","AudioBufferSourceNode","constructor","context","node","detune","playbackRate","buffer","loop","value","loopStart","loopEnd","start","when","offset","duration","hasBeenStarted"],"sourceRoot":"../../../src","sources":["core/AudioBufferSourceNode.ts"],"mappings":";;AACA,OAAOA,wBAAwB,MAAM,+BAA4B;AAEjE,OAAOC,WAAW,MAAM,kBAAe;AACvC,OAAOC,UAAU,MAAM,iBAAc;AACrC,SAASC,iBAAiB,EAAEC,UAAU,QAAQ,oBAAW;AAEzD,eAAe,MAAMC,qBAAqB,SAASL,wBAAwB,CAAC;EAI1EM,WAAWA,CAACC,OAAyB,EAAEC,IAA4B,EAAE;IACnE,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IAEpB,IAAI,CAACC,MAAM,GAAG,IAAIP,UAAU,CAACM,IAAI,CAACC,MAAM,CAAC;IACzC,IAAI,CAACC,YAAY,GAAG,IAAIR,UAAU,CAACM,IAAI,CAACE,YAAY,CAAC;EACvD;EAEA,IAAWC,MAAMA,CAAA,EAAuB;IACtC,MAAMA,MAAM,GAAI,IAAI,CAACH,IAAI,CAA4BG,MAAM;IAC3D,IAAI,CAACA,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,IAAIV,WAAW,CAACU,MAAM,CAAC;EAChC;EAEA,IAAWA,MAAMA,CAACA,MAA0B,EAAE;IAC5C,IAAI,CAACA,MAAM,EAAE;MACV,IAAI,CAACH,IAAI,CAA4BG,MAAM,GAAG,IAAI;MACnD;IACF;IAEC,IAAI,CAACH,IAAI,CAA4BG,MAAM,GAAGA,MAAM,CAACA,MAAM;EAC9D;EAEA,IAAWC,IAAIA,CAAA,EAAY;IACzB,OAAQ,IAAI,CAACJ,IAAI,CAA4BI,IAAI;EACnD;EAEA,IAAWA,IAAIA,CAACC,KAAc,EAAE;IAC7B,IAAI,CAACL,IAAI,CAA4BI,IAAI,GAAGC,KAAK;EACpD;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC7B,OAAQ,IAAI,CAACN,IAAI,CAA4BM,SAAS;EACxD;EAEA,IAAWA,SAASA,CAACD,KAAa,EAAE;IACjC,IAAI,CAACL,IAAI,CAA4BM,SAAS,GAAGD,KAAK;EACzD;EAEA,IAAWE,OAAOA,CAAA,EAAW;IAC3B,OAAQ,IAAI,CAACP,IAAI,CAA4BO,OAAO;EACtD;EAEA,IAAWA,OAAOA,CAACF,KAAa,EAAE;IAC/B,IAAI,CAACL,IAAI,CAA4BO,OAAO,GAAGF,KAAK;EACvD;EAEOG,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAEC,MAAc,GAAG,CAAC,EAAEC,QAAiB,EAAQ;IAC1E,IAAIF,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIb,UAAU,CAClB,8CAA8Ca,IAAI,EACpD,CAAC;IACH;IAEA,IAAIC,MAAM,GAAG,CAAC,EAAE;MACd,MAAM,IAAId,UAAU,CAClB,gDAAgDa,IAAI,EACtD,CAAC;IACH;IAEA,IAAIE,QAAQ,IAAIA,QAAQ,GAAG,CAAC,EAAE;MAC5B,MAAM,IAAIf,UAAU,CAClB,kDAAkDa,IAAI,EACxD,CAAC;IACH;IAEA,IAAI,IAAI,CAACG,cAAc,EAAE;MACvB,MAAM,IAAIjB,iBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACiB,cAAc,GAAG,IAAI;IACzB,IAAI,CAACZ,IAAI,CAA4BQ,KAAK,CAACC,IAAI,EAAEC,MAAM,EAAEC,QAAQ,CAAC;EACrE;AACF","ignoreList":[]}
@@ -38,8 +38,8 @@ export default class BaseAudioContext {
38
38
  return new AudioBufferSourceNode(this, this.context.createBufferSource());
39
39
  }
40
40
  createBuffer(numOfChannels, length, sampleRate) {
41
- if (numOfChannels < 1 || numOfChannels > 3) {
42
- throw new RangeError(`The number of channels provided (${numOfChannels}) is outside the range [1, 2]`);
41
+ if (numOfChannels < 1 || numOfChannels >= 32) {
42
+ throw new RangeError(`The number of channels provided (${numOfChannels}) is outside the range [1, 32]`);
43
43
  }
44
44
  if (length <= 0) {
45
45
  throw new RangeError(`The number of frames provided (${length}) is less than or equal to the minimum bound (0)`);
@@ -64,8 +64,14 @@ export default class BaseAudioContext {
64
64
  if (sourcePath.startsWith('file://')) {
65
65
  sourcePath = sourcePath.replace('file://', '');
66
66
  }
67
- const buffer = await this.context.decodeAudioDataSource(sourcePath);
68
- return new AudioBuffer(buffer);
67
+ try {
68
+ const buffer = await this.context.decodeAudioDataSource(sourcePath);
69
+ return new AudioBuffer(buffer);
70
+ } catch (error) {
71
+ // Handle error gracefully, for example log it or throw it further with a custom message
72
+ console.error('Error decoding audio data source:', error);
73
+ throw new Error(`Failed to decode audio data from source: ${sourcePath}.`);
74
+ }
69
75
  }
70
76
  }
71
77
  //# sourceMappingURL=BaseAudioContext.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AudioDestinationNode","OscillatorNode","GainNode","StereoPannerNode","BiquadFilterNode","AudioBufferSourceNode","AudioBuffer","PeriodicWave","AnalyserNode","InvalidAccessError","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","createOscillator","createGain","createStereoPanner","createBiquadFilter","createBufferSource","createBuffer","numOfChannels","length","RangeError","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser","decodeAudioDataSource","sourcePath","startsWith","replace","buffer"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AudioDestinationNode","OscillatorNode","GainNode","StereoPannerNode","BiquadFilterNode","AudioBufferSourceNode","AudioBuffer","PeriodicWave","AnalyserNode","InvalidAccessError","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","createOscillator","createGain","createStereoPanner","createBiquadFilter","createBufferSource","createBuffer","numOfChannels","length","RangeError","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser","decodeAudioDataSource","sourcePath","startsWith","replace","buffer","error","console","Error"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioBufferSourceNode.d.ts","sourceRoot":"","sources":["../../../src/core/AudioBufferSourceNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,UAAU,MAAM,cAAc,CAAC;AAGtC,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,wBAAwB;IACzE,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB;IAOnE,IAAW,MAAM,IAAI,WAAW,GAAG,IAAI,CAMtC;IAED,IAAW,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EAO3C;IAED,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,OAAO,EAE7B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAEjC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAE/B;IAEM,KAAK,CAAC,IAAI,GAAE,MAAU,EAAE,MAAM,GAAE,MAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CAoC5E"}
1
+ {"version":3,"file":"AudioBufferSourceNode.d.ts","sourceRoot":"","sources":["../../../src/core/AudioBufferSourceNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,UAAU,MAAM,cAAc,CAAC;AAGtC,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,wBAAwB;IACzE,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB;IAOnE,IAAW,MAAM,IAAI,WAAW,GAAG,IAAI,CAMtC;IAED,IAAW,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EAO3C;IAED,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,OAAO,EAE7B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAEjC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAE/B;IAEM,KAAK,CAAC,IAAI,GAAE,MAAU,EAAE,MAAM,GAAE,MAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;CA0B5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/BaseAudioContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBAElC,OAAO,EAAE,iBAAiB;IAMtC,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,qBAAqB;IAI3C,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAcf,cAAc,IAAI,YAAY;IAIxB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAUtE"}
1
+ {"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/BaseAudioContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBAElC,OAAO,EAAE,iBAAiB;IAMtC,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,qBAAqB;IAI3C,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAcf,cAAc,IAAI,YAAY;IAIxB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAiBtE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-audio-api",
3
- "version": "0.4.7",
3
+ "version": "0.4.8-rc1",
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",
@@ -81,16 +81,6 @@ export default class AudioBufferSourceNode extends AudioScheduledSourceNode {
81
81
  }
82
82
 
83
83
  this.hasBeenStarted = true;
84
-
85
- if (duration) {
86
- (this.node as IAudioBufferSourceNode).start(when, offset, duration);
87
- return;
88
- }
89
-
90
- (this.node as IAudioBufferSourceNode).start(
91
- when,
92
- offset,
93
- this.buffer!.duration
94
- );
84
+ (this.node as IAudioBufferSourceNode).start(when, offset, duration);
95
85
  }
96
86
  }
@@ -55,9 +55,9 @@ export default class BaseAudioContext {
55
55
  length: number,
56
56
  sampleRate: number
57
57
  ): AudioBuffer {
58
- if (numOfChannels < 1 || numOfChannels > 3) {
58
+ if (numOfChannels < 1 || numOfChannels >= 32) {
59
59
  throw new RangeError(
60
- `The number of channels provided (${numOfChannels}) is outside the range [1, 2]`
60
+ `The number of channels provided (${numOfChannels}) is outside the range [1, 32]`
61
61
  );
62
62
  }
63
63
 
@@ -106,8 +106,15 @@ export default class BaseAudioContext {
106
106
  sourcePath = sourcePath.replace('file://', '');
107
107
  }
108
108
 
109
- const buffer = await this.context.decodeAudioDataSource(sourcePath);
110
-
111
- return new AudioBuffer(buffer);
109
+ try {
110
+ const buffer = await this.context.decodeAudioDataSource(sourcePath);
111
+ return new AudioBuffer(buffer);
112
+ } catch (error) {
113
+ // Handle error gracefully, for example log it or throw it further with a custom message
114
+ console.error('Error decoding audio data source:', error);
115
+ throw new Error(
116
+ `Failed to decode audio data from source: ${sourcePath}.`
117
+ );
118
+ }
112
119
  }
113
120
  }