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

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 (89) hide show
  1. package/android/CMakeLists.txt +2 -2
  2. package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.cpp +3 -9
  3. package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.h +0 -2
  4. package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.h +25 -28
  5. package/common/cpp/HostObjects/AudioBufferHostObject.h +79 -13
  6. package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.h +93 -14
  7. package/common/cpp/HostObjects/AudioContextHostObject.h +10 -21
  8. package/common/cpp/HostObjects/AudioDestinationNodeHostObject.h +3 -16
  9. package/common/cpp/HostObjects/AudioNodeHostObject.h +48 -11
  10. package/common/cpp/HostObjects/AudioParamHostObject.h +56 -14
  11. package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.h +23 -16
  12. package/common/cpp/HostObjects/BaseAudioContextHostObject.h +131 -14
  13. package/common/cpp/HostObjects/BiquadFilterNodeHostObject.h +76 -18
  14. package/common/cpp/HostObjects/Constants.h +2 -0
  15. package/common/cpp/HostObjects/GainNodeHostObject.h +10 -15
  16. package/common/cpp/HostObjects/OscillatorNodeHostObject.h +40 -17
  17. package/common/cpp/HostObjects/PeriodicWaveHostObject.h +4 -17
  18. package/common/cpp/HostObjects/StereoPannerNodeHostObject.h +10 -17
  19. package/common/cpp/core/AudioBufferSourceNode.cpp +180 -73
  20. package/common/cpp/core/AudioBufferSourceNode.h +41 -1
  21. package/common/cpp/core/AudioDestinationNode.h +1 -1
  22. package/common/cpp/core/AudioScheduledSourceNode.cpp +86 -21
  23. package/common/cpp/core/AudioScheduledSourceNode.h +12 -4
  24. package/common/cpp/core/OscillatorNode.cpp +7 -2
  25. package/common/cpp/jsi/JsiHostObject.cpp +85 -0
  26. package/common/cpp/jsi/JsiHostObject.h +94 -0
  27. package/common/cpp/{utils → jsi}/JsiPromise.cpp +10 -9
  28. package/common/cpp/jsi/JsiPromise.h +48 -0
  29. package/common/cpp/utils/AudioUtils.cpp +26 -0
  30. package/common/cpp/utils/AudioUtils.h +16 -0
  31. package/ios/AudioAPIModule.mm +2 -6
  32. package/ios/AudioDecoder/AudioDecoder.m +9 -10
  33. package/ios/AudioPlayer/AudioPlayer.m +2 -1
  34. package/lib/module/core/AudioBufferSourceNode.js +15 -0
  35. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  36. package/lib/module/index.js +18 -0
  37. package/lib/module/index.js.map +1 -1
  38. package/lib/typescript/core/AudioBufferSourceNode.d.ts +7 -0
  39. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  40. package/lib/typescript/index.d.ts +6 -2
  41. package/lib/typescript/index.d.ts.map +1 -1
  42. package/lib/typescript/interfaces.d.ts +4 -0
  43. package/lib/typescript/interfaces.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/src/core/AudioBufferSourceNode.ts +23 -0
  46. package/src/index.ts +24 -0
  47. package/src/interfaces.ts +5 -0
  48. package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.cpp +0 -58
  49. package/common/cpp/AudioAPIInstaller/AudioAPIInstallerWrapper.h +0 -38
  50. package/common/cpp/AudioAPIInstaller/android/AudioAPIInstallerWrapper.cpp +0 -16
  51. package/common/cpp/AudioAPIInstaller/ios/AudioAPIInstallerWrapper.cpp +0 -12
  52. package/common/cpp/HostObjects/AudioBufferHostObject.cpp +0 -150
  53. package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.cpp +0 -79
  54. package/common/cpp/HostObjects/AudioContextHostObject.cpp +0 -55
  55. package/common/cpp/HostObjects/AudioDestinationNodeHostObject.cpp +0 -33
  56. package/common/cpp/HostObjects/AudioNodeHostObject.cpp +0 -102
  57. package/common/cpp/HostObjects/AudioParamHostObject.cpp +0 -115
  58. package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.cpp +0 -73
  59. package/common/cpp/HostObjects/BaseAudioContextHostObject.cpp +0 -250
  60. package/common/cpp/HostObjects/BiquadFilterNodeHostObject.cpp +0 -125
  61. package/common/cpp/HostObjects/GainNodeHostObject.cpp +0 -41
  62. package/common/cpp/HostObjects/OscillatorNodeHostObject.cpp +0 -88
  63. package/common/cpp/HostObjects/PeriodicWaveHostObject.cpp +0 -33
  64. package/common/cpp/HostObjects/StereoPannerNodeHostObject.cpp +0 -41
  65. package/common/cpp/utils/JsiPromise.h +0 -48
  66. package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.cpp +0 -45
  67. package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.h +0 -26
  68. package/common/cpp/wrappers/AudioBufferWrapper.cpp +0 -46
  69. package/common/cpp/wrappers/AudioBufferWrapper.h +0 -30
  70. package/common/cpp/wrappers/AudioContextWrapper.cpp +0 -17
  71. package/common/cpp/wrappers/AudioContextWrapper.h +0 -19
  72. package/common/cpp/wrappers/AudioDestinationNodeWrapper.h +0 -16
  73. package/common/cpp/wrappers/AudioNodeWrapper.cpp +0 -37
  74. package/common/cpp/wrappers/AudioNodeWrapper.h +0 -25
  75. package/common/cpp/wrappers/AudioParamWrapper.cpp +0 -42
  76. package/common/cpp/wrappers/AudioParamWrapper.h +0 -25
  77. package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.cpp +0 -23
  78. package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.h +0 -23
  79. package/common/cpp/wrappers/BaseAudioContextWrapper.cpp +0 -83
  80. package/common/cpp/wrappers/BaseAudioContextWrapper.h +0 -51
  81. package/common/cpp/wrappers/BiquadFilterNodeWrapper.cpp +0 -60
  82. package/common/cpp/wrappers/BiquadFilterNodeWrapper.h +0 -37
  83. package/common/cpp/wrappers/GainNodeWrapper.cpp +0 -14
  84. package/common/cpp/wrappers/GainNodeWrapper.h +0 -20
  85. package/common/cpp/wrappers/OscillatorNodeWrapper.cpp +0 -44
  86. package/common/cpp/wrappers/OscillatorNodeWrapper.h +0 -31
  87. package/common/cpp/wrappers/PeriodicWaveWrapper.h +0 -17
  88. package/common/cpp/wrappers/StereoPannerNodeWrapper.cpp +0 -16
  89. package/common/cpp/wrappers/StereoPannerNodeWrapper.h +0 -21
@@ -1,58 +0,0 @@
1
- #include "AudioAPIInstallerHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- AudioAPIInstallerHostObject::AudioAPIInstallerHostObject(
7
- const std::shared_ptr<AudioAPIInstallerWrapper> &wrapper,
8
- jsi::Runtime *runtime,
9
- const std::shared_ptr<facebook::react::CallInvoker> &jsInvoker)
10
- : wrapper_(wrapper) {
11
- promiseVendor_ =
12
- std::make_shared<JsiPromise::PromiseVendor>(runtime, jsInvoker);
13
- }
14
-
15
- std::vector<jsi::PropNameID> AudioAPIInstallerHostObject::getPropertyNames(
16
- jsi::Runtime &runtime) {
17
- std::vector<jsi::PropNameID> propertyNames;
18
- propertyNames.push_back(
19
- jsi::PropNameID::forUtf8(runtime, "createAudioContext"));
20
- return propertyNames;
21
- }
22
-
23
- jsi::Value AudioAPIInstallerHostObject::get(
24
- jsi::Runtime &runtime,
25
- const jsi::PropNameID &propNameId) {
26
- auto propName = propNameId.utf8(runtime);
27
-
28
- if (propName == "createAudioContext") {
29
- return jsi::Function::createFromHostFunction(
30
- runtime,
31
- propNameId,
32
- 0,
33
- [this](
34
- jsi::Runtime &runtime,
35
- const jsi::Value &thisValue,
36
- const jsi::Value *arguments,
37
- size_t count) -> jsi::Value {
38
- auto audioContext = wrapper_->createAudioContext();
39
- auto audioContextHostObject =
40
- AudioContextHostObject::createFromWrapper(
41
- audioContext, promiseVendor_);
42
- return jsi::Object::createFromHostObject(
43
- runtime, audioContextHostObject);
44
- });
45
- }
46
-
47
- throw std::runtime_error("Not yet implemented!");
48
- }
49
-
50
- void AudioAPIInstallerHostObject::set(
51
- jsi::Runtime &runtime,
52
- const jsi::PropNameID &propNameId,
53
- const jsi::Value &value) {
54
- auto propName = propNameId.utf8(runtime);
55
-
56
- throw std::runtime_error("Not yet implemented!");
57
- }
58
- } // namespace audioapi
@@ -1,38 +0,0 @@
1
- #pragma once
2
-
3
- #include <memory>
4
- #include <string>
5
- #include <utility>
6
-
7
- #include "AudioContextWrapper.h"
8
-
9
- #ifdef ANDROID
10
- #include "AudioAPIInstaller.h"
11
- #else
12
- #include "AudioContext.h"
13
- #endif
14
-
15
- namespace audioapi {
16
-
17
- #ifdef ANDROID
18
- class AudioAPIInstaller;
19
- #endif
20
-
21
- class AudioAPIInstallerWrapper {
22
- #ifdef ANDROID
23
-
24
- public:
25
- explicit AudioAPIInstallerWrapper(AudioAPIInstaller *audioAPIInstaller);
26
-
27
- private:
28
- AudioAPIInstaller *audioAPIInstaller_;
29
- #else
30
-
31
- public:
32
- AudioAPIInstallerWrapper() = default;
33
- #endif
34
-
35
- public:
36
- std::shared_ptr<AudioContextWrapper> createAudioContext() const;
37
- };
38
- } // namespace audioapi
@@ -1,16 +0,0 @@
1
- #ifdef ANDROID
2
- #include "AudioAPIInstallerWrapper.h"
3
-
4
- namespace audioapi {
5
-
6
- AudioAPIInstallerWrapper::AudioAPIInstallerWrapper(
7
- AudioAPIInstaller *audioAPIInstaller)
8
- : audioAPIInstaller_(audioAPIInstaller) {}
9
-
10
- std::shared_ptr<AudioContextWrapper>
11
- AudioAPIInstallerWrapper::createAudioContext() const {
12
- auto audioContext = audioAPIInstaller_->createAudioContext();
13
- return std::make_shared<AudioContextWrapper>(audioContext);
14
- }
15
- } // namespace audioapi
16
- #endif
@@ -1,12 +0,0 @@
1
- #ifndef ANDROID
2
- #include "AudioAPIInstallerWrapper.h"
3
-
4
- namespace audioapi {
5
-
6
- std::shared_ptr<AudioContextWrapper>
7
- AudioAPIInstallerWrapper::createAudioContext() const {
8
- auto audioContext = std::make_shared<AudioContext>();
9
- return std::make_shared<audioapi::AudioContextWrapper>(audioContext);
10
- }
11
- } // namespace audioapi
12
- #endif
@@ -1,150 +0,0 @@
1
- #include "AudioBufferHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- AudioBufferHostObject::AudioBufferHostObject(
7
- const std::shared_ptr<AudioBufferWrapper> &wrapper)
8
- : wrapper_(wrapper) {}
9
-
10
- std::vector<jsi::PropNameID> AudioBufferHostObject::getPropertyNames(
11
- jsi::Runtime &runtime) {
12
- std::vector<jsi::PropNameID> propertyNames;
13
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "buffer"));
14
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "sampleRate"));
15
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "length"));
16
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "duration"));
17
- propertyNames.push_back(
18
- jsi::PropNameID::forAscii(runtime, "numberOfChannels"));
19
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "getChannelData"));
20
- propertyNames.push_back(
21
- jsi::PropNameID::forAscii(runtime, "copyFromChannel"));
22
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "copyToChannel"));
23
- return propertyNames;
24
- }
25
-
26
- jsi::Value AudioBufferHostObject::get(
27
- jsi::Runtime &runtime,
28
- const jsi::PropNameID &propNameId) {
29
- auto propName = propNameId.utf8(runtime);
30
-
31
- if (propName == "sampleRate") {
32
- return {wrapper_->getSampleRate()};
33
- }
34
-
35
- if (propName == "length") {
36
- return {wrapper_->getLength()};
37
- }
38
-
39
- if (propName == "duration") {
40
- return {wrapper_->getDuration()};
41
- }
42
-
43
- if (propName == "numberOfChannels") {
44
- return {wrapper_->getNumberOfChannels()};
45
- }
46
-
47
- if (propName == "getChannelData") {
48
- return jsi::Function::createFromHostFunction(
49
- runtime,
50
- propNameId,
51
- 1,
52
- [this](
53
- jsi::Runtime &rt,
54
- const jsi::Value &thisVal,
55
- const jsi::Value *args,
56
- size_t count) -> jsi::Value {
57
- int channel = static_cast<int>(args[0].getNumber());
58
- float *channelData = wrapper_->getChannelData(channel);
59
-
60
- auto array = jsi::Array(rt, wrapper_->getLength());
61
- for (int i = 0; i < wrapper_->getLength(); i++) {
62
- array.setValueAtIndex(rt, i, jsi::Value(channelData[i]));
63
- }
64
-
65
- return array;
66
- });
67
- }
68
-
69
- if (propName == "copyFromChannel") {
70
- return jsi::Function::createFromHostFunction(
71
- runtime,
72
- propNameId,
73
- 3,
74
- [this](
75
- jsi::Runtime &rt,
76
- const jsi::Value &thisVal,
77
- const jsi::Value *args,
78
- size_t count) -> jsi::Value {
79
- auto destination = args[0].getObject(rt).asArray(rt);
80
- auto destinationLength = static_cast<int>(
81
- destination.getProperty(rt, "length").asNumber());
82
- auto channelNumber = static_cast<int>(args[1].getNumber());
83
- auto startInChannel = static_cast<int>(args[2].getNumber());
84
-
85
- auto *destinationData = new float[destinationLength];
86
-
87
- wrapper_->copyFromChannel(
88
- destinationData,
89
- destinationLength,
90
- channelNumber,
91
- startInChannel);
92
-
93
- for (int i = 0; i < destinationLength; i++) {
94
- destination.setValueAtIndex(rt, i, jsi::Value(destinationData[i]));
95
- }
96
-
97
- return jsi::Value::undefined();
98
- });
99
- }
100
-
101
- if (propName == "copyToChannel") {
102
- return jsi::Function::createFromHostFunction(
103
- runtime,
104
- propNameId,
105
- 3,
106
- [this](
107
- jsi::Runtime &rt,
108
- const jsi::Value &thisVal,
109
- const jsi::Value *args,
110
- size_t count) -> jsi::Value {
111
- auto source = args[0].getObject(rt).asArray(rt);
112
- auto sourceLength =
113
- static_cast<int>(source.getProperty(rt, "length").asNumber());
114
- auto channelNumber = static_cast<int>(args[1].getNumber());
115
- auto startInChannel = static_cast<int>(args[2].getNumber());
116
-
117
- auto *sourceData = new float[sourceLength];
118
-
119
- for (int i = 0; i < sourceLength; i++) {
120
- sourceData[i] =
121
- static_cast<float>(source.getValueAtIndex(rt, i).getNumber());
122
- }
123
-
124
- wrapper_->copyToChannel(
125
- sourceData, sourceLength, channelNumber, startInChannel);
126
-
127
- return jsi::Value::undefined();
128
- });
129
- }
130
-
131
- // `decodeAudioData` is a method that returns a promise to
132
- // AudioBufferHostObject It seems that async/await checks for the presence of
133
- // `then` method on the object
134
- if (propName == "then") {
135
- return jsi::Value::undefined();
136
- }
137
-
138
- throw std::runtime_error("Not yet implemented!");
139
- }
140
-
141
- void AudioBufferHostObject::set(
142
- jsi::Runtime &runtime,
143
- const jsi::PropNameID &propNameId,
144
- const jsi::Value &value) {
145
- auto propName = propNameId.utf8(runtime);
146
-
147
- throw std::runtime_error("Not yet implemented!");
148
- }
149
-
150
- } // namespace audioapi
@@ -1,79 +0,0 @@
1
- #include "AudioBufferSourceNodeHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- AudioBufferSourceNodeHostObject::AudioBufferSourceNodeHostObject(
7
- const std::shared_ptr<AudioBufferSourceNodeWrapper> &wrapper)
8
- : AudioScheduledSourceNodeHostObject(wrapper) {}
9
-
10
- std::shared_ptr<AudioBufferSourceNodeWrapper> AudioBufferSourceNodeHostObject::
11
- getAudioBufferSourceNodeWrapperFromAudioNodeWrapper() {
12
- return std::static_pointer_cast<AudioBufferSourceNodeWrapper>(wrapper_);
13
- }
14
-
15
- std::vector<jsi::PropNameID> AudioBufferSourceNodeHostObject::getPropertyNames(
16
- jsi::Runtime &runtime) {
17
- std::vector<jsi::PropNameID> propertyNames =
18
- AudioScheduledSourceNodeHostObject::getPropertyNames(runtime);
19
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "loop"));
20
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "buffer"));
21
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "resetBuffer"));
22
- return propertyNames;
23
- }
24
-
25
- jsi::Value AudioBufferSourceNodeHostObject::get(
26
- jsi::Runtime &runtime,
27
- const jsi::PropNameID &propNameId) {
28
- auto propName = propNameId.utf8(runtime);
29
-
30
- if (propName == "loop") {
31
- auto wrapper = getAudioBufferSourceNodeWrapperFromAudioNodeWrapper();
32
- auto loop = wrapper->getLoop();
33
- return {loop};
34
- }
35
-
36
- if (propName == "buffer") {
37
- auto wrapper = getAudioBufferSourceNodeWrapperFromAudioNodeWrapper();
38
- auto buffer = wrapper->getBuffer();
39
-
40
- if (!buffer) {
41
- return jsi::Value::null();
42
- }
43
-
44
- auto bufferHostObject = AudioBufferHostObject::createFromWrapper(buffer);
45
- return jsi::Object::createFromHostObject(runtime, bufferHostObject);
46
- }
47
-
48
- return AudioScheduledSourceNodeHostObject::get(runtime, propNameId);
49
- }
50
-
51
- void AudioBufferSourceNodeHostObject::set(
52
- jsi::Runtime &runtime,
53
- const jsi::PropNameID &propNameId,
54
- const jsi::Value &value) {
55
- auto propName = propNameId.utf8(runtime);
56
-
57
- if (propName == "loop") {
58
- auto wrapper = getAudioBufferSourceNodeWrapperFromAudioNodeWrapper();
59
- wrapper->setLoop(value.getBool());
60
- return;
61
- }
62
-
63
- if (propName == "buffer") {
64
- auto wrapper = getAudioBufferSourceNodeWrapperFromAudioNodeWrapper();
65
-
66
- if (value.isNull()) {
67
- wrapper->setBuffer(std::shared_ptr<AudioBufferWrapper>(nullptr));
68
- return;
69
- }
70
-
71
- auto bufferHostObject =
72
- value.getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
73
- wrapper->setBuffer(bufferHostObject->wrapper_);
74
- return;
75
- }
76
-
77
- AudioScheduledSourceNodeHostObject::set(runtime, propNameId, value);
78
- }
79
- } // namespace audioapi
@@ -1,55 +0,0 @@
1
- #include "AudioContextHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- AudioContextHostObject::AudioContextHostObject(
7
- const std::shared_ptr<AudioContextWrapper> &wrapper,
8
- std::shared_ptr<JsiPromise::PromiseVendor> promiseVendor)
9
- : BaseAudioContextHostObject(wrapper, promiseVendor) {}
10
-
11
- std::vector<jsi::PropNameID> AudioContextHostObject::getPropertyNames(
12
- jsi::Runtime &runtime) {
13
- std::vector<jsi::PropNameID> propertyNames =
14
- BaseAudioContextHostObject::getPropertyNames(runtime);
15
- propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "close"));
16
- return propertyNames;
17
- }
18
-
19
- jsi::Value AudioContextHostObject::get(
20
- jsi::Runtime &runtime,
21
- const jsi::PropNameID &propNameId) {
22
- auto propName = propNameId.utf8(runtime);
23
-
24
- if (propName == "close") {
25
- return jsi::Function::createFromHostFunction(
26
- runtime,
27
- propNameId,
28
- 0,
29
- [this](
30
- jsi::Runtime &runtime,
31
- const jsi::Value &thisValue,
32
- const jsi::Value *arguments,
33
- size_t count) -> jsi::Value {
34
- getAudioContextWrapperFromBaseAudioContextWrapper()->close();
35
- return jsi::Value::undefined();
36
- });
37
- }
38
-
39
- return BaseAudioContextHostObject::get(runtime, propNameId);
40
- }
41
-
42
- void AudioContextHostObject::set(
43
- jsi::Runtime &runtime,
44
- const jsi::PropNameID &propNameId,
45
- const jsi::Value &value) {
46
- auto propName = propNameId.utf8(runtime);
47
-
48
- return BaseAudioContextHostObject::set(runtime, propNameId, value);
49
- }
50
-
51
- std::shared_ptr<AudioContextWrapper>
52
- AudioContextHostObject::getAudioContextWrapperFromBaseAudioContextWrapper() {
53
- return std::static_pointer_cast<AudioContextWrapper>(wrapper_);
54
- }
55
- } // namespace audioapi
@@ -1,33 +0,0 @@
1
- #include "AudioDestinationNodeHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- AudioDestinationNodeHostObject::AudioDestinationNodeHostObject(
7
- const std::shared_ptr<AudioDestinationNodeWrapper> &wrapper)
8
- : AudioNodeHostObject(wrapper) {}
9
-
10
- std::vector<jsi::PropNameID> AudioDestinationNodeHostObject::getPropertyNames(
11
- jsi::Runtime &runtime) {
12
- std::vector<jsi::PropNameID> propertyNames;
13
- return propertyNames;
14
- }
15
-
16
- jsi::Value AudioDestinationNodeHostObject::get(
17
- jsi::Runtime &runtime,
18
- const jsi::PropNameID &propNameId) {
19
- auto propName = propNameId.utf8(runtime);
20
-
21
- return AudioNodeHostObject::get(runtime, propNameId);
22
- }
23
-
24
- void AudioDestinationNodeHostObject::set(
25
- jsi::Runtime &runtime,
26
- const jsi::PropNameID &propNameId,
27
- const jsi::Value &value) {
28
- auto propName = propNameId.utf8(runtime);
29
-
30
- return AudioNodeHostObject::set(runtime, propNameId, value);
31
- }
32
-
33
- } // namespace audioapi
@@ -1,102 +0,0 @@
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
@@ -1,115 +0,0 @@
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