@drop-ai/core 0.2.0

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 (747) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +316 -0
  3. package/dist/actions/ActionRegistry.d.ts +33 -0
  4. package/dist/actions/ActionRegistry.d.ts.map +1 -0
  5. package/dist/actions/ActionRegistry.js +96 -0
  6. package/dist/actions/ActionRegistry.js.map +1 -0
  7. package/dist/actions/types.d.ts +31 -0
  8. package/dist/actions/types.d.ts.map +1 -0
  9. package/dist/actions/types.js +11 -0
  10. package/dist/actions/types.js.map +1 -0
  11. package/dist/analysis/TransientDetector.d.ts +28 -0
  12. package/dist/analysis/TransientDetector.d.ts.map +1 -0
  13. package/dist/analysis/TransientDetector.js +109 -0
  14. package/dist/analysis/TransientDetector.js.map +1 -0
  15. package/dist/audio/AudioEngine.d.ts +107 -0
  16. package/dist/audio/AudioEngine.d.ts.map +1 -0
  17. package/dist/audio/AudioEngine.js +798 -0
  18. package/dist/audio/AudioEngine.js.map +1 -0
  19. package/dist/audio/AudioProvider.d.ts +96 -0
  20. package/dist/audio/AudioProvider.d.ts.map +1 -0
  21. package/dist/audio/AudioProvider.js +2 -0
  22. package/dist/audio/AudioProvider.js.map +1 -0
  23. package/dist/audio/BufferPool.d.ts +92 -0
  24. package/dist/audio/BufferPool.d.ts.map +1 -0
  25. package/dist/audio/BufferPool.js +172 -0
  26. package/dist/audio/BufferPool.js.map +1 -0
  27. package/dist/audio/LoudnessUtils.d.ts +18 -0
  28. package/dist/audio/LoudnessUtils.d.ts.map +1 -0
  29. package/dist/audio/LoudnessUtils.js +91 -0
  30. package/dist/audio/LoudnessUtils.js.map +1 -0
  31. package/dist/audio/MeterUtils.d.ts +37 -0
  32. package/dist/audio/MeterUtils.d.ts.map +1 -0
  33. package/dist/audio/MeterUtils.js +71 -0
  34. package/dist/audio/MeterUtils.js.map +1 -0
  35. package/dist/audio/OfflineExporter.d.ts +48 -0
  36. package/dist/audio/OfflineExporter.d.ts.map +1 -0
  37. package/dist/audio/OfflineExporter.js +202 -0
  38. package/dist/audio/OfflineExporter.js.map +1 -0
  39. package/dist/audio/ProcessingGraph.d.ts +152 -0
  40. package/dist/audio/ProcessingGraph.d.ts.map +1 -0
  41. package/dist/audio/ProcessingGraph.js +360 -0
  42. package/dist/audio/ProcessingGraph.js.map +1 -0
  43. package/dist/audio/SourceCache.d.ts +124 -0
  44. package/dist/audio/SourceCache.d.ts.map +1 -0
  45. package/dist/audio/SourceCache.js +205 -0
  46. package/dist/audio/SourceCache.js.map +1 -0
  47. package/dist/audio/dto.d.ts +50 -0
  48. package/dist/audio/dto.d.ts.map +1 -0
  49. package/dist/audio/dto.js +2 -0
  50. package/dist/audio/dto.js.map +1 -0
  51. package/dist/audio/engine/PlaylistEngine.d.ts +19 -0
  52. package/dist/audio/engine/PlaylistEngine.d.ts.map +1 -0
  53. package/dist/audio/engine/PlaylistEngine.js +83 -0
  54. package/dist/audio/engine/PlaylistEngine.js.map +1 -0
  55. package/dist/automation/AutomationCurve.d.ts +61 -0
  56. package/dist/automation/AutomationCurve.d.ts.map +1 -0
  57. package/dist/automation/AutomationCurve.js +198 -0
  58. package/dist/automation/AutomationCurve.js.map +1 -0
  59. package/dist/automation/AutomationList.d.ts +185 -0
  60. package/dist/automation/AutomationList.d.ts.map +1 -0
  61. package/dist/automation/AutomationList.js +459 -0
  62. package/dist/automation/AutomationList.js.map +1 -0
  63. package/dist/automation/AutomationMode.d.ts +17 -0
  64. package/dist/automation/AutomationMode.d.ts.map +1 -0
  65. package/dist/automation/AutomationMode.js +18 -0
  66. package/dist/automation/AutomationMode.js.map +1 -0
  67. package/dist/automation/ParameterDescriptor.d.ts +65 -0
  68. package/dist/automation/ParameterDescriptor.d.ts.map +1 -0
  69. package/dist/automation/ParameterDescriptor.js +113 -0
  70. package/dist/automation/ParameterDescriptor.js.map +1 -0
  71. package/dist/automation/PointThinning.d.ts +14 -0
  72. package/dist/automation/PointThinning.d.ts.map +1 -0
  73. package/dist/automation/PointThinning.js +52 -0
  74. package/dist/automation/PointThinning.js.map +1 -0
  75. package/dist/automation/types.d.ts +14 -0
  76. package/dist/automation/types.d.ts.map +1 -0
  77. package/dist/automation/types.js +9 -0
  78. package/dist/automation/types.js.map +1 -0
  79. package/dist/commands/Command.d.ts +8 -0
  80. package/dist/commands/Command.d.ts.map +1 -0
  81. package/dist/commands/Command.js +2 -0
  82. package/dist/commands/Command.js.map +1 -0
  83. package/dist/commands/CommandExecutor.d.ts +36 -0
  84. package/dist/commands/CommandExecutor.d.ts.map +1 -0
  85. package/dist/commands/CommandExecutor.js +108 -0
  86. package/dist/commands/CommandExecutor.js.map +1 -0
  87. package/dist/commands/CommandHistory.d.ts +155 -0
  88. package/dist/commands/CommandHistory.d.ts.map +1 -0
  89. package/dist/commands/CommandHistory.js +316 -0
  90. package/dist/commands/CommandHistory.js.map +1 -0
  91. package/dist/commands/CommandRegistry.d.ts +110 -0
  92. package/dist/commands/CommandRegistry.d.ts.map +1 -0
  93. package/dist/commands/CommandRegistry.js +91 -0
  94. package/dist/commands/CommandRegistry.js.map +1 -0
  95. package/dist/commands/UndoTransaction.d.ts +54 -0
  96. package/dist/commands/UndoTransaction.d.ts.map +1 -0
  97. package/dist/commands/UndoTransaction.js +77 -0
  98. package/dist/commands/UndoTransaction.js.map +1 -0
  99. package/dist/commands/handlers/AutomationHandler.d.ts +14 -0
  100. package/dist/commands/handlers/AutomationHandler.d.ts.map +1 -0
  101. package/dist/commands/handlers/AutomationHandler.js +84 -0
  102. package/dist/commands/handlers/AutomationHandler.js.map +1 -0
  103. package/dist/commands/handlers/CommandHandler.d.ts +57 -0
  104. package/dist/commands/handlers/CommandHandler.d.ts.map +1 -0
  105. package/dist/commands/handlers/CommandHandler.js +22 -0
  106. package/dist/commands/handlers/CommandHandler.js.map +1 -0
  107. package/dist/commands/handlers/ExportHandler.d.ts +14 -0
  108. package/dist/commands/handlers/ExportHandler.d.ts.map +1 -0
  109. package/dist/commands/handlers/ExportHandler.js +166 -0
  110. package/dist/commands/handlers/ExportHandler.js.map +1 -0
  111. package/dist/commands/handlers/HistoryHandler.d.ts +29 -0
  112. package/dist/commands/handlers/HistoryHandler.d.ts.map +1 -0
  113. package/dist/commands/handlers/HistoryHandler.js +124 -0
  114. package/dist/commands/handlers/HistoryHandler.js.map +1 -0
  115. package/dist/commands/handlers/IOHandler.d.ts +14 -0
  116. package/dist/commands/handlers/IOHandler.d.ts.map +1 -0
  117. package/dist/commands/handlers/IOHandler.js +59 -0
  118. package/dist/commands/handlers/IOHandler.js.map +1 -0
  119. package/dist/commands/handlers/MarkerHandler.d.ts +13 -0
  120. package/dist/commands/handlers/MarkerHandler.d.ts.map +1 -0
  121. package/dist/commands/handlers/MarkerHandler.js +95 -0
  122. package/dist/commands/handlers/MarkerHandler.js.map +1 -0
  123. package/dist/commands/handlers/MidiHandler.d.ts +14 -0
  124. package/dist/commands/handlers/MidiHandler.d.ts.map +1 -0
  125. package/dist/commands/handlers/MidiHandler.js +153 -0
  126. package/dist/commands/handlers/MidiHandler.js.map +1 -0
  127. package/dist/commands/handlers/MixerSceneHandler.d.ts +12 -0
  128. package/dist/commands/handlers/MixerSceneHandler.d.ts.map +1 -0
  129. package/dist/commands/handlers/MixerSceneHandler.js +113 -0
  130. package/dist/commands/handlers/MixerSceneHandler.js.map +1 -0
  131. package/dist/commands/handlers/RangeHandler.d.ts +14 -0
  132. package/dist/commands/handlers/RangeHandler.d.ts.map +1 -0
  133. package/dist/commands/handlers/RangeHandler.js +108 -0
  134. package/dist/commands/handlers/RangeHandler.js.map +1 -0
  135. package/dist/commands/handlers/RegionHandler.d.ts +14 -0
  136. package/dist/commands/handlers/RegionHandler.d.ts.map +1 -0
  137. package/dist/commands/handlers/RegionHandler.js +313 -0
  138. package/dist/commands/handlers/RegionHandler.js.map +1 -0
  139. package/dist/commands/handlers/SendBusHandler.d.ts +14 -0
  140. package/dist/commands/handlers/SendBusHandler.d.ts.map +1 -0
  141. package/dist/commands/handlers/SendBusHandler.js +55 -0
  142. package/dist/commands/handlers/SendBusHandler.js.map +1 -0
  143. package/dist/commands/handlers/SessionHandler.d.ts +14 -0
  144. package/dist/commands/handlers/SessionHandler.d.ts.map +1 -0
  145. package/dist/commands/handlers/SessionHandler.js +80 -0
  146. package/dist/commands/handlers/SessionHandler.js.map +1 -0
  147. package/dist/commands/handlers/TrackGroupHandler.d.ts +18 -0
  148. package/dist/commands/handlers/TrackGroupHandler.d.ts.map +1 -0
  149. package/dist/commands/handlers/TrackGroupHandler.js +210 -0
  150. package/dist/commands/handlers/TrackGroupHandler.js.map +1 -0
  151. package/dist/commands/handlers/TrackHandler.d.ts +14 -0
  152. package/dist/commands/handlers/TrackHandler.d.ts.map +1 -0
  153. package/dist/commands/handlers/TrackHandler.js +241 -0
  154. package/dist/commands/handlers/TrackHandler.js.map +1 -0
  155. package/dist/commands/handlers/TransportHandler.d.ts +14 -0
  156. package/dist/commands/handlers/TransportHandler.d.ts.map +1 -0
  157. package/dist/commands/handlers/TransportHandler.js +117 -0
  158. package/dist/commands/handlers/TransportHandler.js.map +1 -0
  159. package/dist/commands/handlers/index.d.ts +18 -0
  160. package/dist/commands/handlers/index.d.ts.map +1 -0
  161. package/dist/commands/handlers/index.js +17 -0
  162. package/dist/commands/handlers/index.js.map +1 -0
  163. package/dist/commands/impl/AddAutomationPointCommand.d.ts +20 -0
  164. package/dist/commands/impl/AddAutomationPointCommand.d.ts.map +1 -0
  165. package/dist/commands/impl/AddAutomationPointCommand.js +45 -0
  166. package/dist/commands/impl/AddAutomationPointCommand.js.map +1 -0
  167. package/dist/commands/impl/AddAuxTrackCommand.d.ts +11 -0
  168. package/dist/commands/impl/AddAuxTrackCommand.d.ts.map +1 -0
  169. package/dist/commands/impl/AddAuxTrackCommand.js +23 -0
  170. package/dist/commands/impl/AddAuxTrackCommand.js.map +1 -0
  171. package/dist/commands/impl/AddBusTrackCommand.d.ts +11 -0
  172. package/dist/commands/impl/AddBusTrackCommand.d.ts.map +1 -0
  173. package/dist/commands/impl/AddBusTrackCommand.js +23 -0
  174. package/dist/commands/impl/AddBusTrackCommand.js.map +1 -0
  175. package/dist/commands/impl/AddMarkerCommand.d.ts +13 -0
  176. package/dist/commands/impl/AddMarkerCommand.d.ts.map +1 -0
  177. package/dist/commands/impl/AddMarkerCommand.js +25 -0
  178. package/dist/commands/impl/AddMarkerCommand.js.map +1 -0
  179. package/dist/commands/impl/AddMidiNoteCommand.d.ts +22 -0
  180. package/dist/commands/impl/AddMidiNoteCommand.d.ts.map +1 -0
  181. package/dist/commands/impl/AddMidiNoteCommand.js +45 -0
  182. package/dist/commands/impl/AddMidiNoteCommand.js.map +1 -0
  183. package/dist/commands/impl/AddPluginCommand.d.ts +19 -0
  184. package/dist/commands/impl/AddPluginCommand.d.ts.map +1 -0
  185. package/dist/commands/impl/AddPluginCommand.js +43 -0
  186. package/dist/commands/impl/AddPluginCommand.js.map +1 -0
  187. package/dist/commands/impl/AddRangeCommand.d.ts +19 -0
  188. package/dist/commands/impl/AddRangeCommand.d.ts.map +1 -0
  189. package/dist/commands/impl/AddRangeCommand.js +32 -0
  190. package/dist/commands/impl/AddRangeCommand.js.map +1 -0
  191. package/dist/commands/impl/AddRegionCommand.d.ts +19 -0
  192. package/dist/commands/impl/AddRegionCommand.d.ts.map +1 -0
  193. package/dist/commands/impl/AddRegionCommand.js +58 -0
  194. package/dist/commands/impl/AddRegionCommand.js.map +1 -0
  195. package/dist/commands/impl/AddSendBusCommand.d.ts +23 -0
  196. package/dist/commands/impl/AddSendBusCommand.d.ts.map +1 -0
  197. package/dist/commands/impl/AddSendBusCommand.js +30 -0
  198. package/dist/commands/impl/AddSendBusCommand.js.map +1 -0
  199. package/dist/commands/impl/AddSourceCommand.d.ts +12 -0
  200. package/dist/commands/impl/AddSourceCommand.d.ts.map +1 -0
  201. package/dist/commands/impl/AddSourceCommand.js +16 -0
  202. package/dist/commands/impl/AddSourceCommand.js.map +1 -0
  203. package/dist/commands/impl/AddTempoChangeCommand.d.ts +15 -0
  204. package/dist/commands/impl/AddTempoChangeCommand.d.ts.map +1 -0
  205. package/dist/commands/impl/AddTempoChangeCommand.js +45 -0
  206. package/dist/commands/impl/AddTempoChangeCommand.js.map +1 -0
  207. package/dist/commands/impl/AddTrackCommand.d.ts +13 -0
  208. package/dist/commands/impl/AddTrackCommand.d.ts.map +1 -0
  209. package/dist/commands/impl/AddTrackCommand.js +26 -0
  210. package/dist/commands/impl/AddTrackCommand.js.map +1 -0
  211. package/dist/commands/impl/ConnectIOCommand.d.ts +13 -0
  212. package/dist/commands/impl/ConnectIOCommand.d.ts.map +1 -0
  213. package/dist/commands/impl/ConnectIOCommand.js +31 -0
  214. package/dist/commands/impl/ConnectIOCommand.js.map +1 -0
  215. package/dist/commands/impl/CopyRegionCommand.d.ts +12 -0
  216. package/dist/commands/impl/CopyRegionCommand.d.ts.map +1 -0
  217. package/dist/commands/impl/CopyRegionCommand.js +42 -0
  218. package/dist/commands/impl/CopyRegionCommand.js.map +1 -0
  219. package/dist/commands/impl/DisconnectIOCommand.d.ts +13 -0
  220. package/dist/commands/impl/DisconnectIOCommand.d.ts.map +1 -0
  221. package/dist/commands/impl/DisconnectIOCommand.js +24 -0
  222. package/dist/commands/impl/DisconnectIOCommand.js.map +1 -0
  223. package/dist/commands/impl/DuplicateRegionCommand.d.ts +15 -0
  224. package/dist/commands/impl/DuplicateRegionCommand.d.ts.map +1 -0
  225. package/dist/commands/impl/DuplicateRegionCommand.js +49 -0
  226. package/dist/commands/impl/DuplicateRegionCommand.js.map +1 -0
  227. package/dist/commands/impl/ExportCommand.d.ts +17 -0
  228. package/dist/commands/impl/ExportCommand.d.ts.map +1 -0
  229. package/dist/commands/impl/ExportCommand.js +92 -0
  230. package/dist/commands/impl/ExportCommand.js.map +1 -0
  231. package/dist/commands/impl/FreezeTrackCommand.d.ts +25 -0
  232. package/dist/commands/impl/FreezeTrackCommand.d.ts.map +1 -0
  233. package/dist/commands/impl/FreezeTrackCommand.js +94 -0
  234. package/dist/commands/impl/FreezeTrackCommand.js.map +1 -0
  235. package/dist/commands/impl/GroupRegionsCommand.d.ts +15 -0
  236. package/dist/commands/impl/GroupRegionsCommand.d.ts.map +1 -0
  237. package/dist/commands/impl/GroupRegionsCommand.js +28 -0
  238. package/dist/commands/impl/GroupRegionsCommand.js.map +1 -0
  239. package/dist/commands/impl/LoadSessionCommand.d.ts +24 -0
  240. package/dist/commands/impl/LoadSessionCommand.d.ts.map +1 -0
  241. package/dist/commands/impl/LoadSessionCommand.js +77 -0
  242. package/dist/commands/impl/LoadSessionCommand.js.map +1 -0
  243. package/dist/commands/impl/LockRegionCommand.d.ts +16 -0
  244. package/dist/commands/impl/LockRegionCommand.d.ts.map +1 -0
  245. package/dist/commands/impl/LockRegionCommand.js +37 -0
  246. package/dist/commands/impl/LockRegionCommand.js.map +1 -0
  247. package/dist/commands/impl/MergeRegionsCommand.d.ts +19 -0
  248. package/dist/commands/impl/MergeRegionsCommand.d.ts.map +1 -0
  249. package/dist/commands/impl/MergeRegionsCommand.js +85 -0
  250. package/dist/commands/impl/MergeRegionsCommand.js.map +1 -0
  251. package/dist/commands/impl/MoveAutomationPointCommand.d.ts +20 -0
  252. package/dist/commands/impl/MoveAutomationPointCommand.d.ts.map +1 -0
  253. package/dist/commands/impl/MoveAutomationPointCommand.js +73 -0
  254. package/dist/commands/impl/MoveAutomationPointCommand.js.map +1 -0
  255. package/dist/commands/impl/MoveMarkerCommand.d.ts +13 -0
  256. package/dist/commands/impl/MoveMarkerCommand.d.ts.map +1 -0
  257. package/dist/commands/impl/MoveMarkerCommand.js +29 -0
  258. package/dist/commands/impl/MoveMarkerCommand.js.map +1 -0
  259. package/dist/commands/impl/MoveMidiNoteCommand.d.ts +20 -0
  260. package/dist/commands/impl/MoveMidiNoteCommand.d.ts.map +1 -0
  261. package/dist/commands/impl/MoveMidiNoteCommand.js +55 -0
  262. package/dist/commands/impl/MoveMidiNoteCommand.js.map +1 -0
  263. package/dist/commands/impl/MoveRegionCommand.d.ts +22 -0
  264. package/dist/commands/impl/MoveRegionCommand.d.ts.map +1 -0
  265. package/dist/commands/impl/MoveRegionCommand.js +148 -0
  266. package/dist/commands/impl/MoveRegionCommand.js.map +1 -0
  267. package/dist/commands/impl/NewSessionCommand.d.ts +17 -0
  268. package/dist/commands/impl/NewSessionCommand.d.ts.map +1 -0
  269. package/dist/commands/impl/NewSessionCommand.js +88 -0
  270. package/dist/commands/impl/NewSessionCommand.js.map +1 -0
  271. package/dist/commands/impl/NormalizeRegionCommand.d.ts +24 -0
  272. package/dist/commands/impl/NormalizeRegionCommand.d.ts.map +1 -0
  273. package/dist/commands/impl/NormalizeRegionCommand.js +60 -0
  274. package/dist/commands/impl/NormalizeRegionCommand.js.map +1 -0
  275. package/dist/commands/impl/PasteRegionCommand.d.ts +18 -0
  276. package/dist/commands/impl/PasteRegionCommand.d.ts.map +1 -0
  277. package/dist/commands/impl/PasteRegionCommand.js +66 -0
  278. package/dist/commands/impl/PasteRegionCommand.js.map +1 -0
  279. package/dist/commands/impl/RemoveAutomationPointCommand.d.ts +17 -0
  280. package/dist/commands/impl/RemoveAutomationPointCommand.d.ts.map +1 -0
  281. package/dist/commands/impl/RemoveAutomationPointCommand.js +69 -0
  282. package/dist/commands/impl/RemoveAutomationPointCommand.js.map +1 -0
  283. package/dist/commands/impl/RemoveMarkerCommand.d.ts +14 -0
  284. package/dist/commands/impl/RemoveMarkerCommand.d.ts.map +1 -0
  285. package/dist/commands/impl/RemoveMarkerCommand.js +32 -0
  286. package/dist/commands/impl/RemoveMarkerCommand.js.map +1 -0
  287. package/dist/commands/impl/RemoveMidiNoteCommand.d.ts +16 -0
  288. package/dist/commands/impl/RemoveMidiNoteCommand.d.ts.map +1 -0
  289. package/dist/commands/impl/RemoveMidiNoteCommand.js +38 -0
  290. package/dist/commands/impl/RemoveMidiNoteCommand.js.map +1 -0
  291. package/dist/commands/impl/RemovePluginCommand.d.ts +17 -0
  292. package/dist/commands/impl/RemovePluginCommand.d.ts.map +1 -0
  293. package/dist/commands/impl/RemovePluginCommand.js +55 -0
  294. package/dist/commands/impl/RemovePluginCommand.js.map +1 -0
  295. package/dist/commands/impl/RemoveRangeCommand.d.ts +15 -0
  296. package/dist/commands/impl/RemoveRangeCommand.d.ts.map +1 -0
  297. package/dist/commands/impl/RemoveRangeCommand.js +34 -0
  298. package/dist/commands/impl/RemoveRangeCommand.js.map +1 -0
  299. package/dist/commands/impl/RemoveRegionCommand.d.ts +17 -0
  300. package/dist/commands/impl/RemoveRegionCommand.d.ts.map +1 -0
  301. package/dist/commands/impl/RemoveRegionCommand.js +58 -0
  302. package/dist/commands/impl/RemoveRegionCommand.js.map +1 -0
  303. package/dist/commands/impl/RemoveSendBusCommand.d.ts +17 -0
  304. package/dist/commands/impl/RemoveSendBusCommand.d.ts.map +1 -0
  305. package/dist/commands/impl/RemoveSendBusCommand.js +34 -0
  306. package/dist/commands/impl/RemoveSendBusCommand.js.map +1 -0
  307. package/dist/commands/impl/RemoveTempoChangeCommand.d.ts +11 -0
  308. package/dist/commands/impl/RemoveTempoChangeCommand.d.ts.map +1 -0
  309. package/dist/commands/impl/RemoveTempoChangeCommand.js +32 -0
  310. package/dist/commands/impl/RemoveTempoChangeCommand.js.map +1 -0
  311. package/dist/commands/impl/RemoveTrackCommand.d.ts +11 -0
  312. package/dist/commands/impl/RemoveTrackCommand.d.ts.map +1 -0
  313. package/dist/commands/impl/RemoveTrackCommand.js +28 -0
  314. package/dist/commands/impl/RemoveTrackCommand.js.map +1 -0
  315. package/dist/commands/impl/ReorderTrackCommand.d.ts +15 -0
  316. package/dist/commands/impl/ReorderTrackCommand.d.ts.map +1 -0
  317. package/dist/commands/impl/ReorderTrackCommand.js +25 -0
  318. package/dist/commands/impl/ReorderTrackCommand.js.map +1 -0
  319. package/dist/commands/impl/ResizeRegionCommand.d.ts +18 -0
  320. package/dist/commands/impl/ResizeRegionCommand.d.ts.map +1 -0
  321. package/dist/commands/impl/ResizeRegionCommand.js +65 -0
  322. package/dist/commands/impl/ResizeRegionCommand.js.map +1 -0
  323. package/dist/commands/impl/ReverseRegionCommand.d.ts +22 -0
  324. package/dist/commands/impl/ReverseRegionCommand.d.ts.map +1 -0
  325. package/dist/commands/impl/ReverseRegionCommand.js +50 -0
  326. package/dist/commands/impl/ReverseRegionCommand.js.map +1 -0
  327. package/dist/commands/impl/SaveSessionCommand.d.ts +11 -0
  328. package/dist/commands/impl/SaveSessionCommand.d.ts.map +1 -0
  329. package/dist/commands/impl/SaveSessionCommand.js +33 -0
  330. package/dist/commands/impl/SaveSessionCommand.js.map +1 -0
  331. package/dist/commands/impl/SaveSnapshotCommand.d.ts +15 -0
  332. package/dist/commands/impl/SaveSnapshotCommand.d.ts.map +1 -0
  333. package/dist/commands/impl/SaveSnapshotCommand.js +34 -0
  334. package/dist/commands/impl/SaveSnapshotCommand.js.map +1 -0
  335. package/dist/commands/impl/SetGridCommand.d.ts +20 -0
  336. package/dist/commands/impl/SetGridCommand.d.ts.map +1 -0
  337. package/dist/commands/impl/SetGridCommand.js +35 -0
  338. package/dist/commands/impl/SetGridCommand.js.map +1 -0
  339. package/dist/commands/impl/SetLoopRangeCommand.d.ts +18 -0
  340. package/dist/commands/impl/SetLoopRangeCommand.d.ts.map +1 -0
  341. package/dist/commands/impl/SetLoopRangeCommand.js +44 -0
  342. package/dist/commands/impl/SetLoopRangeCommand.js.map +1 -0
  343. package/dist/commands/impl/SetPluginParameterCommand.d.ts +16 -0
  344. package/dist/commands/impl/SetPluginParameterCommand.d.ts.map +1 -0
  345. package/dist/commands/impl/SetPluginParameterCommand.js +49 -0
  346. package/dist/commands/impl/SetPluginParameterCommand.js.map +1 -0
  347. package/dist/commands/impl/SetPunchRangeCommand.d.ts +18 -0
  348. package/dist/commands/impl/SetPunchRangeCommand.d.ts.map +1 -0
  349. package/dist/commands/impl/SetPunchRangeCommand.js +42 -0
  350. package/dist/commands/impl/SetPunchRangeCommand.js.map +1 -0
  351. package/dist/commands/impl/SetRangeCommand.d.ts +27 -0
  352. package/dist/commands/impl/SetRangeCommand.d.ts.map +1 -0
  353. package/dist/commands/impl/SetRangeCommand.js +66 -0
  354. package/dist/commands/impl/SetRangeCommand.js.map +1 -0
  355. package/dist/commands/impl/SetRegionFadesCommand.d.ts +16 -0
  356. package/dist/commands/impl/SetRegionFadesCommand.d.ts.map +1 -0
  357. package/dist/commands/impl/SetRegionFadesCommand.js +46 -0
  358. package/dist/commands/impl/SetRegionFadesCommand.js.map +1 -0
  359. package/dist/commands/impl/SetRegionPlaybackRateCommand.d.ts +23 -0
  360. package/dist/commands/impl/SetRegionPlaybackRateCommand.d.ts.map +1 -0
  361. package/dist/commands/impl/SetRegionPlaybackRateCommand.js +46 -0
  362. package/dist/commands/impl/SetRegionPlaybackRateCommand.js.map +1 -0
  363. package/dist/commands/impl/SetRegionTimeDomainCommand.d.ts +16 -0
  364. package/dist/commands/impl/SetRegionTimeDomainCommand.d.ts.map +1 -0
  365. package/dist/commands/impl/SetRegionTimeDomainCommand.js +42 -0
  366. package/dist/commands/impl/SetRegionTimeDomainCommand.js.map +1 -0
  367. package/dist/commands/impl/SetSendLevelCommand.d.ts +18 -0
  368. package/dist/commands/impl/SetSendLevelCommand.d.ts.map +1 -0
  369. package/dist/commands/impl/SetSendLevelCommand.js +35 -0
  370. package/dist/commands/impl/SetSendLevelCommand.js.map +1 -0
  371. package/dist/commands/impl/SetTrackMuteCommand.d.ts +15 -0
  372. package/dist/commands/impl/SetTrackMuteCommand.d.ts.map +1 -0
  373. package/dist/commands/impl/SetTrackMuteCommand.js +29 -0
  374. package/dist/commands/impl/SetTrackMuteCommand.js.map +1 -0
  375. package/dist/commands/impl/SetTrackPanCommand.d.ts +15 -0
  376. package/dist/commands/impl/SetTrackPanCommand.d.ts.map +1 -0
  377. package/dist/commands/impl/SetTrackPanCommand.js +29 -0
  378. package/dist/commands/impl/SetTrackPanCommand.js.map +1 -0
  379. package/dist/commands/impl/SetTrackSoloCommand.d.ts +15 -0
  380. package/dist/commands/impl/SetTrackSoloCommand.d.ts.map +1 -0
  381. package/dist/commands/impl/SetTrackSoloCommand.js +29 -0
  382. package/dist/commands/impl/SetTrackSoloCommand.js.map +1 -0
  383. package/dist/commands/impl/SetTrackVolumeCommand.d.ts +15 -0
  384. package/dist/commands/impl/SetTrackVolumeCommand.d.ts.map +1 -0
  385. package/dist/commands/impl/SetTrackVolumeCommand.js +29 -0
  386. package/dist/commands/impl/SetTrackVolumeCommand.js.map +1 -0
  387. package/dist/commands/impl/SplitAtPlayheadCommand.d.ts +32 -0
  388. package/dist/commands/impl/SplitAtPlayheadCommand.d.ts.map +1 -0
  389. package/dist/commands/impl/SplitAtPlayheadCommand.js +100 -0
  390. package/dist/commands/impl/SplitAtPlayheadCommand.js.map +1 -0
  391. package/dist/commands/impl/SplitRegionCommand.d.ts +22 -0
  392. package/dist/commands/impl/SplitRegionCommand.d.ts.map +1 -0
  393. package/dist/commands/impl/SplitRegionCommand.js +69 -0
  394. package/dist/commands/impl/SplitRegionCommand.js.map +1 -0
  395. package/dist/commands/impl/StripSilenceCommand.d.ts +26 -0
  396. package/dist/commands/impl/StripSilenceCommand.d.ts.map +1 -0
  397. package/dist/commands/impl/StripSilenceCommand.js +83 -0
  398. package/dist/commands/impl/StripSilenceCommand.js.map +1 -0
  399. package/dist/commands/impl/TimeStretchRegionCommand.d.ts +28 -0
  400. package/dist/commands/impl/TimeStretchRegionCommand.d.ts.map +1 -0
  401. package/dist/commands/impl/TimeStretchRegionCommand.js +55 -0
  402. package/dist/commands/impl/TimeStretchRegionCommand.js.map +1 -0
  403. package/dist/commands/impl/ToggleLoopCommand.d.ts +12 -0
  404. package/dist/commands/impl/ToggleLoopCommand.d.ts.map +1 -0
  405. package/dist/commands/impl/ToggleLoopCommand.js +27 -0
  406. package/dist/commands/impl/ToggleLoopCommand.js.map +1 -0
  407. package/dist/commands/impl/TrimRegionCommand.d.ts +22 -0
  408. package/dist/commands/impl/TrimRegionCommand.d.ts.map +1 -0
  409. package/dist/commands/impl/TrimRegionCommand.js +92 -0
  410. package/dist/commands/impl/TrimRegionCommand.js.map +1 -0
  411. package/dist/commands/impl/UngroupRegionsCommand.d.ts +14 -0
  412. package/dist/commands/impl/UngroupRegionsCommand.d.ts.map +1 -0
  413. package/dist/commands/impl/UngroupRegionsCommand.js +28 -0
  414. package/dist/commands/impl/UngroupRegionsCommand.js.map +1 -0
  415. package/dist/commands/types.d.ts +1895 -0
  416. package/dist/commands/types.d.ts.map +1 -0
  417. package/dist/commands/types.js +1338 -0
  418. package/dist/commands/types.js.map +1 -0
  419. package/dist/domain/ABComparison.d.ts +33 -0
  420. package/dist/domain/ABComparison.d.ts.map +1 -0
  421. package/dist/domain/ABComparison.js +78 -0
  422. package/dist/domain/ABComparison.js.map +1 -0
  423. package/dist/domain/CDMarker.d.ts +36 -0
  424. package/dist/domain/CDMarker.d.ts.map +1 -0
  425. package/dist/domain/CDMarker.js +78 -0
  426. package/dist/domain/CDMarker.js.map +1 -0
  427. package/dist/domain/ClockMode.d.ts +19 -0
  428. package/dist/domain/ClockMode.d.ts.map +1 -0
  429. package/dist/domain/ClockMode.js +65 -0
  430. package/dist/domain/ClockMode.js.map +1 -0
  431. package/dist/domain/CrossfadeEngine.d.ts +27 -0
  432. package/dist/domain/CrossfadeEngine.d.ts.map +1 -0
  433. package/dist/domain/CrossfadeEngine.js +47 -0
  434. package/dist/domain/CrossfadeEngine.js.map +1 -0
  435. package/dist/domain/DragManager.d.ts +21 -0
  436. package/dist/domain/DragManager.d.ts.map +1 -0
  437. package/dist/domain/DragManager.js +37 -0
  438. package/dist/domain/DragManager.js.map +1 -0
  439. package/dist/domain/EditMode.d.ts +15 -0
  440. package/dist/domain/EditMode.d.ts.map +1 -0
  441. package/dist/domain/EditMode.js +16 -0
  442. package/dist/domain/EditMode.js.map +1 -0
  443. package/dist/domain/ExportConfig.d.ts +55 -0
  444. package/dist/domain/ExportConfig.d.ts.map +1 -0
  445. package/dist/domain/ExportConfig.js +115 -0
  446. package/dist/domain/ExportConfig.js.map +1 -0
  447. package/dist/domain/ExportStatus.d.ts +46 -0
  448. package/dist/domain/ExportStatus.d.ts.map +1 -0
  449. package/dist/domain/ExportStatus.js +113 -0
  450. package/dist/domain/ExportStatus.js.map +1 -0
  451. package/dist/domain/FadeEnvelope.d.ts +31 -0
  452. package/dist/domain/FadeEnvelope.d.ts.map +1 -0
  453. package/dist/domain/FadeEnvelope.js +44 -0
  454. package/dist/domain/FadeEnvelope.js.map +1 -0
  455. package/dist/domain/GridSettings.d.ts +99 -0
  456. package/dist/domain/GridSettings.d.ts.map +1 -0
  457. package/dist/domain/GridSettings.js +213 -0
  458. package/dist/domain/GridSettings.js.map +1 -0
  459. package/dist/domain/Marker.d.ts +31 -0
  460. package/dist/domain/Marker.d.ts.map +1 -0
  461. package/dist/domain/Marker.js +56 -0
  462. package/dist/domain/Marker.js.map +1 -0
  463. package/dist/domain/MeterData.d.ts +26 -0
  464. package/dist/domain/MeterData.d.ts.map +1 -0
  465. package/dist/domain/MeterData.js +2 -0
  466. package/dist/domain/MeterData.js.map +1 -0
  467. package/dist/domain/MeterType.d.ts +22 -0
  468. package/dist/domain/MeterType.d.ts.map +1 -0
  469. package/dist/domain/MeterType.js +24 -0
  470. package/dist/domain/MeterType.js.map +1 -0
  471. package/dist/domain/MidiClip.d.ts +56 -0
  472. package/dist/domain/MidiClip.d.ts.map +1 -0
  473. package/dist/domain/MidiClip.js +119 -0
  474. package/dist/domain/MidiClip.js.map +1 -0
  475. package/dist/domain/MidiNote.d.ts +38 -0
  476. package/dist/domain/MidiNote.d.ts.map +1 -0
  477. package/dist/domain/MidiNote.js +82 -0
  478. package/dist/domain/MidiNote.js.map +1 -0
  479. package/dist/domain/MidiRegion.d.ts +65 -0
  480. package/dist/domain/MidiRegion.d.ts.map +1 -0
  481. package/dist/domain/MidiRegion.js +123 -0
  482. package/dist/domain/MidiRegion.js.map +1 -0
  483. package/dist/domain/MixerScene.d.ts +62 -0
  484. package/dist/domain/MixerScene.d.ts.map +1 -0
  485. package/dist/domain/MixerScene.js +131 -0
  486. package/dist/domain/MixerScene.js.map +1 -0
  487. package/dist/domain/MonitorMode.d.ts +15 -0
  488. package/dist/domain/MonitorMode.d.ts.map +1 -0
  489. package/dist/domain/MonitorMode.js +16 -0
  490. package/dist/domain/MonitorMode.js.map +1 -0
  491. package/dist/domain/MouseMode.d.ts +25 -0
  492. package/dist/domain/MouseMode.d.ts.map +1 -0
  493. package/dist/domain/MouseMode.js +26 -0
  494. package/dist/domain/MouseMode.js.map +1 -0
  495. package/dist/domain/OverlapType.d.ts +18 -0
  496. package/dist/domain/OverlapType.d.ts.map +1 -0
  497. package/dist/domain/OverlapType.js +19 -0
  498. package/dist/domain/OverlapType.js.map +1 -0
  499. package/dist/domain/Playlist.d.ts +83 -0
  500. package/dist/domain/Playlist.d.ts.map +1 -0
  501. package/dist/domain/Playlist.js +205 -0
  502. package/dist/domain/Playlist.js.map +1 -0
  503. package/dist/domain/Range.d.ts +35 -0
  504. package/dist/domain/Range.d.ts.map +1 -0
  505. package/dist/domain/Range.js +59 -0
  506. package/dist/domain/Range.js.map +1 -0
  507. package/dist/domain/RecordMode.d.ts +13 -0
  508. package/dist/domain/RecordMode.d.ts.map +1 -0
  509. package/dist/domain/RecordMode.js +14 -0
  510. package/dist/domain/RecordMode.js.map +1 -0
  511. package/dist/domain/Region.d.ts +96 -0
  512. package/dist/domain/Region.d.ts.map +1 -0
  513. package/dist/domain/Region.js +219 -0
  514. package/dist/domain/Region.js.map +1 -0
  515. package/dist/domain/RegionClipboard.d.ts +56 -0
  516. package/dist/domain/RegionClipboard.d.ts.map +1 -0
  517. package/dist/domain/RegionClipboard.js +70 -0
  518. package/dist/domain/RegionClipboard.js.map +1 -0
  519. package/dist/domain/RegionGroup.d.ts +16 -0
  520. package/dist/domain/RegionGroup.d.ts.map +1 -0
  521. package/dist/domain/RegionGroup.js +36 -0
  522. package/dist/domain/RegionGroup.js.map +1 -0
  523. package/dist/domain/Route.d.ts +104 -0
  524. package/dist/domain/Route.d.ts.map +1 -0
  525. package/dist/domain/Route.js +192 -0
  526. package/dist/domain/Route.js.map +1 -0
  527. package/dist/domain/RulerType.d.ts +21 -0
  528. package/dist/domain/RulerType.d.ts.map +1 -0
  529. package/dist/domain/RulerType.js +22 -0
  530. package/dist/domain/RulerType.js.map +1 -0
  531. package/dist/domain/SelectionHistory.d.ts +38 -0
  532. package/dist/domain/SelectionHistory.d.ts.map +1 -0
  533. package/dist/domain/SelectionHistory.js +70 -0
  534. package/dist/domain/SelectionHistory.js.map +1 -0
  535. package/dist/domain/SendBus.d.ts +28 -0
  536. package/dist/domain/SendBus.d.ts.map +1 -0
  537. package/dist/domain/SendBus.js +43 -0
  538. package/dist/domain/SendBus.js.map +1 -0
  539. package/dist/domain/Session.d.ts +347 -0
  540. package/dist/domain/Session.d.ts.map +1 -0
  541. package/dist/domain/Session.js +965 -0
  542. package/dist/domain/Session.js.map +1 -0
  543. package/dist/domain/SidechainConfig.d.ts +51 -0
  544. package/dist/domain/SidechainConfig.d.ts.map +1 -0
  545. package/dist/domain/SidechainConfig.js +84 -0
  546. package/dist/domain/SidechainConfig.js.map +1 -0
  547. package/dist/domain/Source.d.ts +11 -0
  548. package/dist/domain/Source.d.ts.map +1 -0
  549. package/dist/domain/Source.js +11 -0
  550. package/dist/domain/Source.js.map +1 -0
  551. package/dist/domain/Take.d.ts +66 -0
  552. package/dist/domain/Take.d.ts.map +1 -0
  553. package/dist/domain/Take.js +106 -0
  554. package/dist/domain/Take.js.map +1 -0
  555. package/dist/domain/Track.d.ts +58 -0
  556. package/dist/domain/Track.d.ts.map +1 -0
  557. package/dist/domain/Track.js +124 -0
  558. package/dist/domain/Track.js.map +1 -0
  559. package/dist/domain/TrackGroup.d.ts +39 -0
  560. package/dist/domain/TrackGroup.d.ts.map +1 -0
  561. package/dist/domain/TrackGroup.js +86 -0
  562. package/dist/domain/TrackGroup.js.map +1 -0
  563. package/dist/domain/TransportFSM.d.ts +188 -0
  564. package/dist/domain/TransportFSM.d.ts.map +1 -0
  565. package/dist/domain/TransportFSM.js +412 -0
  566. package/dist/domain/TransportFSM.js.map +1 -0
  567. package/dist/domain/TransportMode.d.ts +23 -0
  568. package/dist/domain/TransportMode.d.ts.map +1 -0
  569. package/dist/domain/TransportMode.js +38 -0
  570. package/dist/domain/TransportMode.js.map +1 -0
  571. package/dist/domain/VCATrack.d.ts +48 -0
  572. package/dist/domain/VCATrack.d.ts.map +1 -0
  573. package/dist/domain/VCATrack.js +85 -0
  574. package/dist/domain/VCATrack.js.map +1 -0
  575. package/dist/domain/ZoomFocus.d.ts +21 -0
  576. package/dist/domain/ZoomFocus.d.ts.map +1 -0
  577. package/dist/domain/ZoomFocus.js +22 -0
  578. package/dist/domain/ZoomFocus.js.map +1 -0
  579. package/dist/domain/index.d.ts +11 -0
  580. package/dist/domain/index.d.ts.map +1 -0
  581. package/dist/domain/index.js +12 -0
  582. package/dist/domain/index.js.map +1 -0
  583. package/dist/domain/temporal/TempoMap.d.ts +68 -0
  584. package/dist/domain/temporal/TempoMap.d.ts.map +1 -0
  585. package/dist/domain/temporal/TempoMap.js +151 -0
  586. package/dist/domain/temporal/TempoMap.js.map +1 -0
  587. package/dist/domain/temporal/types.d.ts +34 -0
  588. package/dist/domain/temporal/types.d.ts.map +1 -0
  589. package/dist/domain/temporal/types.js +54 -0
  590. package/dist/domain/temporal/types.js.map +1 -0
  591. package/dist/domain/types.d.ts +26 -0
  592. package/dist/domain/types.d.ts.map +1 -0
  593. package/dist/domain/types.js +11 -0
  594. package/dist/domain/types.js.map +1 -0
  595. package/dist/errors/DAWErrors.d.ts +107 -0
  596. package/dist/errors/DAWErrors.d.ts.map +1 -0
  597. package/dist/errors/DAWErrors.js +159 -0
  598. package/dist/errors/DAWErrors.js.map +1 -0
  599. package/dist/index.d.ts +56 -0
  600. package/dist/index.d.ts.map +1 -0
  601. package/dist/index.js +59 -0
  602. package/dist/index.js.map +1 -0
  603. package/dist/lib/Signal.d.ts +28 -0
  604. package/dist/lib/Signal.d.ts.map +1 -0
  605. package/dist/lib/Signal.js +34 -0
  606. package/dist/lib/Signal.js.map +1 -0
  607. package/dist/midi/MidiInput.d.ts +61 -0
  608. package/dist/midi/MidiInput.d.ts.map +1 -0
  609. package/dist/midi/MidiInput.js +153 -0
  610. package/dist/midi/MidiInput.js.map +1 -0
  611. package/dist/plugins/AutomatableParameter.d.ts +28 -0
  612. package/dist/plugins/AutomatableParameter.d.ts.map +1 -0
  613. package/dist/plugins/AutomatableParameter.js +89 -0
  614. package/dist/plugins/AutomatableParameter.js.map +1 -0
  615. package/dist/plugins/Plugin.d.ts +31 -0
  616. package/dist/plugins/Plugin.d.ts.map +1 -0
  617. package/dist/plugins/Plugin.js +7 -0
  618. package/dist/plugins/Plugin.js.map +1 -0
  619. package/dist/plugins/PluginManager.d.ts +15 -0
  620. package/dist/plugins/PluginManager.d.ts.map +1 -0
  621. package/dist/plugins/PluginManager.js +199 -0
  622. package/dist/plugins/PluginManager.js.map +1 -0
  623. package/dist/plugins/PluginPreset.d.ts +50 -0
  624. package/dist/plugins/PluginPreset.d.ts.map +1 -0
  625. package/dist/plugins/PluginPreset.js +292 -0
  626. package/dist/plugins/PluginPreset.js.map +1 -0
  627. package/dist/plugins/impl/AutoPanPlugin.d.ts +28 -0
  628. package/dist/plugins/impl/AutoPanPlugin.d.ts.map +1 -0
  629. package/dist/plugins/impl/AutoPanPlugin.js +48 -0
  630. package/dist/plugins/impl/AutoPanPlugin.js.map +1 -0
  631. package/dist/plugins/impl/ConvolutionReverbPlugin.d.ts +35 -0
  632. package/dist/plugins/impl/ConvolutionReverbPlugin.d.ts.map +1 -0
  633. package/dist/plugins/impl/ConvolutionReverbPlugin.js +65 -0
  634. package/dist/plugins/impl/ConvolutionReverbPlugin.js.map +1 -0
  635. package/dist/plugins/impl/DeEsserPlugin.d.ts +35 -0
  636. package/dist/plugins/impl/DeEsserPlugin.d.ts.map +1 -0
  637. package/dist/plugins/impl/DeEsserPlugin.js +87 -0
  638. package/dist/plugins/impl/DeEsserPlugin.js.map +1 -0
  639. package/dist/plugins/impl/ExpanderPlugin.d.ts +42 -0
  640. package/dist/plugins/impl/ExpanderPlugin.d.ts.map +1 -0
  641. package/dist/plugins/impl/ExpanderPlugin.js +105 -0
  642. package/dist/plugins/impl/ExpanderPlugin.js.map +1 -0
  643. package/dist/plugins/impl/GenericPlugin.d.ts +20 -0
  644. package/dist/plugins/impl/GenericPlugin.d.ts.map +1 -0
  645. package/dist/plugins/impl/GenericPlugin.js +37 -0
  646. package/dist/plugins/impl/GenericPlugin.js.map +1 -0
  647. package/dist/plugins/impl/MultibandCompressorPlugin.d.ts +33 -0
  648. package/dist/plugins/impl/MultibandCompressorPlugin.d.ts.map +1 -0
  649. package/dist/plugins/impl/MultibandCompressorPlugin.js +169 -0
  650. package/dist/plugins/impl/MultibandCompressorPlugin.js.map +1 -0
  651. package/dist/plugins/impl/ParametricEQPlugin.d.ts +25 -0
  652. package/dist/plugins/impl/ParametricEQPlugin.d.ts.map +1 -0
  653. package/dist/plugins/impl/ParametricEQPlugin.js +79 -0
  654. package/dist/plugins/impl/ParametricEQPlugin.js.map +1 -0
  655. package/dist/plugins/impl/PhaserPlugin.d.ts +29 -0
  656. package/dist/plugins/impl/PhaserPlugin.d.ts.map +1 -0
  657. package/dist/plugins/impl/PhaserPlugin.js +50 -0
  658. package/dist/plugins/impl/PhaserPlugin.js.map +1 -0
  659. package/dist/plugins/impl/SyncDelayPlugin.d.ts +52 -0
  660. package/dist/plugins/impl/SyncDelayPlugin.d.ts.map +1 -0
  661. package/dist/plugins/impl/SyncDelayPlugin.js +95 -0
  662. package/dist/plugins/impl/SyncDelayPlugin.js.map +1 -0
  663. package/dist/plugins/impl/TapeSaturationPlugin.d.ts +35 -0
  664. package/dist/plugins/impl/TapeSaturationPlugin.d.ts.map +1 -0
  665. package/dist/plugins/impl/TapeSaturationPlugin.js +87 -0
  666. package/dist/plugins/impl/TapeSaturationPlugin.js.map +1 -0
  667. package/dist/plugins/impl/TremoloPlugin.d.ts +29 -0
  668. package/dist/plugins/impl/TremoloPlugin.d.ts.map +1 -0
  669. package/dist/plugins/impl/TremoloPlugin.js +50 -0
  670. package/dist/plugins/impl/TremoloPlugin.js.map +1 -0
  671. package/dist/plugins/impl/VibratoPlugin.d.ts +28 -0
  672. package/dist/plugins/impl/VibratoPlugin.d.ts.map +1 -0
  673. package/dist/plugins/impl/VibratoPlugin.js +48 -0
  674. package/dist/plugins/impl/VibratoPlugin.js.map +1 -0
  675. package/dist/preferences/KeyBindings.d.ts +38 -0
  676. package/dist/preferences/KeyBindings.d.ts.map +1 -0
  677. package/dist/preferences/KeyBindings.js +83 -0
  678. package/dist/preferences/KeyBindings.js.map +1 -0
  679. package/dist/preferences/Preferences.d.ts +49 -0
  680. package/dist/preferences/Preferences.d.ts.map +1 -0
  681. package/dist/preferences/Preferences.js +93 -0
  682. package/dist/preferences/Preferences.js.map +1 -0
  683. package/dist/preferences/index.d.ts +4 -0
  684. package/dist/preferences/index.d.ts.map +1 -0
  685. package/dist/preferences/index.js +3 -0
  686. package/dist/preferences/index.js.map +1 -0
  687. package/dist/processing/GainProcessor.d.ts +10 -0
  688. package/dist/processing/GainProcessor.d.ts.map +1 -0
  689. package/dist/processing/GainProcessor.js +21 -0
  690. package/dist/processing/GainProcessor.js.map +1 -0
  691. package/dist/processing/IO.d.ts +15 -0
  692. package/dist/processing/IO.d.ts.map +1 -0
  693. package/dist/processing/IO.js +34 -0
  694. package/dist/processing/IO.js.map +1 -0
  695. package/dist/processing/MeterProcessor.d.ts +101 -0
  696. package/dist/processing/MeterProcessor.d.ts.map +1 -0
  697. package/dist/processing/MeterProcessor.js +195 -0
  698. package/dist/processing/MeterProcessor.js.map +1 -0
  699. package/dist/processing/PanProcessor.d.ts +15 -0
  700. package/dist/processing/PanProcessor.d.ts.map +1 -0
  701. package/dist/processing/PanProcessor.js +35 -0
  702. package/dist/processing/PanProcessor.js.map +1 -0
  703. package/dist/processing/PluginInsert.d.ts +9 -0
  704. package/dist/processing/PluginInsert.d.ts.map +1 -0
  705. package/dist/processing/PluginInsert.js +16 -0
  706. package/dist/processing/PluginInsert.js.map +1 -0
  707. package/dist/processing/PolarityProcessor.d.ts +25 -0
  708. package/dist/processing/PolarityProcessor.d.ts.map +1 -0
  709. package/dist/processing/PolarityProcessor.js +35 -0
  710. package/dist/processing/PolarityProcessor.js.map +1 -0
  711. package/dist/processing/Processor.d.ts +31 -0
  712. package/dist/processing/Processor.d.ts.map +1 -0
  713. package/dist/processing/Processor.js +45 -0
  714. package/dist/processing/Processor.js.map +1 -0
  715. package/dist/processing/SendProcessor.d.ts +55 -0
  716. package/dist/processing/SendProcessor.d.ts.map +1 -0
  717. package/dist/processing/SendProcessor.js +97 -0
  718. package/dist/processing/SendProcessor.js.map +1 -0
  719. package/dist/storage/AutoSave.d.ts +48 -0
  720. package/dist/storage/AutoSave.d.ts.map +1 -0
  721. package/dist/storage/AutoSave.js +108 -0
  722. package/dist/storage/AutoSave.js.map +1 -0
  723. package/dist/storage/SessionStorage.d.ts +74 -0
  724. package/dist/storage/SessionStorage.d.ts.map +1 -0
  725. package/dist/storage/SessionStorage.js +192 -0
  726. package/dist/storage/SessionStorage.js.map +1 -0
  727. package/dist/storage/SessionTemplate.d.ts +22 -0
  728. package/dist/storage/SessionTemplate.d.ts.map +1 -0
  729. package/dist/storage/SessionTemplate.js +77 -0
  730. package/dist/storage/SessionTemplate.js.map +1 -0
  731. package/dist/utils/AudioBufferToWav.d.ts +28 -0
  732. package/dist/utils/AudioBufferToWav.d.ts.map +1 -0
  733. package/dist/utils/AudioBufferToWav.js +110 -0
  734. package/dist/utils/AudioBufferToWav.js.map +1 -0
  735. package/dist/utils/DitherProcessor.d.ts +41 -0
  736. package/dist/utils/DitherProcessor.d.ts.map +1 -0
  737. package/dist/utils/DitherProcessor.js +78 -0
  738. package/dist/utils/DitherProcessor.js.map +1 -0
  739. package/dist/utils/FlacEncoder.d.ts +22 -0
  740. package/dist/utils/FlacEncoder.d.ts.map +1 -0
  741. package/dist/utils/FlacEncoder.js +196 -0
  742. package/dist/utils/FlacEncoder.js.map +1 -0
  743. package/dist/utils/OggEncoder.d.ts +40 -0
  744. package/dist/utils/OggEncoder.d.ts.map +1 -0
  745. package/dist/utils/OggEncoder.js +183 -0
  746. package/dist/utils/OggEncoder.js.map +1 -0
  747. package/package.json +67 -0
@@ -0,0 +1,205 @@
1
+ /**
2
+ * SourceCache — an LRU cache for decoded audio buffers keyed by source id.
3
+ *
4
+ * Inspired by Ardour's `SourceFactory` / `Source::DecodeCache`
5
+ * (`libs/ardour/source_factory.cc`).
6
+ *
7
+ * Large sessions can reference hundreds of audio files. Decoding them on
8
+ * demand is expensive, but keeping *every* decoded buffer in memory is not
9
+ * always feasible. `SourceCache` strikes a balance by caching up to a
10
+ * configurable memory limit and evicting least-recently-used entries when
11
+ * the limit is exceeded.
12
+ *
13
+ * This class has **no** external dependencies (no audio framework imports)
14
+ * and can be unit-tested in isolation.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const cache = new SourceCache(256); // 256 MB limit
19
+ *
20
+ * cache.set('kick.wav', decodedBuffer);
21
+ *
22
+ * const buf = cache.get('kick.wav'); // cache hit
23
+ * console.log(cache.getCacheHitRate()); // 1.0
24
+ * ```
25
+ *
26
+ * @module SourceCache
27
+ */
28
+ /**
29
+ * SourceCache provides an LRU (least-recently-used) cache for
30
+ * {@link AudioBuffer} instances, bounded by a configurable memory limit.
31
+ */
32
+ export class SourceCache {
33
+ /**
34
+ * @param maxMemoryMB - Maximum cache size in megabytes. Defaults to
35
+ * 512 MB.
36
+ */
37
+ constructor(maxMemoryMB = 512) {
38
+ /** Map of source id to cache entry. */
39
+ this.cache = new Map();
40
+ /** Running total of cached memory in bytes. */
41
+ this.currentMemoryBytes = 0;
42
+ // -- Statistics ---------------------------------------------------
43
+ /** Number of successful cache lookups. */
44
+ this.hits = 0;
45
+ /** Number of cache misses. */
46
+ this.misses = 0;
47
+ this.maxMemoryBytes = maxMemoryMB * 1024 * 1024;
48
+ }
49
+ // ---------------------------------------------------------------
50
+ // Core API
51
+ // ---------------------------------------------------------------
52
+ /**
53
+ * Retrieve a cached {@link AudioBuffer} by source id.
54
+ *
55
+ * On a hit the entry's `lastAccess` timestamp is refreshed so it is less
56
+ * likely to be evicted.
57
+ *
58
+ * @param sourceId - Unique identifier for the audio source.
59
+ * @returns The cached buffer, or `null` on a miss.
60
+ */
61
+ get(sourceId) {
62
+ const entry = this.cache.get(sourceId);
63
+ if (entry) {
64
+ entry.lastAccess = Date.now();
65
+ this.hits++;
66
+ return entry.buffer;
67
+ }
68
+ this.misses++;
69
+ return null;
70
+ }
71
+ /**
72
+ * Add or replace an {@link AudioBuffer} in the cache.
73
+ *
74
+ * If inserting the buffer would exceed the memory limit, LRU entries are
75
+ * evicted first. If the buffer itself is larger than the entire cache
76
+ * limit it is still stored (after evicting everything), allowing
77
+ * single-buffer lookups to work.
78
+ *
79
+ * @param sourceId - Unique identifier for the audio source.
80
+ * @param buffer - The decoded audio data to cache.
81
+ */
82
+ set(sourceId, buffer) {
83
+ // If this source is already cached, remove the old entry first
84
+ if (this.cache.has(sourceId)) {
85
+ this.remove(sourceId);
86
+ }
87
+ const sizeBytes = this.estimateBufferSize(buffer);
88
+ // Evict until there is room (or the cache is empty)
89
+ while (this.cache.size > 0 &&
90
+ this.currentMemoryBytes + sizeBytes > this.maxMemoryBytes) {
91
+ this.evictOne();
92
+ }
93
+ const entry = {
94
+ buffer,
95
+ lastAccess: Date.now(),
96
+ sizeBytes,
97
+ };
98
+ this.cache.set(sourceId, entry);
99
+ this.currentMemoryBytes += sizeBytes;
100
+ }
101
+ /**
102
+ * Check whether a source id is present in the cache without affecting
103
+ * access statistics or the LRU order.
104
+ *
105
+ * @param sourceId - The source id to look up.
106
+ */
107
+ has(sourceId) {
108
+ return this.cache.has(sourceId);
109
+ }
110
+ /**
111
+ * Explicitly remove a source from the cache.
112
+ *
113
+ * @param sourceId - The source id to remove.
114
+ */
115
+ remove(sourceId) {
116
+ const entry = this.cache.get(sourceId);
117
+ if (entry) {
118
+ this.currentMemoryBytes -= entry.sizeBytes;
119
+ this.cache.delete(sourceId);
120
+ }
121
+ }
122
+ // ---------------------------------------------------------------
123
+ // Eviction
124
+ // ---------------------------------------------------------------
125
+ /**
126
+ * Evict entries using LRU policy until the current memory usage is at or
127
+ * below the configured limit.
128
+ *
129
+ * This is called automatically by {@link set}, but can also be invoked
130
+ * manually (e.g. after reducing the memory limit at runtime).
131
+ */
132
+ evict() {
133
+ while (this.cache.size > 0 &&
134
+ this.currentMemoryBytes > this.maxMemoryBytes) {
135
+ this.evictOne();
136
+ }
137
+ }
138
+ /**
139
+ * Evict the single least-recently-used entry.
140
+ */
141
+ evictOne() {
142
+ let oldestId = null;
143
+ let oldestAccess = Infinity;
144
+ for (const [id, entry] of this.cache) {
145
+ if (entry.lastAccess < oldestAccess) {
146
+ oldestAccess = entry.lastAccess;
147
+ oldestId = id;
148
+ }
149
+ }
150
+ if (oldestId !== null) {
151
+ this.remove(oldestId);
152
+ }
153
+ }
154
+ // ---------------------------------------------------------------
155
+ // Statistics / diagnostics
156
+ // ---------------------------------------------------------------
157
+ /**
158
+ * Current memory usage in bytes.
159
+ */
160
+ getMemoryUsage() {
161
+ return this.currentMemoryBytes;
162
+ }
163
+ /**
164
+ * Current memory usage in megabytes.
165
+ */
166
+ getMemoryUsageMB() {
167
+ return this.currentMemoryBytes / (1024 * 1024);
168
+ }
169
+ /**
170
+ * Cache hit rate as a ratio `[0, 1]`.
171
+ *
172
+ * Returns `0` if no lookups have been performed yet.
173
+ */
174
+ getCacheHitRate() {
175
+ const total = this.hits + this.misses;
176
+ return total === 0 ? 0 : this.hits / total;
177
+ }
178
+ /**
179
+ * Number of entries currently in the cache.
180
+ */
181
+ get size() {
182
+ return this.cache.size;
183
+ }
184
+ /**
185
+ * Remove all entries from the cache and reset statistics.
186
+ */
187
+ clear() {
188
+ this.cache.clear();
189
+ this.currentMemoryBytes = 0;
190
+ this.hits = 0;
191
+ this.misses = 0;
192
+ }
193
+ // ---------------------------------------------------------------
194
+ // Internals
195
+ // ---------------------------------------------------------------
196
+ /**
197
+ * Estimate the memory footprint of a decoded {@link AudioBuffer}.
198
+ *
199
+ * Each channel is a `Float32Array` (4 bytes per sample).
200
+ */
201
+ estimateBufferSize(buffer) {
202
+ return buffer.numberOfChannels * buffer.length * Float32Array.BYTES_PER_ELEMENT;
203
+ }
204
+ }
205
+ //# sourceMappingURL=SourceCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceCache.js","sourceRoot":"","sources":["../../src/audio/SourceCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { RegionId, SourceId, FrameCount } from '../domain/types';
2
+ import { TimeDomain } from '../domain/temporal/types';
3
+ export interface RegionDTO {
4
+ id: RegionId;
5
+ sourceId: SourceId;
6
+ start: FrameCount;
7
+ length: FrameCount;
8
+ end: FrameCount;
9
+ sourceStart: FrameCount;
10
+ name: string;
11
+ gain: number;
12
+ muted: boolean;
13
+ layer: number;
14
+ fadeIn: FrameCount;
15
+ fadeOut: FrameCount;
16
+ playbackRate: number;
17
+ /** Pitch-preserving time stretch ratio (1.0 = normal) */
18
+ stretch: number;
19
+ /** Pitch shift in semitones (0 = no shift) */
20
+ pitchSemitones: number;
21
+ timeDomain: TimeDomain;
22
+ }
23
+ export interface TrackDTO {
24
+ id: string;
25
+ gain: number;
26
+ pan: number;
27
+ regions: RegionDTO[];
28
+ }
29
+ export interface MidiNoteDTO {
30
+ id: string;
31
+ pitch: number;
32
+ velocity: number;
33
+ startFrame: number;
34
+ durationFrames: number;
35
+ channel: number;
36
+ }
37
+ export interface MidiRegionDTO {
38
+ id: string;
39
+ name: string;
40
+ start: number;
41
+ length: number;
42
+ end: number;
43
+ muted: boolean;
44
+ notes: MidiNoteDTO[];
45
+ }
46
+ export interface AudioWorkletMessage {
47
+ type: string;
48
+ payload?: Record<string, unknown>;
49
+ }
50
+ //# sourceMappingURL=dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../src/audio/dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,QAAQ,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,UAAU,CAAC;IAChB,WAAW,EAAE,UAAU,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/audio/dto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { RegionDTO } from '../dto';
2
+ import { FrameCount } from '../../domain/types';
3
+ /** Fade curve shape, matching Ardour's fade types */
4
+ export declare const enum FadeCurve {
5
+ Linear = 0,
6
+ EqualPower = 1,
7
+ Exponential = 2
8
+ }
9
+ export declare class PlaylistEngine {
10
+ /**
11
+ * Renders a block of audio for a given set of regions.
12
+ * Higher-layer regions take priority — when regions overlap,
13
+ * only the top-most layer's audio is heard at each sample position.
14
+ * Fades are applied per-region before the layer priority check.
15
+ */
16
+ render(outputLeft: Float32Array, outputRight: Float32Array, startFrame: FrameCount, numFrames: FrameCount, regions: RegionDTO[], getBuffer: (url: string) => AudioBuffer | null): void;
17
+ private renderRegion;
18
+ }
19
+ //# sourceMappingURL=PlaylistEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistEngine.d.ts","sourceRoot":"","sources":["../../../src/audio/engine/PlaylistEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,qDAAqD;AACrD,0BAAkB,SAAS;IACvB,MAAM,IAAI;IACV,UAAU,IAAI;IACd,WAAW,IAAI;CAClB;AAED,qBAAa,cAAc;IACvB;;;;;OAKG;IACI,MAAM,CACT,UAAU,EAAE,YAAY,EACxB,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,SAAS,EAAE,EACpB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,GAC/C,IAAI;IAwBP,OAAO,CAAC,YAAY;CAqEvB"}
@@ -0,0 +1,83 @@
1
+ /** Fade curve shape, matching Ardour's fade types */
2
+ export var FadeCurve;
3
+ (function (FadeCurve) {
4
+ FadeCurve[FadeCurve["Linear"] = 0] = "Linear";
5
+ FadeCurve[FadeCurve["EqualPower"] = 1] = "EqualPower";
6
+ FadeCurve[FadeCurve["Exponential"] = 2] = "Exponential";
7
+ })(FadeCurve || (FadeCurve = {}));
8
+ export class PlaylistEngine {
9
+ /**
10
+ * Renders a block of audio for a given set of regions.
11
+ * Higher-layer regions take priority — when regions overlap,
12
+ * only the top-most layer's audio is heard at each sample position.
13
+ * Fades are applied per-region before the layer priority check.
14
+ */
15
+ render(outputLeft, outputRight, startFrame, numFrames, regions, getBuffer) {
16
+ // 1. Find active regions in this block
17
+ const endFrame = startFrame + numFrames;
18
+ const activeRegions = regions.filter(r => r.start < endFrame && r.end > startFrame && !r.muted);
19
+ // 2. Sort by layer descending (highest layer renders first, takes priority)
20
+ activeRegions.sort((a, b) => b.layer - a.layer);
21
+ // 3. Clear output
22
+ outputLeft.fill(0);
23
+ outputRight.fill(0);
24
+ // 4. Coverage mask: tracks which sample positions are already filled
25
+ // by a higher-layer region. Lower layers only write to uncovered positions.
26
+ const covered = new Uint8Array(numFrames);
27
+ // 5. Render each region (highest layer first)
28
+ for (const region of activeRegions) {
29
+ this.renderRegion(outputLeft, outputRight, startFrame, numFrames, region, getBuffer, covered);
30
+ }
31
+ }
32
+ renderRegion(outL, outR, startFrame, numFrames, region, getBuffer, covered) {
33
+ const buffer = getBuffer(region.sourceId);
34
+ if (!buffer)
35
+ return;
36
+ const bufferDataL = buffer.getChannelData(0);
37
+ const bufferDataR = buffer.numberOfChannels > 1 ? buffer.getChannelData(1) : bufferDataL;
38
+ const renderStart = Math.max(startFrame, region.start);
39
+ const renderEnd = Math.min(startFrame + numFrames, region.end);
40
+ const regionOffset = region.sourceStart + (renderStart - region.start);
41
+ const outOffset = renderStart - startFrame;
42
+ const length = renderEnd - renderStart;
43
+ const playbackRate = region.playbackRate || 1.0;
44
+ for (let i = 0; i < length; i++) {
45
+ const outIdx = outOffset + i;
46
+ // Skip positions already covered by a higher-layer region
47
+ if (covered[outIdx])
48
+ continue;
49
+ // With playbackRate, we need to resample
50
+ const sourcePosition = regionOffset + (i * playbackRate);
51
+ const sampleIdx = Math.floor(sourcePosition);
52
+ const frac = sourcePosition - sampleIdx;
53
+ if (sampleIdx >= bufferDataL.length - 1)
54
+ break;
55
+ // Linear interpolation for resampling
56
+ const sampleL0 = bufferDataL[sampleIdx];
57
+ const sampleL1 = bufferDataL[sampleIdx + 1];
58
+ const sampleR0 = bufferDataR[sampleIdx];
59
+ const sampleR1 = bufferDataR[sampleIdx + 1];
60
+ const interpolatedL = sampleL0 + (sampleL1 - sampleL0) * frac;
61
+ const interpolatedR = sampleR0 + (sampleR1 - sampleR0) * frac;
62
+ // Apply fade envelope
63
+ const currentPos = renderStart + i - region.start;
64
+ let fadeGain = 1.0;
65
+ if (region.fadeIn > 0 && currentPos < region.fadeIn) {
66
+ const t = currentPos / region.fadeIn;
67
+ fadeGain = Math.sqrt(t);
68
+ }
69
+ else if (region.fadeOut > 0 && currentPos >= region.length - region.fadeOut) {
70
+ const distFromEnd = region.length - currentPos;
71
+ const t = Math.max(0, distFromEnd / region.fadeOut);
72
+ fadeGain = Math.sqrt(t);
73
+ }
74
+ const gain = region.gain * fadeGain;
75
+ // Write to output (not additive — top layer wins)
76
+ outL[outIdx] = interpolatedL * gain;
77
+ outR[outIdx] = interpolatedR * gain;
78
+ // Mark this position as covered
79
+ covered[outIdx] = 1;
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=PlaylistEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistEngine.js","sourceRoot":"","sources":["../../../src/audio/engine/PlaylistEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { AutomationPoint } from './types';
2
+ /**
3
+ * Coefficients for a single cubic spline segment.
4
+ * The polynomial is: y = a + b*x + c*x^2 + d*x^3
5
+ * where x is the local offset from the segment start time.
6
+ */
7
+ export interface SplineCoefficients {
8
+ a: number;
9
+ b: number;
10
+ c: number;
11
+ d: number;
12
+ }
13
+ /**
14
+ * Provides interpolation between automation points, including a CJC Kruger
15
+ * constrained cubic spline algorithm that prevents overshoot.
16
+ */
17
+ export declare class AutomationCurve {
18
+ /** Cached spline coefficients, one per segment (points.length - 1). */
19
+ private _splineCoeffs;
20
+ /** The points array snapshot used to compute the current coefficients. */
21
+ private _splinePoints;
22
+ /**
23
+ * Calculates the interpolated value between two points at a given time.
24
+ * For non-spline interpolation types, this static method is sufficient.
25
+ * @param start The starting automation point
26
+ * @param end The ending automation point
27
+ * @param time The time to calculate the value for (must be between start.time and end.time)
28
+ * @param _curvature Optional tension/curvature parameter (not yet implemented fully)
29
+ */
30
+ static getValueAt(start: AutomationPoint, end: AutomationPoint, time: number, _curvature?: number): number;
31
+ /**
32
+ * Recomputes CJC Kruger constrained cubic spline coefficients for the
33
+ * given set of points. Must be called whenever points change if Curved
34
+ * interpolation is in use.
35
+ *
36
+ * The CJC Kruger variant constrains tangent slopes so that the spline
37
+ * is monotone between consecutive data points, preventing overshoot
38
+ * and oscillation artifacts common with natural cubic splines.
39
+ *
40
+ * @param points Sorted automation points array
41
+ */
42
+ computeSplineCoefficients(points: ReadonlyArray<AutomationPoint>): void;
43
+ /**
44
+ * Returns the spline-interpolated value at the given time.
45
+ * Falls back to the static getValueAt for non-Curved interpolation types.
46
+ *
47
+ * @param points The sorted automation points
48
+ * @param time The time to evaluate
49
+ * @returns The interpolated value, or null if no points exist
50
+ */
51
+ getValueAt(points: ReadonlyArray<AutomationPoint>, time: number): number | null;
52
+ /**
53
+ * Invalidates cached spline coefficients. Call this when points change.
54
+ */
55
+ invalidateSpline(): void;
56
+ /**
57
+ * Returns a copy of the current spline coefficients (for inspection/testing).
58
+ */
59
+ getSplineCoefficients(): ReadonlyArray<SplineCoefficients>;
60
+ }
61
+ //# sourceMappingURL=AutomationCurve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutomationCurve.d.ts","sourceRoot":"","sources":["../../src/automation/AutomationCurve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,qBAAa,eAAe;IACxB,uEAAuE;IACvE,OAAO,CAAC,aAAa,CAA4B;IACjD,0EAA0E;IAC1E,OAAO,CAAC,aAAa,CAAsC;IAE3D;;;;;;;OAOG;WACW,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAY,GAAG,MAAM;IAiCtH;;;;;;;;;;OAUG;IACI,yBAAyB,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI;IAwF9E;;;;;;;OAOG;IACI,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAyCtF;;OAEG;IACI,gBAAgB,IAAI,IAAI;IAK/B;;OAEG;IACI,qBAAqB,IAAI,aAAa,CAAC,kBAAkB,CAAC;CAGpE"}
@@ -0,0 +1,198 @@
1
+ import { InterpolationType } from './types';
2
+ /**
3
+ * Provides interpolation between automation points, including a CJC Kruger
4
+ * constrained cubic spline algorithm that prevents overshoot.
5
+ */
6
+ export class AutomationCurve {
7
+ constructor() {
8
+ /** Cached spline coefficients, one per segment (points.length - 1). */
9
+ this._splineCoeffs = [];
10
+ /** The points array snapshot used to compute the current coefficients. */
11
+ this._splinePoints = [];
12
+ }
13
+ /**
14
+ * Calculates the interpolated value between two points at a given time.
15
+ * For non-spline interpolation types, this static method is sufficient.
16
+ * @param start The starting automation point
17
+ * @param end The ending automation point
18
+ * @param time The time to calculate the value for (must be between start.time and end.time)
19
+ * @param _curvature Optional tension/curvature parameter (not yet implemented fully)
20
+ */
21
+ static getValueAt(start, end, time, _curvature = 0.5) {
22
+ if (time <= start.time)
23
+ return start.value;
24
+ if (time >= end.time)
25
+ return end.value;
26
+ // Normalized time (0 to 1)
27
+ const t = (time - start.time) / (end.time - start.time);
28
+ switch (start.interpolation) {
29
+ case InterpolationType.Hold:
30
+ return start.value;
31
+ case InterpolationType.Linear:
32
+ return start.value + t * (end.value - start.value);
33
+ case InterpolationType.Exponential:
34
+ // Safe geometric interpolation (fallback to linear if signs differ or zero)
35
+ if (start.value > 0.0001 && end.value > 0.0001) {
36
+ return start.value * Math.pow(end.value / start.value, t);
37
+ }
38
+ // Fallback to simpler curve: y = x^2 (slow start, fast end)
39
+ const curveT = t * t;
40
+ return start.value + curveT * (end.value - start.value);
41
+ case InterpolationType.Logarithmic:
42
+ // y = sqrt(x) (fast start, slow end)
43
+ const logT = Math.sqrt(t);
44
+ return start.value + logT * (end.value - start.value);
45
+ default:
46
+ return start.value + t * (end.value - start.value);
47
+ }
48
+ }
49
+ /**
50
+ * Recomputes CJC Kruger constrained cubic spline coefficients for the
51
+ * given set of points. Must be called whenever points change if Curved
52
+ * interpolation is in use.
53
+ *
54
+ * The CJC Kruger variant constrains tangent slopes so that the spline
55
+ * is monotone between consecutive data points, preventing overshoot
56
+ * and oscillation artifacts common with natural cubic splines.
57
+ *
58
+ * @param points Sorted automation points array
59
+ */
60
+ computeSplineCoefficients(points) {
61
+ this._splinePoints = points;
62
+ this._splineCoeffs = [];
63
+ const n = points.length;
64
+ if (n < 2)
65
+ return;
66
+ // Step 1: compute finite-difference slopes delta_k = (y_{k+1} - y_k) / (x_{k+1} - x_k)
67
+ const delta = new Array(n - 1);
68
+ for (let i = 0; i < n - 1; i++) {
69
+ const dx = points[i + 1].time - points[i].time;
70
+ delta[i] = dx === 0 ? 0 : (points[i + 1].value - points[i].value) / dx;
71
+ }
72
+ // Step 2: CJC Kruger constrained tangent slopes
73
+ // For interior points, use harmonic mean when signs agree, else 0.
74
+ // Boundary tangents use one-sided finite difference.
75
+ const m = new Array(n);
76
+ // Boundary slopes
77
+ m[0] = delta[0];
78
+ m[n - 1] = delta[n - 2];
79
+ for (let i = 1; i < n - 1; i++) {
80
+ if (delta[i - 1] * delta[i] <= 0) {
81
+ // Slopes have different signs or one is zero -> constrain to zero
82
+ m[i] = 0;
83
+ }
84
+ else {
85
+ // CJC Kruger: harmonic mean of adjacent slopes
86
+ m[i] = 2 / (1 / delta[i - 1] + 1 / delta[i]);
87
+ }
88
+ }
89
+ // Additional Kruger constraint: ensure monotonicity
90
+ // If delta[i] == 0, the tangents at both ends of that segment must be 0
91
+ for (let i = 0; i < n - 1; i++) {
92
+ if (delta[i] === 0) {
93
+ m[i] = 0;
94
+ m[i + 1] = 0;
95
+ }
96
+ }
97
+ // Clamp boundary slopes to prevent overshoot (Fritsch-Carlson style check)
98
+ for (let i = 0; i < n - 1; i++) {
99
+ if (delta[i] !== 0) {
100
+ const alpha = m[i] / delta[i];
101
+ const beta = m[i + 1] / delta[i];
102
+ // If the vector (alpha, beta) lies outside the circle of radius 3, scale it back
103
+ const mag = Math.sqrt(alpha * alpha + beta * beta);
104
+ if (mag > 3) {
105
+ const tau = 3 / mag;
106
+ m[i] = tau * alpha * delta[i];
107
+ m[i + 1] = tau * beta * delta[i];
108
+ }
109
+ }
110
+ }
111
+ // Step 3: compute cubic Hermite coefficients per segment
112
+ // Given segment from x_i to x_{i+1} with values y_i, y_{i+1} and slopes m_i, m_{i+1}:
113
+ // Using local variable x = (time - x_i), h = x_{i+1} - x_i
114
+ // Hermite basis -> polynomial coefficients a,b,c,d where y = a + b*x + c*x^2 + d*x^3
115
+ for (let i = 0; i < n - 1; i++) {
116
+ const h = points[i + 1].time - points[i].time;
117
+ const y0 = points[i].value;
118
+ const y1 = points[i + 1].value;
119
+ const m0 = m[i];
120
+ const m1 = m[i + 1];
121
+ if (h === 0) {
122
+ // Degenerate segment (coincident times)
123
+ this._splineCoeffs.push({ a: y0, b: 0, c: 0, d: 0 });
124
+ continue;
125
+ }
126
+ // Hermite to power basis conversion:
127
+ // a = y0
128
+ // b = m0
129
+ // c = (3*(y1-y0)/h - 2*m0 - m1) / h
130
+ // d = (2*(y0-y1)/h + m0 + m1) / h^2
131
+ const a = y0;
132
+ const b = m0;
133
+ const c = (3 * (y1 - y0) / h - 2 * m0 - m1) / h;
134
+ const d = (2 * (y0 - y1) / h + m0 + m1) / (h * h);
135
+ this._splineCoeffs.push({ a, b, c, d });
136
+ }
137
+ }
138
+ /**
139
+ * Returns the spline-interpolated value at the given time.
140
+ * Falls back to the static getValueAt for non-Curved interpolation types.
141
+ *
142
+ * @param points The sorted automation points
143
+ * @param time The time to evaluate
144
+ * @returns The interpolated value, or null if no points exist
145
+ */
146
+ getValueAt(points, time) {
147
+ const n = points.length;
148
+ if (n === 0)
149
+ return null;
150
+ if (time <= points[0].time)
151
+ return points[0].value;
152
+ if (time >= points[n - 1].time)
153
+ return points[n - 1].value;
154
+ // Find the segment containing `time` via binary search
155
+ let lo = 0;
156
+ let hi = n - 1;
157
+ while (lo < hi - 1) {
158
+ const mid = (lo + hi) >> 1;
159
+ if (points[mid].time <= time) {
160
+ lo = mid;
161
+ }
162
+ else {
163
+ hi = mid;
164
+ }
165
+ }
166
+ const start = points[lo];
167
+ const end = points[hi];
168
+ // For non-Curved types, delegate to the static method
169
+ if (start.interpolation !== InterpolationType.Curved) {
170
+ return AutomationCurve.getValueAt(start, end, time);
171
+ }
172
+ // Curved: use precomputed spline coefficients
173
+ if (this._splineCoeffs.length === 0 || this._splinePoints !== points) {
174
+ this.computeSplineCoefficients(points);
175
+ }
176
+ if (lo < this._splineCoeffs.length) {
177
+ const coeff = this._splineCoeffs[lo];
178
+ const x = time - start.time;
179
+ return coeff.a + coeff.b * x + coeff.c * x * x + coeff.d * x * x * x;
180
+ }
181
+ // Fallback
182
+ return AutomationCurve.getValueAt(start, end, time);
183
+ }
184
+ /**
185
+ * Invalidates cached spline coefficients. Call this when points change.
186
+ */
187
+ invalidateSpline() {
188
+ this._splineCoeffs = [];
189
+ this._splinePoints = [];
190
+ }
191
+ /**
192
+ * Returns a copy of the current spline coefficients (for inspection/testing).
193
+ */
194
+ getSplineCoefficients() {
195
+ return [...this._splineCoeffs];
196
+ }
197
+ }
198
+ //# sourceMappingURL=AutomationCurve.js.map