@opendaw/studio-adapters 0.0.6

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 (296) hide show
  1. package/README.md +1 -0
  2. package/dist/AudioData.d.ts +7 -0
  3. package/dist/AudioData.d.ts.map +1 -0
  4. package/dist/AudioData.js +1 -0
  5. package/dist/AudioFileBoxAdapter.d.ts +22 -0
  6. package/dist/AudioFileBoxAdapter.d.ts.map +1 -0
  7. package/dist/AudioFileBoxAdapter.js +19 -0
  8. package/dist/AudioLoader.d.ts +26 -0
  9. package/dist/AudioLoader.d.ts.map +1 -0
  10. package/dist/AudioLoader.js +1 -0
  11. package/dist/AudioMetaData.d.ts +8 -0
  12. package/dist/AudioMetaData.d.ts.map +1 -0
  13. package/dist/AudioMetaData.js +1 -0
  14. package/dist/AudioSample.d.ts +5 -0
  15. package/dist/AudioSample.d.ts.map +1 -0
  16. package/dist/AudioSample.js +1 -0
  17. package/dist/AutomatableParameterFieldAdapter.d.ts +35 -0
  18. package/dist/AutomatableParameterFieldAdapter.d.ts.map +1 -0
  19. package/dist/AutomatableParameterFieldAdapter.js +161 -0
  20. package/dist/BoxAdapter.d.ts +7 -0
  21. package/dist/BoxAdapter.d.ts.map +1 -0
  22. package/dist/BoxAdapter.js +1 -0
  23. package/dist/BoxAdapterCollection.d.ts +19 -0
  24. package/dist/BoxAdapterCollection.d.ts.map +1 -0
  25. package/dist/BoxAdapterCollection.js +35 -0
  26. package/dist/BoxAdapters.d.ts +11 -0
  27. package/dist/BoxAdapters.d.ts.map +1 -0
  28. package/dist/BoxAdapters.js +129 -0
  29. package/dist/BoxAdaptersContext.d.ts +24 -0
  30. package/dist/BoxAdaptersContext.d.ts.map +1 -0
  31. package/dist/BoxAdaptersContext.js +1 -0
  32. package/dist/ClipNotifications.d.ts +14 -0
  33. package/dist/ClipNotifications.d.ts.map +1 -0
  34. package/dist/ClipNotifications.js +1 -0
  35. package/dist/ClipSequencing.d.ts +12 -0
  36. package/dist/ClipSequencing.d.ts.map +1 -0
  37. package/dist/ClipSequencing.js +1 -0
  38. package/dist/EngineProcessorOptions.d.ts +18 -0
  39. package/dist/EngineProcessorOptions.d.ts.map +1 -0
  40. package/dist/EngineProcessorOptions.js +26 -0
  41. package/dist/EngineStateSchema.d.ts +7 -0
  42. package/dist/EngineStateSchema.d.ts.map +1 -0
  43. package/dist/EngineStateSchema.js +5 -0
  44. package/dist/FieldAdapter.d.ts +26 -0
  45. package/dist/FieldAdapter.d.ts.map +1 -0
  46. package/dist/FieldAdapter.js +59 -0
  47. package/dist/IconSymbol.d.ts +119 -0
  48. package/dist/IconSymbol.d.ts.map +1 -0
  49. package/dist/IconSymbol.js +119 -0
  50. package/dist/IndexComparator.d.ts +3 -0
  51. package/dist/IndexComparator.d.ts.map +1 -0
  52. package/dist/IndexComparator.js +11 -0
  53. package/dist/ManadatoryBoxes.d.ts +9 -0
  54. package/dist/ManadatoryBoxes.d.ts.map +1 -0
  55. package/dist/ManadatoryBoxes.js +1 -0
  56. package/dist/NoteBroadcaster.d.ts +14 -0
  57. package/dist/NoteBroadcaster.d.ts.map +1 -0
  58. package/dist/NoteBroadcaster.js +23 -0
  59. package/dist/NoteSender.d.ts +9 -0
  60. package/dist/NoteSender.d.ts.map +1 -0
  61. package/dist/NoteSender.js +15 -0
  62. package/dist/NoteStreamReceiver.d.ts +12 -0
  63. package/dist/NoteStreamReceiver.d.ts.map +1 -0
  64. package/dist/NoteStreamReceiver.js +23 -0
  65. package/dist/ParameterAdapterSet.d.ts +14 -0
  66. package/dist/ParameterAdapterSet.d.ts.map +1 -0
  67. package/dist/ParameterAdapterSet.js +27 -0
  68. package/dist/ParameterFieldAdapters.d.ts +11 -0
  69. package/dist/ParameterFieldAdapters.d.ts.map +1 -0
  70. package/dist/ParameterFieldAdapters.js +13 -0
  71. package/dist/PeakMeterProcessorOptions.d.ts +8 -0
  72. package/dist/PeakMeterProcessorOptions.d.ts.map +1 -0
  73. package/dist/PeakMeterProcessorOptions.js +1 -0
  74. package/dist/PianoModeAdapter.d.ts +15 -0
  75. package/dist/PianoModeAdapter.d.ts.map +1 -0
  76. package/dist/PianoModeAdapter.js +28 -0
  77. package/dist/ProjectDecoder.d.ts +13 -0
  78. package/dist/ProjectDecoder.d.ts.map +1 -0
  79. package/dist/ProjectDecoder.js +27 -0
  80. package/dist/RecordingProcessorOptions.d.ts +4 -0
  81. package/dist/RecordingProcessorOptions.d.ts.map +1 -0
  82. package/dist/RecordingProcessorOptions.js +1 -0
  83. package/dist/RingBuffer.d.ts +19 -0
  84. package/dist/RingBuffer.d.ts.map +1 -0
  85. package/dist/RingBuffer.js +92 -0
  86. package/dist/RootBoxAdapter.d.ts +30 -0
  87. package/dist/RootBoxAdapter.d.ts.map +1 -0
  88. package/dist/RootBoxAdapter.js +43 -0
  89. package/dist/SortedBoxAdapterCollection.d.ts +29 -0
  90. package/dist/SortedBoxAdapterCollection.d.ts.map +1 -0
  91. package/dist/SortedBoxAdapterCollection.js +100 -0
  92. package/dist/UnionAdapterTypes.d.ts +15 -0
  93. package/dist/UnionAdapterTypes.d.ts.map +1 -0
  94. package/dist/UnionAdapterTypes.js +5 -0
  95. package/dist/UpdateClockRate.d.ts +2 -0
  96. package/dist/UpdateClockRate.d.ts.map +1 -0
  97. package/dist/UpdateClockRate.js +2 -0
  98. package/dist/audio-unit/AudioBusBoxAdapter.d.ts +28 -0
  99. package/dist/audio-unit/AudioBusBoxAdapter.d.ts.map +1 -0
  100. package/dist/audio-unit/AudioBusBoxAdapter.js +33 -0
  101. package/dist/audio-unit/AudioUnitBoxAdapter.d.ts +55 -0
  102. package/dist/audio-unit/AudioUnitBoxAdapter.d.ts.map +1 -0
  103. package/dist/audio-unit/AudioUnitBoxAdapter.js +97 -0
  104. package/dist/audio-unit/AudioUnitInput.d.ts +21 -0
  105. package/dist/audio-unit/AudioUnitInput.d.ts.map +1 -0
  106. package/dist/audio-unit/AudioUnitInput.js +74 -0
  107. package/dist/audio-unit/AudioUnitInputAdapter.d.ts +4 -0
  108. package/dist/audio-unit/AudioUnitInputAdapter.d.ts.map +1 -0
  109. package/dist/audio-unit/AudioUnitInputAdapter.js +1 -0
  110. package/dist/audio-unit/AudioUnitOutput.d.ts +14 -0
  111. package/dist/audio-unit/AudioUnitOutput.d.ts.map +1 -0
  112. package/dist/audio-unit/AudioUnitOutput.js +42 -0
  113. package/dist/audio-unit/AudioUnitTracks.d.ts +21 -0
  114. package/dist/audio-unit/AudioUnitTracks.d.ts.map +1 -0
  115. package/dist/audio-unit/AudioUnitTracks.js +62 -0
  116. package/dist/audio-unit/AuxSendBoxAdapter.d.ts +23 -0
  117. package/dist/audio-unit/AuxSendBoxAdapter.d.ts.map +1 -0
  118. package/dist/audio-unit/AuxSendBoxAdapter.js +58 -0
  119. package/dist/devices/audio-effects/DelayDeviceBoxAdapter.d.ts +35 -0
  120. package/dist/devices/audio-effects/DelayDeviceBoxAdapter.d.ts.map +1 -0
  121. package/dist/devices/audio-effects/DelayDeviceBoxAdapter.js +50 -0
  122. package/dist/devices/audio-effects/ModularDeviceBoxAdapter.d.ts +31 -0
  123. package/dist/devices/audio-effects/ModularDeviceBoxAdapter.d.ts.map +1 -0
  124. package/dist/devices/audio-effects/ModularDeviceBoxAdapter.js +38 -0
  125. package/dist/devices/audio-effects/RevampDeviceBoxAdapter.d.ts +52 -0
  126. package/dist/devices/audio-effects/RevampDeviceBoxAdapter.d.ts.map +1 -0
  127. package/dist/devices/audio-effects/RevampDeviceBoxAdapter.js +66 -0
  128. package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts +35 -0
  129. package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts.map +1 -0
  130. package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.js +44 -0
  131. package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts +33 -0
  132. package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts.map +1 -0
  133. package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.js +41 -0
  134. package/dist/devices/instruments/NanoDeviceBoxAdapter.d.ts +32 -0
  135. package/dist/devices/instruments/NanoDeviceBoxAdapter.d.ts.map +1 -0
  136. package/dist/devices/instruments/NanoDeviceBoxAdapter.js +40 -0
  137. package/dist/devices/instruments/Playfield/Gate.d.ts +6 -0
  138. package/dist/devices/instruments/Playfield/Gate.d.ts.map +1 -0
  139. package/dist/devices/instruments/Playfield/Gate.js +6 -0
  140. package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.d.ts +63 -0
  141. package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.d.ts.map +1 -0
  142. package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.js +128 -0
  143. package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts +35 -0
  144. package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts.map +1 -0
  145. package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.js +40 -0
  146. package/dist/devices/instruments/TapeDeviceBoxAdapter.d.ts +34 -0
  147. package/dist/devices/instruments/TapeDeviceBoxAdapter.d.ts.map +1 -0
  148. package/dist/devices/instruments/TapeDeviceBoxAdapter.js +42 -0
  149. package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts +39 -0
  150. package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts.map +1 -0
  151. package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.js +47 -0
  152. package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.d.ts +37 -0
  153. package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.d.ts.map +1 -0
  154. package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.js +51 -0
  155. package/dist/devices/midi-effects/PitchDeviceBoxAdapter.d.ts +32 -0
  156. package/dist/devices/midi-effects/PitchDeviceBoxAdapter.d.ts.map +1 -0
  157. package/dist/devices/midi-effects/PitchDeviceBoxAdapter.js +39 -0
  158. package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.d.ts +28 -0
  159. package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.d.ts.map +1 -0
  160. package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.js +35 -0
  161. package/dist/devices.d.ts +68 -0
  162. package/dist/devices.d.ts.map +1 -0
  163. package/dist/devices.js +55 -0
  164. package/dist/editing/UserEditing.d.ts +15 -0
  165. package/dist/editing/UserEditing.d.ts.map +1 -0
  166. package/dist/editing/UserEditing.js +39 -0
  167. package/dist/editing/UserEditingManager.d.ts +14 -0
  168. package/dist/editing/UserEditingManager.d.ts.map +1 -0
  169. package/dist/editing/UserEditingManager.js +23 -0
  170. package/dist/grooves/GrooveBoxAdapter.d.ts +10 -0
  171. package/dist/grooves/GrooveBoxAdapter.d.ts.map +1 -0
  172. package/dist/grooves/GrooveBoxAdapter.js +4 -0
  173. package/dist/grooves/GrooveShuffleBoxAdapter.d.ts +27 -0
  174. package/dist/grooves/GrooveShuffleBoxAdapter.d.ts.map +1 -0
  175. package/dist/grooves/GrooveShuffleBoxAdapter.js +43 -0
  176. package/dist/index.d.ts +98 -0
  177. package/dist/index.d.ts.map +1 -0
  178. package/dist/index.js +99 -0
  179. package/dist/modular/abstract.d.ts +30 -0
  180. package/dist/modular/abstract.d.ts.map +1 -0
  181. package/dist/modular/abstract.js +39 -0
  182. package/dist/modular/connection.d.ts +15 -0
  183. package/dist/modular/connection.d.ts.map +1 -0
  184. package/dist/modular/connection.js +12 -0
  185. package/dist/modular/connector.d.ts +21 -0
  186. package/dist/modular/connector.d.ts.map +1 -0
  187. package/dist/modular/connector.js +42 -0
  188. package/dist/modular/modular.d.ts +30 -0
  189. package/dist/modular/modular.d.ts.map +1 -0
  190. package/dist/modular/modular.js +68 -0
  191. package/dist/modular/module.d.ts +21 -0
  192. package/dist/modular/module.d.ts.map +1 -0
  193. package/dist/modular/module.js +23 -0
  194. package/dist/modular/modules/audio-input.d.ts +14 -0
  195. package/dist/modular/modules/audio-input.d.ts.map +1 -0
  196. package/dist/modular/modules/audio-input.js +17 -0
  197. package/dist/modular/modules/audio-output.d.ts +14 -0
  198. package/dist/modular/modules/audio-output.d.ts.map +1 -0
  199. package/dist/modular/modules/audio-output.js +17 -0
  200. package/dist/modular/modules/delay.d.ts +17 -0
  201. package/dist/modular/modules/delay.d.ts.map +1 -0
  202. package/dist/modular/modules/delay.js +23 -0
  203. package/dist/modular/modules/gain.d.ts +17 -0
  204. package/dist/modular/modules/gain.d.ts.map +1 -0
  205. package/dist/modular/modules/gain.js +23 -0
  206. package/dist/modular/modules/multiplier.d.ts +13 -0
  207. package/dist/modular/modules/multiplier.d.ts.map +1 -0
  208. package/dist/modular/modules/multiplier.js +19 -0
  209. package/dist/modular/user-interface.d.ts +21 -0
  210. package/dist/modular/user-interface.d.ts.map +1 -0
  211. package/dist/modular/user-interface.js +23 -0
  212. package/dist/protocols.d.ts +25 -0
  213. package/dist/protocols.d.ts.map +1 -0
  214. package/dist/protocols.js +1 -0
  215. package/dist/selection/FilteredSelection.d.ts +20 -0
  216. package/dist/selection/FilteredSelection.d.ts.map +1 -0
  217. package/dist/selection/FilteredSelection.js +58 -0
  218. package/dist/selection/SelectableVertex.d.ts +4 -0
  219. package/dist/selection/SelectableVertex.d.ts.map +1 -0
  220. package/dist/selection/SelectableVertex.js +1 -0
  221. package/dist/selection/SelectionEntry.d.ts +7 -0
  222. package/dist/selection/SelectionEntry.d.ts.map +1 -0
  223. package/dist/selection/SelectionEntry.js +1 -0
  224. package/dist/selection/VertexSelection.d.ts +29 -0
  225. package/dist/selection/VertexSelection.d.ts.map +1 -0
  226. package/dist/selection/VertexSelection.js +120 -0
  227. package/dist/selection/isVertexOfBox.d.ts +5 -0
  228. package/dist/selection/isVertexOfBox.d.ts.map +1 -0
  229. package/dist/selection/isVertexOfBox.js +1 -0
  230. package/dist/timeline/ClipBoxAdapter.d.ts +38 -0
  231. package/dist/timeline/ClipBoxAdapter.d.ts.map +1 -0
  232. package/dist/timeline/ClipBoxAdapter.js +11 -0
  233. package/dist/timeline/MarkerBoxAdapter.d.ts +24 -0
  234. package/dist/timeline/MarkerBoxAdapter.d.ts.map +1 -0
  235. package/dist/timeline/MarkerBoxAdapter.js +41 -0
  236. package/dist/timeline/MarkerTrackAdapter.d.ts +19 -0
  237. package/dist/timeline/MarkerTrackAdapter.d.ts.map +1 -0
  238. package/dist/timeline/MarkerTrackAdapter.js +45 -0
  239. package/dist/timeline/RegionBoxAdapter.d.ts +48 -0
  240. package/dist/timeline/RegionBoxAdapter.d.ts.map +1 -0
  241. package/dist/timeline/RegionBoxAdapter.js +12 -0
  242. package/dist/timeline/RegionEditing.d.ts +7 -0
  243. package/dist/timeline/RegionEditing.d.ts.map +1 -0
  244. package/dist/timeline/RegionEditing.js +40 -0
  245. package/dist/timeline/TimelineBoxAdapter.d.ts +16 -0
  246. package/dist/timeline/TimelineBoxAdapter.d.ts.map +1 -0
  247. package/dist/timeline/TimelineBoxAdapter.js +14 -0
  248. package/dist/timeline/TrackBoxAdapter.d.ts +32 -0
  249. package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -0
  250. package/dist/timeline/TrackBoxAdapter.js +167 -0
  251. package/dist/timeline/TrackClips.d.ts +16 -0
  252. package/dist/timeline/TrackClips.d.ts.map +1 -0
  253. package/dist/timeline/TrackClips.js +26 -0
  254. package/dist/timeline/TrackRegions.d.ts +17 -0
  255. package/dist/timeline/TrackRegions.d.ts.map +1 -0
  256. package/dist/timeline/TrackRegions.js +41 -0
  257. package/dist/timeline/TrackType.d.ts +12 -0
  258. package/dist/timeline/TrackType.d.ts.map +1 -0
  259. package/dist/timeline/TrackType.js +37 -0
  260. package/dist/timeline/clip/AudioClipBoxAdapter.d.ts +39 -0
  261. package/dist/timeline/clip/AudioClipBoxAdapter.d.ts.map +1 -0
  262. package/dist/timeline/clip/AudioClipBoxAdapter.js +87 -0
  263. package/dist/timeline/clip/NoteClipBoxAdapter.d.ts +39 -0
  264. package/dist/timeline/clip/NoteClipBoxAdapter.d.ts.map +1 -0
  265. package/dist/timeline/clip/NoteClipBoxAdapter.js +92 -0
  266. package/dist/timeline/clip/ValueClipBoxAdapter.d.ts +40 -0
  267. package/dist/timeline/clip/ValueClipBoxAdapter.d.ts.map +1 -0
  268. package/dist/timeline/clip/ValueClipBoxAdapter.js +98 -0
  269. package/dist/timeline/collection/NoteEventCollectionBoxAdapter.d.ts +40 -0
  270. package/dist/timeline/collection/NoteEventCollectionBoxAdapter.d.ts.map +1 -0
  271. package/dist/timeline/collection/NoteEventCollectionBoxAdapter.js +136 -0
  272. package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts +33 -0
  273. package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts.map +1 -0
  274. package/dist/timeline/collection/ValueEventCollectionBoxAdapter.js +139 -0
  275. package/dist/timeline/event/InterpolationFieldAdapter.d.ts +8 -0
  276. package/dist/timeline/event/InterpolationFieldAdapter.d.ts.map +1 -0
  277. package/dist/timeline/event/InterpolationFieldAdapter.js +47 -0
  278. package/dist/timeline/event/NoteEventBoxAdapter.d.ts +45 -0
  279. package/dist/timeline/event/NoteEventBoxAdapter.d.ts.map +1 -0
  280. package/dist/timeline/event/NoteEventBoxAdapter.js +106 -0
  281. package/dist/timeline/event/ValueEventBoxAdapter.d.ts +39 -0
  282. package/dist/timeline/event/ValueEventBoxAdapter.d.ts.map +1 -0
  283. package/dist/timeline/event/ValueEventBoxAdapter.js +113 -0
  284. package/dist/timeline/region/AudioRegionBoxAdapter.d.ts +53 -0
  285. package/dist/timeline/region/AudioRegionBoxAdapter.d.ts.map +1 -0
  286. package/dist/timeline/region/AudioRegionBoxAdapter.js +143 -0
  287. package/dist/timeline/region/NoteRegionBoxAdapter.d.ts +53 -0
  288. package/dist/timeline/region/NoteRegionBoxAdapter.d.ts.map +1 -0
  289. package/dist/timeline/region/NoteRegionBoxAdapter.js +186 -0
  290. package/dist/timeline/region/ValueRegionBoxAdapter.d.ts +59 -0
  291. package/dist/timeline/region/ValueRegionBoxAdapter.d.ts.map +1 -0
  292. package/dist/timeline/region/ValueRegionBoxAdapter.js +193 -0
  293. package/dist/unions.d.ts +11 -0
  294. package/dist/unions.d.ts.map +1 -0
  295. package/dist/unions.js +17 -0
  296. package/package.json +38 -0
@@ -0,0 +1,97 @@
1
+ import { StringMapping, Terminator, ValueMapping } from "@opendaw/lib-std";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { Devices } from "../devices";
4
+ import { AudioUnitTracks } from "./AudioUnitTracks";
5
+ import { AudioUnitInput } from "./AudioUnitInput";
6
+ import { SortedBoxAdapterCollection } from "../SortedBoxAdapterCollection";
7
+ import { ParameterAdapterSet } from "../ParameterAdapterSet";
8
+ import { AuxSendBoxAdapter } from "./AuxSendBoxAdapter";
9
+ import { AudioUnitOutput } from "./AudioUnitOutput";
10
+ export class AudioUnitBoxAdapter {
11
+ "class" = "device-host";
12
+ #terminator = new Terminator();
13
+ #context;
14
+ #box;
15
+ #parametric;
16
+ #tracks;
17
+ #input;
18
+ #midiEffects;
19
+ #audioEffects;
20
+ #auxSends;
21
+ #output;
22
+ namedParameter; // let typescript infer the type
23
+ constructor(context, box) {
24
+ this.#context = context;
25
+ this.#box = box;
26
+ this.#parametric = this.#terminator.own(new ParameterAdapterSet(this.#context));
27
+ this.#tracks = this.#terminator.own(new AudioUnitTracks(this, this.#context.boxAdapters));
28
+ this.#input = this.#terminator.own(new AudioUnitInput(this.#box.input.pointerHub, this.#context.boxAdapters));
29
+ this.#midiEffects = this.#terminator.own(SortedBoxAdapterCollection.create(this.#box.midiEffects, box => this.#context.boxAdapters.adapterFor(box, Devices.isMidiEffect), Pointers.MidiEffectHost));
30
+ this.#audioEffects = this.#terminator.own(SortedBoxAdapterCollection.create(this.#box.audioEffects, box => this.#context.boxAdapters.adapterFor(box, Devices.isAudioEffect), Pointers.AudioEffectHost));
31
+ this.#auxSends = this.#terminator.own(SortedBoxAdapterCollection.create(this.#box.auxSends, box => this.#context.boxAdapters.adapterFor(box, AuxSendBoxAdapter), Pointers.AuxSend));
32
+ this.#output = this.#terminator.own(new AudioUnitOutput(this.#box.output, this.#context.boxAdapters));
33
+ this.namedParameter = this.#wrapParameters(box);
34
+ }
35
+ get box() { return this.#box; }
36
+ get uuid() { return this.#box.address.uuid; }
37
+ get address() { return this.#box.address; }
38
+ get indexField() { return this.#box.index; }
39
+ get type() { return this.#box.type.getValue(); }
40
+ get tracks() { return this.#tracks; }
41
+ get input() { return this.#input; }
42
+ get midiEffects() { return this.#midiEffects; }
43
+ get audioEffects() { return this.#audioEffects; }
44
+ get inputAdapter() { return this.#input.getValue(); }
45
+ get auxSends() { return this.#auxSends; }
46
+ get output() { return this.#output; }
47
+ get isBus() { return this.input.getValue().mapOr(adapter => adapter.type === "bus", false); }
48
+ get isInstrument() { return this.input.getValue().mapOr(adapter => adapter.type === "instrument", false); }
49
+ get isOutput() {
50
+ return this.#box.output.targetVertex.mapOr(output => output.box.address.equals(this.#context.rootBoxAdapter.address), false);
51
+ }
52
+ get midiEffectsField() { return this.#box.midiEffects; }
53
+ get inputField() { return this.#box.input; }
54
+ get audioEffectsField() { return this.#box.audioEffects; }
55
+ get tracksField() { return this.#box.tracks; }
56
+ get minimizedField() { return this.#input.getValue().unwrap().minimizedField; }
57
+ get isAudioUnit() { return true; }
58
+ get label() { return this.#input.getValue().mapOr(input => input.labelField.getValue(), ""); }
59
+ audioUnitBoxAdapter() { return this; }
60
+ indicesLimit() {
61
+ const adapters = this.#context.rootBoxAdapter.audioUnits.adapters();
62
+ const startIndex = this.indexField.getValue();
63
+ const unitType = this.type;
64
+ let min = startIndex;
65
+ let max = startIndex;
66
+ while (min > 0) {
67
+ if (adapters[min - 1].type === unitType) {
68
+ min--;
69
+ }
70
+ else {
71
+ break;
72
+ }
73
+ }
74
+ while (max < adapters.length - 1) {
75
+ if (adapters[max + 1].type === unitType) {
76
+ max++;
77
+ }
78
+ else {
79
+ break;
80
+ }
81
+ }
82
+ return [min, max + 1];
83
+ }
84
+ move(delta) { this.#context.rootBoxAdapter.audioUnits.move(this, delta); }
85
+ moveTrack(adapter, delta) { this.#tracks.collection.move(adapter, delta); }
86
+ deleteTrack(adapter) { this.#tracks.delete(adapter); }
87
+ toString() { return `{${this.constructor.name}}`; }
88
+ terminate() { this.#terminator.terminate(); }
89
+ #wrapParameters(box) {
90
+ return {
91
+ volume: this.#parametric.createParameter(box.volume, ValueMapping.decibel(-96.0, -9.0, +6.0), StringMapping.decible, "volume"),
92
+ panning: this.#parametric.createParameter(box.panning, ValueMapping.bipolar(), StringMapping.panning, "panning", 0.5),
93
+ mute: this.#parametric.createParameter(box.mute, ValueMapping.bool, StringMapping.bool, "mute"),
94
+ solo: this.#parametric.createParameter(box.solo, ValueMapping.bool, StringMapping.bool, "solo")
95
+ };
96
+ }
97
+ }
@@ -0,0 +1,21 @@
1
+ import { DefaultObservableValue, ObservableValue, Observer, Option, Terminable } from "@opendaw/lib-std";
2
+ import { PointerHub } from "@opendaw/lib-box";
3
+ import { IconSymbol } from "../IconSymbol";
4
+ import { AudioUnitInputAdapter } from "./AudioUnitInputAdapter";
5
+ import { BoxAdapters } from "../BoxAdapters";
6
+ export declare class AudioUnitInput implements ObservableValue<Option<AudioUnitInputAdapter>>, Terminable {
7
+ #private;
8
+ constructor(pointerHub: PointerHub, boxAdapters: BoxAdapters);
9
+ getValue(): Option<AudioUnitInputAdapter>;
10
+ subscribe(observer: Observer<ObservableValue<Option<AudioUnitInputAdapter>>>): Terminable;
11
+ catchupAndSubscribe(observer: Observer<ObservableValue<Option<AudioUnitInputAdapter>>>): Terminable;
12
+ catchupAndSubscribeLabelChange(observer: Observer<Option<string>>): Terminable;
13
+ catchupAndSubscribeIconChange(observer: Observer<ObservableValue<IconSymbol>>): Terminable;
14
+ set label(value: string);
15
+ get label(): Option<string>;
16
+ set icon(value: IconSymbol);
17
+ get icon(): IconSymbol;
18
+ get iconValue(): DefaultObservableValue<IconSymbol>;
19
+ terminate(): void;
20
+ }
21
+ //# sourceMappingURL=AudioUnitInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioUnitInput.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioUnitInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,sBAAsB,EAEtB,eAAe,EACf,QAAQ,EACR,MAAM,EAEN,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAG3C,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAI1C,qBAAa,cAAe,YAAW,eAAe,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,EAAE,UAAU;;gBAQjF,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW;IAoC5D,QAAQ,IAAI,MAAM,CAAC,qBAAqB,CAAC;IAEzC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,UAAU;IAIzF,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,UAAU;IAKnG,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU;IAK9E,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,GAAG,UAAU;IAI1F,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAqE;IAC5F,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAmE;IAE9F,IAAI,IAAI,CAAC,KAAK,EAAE,UAAU,EAAuF;IACjH,IAAI,IAAI,IAAI,UAAU,CAKrB;IAED,IAAI,SAAS,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAyB;IAE5E,SAAS,IAAI,IAAI;CAIpB"}
@@ -0,0 +1,74 @@
1
+ import { assert, DefaultObservableValue, Notifier, Option, Terminable, Terminator } from "@opendaw/lib-std";
2
+ import { AudioBusBox } from "@opendaw/studio-boxes";
3
+ import { Pointers } from "@opendaw/studio-enums";
4
+ import { IconSymbol } from "../IconSymbol";
5
+ import { AudioBusBoxAdapter } from "./AudioBusBoxAdapter";
6
+ import { Devices } from "../devices";
7
+ export class AudioUnitInput {
8
+ #terminator;
9
+ #labelNotifier;
10
+ #iconValue;
11
+ #observable;
12
+ #subscription = Terminable.Empty;
13
+ constructor(pointerHub, boxAdapters) {
14
+ this.#terminator = new Terminator();
15
+ this.#labelNotifier = this.#terminator.own(new Notifier());
16
+ this.#iconValue = this.#terminator.own(new DefaultObservableValue(IconSymbol.Unknown));
17
+ this.#observable = this.#terminator.own(new DefaultObservableValue(Option.None));
18
+ this.#terminator.own(this.#observable.subscribe(owner => {
19
+ this.#subscription.terminate();
20
+ this.#subscription = owner.getValue().match({
21
+ none: () => {
22
+ this.#labelNotifier.notify(Option.None);
23
+ return Terminable.Empty;
24
+ },
25
+ some: ({ labelField, iconField }) => Terminable.many(iconField.catchupAndSubscribe(field => this.#iconValue.setValue(IconSymbol.fromName(field.getValue()))), labelField.catchupAndSubscribe(field => this.#labelNotifier.notify(Option.wrap(field.getValue()))))
26
+ });
27
+ }));
28
+ this.#terminator.own(pointerHub.catchupAndSubscribeTransactual({
29
+ onAdd: ({ box }) => {
30
+ assert(this.#observable.getValue().isEmpty(), "Already set");
31
+ const input = box instanceof AudioBusBox
32
+ ? boxAdapters.adapterFor(box, AudioBusBoxAdapter)
33
+ : boxAdapters.adapterFor(box, Devices.isInstrument);
34
+ if (this.#observable.getValue().unwrapOrNull() !== input) {
35
+ this.#observable.setValue(Option.wrap(input));
36
+ }
37
+ },
38
+ onRemove: ({ box }) => {
39
+ assert(this.#observable.getValue().unwrap("Cannot remove").box.address
40
+ .equals(box.address), "Unexpected value to remove");
41
+ this.#observable.setValue(Option.None);
42
+ }
43
+ }, Pointers.InstrumentHost, Pointers.AudioOutput));
44
+ }
45
+ getValue() { return this.#observable.getValue(); }
46
+ subscribe(observer) {
47
+ return this.#observable.subscribe(observer);
48
+ }
49
+ catchupAndSubscribe(observer) {
50
+ observer(this.#observable);
51
+ return this.subscribe(observer);
52
+ }
53
+ catchupAndSubscribeLabelChange(observer) {
54
+ observer(this.label);
55
+ return this.#labelNotifier.subscribe(observer);
56
+ }
57
+ catchupAndSubscribeIconChange(observer) {
58
+ return this.#iconValue.catchupAndSubscribe(observer);
59
+ }
60
+ set label(value) { this.getValue().ifSome(input => input.labelField.setValue(value)); }
61
+ get label() { return this.getValue().map(input => input.labelField.getValue()); }
62
+ set icon(value) { this.getValue().ifSome(input => input.iconField.setValue(IconSymbol.toName(value))); }
63
+ get icon() {
64
+ return this.getValue().match({
65
+ none: () => IconSymbol.Unknown,
66
+ some: input => IconSymbol.fromName(input.iconField.getValue())
67
+ });
68
+ }
69
+ get iconValue() { return this.#iconValue; }
70
+ terminate() {
71
+ this.#terminator.terminate();
72
+ this.#subscription.terminate();
73
+ }
74
+ }
@@ -0,0 +1,4 @@
1
+ import { InstrumentDeviceBoxAdapter } from "../devices";
2
+ import { AudioBusBoxAdapter } from "./AudioBusBoxAdapter";
3
+ export type AudioUnitInputAdapter = InstrumentDeviceBoxAdapter | AudioBusBoxAdapter;
4
+ //# sourceMappingURL=AudioUnitInputAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioUnitInputAdapter.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioUnitInputAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,YAAY,CAAA;AACrD,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAEvD,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,kBAAkB,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import { Observer, Option, Subscription, Terminable } from "@opendaw/lib-std";
2
+ import { PointerField } from "@opendaw/lib-box";
3
+ import { Pointers } from "@opendaw/studio-enums";
4
+ import { BoxAdapters } from "../BoxAdapters";
5
+ import { AudioBusBoxAdapter } from "./AudioBusBoxAdapter";
6
+ export declare class AudioUnitOutput implements Terminable {
7
+ #private;
8
+ constructor(pointerField: PointerField<Pointers.AudioOutput>, boxAdapters: BoxAdapters);
9
+ subscribe(observer: Observer<Option<AudioBusBoxAdapter>>): Subscription;
10
+ catchupAndSubscribe(observer: Observer<Option<AudioBusBoxAdapter>>): Subscription;
11
+ get adapter(): Option<AudioBusBoxAdapter>;
12
+ terminate(): void;
13
+ }
14
+ //# sourceMappingURL=AudioUnitOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioUnitOutput.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioUnitOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAEvD,qBAAa,eAAgB,YAAW,UAAU;;gBASlC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,WAAW;IAmBtF,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,YAAY;IAIvE,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,YAAY;IAKjF,IAAI,OAAO,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAKxC;IAED,SAAS,IAAI,IAAI;CAIpB"}
@@ -0,0 +1,42 @@
1
+ import { Notifier, Option, Terminable, Terminator } from "@opendaw/lib-std";
2
+ import { AudioBusBoxAdapter } from "./AudioBusBoxAdapter";
3
+ export class AudioUnitOutput {
4
+ #pointerField;
5
+ #boxAdapters;
6
+ #terminator;
7
+ #busChangeNotifier;
8
+ #subscription = Terminable.Empty;
9
+ constructor(pointerField, boxAdapters) {
10
+ this.#pointerField = pointerField;
11
+ this.#boxAdapters = boxAdapters;
12
+ this.#terminator = new Terminator();
13
+ this.#busChangeNotifier = this.#terminator.own(new Notifier());
14
+ this.#terminator.own(pointerField.catchupAndSubscribe(() => {
15
+ this.#subscription.terminate();
16
+ this.#subscription = this.adapter.match({
17
+ none: () => {
18
+ this.#busChangeNotifier.notify(Option.None);
19
+ return Terminable.Empty;
20
+ },
21
+ some: adapter => adapter.catchupAndSubscribe(adapter => this.#busChangeNotifier.notify(Option.wrap(adapter)))
22
+ });
23
+ }));
24
+ }
25
+ subscribe(observer) {
26
+ return this.#busChangeNotifier.subscribe(observer);
27
+ }
28
+ catchupAndSubscribe(observer) {
29
+ observer(this.adapter);
30
+ return this.subscribe(observer);
31
+ }
32
+ get adapter() {
33
+ return this.#pointerField.targetVertex
34
+ .flatMap(target => Option.wrap(target.box.accept({
35
+ visitAudioBusBox: (box) => this.#boxAdapters.adapterFor(box, AudioBusBoxAdapter)
36
+ })));
37
+ }
38
+ terminate() {
39
+ this.#terminator.terminate();
40
+ this.#subscription.terminate();
41
+ }
42
+ }
@@ -0,0 +1,21 @@
1
+ import { int, Observer, Option, Subscription, Terminable } from "@opendaw/lib-std";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { Vertex } from "@opendaw/lib-box";
4
+ import { AudioUnitBoxAdapter } from "./AudioUnitBoxAdapter";
5
+ import { IndexedAdapterCollectionListener, SortedBoxAdapterCollection } from "../SortedBoxAdapterCollection";
6
+ import { TrackBoxAdapter } from "../timeline/TrackBoxAdapter";
7
+ import { BoxAdapters } from "../BoxAdapters";
8
+ import { TrackType } from "../timeline/TrackType";
9
+ export declare class AudioUnitTracks implements Terminable {
10
+ #private;
11
+ constructor(adapter: AudioUnitBoxAdapter, boxAdapters: BoxAdapters);
12
+ create(type: TrackType, target: Vertex<Pointers.Automation | Pointers>, index?: int): void;
13
+ controls(target: Vertex<Pointers.Automation | Pointers>): Option<TrackBoxAdapter>;
14
+ delete(adapter: TrackBoxAdapter): void;
15
+ get collection(): SortedBoxAdapterCollection<TrackBoxAdapter, Pointers.TrackCollection>;
16
+ values(): ReadonlyArray<TrackBoxAdapter>;
17
+ catchupAndSubscribe(listener: IndexedAdapterCollectionListener<TrackBoxAdapter>): Subscription;
18
+ subscribeAnyChange(observer: Observer<void>): Subscription;
19
+ terminate(): void;
20
+ }
21
+ //# sourceMappingURL=AudioUnitTracks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioUnitTracks.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioUnitTracks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAY,QAAQ,EAAE,MAAM,EAAoB,YAAY,EAAE,UAAU,EAAO,MAAM,kBAAkB,CAAA;AAClH,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,gCAAgC,EAAE,0BAA0B,EAAC,MAAM,+BAA+B,CAAA;AAC1G,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAA;AAE/C,qBAAa,eAAgB,YAAW,UAAU;;gBAQlC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW;IAelE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;IAW1F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;IAKjF,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAUtC,IAAI,UAAU,IAAI,0BAA0B,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,CAA0B;IAEjH,MAAM,IAAI,aAAa,CAAC,eAAe,CAAC;IAExC,mBAAmB,CAAC,QAAQ,EAAE,gCAAgC,CAAC,eAAe,CAAC,GAAG,YAAY;IAI9F,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAE1D,SAAS,IAAI,IAAI;CAMpB"}
@@ -0,0 +1,62 @@
1
+ import { Notifier, Option, panic, UUID } from "@opendaw/lib-std";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { TrackBox } from "@opendaw/studio-boxes";
4
+ import { SortedBoxAdapterCollection } from "../SortedBoxAdapterCollection";
5
+ import { TrackBoxAdapter } from "../timeline/TrackBoxAdapter";
6
+ export class AudioUnitTracks {
7
+ #adapter;
8
+ #regionNotifier = new Notifier();
9
+ #collection;
10
+ #subscriptions;
11
+ #subscription;
12
+ constructor(adapter, boxAdapters) {
13
+ this.#adapter = adapter;
14
+ this.#collection = SortedBoxAdapterCollection.create(adapter.box.tracks, box => boxAdapters.adapterFor(box, TrackBoxAdapter), Pointers.TrackCollection);
15
+ this.#subscriptions = UUID.newSet(({ uuid }) => uuid);
16
+ this.#subscription = this.#collection.catchupAndSubscribe({
17
+ onAdd: (adapter) => this.#subscriptions.add({
18
+ uuid: adapter.uuid,
19
+ subscription: adapter.regions.subscribeChanges(() => this.#regionNotifier.notify())
20
+ }),
21
+ onRemove: ({ uuid }) => this.#subscriptions.removeByKey(uuid).subscription.terminate(),
22
+ onReorder: (_adapter) => { }
23
+ });
24
+ }
25
+ create(type, target, index) {
26
+ const graph = this.#adapter.box.graph;
27
+ const tracks = this.#adapter.box.tracks;
28
+ TrackBox.create(graph, UUID.generate(), box => {
29
+ box.index.setValue(index ?? this.#collection.getMinFreeIndex());
30
+ box.type.setValue(type);
31
+ box.tracks.refer(tracks);
32
+ box.target.refer(target);
33
+ });
34
+ }
35
+ controls(target) {
36
+ return Option.wrap(this.#collection.adapters()
37
+ .find(adapter => adapter.target.targetVertex.contains(target), false));
38
+ }
39
+ delete(adapter) {
40
+ const adapters = this.#collection.adapters();
41
+ const deleteIndex = adapters.indexOf(adapter);
42
+ if (deleteIndex === -1) {
43
+ return panic(`Cannot delete ${adapter}. Does not exist.`);
44
+ }
45
+ for (let index = deleteIndex + 1; index < adapters.length; index++) {
46
+ adapters[index].indexField.setValue(index - 1);
47
+ }
48
+ adapter.box.delete();
49
+ }
50
+ get collection() { return this.#collection; }
51
+ values() { return this.#collection.adapters(); }
52
+ catchupAndSubscribe(listener) {
53
+ return this.#collection.catchupAndSubscribe(listener);
54
+ }
55
+ subscribeAnyChange(observer) { return this.#regionNotifier.subscribe(observer); }
56
+ terminate() {
57
+ this.#collection.terminate();
58
+ this.#subscription.terminate();
59
+ this.#subscriptions.forEach(({ subscription }) => subscription.terminate());
60
+ this.#subscriptions.clear();
61
+ }
62
+ }
@@ -0,0 +1,23 @@
1
+ import { Address, Box, Int32Field } from "@opendaw/lib-box";
2
+ import { float, Observer, Option, Subscription, UUID } from "@opendaw/lib-std";
3
+ import { AuxSendBox } from "@opendaw/studio-boxes";
4
+ import { BoxAdapter } from "../BoxAdapter";
5
+ import { AudioBusBoxAdapter } from "./AudioBusBoxAdapter";
6
+ import { BoxAdaptersContext } from "../BoxAdaptersContext";
7
+ import { AutomatableParameterFieldAdapter } from "../AutomatableParameterFieldAdapter";
8
+ export declare class AuxSendBoxAdapter implements BoxAdapter {
9
+ #private;
10
+ constructor(context: BoxAdaptersContext, box: AuxSendBox);
11
+ catchupAndSubscribeBusChanges(observer: Observer<Option<AudioBusBoxAdapter>>): Subscription;
12
+ get uuid(): UUID.Format;
13
+ get address(): Address;
14
+ get box(): Box;
15
+ get indexField(): Int32Field;
16
+ get sendPan(): AutomatableParameterFieldAdapter<float>;
17
+ get sendGain(): AutomatableParameterFieldAdapter<float>;
18
+ get targetBus(): AudioBusBoxAdapter;
19
+ get optTargetBus(): Option<AudioBusBoxAdapter>;
20
+ delete(): void;
21
+ terminate(): void;
22
+ }
23
+ //# sourceMappingURL=AuxSendBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuxSendBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AuxSendBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAA;AACzD,OAAO,EACH,KAAK,EAEL,QAAQ,EACR,MAAM,EAEN,YAAY,EAGZ,IAAI,EAEP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAc,UAAU,EAAa,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,gCAAgC,EAAC,MAAM,qCAAqC,CAAA;AAEpF,qBAAa,iBAAkB,YAAW,UAAU;;gBAYpC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,UAAU;IA6BxD,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,YAAY;IAK3F,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAgC;IACvD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,GAAG,IAAI,GAAG,CAAmB;IACjC,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,OAAO,IAAI,gCAAgC,CAAC,KAAK,CAAC,CAAuB;IAC7E,IAAI,QAAQ,IAAI,gCAAgC,CAAC,KAAK,CAAC,CAAwB;IAC/E,IAAI,SAAS,IAAI,kBAAkB,CAGlC;IAED,IAAI,YAAY,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAK7C;IAED,MAAM,IAAI,IAAI;IAEd,SAAS,IAAI,IAAI;CAIpB"}
@@ -0,0 +1,58 @@
1
+ import { Notifier, Option, StringMapping, Terminable, Terminator, ValueMapping } from "@opendaw/lib-std";
2
+ import { AudioBusBoxAdapter } from "./AudioBusBoxAdapter";
3
+ import { AutomatableParameterFieldAdapter } from "../AutomatableParameterFieldAdapter";
4
+ export class AuxSendBoxAdapter {
5
+ #context;
6
+ #box;
7
+ #terminator;
8
+ #busChangeNotifier;
9
+ #sendPan;
10
+ #sendGain;
11
+ #subscription = Terminable.Empty;
12
+ constructor(context, box) {
13
+ this.#context = context;
14
+ this.#box = box;
15
+ this.#terminator = new Terminator();
16
+ this.#busChangeNotifier = this.#terminator.own(new Notifier());
17
+ this.#terminator.own(box.targetBus.catchupAndSubscribe(() => {
18
+ this.#subscription.terminate();
19
+ this.#subscription = this.optTargetBus.match({
20
+ none: () => {
21
+ this.#busChangeNotifier.notify(Option.None);
22
+ return Terminable.Empty;
23
+ },
24
+ some: adapter => adapter.catchupAndSubscribe(adapter => this.#busChangeNotifier.notify(Option.wrap(adapter)))
25
+ });
26
+ }));
27
+ this.#sendPan = this.#terminator.own(new AutomatableParameterFieldAdapter(this.#context, this.#box.sendPan, ValueMapping.bipolar(), StringMapping.percent({ unit: "%", fractionDigits: 0 }), "panning"));
28
+ this.#sendGain = this.#terminator.own(new AutomatableParameterFieldAdapter(this.#context, this.#box.sendGain, ValueMapping.DefaultDecibel, StringMapping.numeric({
29
+ unit: "dB",
30
+ fractionDigits: 1
31
+ }), "gain"));
32
+ }
33
+ catchupAndSubscribeBusChanges(observer) {
34
+ observer(this.optTargetBus);
35
+ return this.#busChangeNotifier.subscribe(observer);
36
+ }
37
+ get uuid() { return this.#box.address.uuid; }
38
+ get address() { return this.#box.address; }
39
+ get box() { return this.#box; }
40
+ get indexField() { return this.#box.index; }
41
+ get sendPan() { return this.#sendPan; }
42
+ get sendGain() { return this.#sendGain; }
43
+ get targetBus() {
44
+ return this.#context.boxAdapters
45
+ .adapterFor(this.#box.targetBus.targetVertex.unwrap("no audioUnit").box, AudioBusBoxAdapter);
46
+ }
47
+ get optTargetBus() {
48
+ return this.#box.targetBus.targetVertex
49
+ .flatMap(target => Option.wrap(target.box.accept({
50
+ visitAudioBusBox: (box) => this.#context.boxAdapters.adapterFor(box, AudioBusBoxAdapter)
51
+ })));
52
+ }
53
+ delete() { this.#box.delete(); }
54
+ terminate() {
55
+ this.#terminator.terminate();
56
+ this.#subscription.terminate();
57
+ }
58
+ }
@@ -0,0 +1,35 @@
1
+ import { DelayDeviceBox } from "@opendaw/studio-boxes";
2
+ import { StringMapping, UUID } from "@opendaw/lib-std";
3
+ import { Address, BooleanField, Int32Field, PointerField, StringField } from "@opendaw/lib-box";
4
+ import { Pointers } from "@opendaw/studio-enums";
5
+ import { AudioEffectDeviceBoxAdapter, DeviceHost } from "../../devices";
6
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
7
+ import { AudioUnitBoxAdapter } from "../../audio-unit/AudioUnitBoxAdapter";
8
+ export declare class DelayDeviceBoxAdapter implements AudioEffectDeviceBoxAdapter {
9
+ #private;
10
+ static OffsetFractions: readonly (readonly [number, number])[];
11
+ static OffsetStringMapping: StringMapping<number>;
12
+ readonly type = "audio-effect";
13
+ readonly accepts = "audio";
14
+ readonly namedParameter: {
15
+ readonly delay: import("../..").AutomatableParameterFieldAdapter<number>;
16
+ readonly feedback: import("../..").AutomatableParameterFieldAdapter<number>;
17
+ readonly cross: import("../..").AutomatableParameterFieldAdapter<number>;
18
+ readonly filter: import("../..").AutomatableParameterFieldAdapter<number>;
19
+ readonly dry: import("../..").AutomatableParameterFieldAdapter<number>;
20
+ readonly wet: import("../..").AutomatableParameterFieldAdapter<number>;
21
+ };
22
+ constructor(context: BoxAdaptersContext, box: DelayDeviceBox);
23
+ get box(): DelayDeviceBox;
24
+ get uuid(): UUID.Format;
25
+ get address(): Address;
26
+ get indexField(): Int32Field;
27
+ get labelField(): StringField;
28
+ get enabledField(): BooleanField;
29
+ get minimizedField(): BooleanField;
30
+ get host(): PointerField<Pointers.AudioEffectHost>;
31
+ deviceHost(): DeviceHost;
32
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
33
+ terminate(): void;
34
+ }
35
+ //# sourceMappingURL=DelayDeviceBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DelayDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/audio-effects/DelayDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAC,aAAa,EAAE,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,2BAA2B,EAAE,UAAU,EAAU,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AAExE,qBAAa,qBAAsB,YAAW,2BAA2B;;IACrE,MAAM,CAAC,eAAe,yCAME;IAExB,MAAM,CAAC,mBAAmB,wBAA+E;IAEzG,QAAQ,CAAC,IAAI,kBAAiB;IAC9B,QAAQ,CAAC,OAAO,WAAU;IAM1B,QAAQ,CAAC,cAAc;;;;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,cAAc;IAO5D,IAAI,GAAG,IAAI,cAAc,CAAmB;IAC5C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAgC;IACvD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,YAAY,IAAI,YAAY,CAA2B;IAC3D,IAAI,cAAc,IAAI,YAAY,CAA6B;IAC/D,IAAI,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAwB;IAE1E,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAE1C,SAAS,IAAI,IAAI;CA8BpB"}
@@ -0,0 +1,50 @@
1
+ import { StringMapping, ValueMapping } from "@opendaw/lib-std";
2
+ import { Fraction } from "@opendaw/lib-dsp";
3
+ import { Devices } from "../../devices";
4
+ import { ParameterAdapterSet } from "../../ParameterAdapterSet";
5
+ export class DelayDeviceBoxAdapter {
6
+ static OffsetFractions = Fraction.builder()
7
+ .add([1, 1]).add([1, 2]).add([1, 3]).add([1, 4])
8
+ .add([3, 16]).add([1, 6]).add([1, 8]).add([3, 32])
9
+ .add([1, 12]).add([1, 16]).add([3, 64]).add([1, 24])
10
+ .add([1, 32]).add([1, 48]).add([1, 64])
11
+ .add([1, 96]).add([1, 128])
12
+ .asDescendingArray();
13
+ static OffsetStringMapping = StringMapping.indices("", this.OffsetFractions.map(([n, d]) => `${n}/${d}`));
14
+ type = "audio-effect";
15
+ accepts = "audio";
16
+ #context;
17
+ #box;
18
+ #parametric;
19
+ namedParameter; // let typescript infer the type
20
+ constructor(context, box) {
21
+ this.#context = context;
22
+ this.#box = box;
23
+ this.#parametric = new ParameterAdapterSet(this.#context);
24
+ this.namedParameter = this.#wrapParameters(box);
25
+ }
26
+ get box() { return this.#box; }
27
+ get uuid() { return this.#box.address.uuid; }
28
+ get address() { return this.#box.address; }
29
+ get indexField() { return this.#box.index; }
30
+ get labelField() { return this.#box.label; }
31
+ get enabledField() { return this.#box.enabled; }
32
+ get minimizedField() { return this.#box.minimized; }
33
+ get host() { return this.#box.host; }
34
+ deviceHost() {
35
+ return this.#context.boxAdapters
36
+ .adapterFor(this.#box.host.targetVertex.unwrap("no device-host").box, Devices.isHost);
37
+ }
38
+ audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
39
+ terminate() { this.#parametric.terminate(); }
40
+ #wrapParameters(box) {
41
+ return {
42
+ delay: this.#parametric.createParameter(box.delay, ValueMapping.linearInteger(0, DelayDeviceBoxAdapter.OffsetFractions.length - 1), DelayDeviceBoxAdapter.OffsetStringMapping, "delay"),
43
+ feedback: this.#parametric.createParameter(box.feedback, ValueMapping.unipolar(), StringMapping.numeric({ unit: "%", fractionDigits: 0 }), "feedback"),
44
+ cross: this.#parametric.createParameter(box.cross, ValueMapping.unipolar(), StringMapping.numeric({ unit: "%", fractionDigits: 0 }), "cross"),
45
+ filter: this.#parametric.createParameter(box.filter, ValueMapping.bipolar(), StringMapping.numeric({ unit: "%", fractionDigits: 0 }), "filter", 0.5),
46
+ dry: this.#parametric.createParameter(box.dry, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: "db", fractionDigits: 1 }), "dry"),
47
+ wet: this.#parametric.createParameter(box.wet, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: "db", fractionDigits: 1 }), "wet")
48
+ };
49
+ }
50
+ }
@@ -0,0 +1,31 @@
1
+ import { ModularDeviceBox } from "@opendaw/studio-boxes";
2
+ import { UUID } from "@opendaw/lib-std";
3
+ import { Pointers } from "@opendaw/studio-enums";
4
+ import { Address, BooleanField, FieldKeys, Int32Field, PointerField, StringField } from "@opendaw/lib-box";
5
+ import { AudioEffectDeviceBoxAdapter, DeviceHost } from "../../devices";
6
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
7
+ import { AutomatableParameterFieldAdapter } from "../../AutomatableParameterFieldAdapter";
8
+ import { AudioUnitBoxAdapter } from "../../audio-unit/AudioUnitBoxAdapter";
9
+ import { ModularAdapter } from "../../modular/modular";
10
+ import { DeviceInterfaceKnobAdapter } from "../../modular/user-interface";
11
+ export declare class ModularDeviceBoxAdapter implements AudioEffectDeviceBoxAdapter {
12
+ #private;
13
+ readonly type = "audio-effect";
14
+ readonly accepts = "audio";
15
+ constructor(context: BoxAdaptersContext, box: ModularDeviceBox);
16
+ get box(): ModularDeviceBox;
17
+ get uuid(): UUID.Format;
18
+ get address(): Address;
19
+ get indexField(): Int32Field;
20
+ get labelField(): StringField;
21
+ get enabledField(): BooleanField;
22
+ get minimizedField(): BooleanField;
23
+ get host(): PointerField<Pointers.AudioEffectHost>;
24
+ parameterAt(_fieldIndices: FieldKeys): AutomatableParameterFieldAdapter;
25
+ deviceHost(): DeviceHost;
26
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
27
+ modular(): ModularAdapter;
28
+ elements(): ReadonlyArray<DeviceInterfaceKnobAdapter>;
29
+ terminate(): void;
30
+ }
31
+ //# sourceMappingURL=ModularDeviceBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModularDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/audio-effects/ModularDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAQ,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACxG,OAAO,EAAC,2BAA2B,EAAE,UAAU,EAAU,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAC,gCAAgC,EAAC,MAAM,wCAAwC,CAAA;AACvF,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AACxE,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAC,0BAA0B,EAAC,MAAM,8BAA8B,CAAA;AAGvE,qBAAa,uBAAwB,YAAW,2BAA2B;;IACvE,QAAQ,CAAC,IAAI,kBAAiB;IAC9B,QAAQ,CAAC,OAAO,WAAU;gBAKd,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,gBAAgB;IAK9D,IAAI,GAAG,IAAI,gBAAgB,CAAmB;IAC9C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAgC;IACvD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,YAAY,IAAI,YAAY,CAA2B;IAC3D,IAAI,cAAc,IAAI,YAAY,CAA6B;IAC/D,IAAI,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAwB;IAE1E,WAAW,CAAC,aAAa,EAAE,SAAS,GAAG,gCAAgC;IAEvE,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAE1C,OAAO,IAAI,cAAc;IAKzB,QAAQ,IAAI,aAAa,CAAC,0BAA0B,CAAC;IAKrD,SAAS,IAAI,IAAI;CACpB"}
@@ -0,0 +1,38 @@
1
+ import { panic } from "@opendaw/lib-std";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { Devices } from "../../devices";
4
+ import { ModularAdapter } from "../../modular/modular";
5
+ import { DeviceInterfaceKnobAdapter } from "../../modular/user-interface";
6
+ export class ModularDeviceBoxAdapter {
7
+ type = "audio-effect";
8
+ accepts = "audio";
9
+ #context;
10
+ #box;
11
+ constructor(context, box) {
12
+ this.#context = context;
13
+ this.#box = box;
14
+ }
15
+ get box() { return this.#box; }
16
+ get uuid() { return this.#box.address.uuid; }
17
+ get address() { return this.#box.address; }
18
+ get indexField() { return this.#box.index; }
19
+ get labelField() { return this.#box.label; }
20
+ get enabledField() { return this.#box.enabled; }
21
+ get minimizedField() { return this.#box.minimized; }
22
+ get host() { return this.#box.host; }
23
+ parameterAt(_fieldIndices) { return panic("Not yet implemented"); }
24
+ deviceHost() {
25
+ return this.#context.boxAdapters
26
+ .adapterFor(this.#box.host.targetVertex.unwrap("no device-host").box, Devices.isHost);
27
+ }
28
+ audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
29
+ modular() {
30
+ return this.#context.boxAdapters
31
+ .adapterFor(this.#box.modularSetup.targetVertex.unwrap("No Modular found").box, ModularAdapter);
32
+ }
33
+ elements() {
34
+ return this.#box.userInterface.elements.pointerHub.filter(Pointers.DeviceUserInterface)
35
+ .map(pointer => this.#context.boxAdapters.adapterFor(pointer.box, DeviceInterfaceKnobAdapter));
36
+ }
37
+ terminate() { }
38
+ }