@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
package/README.md ADDED
@@ -0,0 +1 @@
1
+ This package is part of the openDAW SDK
@@ -0,0 +1,7 @@
1
+ export type AudioData = {
2
+ sampleRate: number;
3
+ numberOfFrames: number;
4
+ numberOfChannels: number;
5
+ frames: ReadonlyArray<Float32Array>;
6
+ };
7
+ //# sourceMappingURL=AudioData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioData.d.ts","sourceRoot":"","sources":["../src/AudioData.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;CACtC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ import { AudioFileBox } from "@opendaw/studio-boxes";
2
+ import { Option, UUID } from "@opendaw/lib-std";
3
+ import { Peaks } from "@opendaw/lib-fusion";
4
+ import { AudioData } from "./AudioData";
5
+ import { Address } from "@opendaw/lib-box";
6
+ import { AudioLoader } from "./AudioLoader";
7
+ import { BoxAdaptersContext } from "./BoxAdaptersContext";
8
+ import { BoxAdapter } from "./BoxAdapter";
9
+ export declare class AudioFileBoxAdapter implements BoxAdapter {
10
+ #private;
11
+ constructor(context: BoxAdaptersContext, box: AudioFileBox);
12
+ get box(): AudioFileBox;
13
+ get uuid(): UUID.Format;
14
+ get address(): Address;
15
+ get startInSeconds(): number;
16
+ get endInSeconds(): number;
17
+ get data(): Option<AudioData>;
18
+ get peaks(): Option<Peaks>;
19
+ getOrCreateAudioLoader(): AudioLoader;
20
+ terminate(): void;
21
+ }
22
+ //# sourceMappingURL=AudioFileBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioFileBoxAdapter.d.ts","sourceRoot":"","sources":["../src/AudioFileBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AACzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAEvC,qBAAa,mBAAoB,YAAW,UAAU;;gBAItC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,YAAY;IAK1D,IAAI,GAAG,IAAI,YAAY,CAAmB;IAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAgC;IACvD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,cAAc,IAAI,MAAM,CAA6C;IACzE,IAAI,YAAY,IAAI,MAAM,CAA2C;IACrE,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAA4C;IACzE,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAA6C;IAEvE,sBAAsB,IAAI,WAAW;IAIrC,SAAS,IAAI,IAAI;CACpB"}
@@ -0,0 +1,19 @@
1
+ export class AudioFileBoxAdapter {
2
+ #context;
3
+ #box;
4
+ constructor(context, box) {
5
+ this.#context = context;
6
+ this.#box = box;
7
+ }
8
+ get box() { return this.#box; }
9
+ get uuid() { return this.#box.address.uuid; }
10
+ get address() { return this.#box.address; }
11
+ get startInSeconds() { return this.#box.startInSeconds.getValue(); }
12
+ get endInSeconds() { return this.#box.endInSeconds.getValue(); }
13
+ get data() { return this.getOrCreateAudioLoader().data; }
14
+ get peaks() { return this.getOrCreateAudioLoader().peaks; }
15
+ getOrCreateAudioLoader() {
16
+ return this.#context.audioManager.getOrCreate(this.#box.address.uuid);
17
+ }
18
+ terminate() { }
19
+ }
@@ -0,0 +1,26 @@
1
+ import { AudioData } from "./AudioData";
2
+ import { Peaks } from "@opendaw/lib-fusion";
3
+ import { Observer, Option, Subscription, unitValue, UUID } from "@opendaw/lib-std";
4
+ export interface AudioLoaderManager {
5
+ getOrCreate(uuid: UUID.Format): AudioLoader;
6
+ invalidate(uuid: UUID.Format): void;
7
+ }
8
+ export interface AudioLoader {
9
+ readonly data: Option<AudioData>;
10
+ readonly peaks: Option<Peaks>;
11
+ readonly uuid: UUID.Format;
12
+ readonly state: AudioLoaderState;
13
+ subscribe(observer: Observer<AudioLoaderState>): Subscription;
14
+ }
15
+ export type AudioLoaderState = {
16
+ type: "idle";
17
+ } | {
18
+ type: "progress";
19
+ progress: unitValue;
20
+ } | {
21
+ type: "error";
22
+ reason: string;
23
+ } | {
24
+ type: "loaded";
25
+ };
26
+ //# sourceMappingURL=AudioLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioLoader.d.ts","sourceRoot":"","sources":["../src/AudioLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAEhF,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,WAAW,CAAA;IAC3C,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;CACtC;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAAA;CAChE;AAED,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export type AudioMetaData = {
2
+ name: string;
3
+ bpm: number;
4
+ duration: number;
5
+ sample_rate: number;
6
+ cloud?: boolean;
7
+ };
8
+ //# sourceMappingURL=AudioMetaData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioMetaData.d.ts","sourceRoot":"","sources":["../src/AudioMetaData.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { AudioMetaData } from "./AudioMetaData";
2
+ export type AudioSample = {
3
+ uuid: string;
4
+ } & AudioMetaData;
5
+ //# sourceMappingURL=AudioSample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioSample.d.ts","sourceRoot":"","sources":["../src/AudioSample.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAE7C,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ import { ControlSourceListener, Observer, Option, Parameter, StringMapping, StringResult, Subscription, Terminable, unitValue, ValueMapping } from "@opendaw/lib-std";
2
+ import { ppqn } from "@opendaw/lib-dsp";
3
+ import { Address, PrimitiveField, PrimitiveType, PrimitiveValues } from "@opendaw/lib-box";
4
+ import { Pointers } from "@opendaw/studio-enums";
5
+ import { TrackBoxAdapter } from "./timeline/TrackBoxAdapter";
6
+ import { BoxAdaptersContext } from "./BoxAdaptersContext";
7
+ export declare class AutomatableParameterFieldAdapter<T extends PrimitiveValues = any> implements Parameter<T>, Terminable {
8
+ #private;
9
+ constructor(context: BoxAdaptersContext, field: PrimitiveField<T, any>, valueMapping: ValueMapping<T>, stringMapping: StringMapping<T>, name: string, anchor?: unitValue);
10
+ registerMidiControl(): Terminable;
11
+ get field(): PrimitiveField<T, Pointers.Automation>;
12
+ get valueMapping(): ValueMapping<T>;
13
+ get stringMapping(): StringMapping<T>;
14
+ get name(): string;
15
+ get anchor(): unitValue;
16
+ get type(): PrimitiveType;
17
+ get address(): Address;
18
+ get track(): Option<TrackBoxAdapter>;
19
+ valueAt(position: ppqn): T;
20
+ subscribe(observer: Observer<AutomatableParameterFieldAdapter<T>>): Subscription;
21
+ catchupAndSubscribe(observer: Observer<AutomatableParameterFieldAdapter<T>>): Subscription;
22
+ catchupAndSubscribeControlSources(observer: ControlSourceListener): Subscription;
23
+ getValue(): T;
24
+ setValue(value: T): void;
25
+ setUnitValue(value: unitValue): void;
26
+ getUnitValue(): unitValue;
27
+ getControlledValue(): T;
28
+ getControlledUnitValue(): unitValue;
29
+ getControlledPrintValue(): Readonly<StringResult>;
30
+ getPrintValue(): Readonly<StringResult>;
31
+ setPrintValue(text: string): void;
32
+ reset(): void;
33
+ terminate(): void;
34
+ }
35
+ //# sourceMappingURL=AutomatableParameterFieldAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,qBAAqB,EAIrB,QAAQ,EACR,MAAM,EAEN,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EAEV,SAAS,EACT,YAAY,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,OAAO,EAA8B,cAAc,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAQvD,qBAAa,gCAAgC,CAAC,CAAC,SAAS,eAAe,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAiBlG,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAC7B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS;IAwD9B,mBAAmB,IAAI,UAAU;IAWjC,IAAI,KAAK,IAAI,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAqB;IACxE,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAA4B;IAC/D,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAA6B;IAClE,IAAI,IAAI,IAAI,MAAM,CAAoB;IACtC,IAAI,MAAM,IAAI,SAAS,CAAsB;IAC7C,IAAI,IAAI,IAAI,aAAa,CAA0B;IACnD,IAAI,OAAO,IAAI,OAAO,CAA6B;IACnD,IAAI,KAAK,IAAI,MAAM,CAAC,eAAe,CAAC,CAA+B;IAEnE,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC;IAW1B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAEhF,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAK1F,iCAAiC,CAAC,QAAQ,EAAE,qBAAqB,GAAG,YAAY;IAMhF,QAAQ,IAAI,CAAC;IACb,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IACpC,YAAY,IAAI,SAAS;IACzB,kBAAkB,IAAI,CAAC;IACvB,sBAAsB,IAAI,SAAS;IACnC,uBAAuB,IAAI,QAAQ,CAAC,YAAY,CAAC;IACjD,aAAa,IAAI,QAAQ,CAAC,YAAY,CAAC;IACvC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWjC,KAAK,IAAI,IAAI;IAEb,SAAS,IAAI,IAAI;CAKpB"}
@@ -0,0 +1,161 @@
1
+ import { assert, clamp, Listeners, Notifier, Option, panic, Terminator } from "@opendaw/lib-std";
2
+ import { Pointers } from "@opendaw/studio-enums";
3
+ import { TrackBoxAdapter } from "./timeline/TrackBoxAdapter";
4
+ const ExternalControlTypes = [
5
+ Pointers.Automation,
6
+ Pointers.Modulation,
7
+ Pointers.MidiControl,
8
+ Pointers.ParameterController
9
+ ];
10
+ export class AutomatableParameterFieldAdapter {
11
+ #context;
12
+ #field;
13
+ #valueMapping;
14
+ #stringMapping;
15
+ #name;
16
+ #anchor;
17
+ #terminator = new Terminator();
18
+ #valueChangeNotifier;
19
+ #controlSource;
20
+ #trackBoxAdapter = Option.None;
21
+ #automationHandle = Option.None;
22
+ #controlledValue = null;
23
+ #midiControlled = false;
24
+ constructor(context, field, valueMapping, stringMapping, name, anchor) {
25
+ this.#context = context;
26
+ this.#field = field;
27
+ this.#valueMapping = valueMapping;
28
+ this.#stringMapping = stringMapping;
29
+ this.#name = name;
30
+ this.#anchor = anchor ?? 0.0;
31
+ this.#terminator.own(this.#context.parameterFieldAdapters.register(this));
32
+ this.#valueChangeNotifier = this.#terminator.own(new Notifier());
33
+ this.#controlSource = new Listeners();
34
+ this.#terminator.own(this.#field.subscribe(() => this.#valueChangeNotifier.notify(this)));
35
+ this.#terminator.own(this.#field.pointerHub.catchupAndSubscribeTransactual({
36
+ onAdd: (pointer) => {
37
+ this.#controlSource.proxy.onControlSourceAdd(mapPointerToControlSource(pointer.pointerType));
38
+ pointer.box.accept({
39
+ visitTrackBox: (box) => {
40
+ assert(this.#trackBoxAdapter.isEmpty(), "Already assigned");
41
+ const adapter = this.#context.boxAdapters.adapterFor(box, TrackBoxAdapter);
42
+ this.#trackBoxAdapter = Option.wrap(adapter);
43
+ if (this.#context.isMainThread) {
44
+ this.#automationHandle = Option.wrap(this.#context.liveStreamReceiver
45
+ .subscribeFloat(this.#field.address, value => {
46
+ if (this.#controlledValue === value) {
47
+ return;
48
+ }
49
+ this.#controlledValue = value;
50
+ this.#valueChangeNotifier.notify(this);
51
+ }));
52
+ }
53
+ }
54
+ });
55
+ },
56
+ onRemove: (pointer) => {
57
+ this.#controlSource.proxy.onControlSourceRemove(mapPointerToControlSource(pointer.pointerType));
58
+ pointer.box.accept({
59
+ visitTrackBox: (box) => {
60
+ assert(this.#trackBoxAdapter.unwrapOrNull()?.address?.equals(box.address) === true, `Unknown ${box}`);
61
+ this.#trackBoxAdapter = Option.None;
62
+ if (this.#context.isMainThread) {
63
+ this.#automationHandle.ifSome(handle => handle.terminate());
64
+ this.#automationHandle = Option.None;
65
+ this.#controlledValue = null;
66
+ this.#valueChangeNotifier.notify(this);
67
+ }
68
+ }
69
+ });
70
+ }
71
+ }, ...ExternalControlTypes));
72
+ /*
73
+ For debugging: It's not live because floating errors expose false positives,
74
+ and I am too lazy to implement this in the mappings itself.
75
+ */
76
+ if (field.getValue() !== valueMapping.clamp(field.getValue())) {
77
+ console.warn(`${name} (${field.getValue()}) is out of bounds`, valueMapping);
78
+ }
79
+ }
80
+ registerMidiControl() {
81
+ this.#controlSource.proxy.onControlSourceAdd("midi");
82
+ this.#midiControlled = true;
83
+ return {
84
+ terminate: () => {
85
+ this.#midiControlled = false;
86
+ this.#controlSource.proxy.onControlSourceRemove("midi");
87
+ }
88
+ };
89
+ }
90
+ get field() { return this.#field; }
91
+ get valueMapping() { return this.#valueMapping; }
92
+ get stringMapping() { return this.#stringMapping; }
93
+ get name() { return this.#name; }
94
+ get anchor() { return this.#anchor; }
95
+ get type() { return this.#field.type; }
96
+ get address() { return this.#field.address; }
97
+ get track() { return this.#trackBoxAdapter; }
98
+ valueAt(position) {
99
+ const optTrack = this.#trackBoxAdapter;
100
+ if (optTrack.nonEmpty()) {
101
+ const track = optTrack.unwrap();
102
+ if (track.enabled) {
103
+ return this.valueMapping.y(track.valueAt(position, this.getUnitValue()));
104
+ }
105
+ }
106
+ return this.getValue();
107
+ }
108
+ subscribe(observer) { return this.#valueChangeNotifier.subscribe(observer); }
109
+ catchupAndSubscribe(observer) {
110
+ observer(this);
111
+ return this.subscribe(observer);
112
+ }
113
+ catchupAndSubscribeControlSources(observer) {
114
+ if (this.#midiControlled) {
115
+ observer.onControlSourceAdd("midi");
116
+ }
117
+ this.#field.pointerHub.filter(...ExternalControlTypes)
118
+ .forEach(pointer => observer.onControlSourceAdd(mapPointerToControlSource(pointer.pointerType)));
119
+ return this.#controlSource.subscribe(observer);
120
+ }
121
+ getValue() { return this.#field.getValue(); }
122
+ setValue(value) { this.#field.setValue(value); }
123
+ setUnitValue(value) { this.setValue(this.#valueMapping.y(value)); }
124
+ getUnitValue() { return this.#valueMapping.x(this.getValue()); }
125
+ getControlledValue() { return this.#valueMapping.y(this.getControlledUnitValue()); }
126
+ getControlledUnitValue() { return this.#controlledValue ?? this.getUnitValue(); }
127
+ getControlledPrintValue() { return this.#stringMapping.x(this.getControlledValue()); }
128
+ getPrintValue() { return this.#stringMapping.x(this.getValue()); }
129
+ setPrintValue(text) {
130
+ const result = this.#stringMapping.y(text);
131
+ if (result.type === "unitValue") {
132
+ this.setUnitValue(clamp(result.value, 0.0, 1.0));
133
+ }
134
+ else if (result.type === "explicit") {
135
+ this.setValue(this.valueMapping.clamp(result.value));
136
+ }
137
+ else {
138
+ console.debug(`Unknown text input: '${result.value}'`);
139
+ }
140
+ }
141
+ reset() { this.setValue(this.#valueMapping.clamp(this.#field.initValue)); }
142
+ terminate() {
143
+ this.#automationHandle.ifSome(handle => handle.terminate());
144
+ this.#automationHandle = Option.None;
145
+ this.#terminator.terminate();
146
+ }
147
+ }
148
+ const mapPointerToControlSource = (pointer) => {
149
+ switch (pointer) {
150
+ case Pointers.Automation:
151
+ return "automated";
152
+ case Pointers.Modulation:
153
+ return "modulated";
154
+ case Pointers.MidiControl:
155
+ return "midi";
156
+ case Pointers.ParameterController:
157
+ return "external";
158
+ default:
159
+ return panic(`${pointer.toString()} is an unknown pointer type`);
160
+ }
161
+ };
@@ -0,0 +1,7 @@
1
+ import { Terminable, UUID } from "@opendaw/lib-std";
2
+ import { Addressable, Box } from "@opendaw/lib-box";
3
+ export interface BoxAdapter extends Addressable, Terminable {
4
+ get box(): Box;
5
+ get uuid(): UUID.Format;
6
+ }
7
+ //# sourceMappingURL=BoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoxAdapter.d.ts","sourceRoot":"","sources":["../src/BoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAC,WAAW,EAAE,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAEjD,MAAM,WAAW,UAAW,SAAQ,WAAW,EAAE,UAAU;IACvD,IAAI,GAAG,IAAI,GAAG,CAAA;IACd,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAA;CAC1B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import { Func, int, Subscription, Terminable } from "@opendaw/lib-std";
2
+ import { Box, PointerHub } from "@opendaw/lib-box";
3
+ import { Pointers } from "@opendaw/studio-enums";
4
+ import { BoxAdapter } from "./BoxAdapter";
5
+ export interface AdapterCollectionListener<ADAPTER extends BoxAdapter> {
6
+ onAdd(adapter: ADAPTER): void;
7
+ onRemove(adapter: ADAPTER): void;
8
+ }
9
+ export declare class BoxAdapterCollection<ADAPTER extends BoxAdapter> implements Terminable {
10
+ #private;
11
+ constructor(pointerHub: PointerHub, provider: Func<Box, ADAPTER>, pointers: Pointers);
12
+ subscribe(listener: AdapterCollectionListener<ADAPTER>): Subscription;
13
+ catchupAndSubscribe(listener: AdapterCollectionListener<ADAPTER>): Subscription;
14
+ adapters(): ReadonlyArray<ADAPTER>;
15
+ size(): int;
16
+ isEmpty(): boolean;
17
+ terminate(): void;
18
+ }
19
+ //# sourceMappingURL=BoxAdapterCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoxAdapterCollection.d.ts","sourceRoot":"","sources":["../src/BoxAdapterCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,IAAI,EAAE,GAAG,EAAwB,YAAY,EAAE,UAAU,EAAO,MAAM,kBAAkB,CAAA;AACxG,OAAO,EAAC,GAAG,EAAgB,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAEvC,MAAM,WAAW,yBAAyB,CAAC,OAAO,SAAS,UAAU;IACjE,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CACnC;AAED,qBAAa,oBAAoB,CAAC,OAAO,SAAS,UAAU,CAAE,YAAW,UAAU;;gBAKnE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ;IAiBpF,SAAS,CAAC,QAAQ,EAAE,yBAAyB,CAAC,OAAO,CAAC,GAAG,YAAY;IAErE,mBAAmB,CAAC,QAAQ,EAAE,yBAAyB,CAAC,OAAO,CAAC,GAAG,YAAY;IAK/E,QAAQ,IAAI,aAAa,CAAC,OAAO,CAAC;IAClC,IAAI,IAAI,GAAG;IACX,OAAO,IAAI,OAAO;IAElB,SAAS,IAAI,IAAI;CAKpB"}
@@ -0,0 +1,35 @@
1
+ import { assert, Listeners, UUID } from "@opendaw/lib-std";
2
+ export class BoxAdapterCollection {
3
+ #entries;
4
+ #listeners;
5
+ #subscription;
6
+ constructor(pointerHub, provider, pointers) {
7
+ this.#entries = UUID.newSet(adapter => adapter.uuid);
8
+ this.#listeners = new Listeners();
9
+ this.#subscription = pointerHub.catchupAndSubscribeTransactual({
10
+ onAdd: (pointer) => {
11
+ const adapter = provider(pointer.box);
12
+ const added = this.#entries.add(adapter);
13
+ assert(added, `Could not add ${adapter}`);
14
+ this.#listeners.proxy.onAdd(adapter);
15
+ },
16
+ onRemove: (pointer) => {
17
+ const uuid = pointer.box.address.uuid;
18
+ this.#listeners.proxy.onRemove(this.#entries.removeByKey(uuid));
19
+ }
20
+ }, pointers);
21
+ }
22
+ subscribe(listener) { return this.#listeners.subscribe(listener); }
23
+ catchupAndSubscribe(listener) {
24
+ this.#entries.forEach(adapter => listener.onAdd(adapter));
25
+ return this.subscribe(listener);
26
+ }
27
+ adapters() { return this.#entries.values(); }
28
+ size() { return this.#entries.size(); }
29
+ isEmpty() { return this.size() === 0; }
30
+ terminate() {
31
+ this.#entries.clear();
32
+ this.#listeners.terminate();
33
+ this.#subscription.terminate();
34
+ }
35
+ }
@@ -0,0 +1,11 @@
1
+ import { AssertType, Class, Terminable } from "@opendaw/lib-std";
2
+ import { Box } from "@opendaw/lib-box";
3
+ import { BoxAdaptersContext } from "./BoxAdaptersContext";
4
+ import { BoxAdapter } from "./BoxAdapter";
5
+ export declare class BoxAdapters implements Terminable {
6
+ #private;
7
+ constructor(context: BoxAdaptersContext);
8
+ terminate(): void;
9
+ adapterFor<BOX extends Box, T extends BoxAdapter>(box: BOX, checkType: Class<T> | AssertType<T>): T;
10
+ }
11
+ //# sourceMappingURL=BoxAdapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoxAdapters.d.ts","sourceRoot":"","sources":["../src/BoxAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,UAAU,EAAE,KAAK,EAA6C,UAAU,EAAO,MAAM,kBAAkB,CAAA;AAClI,OAAO,EAAC,GAAG,EAAS,MAAM,kBAAkB,CAAA;AAwF5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAIvC,qBAAa,WAAY,YAAW,UAAU;;gBAO9B,OAAO,EAAE,kBAAkB;IAkBvC,SAAS,IAAI,IAAI;IAMjB,UAAU,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;CA8DtG"}
@@ -0,0 +1,129 @@
1
+ import { asDefined, assert, isDefined, panic, UUID } from "@opendaw/lib-std";
2
+ import { AudioUnitBoxAdapter } from "./audio-unit/AudioUnitBoxAdapter";
3
+ import { DelayDeviceBoxAdapter } from "./devices/audio-effects/DelayDeviceBoxAdapter";
4
+ import { ReverbDeviceBoxAdapter } from "./devices/audio-effects/ReverbDeviceBoxAdapter";
5
+ import { RevampDeviceBoxAdapter } from "./devices/audio-effects/RevampDeviceBoxAdapter";
6
+ import { AudioFileBoxAdapter } from "./AudioFileBoxAdapter";
7
+ import { AudioRegionBoxAdapter } from "./timeline/region/AudioRegionBoxAdapter";
8
+ import { TimelineBoxAdapter } from "./timeline/TimelineBoxAdapter";
9
+ import { MarkerBoxAdapter } from "./timeline/MarkerBoxAdapter";
10
+ import { ModularAdapter } from "./modular/modular";
11
+ import { ModuleDelayAdapter } from "./modular/modules/delay";
12
+ import { ModuleMultiplierAdapter } from "./modular/modules/multiplier";
13
+ import { ModuleConnectionAdapter } from "./modular/connection";
14
+ import { ModularAudioOutputAdapter } from "./modular/modules/audio-output";
15
+ import { ModularAudioInputAdapter } from "./modular/modules/audio-input";
16
+ import { ModularDeviceBoxAdapter } from "./devices/audio-effects/ModularDeviceBoxAdapter";
17
+ import { DeviceInterfaceKnobAdapter } from "./modular/user-interface";
18
+ import { ModuleGainAdapter } from "./modular/modules/gain";
19
+ import { AudioBusBoxAdapter } from "./audio-unit/AudioBusBoxAdapter";
20
+ import { AuxSendBoxAdapter } from "./audio-unit/AuxSendBoxAdapter";
21
+ import { RootBoxAdapter } from "./RootBoxAdapter";
22
+ import { NoteEventBoxAdapter } from "./timeline/event/NoteEventBoxAdapter";
23
+ import { NoteRegionBoxAdapter } from "./timeline/region/NoteRegionBoxAdapter";
24
+ import { NoteEventCollectionBoxAdapter } from "./timeline/collection/NoteEventCollectionBoxAdapter";
25
+ import { ValueEventBoxAdapter } from "./timeline/event/ValueEventBoxAdapter";
26
+ import { ValueRegionBoxAdapter } from "./timeline/region/ValueRegionBoxAdapter";
27
+ import { ValueEventCollectionBoxAdapter } from "./timeline/collection/ValueEventCollectionBoxAdapter";
28
+ import { NoteClipBoxAdapter } from "./timeline/clip/NoteClipBoxAdapter";
29
+ import { AudioClipBoxAdapter } from "./timeline/clip/AudioClipBoxAdapter";
30
+ import { ValueClipBoxAdapter } from "./timeline/clip/ValueClipBoxAdapter";
31
+ import { TrackBoxAdapter } from "./timeline/TrackBoxAdapter";
32
+ import { TapeDeviceBoxAdapter } from "./devices/instruments/TapeDeviceBoxAdapter";
33
+ import { VaporisateurDeviceBoxAdapter } from "./devices/instruments/VaporisateurDeviceBoxAdapter";
34
+ import { ArpeggioDeviceBoxAdapter } from "./devices/midi-effects/ArpeggioDeviceBoxAdapter";
35
+ import { PitchDeviceBoxAdapter } from "./devices/midi-effects/PitchDeviceBoxAdapter";
36
+ import { NanoDeviceBoxAdapter } from "./devices/instruments/NanoDeviceBoxAdapter";
37
+ import { PlayfieldDeviceBoxAdapter } from "./devices/instruments/PlayfieldDeviceBoxAdapter";
38
+ import { StereoToolDeviceBoxAdapter } from "./devices/audio-effects/StereoToolDeviceBoxAdapter";
39
+ import { PlayfieldSampleBoxAdapter } from "./devices/instruments/Playfield/PlayfieldSampleBoxAdapter";
40
+ import { ZeitgeistDeviceBoxAdapter } from "./devices/midi-effects/ZeitgeistDeviceBoxAdapter";
41
+ import { GrooveShuffleBoxAdapter } from "./grooves/GrooveShuffleBoxAdapter";
42
+ export class BoxAdapters {
43
+ #context;
44
+ #adapters;
45
+ #deleted;
46
+ #terminable;
47
+ constructor(context) {
48
+ this.#context = context;
49
+ this.#adapters = UUID.newSet(adapter => adapter.uuid);
50
+ this.#deleted = new Set();
51
+ this.#terminable = this.#context.boxGraph.subscribeToAllUpdates({
52
+ onUpdate: (update) => {
53
+ if (update.type === "delete") {
54
+ const adapter = this.#adapters.getOrNull(update.uuid);
55
+ if (isDefined(adapter)) {
56
+ this.#deleted.add(adapter.box);
57
+ this.#adapters.removeByValue(adapter).terminate();
58
+ }
59
+ }
60
+ }
61
+ });
62
+ }
63
+ terminate() {
64
+ this.#adapters.values().forEach(adapter => adapter.terminate());
65
+ this.#adapters.clear();
66
+ this.#terminable.terminate();
67
+ }
68
+ adapterFor(box, checkType) {
69
+ if (this.#deleted.has(box)) {
70
+ return panic(`Cannot resolve adapter for already deleted box: ${box}`);
71
+ }
72
+ let adapter = this.#adapters.getOrNull(box.address.uuid);
73
+ if (adapter === null) {
74
+ adapter = this.#create(box);
75
+ const added = this.#adapters.add(adapter);
76
+ assert(added, `Could not add adapter for ${box}`);
77
+ }
78
+ if (typeof checkType === "function") {
79
+ return Object.hasOwn(checkType, "prototype")
80
+ ? adapter instanceof checkType ? adapter : panic(`${adapter} is not instance of ${checkType}`)
81
+ : checkType(adapter) ? adapter : panic(`${adapter} did not pass custom type guard`);
82
+ }
83
+ return panic("Unknown checkType method");
84
+ }
85
+ #create(unknownBox) {
86
+ return asDefined(unknownBox.accept({
87
+ visitRootBox: (box) => new RootBoxAdapter(this.#context, box),
88
+ visitArpeggioDeviceBox: (box) => new ArpeggioDeviceBoxAdapter(this.#context, box),
89
+ visitPitchDeviceBox: (box) => new PitchDeviceBoxAdapter(this.#context, box),
90
+ visitStereoToolDeviceBox: (box) => new StereoToolDeviceBoxAdapter(this.#context, box),
91
+ visitDelayDeviceBox: (box) => new DelayDeviceBoxAdapter(this.#context, box),
92
+ visitReverbDeviceBox: (box) => new ReverbDeviceBoxAdapter(this.#context, box),
93
+ visitRevampDeviceBox: (box) => new RevampDeviceBoxAdapter(this.#context, box),
94
+ visitPlayfieldDeviceBox: (box) => new PlayfieldDeviceBoxAdapter(this.#context, box),
95
+ visitPlayfieldSampleBox: (box) => new PlayfieldSampleBoxAdapter(this.#context, box),
96
+ visitModularDeviceBox: (box) => new ModularDeviceBoxAdapter(this.#context, box),
97
+ visitTapeDeviceBox: (box) => new TapeDeviceBoxAdapter(this.#context, box),
98
+ visitNanoDeviceBox: (box) => new NanoDeviceBoxAdapter(this.#context, box),
99
+ visitVaporisateurDeviceBox: (box) => new VaporisateurDeviceBoxAdapter(this.#context, box),
100
+ visitModularBox: (box) => new ModularAdapter(this.#context, box),
101
+ visitModuleConnectionBox: (box) => new ModuleConnectionAdapter(this.#context, box),
102
+ visitModuleDelayBox: (box) => new ModuleDelayAdapter(this.#context, box),
103
+ visitModuleGainBox: (box) => new ModuleGainAdapter(this.#context, box),
104
+ visitModuleMultiplierBox: (box) => new ModuleMultiplierAdapter(this.#context, box),
105
+ visitModularAudioInputBox: (box) => new ModularAudioInputAdapter(this.#context, box),
106
+ visitModularAudioOutputBox: (box) => new ModularAudioOutputAdapter(this.#context, box),
107
+ visitDeviceInterfaceKnobBox: (box) => new DeviceInterfaceKnobAdapter(this.#context, box),
108
+ visitAudioUnitBox: (box) => new AudioUnitBoxAdapter(this.#context, box),
109
+ visitAudioBusBox: (box) => new AudioBusBoxAdapter(this.#context, box),
110
+ visitAuxSendBox: (box) => new AuxSendBoxAdapter(this.#context, box),
111
+ visitAudioFileBox: (box) => new AudioFileBoxAdapter(this.#context, box),
112
+ visitAudioClipBox: (box) => new AudioClipBoxAdapter(this.#context, box),
113
+ visitAudioRegionBox: (box) => new AudioRegionBoxAdapter(this.#context, box),
114
+ visitNoteEventBox: (box) => new NoteEventBoxAdapter(this.#context, box),
115
+ visitNoteEventCollectionBox: (box) => new NoteEventCollectionBoxAdapter(this.#context, box),
116
+ visitNoteClipBox: (box) => new NoteClipBoxAdapter(this.#context, box),
117
+ visitNoteRegionBox: (box) => new NoteRegionBoxAdapter(this.#context, box),
118
+ visitValueEventBox: (box) => new ValueEventBoxAdapter(this.#context, box),
119
+ visitValueEventCollectionBox: (box) => new ValueEventCollectionBoxAdapter(this.#context, box),
120
+ visitValueClipBox: (box) => new ValueClipBoxAdapter(this.#context, box),
121
+ visitValueRegionBox: (box) => new ValueRegionBoxAdapter(this.#context, box),
122
+ visitTrackBox: (box) => new TrackBoxAdapter(this.#context, box),
123
+ visitTimelineBox: (box) => new TimelineBoxAdapter(this.#context, box),
124
+ visitMarkerBox: (box) => new MarkerBoxAdapter(this.#context, box),
125
+ visitZeitgeistDeviceBox: (box) => new ZeitgeistDeviceBoxAdapter(this.#context, box),
126
+ visitGrooveShuffleBox: (box) => new GrooveShuffleBoxAdapter(this.#context, box)
127
+ }), `Could not find factory for ${unknownBox}`);
128
+ }
129
+ }
@@ -0,0 +1,24 @@
1
+ import { Terminable } from "@opendaw/lib-std";
2
+ import { BoxGraph } from "@opendaw/lib-box";
3
+ import { LiveStreamBroadcaster, LiveStreamReceiver } from "@opendaw/lib-fusion";
4
+ import { AudioLoaderManager } from "./AudioLoader";
5
+ import { RootBoxAdapter } from "./RootBoxAdapter";
6
+ import { TimelineBoxAdapter } from "./timeline/TimelineBoxAdapter";
7
+ import { ClipSequencing } from "./ClipSequencing";
8
+ import { ParameterFieldAdapters } from "./ParameterFieldAdapters";
9
+ import { BoxAdapters } from "./BoxAdapters";
10
+ export interface BoxAdaptersContext extends Terminable {
11
+ get boxGraph(): BoxGraph;
12
+ get boxAdapters(): BoxAdapters;
13
+ get audioManager(): AudioLoaderManager;
14
+ get rootBoxAdapter(): RootBoxAdapter;
15
+ get timelineBoxAdapter(): TimelineBoxAdapter;
16
+ get liveStreamReceiver(): LiveStreamReceiver;
17
+ get liveStreamBroadcaster(): LiveStreamBroadcaster;
18
+ get clipSequencing(): ClipSequencing;
19
+ get parameterFieldAdapters(): ParameterFieldAdapters;
20
+ get bpm(): number;
21
+ get isMainThread(): boolean;
22
+ get isAudioContext(): boolean;
23
+ }
24
+ //# sourceMappingURL=BoxAdaptersContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoxAdaptersContext.d.ts","sourceRoot":"","sources":["../src/BoxAdaptersContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAA;AAChD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AAEzC,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IAClD,IAAI,QAAQ,IAAI,QAAQ,CAAA;IACxB,IAAI,WAAW,IAAI,WAAW,CAAA;IAC9B,IAAI,YAAY,IAAI,kBAAkB,CAAA;IACtC,IAAI,cAAc,IAAI,cAAc,CAAA;IACpC,IAAI,kBAAkB,IAAI,kBAAkB,CAAA;IAC5C,IAAI,kBAAkB,IAAI,kBAAkB,CAAA;IAC5C,IAAI,qBAAqB,IAAI,qBAAqB,CAAA;IAClD,IAAI,cAAc,IAAI,cAAc,CAAA;IACpC,IAAI,sBAAsB,IAAI,sBAAsB,CAAA;IACpD,IAAI,GAAG,IAAI,MAAM,CAAA;IACjB,IAAI,YAAY,IAAI,OAAO,CAAA;IAC3B,IAAI,cAAc,IAAI,OAAO,CAAA;CAChC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import { UUID } from "@opendaw/lib-std";
2
+ export type ClipSequencingUpdates = {
3
+ started: ReadonlyArray<UUID.Format>;
4
+ stopped: ReadonlyArray<UUID.Format>;
5
+ obsolete: ReadonlyArray<UUID.Format>;
6
+ };
7
+ export type ClipNotification = {
8
+ type: "sequencing";
9
+ changes: ClipSequencingUpdates;
10
+ } | {
11
+ type: "waiting";
12
+ clips: ReadonlyArray<UUID.Format>;
13
+ };
14
+ //# sourceMappingURL=ClipNotifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClipNotifications.d.ts","sourceRoot":"","sources":["../src/ClipNotifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAErC,MAAM,MAAM,qBAAqB,GAAG;IAChC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,qBAAqB,CAAA;CACjC,GAAG;IACA,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;CACpC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import { Option, Terminable, UUID } from "@opendaw/lib-std";
2
+ import { ppqn } from "@opendaw/lib-dsp";
3
+ import { AnyClipBoxAdapter } from "./UnionAdapterTypes";
4
+ export type Section = {
5
+ optClip: Option<AnyClipBoxAdapter>;
6
+ sectionFrom: ppqn;
7
+ sectionTo: ppqn;
8
+ };
9
+ export interface ClipSequencing extends Terminable {
10
+ iterate(trackKey: UUID.Format, a: ppqn, b: ppqn): Generator<Section>;
11
+ }
12
+ //# sourceMappingURL=ClipSequencing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClipSequencing.d.ts","sourceRoot":"","sources":["../src/ClipSequencing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD,MAAM,MAAM,OAAO,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAClC,WAAW,EAAE,IAAI,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;CACvE"}
@@ -0,0 +1 @@
1
+ export {};