react-native-audio-api 0.0.1 → 0.2.0
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/README.md +60 -1
- package/RNAudioAPI.podspec +46 -0
- package/android/CMakeLists.txt +74 -0
- package/android/build.gradle +194 -0
- package/android/gradle.properties +5 -0
- package/android/libs/fftw3/arm64-v8a/libfftw3.a +0 -0
- package/android/libs/fftw3/armeabi-v7a/libfftw3.a +0 -0
- package/android/libs/fftw3/x86/libfftw3.a +0 -0
- package/android/libs/fftw3/x86_64/libfftw3.a +0 -0
- package/android/libs/include/fftw3/fftw3.h +413 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.cpp +22 -0
- package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.h +48 -0
- package/android/src/main/cpp/AudioPlayer/AudioPlayer.cpp +66 -0
- package/android/src/main/cpp/AudioPlayer/AudioPlayer.h +33 -0
- package/android/src/main/cpp/OnLoad.cpp +9 -0
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIPackage.kt +14 -0
- package/android/src/main/java/com/swmansion/audioapi/module/AudioAPIInstaller.kt +21 -0
- package/android/src/main/java/com/swmansion/audioapi/nativemodules/AudioAPIModule.kt +25 -0
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.cpp +52 -0
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.h +45 -0
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerWrapper.h +38 -0
- package/common/cpp/AudioAPIInstaller/android/AudioAPIInstallerWrapper.cpp +16 -0
- package/common/cpp/AudioAPIInstaller/ios/AudioAPIInstallerWrapper.cpp +12 -0
- package/common/cpp/HostObjects/AudioBufferHostObject.cpp +143 -0
- package/common/cpp/HostObjects/AudioBufferHostObject.h +33 -0
- package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.cpp +79 -0
- package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.h +37 -0
- package/common/cpp/HostObjects/AudioContextHostObject.cpp +54 -0
- package/common/cpp/HostObjects/AudioContextHostObject.h +36 -0
- package/common/cpp/HostObjects/AudioDestinationNodeHostObject.cpp +33 -0
- package/common/cpp/HostObjects/AudioDestinationNodeHostObject.h +31 -0
- package/common/cpp/HostObjects/AudioNodeHostObject.cpp +102 -0
- package/common/cpp/HostObjects/AudioNodeHostObject.h +29 -0
- package/common/cpp/HostObjects/AudioParamHostObject.cpp +115 -0
- package/common/cpp/HostObjects/AudioParamHostObject.h +34 -0
- package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.cpp +73 -0
- package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.h +31 -0
- package/common/cpp/HostObjects/BaseAudioContextHostObject.cpp +214 -0
- package/common/cpp/HostObjects/BaseAudioContextHostObject.h +39 -0
- package/common/cpp/HostObjects/BiquadFilterNodeHostObject.cpp +125 -0
- package/common/cpp/HostObjects/BiquadFilterNodeHostObject.h +42 -0
- package/common/cpp/HostObjects/Constants.h +22 -0
- package/common/cpp/HostObjects/GainNodeHostObject.cpp +41 -0
- package/common/cpp/HostObjects/GainNodeHostObject.h +32 -0
- package/common/cpp/HostObjects/OscillatorNodeHostObject.cpp +88 -0
- package/common/cpp/HostObjects/OscillatorNodeHostObject.h +41 -0
- package/common/cpp/HostObjects/PeriodicWaveHostObject.cpp +33 -0
- package/common/cpp/HostObjects/PeriodicWaveHostObject.h +33 -0
- package/common/cpp/HostObjects/StereoPannerNodeHostObject.cpp +41 -0
- package/common/cpp/HostObjects/StereoPannerNodeHostObject.h +36 -0
- package/common/cpp/core/AudioArray.cpp +103 -0
- package/common/cpp/core/AudioArray.h +42 -0
- package/common/cpp/core/AudioBuffer.cpp +55 -0
- package/common/cpp/core/AudioBuffer.h +40 -0
- package/common/cpp/core/AudioBufferSourceNode.cpp +135 -0
- package/common/cpp/core/AudioBufferSourceNode.h +30 -0
- package/common/cpp/core/AudioBus.cpp +357 -0
- package/common/cpp/core/AudioBus.h +63 -0
- package/common/cpp/core/AudioContext.cpp +24 -0
- package/common/cpp/core/AudioContext.h +16 -0
- package/common/cpp/core/AudioDestinationNode.cpp +45 -0
- package/common/cpp/core/AudioDestinationNode.h +32 -0
- package/common/cpp/core/AudioNode.cpp +222 -0
- package/common/cpp/core/AudioNode.h +74 -0
- package/common/cpp/core/AudioNodeManager.cpp +72 -0
- package/common/cpp/core/AudioNodeManager.h +35 -0
- package/common/cpp/core/AudioParam.cpp +133 -0
- package/common/cpp/core/AudioParam.h +50 -0
- package/common/cpp/core/AudioScheduledSourceNode.cpp +53 -0
- package/common/cpp/core/AudioScheduledSourceNode.h +34 -0
- package/common/cpp/core/BaseAudioContext.cpp +157 -0
- package/common/cpp/core/BaseAudioContext.h +80 -0
- package/common/cpp/core/BiquadFilterNode.cpp +385 -0
- package/common/cpp/core/BiquadFilterNode.h +124 -0
- package/common/cpp/core/GainNode.cpp +30 -0
- package/common/cpp/core/GainNode.h +25 -0
- package/common/cpp/core/OscillatorNode.cpp +75 -0
- package/common/cpp/core/OscillatorNode.h +72 -0
- package/common/cpp/core/ParamChange.cpp +46 -0
- package/common/cpp/core/ParamChange.h +34 -0
- package/common/cpp/core/PeriodicWave.cpp +362 -0
- package/common/cpp/core/PeriodicWave.h +119 -0
- package/common/cpp/core/StereoPannerNode.cpp +56 -0
- package/common/cpp/core/StereoPannerNode.h +26 -0
- package/common/cpp/types/BiquadFilterType.h +19 -0
- package/common/cpp/types/ChannelCountMode.h +10 -0
- package/common/cpp/types/ChannelInterpretation.h +10 -0
- package/common/cpp/types/ContextState.h +10 -0
- package/common/cpp/types/OscillatorType.h +11 -0
- package/common/cpp/utils/FFTFrame.h +63 -0
- package/common/cpp/utils/Locker.h +47 -0
- package/common/cpp/utils/VectorMath.cpp +678 -0
- package/common/cpp/utils/VectorMath.h +71 -0
- package/common/cpp/utils/android/FFTFrame.cpp +22 -0
- package/common/cpp/utils/ios/FFTFrame.cpp +24 -0
- package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.cpp +45 -0
- package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.h +26 -0
- package/common/cpp/wrappers/AudioBufferWrapper.cpp +46 -0
- package/common/cpp/wrappers/AudioBufferWrapper.h +30 -0
- package/common/cpp/wrappers/AudioContextWrapper.cpp +17 -0
- package/common/cpp/wrappers/AudioContextWrapper.h +19 -0
- package/common/cpp/wrappers/AudioDestinationNodeWrapper.h +16 -0
- package/common/cpp/wrappers/AudioNodeWrapper.cpp +37 -0
- package/common/cpp/wrappers/AudioNodeWrapper.h +25 -0
- package/common/cpp/wrappers/AudioParamWrapper.cpp +42 -0
- package/common/cpp/wrappers/AudioParamWrapper.h +25 -0
- package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.cpp +23 -0
- package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.h +23 -0
- package/common/cpp/wrappers/BaseAudioContextWrapper.cpp +76 -0
- package/common/cpp/wrappers/BaseAudioContextWrapper.h +49 -0
- package/common/cpp/wrappers/BiquadFilterNodeWrapper.cpp +60 -0
- package/common/cpp/wrappers/BiquadFilterNodeWrapper.h +37 -0
- package/common/cpp/wrappers/GainNodeWrapper.cpp +14 -0
- package/common/cpp/wrappers/GainNodeWrapper.h +20 -0
- package/common/cpp/wrappers/OscillatorNodeWrapper.cpp +44 -0
- package/common/cpp/wrappers/OscillatorNodeWrapper.h +31 -0
- package/common/cpp/wrappers/PeriodicWaveWrapper.h +17 -0
- package/common/cpp/wrappers/StereoPannerNodeWrapper.cpp +16 -0
- package/common/cpp/wrappers/StereoPannerNodeWrapper.h +21 -0
- package/ios/AudioAPIModule.h +24 -0
- package/ios/AudioAPIModule.mm +44 -0
- package/ios/AudioPlayer/AudioPlayer.h +28 -0
- package/ios/AudioPlayer/AudioPlayer.m +119 -0
- package/ios/AudioPlayer/IOSAudioPlayer.h +33 -0
- package/ios/AudioPlayer/IOSAudioPlayer.mm +57 -0
- package/lib/module/core/AudioBuffer.js +37 -0
- package/lib/module/core/AudioBuffer.js.map +1 -0
- package/lib/module/core/AudioBufferSourceNode.js +28 -0
- package/lib/module/core/AudioBufferSourceNode.js.map +1 -0
- package/lib/module/core/AudioContext.js +10 -0
- package/lib/module/core/AudioContext.js.map +1 -0
- package/lib/module/core/AudioDestinationNode.js +7 -0
- package/lib/module/core/AudioDestinationNode.js.map +1 -0
- package/lib/module/core/AudioNode.js +22 -0
- package/lib/module/core/AudioNode.js.map +1 -0
- package/lib/module/core/AudioParam.js +35 -0
- package/lib/module/core/AudioParam.js.map +1 -0
- package/lib/module/core/AudioScheduledSourceNode.js +28 -0
- package/lib/module/core/AudioScheduledSourceNode.js.map +1 -0
- package/lib/module/core/BaseAudioContext.js +57 -0
- package/lib/module/core/BaseAudioContext.js.map +1 -0
- package/lib/module/core/BiquadFilterNode.js +25 -0
- package/lib/module/core/BiquadFilterNode.js.map +1 -0
- package/lib/module/core/GainNode.js +9 -0
- package/lib/module/core/GainNode.js.map +1 -0
- package/lib/module/core/OscillatorNode.js +24 -0
- package/lib/module/core/OscillatorNode.js.map +1 -0
- package/lib/module/core/PeriodicWave.js +8 -0
- package/lib/module/core/PeriodicWave.js.map +1 -0
- package/lib/module/core/StereoPannerNode.js +9 -0
- package/lib/module/core/StereoPannerNode.js.map +1 -0
- package/lib/module/core/types.js +2 -0
- package/lib/module/core/types.js.map +1 -0
- package/lib/module/errors/IndexSizeError.js +8 -0
- package/lib/module/errors/IndexSizeError.js.map +1 -0
- package/lib/module/errors/InvalidAccessError.js +8 -0
- package/lib/module/errors/InvalidAccessError.js.map +1 -0
- package/lib/module/errors/InvalidStateError.js +8 -0
- package/lib/module/errors/InvalidStateError.js.map +1 -0
- package/lib/module/errors/RangeError.js +8 -0
- package/lib/module/errors/RangeError.js.map +1 -0
- package/lib/module/errors/index.js +5 -0
- package/lib/module/errors/index.js.map +1 -0
- package/lib/module/index.js +18 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/interfaces.js +2 -0
- package/lib/module/interfaces.js.map +1 -0
- package/lib/module/modules/global.d.js +2 -0
- package/lib/module/modules/global.d.js.map +1 -0
- package/lib/module/utils/install.js +22 -0
- package/lib/module/utils/install.js.map +1 -0
- package/lib/typescript/core/AudioBuffer.d.ts +12 -0
- package/lib/typescript/core/AudioBuffer.d.ts.map +1 -0
- package/lib/typescript/core/AudioBufferSourceNode.d.ts +12 -0
- package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -0
- package/lib/typescript/core/AudioContext.d.ts +6 -0
- package/lib/typescript/core/AudioContext.d.ts.map +1 -0
- package/lib/typescript/core/AudioDestinationNode.d.ts +7 -0
- package/lib/typescript/core/AudioDestinationNode.d.ts.map +1 -0
- package/lib/typescript/core/AudioNode.d.ts +16 -0
- package/lib/typescript/core/AudioNode.d.ts.map +1 -0
- package/lib/typescript/core/AudioParam.d.ts +14 -0
- package/lib/typescript/core/AudioParam.d.ts.map +1 -0
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts +10 -0
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -0
- package/lib/typescript/core/BaseAudioContext.d.ts +26 -0
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -0
- package/lib/typescript/core/BiquadFilterNode.d.ts +16 -0
- package/lib/typescript/core/BiquadFilterNode.d.ts.map +1 -0
- package/lib/typescript/core/GainNode.d.ts +9 -0
- package/lib/typescript/core/GainNode.d.ts.map +1 -0
- package/lib/typescript/core/OscillatorNode.d.ts +15 -0
- package/lib/typescript/core/OscillatorNode.d.ts.map +1 -0
- package/lib/typescript/core/PeriodicWave.d.ts +5 -0
- package/lib/typescript/core/PeriodicWave.d.ts.map +1 -0
- package/lib/typescript/core/StereoPannerNode.d.ts +9 -0
- package/lib/typescript/core/StereoPannerNode.d.ts.map +1 -0
- package/lib/typescript/core/types.d.ts +9 -0
- package/lib/typescript/core/types.d.ts.map +1 -0
- package/lib/typescript/errors/IndexSizeError.d.ts +5 -0
- package/lib/typescript/errors/IndexSizeError.d.ts.map +1 -0
- package/lib/typescript/errors/InvalidAccessError.d.ts +5 -0
- package/lib/typescript/errors/InvalidAccessError.d.ts.map +1 -0
- package/lib/typescript/errors/InvalidStateError.d.ts +5 -0
- package/lib/typescript/errors/InvalidStateError.d.ts.map +1 -0
- package/lib/typescript/errors/RangeError.d.ts +5 -0
- package/lib/typescript/errors/RangeError.d.ts.map +1 -0
- package/lib/typescript/errors/index.d.ts +5 -0
- package/lib/typescript/errors/index.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +14 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/interfaces.d.ts +78 -0
- package/lib/typescript/interfaces.d.ts.map +1 -0
- package/lib/typescript/utils/install.d.ts +7 -0
- package/lib/typescript/utils/install.d.ts.map +1 -0
- package/package.json +104 -5
- package/src/core/AudioBuffer.ts +68 -0
- package/src/core/AudioBufferSourceNode.ts +35 -0
- package/src/core/AudioContext.ts +12 -0
- package/src/core/AudioDestinationNode.ts +9 -0
- package/src/core/AudioNode.ts +38 -0
- package/src/core/AudioParam.ts +55 -0
- package/src/core/AudioScheduledSourceNode.ts +43 -0
- package/src/core/BaseAudioContext.ts +97 -0
- package/src/core/BiquadFilterNode.ts +49 -0
- package/src/core/GainNode.ts +13 -0
- package/src/core/OscillatorNode.ts +37 -0
- package/src/core/PeriodicWave.ts +10 -0
- package/src/core/StereoPannerNode.ts +13 -0
- package/src/core/types.ts +26 -0
- package/src/errors/IndexSizeError.ts +8 -0
- package/src/errors/InvalidAccessError.ts +8 -0
- package/src/errors/InvalidStateError.ts +8 -0
- package/src/errors/RangeError.ts +8 -0
- package/src/errors/index.ts +4 -0
- package/src/index.ts +25 -0
- package/src/interfaces.ts +120 -0
- package/src/modules/global.d.ts +10 -0
- package/src/utils/install.ts +39 -0
- package/index.ts +0 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#include "AudioNodeHostObject.h"
|
|
2
|
+
#include "AudioContextHostObject.h"
|
|
3
|
+
|
|
4
|
+
namespace audioapi {
|
|
5
|
+
using namespace facebook;
|
|
6
|
+
|
|
7
|
+
AudioNodeHostObject::AudioNodeHostObject(
|
|
8
|
+
const std::shared_ptr<AudioNodeWrapper> &wrapper)
|
|
9
|
+
: wrapper_(wrapper) {}
|
|
10
|
+
|
|
11
|
+
std::vector<jsi::PropNameID> AudioNodeHostObject::getPropertyNames(
|
|
12
|
+
jsi::Runtime &runtime) {
|
|
13
|
+
std::vector<jsi::PropNameID> propertyNames;
|
|
14
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "connect"));
|
|
15
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "disconnect"));
|
|
16
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "numberOfInputs"));
|
|
17
|
+
propertyNames.push_back(
|
|
18
|
+
jsi::PropNameID::forAscii(runtime, "numberOfOutputs"));
|
|
19
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "channelCount"));
|
|
20
|
+
propertyNames.push_back(
|
|
21
|
+
jsi::PropNameID::forAscii(runtime, "channelCountMode"));
|
|
22
|
+
propertyNames.push_back(
|
|
23
|
+
jsi::PropNameID::forAscii(runtime, "channelInterpretation"));
|
|
24
|
+
return propertyNames;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
jsi::Value AudioNodeHostObject::get(
|
|
28
|
+
jsi::Runtime &runtime,
|
|
29
|
+
const jsi::PropNameID &propNameId) {
|
|
30
|
+
auto propName = propNameId.utf8(runtime);
|
|
31
|
+
|
|
32
|
+
if (propName == "connect") {
|
|
33
|
+
return jsi::Function::createFromHostFunction(
|
|
34
|
+
runtime,
|
|
35
|
+
propNameId,
|
|
36
|
+
1,
|
|
37
|
+
[this](
|
|
38
|
+
jsi::Runtime &rt,
|
|
39
|
+
const jsi::Value &thisValue,
|
|
40
|
+
const jsi::Value *args,
|
|
41
|
+
size_t count) -> jsi::Value {
|
|
42
|
+
auto node =
|
|
43
|
+
args[0].getObject(rt).getHostObject<AudioNodeHostObject>(rt);
|
|
44
|
+
wrapper_->connect(
|
|
45
|
+
std::shared_ptr<AudioNodeHostObject>(node)->wrapper_);
|
|
46
|
+
return jsi::Value::undefined();
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (propName == "disconnect") {
|
|
51
|
+
return jsi::Function::createFromHostFunction(
|
|
52
|
+
runtime,
|
|
53
|
+
propNameId,
|
|
54
|
+
1,
|
|
55
|
+
[this](
|
|
56
|
+
jsi::Runtime &rt,
|
|
57
|
+
const jsi::Value &thisValue,
|
|
58
|
+
const jsi::Value *args,
|
|
59
|
+
size_t count) -> jsi::Value {
|
|
60
|
+
auto node =
|
|
61
|
+
args[0].getObject(rt).getHostObject<AudioNodeHostObject>(rt);
|
|
62
|
+
wrapper_->disconnect(
|
|
63
|
+
std::shared_ptr<AudioNodeHostObject>(node)->wrapper_);
|
|
64
|
+
return jsi::Value::undefined();
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (propName == "numberOfInputs") {
|
|
69
|
+
return {wrapper_->getNumberOfInputs()};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (propName == "numberOfOutputs") {
|
|
73
|
+
return {wrapper_->getNumberOfOutputs()};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (propName == "channelCount") {
|
|
77
|
+
return {wrapper_->getChannelCount()};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (propName == "channelCountMode") {
|
|
81
|
+
return jsi::String::createFromUtf8(
|
|
82
|
+
runtime, wrapper_->getChannelCountMode());
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (propName == "channelInterpretation") {
|
|
86
|
+
return jsi::String::createFromUtf8(
|
|
87
|
+
runtime, wrapper_->getChannelInterpretation());
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
throw std::runtime_error("Not yet implemented!");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
void AudioNodeHostObject::set(
|
|
94
|
+
jsi::Runtime &runtime,
|
|
95
|
+
const jsi::PropNameID &propNameId,
|
|
96
|
+
const jsi::Value &value) {
|
|
97
|
+
auto propName = propNameId.utf8(runtime);
|
|
98
|
+
|
|
99
|
+
throw std::runtime_error("Not yet implemented!");
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <jsi/jsi.h>
|
|
4
|
+
#include <memory>
|
|
5
|
+
#include <vector>
|
|
6
|
+
|
|
7
|
+
#include "AudioNodeWrapper.h"
|
|
8
|
+
|
|
9
|
+
namespace audioapi {
|
|
10
|
+
using namespace facebook;
|
|
11
|
+
|
|
12
|
+
class AudioNodeHostObject : public jsi::HostObject {
|
|
13
|
+
public:
|
|
14
|
+
explicit AudioNodeHostObject(
|
|
15
|
+
const std::shared_ptr<AudioNodeWrapper> &wrapper);
|
|
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
|
+
protected:
|
|
27
|
+
std::shared_ptr<AudioNodeWrapper> wrapper_;
|
|
28
|
+
};
|
|
29
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#include "AudioParamHostObject.h"
|
|
2
|
+
|
|
3
|
+
namespace audioapi {
|
|
4
|
+
using namespace facebook;
|
|
5
|
+
|
|
6
|
+
AudioParamHostObject::AudioParamHostObject(
|
|
7
|
+
const std::shared_ptr<AudioParamWrapper> &wrapper)
|
|
8
|
+
: wrapper_(wrapper) {}
|
|
9
|
+
|
|
10
|
+
std::vector<jsi::PropNameID> AudioParamHostObject::getPropertyNames(
|
|
11
|
+
jsi::Runtime &runtime) {
|
|
12
|
+
std::vector<jsi::PropNameID> propertyNames;
|
|
13
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "value"));
|
|
14
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "defaultValue"));
|
|
15
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "minValue"));
|
|
16
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "maxValue"));
|
|
17
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "setValueAtTime"));
|
|
18
|
+
propertyNames.push_back(
|
|
19
|
+
jsi::PropNameID::forAscii(runtime, "linearRampToValueAtTime"));
|
|
20
|
+
propertyNames.push_back(
|
|
21
|
+
jsi::PropNameID::forAscii(runtime, "exponentialRampToValueAtTime"));
|
|
22
|
+
return propertyNames;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
jsi::Value AudioParamHostObject::get(
|
|
26
|
+
jsi::Runtime &runtime,
|
|
27
|
+
const jsi::PropNameID &propNameId) {
|
|
28
|
+
auto propName = propNameId.utf8(runtime);
|
|
29
|
+
|
|
30
|
+
if (propName == "value") {
|
|
31
|
+
return {wrapper_->getValue()};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (propName == "defaultValue") {
|
|
35
|
+
return {wrapper_->getDefaultValue()};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (propName == "minValue") {
|
|
39
|
+
return {wrapper_->getMinValue()};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (propName == "maxValue") {
|
|
43
|
+
return {wrapper_->getMaxValue()};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (propName == "setValueAtTime") {
|
|
47
|
+
return jsi::Function::createFromHostFunction(
|
|
48
|
+
runtime,
|
|
49
|
+
propNameId,
|
|
50
|
+
2,
|
|
51
|
+
[this](
|
|
52
|
+
jsi::Runtime &rt,
|
|
53
|
+
const jsi::Value &thisVal,
|
|
54
|
+
const jsi::Value *args,
|
|
55
|
+
size_t count) -> jsi::Value {
|
|
56
|
+
double value = args[0].getNumber();
|
|
57
|
+
double startTime = args[1].getNumber();
|
|
58
|
+
wrapper_->setValueAtTime(value, startTime);
|
|
59
|
+
return jsi::Value::undefined();
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (propName == "linearRampToValueAtTime") {
|
|
64
|
+
return jsi::Function::createFromHostFunction(
|
|
65
|
+
runtime,
|
|
66
|
+
propNameId,
|
|
67
|
+
2,
|
|
68
|
+
[this](
|
|
69
|
+
jsi::Runtime &rt,
|
|
70
|
+
const jsi::Value &thisVal,
|
|
71
|
+
const jsi::Value *args,
|
|
72
|
+
size_t count) -> jsi::Value {
|
|
73
|
+
double value = args[0].getNumber();
|
|
74
|
+
double endTime = args[1].getNumber();
|
|
75
|
+
wrapper_->linearRampToValueAtTime(value, endTime);
|
|
76
|
+
return jsi::Value::undefined();
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (propName == "exponentialRampToValueAtTime") {
|
|
81
|
+
return jsi::Function::createFromHostFunction(
|
|
82
|
+
runtime,
|
|
83
|
+
propNameId,
|
|
84
|
+
2,
|
|
85
|
+
[this](
|
|
86
|
+
jsi::Runtime &rt,
|
|
87
|
+
const jsi::Value &thisVal,
|
|
88
|
+
const jsi::Value *args,
|
|
89
|
+
size_t count) -> jsi::Value {
|
|
90
|
+
double value = args[0].getNumber();
|
|
91
|
+
double endTime = args[1].getNumber();
|
|
92
|
+
wrapper_->exponentialRampToValueAtTime(value, endTime);
|
|
93
|
+
return jsi::Value::undefined();
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
throw std::runtime_error("Not yet implemented!");
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
void AudioParamHostObject::set(
|
|
101
|
+
jsi::Runtime &runtime,
|
|
102
|
+
const jsi::PropNameID &propNameId,
|
|
103
|
+
const jsi::Value &value) {
|
|
104
|
+
auto propName = propNameId.utf8(runtime);
|
|
105
|
+
|
|
106
|
+
if (propName == "value") {
|
|
107
|
+
double paramValue = value.getNumber();
|
|
108
|
+
wrapper_->setValue(paramValue);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
throw std::runtime_error("Not yet implemented!");
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <jsi/jsi.h>
|
|
4
|
+
#include <memory>
|
|
5
|
+
#include <vector>
|
|
6
|
+
|
|
7
|
+
#include "AudioParamWrapper.h"
|
|
8
|
+
|
|
9
|
+
namespace audioapi {
|
|
10
|
+
using namespace facebook;
|
|
11
|
+
|
|
12
|
+
class AudioParamHostObject : public jsi::HostObject {
|
|
13
|
+
public:
|
|
14
|
+
explicit AudioParamHostObject(
|
|
15
|
+
const std::shared_ptr<AudioParamWrapper> &wrapper);
|
|
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<AudioParamHostObject> createFromWrapper(
|
|
27
|
+
const std::shared_ptr<AudioParamWrapper> &wrapper) {
|
|
28
|
+
return std::make_shared<AudioParamHostObject>(wrapper);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private:
|
|
32
|
+
std::shared_ptr<AudioParamWrapper> wrapper_;
|
|
33
|
+
};
|
|
34
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#include "AudioScheduledSourceNodeHostObject.h"
|
|
2
|
+
|
|
3
|
+
namespace audioapi {
|
|
4
|
+
using namespace facebook;
|
|
5
|
+
|
|
6
|
+
std::shared_ptr<AudioScheduledSourceNodeWrapper>
|
|
7
|
+
AudioScheduledSourceNodeHostObject::
|
|
8
|
+
getAudioScheduledSourceNodeWrapperFromAudioNodeWrapper() {
|
|
9
|
+
return std::static_pointer_cast<AudioScheduledSourceNodeWrapper>(wrapper_);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
std::vector<jsi::PropNameID>
|
|
13
|
+
AudioScheduledSourceNodeHostObject::getPropertyNames(jsi::Runtime &runtime) {
|
|
14
|
+
std::vector<jsi::PropNameID> propertyNames =
|
|
15
|
+
AudioNodeHostObject::getPropertyNames(runtime);
|
|
16
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "start"));
|
|
17
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "stop"));
|
|
18
|
+
return propertyNames;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
jsi::Value AudioScheduledSourceNodeHostObject::get(
|
|
22
|
+
jsi::Runtime &runtime,
|
|
23
|
+
const jsi::PropNameID &propNameId) {
|
|
24
|
+
auto propName = propNameId.utf8(runtime);
|
|
25
|
+
|
|
26
|
+
if (propName == "start") {
|
|
27
|
+
return jsi::Function::createFromHostFunction(
|
|
28
|
+
runtime,
|
|
29
|
+
propNameId,
|
|
30
|
+
1,
|
|
31
|
+
[this](
|
|
32
|
+
jsi::Runtime &rt,
|
|
33
|
+
const jsi::Value &thisValue,
|
|
34
|
+
const jsi::Value *args,
|
|
35
|
+
size_t count) -> jsi::Value {
|
|
36
|
+
auto time = args[0].getNumber();
|
|
37
|
+
auto wrapper =
|
|
38
|
+
getAudioScheduledSourceNodeWrapperFromAudioNodeWrapper();
|
|
39
|
+
wrapper->start(time);
|
|
40
|
+
return jsi::Value::undefined();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (propName == "stop") {
|
|
45
|
+
return jsi::Function::createFromHostFunction(
|
|
46
|
+
runtime,
|
|
47
|
+
propNameId,
|
|
48
|
+
1,
|
|
49
|
+
[this](
|
|
50
|
+
jsi::Runtime &rt,
|
|
51
|
+
const jsi::Value &thisValue,
|
|
52
|
+
const jsi::Value *args,
|
|
53
|
+
size_t count) -> jsi::Value {
|
|
54
|
+
auto time = args[0].getNumber();
|
|
55
|
+
auto wrapper =
|
|
56
|
+
getAudioScheduledSourceNodeWrapperFromAudioNodeWrapper();
|
|
57
|
+
wrapper->stop(time);
|
|
58
|
+
return jsi::Value::undefined();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return AudioNodeHostObject::get(runtime, propNameId);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
void AudioScheduledSourceNodeHostObject::set(
|
|
66
|
+
jsi::Runtime &runtime,
|
|
67
|
+
const jsi::PropNameID &propNameId,
|
|
68
|
+
const jsi::Value &value) {
|
|
69
|
+
auto propName = propNameId.utf8(runtime);
|
|
70
|
+
|
|
71
|
+
return AudioNodeHostObject::set(runtime, propNameId, value);
|
|
72
|
+
}
|
|
73
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <memory>
|
|
4
|
+
#include <vector>
|
|
5
|
+
|
|
6
|
+
#include "AudioNodeHostObject.h"
|
|
7
|
+
#include "AudioScheduledSourceNodeWrapper.h"
|
|
8
|
+
|
|
9
|
+
namespace audioapi {
|
|
10
|
+
using namespace facebook;
|
|
11
|
+
|
|
12
|
+
class AudioScheduledSourceNodeHostObject : public AudioNodeHostObject {
|
|
13
|
+
public:
|
|
14
|
+
explicit AudioScheduledSourceNodeHostObject(
|
|
15
|
+
const std::shared_ptr<AudioScheduledSourceNodeWrapper> &wrapper)
|
|
16
|
+
: AudioNodeHostObject(wrapper) {}
|
|
17
|
+
|
|
18
|
+
jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
|
|
19
|
+
|
|
20
|
+
void set(
|
|
21
|
+
jsi::Runtime &runtime,
|
|
22
|
+
const jsi::PropNameID &name,
|
|
23
|
+
const jsi::Value &value) override;
|
|
24
|
+
|
|
25
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
26
|
+
|
|
27
|
+
private:
|
|
28
|
+
std::shared_ptr<AudioScheduledSourceNodeWrapper>
|
|
29
|
+
getAudioScheduledSourceNodeWrapperFromAudioNodeWrapper();
|
|
30
|
+
};
|
|
31
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
#include "BaseAudioContextHostObject.h"
|
|
2
|
+
|
|
3
|
+
namespace audioapi {
|
|
4
|
+
using namespace facebook;
|
|
5
|
+
|
|
6
|
+
BaseAudioContextHostObject::BaseAudioContextHostObject(
|
|
7
|
+
const std::shared_ptr<BaseAudioContextWrapper> &wrapper)
|
|
8
|
+
: wrapper_(wrapper) {
|
|
9
|
+
auto destinationNodeWrapper = wrapper_->getDestination();
|
|
10
|
+
destination_ =
|
|
11
|
+
AudioDestinationNodeHostObject::createFromWrapper(destinationNodeWrapper);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
std::vector<jsi::PropNameID> BaseAudioContextHostObject::getPropertyNames(
|
|
15
|
+
jsi::Runtime &runtime) {
|
|
16
|
+
std::vector<jsi::PropNameID> propertyNames;
|
|
17
|
+
propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "destination"));
|
|
18
|
+
propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "state"));
|
|
19
|
+
propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "sampleRate"));
|
|
20
|
+
propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "currentTime"));
|
|
21
|
+
propertyNames.push_back(
|
|
22
|
+
jsi::PropNameID::forUtf8(runtime, "createOscillator"));
|
|
23
|
+
propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "createGain"));
|
|
24
|
+
propertyNames.push_back(
|
|
25
|
+
jsi::PropNameID::forUtf8(runtime, "createStereoPanner"));
|
|
26
|
+
propertyNames.push_back(
|
|
27
|
+
jsi::PropNameID::forUtf8(runtime, "createBiquadFilter"));
|
|
28
|
+
propertyNames.push_back(
|
|
29
|
+
jsi::PropNameID::forUtf8(runtime, "createBufferSource"));
|
|
30
|
+
propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "createBuffer"));
|
|
31
|
+
propertyNames.push_back(
|
|
32
|
+
jsi::PropNameID::forUtf8(runtime, "createPeriodicWave"));
|
|
33
|
+
return propertyNames;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
jsi::Value BaseAudioContextHostObject::get(
|
|
37
|
+
jsi::Runtime &runtime,
|
|
38
|
+
const jsi::PropNameID &propNameId) {
|
|
39
|
+
auto propName = propNameId.utf8(runtime);
|
|
40
|
+
|
|
41
|
+
if (propName == "destination") {
|
|
42
|
+
return jsi::Object::createFromHostObject(runtime, destination_);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (propName == "state") {
|
|
46
|
+
return jsi::String::createFromUtf8(runtime, wrapper_->getState());
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (propName == "sampleRate") {
|
|
50
|
+
return {wrapper_->getSampleRate()};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (propName == "currentTime") {
|
|
54
|
+
return {wrapper_->getCurrentTime()};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (propName == "createOscillator") {
|
|
58
|
+
return jsi::Function::createFromHostFunction(
|
|
59
|
+
runtime,
|
|
60
|
+
propNameId,
|
|
61
|
+
0,
|
|
62
|
+
[this](
|
|
63
|
+
jsi::Runtime &runtime,
|
|
64
|
+
const jsi::Value &thisValue,
|
|
65
|
+
const jsi::Value *arguments,
|
|
66
|
+
size_t count) -> jsi::Value {
|
|
67
|
+
auto oscillator = wrapper_->createOscillator();
|
|
68
|
+
auto oscillatorHostObject =
|
|
69
|
+
OscillatorNodeHostObject::createFromWrapper(oscillator);
|
|
70
|
+
return jsi::Object::createFromHostObject(
|
|
71
|
+
runtime, oscillatorHostObject);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (propName == "createGain") {
|
|
76
|
+
return jsi::Function::createFromHostFunction(
|
|
77
|
+
runtime,
|
|
78
|
+
propNameId,
|
|
79
|
+
0,
|
|
80
|
+
[this](
|
|
81
|
+
jsi::Runtime &runtime,
|
|
82
|
+
const jsi::Value &thisValue,
|
|
83
|
+
const jsi::Value *arguments,
|
|
84
|
+
size_t count) -> jsi::Value {
|
|
85
|
+
auto gain = wrapper_->createGain();
|
|
86
|
+
auto gainHostObject = GainNodeHostObject::createFromWrapper(gain);
|
|
87
|
+
return jsi::Object::createFromHostObject(runtime, gainHostObject);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (propName == "createStereoPanner") {
|
|
92
|
+
return jsi::Function::createFromHostFunction(
|
|
93
|
+
runtime,
|
|
94
|
+
propNameId,
|
|
95
|
+
0,
|
|
96
|
+
[this](
|
|
97
|
+
jsi::Runtime &runtime,
|
|
98
|
+
const jsi::Value &thisValue,
|
|
99
|
+
const jsi::Value *arguments,
|
|
100
|
+
size_t count) -> jsi::Value {
|
|
101
|
+
auto stereoPanner = wrapper_->createStereoPanner();
|
|
102
|
+
auto stereoPannerHostObject =
|
|
103
|
+
StereoPannerNodeHostObject::createFromWrapper(stereoPanner);
|
|
104
|
+
return jsi::Object::createFromHostObject(
|
|
105
|
+
runtime, stereoPannerHostObject);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (propName == "createBiquadFilter") {
|
|
110
|
+
return jsi::Function::createFromHostFunction(
|
|
111
|
+
runtime,
|
|
112
|
+
propNameId,
|
|
113
|
+
0,
|
|
114
|
+
[this](
|
|
115
|
+
jsi::Runtime &runtime,
|
|
116
|
+
const jsi::Value &thisValue,
|
|
117
|
+
const jsi::Value *arguments,
|
|
118
|
+
size_t count) -> jsi::Value {
|
|
119
|
+
auto biquadFilter = wrapper_->createBiquadFilter();
|
|
120
|
+
auto biquadFilterHostObject =
|
|
121
|
+
BiquadFilterNodeHostObject::createFromWrapper(biquadFilter);
|
|
122
|
+
return jsi::Object::createFromHostObject(
|
|
123
|
+
runtime, biquadFilterHostObject);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (propName == "createBufferSource") {
|
|
128
|
+
return jsi::Function::createFromHostFunction(
|
|
129
|
+
runtime,
|
|
130
|
+
propNameId,
|
|
131
|
+
0,
|
|
132
|
+
[this](
|
|
133
|
+
jsi::Runtime &runtime,
|
|
134
|
+
const jsi::Value &thisValue,
|
|
135
|
+
const jsi::Value *arguments,
|
|
136
|
+
size_t count) -> jsi::Value {
|
|
137
|
+
auto bufferSource = wrapper_->createBufferSource();
|
|
138
|
+
auto bufferSourceHostObject =
|
|
139
|
+
AudioBufferSourceNodeHostObject::createFromWrapper(bufferSource);
|
|
140
|
+
return jsi::Object::createFromHostObject(
|
|
141
|
+
runtime, bufferSourceHostObject);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (propName == "createBuffer") {
|
|
146
|
+
return jsi::Function::createFromHostFunction(
|
|
147
|
+
runtime,
|
|
148
|
+
propNameId,
|
|
149
|
+
3,
|
|
150
|
+
[this](
|
|
151
|
+
jsi::Runtime &runtime,
|
|
152
|
+
const jsi::Value &thisValue,
|
|
153
|
+
const jsi::Value *arguments,
|
|
154
|
+
size_t count) -> jsi::Value {
|
|
155
|
+
auto numberOfChannels = static_cast<int>(arguments[0].getNumber());
|
|
156
|
+
auto length = static_cast<int>(arguments[1].getNumber());
|
|
157
|
+
auto sampleRate = static_cast<int>(arguments[2].getNumber());
|
|
158
|
+
auto buffer =
|
|
159
|
+
wrapper_->createBuffer(numberOfChannels, length, sampleRate);
|
|
160
|
+
auto bufferHostObject =
|
|
161
|
+
AudioBufferHostObject::createFromWrapper(buffer);
|
|
162
|
+
return jsi::Object::createFromHostObject(runtime, bufferHostObject);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (propName == "createPeriodicWave") {
|
|
167
|
+
return jsi::Function::createFromHostFunction(
|
|
168
|
+
runtime,
|
|
169
|
+
propNameId,
|
|
170
|
+
3,
|
|
171
|
+
[this](
|
|
172
|
+
jsi::Runtime &runtime,
|
|
173
|
+
const jsi::Value &thisValue,
|
|
174
|
+
const jsi::Value *arguments,
|
|
175
|
+
size_t count) -> jsi::Value {
|
|
176
|
+
auto real = arguments[0].getObject(runtime).getArray(runtime);
|
|
177
|
+
auto imag = arguments[1].getObject(runtime).getArray(runtime);
|
|
178
|
+
auto disableNormalization = arguments[2].getBool();
|
|
179
|
+
auto length =
|
|
180
|
+
static_cast<int>(real.getProperty(runtime, "length").asNumber());
|
|
181
|
+
|
|
182
|
+
auto *realData = new float[length];
|
|
183
|
+
auto *imagData = new float[length];
|
|
184
|
+
|
|
185
|
+
for (size_t i = 0; i < real.length(runtime); i++) {
|
|
186
|
+
realData[i] = static_cast<float>(
|
|
187
|
+
real.getValueAtIndex(runtime, i).getNumber());
|
|
188
|
+
}
|
|
189
|
+
for (size_t i = 0; i < imag.length(runtime); i++) {
|
|
190
|
+
realData[i] = static_cast<float>(
|
|
191
|
+
imag.getValueAtIndex(runtime, i).getNumber());
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
auto periodicWave = wrapper_->createPeriodicWave(
|
|
195
|
+
realData, imagData, disableNormalization, length);
|
|
196
|
+
auto periodicWaveHostObject =
|
|
197
|
+
PeriodicWaveHostObject::createFromWrapper(periodicWave);
|
|
198
|
+
return jsi::Object::createFromHostObject(
|
|
199
|
+
runtime, periodicWaveHostObject);
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
throw std::runtime_error("Not yet implemented!");
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
void BaseAudioContextHostObject::set(
|
|
207
|
+
jsi::Runtime &runtime,
|
|
208
|
+
const jsi::PropNameID &propNameId,
|
|
209
|
+
const jsi::Value &value) {
|
|
210
|
+
auto propName = propNameId.utf8(runtime);
|
|
211
|
+
|
|
212
|
+
throw std::runtime_error("Not yet implemented!");
|
|
213
|
+
}
|
|
214
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <jsi/jsi.h>
|
|
4
|
+
#include <memory>
|
|
5
|
+
#include <utility>
|
|
6
|
+
#include <vector>
|
|
7
|
+
|
|
8
|
+
#include "AudioBufferHostObject.h"
|
|
9
|
+
#include "AudioBufferSourceNodeHostObject.h"
|
|
10
|
+
#include "AudioDestinationNodeHostObject.h"
|
|
11
|
+
#include "BaseAudioContextWrapper.h"
|
|
12
|
+
#include "BiquadFilterNodeHostObject.h"
|
|
13
|
+
#include "GainNodeHostObject.h"
|
|
14
|
+
#include "OscillatorNodeHostObject.h"
|
|
15
|
+
#include "PeriodicWaveHostObject.h"
|
|
16
|
+
#include "StereoPannerNodeHostObject.h"
|
|
17
|
+
|
|
18
|
+
namespace audioapi {
|
|
19
|
+
using namespace facebook;
|
|
20
|
+
|
|
21
|
+
class BaseAudioContextHostObject : public jsi::HostObject {
|
|
22
|
+
public:
|
|
23
|
+
explicit BaseAudioContextHostObject(
|
|
24
|
+
const std::shared_ptr<BaseAudioContextWrapper> &wrapper);
|
|
25
|
+
|
|
26
|
+
jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
|
|
27
|
+
|
|
28
|
+
void set(
|
|
29
|
+
jsi::Runtime &runtime,
|
|
30
|
+
const jsi::PropNameID &name,
|
|
31
|
+
const jsi::Value &value) override;
|
|
32
|
+
|
|
33
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
34
|
+
|
|
35
|
+
protected:
|
|
36
|
+
std::shared_ptr<BaseAudioContextWrapper> wrapper_;
|
|
37
|
+
std::shared_ptr<AudioDestinationNodeHostObject> destination_;
|
|
38
|
+
};
|
|
39
|
+
} // namespace audioapi
|