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.
- package/RNAudioAPI.podspec +40 -29
- package/android/CMakeLists.txt +17 -21
- package/android/build.gradle +26 -9
- package/android/src/main/cpp/OnLoad.cpp +1 -1
- package/android/src/main/cpp/core/AudioAPIInstaller.cpp +37 -0
- package/android/src/main/cpp/{AudioAPIInstaller → core}/AudioAPIInstaller.h +5 -16
- package/android/src/main/cpp/{AudioDecoder → core}/AudioDecoder.cpp +0 -8
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIPackage.kt +2 -0
- package/android/src/main/java/com/swmansion/audioapi/nativemodules/AudioAPIModule.kt +6 -4
- package/common/cpp/HostObjects/AudioAPIInstallerHostObject.h +48 -0
- package/common/cpp/HostObjects/AudioBufferHostObject.h +79 -13
- package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.h +93 -14
- package/common/cpp/HostObjects/AudioContextHostObject.h +10 -21
- package/common/cpp/HostObjects/AudioDestinationNodeHostObject.h +3 -16
- package/common/cpp/HostObjects/AudioNodeHostObject.h +48 -11
- package/common/cpp/HostObjects/AudioParamHostObject.h +93 -14
- package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.h +23 -16
- package/common/cpp/HostObjects/BaseAudioContextHostObject.h +131 -14
- package/common/cpp/HostObjects/BiquadFilterNodeHostObject.h +76 -18
- package/common/cpp/HostObjects/GainNodeHostObject.h +10 -15
- package/common/cpp/HostObjects/OscillatorNodeHostObject.h +40 -17
- package/common/cpp/HostObjects/PeriodicWaveHostObject.h +4 -17
- package/common/cpp/HostObjects/StereoPannerNodeHostObject.h +10 -17
- package/common/cpp/core/AudioBufferSourceNode.cpp +181 -73
- package/common/cpp/core/AudioBufferSourceNode.h +41 -1
- package/{android/src/main/cpp/AudioDecoder → common/cpp/core}/AudioDecoder.h +1 -3
- package/common/cpp/core/AudioDestinationNode.h +1 -1
- package/common/cpp/core/AudioParam.cpp +218 -58
- package/common/cpp/core/AudioParam.h +19 -15
- package/common/cpp/core/AudioScheduledSourceNode.cpp +94 -21
- package/common/cpp/core/AudioScheduledSourceNode.h +16 -5
- package/common/cpp/core/BaseAudioContext.cpp +3 -13
- package/common/cpp/core/BaseAudioContext.h +2 -4
- package/common/cpp/core/BiquadFilterNode.cpp +5 -7
- package/common/cpp/{HostObjects → core}/Constants.h +2 -2
- package/common/cpp/core/GainNode.cpp +1 -1
- package/common/cpp/core/OscillatorNode.cpp +11 -5
- package/common/cpp/core/ParamChangeEvent.cpp +58 -0
- package/common/cpp/core/{ParamChange.h → ParamChangeEvent.h} +11 -5
- package/common/cpp/core/StereoPannerNode.cpp +1 -1
- package/common/cpp/jsi/JsiHostObject.cpp +90 -0
- package/common/cpp/jsi/JsiHostObject.h +100 -0
- package/common/cpp/{utils → jsi}/JsiPromise.cpp +10 -9
- package/common/cpp/jsi/JsiPromise.h +48 -0
- package/common/cpp/jsi/RuntimeAwareCache.h +57 -0
- package/common/cpp/jsi/RuntimeLifecycleMonitor.cpp +61 -0
- package/common/cpp/jsi/RuntimeLifecycleMonitor.h +32 -0
- package/common/cpp/types/BiquadFilterType.h +0 -4
- package/common/cpp/types/ChannelCountMode.h +0 -3
- package/common/cpp/types/ChannelInterpretation.h +0 -3
- package/common/cpp/types/ContextState.h +0 -3
- package/common/cpp/types/OscillatorType.h +0 -4
- package/common/cpp/types/ParamChangeEventType.h +13 -0
- package/common/cpp/utils/AudioUtils.cpp +26 -0
- package/common/cpp/utils/AudioUtils.h +12 -0
- package/common/cpp/utils/{ios/FFTFrame.cpp → FFTFrame.cpp} +30 -3
- package/common/cpp/utils/VectorMath.h +7 -33
- package/ios/AudioAPIModule.h +4 -12
- package/ios/AudioAPIModule.mm +26 -25
- package/ios/core/AudioDecoder.mm +45 -0
- package/ios/{AudioPlayer → core}/AudioPlayer.m +2 -1
- package/lib/module/core/AudioBuffer.js +3 -1
- package/lib/module/core/AudioBuffer.js.map +1 -1
- package/lib/module/core/AudioBufferSourceNode.js +19 -2
- package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/module/core/AudioContext.js +3 -1
- package/lib/module/core/AudioContext.js.map +1 -1
- package/lib/module/core/AudioDestinationNode.js +4 -6
- package/lib/module/core/AudioDestinationNode.js.map +1 -1
- package/lib/module/core/AudioNode.js +3 -1
- package/lib/module/core/AudioNode.js.map +1 -1
- package/lib/module/core/AudioParam.js +27 -1
- package/lib/module/core/AudioParam.js.map +1 -1
- package/lib/module/core/AudioScheduledSourceNode.js +4 -5
- package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +11 -9
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/BiquadFilterNode.js +5 -3
- package/lib/module/core/BiquadFilterNode.js.map +1 -1
- package/lib/module/core/GainNode.js +4 -2
- package/lib/module/core/GainNode.js.map +1 -1
- package/lib/module/core/OscillatorNode.js +5 -3
- package/lib/module/core/OscillatorNode.js.map +1 -1
- package/lib/module/core/PeriodicWave.js +2 -0
- package/lib/module/core/PeriodicWave.js.map +1 -1
- package/lib/module/core/StereoPannerNode.js +4 -2
- package/lib/module/core/StereoPannerNode.js.map +1 -1
- package/lib/module/core/types.js +1 -1
- package/lib/module/errors/IndexSizeError.js +2 -0
- package/lib/module/errors/IndexSizeError.js.map +1 -1
- package/lib/module/errors/InvalidAccessError.js +2 -0
- package/lib/module/errors/InvalidAccessError.js.map +1 -1
- package/lib/module/errors/InvalidStateError.js +2 -0
- package/lib/module/errors/InvalidStateError.js.map +1 -1
- package/lib/module/errors/RangeError.js +2 -0
- package/lib/module/errors/RangeError.js.map +1 -1
- package/lib/module/errors/index.js +6 -4
- package/lib/module/errors/index.js.map +1 -1
- package/lib/module/index.js +35 -10
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.native.js +16 -14
- package/lib/module/index.native.js.map +1 -1
- package/lib/module/interfaces.js +2 -0
- package/lib/module/specs/global.d.js +4 -0
- package/lib/module/{modules → specs}/global.d.js.map +1 -1
- package/lib/module/{utils → specs}/install.js +5 -9
- package/lib/module/specs/install.js.map +1 -0
- package/lib/typescript/core/AudioBuffer.d.ts +2 -0
- package/lib/typescript/core/AudioBuffer.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferSourceNode.d.ts +7 -0
- package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioDestinationNode.d.ts +0 -3
- package/lib/typescript/core/AudioDestinationNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioParam.d.ts +4 -0
- package/lib/typescript/core/AudioParam.d.ts.map +1 -1
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts +0 -3
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/PeriodicWave.d.ts +2 -0
- package/lib/typescript/core/PeriodicWave.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +13 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +8 -0
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/{utils → specs}/install.d.ts.map +1 -1
- package/metro-config/index.d.ts +5 -0
- package/metro-config/index.js +41 -0
- package/metro-config/tsconfig.json +3 -0
- package/package.json +50 -16
- package/scripts/audioapi_utils.rb +56 -0
- package/src/core/AudioBufferSourceNode.ts +23 -0
- package/src/core/AudioDestinationNode.ts +1 -7
- package/src/core/AudioParam.ts +48 -0
- package/src/core/AudioScheduledSourceNode.ts +0 -5
- package/src/index.native.ts +1 -1
- package/src/index.ts +54 -13
- package/src/interfaces.ts +17 -0
- package/src/{modules → specs}/global.d.ts +2 -0
- package/src/{utils → specs}/install.ts +4 -11
- package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.cpp +0 -26
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.cpp +0 -58
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.h +0 -51
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerWrapper.h +0 -38
- package/common/cpp/AudioAPIInstaller/android/AudioAPIInstallerWrapper.cpp +0 -16
- package/common/cpp/AudioAPIInstaller/ios/AudioAPIInstallerWrapper.cpp +0 -12
- package/common/cpp/HostObjects/AudioBufferHostObject.cpp +0 -150
- package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.cpp +0 -79
- package/common/cpp/HostObjects/AudioContextHostObject.cpp +0 -55
- package/common/cpp/HostObjects/AudioDestinationNodeHostObject.cpp +0 -33
- package/common/cpp/HostObjects/AudioNodeHostObject.cpp +0 -102
- package/common/cpp/HostObjects/AudioParamHostObject.cpp +0 -115
- package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.cpp +0 -73
- package/common/cpp/HostObjects/BaseAudioContextHostObject.cpp +0 -250
- package/common/cpp/HostObjects/BiquadFilterNodeHostObject.cpp +0 -125
- package/common/cpp/HostObjects/GainNodeHostObject.cpp +0 -41
- package/common/cpp/HostObjects/OscillatorNodeHostObject.cpp +0 -88
- package/common/cpp/HostObjects/PeriodicWaveHostObject.cpp +0 -33
- package/common/cpp/HostObjects/StereoPannerNodeHostObject.cpp +0 -41
- package/common/cpp/core/ParamChange.cpp +0 -46
- package/common/cpp/utils/JsiPromise.h +0 -48
- package/common/cpp/utils/android/FFTFrame.cpp +0 -23
- package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.cpp +0 -45
- package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.h +0 -26
- package/common/cpp/wrappers/AudioBufferWrapper.cpp +0 -46
- package/common/cpp/wrappers/AudioBufferWrapper.h +0 -30
- package/common/cpp/wrappers/AudioContextWrapper.cpp +0 -17
- package/common/cpp/wrappers/AudioContextWrapper.h +0 -19
- package/common/cpp/wrappers/AudioDestinationNodeWrapper.h +0 -16
- package/common/cpp/wrappers/AudioNodeWrapper.cpp +0 -37
- package/common/cpp/wrappers/AudioNodeWrapper.h +0 -25
- package/common/cpp/wrappers/AudioParamWrapper.cpp +0 -42
- package/common/cpp/wrappers/AudioParamWrapper.h +0 -25
- package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.cpp +0 -23
- package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.h +0 -23
- package/common/cpp/wrappers/BaseAudioContextWrapper.cpp +0 -83
- package/common/cpp/wrappers/BaseAudioContextWrapper.h +0 -51
- package/common/cpp/wrappers/BiquadFilterNodeWrapper.cpp +0 -60
- package/common/cpp/wrappers/BiquadFilterNodeWrapper.h +0 -37
- package/common/cpp/wrappers/GainNodeWrapper.cpp +0 -14
- package/common/cpp/wrappers/GainNodeWrapper.h +0 -20
- package/common/cpp/wrappers/OscillatorNodeWrapper.cpp +0 -44
- package/common/cpp/wrappers/OscillatorNodeWrapper.h +0 -31
- package/common/cpp/wrappers/PeriodicWaveWrapper.h +0 -17
- package/common/cpp/wrappers/StereoPannerNodeWrapper.cpp +0 -16
- package/common/cpp/wrappers/StereoPannerNodeWrapper.h +0 -21
- package/ios/AudioDecoder/AudioDecoder.h +0 -17
- package/ios/AudioDecoder/AudioDecoder.m +0 -80
- package/ios/AudioDecoder/IOSAudioDecoder.h +0 -28
- package/ios/AudioDecoder/IOSAudioDecoder.mm +0 -46
- package/lib/module/modules/global.d.js +0 -2
- package/lib/module/utils/install.js.map +0 -1
- /package/android/src/main/cpp/{AudioPlayer → core}/AudioPlayer.cpp +0 -0
- /package/android/src/main/cpp/{AudioPlayer → core}/AudioPlayer.h +0 -0
- /package/{android/libs/include → common/cpp/libs}/miniaudio.h +0 -0
- /package/ios/{AudioPlayer → core}/AudioPlayer.h +0 -0
- /package/ios/{AudioPlayer → core}/IOSAudioPlayer.h +0 -0
- /package/ios/{AudioPlayer → core}/IOSAudioPlayer.mm +0 -0
- /package/lib/typescript/{utils → specs}/install.d.ts +0 -0
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
#include <memory>
|
|
5
5
|
#include <vector>
|
|
6
6
|
|
|
7
|
-
#include "
|
|
7
|
+
#include "AudioContext.h"
|
|
8
8
|
#include "BaseAudioContextHostObject.h"
|
|
9
|
-
#include "JsiPromise.h"
|
|
10
9
|
|
|
11
10
|
namespace audioapi {
|
|
12
11
|
using namespace facebook;
|
|
@@ -14,26 +13,16 @@ using namespace facebook;
|
|
|
14
13
|
class AudioContextHostObject : public BaseAudioContextHostObject {
|
|
15
14
|
public:
|
|
16
15
|
explicit AudioContextHostObject(
|
|
17
|
-
const std::shared_ptr<
|
|
18
|
-
std::shared_ptr<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
void set(
|
|
23
|
-
jsi::Runtime &runtime,
|
|
24
|
-
const jsi::PropNameID &name,
|
|
25
|
-
const jsi::Value &value) override;
|
|
26
|
-
|
|
27
|
-
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
28
|
-
|
|
29
|
-
static std::shared_ptr<AudioContextHostObject> createFromWrapper(
|
|
30
|
-
const std::shared_ptr<AudioContextWrapper> &wrapper,
|
|
31
|
-
std::shared_ptr<JsiPromise::PromiseVendor> promiseVendor) {
|
|
32
|
-
return std::make_shared<AudioContextHostObject>(wrapper, promiseVendor);
|
|
16
|
+
const std::shared_ptr<AudioContext> &audioContext,
|
|
17
|
+
const std::shared_ptr<PromiseVendor> &promiseVendor)
|
|
18
|
+
: BaseAudioContextHostObject(audioContext, promiseVendor) {
|
|
19
|
+
addFunctions(JSI_EXPORT_FUNCTION(AudioContextHostObject, close));
|
|
33
20
|
}
|
|
34
21
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
22
|
+
JSI_HOST_FUNCTION(close) {
|
|
23
|
+
auto audioContext = std::static_pointer_cast<AudioContext>(context_);
|
|
24
|
+
audioContext->close();
|
|
25
|
+
return jsi::Value::undefined();
|
|
26
|
+
}
|
|
38
27
|
};
|
|
39
28
|
} // namespace audioapi
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#include <memory>
|
|
4
4
|
#include <vector>
|
|
5
5
|
|
|
6
|
-
#include "
|
|
6
|
+
#include "AudioDestinationNode.h"
|
|
7
7
|
#include "AudioNodeHostObject.h"
|
|
8
8
|
|
|
9
9
|
namespace audioapi {
|
|
@@ -12,20 +12,7 @@ using namespace facebook;
|
|
|
12
12
|
class AudioDestinationNodeHostObject : public AudioNodeHostObject {
|
|
13
13
|
public:
|
|
14
14
|
explicit AudioDestinationNodeHostObject(
|
|
15
|
-
const std::shared_ptr<
|
|
16
|
-
|
|
17
|
-
jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
|
|
18
|
-
|
|
19
|
-
void set(
|
|
20
|
-
jsi::Runtime &runtime,
|
|
21
|
-
const jsi::PropNameID &name,
|
|
22
|
-
const jsi::Value &value) override;
|
|
23
|
-
|
|
24
|
-
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
25
|
-
|
|
26
|
-
static std::shared_ptr<AudioDestinationNodeHostObject> createFromWrapper(
|
|
27
|
-
const std::shared_ptr<AudioDestinationNodeWrapper> &wrapper) {
|
|
28
|
-
return std::make_shared<AudioDestinationNodeHostObject>(wrapper);
|
|
29
|
-
}
|
|
15
|
+
const std::shared_ptr<AudioDestinationNode> &node)
|
|
16
|
+
: AudioNodeHostObject(node) {}
|
|
30
17
|
};
|
|
31
18
|
} // namespace audioapi
|
|
@@ -4,26 +4,63 @@
|
|
|
4
4
|
#include <memory>
|
|
5
5
|
#include <vector>
|
|
6
6
|
|
|
7
|
-
#include
|
|
7
|
+
#include <JsiHostObject.h>
|
|
8
|
+
#include "AudioNode.h"
|
|
8
9
|
|
|
9
10
|
namespace audioapi {
|
|
10
11
|
using namespace facebook;
|
|
11
12
|
|
|
12
|
-
class AudioNodeHostObject : public
|
|
13
|
+
class AudioNodeHostObject : public JsiHostObject {
|
|
13
14
|
public:
|
|
14
|
-
explicit AudioNodeHostObject(
|
|
15
|
-
|
|
15
|
+
explicit AudioNodeHostObject(const std::shared_ptr<AudioNode> &node)
|
|
16
|
+
: node_(node) {
|
|
17
|
+
addGetters(
|
|
18
|
+
JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, numberOfInputs),
|
|
19
|
+
JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, numberOfOutputs),
|
|
20
|
+
JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, channelCount),
|
|
21
|
+
JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, channelCountMode),
|
|
22
|
+
JSI_EXPORT_PROPERTY_GETTER(AudioNodeHostObject, channelInterpretation));
|
|
23
|
+
addFunctions(
|
|
24
|
+
JSI_EXPORT_FUNCTION(AudioNodeHostObject, connect),
|
|
25
|
+
JSI_EXPORT_FUNCTION(AudioNodeHostObject, disconnect));
|
|
26
|
+
}
|
|
16
27
|
|
|
17
|
-
|
|
28
|
+
JSI_PROPERTY_GETTER(numberOfInputs) {
|
|
29
|
+
return {node_->getNumberOfInputs()};
|
|
30
|
+
}
|
|
18
31
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const jsi::Value &value) override;
|
|
32
|
+
JSI_PROPERTY_GETTER(numberOfOutputs) {
|
|
33
|
+
return {node_->getNumberOfOutputs()};
|
|
34
|
+
}
|
|
23
35
|
|
|
24
|
-
|
|
36
|
+
JSI_PROPERTY_GETTER(channelCount) {
|
|
37
|
+
return {node_->getChannelCount()};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
JSI_PROPERTY_GETTER(channelCountMode) {
|
|
41
|
+
return jsi::String::createFromUtf8(runtime, node_->getChannelCountMode());
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
JSI_PROPERTY_GETTER(channelInterpretation) {
|
|
45
|
+
return jsi::String::createFromUtf8(
|
|
46
|
+
runtime, node_->getChannelInterpretation());
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
JSI_HOST_FUNCTION(connect) {
|
|
50
|
+
auto node =
|
|
51
|
+
args[0].getObject(runtime).getHostObject<AudioNodeHostObject>(runtime);
|
|
52
|
+
node_->connect(std::shared_ptr<AudioNodeHostObject>(node)->node_);
|
|
53
|
+
return jsi::Value::undefined();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
JSI_HOST_FUNCTION(disconnect) {
|
|
57
|
+
auto node =
|
|
58
|
+
args[0].getObject(runtime).getHostObject<AudioNodeHostObject>(runtime);
|
|
59
|
+
node_->disconnect(std::shared_ptr<AudioNodeHostObject>(node)->node_);
|
|
60
|
+
return jsi::Value::undefined();
|
|
61
|
+
}
|
|
25
62
|
|
|
26
63
|
protected:
|
|
27
|
-
std::shared_ptr<
|
|
64
|
+
std::shared_ptr<AudioNode> node_;
|
|
28
65
|
};
|
|
29
66
|
} // namespace audioapi
|
|
@@ -4,31 +4,110 @@
|
|
|
4
4
|
#include <memory>
|
|
5
5
|
#include <vector>
|
|
6
6
|
|
|
7
|
-
#include
|
|
7
|
+
#include <JsiHostObject.h>
|
|
8
|
+
#include "AudioParam.h"
|
|
8
9
|
|
|
9
10
|
namespace audioapi {
|
|
10
11
|
using namespace facebook;
|
|
11
12
|
|
|
12
|
-
class AudioParamHostObject : public
|
|
13
|
+
class AudioParamHostObject : public JsiHostObject {
|
|
13
14
|
public:
|
|
14
|
-
explicit AudioParamHostObject(
|
|
15
|
-
|
|
15
|
+
explicit AudioParamHostObject(const std::shared_ptr<AudioParam> ¶m)
|
|
16
|
+
: param_(param) {
|
|
17
|
+
addGetters(
|
|
18
|
+
JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, value),
|
|
19
|
+
JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, defaultValue),
|
|
20
|
+
JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, minValue),
|
|
21
|
+
JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, maxValue));
|
|
16
22
|
|
|
17
|
-
|
|
23
|
+
addFunctions(
|
|
24
|
+
JSI_EXPORT_FUNCTION(AudioParamHostObject, setValueAtTime),
|
|
25
|
+
JSI_EXPORT_FUNCTION(AudioParamHostObject, linearRampToValueAtTime),
|
|
26
|
+
JSI_EXPORT_FUNCTION(AudioParamHostObject, exponentialRampToValueAtTime),
|
|
27
|
+
JSI_EXPORT_FUNCTION(AudioParamHostObject, setTargetAtTime),
|
|
28
|
+
JSI_EXPORT_FUNCTION(AudioParamHostObject, setValueCurveAtTime),
|
|
29
|
+
JSI_EXPORT_FUNCTION(AudioParamHostObject, cancelScheduledValues),
|
|
30
|
+
JSI_EXPORT_FUNCTION(AudioParamHostObject, cancelAndHoldAtTime));
|
|
18
31
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
addSetters(JSI_EXPORT_PROPERTY_SETTER(AudioParamHostObject, value));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
JSI_PROPERTY_GETTER(value) {
|
|
36
|
+
return {param_->getValue()};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
JSI_PROPERTY_GETTER(defaultValue) {
|
|
40
|
+
return {param_->getDefaultValue()};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
JSI_PROPERTY_GETTER(minValue) {
|
|
44
|
+
return {param_->getMinValue()};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
JSI_PROPERTY_GETTER(maxValue) {
|
|
48
|
+
return {param_->getMaxValue()};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
JSI_HOST_FUNCTION(setValueAtTime) {
|
|
52
|
+
auto value = static_cast<float>(args[0].getNumber());
|
|
53
|
+
double startTime = args[1].getNumber();
|
|
54
|
+
param_->setValueAtTime(value, startTime);
|
|
55
|
+
return jsi::Value::undefined();
|
|
56
|
+
}
|
|
23
57
|
|
|
24
|
-
|
|
58
|
+
JSI_HOST_FUNCTION(linearRampToValueAtTime) {
|
|
59
|
+
auto value = static_cast<float>(args[0].getNumber());
|
|
60
|
+
double endTime = args[1].getNumber();
|
|
61
|
+
param_->linearRampToValueAtTime(value, endTime);
|
|
62
|
+
return jsi::Value::undefined();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
JSI_HOST_FUNCTION(exponentialRampToValueAtTime) {
|
|
66
|
+
auto value = static_cast<float>(args[0].getNumber());
|
|
67
|
+
double endTime = args[1].getNumber();
|
|
68
|
+
param_->exponentialRampToValueAtTime(value, endTime);
|
|
69
|
+
return jsi::Value::undefined();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
JSI_HOST_FUNCTION(setTargetAtTime) {
|
|
73
|
+
auto target = static_cast<float>(args[0].getNumber());
|
|
74
|
+
double startTime = args[1].getNumber();
|
|
75
|
+
double timeConstant = args[2].getNumber();
|
|
76
|
+
param_->setTargetAtTime(target, startTime, timeConstant);
|
|
77
|
+
return jsi::Value::undefined();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
JSI_HOST_FUNCTION(setValueCurveAtTime) {
|
|
81
|
+
auto values = args[0].getObject(runtime).asArray(runtime);
|
|
82
|
+
auto length = static_cast<int>(values.length(runtime));
|
|
83
|
+
auto valuesData = new float[length];
|
|
84
|
+
for (size_t i = 0; i < values.length(runtime); i++) {
|
|
85
|
+
valuesData[i] =
|
|
86
|
+
static_cast<float>(values.getValueAtIndex(runtime, i).getNumber());
|
|
87
|
+
}
|
|
88
|
+
double startTime = args[1].getNumber();
|
|
89
|
+
double duration = args[2].getNumber();
|
|
90
|
+
param_->setValueCurveAtTime(valuesData, length, startTime, duration);
|
|
91
|
+
return jsi::Value::undefined();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
JSI_HOST_FUNCTION(cancelScheduledValues) {
|
|
95
|
+
double cancelTime = args[0].getNumber();
|
|
96
|
+
param_->cancelScheduledValues(cancelTime);
|
|
97
|
+
return jsi::Value::undefined();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
JSI_HOST_FUNCTION(cancelAndHoldAtTime) {
|
|
101
|
+
double cancelTime = args[0].getNumber();
|
|
102
|
+
param_->cancelAndHoldAtTime(cancelTime);
|
|
103
|
+
return jsi::Value::undefined();
|
|
104
|
+
}
|
|
25
105
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return std::make_shared<AudioParamHostObject>(wrapper);
|
|
106
|
+
JSI_PROPERTY_SETTER(value) {
|
|
107
|
+
param_->setValue(static_cast<float>(value.getNumber()));
|
|
29
108
|
}
|
|
30
109
|
|
|
31
110
|
private:
|
|
32
|
-
std::shared_ptr<
|
|
111
|
+
std::shared_ptr<AudioParam> param_;
|
|
33
112
|
};
|
|
34
113
|
} // namespace audioapi
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#include <vector>
|
|
5
5
|
|
|
6
6
|
#include "AudioNodeHostObject.h"
|
|
7
|
-
#include "
|
|
7
|
+
#include "AudioScheduledSourceNode.h"
|
|
8
8
|
|
|
9
9
|
namespace audioapi {
|
|
10
10
|
using namespace facebook;
|
|
@@ -12,20 +12,27 @@ using namespace facebook;
|
|
|
12
12
|
class AudioScheduledSourceNodeHostObject : public AudioNodeHostObject {
|
|
13
13
|
public:
|
|
14
14
|
explicit AudioScheduledSourceNodeHostObject(
|
|
15
|
-
const std::shared_ptr<
|
|
16
|
-
: AudioNodeHostObject(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
15
|
+
const std::shared_ptr<AudioScheduledSourceNode> &node)
|
|
16
|
+
: AudioNodeHostObject(node) {
|
|
17
|
+
addFunctions(
|
|
18
|
+
JSI_EXPORT_FUNCTION(AudioScheduledSourceNodeHostObject, start),
|
|
19
|
+
JSI_EXPORT_FUNCTION(AudioScheduledSourceNodeHostObject, stop));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
JSI_HOST_FUNCTION(start) {
|
|
23
|
+
auto time = args[0].getNumber();
|
|
24
|
+
auto audioScheduleSourceNode =
|
|
25
|
+
std::static_pointer_cast<AudioScheduledSourceNode>(node_);
|
|
26
|
+
audioScheduleSourceNode->start(time);
|
|
27
|
+
return jsi::Value::undefined();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
JSI_HOST_FUNCTION(stop) {
|
|
31
|
+
auto time = args[0].getNumber();
|
|
32
|
+
auto audioScheduleSourceNode =
|
|
33
|
+
std::static_pointer_cast<AudioScheduledSourceNode>(node_);
|
|
34
|
+
audioScheduleSourceNode->stop(time);
|
|
35
|
+
return jsi::Value::undefined();
|
|
36
|
+
}
|
|
30
37
|
};
|
|
31
38
|
} // namespace audioapi
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
#include <utility>
|
|
6
6
|
#include <vector>
|
|
7
7
|
|
|
8
|
+
#include <JsiHostObject.h>
|
|
9
|
+
#include <JsiPromise.h>
|
|
10
|
+
|
|
8
11
|
#include "AudioBufferHostObject.h"
|
|
9
12
|
#include "AudioBufferSourceNodeHostObject.h"
|
|
10
13
|
#include "AudioDestinationNodeHostObject.h"
|
|
11
|
-
#include "
|
|
14
|
+
#include "BaseAudioContext.h"
|
|
12
15
|
#include "BiquadFilterNodeHostObject.h"
|
|
13
16
|
#include "GainNodeHostObject.h"
|
|
14
|
-
#include "JsiPromise.h"
|
|
15
17
|
#include "OscillatorNodeHostObject.h"
|
|
16
18
|
#include "PeriodicWaveHostObject.h"
|
|
17
19
|
#include "StereoPannerNodeHostObject.h"
|
|
@@ -19,24 +21,139 @@
|
|
|
19
21
|
namespace audioapi {
|
|
20
22
|
using namespace facebook;
|
|
21
23
|
|
|
22
|
-
class BaseAudioContextHostObject : public
|
|
24
|
+
class BaseAudioContextHostObject : public JsiHostObject {
|
|
23
25
|
public:
|
|
24
26
|
explicit BaseAudioContextHostObject(
|
|
25
|
-
const std::shared_ptr<
|
|
26
|
-
std::shared_ptr<
|
|
27
|
+
const std::shared_ptr<BaseAudioContext> &context,
|
|
28
|
+
const std::shared_ptr<PromiseVendor> &promiseVendor)
|
|
29
|
+
: context_(context), promiseVendor_(promiseVendor) {
|
|
30
|
+
addGetters(
|
|
31
|
+
JSI_EXPORT_PROPERTY_GETTER(BaseAudioContextHostObject, destination),
|
|
32
|
+
JSI_EXPORT_PROPERTY_GETTER(BaseAudioContextHostObject, state),
|
|
33
|
+
JSI_EXPORT_PROPERTY_GETTER(BaseAudioContextHostObject, sampleRate),
|
|
34
|
+
JSI_EXPORT_PROPERTY_GETTER(BaseAudioContextHostObject, currentTime));
|
|
35
|
+
|
|
36
|
+
addFunctions(
|
|
37
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createOscillator),
|
|
38
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createGain),
|
|
39
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createStereoPanner),
|
|
40
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createBiquadFilter),
|
|
41
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createBufferSource),
|
|
42
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createBuffer),
|
|
43
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createPeriodicWave),
|
|
44
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, decodeAudioDataSource));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
JSI_PROPERTY_GETTER(destination) {
|
|
48
|
+
auto destination = std::make_shared<AudioDestinationNodeHostObject>(
|
|
49
|
+
context_->getDestination());
|
|
50
|
+
return jsi::Object::createFromHostObject(runtime, destination);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
JSI_PROPERTY_GETTER(state) {
|
|
54
|
+
return jsi::String::createFromUtf8(runtime, context_->getState());
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
JSI_PROPERTY_GETTER(sampleRate) {
|
|
58
|
+
return {context_->getSampleRate()};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
JSI_PROPERTY_GETTER(currentTime) {
|
|
62
|
+
return {context_->getCurrentTime()};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
JSI_HOST_FUNCTION(createOscillator) {
|
|
66
|
+
auto oscillator = context_->createOscillator();
|
|
67
|
+
auto oscillatorHostObject =
|
|
68
|
+
std::make_shared<OscillatorNodeHostObject>(oscillator);
|
|
69
|
+
return jsi::Object::createFromHostObject(runtime, oscillatorHostObject);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
JSI_HOST_FUNCTION(createGain) {
|
|
73
|
+
auto gain = context_->createGain();
|
|
74
|
+
auto gainHostObject = std::make_shared<GainNodeHostObject>(gain);
|
|
75
|
+
return jsi::Object::createFromHostObject(runtime, gainHostObject);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
JSI_HOST_FUNCTION(createStereoPanner) {
|
|
79
|
+
auto stereoPanner = context_->createStereoPanner();
|
|
80
|
+
auto stereoPannerHostObject =
|
|
81
|
+
std::make_shared<StereoPannerNodeHostObject>(stereoPanner);
|
|
82
|
+
return jsi::Object::createFromHostObject(runtime, stereoPannerHostObject);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
JSI_HOST_FUNCTION(createBiquadFilter) {
|
|
86
|
+
auto biquadFilter = context_->createBiquadFilter();
|
|
87
|
+
auto biquadFilterHostObject =
|
|
88
|
+
std::make_shared<BiquadFilterNodeHostObject>(biquadFilter);
|
|
89
|
+
return jsi::Object::createFromHostObject(runtime, biquadFilterHostObject);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
JSI_HOST_FUNCTION(createBufferSource) {
|
|
93
|
+
auto bufferSource = context_->createBufferSource();
|
|
94
|
+
auto bufferSourceHostObject =
|
|
95
|
+
std::make_shared<AudioBufferSourceNodeHostObject>(bufferSource);
|
|
96
|
+
return jsi::Object::createFromHostObject(runtime, bufferSourceHostObject);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
JSI_HOST_FUNCTION(createBuffer) {
|
|
100
|
+
auto numberOfChannels = static_cast<int>(args[0].getNumber());
|
|
101
|
+
auto length = static_cast<int>(args[1].getNumber());
|
|
102
|
+
auto sampleRate = static_cast<int>(args[2].getNumber());
|
|
103
|
+
auto buffer = context_->createBuffer(numberOfChannels, length, sampleRate);
|
|
104
|
+
auto bufferHostObject = std::make_shared<AudioBufferHostObject>(buffer);
|
|
105
|
+
return jsi::Object::createFromHostObject(runtime, bufferHostObject);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
JSI_HOST_FUNCTION(createPeriodicWave) {
|
|
109
|
+
auto real = args[0].getObject(runtime).getArray(runtime);
|
|
110
|
+
auto imag = args[1].getObject(runtime).getArray(runtime);
|
|
111
|
+
auto disableNormalization = args[2].getBool();
|
|
112
|
+
auto length =
|
|
113
|
+
static_cast<int>(real.getProperty(runtime, "length").asNumber());
|
|
114
|
+
|
|
115
|
+
auto *realData = new float[length];
|
|
116
|
+
auto *imagData = new float[length];
|
|
117
|
+
|
|
118
|
+
for (size_t i = 0; i < real.length(runtime); i++) {
|
|
119
|
+
realData[i] =
|
|
120
|
+
static_cast<float>(real.getValueAtIndex(runtime, i).getNumber());
|
|
121
|
+
}
|
|
122
|
+
for (size_t i = 0; i < imag.length(runtime); i++) {
|
|
123
|
+
realData[i] =
|
|
124
|
+
static_cast<float>(imag.getValueAtIndex(runtime, i).getNumber());
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
auto periodicWave = context_->createPeriodicWave(
|
|
128
|
+
realData, imagData, disableNormalization, length);
|
|
129
|
+
auto periodicWaveHostObject =
|
|
130
|
+
std::make_shared<PeriodicWaveHostObject>(periodicWave);
|
|
131
|
+
return jsi::Object::createFromHostObject(runtime, periodicWaveHostObject);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
JSI_HOST_FUNCTION(decodeAudioDataSource) {
|
|
135
|
+
auto sourcePath = args[0].getString(runtime).utf8(runtime);
|
|
27
136
|
|
|
28
|
-
|
|
137
|
+
auto promise = promiseVendor_->createPromise(
|
|
138
|
+
[this, &runtime, sourcePath](std::shared_ptr<Promise> promise) {
|
|
139
|
+
std::thread([this,
|
|
140
|
+
&runtime,
|
|
141
|
+
sourcePath,
|
|
142
|
+
promise = std::move(promise)]() {
|
|
143
|
+
auto results = context_->decodeAudioDataSource(sourcePath);
|
|
144
|
+
auto audioBufferHostObject =
|
|
145
|
+
std::make_shared<AudioBufferHostObject>(results);
|
|
29
146
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
147
|
+
promise->resolve(jsi::Object::createFromHostObject(
|
|
148
|
+
runtime, audioBufferHostObject));
|
|
149
|
+
}).detach();
|
|
150
|
+
});
|
|
34
151
|
|
|
35
|
-
|
|
152
|
+
return promise;
|
|
153
|
+
}
|
|
36
154
|
|
|
37
155
|
protected:
|
|
38
|
-
std::shared_ptr<
|
|
39
|
-
std::shared_ptr<
|
|
40
|
-
std::shared_ptr<JsiPromise::PromiseVendor> promiseVendor_;
|
|
156
|
+
std::shared_ptr<BaseAudioContext> context_;
|
|
157
|
+
std::shared_ptr<PromiseVendor> promiseVendor_;
|
|
41
158
|
};
|
|
42
159
|
} // namespace audioapi
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
#include "AudioNodeHostObject.h"
|
|
8
8
|
#include "AudioParamHostObject.h"
|
|
9
|
-
#include "
|
|
9
|
+
#include "BiquadFilterNode.h"
|
|
10
10
|
|
|
11
11
|
namespace audioapi {
|
|
12
12
|
using namespace facebook;
|
|
@@ -14,29 +14,87 @@ using namespace facebook;
|
|
|
14
14
|
class BiquadFilterNodeHostObject : public AudioNodeHostObject {
|
|
15
15
|
public:
|
|
16
16
|
explicit BiquadFilterNodeHostObject(
|
|
17
|
-
const std::shared_ptr<
|
|
17
|
+
const std::shared_ptr<BiquadFilterNode> &node)
|
|
18
|
+
: AudioNodeHostObject(node) {
|
|
19
|
+
addGetters(
|
|
20
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, frequency),
|
|
21
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, detune),
|
|
22
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, Q),
|
|
23
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, gain),
|
|
24
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, type));
|
|
18
25
|
|
|
19
|
-
|
|
26
|
+
addFunctions(
|
|
27
|
+
JSI_EXPORT_FUNCTION(BiquadFilterNodeHostObject, getFrequencyResponse));
|
|
20
28
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
addSetters(JSI_EXPORT_PROPERTY_SETTER(BiquadFilterNodeHostObject, type));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
JSI_PROPERTY_GETTER(frequency) {
|
|
33
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
34
|
+
auto frequencyParam_ = std::make_shared<AudioParamHostObject>(
|
|
35
|
+
biquadFilterNode->getFrequencyParam());
|
|
36
|
+
return jsi::Object::createFromHostObject(runtime, frequencyParam_);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
JSI_PROPERTY_GETTER(detune) {
|
|
40
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
41
|
+
auto detuneParam_ = std::make_shared<AudioParamHostObject>(
|
|
42
|
+
biquadFilterNode->getDetuneParam());
|
|
43
|
+
return jsi::Object::createFromHostObject(runtime, detuneParam_);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
JSI_PROPERTY_GETTER(Q) {
|
|
47
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
48
|
+
auto QParam_ =
|
|
49
|
+
std::make_shared<AudioParamHostObject>(biquadFilterNode->getQParam());
|
|
50
|
+
return jsi::Object::createFromHostObject(runtime, QParam_);
|
|
51
|
+
}
|
|
25
52
|
|
|
26
|
-
|
|
53
|
+
JSI_PROPERTY_GETTER(gain) {
|
|
54
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
55
|
+
auto gainParam_ = std::make_shared<AudioParamHostObject>(
|
|
56
|
+
biquadFilterNode->getGainParam());
|
|
57
|
+
return jsi::Object::createFromHostObject(runtime, gainParam_);
|
|
58
|
+
}
|
|
27
59
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
60
|
+
JSI_PROPERTY_GETTER(type) {
|
|
61
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
62
|
+
auto type = biquadFilterNode->getType();
|
|
63
|
+
return jsi::String::createFromUtf8(runtime, type);
|
|
31
64
|
}
|
|
32
65
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
std::shared_ptr<AudioParamHostObject> gainParam_;
|
|
66
|
+
JSI_HOST_FUNCTION(getFrequencyResponse) {
|
|
67
|
+
auto frequencyArray = args[0].getObject(runtime).asArray(runtime);
|
|
68
|
+
auto magResponseOut = args[1].getObject(runtime).asArray(runtime);
|
|
69
|
+
auto phaseResponseOut = args[2].getObject(runtime).asArray(runtime);
|
|
38
70
|
|
|
39
|
-
|
|
40
|
-
|
|
71
|
+
std::vector<float> frequencyArrayVector(frequencyArray.length(runtime));
|
|
72
|
+
for (size_t i = 0; i < frequencyArray.length(runtime); i++) {
|
|
73
|
+
frequencyArrayVector[i] = static_cast<float>(
|
|
74
|
+
frequencyArray.getValueAtIndex(runtime, i).getNumber());
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
std::vector<float> magResponseOutVector(magResponseOut.length(runtime));
|
|
78
|
+
std::vector<float> phaseResponseOutVector(phaseResponseOut.length(runtime));
|
|
79
|
+
|
|
80
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
81
|
+
biquadFilterNode->getFrequencyResponse(
|
|
82
|
+
frequencyArrayVector, magResponseOutVector, phaseResponseOutVector);
|
|
83
|
+
|
|
84
|
+
for (size_t i = 0; i < magResponseOutVector.size(); i++) {
|
|
85
|
+
magResponseOut.setValueAtIndex(runtime, i, magResponseOutVector[i]);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
for (size_t i = 0; i < phaseResponseOutVector.size(); i++) {
|
|
89
|
+
phaseResponseOut.setValueAtIndex(runtime, i, phaseResponseOutVector[i]);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return jsi::Value::undefined();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
JSI_PROPERTY_SETTER(type) {
|
|
96
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
97
|
+
biquadFilterNode->setType(value.getString(runtime).utf8(runtime));
|
|
98
|
+
}
|
|
41
99
|
};
|
|
42
100
|
} // namespace audioapi
|
|
@@ -5,28 +5,23 @@
|
|
|
5
5
|
|
|
6
6
|
#include "AudioNodeHostObject.h"
|
|
7
7
|
#include "AudioParamHostObject.h"
|
|
8
|
-
#include "
|
|
8
|
+
#include "GainNode.h"
|
|
9
9
|
|
|
10
10
|
namespace audioapi {
|
|
11
11
|
using namespace facebook;
|
|
12
12
|
|
|
13
13
|
class GainNodeHostObject : public AudioNodeHostObject {
|
|
14
|
-
protected:
|
|
15
|
-
std::shared_ptr<AudioParamHostObject> gainParam_;
|
|
16
|
-
|
|
17
14
|
public:
|
|
18
|
-
explicit GainNodeHostObject(const std::shared_ptr<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
jsi::Runtime &runtime,
|
|
23
|
-
const jsi::PropNameID &name,
|
|
24
|
-
const jsi::Value &value) override;
|
|
25
|
-
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
15
|
+
explicit GainNodeHostObject(const std::shared_ptr<GainNode> &node)
|
|
16
|
+
: AudioNodeHostObject(node) {
|
|
17
|
+
addGetters(JSI_EXPORT_PROPERTY_GETTER(GainNodeHostObject, gain));
|
|
18
|
+
}
|
|
26
19
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
JSI_PROPERTY_GETTER(gain) {
|
|
21
|
+
auto gainNode = std::static_pointer_cast<GainNode>(node_);
|
|
22
|
+
auto gainParam_ =
|
|
23
|
+
std::make_shared<AudioParamHostObject>(gainNode->getGainParam());
|
|
24
|
+
return jsi::Object::createFromHostObject(runtime, gainParam_);
|
|
30
25
|
}
|
|
31
26
|
};
|
|
32
27
|
} // namespace audioapi
|