@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,40 @@
1
+ import { Pointers } from "@opendaw/studio-enums";
2
+ import { Devices } from "../../devices";
3
+ import { SortedBoxAdapterCollection } from "../../SortedBoxAdapterCollection";
4
+ import { PlayfieldSampleBoxAdapter } from "./Playfield/PlayfieldSampleBoxAdapter";
5
+ import { ParameterAdapterSet } from "../../ParameterAdapterSet";
6
+ import { TrackType } from "../../timeline/TrackType";
7
+ export class PlayfieldDeviceBoxAdapter {
8
+ type = "instrument";
9
+ accepts = "midi";
10
+ #context;
11
+ #box;
12
+ #samples;
13
+ #parametric;
14
+ constructor(context, box) {
15
+ this.#context = context;
16
+ this.#box = box;
17
+ this.#samples = SortedBoxAdapterCollection.create(box.samples, box => context.boxAdapters.adapterFor(box, PlayfieldSampleBoxAdapter), Pointers.Sample);
18
+ this.#parametric = new ParameterAdapterSet(this.#context);
19
+ }
20
+ reset() { this.#samples.adapters().forEach(adapter => adapter.box.delete()); }
21
+ get box() { return this.#box; }
22
+ get uuid() { return this.#box.address.uuid; }
23
+ get address() { return this.#box.address; }
24
+ get notesAddress() { return this.#box.address.append(1000); }
25
+ get labelField() { return this.#box.label; }
26
+ get iconField() { return this.#box.icon; }
27
+ get defaultTrackType() { return TrackType.Notes; }
28
+ get enabledField() { return this.#box.enabled; }
29
+ get minimizedField() { return this.#box.minimized; }
30
+ get acceptsMidiEvents() { return true; }
31
+ get samples() { return this.#samples; }
32
+ get context() { return this.#context; }
33
+ deviceHost() {
34
+ return this.#context.boxAdapters
35
+ .adapterFor(this.#box.host.targetVertex.unwrap("no device-host").box, Devices.isHost);
36
+ }
37
+ audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
38
+ parameterAt(fieldIndices) { return this.#parametric.parameterAt(fieldIndices); }
39
+ terminate() { this.#parametric.terminate(); }
40
+ }
@@ -0,0 +1,34 @@
1
+ import { TapeDeviceBox } from "@opendaw/studio-boxes";
2
+ import { UUID } from "@opendaw/lib-std";
3
+ import { Address, BooleanField, FieldKeys, StringField } from "@opendaw/lib-box";
4
+ import { DeviceHost, InstrumentDeviceBoxAdapter } from "../../devices";
5
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
6
+ import { AudioUnitBoxAdapter } from "../../audio-unit/AudioUnitBoxAdapter";
7
+ import { AutomatableParameterFieldAdapter } from "../../AutomatableParameterFieldAdapter";
8
+ import { TrackType } from "../../timeline/TrackType";
9
+ export declare class TapeDeviceBoxAdapter implements InstrumentDeviceBoxAdapter {
10
+ #private;
11
+ readonly type = "instrument";
12
+ readonly accepts = "audio";
13
+ readonly namedParameter: {
14
+ readonly flutter: AutomatableParameterFieldAdapter<number>;
15
+ readonly wow: AutomatableParameterFieldAdapter<number>;
16
+ readonly noise: AutomatableParameterFieldAdapter<number>;
17
+ readonly saturation: AutomatableParameterFieldAdapter<number>;
18
+ };
19
+ constructor(context: BoxAdaptersContext, box: TapeDeviceBox);
20
+ get box(): TapeDeviceBox;
21
+ get uuid(): UUID.Format;
22
+ get address(): Address;
23
+ get labelField(): StringField;
24
+ get iconField(): StringField;
25
+ get defaultTrackType(): TrackType;
26
+ get enabledField(): BooleanField;
27
+ get minimizedField(): BooleanField;
28
+ get acceptsMidiEvents(): boolean;
29
+ deviceHost(): DeviceHost;
30
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
31
+ parameterAt(fieldIndices: FieldKeys): AutomatableParameterFieldAdapter;
32
+ terminate(): void;
33
+ }
34
+ //# sourceMappingURL=TapeDeviceBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TapeDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/instruments/TapeDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAgB,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAC,UAAU,EAAW,0BAA0B,EAAC,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AACxE,OAAO,EAAC,gCAAgC,EAAC,MAAM,wCAAwC,CAAA;AACvF,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAElD,qBAAa,oBAAqB,YAAW,0BAA0B;;IACnE,QAAQ,CAAC,IAAI,gBAAe;IAC5B,QAAQ,CAAC,OAAO,WAAU;IAM1B,QAAQ,CAAC,cAAc;;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,aAAa;IAO3D,IAAI,GAAG,IAAI,aAAa,CAAmB;IAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAgC;IACvD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,SAAS,IAAI,WAAW,CAAwB;IACpD,IAAI,gBAAgB,IAAI,SAAS,CAAyB;IAC1D,IAAI,YAAY,IAAI,YAAY,CAA2B;IAC3D,IAAI,cAAc,IAAI,YAAY,CAA6B;IAC/D,IAAI,iBAAiB,IAAI,OAAO,CAAe;IAE/C,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAE1C,WAAW,CAAC,YAAY,EAAE,SAAS,GAAG,gCAAgC;IAEtE,SAAS,IAAI,IAAI;CAsBpB"}
@@ -0,0 +1,42 @@
1
+ import { StringMapping, ValueMapping } from "@opendaw/lib-std";
2
+ import { Devices } from "../../devices";
3
+ import { ParameterAdapterSet } from "../../ParameterAdapterSet";
4
+ import { TrackType } from "../../timeline/TrackType";
5
+ export class TapeDeviceBoxAdapter {
6
+ type = "instrument";
7
+ accepts = "audio";
8
+ #context;
9
+ #box;
10
+ #parametric;
11
+ namedParameter; // let typescript infer the type
12
+ constructor(context, box) {
13
+ this.#context = context;
14
+ this.#box = box;
15
+ this.#parametric = new ParameterAdapterSet(this.#context);
16
+ this.namedParameter = this.#wrapParameters(box);
17
+ }
18
+ get box() { return this.#box; }
19
+ get uuid() { return this.#box.address.uuid; }
20
+ get address() { return this.#box.address; }
21
+ get labelField() { return this.#box.label; }
22
+ get iconField() { return this.#box.icon; }
23
+ get defaultTrackType() { return TrackType.Audio; }
24
+ get enabledField() { return this.#box.enabled; }
25
+ get minimizedField() { return this.#box.minimized; }
26
+ get acceptsMidiEvents() { return false; }
27
+ deviceHost() {
28
+ return this.#context.boxAdapters
29
+ .adapterFor(this.#box.host.targetVertex.unwrap("no device-host").box, Devices.isHost);
30
+ }
31
+ audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
32
+ parameterAt(fieldIndices) { return this.#parametric.parameterAt(fieldIndices); }
33
+ terminate() { this.#parametric.terminate(); }
34
+ #wrapParameters(box) {
35
+ return {
36
+ flutter: this.#parametric.createParameter(box.flutter, ValueMapping.unipolar(), StringMapping.percent(), "flutter"),
37
+ wow: this.#parametric.createParameter(box.wow, ValueMapping.unipolar(), StringMapping.percent(), "wow"),
38
+ noise: this.#parametric.createParameter(box.noise, ValueMapping.unipolar(), StringMapping.percent(), "noise"),
39
+ saturation: this.#parametric.createParameter(box.saturation, ValueMapping.unipolar(), StringMapping.percent(), "saturation")
40
+ };
41
+ }
42
+ }
@@ -0,0 +1,39 @@
1
+ import { UUID } from "@opendaw/lib-std";
2
+ import { VaporisateurDeviceBox } from "@opendaw/studio-boxes";
3
+ import { Address, BooleanField, FieldKeys, StringField } from "@opendaw/lib-box";
4
+ import { DeviceHost, InstrumentDeviceBoxAdapter } from "../../devices";
5
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
6
+ import { TrackType } from "../../timeline/TrackType";
7
+ import { AutomatableParameterFieldAdapter } from "../../AutomatableParameterFieldAdapter";
8
+ import { AudioUnitBoxAdapter } from "../../audio-unit/AudioUnitBoxAdapter";
9
+ export declare class VaporisateurDeviceBoxAdapter implements InstrumentDeviceBoxAdapter {
10
+ #private;
11
+ readonly type = "instrument";
12
+ readonly accepts = "midi";
13
+ readonly namedParameter: {
14
+ readonly volume: AutomatableParameterFieldAdapter<number>;
15
+ readonly octave: AutomatableParameterFieldAdapter<number>;
16
+ readonly tune: AutomatableParameterFieldAdapter<number>;
17
+ readonly waveform: AutomatableParameterFieldAdapter<number>;
18
+ readonly cutoff: AutomatableParameterFieldAdapter<number>;
19
+ readonly resonance: AutomatableParameterFieldAdapter<number>;
20
+ readonly attack: AutomatableParameterFieldAdapter<number>;
21
+ readonly release: AutomatableParameterFieldAdapter<number>;
22
+ readonly filterEnvelope: AutomatableParameterFieldAdapter<number>;
23
+ };
24
+ constructor(context: BoxAdaptersContext, box: VaporisateurDeviceBox);
25
+ get box(): VaporisateurDeviceBox;
26
+ get uuid(): UUID.Format;
27
+ get address(): Address;
28
+ get labelField(): StringField;
29
+ get iconField(): StringField;
30
+ get defaultTrackType(): TrackType;
31
+ get enabledField(): BooleanField;
32
+ get minimizedField(): BooleanField;
33
+ get acceptsMidiEvents(): boolean;
34
+ deviceHost(): DeviceHost;
35
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
36
+ parameterAt(fieldIndices: FieldKeys): AutomatableParameterFieldAdapter;
37
+ terminate(): void;
38
+ }
39
+ //# sourceMappingURL=VaporisateurDeviceBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VaporisateurDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/instruments/VaporisateurDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAC,UAAU,EAAW,0BAA0B,EAAC,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAC,gCAAgC,EAAC,MAAM,wCAAwC,CAAA;AACvF,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AAExE,qBAAa,4BAA6B,YAAW,0BAA0B;;IAC3E,QAAQ,CAAC,IAAI,gBAAe;IAC5B,QAAQ,CAAC,OAAO,UAAS;IAMzB,QAAQ,CAAC,cAAc;;;;;;;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,qBAAqB;IAOnE,IAAI,GAAG,IAAI,qBAAqB,CAAmB;IACnD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAgC;IACvD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,SAAS,IAAI,WAAW,CAAwB;IACpD,IAAI,gBAAgB,IAAI,SAAS,CAAyB;IAC1D,IAAI,YAAY,IAAI,YAAY,CAA2B;IAC3D,IAAI,cAAc,IAAI,YAAY,CAA6B;IAC/D,IAAI,iBAAiB,IAAI,OAAO,CAAc;IAE9C,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAE1C,WAAW,CAAC,YAAY,EAAE,SAAS,GAAG,gCAAgC;IAEtE,SAAS,IAAI,IAAI;CA0CpB"}
@@ -0,0 +1,47 @@
1
+ import { StringMapping, ValueMapping } from "@opendaw/lib-std";
2
+ import { Devices } from "../../devices";
3
+ import { ParameterAdapterSet } from "../../ParameterAdapterSet";
4
+ import { TrackType } from "../../timeline/TrackType";
5
+ export class VaporisateurDeviceBoxAdapter {
6
+ type = "instrument";
7
+ accepts = "midi";
8
+ #context;
9
+ #box;
10
+ #parametric;
11
+ namedParameter; // let typescript infer the type
12
+ constructor(context, box) {
13
+ this.#context = context;
14
+ this.#box = box;
15
+ this.#parametric = new ParameterAdapterSet(this.#context);
16
+ this.namedParameter = this.#wrapParameters(box);
17
+ }
18
+ get box() { return this.#box; }
19
+ get uuid() { return this.#box.address.uuid; }
20
+ get address() { return this.#box.address; }
21
+ get labelField() { return this.#box.label; }
22
+ get iconField() { return this.#box.icon; }
23
+ get defaultTrackType() { return TrackType.Notes; }
24
+ get enabledField() { return this.#box.enabled; }
25
+ get minimizedField() { return this.#box.minimized; }
26
+ get acceptsMidiEvents() { return true; }
27
+ deviceHost() {
28
+ return this.#context.boxAdapters
29
+ .adapterFor(this.#box.host.targetVertex.unwrap("no device-host").box, Devices.isHost);
30
+ }
31
+ audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
32
+ parameterAt(fieldIndices) { return this.#parametric.parameterAt(fieldIndices); }
33
+ terminate() { this.#parametric.terminate(); }
34
+ #wrapParameters(box) {
35
+ return {
36
+ volume: this.#parametric.createParameter(box.volume, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: "db", fractionDigits: 1 }), "volume"),
37
+ octave: this.#parametric.createParameter(box.octave, ValueMapping.linearInteger(-3, 3), StringMapping.numeric(), "octave", 0.5),
38
+ tune: this.#parametric.createParameter(box.tune, ValueMapping.linear(-1200.0, +1200.0), StringMapping.numeric({ unit: "cent", fractionDigits: 0 }), "tune", 0.5),
39
+ waveform: this.#parametric.createParameter(box.waveform, ValueMapping.linearInteger(0, 3), StringMapping.indices("", ["sine", "triangle", "sawtooth", "square"]), "waveform"),
40
+ cutoff: this.#parametric.createParameter(box.cutoff, ValueMapping.exponential(20.0, 18_000.0), StringMapping.numeric({ unit: "Hz" }), "cutoff"),
41
+ resonance: this.#parametric.createParameter(box.resonance, ValueMapping.exponential(0.1, 20.0), StringMapping.numeric({ unit: "q", fractionDigits: 1 }), "resonance"),
42
+ attack: this.#parametric.createParameter(box.attack, ValueMapping.exponential(0.001, 1.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "attack"),
43
+ release: this.#parametric.createParameter(box.release, ValueMapping.exponential(0.001, 1.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "release"),
44
+ filterEnvelope: this.#parametric.createParameter(box.filterEnvelope, ValueMapping.linear(-0.1, 0.1), StringMapping.percent(), "filter env", 0.5)
45
+ };
46
+ }
47
+ }
@@ -0,0 +1,37 @@
1
+ import { ArpeggioDeviceBox } from "@opendaw/studio-boxes";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { Address, BooleanField, FieldKeys, Int32Field, PointerField, StringField } from "@opendaw/lib-box";
4
+ import { StringMapping, UUID } from "@opendaw/lib-std";
5
+ import { DeviceHost, MidiEffectDeviceAdapter } from "../../devices";
6
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
7
+ import { AutomatableParameterFieldAdapter } from "../../AutomatableParameterFieldAdapter";
8
+ import { AudioUnitBoxAdapter } from "../../audio-unit/AudioUnitBoxAdapter";
9
+ export declare class ArpeggioDeviceBoxAdapter implements MidiEffectDeviceAdapter {
10
+ #private;
11
+ static RateFractions: readonly (readonly [number, number])[];
12
+ static RateStringMapping: StringMapping<number>;
13
+ readonly type = "midi-effect";
14
+ readonly accepts = "midi";
15
+ readonly namedParameter: {
16
+ readonly modeIndex: AutomatableParameterFieldAdapter<number>;
17
+ readonly numOctaves: AutomatableParameterFieldAdapter<number>;
18
+ readonly rate: AutomatableParameterFieldAdapter<number>;
19
+ readonly gate: AutomatableParameterFieldAdapter<number>;
20
+ readonly repeat: AutomatableParameterFieldAdapter<number>;
21
+ readonly velocity: AutomatableParameterFieldAdapter<number>;
22
+ };
23
+ constructor(context: BoxAdaptersContext, box: ArpeggioDeviceBox);
24
+ get box(): ArpeggioDeviceBox;
25
+ get uuid(): UUID.Format;
26
+ get address(): Address;
27
+ get indexField(): Int32Field;
28
+ get labelField(): StringField;
29
+ get enabledField(): BooleanField;
30
+ get minimizedField(): BooleanField;
31
+ get host(): PointerField<Pointers.MidiEffectHost>;
32
+ parameterAt(fieldIndices: FieldKeys): AutomatableParameterFieldAdapter;
33
+ deviceHost(): DeviceHost;
34
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
35
+ terminate(): void;
36
+ }
37
+ //# sourceMappingURL=ArpeggioDeviceBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArpeggioDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/midi-effects/ArpeggioDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,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;AAExG,OAAO,EAAC,aAAa,EAAE,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAC,UAAU,EAAW,uBAAuB,EAAC,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAC,gCAAgC,EAAC,MAAM,wCAAwC,CAAA;AACvF,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AAExE,qBAAa,wBAAyB,YAAW,uBAAuB;;IACpE,MAAM,CAAC,aAAa,yCAMI;IAExB,MAAM,CAAC,iBAAiB,wBAA6E;IAErG,QAAQ,CAAC,IAAI,iBAAgB;IAC7B,QAAQ,CAAC,OAAO,UAAS;IAKzB,QAAQ,CAAC,cAAc;;;;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,iBAAiB;IAO/D,IAAI,GAAG,IAAI,iBAAiB,CAAmB;IAC/C,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,cAAc,CAAC,CAAwB;IAEzE,WAAW,CAAC,YAAY,EAAE,SAAS,GAAG,gCAAgC;IAEtE,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAE1C,SAAS,IAAI,IAAI;CA8BpB"}
@@ -0,0 +1,51 @@
1
+ import { Fraction } from "@opendaw/lib-dsp";
2
+ import { StringMapping, ValueMapping } from "@opendaw/lib-std";
3
+ import { Devices } from "../../devices";
4
+ import { ParameterAdapterSet } from "../../ParameterAdapterSet";
5
+ export class ArpeggioDeviceBoxAdapter {
6
+ static RateFractions = 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 RateStringMapping = StringMapping.indices("", this.RateFractions.map(([n, d]) => `${n}/${d}`));
14
+ type = "midi-effect";
15
+ accepts = "midi";
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
+ parameterAt(fieldIndices) { return this.#parametric.parameterAt(fieldIndices); }
35
+ deviceHost() {
36
+ return this.#context.boxAdapters
37
+ .adapterFor(this.#box.host.targetVertex.unwrap("no device-host").box, Devices.isHost);
38
+ }
39
+ audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
40
+ terminate() { this.#parametric.terminate(); }
41
+ #wrapParameters(box) {
42
+ return {
43
+ modeIndex: this.#parametric.createParameter(box.modeIndex, ValueMapping.linearInteger(0, 2), StringMapping.indices("", ["Up", "Down", "UpDown"]), "mode"),
44
+ numOctaves: this.#parametric.createParameter(box.numOctaves, ValueMapping.linearInteger(1, 5), StringMapping.numeric({ unit: "", fractionDigits: 0 }), "Octaves"),
45
+ rate: this.#parametric.createParameter(box.rateIndex, ValueMapping.linearInteger(0, ArpeggioDeviceBoxAdapter.RateFractions.length - 1), ArpeggioDeviceBoxAdapter.RateStringMapping, "Rate"),
46
+ gate: this.#parametric.createParameter(box.gate, ValueMapping.linear(0.0, 2.0), StringMapping.percent({ fractionDigits: 0 }), "Gate"),
47
+ repeat: this.#parametric.createParameter(box.repeat, ValueMapping.linearInteger(1, 16), StringMapping.numeric({ fractionDigits: 0 }), "Repeat"),
48
+ velocity: this.#parametric.createParameter(box.velocity, ValueMapping.bipolar(), StringMapping.percent({ fractionDigits: 0, bipolar: false }), "Velocity")
49
+ };
50
+ }
51
+ }
@@ -0,0 +1,32 @@
1
+ import { Pointers } from "@opendaw/studio-enums";
2
+ import { UUID } from "@opendaw/lib-std";
3
+ import { Address, BooleanField, FieldKeys, Int32Field, PointerField, StringField } from "@opendaw/lib-box";
4
+ import { PitchDeviceBox } from "@opendaw/studio-boxes";
5
+ import { DeviceHost, MidiEffectDeviceAdapter } from "../../devices";
6
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
7
+ import { AudioUnitBoxAdapter } from "../../audio-unit/AudioUnitBoxAdapter";
8
+ import { AutomatableParameterFieldAdapter } from "../../AutomatableParameterFieldAdapter";
9
+ export declare class PitchDeviceBoxAdapter implements MidiEffectDeviceAdapter {
10
+ #private;
11
+ readonly type = "midi-effect";
12
+ readonly accepts = "midi";
13
+ readonly namedParameter: {
14
+ readonly octaves: AutomatableParameterFieldAdapter<number>;
15
+ readonly semiTones: AutomatableParameterFieldAdapter<number>;
16
+ readonly cent: AutomatableParameterFieldAdapter<number>;
17
+ };
18
+ constructor(context: BoxAdaptersContext, box: PitchDeviceBox);
19
+ get box(): PitchDeviceBox;
20
+ get uuid(): UUID.Format;
21
+ get address(): Address;
22
+ get indexField(): Int32Field;
23
+ get labelField(): StringField;
24
+ get enabledField(): BooleanField;
25
+ get minimizedField(): BooleanField;
26
+ get host(): PointerField<Pointers.MidiEffectHost>;
27
+ deviceHost(): DeviceHost;
28
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
29
+ parameterAt(fieldIndices: FieldKeys): AutomatableParameterFieldAdapter;
30
+ terminate(): void;
31
+ }
32
+ //# sourceMappingURL=PitchDeviceBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PitchDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/midi-effects/PitchDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAgB,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACxG,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAC,UAAU,EAAW,uBAAuB,EAAC,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AACxE,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAA;AAEzF,qBAAa,qBAAsB,YAAW,uBAAuB;;IACjE,QAAQ,CAAC,IAAI,iBAAgB;IAC7B,QAAQ,CAAC,OAAO,UAAS;IAKzB,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,cAAc,CAAC,CAAwB;IAEzE,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAE1C,WAAW,CAAC,YAAY,EAAE,SAAS,GAAG,gCAAgC;IAEtE,SAAS,IAAI,IAAI;CAkBpB"}
@@ -0,0 +1,39 @@
1
+ import { StringMapping, ValueMapping } from "@opendaw/lib-std";
2
+ import { Devices } from "../../devices";
3
+ import { ParameterAdapterSet } from "../../ParameterAdapterSet";
4
+ export class PitchDeviceBoxAdapter {
5
+ type = "midi-effect";
6
+ accepts = "midi";
7
+ #context;
8
+ #box;
9
+ #parametric;
10
+ namedParameter; // let typescript infer the type
11
+ constructor(context, box) {
12
+ this.#context = context;
13
+ this.#box = box;
14
+ this.#parametric = new ParameterAdapterSet(this.#context);
15
+ this.namedParameter = this.#wrapParameters(box);
16
+ }
17
+ get box() { return this.#box; }
18
+ get uuid() { return this.#box.address.uuid; }
19
+ get address() { return this.#box.address; }
20
+ get indexField() { return this.#box.index; }
21
+ get labelField() { return this.#box.label; }
22
+ get enabledField() { return this.#box.enabled; }
23
+ get minimizedField() { return this.#box.minimized; }
24
+ get host() { return this.#box.host; }
25
+ deviceHost() {
26
+ return this.#context.boxAdapters
27
+ .adapterFor(this.#box.host.targetVertex.unwrap("no device-host").box, Devices.isHost);
28
+ }
29
+ audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
30
+ parameterAt(fieldIndices) { return this.#parametric.parameterAt(fieldIndices); }
31
+ terminate() { this.#parametric.terminate(); }
32
+ #wrapParameters(box) {
33
+ return {
34
+ octaves: this.#parametric.createParameter(box.octaves, ValueMapping.linearInteger(-7, 7), StringMapping.numeric({ unit: "oct", fractionDigits: 0 }), "octaves"),
35
+ semiTones: this.#parametric.createParameter(box.semiTones, ValueMapping.linearInteger(-36, 36), StringMapping.numeric({ unit: "st", fractionDigits: 0 }), "semi-tones"),
36
+ cent: this.#parametric.createParameter(box.cents, ValueMapping.linear(-50.0, 50.0), StringMapping.numeric({ unit: "cents", fractionDigits: 1 }), "cents")
37
+ };
38
+ }
39
+ }
@@ -0,0 +1,28 @@
1
+ import { Pointers } from "@opendaw/studio-enums";
2
+ import { Observer, Subscription, UUID } from "@opendaw/lib-std";
3
+ import { Address, BooleanField, Int32Field, PointerField, StringField } from "@opendaw/lib-box";
4
+ import { ZeitgeistDeviceBox } from "@opendaw/studio-boxes";
5
+ import { DeviceHost, MidiEffectDeviceAdapter } from "../../devices";
6
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
7
+ import { GrooveAdapter } from "../../grooves/GrooveBoxAdapter";
8
+ import { AudioUnitBoxAdapter } from "../../audio-unit/AudioUnitBoxAdapter";
9
+ export declare class ZeitgeistDeviceBoxAdapter implements MidiEffectDeviceAdapter {
10
+ #private;
11
+ readonly type = "midi-effect";
12
+ readonly accepts = "midi";
13
+ constructor(context: BoxAdaptersContext, box: ZeitgeistDeviceBox);
14
+ get box(): ZeitgeistDeviceBox;
15
+ get uuid(): UUID.Format;
16
+ get address(): Address;
17
+ get indexField(): Int32Field;
18
+ get labelField(): StringField;
19
+ get enabledField(): BooleanField;
20
+ get minimizedField(): BooleanField;
21
+ get host(): PointerField<Pointers.MidiEffectHost>;
22
+ deviceHost(): DeviceHost;
23
+ groove(): GrooveAdapter;
24
+ catchupAndSubscribeGroove(observer: Observer<GrooveAdapter>): Subscription;
25
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
26
+ terminate(): void;
27
+ }
28
+ //# sourceMappingURL=ZeitgeistDeviceBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZeitgeistDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/midi-effects/ZeitgeistDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,UAAU,EAAW,uBAAuB,EAAC,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAC,aAAa,EAAC,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AAExE,qBAAa,yBAA0B,YAAW,uBAAuB;;IACrE,QAAQ,CAAC,IAAI,iBAAgB;IAC7B,QAAQ,CAAC,OAAO,UAAS;gBAKb,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB;IAOhE,IAAI,GAAG,IAAI,kBAAkB,CAAmB;IAChD,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,cAAc,CAAC,CAAwB;IAEzE,UAAU,IAAI,UAAU;IAKxB,MAAM,IAAI,aAAa;IAKvB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,YAAY;IAK1E,mBAAmB,IAAI,mBAAmB;IAE1C,SAAS,IAAI,IAAI;CACpB"}
@@ -0,0 +1,35 @@
1
+ import { Devices } from "../../devices";
2
+ import { GrooveAdapter } from "../../grooves/GrooveBoxAdapter";
3
+ export class ZeitgeistDeviceBoxAdapter {
4
+ type = "midi-effect";
5
+ accepts = "midi";
6
+ #context;
7
+ #box;
8
+ constructor(context, box) {
9
+ this.#context = context;
10
+ this.#box = box;
11
+ this.groove(); // force creation of GrooveAdapter
12
+ }
13
+ get box() { return this.#box; }
14
+ get uuid() { return this.#box.address.uuid; }
15
+ get address() { return this.#box.address; }
16
+ get indexField() { return this.#box.index; }
17
+ get labelField() { return this.#box.label; }
18
+ get enabledField() { return this.#box.enabled; }
19
+ get minimizedField() { return this.#box.minimized; }
20
+ get host() { return this.#box.host; }
21
+ deviceHost() {
22
+ return this.#context.boxAdapters
23
+ .adapterFor(this.#box.host.targetVertex.unwrap("no device-host").box, Devices.isHost);
24
+ }
25
+ groove() {
26
+ return this.#context.boxAdapters
27
+ .adapterFor(this.#box.groove.targetVertex.unwrap("no groove").box, GrooveAdapter.checkType);
28
+ }
29
+ catchupAndSubscribeGroove(observer) {
30
+ return this.#box.groove.catchupAndSubscribe(pointer => observer(this.#context.boxAdapters
31
+ .adapterFor(pointer.targetVertex.unwrap("No groove found").box, GrooveAdapter.checkType)));
32
+ }
33
+ audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
34
+ terminate() { }
35
+ }
@@ -0,0 +1,68 @@
1
+ import { BooleanField, Box, Field, Int32Field, PointerField, StringField } from "@opendaw/lib-box";
2
+ import { AssertType, Option } from "@opendaw/lib-std";
3
+ import { Pointers } from "@opendaw/studio-enums";
4
+ import { TrackType } from "./timeline/TrackType";
5
+ import { SortedBoxAdapterCollection } from "./SortedBoxAdapterCollection";
6
+ import { BoxAdapter } from "./BoxAdapter";
7
+ import { AudioUnitInputAdapter } from "./audio-unit/AudioUnitInputAdapter";
8
+ import { AudioUnitBoxAdapter } from "./audio-unit/AudioUnitBoxAdapter";
9
+ export type DeviceType = "midi-effect" | "bus" | "instrument" | "audio-effect";
10
+ export type DeviceAccepts = "midi" | "audio" | false;
11
+ export declare namespace DeviceAccepts {
12
+ const toTrackType: (type: DeviceAccepts) => TrackType.Notes | TrackType.Audio;
13
+ }
14
+ export interface MidiEffectDeviceAdapter extends EffectDeviceBoxAdapter<Pointers.MidiEffectHost> {
15
+ readonly type: "midi-effect";
16
+ readonly accepts: "midi";
17
+ }
18
+ export interface AudioEffectDeviceBoxAdapter extends EffectDeviceBoxAdapter<Pointers.AudioEffectHost> {
19
+ readonly type: "audio-effect";
20
+ readonly accepts: "audio";
21
+ }
22
+ export type EffectPointerType = Pointers.AudioEffectHost | Pointers.MidiEffectHost;
23
+ export interface EffectDeviceBoxAdapter<P extends EffectPointerType = EffectPointerType> extends DeviceBoxAdapter {
24
+ readonly type: "audio-effect" | "midi-effect";
25
+ readonly accepts: "audio" | "midi";
26
+ get indexField(): Int32Field;
27
+ get enabledField(): BooleanField;
28
+ get host(): PointerField<P>;
29
+ }
30
+ export interface InstrumentDeviceBoxAdapter extends DeviceBoxAdapter {
31
+ readonly type: "instrument";
32
+ get iconField(): StringField;
33
+ get defaultTrackType(): TrackType;
34
+ get acceptsMidiEvents(): boolean;
35
+ }
36
+ export interface DeviceHost extends BoxAdapter {
37
+ readonly class: "device-host";
38
+ get midiEffects(): SortedBoxAdapterCollection<MidiEffectDeviceAdapter, Pointers.MidiEffectHost>;
39
+ get inputAdapter(): Option<AudioUnitInputAdapter>;
40
+ get audioEffects(): SortedBoxAdapterCollection<AudioEffectDeviceBoxAdapter, Pointers.AudioEffectHost>;
41
+ get inputField(): Field<Pointers.InstrumentHost | Pointers.AudioOutput>;
42
+ get tracksField(): Field<Pointers.TrackCollection>;
43
+ get minimizedField(): BooleanField;
44
+ get isAudioUnit(): boolean;
45
+ get label(): string;
46
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
47
+ }
48
+ export interface DeviceBoxAdapter extends BoxAdapter {
49
+ readonly type: DeviceType;
50
+ get box(): Box;
51
+ get labelField(): StringField;
52
+ get enabledField(): BooleanField;
53
+ get minimizedField(): BooleanField;
54
+ get accepts(): DeviceAccepts;
55
+ deviceHost(): DeviceHost;
56
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
57
+ }
58
+ export declare namespace Devices {
59
+ const isAny: AssertType<DeviceBoxAdapter>;
60
+ const isEffect: AssertType<EffectDeviceBoxAdapter>;
61
+ const isInstrument: AssertType<InstrumentDeviceBoxAdapter>;
62
+ const isMidiEffect: AssertType<MidiEffectDeviceAdapter>;
63
+ const isAudioEffect: AssertType<AudioEffectDeviceBoxAdapter>;
64
+ const isHost: AssertType<DeviceHost>;
65
+ const fetchEffectIndex: (box: Box) => Int32Field<any>;
66
+ const deleteEffectDevices: (devices: ReadonlyArray<EffectDeviceBoxAdapter>) => void;
67
+ }
68
+ //# sourceMappingURL=devices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../src/devices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { Arrays, asDefined, assert, panic, UUID } from "@opendaw/lib-std";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { TrackType } from "./timeline/TrackType";
4
+ export var DeviceAccepts;
5
+ (function (DeviceAccepts) {
6
+ DeviceAccepts.toTrackType = (type) => {
7
+ switch (type) {
8
+ case "midi":
9
+ return TrackType.Notes;
10
+ case "audio":
11
+ return TrackType.Audio;
12
+ default:
13
+ return panic();
14
+ }
15
+ };
16
+ })(DeviceAccepts || (DeviceAccepts = {}));
17
+ export var Devices;
18
+ (function (Devices) {
19
+ Devices.isAny = (adapter) => adapter !== null && typeof adapter === "object" && "type" in adapter
20
+ && (adapter.type === "midi-effect" || adapter.type === "bus"
21
+ || adapter.type === "instrument" || adapter.type === "audio-effect");
22
+ Devices.isEffect = (adapter) => adapter !== null && typeof adapter === "object" && "type" in adapter
23
+ && (adapter.type === "midi-effect" || adapter.type === "audio-effect");
24
+ Devices.isInstrument = (adapter) => adapter !== null && typeof adapter === "object" && "type" in adapter && adapter.type === "instrument";
25
+ Devices.isMidiEffect = (adapter) => adapter !== null && typeof adapter === "object" && "type" in adapter && adapter.type === "midi-effect";
26
+ Devices.isAudioEffect = (adapter) => adapter !== null && typeof adapter === "object" && "type" in adapter && adapter.type === "audio-effect";
27
+ Devices.isHost = (value) => value !== null && typeof value === "object" && "class" in value && value.class === "device-host";
28
+ Devices.fetchEffectIndex = (box) => asDefined(box.accept({
29
+ visitArpeggioDeviceBox: (box) => box.index,
30
+ visitPitchDeviceBox: (box) => box.index,
31
+ visitStereoToolDeviceBox: (box) => box.index,
32
+ visitDelayDeviceBox: (box) => box.index,
33
+ visitModularDeviceBox: (box) => box.index,
34
+ visitRevampDeviceBox: (box) => box.index,
35
+ visitReverbDeviceBox: (box) => box.index,
36
+ visitZeitgeistDeviceBox: (box) => box.index
37
+ }), `No index-field found for ${box}`);
38
+ Devices.deleteEffectDevices = (devices) => {
39
+ if (devices.length === 0) {
40
+ return;
41
+ }
42
+ assert(Arrays.satisfy(devices, (a, b) => a.deviceHost().address.equals(b.deviceHost().address)), "Devices are not connected to the same host");
43
+ const device = devices[0];
44
+ const targets = device.accepts === "audio"
45
+ ? device.deviceHost().audioEffects.field().pointerHub.filter(Pointers.AudioEffectHost)
46
+ : device.accepts === "midi"
47
+ ? device.deviceHost().midiEffects.field().pointerHub.filter(Pointers.MidiEffectHost)
48
+ : panic("unknown type");
49
+ targets.map(({ box }) => Devices.fetchEffectIndex(box))
50
+ .filter(index => devices.some(device => UUID.Comparator(device.uuid, index.address.uuid) !== 0))
51
+ .sort((a, b) => a.getValue() - b.getValue())
52
+ .forEach((indexField, index) => indexField.setValue(index));
53
+ devices.forEach(device => device.box.delete());
54
+ };
55
+ })(Devices || (Devices = {}));
@@ -0,0 +1,15 @@
1
+ import { Observer, Option, Subscription, Terminable } from "@opendaw/lib-std";
2
+ import { Editing, PointerField, Vertex } from "@opendaw/lib-box";
3
+ import { Pointers } from "@opendaw/studio-enums";
4
+ export declare class UserEditing implements Terminable {
5
+ #private;
6
+ constructor(editing: Editing);
7
+ catchupAndSubscribe(observer: Observer<Option<Vertex>>): Subscription;
8
+ follow(pointer: PointerField<Pointers.Editing>): void;
9
+ edit(target: Vertex<Pointers.Editing | Pointers>): void;
10
+ isEditing(vertex: Vertex<Pointers.Editing | Pointers>): boolean;
11
+ get(): Option<Vertex>;
12
+ clear(): void;
13
+ terminate(): void;
14
+ }
15
+ //# sourceMappingURL=UserEditing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserEditing.d.ts","sourceRoot":"","sources":["../../src/editing/UserEditing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAA;AACrF,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,qBAAa,WAAY,YAAW,UAAU;;gBAO9B,OAAO,EAAE,OAAO;IAK5B,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY;IAKrE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI;IAOrD,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI;IAIvD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,OAAO;IAO/D,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC;IAErB,KAAK,IAAI,IAAI;IAEb,SAAS,IAAI,IAAI;CAOpB"}