react-native-audio-api 0.9.0 → 0.10.0-nightly-971a6b4-20251009

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 (60) hide show
  1. package/android/src/main/cpp/audioapi/android/core/{AudioDecoder.cpp → utils/AudioDecoder.cpp} +79 -75
  2. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +124 -43
  3. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +1 -101
  4. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +0 -3
  5. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +133 -0
  6. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.h +28 -0
  7. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +58 -0
  8. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.h +26 -0
  9. package/common/cpp/audioapi/core/AudioContext.cpp +0 -2
  10. package/common/cpp/audioapi/core/BaseAudioContext.cpp +0 -35
  11. package/common/cpp/audioapi/core/BaseAudioContext.h +4 -12
  12. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +0 -2
  13. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +0 -4
  14. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +0 -1
  15. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +0 -2
  16. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +0 -4
  17. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +0 -1
  18. package/common/cpp/audioapi/core/types/AudioFormat.h +16 -0
  19. package/common/cpp/audioapi/core/utils/AudioDecoder.h +36 -91
  20. package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +75 -0
  21. package/common/cpp/audioapi/core/utils/AudioStretcher.h +30 -0
  22. package/common/cpp/audioapi/core/utils/Constants.h +4 -0
  23. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +5 -1
  24. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +241 -282
  25. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.h +57 -19
  26. package/common/cpp/test/CMakeLists.txt +1 -1
  27. package/ios/audioapi/ios/core/utils/AudioDecoder.mm +160 -0
  28. package/lib/commonjs/api.js +21 -1
  29. package/lib/commonjs/api.js.map +1 -1
  30. package/lib/commonjs/core/AudioDecoder.js +48 -0
  31. package/lib/commonjs/core/AudioDecoder.js.map +1 -0
  32. package/lib/commonjs/core/AudioStretcher.js +31 -0
  33. package/lib/commonjs/core/AudioStretcher.js.map +1 -0
  34. package/lib/commonjs/core/BaseAudioContext.js +11 -18
  35. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  36. package/lib/module/api.js +3 -1
  37. package/lib/module/api.js.map +1 -1
  38. package/lib/module/core/AudioDecoder.js +42 -0
  39. package/lib/module/core/AudioDecoder.js.map +1 -0
  40. package/lib/module/core/AudioStretcher.js +26 -0
  41. package/lib/module/core/AudioStretcher.js.map +1 -0
  42. package/lib/module/core/BaseAudioContext.js +11 -18
  43. package/lib/module/core/BaseAudioContext.js.map +1 -1
  44. package/lib/typescript/api.d.ts +5 -1
  45. package/lib/typescript/api.d.ts.map +1 -1
  46. package/lib/typescript/core/AudioDecoder.d.ts +4 -0
  47. package/lib/typescript/core/AudioDecoder.d.ts.map +1 -0
  48. package/lib/typescript/core/AudioStretcher.d.ts +3 -0
  49. package/lib/typescript/core/AudioStretcher.d.ts.map +1 -0
  50. package/lib/typescript/core/BaseAudioContext.d.ts +3 -6
  51. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  52. package/lib/typescript/interfaces.d.ts +10 -3
  53. package/lib/typescript/interfaces.d.ts.map +1 -1
  54. package/package.json +1 -1
  55. package/src/api.ts +10 -0
  56. package/src/core/AudioDecoder.ts +78 -0
  57. package/src/core/AudioStretcher.ts +43 -0
  58. package/src/core/BaseAudioContext.ts +26 -29
  59. package/src/interfaces.ts +26 -6
  60. package/ios/audioapi/ios/core/AudioDecoder.mm +0 -156
@@ -1,11 +1,11 @@
1
1
  /*
2
- * This file dynamically links to the FFmpeg library, which is licensed under the
3
- * GNU Lesser General Public License (LGPL) version 2.1 or later.
2
+ * This file dynamically links to the FFmpeg library, which is licensed under
3
+ * the GNU Lesser General Public License (LGPL) version 2.1 or later.
4
4
  *
5
- * Our own code in this file is licensed under the MIT License and dynamic linking
6
- * allows you to use this code without your entire project being subject to the
7
- * terms of the LGPL. However, note that if you link statically to FFmpeg, you must
8
- * comply with the terms of the LGPL for FFmpeg itself.
5
+ * Our own code in this file is licensed under the MIT License and dynamic
6
+ * linking allows you to use this code without your entire project being subject
7
+ * to the terms of the LGPL. However, note that if you link statically to
8
+ * FFmpeg, you must comply with the terms of the LGPL for FFmpeg itself.
9
9
  */
10
10
 
11
11
  #include <audioapi/utils/AudioBus.h>
@@ -14,24 +14,62 @@
14
14
  #include <vector>
15
15
 
16
16
  extern "C" {
17
- #include <libavcodec/avcodec.h>
18
- #include <libavformat/avformat.h>
19
- #include <libavutil/opt.h>
20
- #include <libswresample/swresample.h>
17
+ #include <libavcodec/avcodec.h>
18
+ #include <libavformat/avformat.h>
19
+ #include <libavutil/opt.h>
20
+ #include <libswresample/swresample.h>
21
21
  }
22
+ class AudioBuffer;
22
23
 
23
- namespace audioapi::ffmpegdecoding {
24
+ namespace audioapi::ffmpegdecoder {
24
25
  // Custom IO context for reading from memory
25
26
  struct MemoryIOContext {
26
- const uint8_t *data;
27
- size_t size;
28
- size_t pos;
29
- };
27
+ const uint8_t *data;
28
+ size_t size;
29
+ size_t pos;
30
+ };
31
+
32
+ struct AudioStreamContext {
33
+ AVFormatContext *fmt_ctx = nullptr;
34
+ AVCodecContext *codec_ctx = nullptr;
35
+ int audio_stream_index = -1;
36
+ };
30
37
 
31
38
  int read_packet(void *opaque, uint8_t *buf, int buf_size);
32
39
  int64_t seek_packet(void *opaque, int64_t offset, int whence);
33
- std::vector<int16_t> readAllPcmFrames(AVFormatContext *fmt_ctx, AVCodecContext *codec_ctx, int out_sample_rate, int audio_stream_index, int channels, size_t &framesRead);
34
- std::vector<int16_t> decodeWithMemoryBlock(const void *data, size_t size, const int channel_count, int sample_rate);
35
- std::vector<int16_t> decodeWithFilePath(const std::string &path, const int channel_count, int sample_rate);
40
+ inline int findAudioStreamIndex(AVFormatContext *fmt_ctx);
41
+ std::vector<float> readAllPcmFrames(
42
+ AVFormatContext *fmt_ctx,
43
+ AVCodecContext *codec_ctx,
44
+ int out_sample_rate,
45
+ int output_channel_count,
46
+ int audio_stream_index,
47
+ size_t &framesRead);
48
+
49
+ void convertFrameToBuffer(
50
+ SwrContext *swr,
51
+ AVFrame *frame,
52
+ int output_channel_count,
53
+ std::vector<float> &buffer,
54
+ size_t &framesRead,
55
+ uint8_t **&resampled_data,
56
+ int &max_resampled_samples);
57
+ bool setupDecoderContext(
58
+ AVFormatContext *fmt_ctx,
59
+ int &audio_stream_index,
60
+ std::unique_ptr<AVCodecContext, decltype(&avcodec_free_context)>
61
+ &codec_ctx);
62
+ std::shared_ptr<AudioBuffer> decodeAudioFrames(
63
+ AVFormatContext *fmt_ctx,
64
+ AVCodecContext *codec_ctx,
65
+ int audio_stream_index,
66
+ int sample_rate);
67
+
68
+ std::shared_ptr<AudioBuffer>
69
+ decodeWithMemoryBlock(const void *data, size_t size, int sample_rate);
70
+
71
+ std::shared_ptr<AudioBuffer> decodeWithFilePath(
72
+ const std::string &path,
73
+ int sample_rate);
36
74
 
37
- } // namespace audioapi::ffmpegdecoder
75
+ } // namespace audioapi::ffmpegdecoder
@@ -21,7 +21,7 @@ enable_testing()
21
21
  file(GLOB_RECURSE RNAUDIOAPI_SRC
22
22
  CONFIGURE_DEPENDS
23
23
  "${ROOT}/node_modules/react-native-audio-api/common/cpp/audioapi/*.cpp"
24
- "${ROOT}/node_modules/react-native-audio-api/android/src/main/cpp/audioapi/android/core/AudioDecoder.cpp"
24
+ "${ROOT}/node_modules/react-native-audio-api/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp"
25
25
  )
26
26
 
27
27
  # exclude HostObjects from tests
@@ -0,0 +1,160 @@
1
+ #define MINIAUDIO_IMPLEMENTATION
2
+ #import <audioapi/libs/miniaudio/miniaudio.h>
3
+
4
+ #include <audioapi/libs/miniaudio/decoders/libopus/miniaudio_libopus.h>
5
+ #include <audioapi/libs/miniaudio/decoders/libvorbis/miniaudio_libvorbis.h>
6
+
7
+ #include <audioapi/core/sources/AudioBuffer.h>
8
+ #include <audioapi/core/utils/AudioDecoder.h>
9
+ #include <audioapi/dsp/VectorMath.h>
10
+ #include <audioapi/libs/audio-stretch/stretch.h>
11
+ #include <audioapi/libs/base64/base64.h>
12
+ #include <audioapi/libs/ffmpeg/FFmpegDecoding.h>
13
+ #include <audioapi/utils/AudioArray.h>
14
+ #include <audioapi/utils/AudioBus.h>
15
+
16
+ namespace audioapi {
17
+
18
+ // Decoding audio in fixed-size chunks because total frame count can't be
19
+ // determined in advance. Note: ma_decoder_get_length_in_pcm_frames() always
20
+ // returns 0 for Vorbis decoders.
21
+ std::vector<float> AudioDecoder::readAllPcmFrames(ma_decoder &decoder, int outputChannels)
22
+ {
23
+ std::vector<float> buffer;
24
+ std::vector<float> temp(CHUNK_SIZE * outputChannels);
25
+ ma_uint64 outFramesRead = 0;
26
+
27
+ while (true) {
28
+ ma_uint64 tempFramesDecoded = 0;
29
+ ma_decoder_read_pcm_frames(&decoder, temp.data(), CHUNK_SIZE, &tempFramesDecoded);
30
+ if (tempFramesDecoded == 0) {
31
+ break;
32
+ }
33
+
34
+ buffer.insert(buffer.end(), temp.data(), temp.data() + tempFramesDecoded * outputChannels);
35
+ outFramesRead += tempFramesDecoded;
36
+ }
37
+
38
+ if (outFramesRead == 0) {
39
+ NSLog(@"Failed to decode");
40
+ }
41
+ return buffer;
42
+ }
43
+
44
+ std::shared_ptr<AudioBuffer> AudioDecoder::makeAudioBufferFromFloatBuffer(
45
+ const std::vector<float> &buffer,
46
+ float outputSampleRate,
47
+ int outputChannels)
48
+ {
49
+ if (buffer.empty()) {
50
+ return nullptr;
51
+ }
52
+
53
+ auto outputFrames = buffer.size() / outputChannels;
54
+ auto audioBus = std::make_shared<AudioBus>(outputFrames, outputChannels, outputSampleRate);
55
+
56
+ for (int ch = 0; ch < outputChannels; ++ch) {
57
+ auto channelData = audioBus->getChannel(ch)->getData();
58
+ for (int i = 0; i < outputFrames; ++i) {
59
+ channelData[i] = buffer[i * outputChannels + ch];
60
+ }
61
+ }
62
+ return std::make_shared<AudioBuffer>(audioBus);
63
+ }
64
+
65
+ std::shared_ptr<AudioBuffer> AudioDecoder::decodeWithFilePath(const std::string &path, float sampleRate)
66
+ {
67
+ if (AudioDecoder::pathHasExtension(path, {".mp4", ".m4a", ".aac"})) {
68
+ auto buffer = ffmpegdecoder::decodeWithFilePath(path, static_cast<int>(sampleRate));
69
+ if (buffer == nullptr) {
70
+ NSLog(@"Failed to decode with FFmpeg: %s", path.c_str());
71
+ return nullptr;
72
+ }
73
+ return buffer;
74
+ }
75
+ ma_decoder decoder;
76
+ ma_decoder_config config = ma_decoder_config_init(ma_format_f32, 0, static_cast<int>(sampleRate));
77
+ ma_decoding_backend_vtable *customBackends[] = {ma_decoding_backend_libvorbis, ma_decoding_backend_libopus};
78
+
79
+ config.ppCustomBackendVTables = customBackends;
80
+ config.customBackendCount = sizeof(customBackends) / sizeof(customBackends[0]);
81
+
82
+ if (ma_decoder_init_file(path.c_str(), &config, &decoder) != MA_SUCCESS) {
83
+ NSLog(@"Failed to initialize decoder for file: %s", path.c_str());
84
+ ma_decoder_uninit(&decoder);
85
+ return nullptr;
86
+ }
87
+
88
+ auto outputSampleRate = static_cast<float>(decoder.outputSampleRate);
89
+ auto outputChannels = static_cast<int>(decoder.outputChannels);
90
+
91
+ std::vector<float> buffer = readAllPcmFrames(decoder, outputChannels);
92
+ ma_decoder_uninit(&decoder);
93
+ return makeAudioBufferFromFloatBuffer(buffer, outputSampleRate, outputChannels);
94
+ }
95
+
96
+ std::shared_ptr<AudioBuffer> AudioDecoder::decodeWithMemoryBlock(const void *data, size_t size, float sampleRate)
97
+ {
98
+ const AudioFormat format = AudioDecoder::detectAudioFormat(data, size);
99
+ if (format == AudioFormat::MP4 || format == AudioFormat::M4A || format == AudioFormat::AAC) {
100
+ auto buffer = ffmpegdecoder::decodeWithMemoryBlock(data, size, static_cast<int>(sampleRate));
101
+ if (buffer == nullptr) {
102
+ NSLog(@"Failed to decode with FFmpeg");
103
+ return nullptr;
104
+ }
105
+ return buffer;
106
+ }
107
+ ma_decoder decoder;
108
+ ma_decoder_config config = ma_decoder_config_init(ma_format_f32, 0, static_cast<int>(sampleRate));
109
+
110
+ ma_decoding_backend_vtable *customBackends[] = {ma_decoding_backend_libvorbis, ma_decoding_backend_libopus};
111
+
112
+ config.ppCustomBackendVTables = customBackends;
113
+ config.customBackendCount = sizeof(customBackends) / sizeof(customBackends[0]);
114
+
115
+ if (ma_decoder_init_memory(data, size, &config, &decoder) != MA_SUCCESS) {
116
+ NSLog(@"Failed to initialize decoder for memory block");
117
+ ma_decoder_uninit(&decoder);
118
+ return nullptr;
119
+ }
120
+
121
+ auto outputSampleRate = static_cast<float>(decoder.outputSampleRate);
122
+ auto outputChannels = static_cast<int>(decoder.outputChannels);
123
+
124
+ std::vector<float> buffer = readAllPcmFrames(decoder, outputChannels);
125
+ ma_decoder_uninit(&decoder);
126
+ return makeAudioBufferFromFloatBuffer(buffer, outputSampleRate, outputChannels);
127
+ }
128
+
129
+ std::shared_ptr<AudioBuffer> AudioDecoder::decodeWithPCMInBase64(
130
+ const std::string &data,
131
+ float inputSampleRate,
132
+ int inputChannelCount,
133
+ bool interleaved)
134
+ {
135
+ auto decodedData = base64_decode(data, false);
136
+ const auto uint8Data = reinterpret_cast<uint8_t *>(decodedData.data());
137
+ size_t numFramesDecoded = decodedData.size() / (inputChannelCount * sizeof(int16_t));
138
+
139
+ auto audioBus = std::make_shared<AudioBus>(numFramesDecoded, inputChannelCount, inputSampleRate);
140
+
141
+ for (int ch = 0; ch < inputChannelCount; ++ch) {
142
+ auto channelData = audioBus->getChannel(ch)->getData();
143
+
144
+ for (size_t i = 0; i < numFramesDecoded; ++i) {
145
+ size_t offset;
146
+ if (interleaved) {
147
+ // Ch1, Ch2, Ch1, Ch2, ...
148
+ offset = (i * inputChannelCount + ch) * sizeof(int16_t);
149
+ } else {
150
+ // Ch1, Ch1, Ch1, ..., Ch2, Ch2, Ch2, ...
151
+ offset = (ch * numFramesDecoded + i) * sizeof(int16_t);
152
+ }
153
+
154
+ channelData[i] = uint8ToFloat(uint8Data[offset], uint8Data[offset + 1]);
155
+ }
156
+ }
157
+ return std::make_shared<AudioBuffer>(audioBus);
158
+ }
159
+
160
+ } // namespace audioapi
@@ -219,6 +219,24 @@ Object.defineProperty(exports, "WorkletSourceNode", {
219
219
  return _WorkletSourceNode.default;
220
220
  }
221
221
  });
222
+ Object.defineProperty(exports, "changePlaybackSpeed", {
223
+ enumerable: true,
224
+ get: function () {
225
+ return _AudioStretcher.default;
226
+ }
227
+ });
228
+ Object.defineProperty(exports, "decodeAudioData", {
229
+ enumerable: true,
230
+ get: function () {
231
+ return _AudioDecoder.decodeAudioData;
232
+ }
233
+ });
234
+ Object.defineProperty(exports, "decodePCMInBase64", {
235
+ enumerable: true,
236
+ get: function () {
237
+ return _AudioDecoder.decodePCMInBase64;
238
+ }
239
+ });
222
240
  Object.defineProperty(exports, "useSystemVolume", {
223
241
  enumerable: true,
224
242
  get: function () {
@@ -250,6 +268,8 @@ var _StreamerNode = _interopRequireDefault(require("./core/StreamerNode"));
250
268
  var _ConstantSourceNode = _interopRequireDefault(require("./core/ConstantSourceNode"));
251
269
  var _system = _interopRequireDefault(require("./system"));
252
270
  var _useSystemVolume = _interopRequireDefault(require("./hooks/useSystemVolume"));
271
+ var _AudioDecoder = require("./core/AudioDecoder");
272
+ var _AudioStretcher = _interopRequireDefault(require("./core/AudioStretcher"));
253
273
  var _types = require("./types");
254
274
  var _errors = require("./errors");
255
275
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -257,7 +277,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
257
277
 
258
278
  /* eslint-disable no-var */
259
279
 
260
- if (global.createAudioContext == null || global.createOfflineAudioContext == null || global.createAudioRecorder == null || global.AudioEventEmitter == null) {
280
+ if (global.createAudioContext == null || global.createOfflineAudioContext == null || global.createAudioRecorder == null || global.createAudioDecoder == null || global.createAudioStretcher == null || global.AudioEventEmitter == null) {
261
281
  if (!_specs.NativeAudioAPIModule) {
262
282
  throw new Error(`Failed to install react-native-audio-api: The native module could not be found.`);
263
283
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_specs","require","_WorkletNode","_interopRequireDefault","_WorkletSourceNode","_WorkletProcessingNode","_RecorderAdapterNode","_AudioBuffer","_AudioBufferSourceNode","_AudioBufferQueueSourceNode","_AudioContext","_OfflineAudioContext","_AudioDestinationNode","_AudioNode","_AnalyserNode","_AudioParam","_AudioScheduledSourceNode","_BaseAudioContext","_BiquadFilterNode","_GainNode","_OscillatorNode","_StereoPannerNode","_AudioRecorder","_StreamerNode","_ConstantSourceNode","_system","_useSystemVolume","_types","_errors","e","__esModule","default","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","AudioEventEmitter","NativeAudioAPIModule","Error","install"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AA8CA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,sBAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,oBAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,YAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,sBAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,2BAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,aAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,oBAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,qBAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,UAAA,GAAAV,sBAAA,CAAAF,OAAA;AACA,IAAAa,aAAA,GAAAX,sBAAA,CAAAF,OAAA;AACA,IAAAc,WAAA,GAAAZ,sBAAA,CAAAF,OAAA;AACA,IAAAe,yBAAA,GAAAb,sBAAA,CAAAF,OAAA;AACA,IAAAgB,iBAAA,GAAAd,sBAAA,CAAAF,OAAA;AACA,IAAAiB,iBAAA,GAAAf,sBAAA,CAAAF,OAAA;AACA,IAAAkB,SAAA,GAAAhB,sBAAA,CAAAF,OAAA;AACA,IAAAmB,eAAA,GAAAjB,sBAAA,CAAAF,OAAA;AACA,IAAAoB,iBAAA,GAAAlB,sBAAA,CAAAF,OAAA;AACA,IAAAqB,cAAA,GAAAnB,sBAAA,CAAAF,OAAA;AACA,IAAAsB,aAAA,GAAApB,sBAAA,CAAAF,OAAA;AACA,IAAAuB,mBAAA,GAAArB,sBAAA,CAAAF,OAAA;AACA,IAAAwB,OAAA,GAAAtB,sBAAA,CAAAF,OAAA;AACA,IAAAyB,gBAAA,GAAAvB,sBAAA,CAAAF,OAAA;AAEA,IAAA0B,MAAA,GAAA1B,OAAA;AAWA,IAAA2B,OAAA,GAAA3B,OAAA;AAMkB,SAAAE,uBAAA0B,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA/ElB;;AAoBA;;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","_WorkletNode","_interopRequireDefault","_WorkletSourceNode","_WorkletProcessingNode","_RecorderAdapterNode","_AudioBuffer","_AudioBufferSourceNode","_AudioBufferQueueSourceNode","_AudioContext","_OfflineAudioContext","_AudioDestinationNode","_AudioNode","_AnalyserNode","_AudioParam","_AudioScheduledSourceNode","_BaseAudioContext","_BiquadFilterNode","_GainNode","_OscillatorNode","_StereoPannerNode","_AudioRecorder","_StreamerNode","_ConstantSourceNode","_system","_useSystemVolume","_AudioDecoder","_AudioStretcher","_types","_errors","e","__esModule","default","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","createAudioDecoder","createAudioStretcher","AudioEventEmitter","NativeAudioAPIModule","Error","install"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAsDA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,sBAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,oBAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,YAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,sBAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,2BAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,aAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,oBAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,qBAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,UAAA,GAAAV,sBAAA,CAAAF,OAAA;AACA,IAAAa,aAAA,GAAAX,sBAAA,CAAAF,OAAA;AACA,IAAAc,WAAA,GAAAZ,sBAAA,CAAAF,OAAA;AACA,IAAAe,yBAAA,GAAAb,sBAAA,CAAAF,OAAA;AACA,IAAAgB,iBAAA,GAAAd,sBAAA,CAAAF,OAAA;AACA,IAAAiB,iBAAA,GAAAf,sBAAA,CAAAF,OAAA;AACA,IAAAkB,SAAA,GAAAhB,sBAAA,CAAAF,OAAA;AACA,IAAAmB,eAAA,GAAAjB,sBAAA,CAAAF,OAAA;AACA,IAAAoB,iBAAA,GAAAlB,sBAAA,CAAAF,OAAA;AACA,IAAAqB,cAAA,GAAAnB,sBAAA,CAAAF,OAAA;AACA,IAAAsB,aAAA,GAAApB,sBAAA,CAAAF,OAAA;AACA,IAAAuB,mBAAA,GAAArB,sBAAA,CAAAF,OAAA;AACA,IAAAwB,OAAA,GAAAtB,sBAAA,CAAAF,OAAA;AACA,IAAAyB,gBAAA,GAAAvB,sBAAA,CAAAF,OAAA;AACA,IAAA0B,aAAA,GAAA1B,OAAA;AACA,IAAA2B,eAAA,GAAAzB,sBAAA,CAAAF,OAAA;AAEA,IAAA4B,MAAA,GAAA5B,OAAA;AAWA,IAAA6B,OAAA,GAAA7B,OAAA;AAMkB,SAAAE,uBAAA4B,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAvFlB;;AAwBA;;AAEA,IACEG,MAAM,CAACC,kBAAkB,IAAI,IAAI,IACjCD,MAAM,CAACE,yBAAyB,IAAI,IAAI,IACxCF,MAAM,CAACG,mBAAmB,IAAI,IAAI,IAClCH,MAAM,CAACI,kBAAkB,IAAI,IAAI,IACjCJ,MAAM,CAACK,oBAAoB,IAAI,IAAI,IACnCL,MAAM,CAACM,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":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.decodeAudioData = decodeAudioData;
7
+ exports.decodePCMInBase64 = decodePCMInBase64;
8
+ var _AudioBuffer = _interopRequireDefault(require("./AudioBuffer"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ class AudioDecoder {
11
+ static instance = null;
12
+ constructor() {
13
+ this.decoder = global.createAudioDecoder();
14
+ }
15
+ static getInstance() {
16
+ if (!AudioDecoder.instance) {
17
+ AudioDecoder.instance = new AudioDecoder();
18
+ }
19
+ return AudioDecoder.instance;
20
+ }
21
+ async decodeAudioDataInstance(input, sampleRate) {
22
+ let buffer;
23
+ if (typeof input === 'string') {
24
+ // Remove the file:// prefix if it exists
25
+ if (input.startsWith('file://')) {
26
+ input = input.replace('file://', '');
27
+ }
28
+ buffer = await this.decoder.decodeWithFilePath(input, sampleRate ?? 0);
29
+ } else if (input instanceof ArrayBuffer) {
30
+ buffer = await this.decoder.decodeWithMemoryBlock(new Uint8Array(input), sampleRate ?? 0);
31
+ }
32
+ if (!buffer) {
33
+ throw new Error('Unsupported input type or failed to decode audio');
34
+ }
35
+ return new _AudioBuffer.default(buffer);
36
+ }
37
+ async decodePCMInBase64Instance(base64String, inputSampleRate, inputChannelCount, interleaved) {
38
+ const buffer = await this.decoder.decodeWithPCMInBase64(base64String, inputSampleRate, inputChannelCount, interleaved);
39
+ return new _AudioBuffer.default(buffer);
40
+ }
41
+ }
42
+ async function decodeAudioData(input, sampleRate) {
43
+ return AudioDecoder.getInstance().decodeAudioDataInstance(input, sampleRate);
44
+ }
45
+ async function decodePCMInBase64(base64String, inputSampleRate, inputChannelCount, isInterleaved = true) {
46
+ return AudioDecoder.getInstance().decodePCMInBase64Instance(base64String, inputSampleRate, inputChannelCount, isInterleaved);
47
+ }
48
+ //# sourceMappingURL=AudioDecoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_AudioBuffer","_interopRequireDefault","require","e","__esModule","default","AudioDecoder","instance","constructor","decoder","global","createAudioDecoder","getInstance","decodeAudioDataInstance","input","sampleRate","buffer","startsWith","replace","decodeWithFilePath","ArrayBuffer","decodeWithMemoryBlock","Uint8Array","Error","AudioBuffer","decodePCMInBase64Instance","base64String","inputSampleRate","inputChannelCount","interleaved","decodeWithPCMInBase64","decodeAudioData","decodePCMInBase64","isInterleaved"],"sourceRoot":"../../../src","sources":["core/AudioDecoder.ts"],"mappings":";;;;;;;AACA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAwC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExC,MAAMG,YAAY,CAAC;EACjB,OAAeC,QAAQ,GAAwB,IAAI;EAG3CC,WAAWA,CAAA,EAAG;IACpB,IAAI,CAACC,OAAO,GAAGC,MAAM,CAACC,kBAAkB,CAAC,CAAC;EAC5C;EAEA,OAAcC,WAAWA,CAAA,EAAiB;IACxC,IAAI,CAACN,YAAY,CAACC,QAAQ,EAAE;MAC1BD,YAAY,CAACC,QAAQ,GAAG,IAAID,YAAY,CAAC,CAAC;IAC5C;IACA,OAAOA,YAAY,CAACC,QAAQ;EAC9B;EAEA,MAAaM,uBAAuBA,CAClCC,KAA2B,EAC3BC,UAAmB,EACG;IACtB,IAAIC,MAAM;IACV,IAAI,OAAOF,KAAK,KAAK,QAAQ,EAAE;MAC7B;MACA,IAAIA,KAAK,CAACG,UAAU,CAAC,SAAS,CAAC,EAAE;QAC/BH,KAAK,GAAGA,KAAK,CAACI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;MACtC;MACAF,MAAM,GAAG,MAAM,IAAI,CAACP,OAAO,CAACU,kBAAkB,CAACL,KAAK,EAAEC,UAAU,IAAI,CAAC,CAAC;IACxE,CAAC,MAAM,IAAID,KAAK,YAAYM,WAAW,EAAE;MACvCJ,MAAM,GAAG,MAAM,IAAI,CAACP,OAAO,CAACY,qBAAqB,CAC/C,IAAIC,UAAU,CAACR,KAAK,CAAC,EACrBC,UAAU,IAAI,CAChB,CAAC;IACH;IAEA,IAAI,CAACC,MAAM,EAAE;MACX,MAAM,IAAIO,KAAK,CAAC,kDAAkD,CAAC;IACrE;IACA,OAAO,IAAIC,oBAAW,CAACR,MAAM,CAAC;EAChC;EAEA,MAAaS,yBAAyBA,CACpCC,YAAoB,EACpBC,eAAuB,EACvBC,iBAAyB,EACzBC,WAAoB,EACE;IACtB,MAAMb,MAAM,GAAG,MAAM,IAAI,CAACP,OAAO,CAACqB,qBAAqB,CACrDJ,YAAY,EACZC,eAAe,EACfC,iBAAiB,EACjBC,WACF,CAAC;IACD,OAAO,IAAIL,oBAAW,CAACR,MAAM,CAAC;EAChC;AACF;AAEO,eAAee,eAAeA,CACnCjB,KAA2B,EAC3BC,UAAmB,EACG;EACtB,OAAOT,YAAY,CAACM,WAAW,CAAC,CAAC,CAACC,uBAAuB,CAACC,KAAK,EAAEC,UAAU,CAAC;AAC9E;AAEO,eAAeiB,iBAAiBA,CACrCN,YAAoB,EACpBC,eAAuB,EACvBC,iBAAyB,EACzBK,aAAsB,GAAG,IAAI,EACP;EACtB,OAAO3B,YAAY,CAACM,WAAW,CAAC,CAAC,CAACa,yBAAyB,CACzDC,YAAY,EACZC,eAAe,EACfC,iBAAiB,EACjBK,aACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = changePlaybackSpeed;
7
+ var _AudioBuffer = _interopRequireDefault(require("./AudioBuffer"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ class AudioStretcher {
10
+ static instance = null;
11
+ constructor() {
12
+ this.stretcher = global.createAudioStretcher();
13
+ }
14
+ static getInstance() {
15
+ if (!AudioStretcher.instance) {
16
+ AudioStretcher.instance = new AudioStretcher();
17
+ }
18
+ return AudioStretcher.instance;
19
+ }
20
+ async changePlaybackSpeedInstance(input, playbackSpeed) {
21
+ const buffer = await this.stretcher.changePlaybackSpeed(input.buffer, playbackSpeed);
22
+ if (!buffer) {
23
+ throw new Error('Failed to change playback speed');
24
+ }
25
+ return new _AudioBuffer.default(buffer);
26
+ }
27
+ }
28
+ async function changePlaybackSpeed(input, playbackSpeed) {
29
+ return AudioStretcher.getInstance().changePlaybackSpeedInstance(input, playbackSpeed);
30
+ }
31
+ //# sourceMappingURL=AudioStretcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_AudioBuffer","_interopRequireDefault","require","e","__esModule","default","AudioStretcher","instance","constructor","stretcher","global","createAudioStretcher","getInstance","changePlaybackSpeedInstance","input","playbackSpeed","buffer","changePlaybackSpeed","Error","AudioBuffer"],"sourceRoot":"../../../src","sources":["core/AudioStretcher.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAwC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExC,MAAMG,cAAc,CAAC;EACnB,OAAeC,QAAQ,GAA0B,IAAI;EAG7CC,WAAWA,CAAA,EAAG;IACpB,IAAI,CAACC,SAAS,GAAGC,MAAM,CAACC,oBAAoB,CAAC,CAAC;EAChD;EAEA,OAAcC,WAAWA,CAAA,EAAmB;IAC1C,IAAI,CAACN,cAAc,CAACC,QAAQ,EAAE;MAC5BD,cAAc,CAACC,QAAQ,GAAG,IAAID,cAAc,CAAC,CAAC;IAChD;IACA,OAAOA,cAAc,CAACC,QAAQ;EAChC;EAEA,MAAaM,2BAA2BA,CACtCC,KAAkB,EAClBC,aAAqB,EACC;IACtB,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACP,SAAS,CAACQ,mBAAmB,CACrDH,KAAK,CAACE,MAAM,EACZD,aACF,CAAC;IAED,IAAI,CAACC,MAAM,EAAE;MACX,MAAM,IAAIE,KAAK,CAAC,iCAAiC,CAAC;IACpD;IACA,OAAO,IAAIC,oBAAW,CAACH,MAAM,CAAC;EAChC;AACF;AAEe,eAAeC,mBAAmBA,CAC/CH,KAAkB,EAClBC,aAAqB,EACC;EACtB,OAAOT,cAAc,CAACM,WAAW,CAAC,CAAC,CAACC,2BAA2B,CAC7DC,KAAK,EACLC,aACF,CAAC;AACH","ignoreList":[]}
@@ -14,6 +14,7 @@ var _AudioBufferQueueSourceNode = _interopRequireDefault(require("./AudioBufferQ
14
14
  var _AudioBufferSourceNode = _interopRequireDefault(require("./AudioBufferSourceNode"));
15
15
  var _AudioDestinationNode = _interopRequireDefault(require("./AudioDestinationNode"));
16
16
  var _BiquadFilterNode = _interopRequireDefault(require("./BiquadFilterNode"));
17
+ var _ConstantSourceNode = _interopRequireDefault(require("./ConstantSourceNode"));
17
18
  var _GainNode = _interopRequireDefault(require("./GainNode"));
18
19
  var _OscillatorNode = _interopRequireDefault(require("./OscillatorNode"));
19
20
  var _PeriodicWave = _interopRequireDefault(require("./PeriodicWave"));
@@ -21,7 +22,7 @@ var _RecorderAdapterNode = _interopRequireDefault(require("./RecorderAdapterNode
21
22
  var _StereoPannerNode = _interopRequireDefault(require("./StereoPannerNode"));
22
23
  var _StreamerNode = _interopRequireDefault(require("./StreamerNode"));
23
24
  var _WorkletNode = _interopRequireDefault(require("./WorkletNode"));
24
- var _ConstantSourceNode = _interopRequireDefault(require("./ConstantSourceNode"));
25
+ var _AudioDecoder = require("./AudioDecoder");
25
26
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
27
  class BaseAudioContext {
27
28
  constructor(context) {
@@ -35,6 +36,15 @@ class BaseAudioContext {
35
36
  get state() {
36
37
  return this.context.state;
37
38
  }
39
+ async decodeAudioData(input, sampleRate) {
40
+ if (!(typeof input === 'string' || input instanceof ArrayBuffer)) {
41
+ throw new TypeError('Input must be a string or ArrayBuffer');
42
+ }
43
+ return await (0, _AudioDecoder.decodeAudioData)(input, sampleRate ?? this.sampleRate);
44
+ }
45
+ async decodePCMInBase64(base64String, inputSampleRate, inputChannelCount, isInterleaved = true) {
46
+ return await (0, _AudioDecoder.decodePCMInBase64)(base64String, inputSampleRate, inputChannelCount, isInterleaved);
47
+ }
38
48
  createWorkletNode(callback, bufferLength, inputChannelCount, workletRuntime = 'AudioRuntime') {
39
49
  if (inputChannelCount < 1 || inputChannelCount > 32) {
40
50
  throw new _errors.NotSupportedError(`The number of input channels provided (${inputChannelCount}) can not be less than 1 or greater than 32`);
@@ -132,23 +142,6 @@ class BaseAudioContext {
132
142
  createAnalyser() {
133
143
  return new _AnalyserNode.default(this, this.context.createAnalyser());
134
144
  }
135
-
136
- /** Decodes audio data from a local file path. */
137
- async decodeAudioDataSource(sourcePath) {
138
- // Remove the file:// prefix if it exists
139
- if (sourcePath.startsWith('file://')) {
140
- sourcePath = sourcePath.replace('file://', '');
141
- }
142
- return new _AudioBuffer.default(await this.context.decodeAudioDataSource(sourcePath));
143
- }
144
-
145
- /** Decodes audio data from an ArrayBuffer. */
146
- async decodeAudioData(data) {
147
- return new _AudioBuffer.default(await this.context.decodeAudioData(new Uint8Array(data)));
148
- }
149
- async decodePCMInBase64Data(base64, playbackRate = 1.0) {
150
- return new _AudioBuffer.default(await this.context.decodePCMAudioDataInBase64(base64, playbackRate));
151
- }
152
145
  }
153
146
  exports.default = BaseAudioContext;
154
147
  //# sourceMappingURL=BaseAudioContext.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_errors","require","_utils","_WorkletSourceNode","_interopRequireDefault","_WorkletProcessingNode","_AnalyserNode","_AudioBuffer","_AudioBufferQueueSourceNode","_AudioBufferSourceNode","_AudioDestinationNode","_BiquadFilterNode","_GainNode","_OscillatorNode","_PeriodicWave","_RecorderAdapterNode","_StereoPannerNode","_StreamerNode","_WorkletNode","_ConstantSourceNode","e","__esModule","default","BaseAudioContext","constructor","context","destination","AudioDestinationNode","sampleRate","currentTime","state","createWorkletNode","callback","bufferLength","inputChannelCount","workletRuntime","NotSupportedError","isWorkletsAvailable","shareableWorklet","workletsModule","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","WorkletNode","Error","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","WorkletProcessingNode","createWorkletSourceNode","startOffset","WorkletSourceNode","createRecorderAdapter","RecorderAdapterNode","createOscillator","OscillatorNode","createStreamer","StreamerNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createBufferSource","options","pitchCorrection","AudioBufferSourceNode","createBufferQueueSource","AudioBufferQueueSourceNode","createBuffer","numOfChannels","length","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","disableNormalization","PeriodicWave","createAnalyser","AnalyserNode","decodeAudioDataSource","sourcePath","startsWith","replace","decodeAudioData","data","Uint8Array","decodePCMInBase64Data","base64","playbackRate","decodePCMAudioDataInBase64","exports"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_errors","require","_utils","_WorkletSourceNode","_interopRequireDefault","_WorkletProcessingNode","_AnalyserNode","_AudioBuffer","_AudioBufferQueueSourceNode","_AudioBufferSourceNode","_AudioDestinationNode","_BiquadFilterNode","_ConstantSourceNode","_GainNode","_OscillatorNode","_PeriodicWave","_RecorderAdapterNode","_StereoPannerNode","_StreamerNode","_WorkletNode","_AudioDecoder","e","__esModule","default","BaseAudioContext","constructor","context","destination","AudioDestinationNode","sampleRate","currentTime","state","decodeAudioData","input","ArrayBuffer","TypeError","decodePCMInBase64","base64String","inputSampleRate","inputChannelCount","isInterleaved","createWorkletNode","callback","bufferLength","workletRuntime","NotSupportedError","isWorkletsAvailable","shareableWorklet","workletsModule","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","WorkletNode","Error","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","WorkletProcessingNode","createWorkletSourceNode","startOffset","WorkletSourceNode","createRecorderAdapter","RecorderAdapterNode","createOscillator","OscillatorNode","createStreamer","StreamerNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createBufferSource","options","pitchCorrection","AudioBufferSourceNode","createBufferQueueSource","AudioBufferQueueSourceNode","createBuffer","numOfChannels","length","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","disableNormalization","PeriodicWave","createAnalyser","AnalyserNode","exports"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
package/lib/module/api.js CHANGED
@@ -6,7 +6,7 @@ import { NativeAudioAPIModule } from "./specs/index.js";
6
6
 
7
7
  /* eslint-disable no-var */
8
8
 
9
- if (global.createAudioContext == null || global.createOfflineAudioContext == null || global.createAudioRecorder == null || global.AudioEventEmitter == null) {
9
+ if (global.createAudioContext == null || global.createOfflineAudioContext == null || global.createAudioRecorder == null || global.createAudioDecoder == null || global.createAudioStretcher == null || global.AudioEventEmitter == null) {
10
10
  if (!NativeAudioAPIModule) {
11
11
  throw new Error(`Failed to install react-native-audio-api: The native module could not be found.`);
12
12
  }
@@ -36,6 +36,8 @@ export { default as StreamerNode } from "./core/StreamerNode.js";
36
36
  export { default as ConstantSourceNode } from "./core/ConstantSourceNode.js";
37
37
  export { default as AudioManager } from "./system/index.js";
38
38
  export { default as useSystemVolume } from "./hooks/useSystemVolume.js";
39
+ export { decodeAudioData, decodePCMInBase64 } from "./core/AudioDecoder.js";
40
+ export { default as changePlaybackSpeed } from "./core/AudioStretcher.js";
39
41
  export { OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, WindowType, PeriodicWaveConstraints, AudioWorkletRuntime } from "./types.js";
40
42
  export { IndexSizeError, InvalidAccessError, InvalidStateError, RangeError, NotSupportedError } from "./errors/index.js";
41
43
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeAudioAPIModule","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","AudioEventEmitter","Error","install","default","WorkletNode","WorkletSourceNode","WorkletProcessingNode","RecorderAdapterNode","AudioBuffer","AudioBufferSourceNode","AudioBufferQueueSourceNode","AudioContext","OfflineAudioContext","AudioDestinationNode","AudioNode","AnalyserNode","AudioParam","AudioScheduledSourceNode","BaseAudioContext","BiquadFilterNode","GainNode","OscillatorNode","StereoPannerNode","AudioRecorder","StreamerNode","ConstantSourceNode","AudioManager","useSystemVolume","OscillatorType","BiquadFilterType","ChannelCountMode","ChannelInterpretation","ContextState","WindowType","PeriodicWaveConstraints","AudioWorkletRuntime","IndexSizeError","InvalidAccessError","InvalidStateError","RangeError","NotSupportedError"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;AAAA,SAASA,oBAAoB,QAAQ,kBAAS;;AAS9C;;AAoBA;;AAEA,IACEC,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,CAACL,oBAAoB,EAAE;IACzB,MAAM,IAAIM,KAAK,CACb,iFACF,CAAC;EACH;EAEAN,oBAAoB,CAACO,OAAO,CAAC,CAAC;AAChC;AAEA,SAASC,OAAO,IAAIC,WAAW,QAAQ,uBAAoB;AAC3D,SAASD,OAAO,IAAIE,iBAAiB,QAAQ,6BAA0B;AACvE,SAASF,OAAO,IAAIG,qBAAqB,QAAQ,iCAA8B;AAC/E,SAASH,OAAO,IAAII,mBAAmB,QAAQ,+BAA4B;AAC3E,SAASJ,OAAO,IAAIK,WAAW,QAAQ,uBAAoB;AAC3D,SAASL,OAAO,IAAIM,qBAAqB,QAAQ,iCAA8B;AAC/E,SAASN,OAAO,IAAIO,0BAA0B,QAAQ,sCAAmC;AACzF,SAASP,OAAO,IAAIQ,YAAY,QAAQ,wBAAqB;AAC7D,SAASR,OAAO,IAAIS,mBAAmB,QAAQ,+BAA4B;AAC3E,SAAST,OAAO,IAAIU,oBAAoB,QAAQ,gCAA6B;AAC7E,SAASV,OAAO,IAAIW,SAAS,QAAQ,qBAAkB;AACvD,SAASX,OAAO,IAAIY,YAAY,QAAQ,wBAAqB;AAC7D,SAASZ,OAAO,IAAIa,UAAU,QAAQ,sBAAmB;AACzD,SAASb,OAAO,IAAIc,wBAAwB,QAAQ,oCAAiC;AACrF,SAASd,OAAO,IAAIe,gBAAgB,QAAQ,4BAAyB;AACrE,SAASf,OAAO,IAAIgB,gBAAgB,QAAQ,4BAAyB;AACrE,SAAShB,OAAO,IAAIiB,QAAQ,QAAQ,oBAAiB;AACrD,SAASjB,OAAO,IAAIkB,cAAc,QAAQ,0BAAuB;AACjE,SAASlB,OAAO,IAAImB,gBAAgB,QAAQ,4BAAyB;AACrE,SAASnB,OAAO,IAAIoB,aAAa,QAAQ,yBAAsB;AAC/D,SAASpB,OAAO,IAAIqB,YAAY,QAAQ,wBAAqB;AAC7D,SAASrB,OAAO,IAAIsB,kBAAkB,QAAQ,8BAA2B;AACzE,SAAStB,OAAO,IAAIuB,YAAY,QAAQ,mBAAU;AAClD,SAASvB,OAAO,IAAIwB,eAAe,QAAQ,4BAAyB;AAEpE,SACEC,cAAc,EACdC,gBAAgB,EAChBC,gBAAgB,EAChBC,qBAAqB,EACrBC,YAAY,EACZC,UAAU,EACVC,uBAAuB,EACvBC,mBAAmB,QACd,YAAS;AAEhB,SACEC,cAAc,EACdC,kBAAkB,EAClBC,iBAAiB,EACjBC,UAAU,EACVC,iBAAiB,QACZ,mBAAU","ignoreList":[]}
1
+ {"version":3,"names":["NativeAudioAPIModule","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","createAudioDecoder","createAudioStretcher","AudioEventEmitter","Error","install","default","WorkletNode","WorkletSourceNode","WorkletProcessingNode","RecorderAdapterNode","AudioBuffer","AudioBufferSourceNode","AudioBufferQueueSourceNode","AudioContext","OfflineAudioContext","AudioDestinationNode","AudioNode","AnalyserNode","AudioParam","AudioScheduledSourceNode","BaseAudioContext","BiquadFilterNode","GainNode","OscillatorNode","StereoPannerNode","AudioRecorder","StreamerNode","ConstantSourceNode","AudioManager","useSystemVolume","decodeAudioData","decodePCMInBase64","changePlaybackSpeed","OscillatorType","BiquadFilterType","ChannelCountMode","ChannelInterpretation","ContextState","WindowType","PeriodicWaveConstraints","AudioWorkletRuntime","IndexSizeError","InvalidAccessError","InvalidStateError","RangeError","NotSupportedError"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;AAAA,SAASA,oBAAoB,QAAQ,kBAAS;;AAW9C;;AAwBA;;AAEA,IACEC,MAAM,CAACC,kBAAkB,IAAI,IAAI,IACjCD,MAAM,CAACE,yBAAyB,IAAI,IAAI,IACxCF,MAAM,CAACG,mBAAmB,IAAI,IAAI,IAClCH,MAAM,CAACI,kBAAkB,IAAI,IAAI,IACjCJ,MAAM,CAACK,oBAAoB,IAAI,IAAI,IACnCL,MAAM,CAACM,iBAAiB,IAAI,IAAI,EAChC;EACA,IAAI,CAACP,oBAAoB,EAAE;IACzB,MAAM,IAAIQ,KAAK,CACb,iFACF,CAAC;EACH;EAEAR,oBAAoB,CAACS,OAAO,CAAC,CAAC;AAChC;AAEA,SAASC,OAAO,IAAIC,WAAW,QAAQ,uBAAoB;AAC3D,SAASD,OAAO,IAAIE,iBAAiB,QAAQ,6BAA0B;AACvE,SAASF,OAAO,IAAIG,qBAAqB,QAAQ,iCAA8B;AAC/E,SAASH,OAAO,IAAII,mBAAmB,QAAQ,+BAA4B;AAC3E,SAASJ,OAAO,IAAIK,WAAW,QAAQ,uBAAoB;AAC3D,SAASL,OAAO,IAAIM,qBAAqB,QAAQ,iCAA8B;AAC/E,SAASN,OAAO,IAAIO,0BAA0B,QAAQ,sCAAmC;AACzF,SAASP,OAAO,IAAIQ,YAAY,QAAQ,wBAAqB;AAC7D,SAASR,OAAO,IAAIS,mBAAmB,QAAQ,+BAA4B;AAC3E,SAAST,OAAO,IAAIU,oBAAoB,QAAQ,gCAA6B;AAC7E,SAASV,OAAO,IAAIW,SAAS,QAAQ,qBAAkB;AACvD,SAASX,OAAO,IAAIY,YAAY,QAAQ,wBAAqB;AAC7D,SAASZ,OAAO,IAAIa,UAAU,QAAQ,sBAAmB;AACzD,SAASb,OAAO,IAAIc,wBAAwB,QAAQ,oCAAiC;AACrF,SAASd,OAAO,IAAIe,gBAAgB,QAAQ,4BAAyB;AACrE,SAASf,OAAO,IAAIgB,gBAAgB,QAAQ,4BAAyB;AACrE,SAAShB,OAAO,IAAIiB,QAAQ,QAAQ,oBAAiB;AACrD,SAASjB,OAAO,IAAIkB,cAAc,QAAQ,0BAAuB;AACjE,SAASlB,OAAO,IAAImB,gBAAgB,QAAQ,4BAAyB;AACrE,SAASnB,OAAO,IAAIoB,aAAa,QAAQ,yBAAsB;AAC/D,SAASpB,OAAO,IAAIqB,YAAY,QAAQ,wBAAqB;AAC7D,SAASrB,OAAO,IAAIsB,kBAAkB,QAAQ,8BAA2B;AACzE,SAAStB,OAAO,IAAIuB,YAAY,QAAQ,mBAAU;AAClD,SAASvB,OAAO,IAAIwB,eAAe,QAAQ,4BAAyB;AACpE,SAASC,eAAe,EAAEC,iBAAiB,QAAQ,wBAAqB;AACxE,SAAS1B,OAAO,IAAI2B,mBAAmB,QAAQ,0BAAuB;AAEtE,SACEC,cAAc,EACdC,gBAAgB,EAChBC,gBAAgB,EAChBC,qBAAqB,EACrBC,YAAY,EACZC,UAAU,EACVC,uBAAuB,EACvBC,mBAAmB,QACd,YAAS;AAEhB,SACEC,cAAc,EACdC,kBAAkB,EAClBC,iBAAiB,EACjBC,UAAU,EACVC,iBAAiB,QACZ,mBAAU","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ import AudioBuffer from "./AudioBuffer.js";
4
+ class AudioDecoder {
5
+ static instance = null;
6
+ constructor() {
7
+ this.decoder = global.createAudioDecoder();
8
+ }
9
+ static getInstance() {
10
+ if (!AudioDecoder.instance) {
11
+ AudioDecoder.instance = new AudioDecoder();
12
+ }
13
+ return AudioDecoder.instance;
14
+ }
15
+ async decodeAudioDataInstance(input, sampleRate) {
16
+ let buffer;
17
+ if (typeof input === 'string') {
18
+ // Remove the file:// prefix if it exists
19
+ if (input.startsWith('file://')) {
20
+ input = input.replace('file://', '');
21
+ }
22
+ buffer = await this.decoder.decodeWithFilePath(input, sampleRate ?? 0);
23
+ } else if (input instanceof ArrayBuffer) {
24
+ buffer = await this.decoder.decodeWithMemoryBlock(new Uint8Array(input), sampleRate ?? 0);
25
+ }
26
+ if (!buffer) {
27
+ throw new Error('Unsupported input type or failed to decode audio');
28
+ }
29
+ return new AudioBuffer(buffer);
30
+ }
31
+ async decodePCMInBase64Instance(base64String, inputSampleRate, inputChannelCount, interleaved) {
32
+ const buffer = await this.decoder.decodeWithPCMInBase64(base64String, inputSampleRate, inputChannelCount, interleaved);
33
+ return new AudioBuffer(buffer);
34
+ }
35
+ }
36
+ export async function decodeAudioData(input, sampleRate) {
37
+ return AudioDecoder.getInstance().decodeAudioDataInstance(input, sampleRate);
38
+ }
39
+ export async function decodePCMInBase64(base64String, inputSampleRate, inputChannelCount, isInterleaved = true) {
40
+ return AudioDecoder.getInstance().decodePCMInBase64Instance(base64String, inputSampleRate, inputChannelCount, isInterleaved);
41
+ }
42
+ //# sourceMappingURL=AudioDecoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AudioBuffer","AudioDecoder","instance","constructor","decoder","global","createAudioDecoder","getInstance","decodeAudioDataInstance","input","sampleRate","buffer","startsWith","replace","decodeWithFilePath","ArrayBuffer","decodeWithMemoryBlock","Uint8Array","Error","decodePCMInBase64Instance","base64String","inputSampleRate","inputChannelCount","interleaved","decodeWithPCMInBase64","decodeAudioData","decodePCMInBase64","isInterleaved"],"sourceRoot":"../../../src","sources":["core/AudioDecoder.ts"],"mappings":";;AACA,OAAOA,WAAW,MAAM,kBAAe;AAEvC,MAAMC,YAAY,CAAC;EACjB,OAAeC,QAAQ,GAAwB,IAAI;EAG3CC,WAAWA,CAAA,EAAG;IACpB,IAAI,CAACC,OAAO,GAAGC,MAAM,CAACC,kBAAkB,CAAC,CAAC;EAC5C;EAEA,OAAcC,WAAWA,CAAA,EAAiB;IACxC,IAAI,CAACN,YAAY,CAACC,QAAQ,EAAE;MAC1BD,YAAY,CAACC,QAAQ,GAAG,IAAID,YAAY,CAAC,CAAC;IAC5C;IACA,OAAOA,YAAY,CAACC,QAAQ;EAC9B;EAEA,MAAaM,uBAAuBA,CAClCC,KAA2B,EAC3BC,UAAmB,EACG;IACtB,IAAIC,MAAM;IACV,IAAI,OAAOF,KAAK,KAAK,QAAQ,EAAE;MAC7B;MACA,IAAIA,KAAK,CAACG,UAAU,CAAC,SAAS,CAAC,EAAE;QAC/BH,KAAK,GAAGA,KAAK,CAACI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;MACtC;MACAF,MAAM,GAAG,MAAM,IAAI,CAACP,OAAO,CAACU,kBAAkB,CAACL,KAAK,EAAEC,UAAU,IAAI,CAAC,CAAC;IACxE,CAAC,MAAM,IAAID,KAAK,YAAYM,WAAW,EAAE;MACvCJ,MAAM,GAAG,MAAM,IAAI,CAACP,OAAO,CAACY,qBAAqB,CAC/C,IAAIC,UAAU,CAACR,KAAK,CAAC,EACrBC,UAAU,IAAI,CAChB,CAAC;IACH;IAEA,IAAI,CAACC,MAAM,EAAE;MACX,MAAM,IAAIO,KAAK,CAAC,kDAAkD,CAAC;IACrE;IACA,OAAO,IAAIlB,WAAW,CAACW,MAAM,CAAC;EAChC;EAEA,MAAaQ,yBAAyBA,CACpCC,YAAoB,EACpBC,eAAuB,EACvBC,iBAAyB,EACzBC,WAAoB,EACE;IACtB,MAAMZ,MAAM,GAAG,MAAM,IAAI,CAACP,OAAO,CAACoB,qBAAqB,CACrDJ,YAAY,EACZC,eAAe,EACfC,iBAAiB,EACjBC,WACF,CAAC;IACD,OAAO,IAAIvB,WAAW,CAACW,MAAM,CAAC;EAChC;AACF;AAEA,OAAO,eAAec,eAAeA,CACnChB,KAA2B,EAC3BC,UAAmB,EACG;EACtB,OAAOT,YAAY,CAACM,WAAW,CAAC,CAAC,CAACC,uBAAuB,CAACC,KAAK,EAAEC,UAAU,CAAC;AAC9E;AAEA,OAAO,eAAegB,iBAAiBA,CACrCN,YAAoB,EACpBC,eAAuB,EACvBC,iBAAyB,EACzBK,aAAsB,GAAG,IAAI,EACP;EACtB,OAAO1B,YAAY,CAACM,WAAW,CAAC,CAAC,CAACY,yBAAyB,CACzDC,YAAY,EACZC,eAAe,EACfC,iBAAiB,EACjBK,aACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ import AudioBuffer from "./AudioBuffer.js";
4
+ class AudioStretcher {
5
+ static instance = null;
6
+ constructor() {
7
+ this.stretcher = global.createAudioStretcher();
8
+ }
9
+ static getInstance() {
10
+ if (!AudioStretcher.instance) {
11
+ AudioStretcher.instance = new AudioStretcher();
12
+ }
13
+ return AudioStretcher.instance;
14
+ }
15
+ async changePlaybackSpeedInstance(input, playbackSpeed) {
16
+ const buffer = await this.stretcher.changePlaybackSpeed(input.buffer, playbackSpeed);
17
+ if (!buffer) {
18
+ throw new Error('Failed to change playback speed');
19
+ }
20
+ return new AudioBuffer(buffer);
21
+ }
22
+ }
23
+ export default async function changePlaybackSpeed(input, playbackSpeed) {
24
+ return AudioStretcher.getInstance().changePlaybackSpeedInstance(input, playbackSpeed);
25
+ }
26
+ //# sourceMappingURL=AudioStretcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AudioBuffer","AudioStretcher","instance","constructor","stretcher","global","createAudioStretcher","getInstance","changePlaybackSpeedInstance","input","playbackSpeed","buffer","changePlaybackSpeed","Error"],"sourceRoot":"../../../src","sources":["core/AudioStretcher.ts"],"mappings":";;AACA,OAAOA,WAAW,MAAM,kBAAe;AAEvC,MAAMC,cAAc,CAAC;EACnB,OAAeC,QAAQ,GAA0B,IAAI;EAG7CC,WAAWA,CAAA,EAAG;IACpB,IAAI,CAACC,SAAS,GAAGC,MAAM,CAACC,oBAAoB,CAAC,CAAC;EAChD;EAEA,OAAcC,WAAWA,CAAA,EAAmB;IAC1C,IAAI,CAACN,cAAc,CAACC,QAAQ,EAAE;MAC5BD,cAAc,CAACC,QAAQ,GAAG,IAAID,cAAc,CAAC,CAAC;IAChD;IACA,OAAOA,cAAc,CAACC,QAAQ;EAChC;EAEA,MAAaM,2BAA2BA,CACtCC,KAAkB,EAClBC,aAAqB,EACC;IACtB,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACP,SAAS,CAACQ,mBAAmB,CACrDH,KAAK,CAACE,MAAM,EACZD,aACF,CAAC;IAED,IAAI,CAACC,MAAM,EAAE;MACX,MAAM,IAAIE,KAAK,CAAC,iCAAiC,CAAC;IACpD;IACA,OAAO,IAAIb,WAAW,CAACW,MAAM,CAAC;EAChC;AACF;AAEA,eAAe,eAAeC,mBAAmBA,CAC/CH,KAAkB,EAClBC,aAAqB,EACC;EACtB,OAAOT,cAAc,CAACM,WAAW,CAAC,CAAC,CAACC,2BAA2B,CAC7DC,KAAK,EACLC,aACF,CAAC;AACH","ignoreList":[]}