react-native-audio-api 0.3.0-rc2 → 0.3.2

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 (197) hide show
  1. package/RNAudioAPI.podspec +40 -29
  2. package/android/CMakeLists.txt +17 -21
  3. package/android/build.gradle +26 -9
  4. package/android/src/main/cpp/OnLoad.cpp +1 -1
  5. package/android/src/main/cpp/core/AudioAPIInstaller.cpp +37 -0
  6. package/android/src/main/cpp/{AudioAPIInstaller → core}/AudioAPIInstaller.h +5 -16
  7. package/android/src/main/cpp/{AudioDecoder → core}/AudioDecoder.cpp +0 -8
  8. package/android/src/main/java/com/swmansion/audioapi/AudioAPIPackage.kt +2 -0
  9. package/android/src/main/java/com/swmansion/audioapi/nativemodules/AudioAPIModule.kt +6 -4
  10. package/common/cpp/HostObjects/AudioAPIInstallerHostObject.h +48 -0
  11. package/common/cpp/HostObjects/AudioBufferHostObject.h +79 -13
  12. package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.h +93 -14
  13. package/common/cpp/HostObjects/AudioContextHostObject.h +10 -21
  14. package/common/cpp/HostObjects/AudioDestinationNodeHostObject.h +3 -16
  15. package/common/cpp/HostObjects/AudioNodeHostObject.h +48 -11
  16. package/common/cpp/HostObjects/AudioParamHostObject.h +93 -14
  17. package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.h +23 -16
  18. package/common/cpp/HostObjects/BaseAudioContextHostObject.h +131 -14
  19. package/common/cpp/HostObjects/BiquadFilterNodeHostObject.h +76 -18
  20. package/common/cpp/HostObjects/GainNodeHostObject.h +10 -15
  21. package/common/cpp/HostObjects/OscillatorNodeHostObject.h +40 -17
  22. package/common/cpp/HostObjects/PeriodicWaveHostObject.h +4 -17
  23. package/common/cpp/HostObjects/StereoPannerNodeHostObject.h +10 -17
  24. package/common/cpp/core/AudioBufferSourceNode.cpp +181 -73
  25. package/common/cpp/core/AudioBufferSourceNode.h +41 -1
  26. package/{android/src/main/cpp/AudioDecoder → common/cpp/core}/AudioDecoder.h +1 -3
  27. package/common/cpp/core/AudioDestinationNode.h +1 -1
  28. package/common/cpp/core/AudioParam.cpp +218 -58
  29. package/common/cpp/core/AudioParam.h +19 -15
  30. package/common/cpp/core/AudioScheduledSourceNode.cpp +94 -21
  31. package/common/cpp/core/AudioScheduledSourceNode.h +16 -5
  32. package/common/cpp/core/BaseAudioContext.cpp +3 -13
  33. package/common/cpp/core/BaseAudioContext.h +2 -4
  34. package/common/cpp/core/BiquadFilterNode.cpp +5 -7
  35. package/common/cpp/{HostObjects → core}/Constants.h +2 -2
  36. package/common/cpp/core/GainNode.cpp +1 -1
  37. package/common/cpp/core/OscillatorNode.cpp +11 -5
  38. package/common/cpp/core/ParamChangeEvent.cpp +58 -0
  39. package/common/cpp/core/{ParamChange.h → ParamChangeEvent.h} +11 -5
  40. package/common/cpp/core/StereoPannerNode.cpp +1 -1
  41. package/common/cpp/jsi/JsiHostObject.cpp +90 -0
  42. package/common/cpp/jsi/JsiHostObject.h +100 -0
  43. package/common/cpp/{utils → jsi}/JsiPromise.cpp +10 -9
  44. package/common/cpp/jsi/JsiPromise.h +48 -0
  45. package/common/cpp/jsi/RuntimeAwareCache.h +57 -0
  46. package/common/cpp/jsi/RuntimeLifecycleMonitor.cpp +61 -0
  47. package/common/cpp/jsi/RuntimeLifecycleMonitor.h +32 -0
  48. package/common/cpp/types/BiquadFilterType.h +0 -4
  49. package/common/cpp/types/ChannelCountMode.h +0 -3
  50. package/common/cpp/types/ChannelInterpretation.h +0 -3
  51. package/common/cpp/types/ContextState.h +0 -3
  52. package/common/cpp/types/OscillatorType.h +0 -4
  53. package/common/cpp/types/ParamChangeEventType.h +13 -0
  54. package/common/cpp/utils/AudioUtils.cpp +26 -0
  55. package/common/cpp/utils/AudioUtils.h +12 -0
  56. package/common/cpp/utils/{ios/FFTFrame.cpp → FFTFrame.cpp} +30 -3
  57. package/common/cpp/utils/VectorMath.h +7 -33
  58. package/ios/AudioAPIModule.h +4 -12
  59. package/ios/AudioAPIModule.mm +26 -25
  60. package/ios/core/AudioDecoder.mm +45 -0
  61. package/ios/{AudioPlayer → core}/AudioPlayer.m +2 -1
  62. package/lib/module/core/AudioBuffer.js +3 -1
  63. package/lib/module/core/AudioBuffer.js.map +1 -1
  64. package/lib/module/core/AudioBufferSourceNode.js +19 -2
  65. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  66. package/lib/module/core/AudioContext.js +3 -1
  67. package/lib/module/core/AudioContext.js.map +1 -1
  68. package/lib/module/core/AudioDestinationNode.js +4 -6
  69. package/lib/module/core/AudioDestinationNode.js.map +1 -1
  70. package/lib/module/core/AudioNode.js +3 -1
  71. package/lib/module/core/AudioNode.js.map +1 -1
  72. package/lib/module/core/AudioParam.js +27 -1
  73. package/lib/module/core/AudioParam.js.map +1 -1
  74. package/lib/module/core/AudioScheduledSourceNode.js +4 -5
  75. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  76. package/lib/module/core/BaseAudioContext.js +11 -9
  77. package/lib/module/core/BaseAudioContext.js.map +1 -1
  78. package/lib/module/core/BiquadFilterNode.js +5 -3
  79. package/lib/module/core/BiquadFilterNode.js.map +1 -1
  80. package/lib/module/core/GainNode.js +4 -2
  81. package/lib/module/core/GainNode.js.map +1 -1
  82. package/lib/module/core/OscillatorNode.js +5 -3
  83. package/lib/module/core/OscillatorNode.js.map +1 -1
  84. package/lib/module/core/PeriodicWave.js +2 -0
  85. package/lib/module/core/PeriodicWave.js.map +1 -1
  86. package/lib/module/core/StereoPannerNode.js +4 -2
  87. package/lib/module/core/StereoPannerNode.js.map +1 -1
  88. package/lib/module/core/types.js +1 -1
  89. package/lib/module/errors/IndexSizeError.js +2 -0
  90. package/lib/module/errors/IndexSizeError.js.map +1 -1
  91. package/lib/module/errors/InvalidAccessError.js +2 -0
  92. package/lib/module/errors/InvalidAccessError.js.map +1 -1
  93. package/lib/module/errors/InvalidStateError.js +2 -0
  94. package/lib/module/errors/InvalidStateError.js.map +1 -1
  95. package/lib/module/errors/RangeError.js +2 -0
  96. package/lib/module/errors/RangeError.js.map +1 -1
  97. package/lib/module/errors/index.js +6 -4
  98. package/lib/module/errors/index.js.map +1 -1
  99. package/lib/module/index.js +35 -10
  100. package/lib/module/index.js.map +1 -1
  101. package/lib/module/index.native.js +16 -14
  102. package/lib/module/index.native.js.map +1 -1
  103. package/lib/module/interfaces.js +2 -0
  104. package/lib/module/specs/global.d.js +4 -0
  105. package/lib/module/{modules → specs}/global.d.js.map +1 -1
  106. package/lib/module/{utils → specs}/install.js +5 -9
  107. package/lib/module/specs/install.js.map +1 -0
  108. package/lib/typescript/core/AudioBuffer.d.ts +2 -0
  109. package/lib/typescript/core/AudioBuffer.d.ts.map +1 -1
  110. package/lib/typescript/core/AudioBufferSourceNode.d.ts +7 -0
  111. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  112. package/lib/typescript/core/AudioDestinationNode.d.ts +0 -3
  113. package/lib/typescript/core/AudioDestinationNode.d.ts.map +1 -1
  114. package/lib/typescript/core/AudioParam.d.ts +4 -0
  115. package/lib/typescript/core/AudioParam.d.ts.map +1 -1
  116. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +0 -3
  117. package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
  118. package/lib/typescript/core/PeriodicWave.d.ts +2 -0
  119. package/lib/typescript/core/PeriodicWave.d.ts.map +1 -1
  120. package/lib/typescript/index.d.ts +13 -3
  121. package/lib/typescript/index.d.ts.map +1 -1
  122. package/lib/typescript/interfaces.d.ts +8 -0
  123. package/lib/typescript/interfaces.d.ts.map +1 -1
  124. package/lib/typescript/{utils → specs}/install.d.ts.map +1 -1
  125. package/metro-config/index.d.ts +5 -0
  126. package/metro-config/index.js +41 -0
  127. package/metro-config/tsconfig.json +3 -0
  128. package/package.json +50 -16
  129. package/scripts/audioapi_utils.rb +56 -0
  130. package/src/core/AudioBufferSourceNode.ts +23 -0
  131. package/src/core/AudioDestinationNode.ts +1 -7
  132. package/src/core/AudioParam.ts +48 -0
  133. package/src/core/AudioScheduledSourceNode.ts +0 -5
  134. package/src/index.native.ts +1 -1
  135. package/src/index.ts +54 -13
  136. package/src/interfaces.ts +17 -0
  137. package/src/{modules → specs}/global.d.ts +2 -0
  138. package/src/{utils → specs}/install.ts +4 -11
  139. package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.cpp +0 -26
  140. package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.cpp +0 -58
  141. package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.h +0 -51
  142. package/common/cpp/AudioAPIInstaller/AudioAPIInstallerWrapper.h +0 -38
  143. package/common/cpp/AudioAPIInstaller/android/AudioAPIInstallerWrapper.cpp +0 -16
  144. package/common/cpp/AudioAPIInstaller/ios/AudioAPIInstallerWrapper.cpp +0 -12
  145. package/common/cpp/HostObjects/AudioBufferHostObject.cpp +0 -150
  146. package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.cpp +0 -79
  147. package/common/cpp/HostObjects/AudioContextHostObject.cpp +0 -55
  148. package/common/cpp/HostObjects/AudioDestinationNodeHostObject.cpp +0 -33
  149. package/common/cpp/HostObjects/AudioNodeHostObject.cpp +0 -102
  150. package/common/cpp/HostObjects/AudioParamHostObject.cpp +0 -115
  151. package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.cpp +0 -73
  152. package/common/cpp/HostObjects/BaseAudioContextHostObject.cpp +0 -250
  153. package/common/cpp/HostObjects/BiquadFilterNodeHostObject.cpp +0 -125
  154. package/common/cpp/HostObjects/GainNodeHostObject.cpp +0 -41
  155. package/common/cpp/HostObjects/OscillatorNodeHostObject.cpp +0 -88
  156. package/common/cpp/HostObjects/PeriodicWaveHostObject.cpp +0 -33
  157. package/common/cpp/HostObjects/StereoPannerNodeHostObject.cpp +0 -41
  158. package/common/cpp/core/ParamChange.cpp +0 -46
  159. package/common/cpp/utils/JsiPromise.h +0 -48
  160. package/common/cpp/utils/android/FFTFrame.cpp +0 -23
  161. package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.cpp +0 -45
  162. package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.h +0 -26
  163. package/common/cpp/wrappers/AudioBufferWrapper.cpp +0 -46
  164. package/common/cpp/wrappers/AudioBufferWrapper.h +0 -30
  165. package/common/cpp/wrappers/AudioContextWrapper.cpp +0 -17
  166. package/common/cpp/wrappers/AudioContextWrapper.h +0 -19
  167. package/common/cpp/wrappers/AudioDestinationNodeWrapper.h +0 -16
  168. package/common/cpp/wrappers/AudioNodeWrapper.cpp +0 -37
  169. package/common/cpp/wrappers/AudioNodeWrapper.h +0 -25
  170. package/common/cpp/wrappers/AudioParamWrapper.cpp +0 -42
  171. package/common/cpp/wrappers/AudioParamWrapper.h +0 -25
  172. package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.cpp +0 -23
  173. package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.h +0 -23
  174. package/common/cpp/wrappers/BaseAudioContextWrapper.cpp +0 -83
  175. package/common/cpp/wrappers/BaseAudioContextWrapper.h +0 -51
  176. package/common/cpp/wrappers/BiquadFilterNodeWrapper.cpp +0 -60
  177. package/common/cpp/wrappers/BiquadFilterNodeWrapper.h +0 -37
  178. package/common/cpp/wrappers/GainNodeWrapper.cpp +0 -14
  179. package/common/cpp/wrappers/GainNodeWrapper.h +0 -20
  180. package/common/cpp/wrappers/OscillatorNodeWrapper.cpp +0 -44
  181. package/common/cpp/wrappers/OscillatorNodeWrapper.h +0 -31
  182. package/common/cpp/wrappers/PeriodicWaveWrapper.h +0 -17
  183. package/common/cpp/wrappers/StereoPannerNodeWrapper.cpp +0 -16
  184. package/common/cpp/wrappers/StereoPannerNodeWrapper.h +0 -21
  185. package/ios/AudioDecoder/AudioDecoder.h +0 -17
  186. package/ios/AudioDecoder/AudioDecoder.m +0 -80
  187. package/ios/AudioDecoder/IOSAudioDecoder.h +0 -28
  188. package/ios/AudioDecoder/IOSAudioDecoder.mm +0 -46
  189. package/lib/module/modules/global.d.js +0 -2
  190. package/lib/module/utils/install.js.map +0 -1
  191. /package/android/src/main/cpp/{AudioPlayer → core}/AudioPlayer.cpp +0 -0
  192. /package/android/src/main/cpp/{AudioPlayer → core}/AudioPlayer.h +0 -0
  193. /package/{android/libs/include → common/cpp/libs}/miniaudio.h +0 -0
  194. /package/ios/{AudioPlayer → core}/AudioPlayer.h +0 -0
  195. /package/ios/{AudioPlayer → core}/IOSAudioPlayer.h +0 -0
  196. /package/ios/{AudioPlayer → core}/IOSAudioPlayer.mm +0 -0
  197. /package/lib/typescript/{utils → specs}/install.d.ts +0 -0
@@ -1,250 +0,0 @@
1
- #include <thread>
2
-
3
- #include "BaseAudioContextHostObject.h"
4
-
5
- namespace audioapi {
6
- using namespace facebook;
7
-
8
- BaseAudioContextHostObject::BaseAudioContextHostObject(
9
- const std::shared_ptr<BaseAudioContextWrapper> &wrapper,
10
- std::shared_ptr<JsiPromise::PromiseVendor> promiseVendor)
11
- : wrapper_(wrapper), promiseVendor_(promiseVendor) {
12
- auto destinationNodeWrapper = wrapper_->getDestination();
13
- destination_ =
14
- AudioDestinationNodeHostObject::createFromWrapper(destinationNodeWrapper);
15
- }
16
-
17
- std::vector<jsi::PropNameID> BaseAudioContextHostObject::getPropertyNames(
18
- jsi::Runtime &runtime) {
19
- std::vector<jsi::PropNameID> propertyNames;
20
- propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "destination"));
21
- propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "state"));
22
- propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "sampleRate"));
23
- propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "currentTime"));
24
- propertyNames.push_back(
25
- jsi::PropNameID::forUtf8(runtime, "createOscillator"));
26
- propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "createGain"));
27
- propertyNames.push_back(
28
- jsi::PropNameID::forUtf8(runtime, "createStereoPanner"));
29
- propertyNames.push_back(
30
- jsi::PropNameID::forUtf8(runtime, "createBiquadFilter"));
31
- propertyNames.push_back(
32
- jsi::PropNameID::forUtf8(runtime, "createBufferSource"));
33
- propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "createBuffer"));
34
- propertyNames.push_back(
35
- jsi::PropNameID::forUtf8(runtime, "createPeriodicWave"));
36
- propertyNames.push_back(
37
- jsi::PropNameID::forUtf8(runtime, "decodeAudioDataSource"));
38
- return propertyNames;
39
- }
40
-
41
- jsi::Value BaseAudioContextHostObject::get(
42
- jsi::Runtime &runtime,
43
- const jsi::PropNameID &propNameId) {
44
- auto propName = propNameId.utf8(runtime);
45
-
46
- if (propName == "destination") {
47
- return jsi::Object::createFromHostObject(runtime, destination_);
48
- }
49
-
50
- if (propName == "state") {
51
- return jsi::String::createFromUtf8(runtime, wrapper_->getState());
52
- }
53
-
54
- if (propName == "sampleRate") {
55
- return {wrapper_->getSampleRate()};
56
- }
57
-
58
- if (propName == "currentTime") {
59
- return {wrapper_->getCurrentTime()};
60
- }
61
-
62
- if (propName == "createOscillator") {
63
- return jsi::Function::createFromHostFunction(
64
- runtime,
65
- propNameId,
66
- 0,
67
- [this](
68
- jsi::Runtime &runtime,
69
- const jsi::Value &thisValue,
70
- const jsi::Value *arguments,
71
- size_t count) -> jsi::Value {
72
- auto oscillator = wrapper_->createOscillator();
73
- auto oscillatorHostObject =
74
- OscillatorNodeHostObject::createFromWrapper(oscillator);
75
- return jsi::Object::createFromHostObject(
76
- runtime, oscillatorHostObject);
77
- });
78
- }
79
-
80
- if (propName == "createGain") {
81
- return jsi::Function::createFromHostFunction(
82
- runtime,
83
- propNameId,
84
- 0,
85
- [this](
86
- jsi::Runtime &runtime,
87
- const jsi::Value &thisValue,
88
- const jsi::Value *arguments,
89
- size_t count) -> jsi::Value {
90
- auto gain = wrapper_->createGain();
91
- auto gainHostObject = GainNodeHostObject::createFromWrapper(gain);
92
- return jsi::Object::createFromHostObject(runtime, gainHostObject);
93
- });
94
- }
95
-
96
- if (propName == "createStereoPanner") {
97
- return jsi::Function::createFromHostFunction(
98
- runtime,
99
- propNameId,
100
- 0,
101
- [this](
102
- jsi::Runtime &runtime,
103
- const jsi::Value &thisValue,
104
- const jsi::Value *arguments,
105
- size_t count) -> jsi::Value {
106
- auto stereoPanner = wrapper_->createStereoPanner();
107
- auto stereoPannerHostObject =
108
- StereoPannerNodeHostObject::createFromWrapper(stereoPanner);
109
- return jsi::Object::createFromHostObject(
110
- runtime, stereoPannerHostObject);
111
- });
112
- }
113
-
114
- if (propName == "createBiquadFilter") {
115
- return jsi::Function::createFromHostFunction(
116
- runtime,
117
- propNameId,
118
- 0,
119
- [this](
120
- jsi::Runtime &runtime,
121
- const jsi::Value &thisValue,
122
- const jsi::Value *arguments,
123
- size_t count) -> jsi::Value {
124
- auto biquadFilter = wrapper_->createBiquadFilter();
125
- auto biquadFilterHostObject =
126
- BiquadFilterNodeHostObject::createFromWrapper(biquadFilter);
127
- return jsi::Object::createFromHostObject(
128
- runtime, biquadFilterHostObject);
129
- });
130
- }
131
-
132
- if (propName == "createBufferSource") {
133
- return jsi::Function::createFromHostFunction(
134
- runtime,
135
- propNameId,
136
- 0,
137
- [this](
138
- jsi::Runtime &runtime,
139
- const jsi::Value &thisValue,
140
- const jsi::Value *arguments,
141
- size_t count) -> jsi::Value {
142
- auto bufferSource = wrapper_->createBufferSource();
143
- auto bufferSourceHostObject =
144
- AudioBufferSourceNodeHostObject::createFromWrapper(bufferSource);
145
- return jsi::Object::createFromHostObject(
146
- runtime, bufferSourceHostObject);
147
- });
148
- }
149
-
150
- if (propName == "createBuffer") {
151
- return jsi::Function::createFromHostFunction(
152
- runtime,
153
- propNameId,
154
- 3,
155
- [this](
156
- jsi::Runtime &runtime,
157
- const jsi::Value &thisValue,
158
- const jsi::Value *arguments,
159
- size_t count) -> jsi::Value {
160
- auto numberOfChannels = static_cast<int>(arguments[0].getNumber());
161
- auto length = static_cast<int>(arguments[1].getNumber());
162
- auto sampleRate = static_cast<int>(arguments[2].getNumber());
163
- auto buffer =
164
- wrapper_->createBuffer(numberOfChannels, length, sampleRate);
165
- auto bufferHostObject =
166
- AudioBufferHostObject::createFromWrapper(buffer);
167
- return jsi::Object::createFromHostObject(runtime, bufferHostObject);
168
- });
169
- }
170
-
171
- if (propName == "createPeriodicWave") {
172
- return jsi::Function::createFromHostFunction(
173
- runtime,
174
- propNameId,
175
- 3,
176
- [this](
177
- jsi::Runtime &runtime,
178
- const jsi::Value &thisValue,
179
- const jsi::Value *arguments,
180
- size_t count) -> jsi::Value {
181
- auto real = arguments[0].getObject(runtime).getArray(runtime);
182
- auto imag = arguments[1].getObject(runtime).getArray(runtime);
183
- auto disableNormalization = arguments[2].getBool();
184
- auto length =
185
- static_cast<int>(real.getProperty(runtime, "length").asNumber());
186
-
187
- auto *realData = new float[length];
188
- auto *imagData = new float[length];
189
-
190
- for (size_t i = 0; i < real.length(runtime); i++) {
191
- realData[i] = static_cast<float>(
192
- real.getValueAtIndex(runtime, i).getNumber());
193
- }
194
- for (size_t i = 0; i < imag.length(runtime); i++) {
195
- realData[i] = static_cast<float>(
196
- imag.getValueAtIndex(runtime, i).getNumber());
197
- }
198
-
199
- auto periodicWave = wrapper_->createPeriodicWave(
200
- realData, imagData, disableNormalization, length);
201
- auto periodicWaveHostObject =
202
- PeriodicWaveHostObject::createFromWrapper(periodicWave);
203
- return jsi::Object::createFromHostObject(
204
- runtime, periodicWaveHostObject);
205
- });
206
- }
207
-
208
- if (propName == "decodeAudioDataSource") {
209
- auto decode = [this](
210
- jsi::Runtime &runtime,
211
- const jsi::Value &,
212
- const jsi::Value *arguments,
213
- size_t count) -> jsi::Value {
214
- auto sourcePath = arguments[0].getString(runtime).utf8(runtime);
215
-
216
- auto promise = promiseVendor_->createPromise(
217
- [this, &runtime, sourcePath](
218
- std::shared_ptr<JsiPromise::Promise> promise) {
219
- std::thread([this,
220
- &runtime,
221
- sourcePath,
222
- promise = std::move(promise)]() {
223
- auto results = wrapper_->decodeAudioDataSource(sourcePath);
224
- auto audioBufferHostObject =
225
- AudioBufferHostObject::createFromWrapper(results);
226
-
227
- promise->resolve(jsi::Object::createFromHostObject(
228
- runtime, audioBufferHostObject));
229
- }).detach();
230
- });
231
-
232
- return promise;
233
- };
234
-
235
- return jsi::Function::createFromHostFunction(
236
- runtime, propNameId, 1, decode);
237
- }
238
-
239
- throw std::runtime_error("Not yet implemented!");
240
- }
241
-
242
- void BaseAudioContextHostObject::set(
243
- jsi::Runtime &runtime,
244
- const jsi::PropNameID &propNameId,
245
- const jsi::Value &value) {
246
- auto propName = propNameId.utf8(runtime);
247
-
248
- throw std::runtime_error("Not yet implemented!");
249
- }
250
- } // namespace audioapi
@@ -1,125 +0,0 @@
1
- #include "BiquadFilterNodeHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- std::shared_ptr<BiquadFilterNodeWrapper>
7
- BiquadFilterNodeHostObject::getBiquadFilterNodeWrapperFromAudioNodeWrapper() {
8
- return std::static_pointer_cast<BiquadFilterNodeWrapper>(wrapper_);
9
- }
10
-
11
- BiquadFilterNodeHostObject::BiquadFilterNodeHostObject(
12
- const std::shared_ptr<BiquadFilterNodeWrapper> &wrapper)
13
- : AudioNodeHostObject(wrapper) {
14
- auto frequencyParam = wrapper->getFrequencyParam();
15
- frequencyParam_ = AudioParamHostObject::createFromWrapper(frequencyParam);
16
- auto detuneParam = wrapper->getDetuneParam();
17
- detuneParam_ = AudioParamHostObject::createFromWrapper(detuneParam);
18
- auto QParam = wrapper->getQParam();
19
- QParam_ = AudioParamHostObject::createFromWrapper(QParam);
20
- auto gainParam = wrapper->getGainParam();
21
- gainParam_ = AudioParamHostObject::createFromWrapper(gainParam);
22
- }
23
-
24
- std::vector<jsi::PropNameID> BiquadFilterNodeHostObject::getPropertyNames(
25
- jsi::Runtime &runtime) {
26
- std::vector<jsi::PropNameID> propertyNames =
27
- AudioNodeHostObject::getPropertyNames(runtime);
28
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "frequency"));
29
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "detune"));
30
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "Q"));
31
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "gain"));
32
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "type"));
33
- propertyNames.push_back(
34
- jsi::PropNameID::forAscii(runtime, "getFrequencyResponse"));
35
- return propertyNames;
36
- }
37
-
38
- jsi::Value BiquadFilterNodeHostObject::get(
39
- jsi::Runtime &runtime,
40
- const jsi::PropNameID &propNameId) {
41
- auto propName = propNameId.utf8(runtime);
42
-
43
- if (propName == "frequency") {
44
- return jsi::Object::createFromHostObject(runtime, frequencyParam_);
45
- }
46
-
47
- if (propName == "detune") {
48
- return jsi::Object::createFromHostObject(runtime, detuneParam_);
49
- }
50
-
51
- if (propName == "Q") {
52
- return jsi::Object::createFromHostObject(runtime, QParam_);
53
- }
54
-
55
- if (propName == "gain") {
56
- return jsi::Object::createFromHostObject(runtime, gainParam_);
57
- }
58
-
59
- if (propName == "type") {
60
- auto wrapper = getBiquadFilterNodeWrapperFromAudioNodeWrapper();
61
- auto waveType = wrapper->getType();
62
- return jsi::String::createFromUtf8(runtime, waveType);
63
- }
64
-
65
- if (propName == "getFrequencyResponse") {
66
- return jsi::Function::createFromHostFunction(
67
- runtime,
68
- propNameId,
69
- 3,
70
- [this](
71
- jsi::Runtime &rt,
72
- const jsi::Value &thisVal,
73
- const jsi::Value *args,
74
- size_t count) -> jsi::Value {
75
- auto frequencyArray = args[0].getObject(rt).asArray(rt);
76
- auto magResponseOut = args[1].getObject(rt).asArray(rt);
77
- auto phaseResponseOut = args[2].getObject(rt).asArray(rt);
78
-
79
- std::vector<float> frequencyArrayVector(frequencyArray.length(rt));
80
- for (size_t i = 0; i < frequencyArray.length(rt); i++) {
81
- frequencyArrayVector[i] = static_cast<float>(
82
- frequencyArray.getValueAtIndex(rt, i).getNumber());
83
- }
84
-
85
- std::vector<float> magResponseOutVector(magResponseOut.length(rt));
86
- std::vector<float> phaseResponseOutVector(
87
- phaseResponseOut.length(rt));
88
-
89
- auto wrapper = getBiquadFilterNodeWrapperFromAudioNodeWrapper();
90
- wrapper->getFrequencyResponse(
91
- frequencyArrayVector,
92
- magResponseOutVector,
93
- phaseResponseOutVector);
94
-
95
- for (size_t i = 0; i < magResponseOutVector.size(); i++) {
96
- magResponseOut.setValueAtIndex(rt, i, magResponseOutVector[i]);
97
- }
98
-
99
- for (size_t i = 0; i < phaseResponseOutVector.size(); i++) {
100
- phaseResponseOut.setValueAtIndex(rt, i, phaseResponseOutVector[i]);
101
- }
102
-
103
- return jsi::Value::undefined();
104
- });
105
- }
106
-
107
- return AudioNodeHostObject::get(runtime, propNameId);
108
- }
109
-
110
- void BiquadFilterNodeHostObject::set(
111
- jsi::Runtime &runtime,
112
- const jsi::PropNameID &propNameId,
113
- const jsi::Value &value) {
114
- auto propName = propNameId.utf8(runtime);
115
-
116
- if (propName == "type") {
117
- std::string filterType = value.getString(runtime).utf8(runtime);
118
- auto wrapper = getBiquadFilterNodeWrapperFromAudioNodeWrapper();
119
- wrapper->setType(filterType);
120
- return;
121
- }
122
-
123
- return AudioNodeHostObject::set(runtime, propNameId, value);
124
- }
125
- } // namespace audioapi
@@ -1,41 +0,0 @@
1
- #include "GainNodeHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- GainNodeHostObject::GainNodeHostObject(
7
- const std::shared_ptr<GainNodeWrapper> &wrapper)
8
- : AudioNodeHostObject(wrapper) {
9
- auto gainParamWrapper = wrapper->getGainParam();
10
- gainParam_ = AudioParamHostObject::createFromWrapper(gainParamWrapper);
11
- }
12
-
13
- std::vector<jsi::PropNameID> GainNodeHostObject::getPropertyNames(
14
- jsi::Runtime &runtime) {
15
- std::vector<jsi::PropNameID> propertyNames =
16
- AudioNodeHostObject::getPropertyNames(runtime);
17
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "gain"));
18
- return propertyNames;
19
- }
20
-
21
- jsi::Value GainNodeHostObject::get(
22
- jsi::Runtime &runtime,
23
- const jsi::PropNameID &propNameId) {
24
- auto propName = propNameId.utf8(runtime);
25
-
26
- if (propName == "gain") {
27
- return jsi::Object::createFromHostObject(runtime, gainParam_);
28
- }
29
-
30
- return AudioNodeHostObject::get(runtime, propNameId);
31
- }
32
-
33
- void GainNodeHostObject::set(
34
- jsi::Runtime &runtime,
35
- const jsi::PropNameID &propNameId,
36
- const jsi::Value &value) {
37
- auto propName = propNameId.utf8(runtime);
38
-
39
- return AudioNodeHostObject::set(runtime, propNameId, value);
40
- }
41
- } // namespace audioapi
@@ -1,88 +0,0 @@
1
- #include "OscillatorNodeHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- std::shared_ptr<OscillatorNodeWrapper>
7
- OscillatorNodeHostObject::getOscillatorNodeWrapperFromAudioNodeWrapper() {
8
- return std::static_pointer_cast<OscillatorNodeWrapper>(wrapper_);
9
- }
10
-
11
- OscillatorNodeHostObject::OscillatorNodeHostObject(
12
- const std::shared_ptr<OscillatorNodeWrapper> &wrapper)
13
- : AudioScheduledSourceNodeHostObject(wrapper) {
14
- auto frequencyParam = wrapper->getFrequencyParam();
15
- frequencyParam_ = AudioParamHostObject::createFromWrapper(frequencyParam);
16
- auto detuneParam = wrapper->getDetuneParam();
17
- detuneParam_ = AudioParamHostObject::createFromWrapper(detuneParam);
18
- }
19
-
20
- std::vector<jsi::PropNameID> OscillatorNodeHostObject::getPropertyNames(
21
- jsi::Runtime &runtime) {
22
- std::vector<jsi::PropNameID> propertyNames =
23
- AudioScheduledSourceNodeHostObject::getPropertyNames(runtime);
24
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "frequency"));
25
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "detune"));
26
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "type"));
27
- propertyNames.push_back(
28
- jsi::PropNameID::forAscii(runtime, "setPeriodicWave"));
29
- return propertyNames;
30
- }
31
-
32
- jsi::Value OscillatorNodeHostObject::get(
33
- jsi::Runtime &runtime,
34
- const jsi::PropNameID &propNameId) {
35
- auto propName = propNameId.utf8(runtime);
36
-
37
- if (propName == "frequency") {
38
- return jsi::Object::createFromHostObject(runtime, frequencyParam_);
39
- }
40
-
41
- if (propName == "detune") {
42
- return jsi::Object::createFromHostObject(runtime, detuneParam_);
43
- }
44
-
45
- if (propName == "type") {
46
- auto wrapper = getOscillatorNodeWrapperFromAudioNodeWrapper();
47
- auto waveType = wrapper->getType();
48
- return jsi::String::createFromUtf8(runtime, waveType);
49
- }
50
-
51
- if (propName == "setPeriodicWave") {
52
- return jsi::Function::createFromHostFunction(
53
- runtime,
54
- propNameId,
55
- 1,
56
- [this](
57
- jsi::Runtime &rt,
58
- const jsi::Value &thisVal,
59
- const jsi::Value *args,
60
- size_t count) -> jsi::Value {
61
- auto wrapper = getOscillatorNodeWrapperFromAudioNodeWrapper();
62
- auto periodicWaveHostObject =
63
- args[0].getObject(rt).asHostObject<PeriodicWaveHostObject>(rt);
64
-
65
- wrapper->setPeriodicWave(periodicWaveHostObject->wrapper_);
66
- return jsi::Value::undefined();
67
- });
68
- }
69
-
70
- return AudioScheduledSourceNodeHostObject::get(runtime, propNameId);
71
- }
72
-
73
- void OscillatorNodeHostObject::set(
74
- jsi::Runtime &runtime,
75
- const jsi::PropNameID &propNameId,
76
- const jsi::Value &value) {
77
- auto propName = propNameId.utf8(runtime);
78
-
79
- if (propName == "type") {
80
- std::string waveType = value.getString(runtime).utf8(runtime);
81
- auto wrapper = getOscillatorNodeWrapperFromAudioNodeWrapper();
82
- wrapper->setType(waveType);
83
- return;
84
- }
85
-
86
- return AudioScheduledSourceNodeHostObject::set(runtime, propNameId, value);
87
- }
88
- } // namespace audioapi
@@ -1,33 +0,0 @@
1
- #include "PeriodicWaveHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- PeriodicWaveHostObject::PeriodicWaveHostObject(
7
- const std::shared_ptr<PeriodicWaveWrapper> &wrapper)
8
- : wrapper_(wrapper) {}
9
-
10
- std::vector<jsi::PropNameID> PeriodicWaveHostObject::getPropertyNames(
11
- jsi::Runtime &runtime) {
12
- std::vector<jsi::PropNameID> propertyNames;
13
- return propertyNames;
14
- }
15
-
16
- jsi::Value PeriodicWaveHostObject::get(
17
- jsi::Runtime &runtime,
18
- const jsi::PropNameID &propNameId) {
19
- auto propName = propNameId.utf8(runtime);
20
-
21
- throw std::runtime_error("Not yet implemented!");
22
- }
23
-
24
- void PeriodicWaveHostObject::set(
25
- jsi::Runtime &runtime,
26
- const jsi::PropNameID &propNameId,
27
- const jsi::Value &value) {
28
- auto propName = propNameId.utf8(runtime);
29
-
30
- throw std::runtime_error("Not yet implemented!");
31
- }
32
-
33
- } // namespace audioapi
@@ -1,41 +0,0 @@
1
- #include "StereoPannerNodeHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- StereoPannerNodeHostObject::StereoPannerNodeHostObject(
7
- const std::shared_ptr<StereoPannerNodeWrapper> &wrapper)
8
- : AudioNodeHostObject(wrapper) {
9
- auto panParam = wrapper->getPanParam();
10
- panParam_ = AudioParamHostObject::createFromWrapper(panParam);
11
- }
12
-
13
- std::vector<jsi::PropNameID> StereoPannerNodeHostObject::getPropertyNames(
14
- jsi::Runtime &runtime) {
15
- std::vector<jsi::PropNameID> propertyNames =
16
- AudioNodeHostObject::getPropertyNames(runtime);
17
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "pan"));
18
- return propertyNames;
19
- }
20
-
21
- jsi::Value StereoPannerNodeHostObject::get(
22
- jsi::Runtime &runtime,
23
- const jsi::PropNameID &propNameId) {
24
- auto propName = propNameId.utf8(runtime);
25
-
26
- if (propName == "pan") {
27
- return jsi::Object::createFromHostObject(runtime, panParam_);
28
- }
29
-
30
- return AudioNodeHostObject::get(runtime, propNameId);
31
- }
32
-
33
- void StereoPannerNodeHostObject::set(
34
- jsi::Runtime &runtime,
35
- const jsi::PropNameID &propNameId,
36
- const jsi::Value &value) {
37
- auto propName = propNameId.utf8(runtime);
38
-
39
- return AudioNodeHostObject::set(runtime, propNameId, value);
40
- }
41
- } // namespace audioapi
@@ -1,46 +0,0 @@
1
- #include "ParamChange.h"
2
-
3
- #include <utility>
4
-
5
- namespace audioapi {
6
-
7
- ParamChange::ParamChange(
8
- double startTime,
9
- double endTime,
10
- float startValue,
11
- float endValue,
12
- std::function<float(double, double, float, float, double)> calculateValue)
13
- : startTime_(startTime),
14
- endTime_(endTime),
15
- startValue_(startValue),
16
- endValue_(endValue),
17
- calculateValue_(std::move(calculateValue)) {}
18
-
19
- double ParamChange::getEndTime() const {
20
- return endTime_;
21
- }
22
-
23
- double ParamChange::getStartTime() const {
24
- return startTime_;
25
- }
26
-
27
- float ParamChange::getEndValue() const {
28
- return endValue_;
29
- }
30
-
31
- float ParamChange::getStartValue() const {
32
- return startValue_;
33
- }
34
-
35
- std::function<float(double, double, float, float, double)>
36
- ParamChange::getCalculateValue() const {
37
- return calculateValue_;
38
- }
39
-
40
- bool ParamChange::operator<(const ParamChange &other) const {
41
- if (startTime_ != other.startTime_)
42
- return startTime_ < other.startTime_;
43
- return endTime_ < other.endTime_;
44
- }
45
-
46
- } // namespace audioapi
@@ -1,48 +0,0 @@
1
- #pragma once
2
-
3
- #include <ReactCommon/CallInvoker.h>
4
- #include <jsi/jsi.h>
5
- #include <memory>
6
- #include <string>
7
- #include <utility>
8
-
9
- namespace JsiPromise {
10
-
11
- using namespace facebook;
12
-
13
- class Promise {
14
- public:
15
- Promise(
16
- std::function<void(jsi::Value)> resolve,
17
- std::function<void(const std::string &)> reject)
18
- : _resolve(std::move(resolve)), _reject(std::move(reject)) {}
19
-
20
- bool isResolved;
21
- void resolve(jsi::Value &&value) {
22
- _resolve(std::forward<jsi::Value>(value));
23
- }
24
- void reject(const std::string &errorMessage) {
25
- _reject(errorMessage);
26
- }
27
-
28
- private:
29
- std::function<void(jsi::Value)> _resolve;
30
- std::function<void(const std::string &)> _reject;
31
- };
32
-
33
- class PromiseVendor {
34
- public:
35
- PromiseVendor(
36
- jsi::Runtime *runtime,
37
- std::shared_ptr<react::CallInvoker> callInvoker)
38
- : _runtime(runtime), _callInvoker(callInvoker) {}
39
-
40
- public:
41
- jsi::Value createPromise(std::function<void(std::shared_ptr<Promise>)> func);
42
-
43
- private:
44
- jsi::Runtime *_runtime;
45
- std::shared_ptr<react::CallInvoker> _callInvoker;
46
- };
47
-
48
- } // namespace JsiPromise
@@ -1,23 +0,0 @@
1
- #if defined(ANDROID)
2
- #include "FFTFrame.h"
3
- #include <fftw3.h>
4
-
5
- namespace audioapi {
6
- void FFTFrame::inverse(float *timeDomainData) {
7
- fftwf_complex *freqDomainData = fftwf_alloc_complex(size_ / 2);
8
- for (int i = 0; i < size_ / 2; i++) {
9
- freqDomainData[i][0] = realData_[i];
10
- freqDomainData[i][1] = imaginaryData_[i];
11
- }
12
-
13
- auto plan = fftwf_plan_dft_c2r_1d(
14
- size_, freqDomainData, timeDomainData, FFTW_ESTIMATE);
15
- fftwf_execute(plan);
16
- fftwf_destroy_plan(plan);
17
- fftwf_free(freqDomainData);
18
-
19
- VectorMath::multiplyByScalar(
20
- timeDomainData, 1.0f / static_cast<float>(size_), timeDomainData, size_);
21
- }
22
- } // namespace audioapi
23
- #endif