@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,68 @@
1
+ import { asDefined, ifDefined, Listeners, Terminator, UUID } from "@opendaw/lib-std";
2
+ import { ModuleConnectionAdapter } from "./connection";
3
+ import { Pointers } from "@opendaw/studio-enums";
4
+ import { Modules } from "./module";
5
+ import { ModularDeviceBoxAdapter } from "../devices/audio-effects/ModularDeviceBoxAdapter";
6
+ export class ModularAdapter {
7
+ #terminator = new Terminator();
8
+ #listeners;
9
+ #context;
10
+ #box;
11
+ #modules;
12
+ #connections;
13
+ constructor(context, box) {
14
+ this.#context = context;
15
+ this.#box = box;
16
+ this.#listeners = this.#terminator.own(new Listeners());
17
+ this.#modules = UUID.newSet(adapter => adapter.uuid);
18
+ this.#connections = UUID.newSet(adapter => adapter.uuid);
19
+ const addModule = (pointer) => {
20
+ const adapter = Modules.adapterFor(this.#context.boxAdapters, pointer.box);
21
+ const added = this.#modules.add(adapter);
22
+ // assert(added, `Could not add ${pointer}`)
23
+ // TODO Implement catchupAndSubscribeTransactual that deals with that situation
24
+ if (!added) {
25
+ return;
26
+ }
27
+ this.#listeners.proxy.onModuleAdded(adapter);
28
+ };
29
+ const removeModule = (pointer) => this.#listeners.proxy.onModuleRemoved(this.#modules.removeByKey(pointer.address.uuid));
30
+ const addConnection = (pointer) => {
31
+ const adapter = this.#context.boxAdapters.adapterFor(pointer.box, ModuleConnectionAdapter);
32
+ const added = this.#connections.add(adapter);
33
+ // assert(added, `Could not add ${pointer}`)
34
+ // TODO Implement catchupAndSubscribeTransactual that deals with that situation
35
+ if (!added) {
36
+ return;
37
+ }
38
+ this.#listeners.proxy.onConnectionAdded(adapter);
39
+ };
40
+ const removeConnection = (pointer) => this.#listeners.proxy.onConnectionRemoved(this.#connections.removeByKey(pointer.address.uuid));
41
+ this.#box.modules.pointerHub.filter(Pointers.ModuleCollection).forEach(addModule);
42
+ this.#box.connections.pointerHub.filter(Pointers.ConnectionCollection).forEach(addConnection);
43
+ this.#terminator.own(this.#box.modules.pointerHub
44
+ .subscribeTransactual({ onAdd: addModule, onRemove: removeModule }, Pointers.ModuleCollection));
45
+ this.#terminator.own(this.#box.connections.pointerHub
46
+ .subscribeTransactual({ onAdd: addConnection, onRemove: removeConnection }, Pointers.ConnectionCollection));
47
+ }
48
+ catchupAndSubscribe(listener) {
49
+ ifDefined(listener.onModuleAdded, fn => this.#modules.forEach(adapter => fn(adapter)));
50
+ ifDefined(listener.onConnectionAdded, fn => this.#connections.forEach(adapter => fn(adapter)));
51
+ return this.#listeners.subscribe(listener);
52
+ }
53
+ get box() { return this.#box; }
54
+ get address() { return this.#box.address; }
55
+ get uuid() { return this.#box.address.uuid; }
56
+ get editingField() { return this.#box.editing; }
57
+ get labelField() { return this.#box.label; }
58
+ get modules() { return this.#modules.values(); }
59
+ get connections() { return this.#connections.values(); }
60
+ get device() {
61
+ return this.#context.boxAdapters
62
+ .adapterFor(asDefined(this.#box.device.pointerHub.incoming().at(0), "No device found").box, ModularDeviceBoxAdapter);
63
+ }
64
+ terminate() {
65
+ console.debug(`terminate ${this}`);
66
+ this.#terminator.terminate();
67
+ }
68
+ }
@@ -0,0 +1,21 @@
1
+ import { Box, Vertex } from "@opendaw/lib-box";
2
+ import { ModuleAttributes } from "@opendaw/studio-boxes";
3
+ import { Selectable } from "@opendaw/lib-std";
4
+ import { Pointers } from "@opendaw/studio-enums";
5
+ import { BoxAdapter } from "../BoxAdapter";
6
+ import { ParameterAdapterSet } from "../ParameterAdapterSet";
7
+ import { ModularAdapter } from "./modular";
8
+ import { Direction, ModuleConnectorAdapter } from "./connector";
9
+ import { BoxAdapters } from "../BoxAdapters";
10
+ export interface ModuleAdapter extends BoxAdapter, Selectable {
11
+ get attributes(): ModuleAttributes;
12
+ get parameters(): ParameterAdapterSet;
13
+ get modular(): ModularAdapter;
14
+ get inputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Input>>;
15
+ get outputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Output>>;
16
+ }
17
+ export declare namespace Modules {
18
+ const isVertexOfModule: (vertex: Vertex) => boolean;
19
+ const adapterFor: (adapters: BoxAdapters, box: Box) => ModuleAdapter;
20
+ }
21
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/modular/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAGoB,gBAAgB,EAI1C,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAY,UAAU,EAAC,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAI9C,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAC,cAAc,EAAC,MAAM,WAAW,CAAA;AACxC,OAAO,EAAC,SAAS,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAI1C,MAAM,WAAW,aAAc,SAAQ,UAAU,EAAE,UAAU;IACzD,IAAI,UAAU,IAAI,gBAAgB,CAAA;IAClC,IAAI,UAAU,IAAI,mBAAmB,CAAA;IACrC,IAAI,OAAO,IAAI,cAAc,CAAA;IAC7B,IAAI,MAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IAChG,IAAI,OAAO,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;CACrG;AAED,yBAAiB,OAAO,CAAC;IACd,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,OAMvC,CAAA;IAEJ,MAAM,UAAU,GAAI,UAAU,WAAW,EAAE,KAAK,GAAG,KAAG,aAMV,CAAA;CACtD"}
@@ -0,0 +1,23 @@
1
+ import { asDefined } from "@opendaw/lib-std";
2
+ import { ModuleDelayAdapter } from "./modules/delay";
3
+ import { ModularAudioOutputAdapter } from "./modules/audio-output";
4
+ import { ModuleGainAdapter } from "./modules/gain";
5
+ import { ModuleMultiplierAdapter } from "./modules/multiplier";
6
+ import { ModularAudioInputAdapter } from "./modules/audio-input";
7
+ export var Modules;
8
+ (function (Modules) {
9
+ Modules.isVertexOfModule = (vertex) => vertex.box.accept({
10
+ visitModuleGainBox: () => true,
11
+ visitModuleDelayBox: () => true,
12
+ visitModuleMultiplierBox: () => true,
13
+ visitModularAudioInputBox: () => true,
14
+ visitModularAudioOutputBox: () => true
15
+ }) ?? false;
16
+ Modules.adapterFor = (adapters, box) => asDefined(box.accept({
17
+ visitModuleGainBox: (box) => adapters.adapterFor(box, ModuleGainAdapter),
18
+ visitModuleDelayBox: (box) => adapters.adapterFor(box, ModuleDelayAdapter),
19
+ visitModuleMultiplierBox: (box) => adapters.adapterFor(box, ModuleMultiplierAdapter),
20
+ visitModularAudioInputBox: (box) => adapters.adapterFor(box, ModularAudioInputAdapter),
21
+ visitModularAudioOutputBox: (box) => adapters.adapterFor(box, ModularAudioOutputAdapter)
22
+ }), `Could not find ModuleAdapter for ${box.name}`);
23
+ })(Modules || (Modules = {}));
@@ -0,0 +1,14 @@
1
+ import { ModularAudioInputBox } from "@opendaw/studio-boxes";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { AbstractModuleAdapter } from "../abstract";
4
+ import { ModuleAdapter } from "../module";
5
+ import { Direction, ModuleConnectorAdapter } from "../connector";
6
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
7
+ export declare class ModularAudioInputAdapter extends AbstractModuleAdapter<ModularAudioInputBox> implements ModuleAdapter {
8
+ #private;
9
+ constructor(context: BoxAdaptersContext, box: ModularAudioInputBox);
10
+ get voltageOutput(): ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Output>;
11
+ get inputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Input>>;
12
+ get outputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Output>>;
13
+ }
14
+ //# sourceMappingURL=audio-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-input.d.ts","sourceRoot":"","sources":["../../../src/modular/modules/audio-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAA;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAA;AACvC,OAAO,EAAC,SAAS,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,qBAAa,wBAAyB,SAAQ,qBAAqB,CAAC,oBAAoB,CAAE,YAAW,aAAa;;gBAGlG,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,oBAAoB;IAMlE,IAAI,aAAa,IAAI,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAA6B;IAEtH,IAAI,MAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAE/F;IACD,IAAI,OAAO,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAEjG;CACJ"}
@@ -0,0 +1,17 @@
1
+ import { Arrays } from "@opendaw/lib-std";
2
+ import { AbstractModuleAdapter } from "../abstract";
3
+ import { Direction, ModuleConnectorAdapter } from "../connector";
4
+ export class ModularAudioInputAdapter extends AbstractModuleAdapter {
5
+ #voltageOutput;
6
+ constructor(context, box) {
7
+ super(context, box);
8
+ this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.output, Direction.Output, "Output");
9
+ }
10
+ get voltageOutput() { return this.#voltageOutput; }
11
+ get inputs() {
12
+ return Arrays.empty();
13
+ }
14
+ get outputs() {
15
+ return [this.#voltageOutput];
16
+ }
17
+ }
@@ -0,0 +1,14 @@
1
+ import { ModularAudioOutputBox } from "@opendaw/studio-boxes";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { AbstractModuleAdapter } from "../abstract";
4
+ import { ModuleAdapter } from "../module";
5
+ import { Direction, ModuleConnectorAdapter } from "../connector";
6
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
7
+ export declare class ModularAudioOutputAdapter extends AbstractModuleAdapter<ModularAudioOutputBox> implements ModuleAdapter {
8
+ #private;
9
+ constructor(context: BoxAdaptersContext, box: ModularAudioOutputBox);
10
+ get voltageInput(): ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Input>;
11
+ get inputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Input>>;
12
+ get outputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Output>>;
13
+ }
14
+ //# sourceMappingURL=audio-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-output.d.ts","sourceRoot":"","sources":["../../../src/modular/modules/audio-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAA;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAA;AACvC,OAAO,EAAC,SAAS,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,qBAAa,yBAA0B,SAAQ,qBAAqB,CAAC,qBAAqB,CAAE,YAAW,aAAa;;gBAGpG,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,qBAAqB;IAMnE,IAAI,YAAY,IAAI,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,CAA4B;IAEnH,IAAI,MAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAE/F;IACD,IAAI,OAAO,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAEjG;CACJ"}
@@ -0,0 +1,17 @@
1
+ import { Arrays } from "@opendaw/lib-std";
2
+ import { AbstractModuleAdapter } from "../abstract";
3
+ import { Direction, ModuleConnectorAdapter } from "../connector";
4
+ export class ModularAudioOutputAdapter extends AbstractModuleAdapter {
5
+ #voltageInput;
6
+ constructor(context, box) {
7
+ super(context, box);
8
+ this.#voltageInput = ModuleConnectorAdapter.create(context.boxAdapters, box.input, Direction.Input, "Input");
9
+ }
10
+ get voltageInput() { return this.#voltageInput; }
11
+ get inputs() {
12
+ return [this.#voltageInput];
13
+ }
14
+ get outputs() {
15
+ return Arrays.empty();
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ import { ModuleDelayBox } from "@opendaw/studio-boxes";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { AbstractModuleAdapter } from "../abstract";
4
+ import { ModuleAdapter } from "../module";
5
+ import { AutomatableParameterFieldAdapter } from "../../AutomatableParameterFieldAdapter";
6
+ import { Direction, ModuleConnectorAdapter } from "../connector";
7
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
8
+ export declare class ModuleDelayAdapter extends AbstractModuleAdapter<ModuleDelayBox> implements ModuleAdapter {
9
+ #private;
10
+ constructor(context: BoxAdaptersContext, box: ModuleDelayBox);
11
+ get parameterTime(): AutomatableParameterFieldAdapter<number>;
12
+ get voltageInput(): ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Input>;
13
+ get voltageOutput(): ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Output>;
14
+ get inputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Input>>;
15
+ get outputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Output>>;
16
+ }
17
+ //# sourceMappingURL=delay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../../src/modular/modules/delay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAA;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAA;AACvC,OAAO,EAAC,gCAAgC,EAAC,MAAM,wCAAwC,CAAA;AACvF,OAAO,EAAC,SAAS,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,qBAAa,kBAAmB,SAAQ,qBAAqB,CAAC,cAAc,CAAE,YAAW,aAAa;;gBAKtF,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,cAAc;IAW5D,IAAI,aAAa,IAAI,gCAAgC,CAAC,MAAM,CAAC,CAA6B;IAC1F,IAAI,YAAY,IAAI,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,CAA4B;IACnH,IAAI,aAAa,IAAI,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAA6B;IAEtH,IAAI,MAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAE/F;IACD,IAAI,OAAO,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAEjG;CACJ"}
@@ -0,0 +1,23 @@
1
+ import { StringMapping, ValueMapping } from "@opendaw/lib-std";
2
+ import { AbstractModuleAdapter } from "../abstract";
3
+ import { Direction, ModuleConnectorAdapter } from "../connector";
4
+ export class ModuleDelayAdapter extends AbstractModuleAdapter {
5
+ #parameterTime;
6
+ #voltageInput;
7
+ #voltageOutput;
8
+ constructor(context, box) {
9
+ super(context, box);
10
+ this.#parameterTime = this.parameters.createParameter(box.time, ValueMapping.exponential(1.0, 10000.0), StringMapping.numeric({ unit: "ms" }), "Time");
11
+ this.#voltageInput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInput, Direction.Input, "Input");
12
+ this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, "Output");
13
+ }
14
+ get parameterTime() { return this.#parameterTime; }
15
+ get voltageInput() { return this.#voltageInput; }
16
+ get voltageOutput() { return this.#voltageOutput; }
17
+ get inputs() {
18
+ return [this.#voltageInput];
19
+ }
20
+ get outputs() {
21
+ return [this.#voltageOutput];
22
+ }
23
+ }
@@ -0,0 +1,17 @@
1
+ import { ModuleGainBox } from "@opendaw/studio-boxes";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { AbstractModuleAdapter } from "../abstract";
4
+ import { ModuleAdapter } from "../module";
5
+ import { AutomatableParameterFieldAdapter } from "../../AutomatableParameterFieldAdapter";
6
+ import { Direction, ModuleConnectorAdapter } from "../connector";
7
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
8
+ export declare class ModuleGainAdapter extends AbstractModuleAdapter<ModuleGainBox> implements ModuleAdapter {
9
+ #private;
10
+ constructor(context: BoxAdaptersContext, box: ModuleGainBox);
11
+ get parameterGain(): AutomatableParameterFieldAdapter<number>;
12
+ get voltageInput(): ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Input>;
13
+ get voltageOutput(): ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Output>;
14
+ get inputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Input>>;
15
+ get outputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Output>>;
16
+ }
17
+ //# sourceMappingURL=gain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gain.d.ts","sourceRoot":"","sources":["../../../src/modular/modules/gain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAA;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAA;AACvC,OAAO,EAAC,gCAAgC,EAAC,MAAM,wCAAwC,CAAA;AACvF,OAAO,EAAC,SAAS,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,qBAAa,iBAAkB,SAAQ,qBAAqB,CAAC,aAAa,CAAE,YAAW,aAAa;;gBAKpF,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,aAAa;IAW3D,IAAI,aAAa,IAAI,gCAAgC,CAAC,MAAM,CAAC,CAA6B;IAC1F,IAAI,YAAY,IAAI,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,CAA4B;IACnH,IAAI,aAAa,IAAI,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAA6B;IAEtH,IAAI,MAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAE/F;IACD,IAAI,OAAO,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAEjG;CACJ"}
@@ -0,0 +1,23 @@
1
+ import { StringMapping, ValueMapping } from "@opendaw/lib-std";
2
+ import { AbstractModuleAdapter } from "../abstract";
3
+ import { Direction, ModuleConnectorAdapter } from "../connector";
4
+ export class ModuleGainAdapter extends AbstractModuleAdapter {
5
+ #parameterGain;
6
+ #voltageInput;
7
+ #voltageOutput;
8
+ constructor(context, box) {
9
+ super(context, box);
10
+ this.#parameterGain = this.parameters.createParameter(box.gain, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: "db" }), "Gain");
11
+ this.#voltageInput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInput, Direction.Input, "Input");
12
+ this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, "Output");
13
+ }
14
+ get parameterGain() { return this.#parameterGain; }
15
+ get voltageInput() { return this.#voltageInput; }
16
+ get voltageOutput() { return this.#voltageOutput; }
17
+ get inputs() {
18
+ return [this.#voltageInput];
19
+ }
20
+ get outputs() {
21
+ return [this.#voltageOutput];
22
+ }
23
+ }
@@ -0,0 +1,13 @@
1
+ import { ModuleMultiplierBox } from "@opendaw/studio-boxes";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { AbstractModuleAdapter } from "../abstract";
4
+ import { ModuleAdapter } from "../module";
5
+ import { Direction, ModuleConnectorAdapter } from "../connector";
6
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
7
+ export declare class ModuleMultiplierAdapter extends AbstractModuleAdapter<ModuleMultiplierBox> implements ModuleAdapter {
8
+ #private;
9
+ constructor(context: BoxAdaptersContext, box: ModuleMultiplierBox);
10
+ get inputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Input>>;
11
+ get outputs(): ReadonlyArray<ModuleConnectorAdapter<Pointers.VoltageConnection, Direction.Output>>;
12
+ }
13
+ //# sourceMappingURL=multiplier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiplier.d.ts","sourceRoot":"","sources":["../../../src/modular/modules/multiplier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAA;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAA;AACvC,OAAO,EAAC,SAAS,EAAE,sBAAsB,EAAC,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,qBAAa,uBAAwB,SAAQ,qBAAqB,CAAC,mBAAmB,CAAE,YAAW,aAAa;;gBAKhG,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,mBAAmB;IAQjE,IAAI,MAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAE/F;IACD,IAAI,OAAO,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAEjG;CACJ"}
@@ -0,0 +1,19 @@
1
+ import { AbstractModuleAdapter } from "../abstract";
2
+ import { Direction, ModuleConnectorAdapter } from "../connector";
3
+ export class ModuleMultiplierAdapter extends AbstractModuleAdapter {
4
+ #voltageInputX;
5
+ #voltageInputY;
6
+ #voltageOutput;
7
+ constructor(context, box) {
8
+ super(context, box);
9
+ this.#voltageInputX = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInputX, Direction.Input, "X");
10
+ this.#voltageInputY = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInputY, Direction.Input, "Y");
11
+ this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, "Result");
12
+ }
13
+ get inputs() {
14
+ return [this.#voltageInputX, this.#voltageInputY];
15
+ }
16
+ get outputs() {
17
+ return [this.#voltageOutput];
18
+ }
19
+ }
@@ -0,0 +1,21 @@
1
+ import { DeviceInterfaceKnobBox } from "@opendaw/studio-boxes";
2
+ import { Address, Box, PointerTypes } from "@opendaw/lib-box";
3
+ import { ModuleAdapter } from "./module";
4
+ import { BoxAdapter } from "../BoxAdapter";
5
+ import { AutomatableParameterFieldAdapter } from "../AutomatableParameterFieldAdapter";
6
+ import { BoxAdaptersContext } from "../BoxAdaptersContext";
7
+ export interface DeviceInterfaceElementAdapter extends BoxAdapter {
8
+ get moduleAdapter(): ModuleAdapter;
9
+ get parameterAdapter(): AutomatableParameterFieldAdapter;
10
+ }
11
+ export declare class DeviceInterfaceKnobAdapter implements DeviceInterfaceElementAdapter {
12
+ #private;
13
+ constructor(context: BoxAdaptersContext, box: DeviceInterfaceKnobBox);
14
+ get box(): Box<PointerTypes, any>;
15
+ get uuid(): Readonly<Uint8Array>;
16
+ get address(): Address;
17
+ get moduleAdapter(): ModuleAdapter;
18
+ get parameterAdapter(): AutomatableParameterFieldAdapter;
19
+ terminate(): void;
20
+ }
21
+ //# sourceMappingURL=user-interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-interface.d.ts","sourceRoot":"","sources":["../../src/modular/user-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAiB,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EAAC,aAAa,EAAU,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,gCAAgC,EAAC,MAAM,qCAAqC,CAAA;AACpF,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AAExD,MAAM,WAAW,6BAA8B,SAAQ,UAAU;IAC7D,IAAI,aAAa,IAAI,aAAa,CAAA;IAClC,IAAI,gBAAgB,IAAI,gCAAgC,CAAA;CAC3D;AAED,qBAAa,0BAA2B,YAAW,6BAA6B;;gBAIhE,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,sBAAsB;IAKpE,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAmB;IACpD,IAAI,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAgC;IAChE,IAAI,OAAO,IAAI,OAAO,CAA2B;IAEjD,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED,IAAI,gBAAgB,IAAI,gCAAgC,CAEvD;IAMD,SAAS,IAAI,IAAI;CAEpB"}
@@ -0,0 +1,23 @@
1
+ import { Modules } from "./module";
2
+ export class DeviceInterfaceKnobAdapter {
3
+ #context;
4
+ #box;
5
+ constructor(context, box) {
6
+ this.#context = context;
7
+ this.#box = box;
8
+ }
9
+ get box() { return this.#box; }
10
+ get uuid() { return this.#box.address.uuid; }
11
+ get address() { return this.#box.address; }
12
+ get moduleAdapter() {
13
+ return Modules.adapterFor(this.#context.boxAdapters, this.#parameterTarget.box);
14
+ }
15
+ get parameterAdapter() {
16
+ return this.moduleAdapter.parameters.parameterAt(this.#parameterTarget.address.fieldKeys);
17
+ }
18
+ get #parameterTarget() {
19
+ return this.#box.parameter.targetVertex.unwrap("Parameter not assigned");
20
+ }
21
+ terminate() {
22
+ }
23
+ }
@@ -0,0 +1,25 @@
1
+ import { ppqn } from "@opendaw/lib-dsp";
2
+ import { byte, int, Nullable, Terminable, unitValue, UUID } from "@opendaw/lib-std";
3
+ import { AudioData } from "./AudioData";
4
+ import { ClipSequencingUpdates } from "./ClipNotifications";
5
+ export interface EngineCommands extends Terminable {
6
+ setPlaying(value: boolean): void;
7
+ setRecording(value: boolean): void;
8
+ setPosition(position: ppqn): void;
9
+ setMetronomeEnabled(enabled: boolean): void;
10
+ stopAndReset(): void;
11
+ queryLoadingComplete(): Promise<boolean>;
12
+ panic(): void;
13
+ noteOn(uuid: UUID.Format, pitch: byte, velocity: unitValue): void;
14
+ noteOff(uuid: UUID.Format, pitch: byte): void;
15
+ scheduleClipPlay(clipIds: ReadonlyArray<UUID.Format>): void;
16
+ scheduleClipStop(trackIds: ReadonlyArray<UUID.Format>): void;
17
+ }
18
+ export interface EngineToClient {
19
+ log(message: string): void;
20
+ fetchAudio(uuid: UUID.Format): Promise<AudioData>;
21
+ notifyClipSequenceChanges(changes: ClipSequencingUpdates): void;
22
+ switchMarkerState(state: Nullable<[UUID.Format, int]>): void;
23
+ ready(): void;
24
+ }
25
+ //# sourceMappingURL=protocols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../src/protocols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAClC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAE3C,YAAY,IAAI,IAAI,CAAA;IACpB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,KAAK,IAAI,IAAI,CAAA;IAEb,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAA;IACjE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAA;IAE7C,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAC3D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAC/D;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACjD,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC/D,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;IAC5D,KAAK,IAAI,IAAI,CAAA;CAChB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { Bijective, int, Predicate, Selection, SelectionListener, Subscription, Terminable } from "@opendaw/lib-std";
2
+ import { Addressable } from "@opendaw/lib-box";
3
+ import { VertexSelection } from "./VertexSelection";
4
+ import { SelectableVertex } from "./SelectableVertex";
5
+ export declare class FilteredSelection<T extends Addressable> implements Selection<T>, Terminable {
6
+ #private;
7
+ constructor(selection: VertexSelection, filter: Predicate<SelectableVertex>, mapping: Bijective<T, SelectableVertex>);
8
+ terminate(): void;
9
+ select(...selectables: Array<T>): void;
10
+ deselect(...selectables: Array<T>): void;
11
+ deselectAll(): void;
12
+ distance(inventory: ReadonlyArray<T>): ReadonlyArray<T>;
13
+ isEmpty(): boolean;
14
+ count(): int;
15
+ isSelected(selectable: T): boolean;
16
+ selected(): ReadonlyArray<T>;
17
+ subscribe(listener: SelectionListener<T>): Terminable;
18
+ catchupAndSubscribe(listener: SelectionListener<T>): Subscription;
19
+ }
20
+ //# sourceMappingURL=FilteredSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilteredSelection.d.ts","sourceRoot":"","sources":["../../src/selection/FilteredSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,GAAG,EAEH,SAAS,EACT,SAAS,EACT,iBAAiB,EAEjB,YAAY,EACZ,UAAU,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAU,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AAEnD,qBAAa,iBAAiB,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAQzE,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,SAAS,CAAC,gBAAgB,CAAC,EACnC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC;IA2BnD,SAAS,IAAI,IAAI;IAEjB,MAAM,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAItC,QAAQ,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAIxC,WAAW,IAAI,IAAI;IAInB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAKvD,OAAO,IAAI,OAAO;IAElB,KAAK,IAAI,GAAG;IAEZ,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,OAAO;IAElC,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC;IAE5B,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,UAAU;IAIrD,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY;CAIpE"}
@@ -0,0 +1,58 @@
1
+ import { Listeners } from "@opendaw/lib-std";
2
+ import { Address } from "@opendaw/lib-box";
3
+ export class FilteredSelection {
4
+ #selection;
5
+ #filter;
6
+ #mapping;
7
+ #set;
8
+ #listeners;
9
+ #subscription;
10
+ constructor(selection, filter, mapping) {
11
+ this.#selection = selection;
12
+ this.#filter = filter;
13
+ this.#mapping = mapping;
14
+ this.#set = Address.newSet(addressable => addressable.address);
15
+ this.#listeners = new Listeners();
16
+ this.#selection.selected()
17
+ .filter(element => this.#filter(element))
18
+ .forEach(element => this.#set.add(this.#mapping.fy(element)));
19
+ this.#subscription = this.#selection.catchupAndSubscribe({
20
+ onSelected: (element) => {
21
+ if (this.#filter(element)) {
22
+ const value = this.#mapping.fy(element);
23
+ this.#set.add(value);
24
+ this.#listeners.proxy.onSelected(value);
25
+ }
26
+ },
27
+ onDeselected: (element) => {
28
+ if (this.#filter(element)) {
29
+ this.#listeners.proxy.onDeselected(this.#set.removeByKey(element.address));
30
+ }
31
+ }
32
+ });
33
+ }
34
+ terminate() { this.#subscription.terminate(); }
35
+ select(...selectables) {
36
+ this.#selection.select(...selectables.map(selectable => this.#mapping.fx(selectable)));
37
+ }
38
+ deselect(...selectables) {
39
+ this.#selection.deselect(...selectables.map(selectable => this.#mapping.fx(selectable)));
40
+ }
41
+ deselectAll() {
42
+ this.#selection.deselect(...(this.#set.values().map(selectable => this.#mapping.fx(selectable))));
43
+ }
44
+ distance(inventory) {
45
+ return this.#selection.distance(inventory.map(selectable => this.#mapping.fx(selectable))).map(item => this.#mapping.fy(item));
46
+ }
47
+ isEmpty() { return this.#set.size() === 0; }
48
+ count() { return this.#set.size(); }
49
+ isSelected(selectable) { return this.#set.hasKey(selectable.address); }
50
+ selected() { return this.#set.values(); }
51
+ subscribe(listener) {
52
+ return this.#listeners.subscribe(listener);
53
+ }
54
+ catchupAndSubscribe(listener) {
55
+ this.#set.forEach(selectable => listener.onSelected(selectable));
56
+ return this.subscribe(listener);
57
+ }
58
+ }
@@ -0,0 +1,4 @@
1
+ import { Vertex } from "@opendaw/lib-box";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ export type SelectableVertex = Vertex<Pointers.Selection | any>;
4
+ //# sourceMappingURL=SelectableVertex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectableVertex.d.ts","sourceRoot":"","sources":["../../src/selection/SelectableVertex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { SelectionBox } from "@opendaw/studio-boxes";
2
+ import { SelectableVertex } from "./SelectableVertex";
3
+ export type SelectionEntry = {
4
+ box: SelectionBox;
5
+ selectable: SelectableVertex;
6
+ };
7
+ //# sourceMappingURL=SelectionEntry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionEntry.d.ts","sourceRoot":"","sources":["../../src/selection/SelectionEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,cAAc,GAAG;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,29 @@
1
+ import { Bijective, int, Predicate, Selection, SelectionListener, Subscription } from "@opendaw/lib-std";
2
+ import { Addressable, BoxGraph, Editing, Field } from "@opendaw/lib-box";
3
+ import { Pointers } from "@opendaw/studio-enums";
4
+ import { SelectableVertex } from "./SelectableVertex";
5
+ import { FilteredSelection } from "./FilteredSelection";
6
+ /**
7
+ * Represents the main selection management within a document.
8
+ * This class maintains selections for different users, with each user having their own unique selection.
9
+ */
10
+ export declare class VertexSelection implements Selection<SelectableVertex> {
11
+ #private;
12
+ readonly editing: Editing;
13
+ readonly owner: BoxGraph;
14
+ constructor(editing: Editing, owner: BoxGraph);
15
+ switch(target: Field<Pointers.Selection>): this;
16
+ release(): void;
17
+ createFilteredSelection<T extends Addressable>(affiliate: Predicate<SelectableVertex>, map: Bijective<T, SelectableVertex>): FilteredSelection<T>;
18
+ select(...selectables: ReadonlyArray<SelectableVertex>): void;
19
+ deselect(...selectables: ReadonlyArray<SelectableVertex>): void;
20
+ deselectAll(): void;
21
+ distance(inventory: Iterable<SelectableVertex>): ReadonlyArray<SelectableVertex>;
22
+ isEmpty(): boolean;
23
+ count(): int;
24
+ isSelected(selectable: SelectableVertex): boolean;
25
+ selected(): ReadonlyArray<SelectableVertex>;
26
+ subscribe(listener: SelectionListener<SelectableVertex>): Subscription;
27
+ catchupAndSubscribe(listener: SelectionListener<SelectableVertex>): Subscription;
28
+ }
29
+ //# sourceMappingURL=VertexSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VertexSelection.d.ts","sourceRoot":"","sources":["../../src/selection/VertexSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,SAAS,EACT,GAAG,EAGH,SAAS,EACT,SAAS,EACT,iBAAiB,EAEjB,YAAY,EAGf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAU,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAgC,MAAM,kBAAkB,CAAA;AAC9G,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS,CAAC,gBAAgB,CAAC;;IAQnD,QAAQ,CAAC,OAAO,EAAE,OAAO;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ;gBAA1C,OAAO,EAAE,OAAO,EAAW,KAAK,EAAE,QAAQ;IAO/D,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI;IAQ/C,OAAO,IAAI,IAAI;IASf,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,EACtC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAIzG,MAAM,CAAC,GAAG,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAmB7D,QAAQ,CAAC,GAAG,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAU/D,WAAW,IAAI,IAAI;IAInB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC;IAQhF,OAAO,IAAI,OAAO;IAElB,KAAK,IAAI,GAAG;IAEZ,UAAU,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO;IAEjD,QAAQ,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAE3C,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAEtE,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,YAAY;CA2BnF"}