@drop-ai/core 0.2.0 → 0.3.1

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 (513) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +734 -316
  3. package/dist/actions/ActionRegistry.d.ts.map +1 -1
  4. package/dist/actions/ActionRegistry.js +7 -2
  5. package/dist/actions/ActionRegistry.js.map +1 -1
  6. package/dist/actions/types.d.ts +7 -1
  7. package/dist/actions/types.d.ts.map +1 -1
  8. package/dist/analysis/AudioAnalyzer.d.ts +69 -0
  9. package/dist/analysis/AudioAnalyzer.d.ts.map +1 -0
  10. package/dist/analysis/AudioAnalyzer.js +567 -0
  11. package/dist/analysis/AudioAnalyzer.js.map +1 -0
  12. package/dist/audio/AudioEngine.d.ts +14 -1
  13. package/dist/audio/AudioEngine.d.ts.map +1 -1
  14. package/dist/audio/AudioEngine.js +115 -35
  15. package/dist/audio/AudioEngine.js.map +1 -1
  16. package/dist/audio/Auditioner.d.ts +102 -0
  17. package/dist/audio/Auditioner.d.ts.map +1 -0
  18. package/dist/audio/Auditioner.js +237 -0
  19. package/dist/audio/Auditioner.js.map +1 -0
  20. package/dist/audio/BWFMetadata.d.ts +114 -0
  21. package/dist/audio/BWFMetadata.d.ts.map +1 -0
  22. package/dist/audio/BWFMetadata.js +392 -0
  23. package/dist/audio/BWFMetadata.js.map +1 -0
  24. package/dist/audio/BufferPool.d.ts +0 -3
  25. package/dist/audio/BufferPool.d.ts.map +1 -1
  26. package/dist/audio/BufferPool.js +0 -3
  27. package/dist/audio/BufferPool.js.map +1 -1
  28. package/dist/audio/ChannelSplitter.d.ts +36 -0
  29. package/dist/audio/ChannelSplitter.d.ts.map +1 -0
  30. package/dist/audio/ChannelSplitter.js +81 -0
  31. package/dist/audio/ChannelSplitter.js.map +1 -0
  32. package/dist/audio/ExportAnalyzer.d.ts +38 -0
  33. package/dist/audio/ExportAnalyzer.d.ts.map +1 -0
  34. package/dist/audio/ExportAnalyzer.js +75 -0
  35. package/dist/audio/ExportAnalyzer.js.map +1 -0
  36. package/dist/audio/LufsNormalizer.d.ts +36 -0
  37. package/dist/audio/LufsNormalizer.d.ts.map +1 -0
  38. package/dist/audio/LufsNormalizer.js +216 -0
  39. package/dist/audio/LufsNormalizer.js.map +1 -0
  40. package/dist/audio/MeterUtils.d.ts +0 -2
  41. package/dist/audio/MeterUtils.d.ts.map +1 -1
  42. package/dist/audio/MeterUtils.js +0 -2
  43. package/dist/audio/MeterUtils.js.map +1 -1
  44. package/dist/audio/OfflineExporter.d.ts +1 -7
  45. package/dist/audio/OfflineExporter.d.ts.map +1 -1
  46. package/dist/audio/OfflineExporter.js +31 -11
  47. package/dist/audio/OfflineExporter.js.map +1 -1
  48. package/dist/audio/ProcessingGraph.d.ts +0 -1
  49. package/dist/audio/ProcessingGraph.d.ts.map +1 -1
  50. package/dist/audio/ProcessingGraph.js +0 -1
  51. package/dist/audio/ProcessingGraph.js.map +1 -1
  52. package/dist/audio/RoutingGraph.d.ts +134 -0
  53. package/dist/audio/RoutingGraph.d.ts.map +1 -0
  54. package/dist/audio/RoutingGraph.js +547 -0
  55. package/dist/audio/RoutingGraph.js.map +1 -0
  56. package/dist/audio/SampleRateConverter.d.ts +20 -0
  57. package/dist/audio/SampleRateConverter.d.ts.map +1 -0
  58. package/dist/audio/SampleRateConverter.js +83 -0
  59. package/dist/audio/SampleRateConverter.js.map +1 -0
  60. package/dist/audio/SilencePadding.d.ts +27 -0
  61. package/dist/audio/SilencePadding.d.ts.map +1 -0
  62. package/dist/audio/SilencePadding.js +84 -0
  63. package/dist/audio/SilencePadding.js.map +1 -0
  64. package/dist/audio/SourceCache.d.ts +13 -19
  65. package/dist/audio/SourceCache.d.ts.map +1 -1
  66. package/dist/audio/SourceCache.js +21 -36
  67. package/dist/audio/SourceCache.js.map +1 -1
  68. package/dist/audio/engine/Declick.d.ts +97 -0
  69. package/dist/audio/engine/Declick.d.ts.map +1 -0
  70. package/dist/audio/engine/Declick.js +203 -0
  71. package/dist/audio/engine/Declick.js.map +1 -0
  72. package/dist/audio/engine/DiskIO.d.ts +170 -0
  73. package/dist/audio/engine/DiskIO.d.ts.map +1 -0
  74. package/dist/audio/engine/DiskIO.js +382 -0
  75. package/dist/audio/engine/DiskIO.js.map +1 -0
  76. package/dist/audio/engine/LatencyCompensator.d.ts +46 -0
  77. package/dist/audio/engine/LatencyCompensator.d.ts.map +1 -0
  78. package/dist/audio/engine/LatencyCompensator.js +84 -0
  79. package/dist/audio/engine/LatencyCompensator.js.map +1 -0
  80. package/dist/audio/engine/MultiTrackRecorder.d.ts +144 -0
  81. package/dist/audio/engine/MultiTrackRecorder.d.ts.map +1 -0
  82. package/dist/audio/engine/MultiTrackRecorder.js +359 -0
  83. package/dist/audio/engine/MultiTrackRecorder.js.map +1 -0
  84. package/dist/audio/engine/PlaylistEngine.d.ts +1 -1
  85. package/dist/audio/engine/PlaylistEngine.d.ts.map +1 -1
  86. package/dist/audio/engine/PlaylistEngine.js +10 -3
  87. package/dist/audio/engine/PlaylistEngine.js.map +1 -1
  88. package/dist/audio/engine/PunchRecordManager.d.ts +111 -0
  89. package/dist/audio/engine/PunchRecordManager.d.ts.map +1 -0
  90. package/dist/audio/engine/PunchRecordManager.js +191 -0
  91. package/dist/audio/engine/PunchRecordManager.js.map +1 -0
  92. package/dist/audio/engine/RoutingGraph.d.ts +133 -0
  93. package/dist/audio/engine/RoutingGraph.d.ts.map +1 -0
  94. package/dist/audio/engine/RoutingGraph.js +436 -0
  95. package/dist/audio/engine/RoutingGraph.js.map +1 -0
  96. package/dist/audio/engine/SidechainRouter.d.ts +137 -0
  97. package/dist/audio/engine/SidechainRouter.d.ts.map +1 -0
  98. package/dist/audio/engine/SidechainRouter.js +290 -0
  99. package/dist/audio/engine/SidechainRouter.js.map +1 -0
  100. package/dist/audio/engine/XrunTracker.d.ts +71 -0
  101. package/dist/audio/engine/XrunTracker.d.ts.map +1 -0
  102. package/dist/audio/engine/XrunTracker.js +118 -0
  103. package/dist/audio/engine/XrunTracker.js.map +1 -0
  104. package/dist/audio/export/CDMarkerExporter.d.ts +60 -0
  105. package/dist/audio/export/CDMarkerExporter.d.ts.map +1 -0
  106. package/dist/audio/export/CDMarkerExporter.js +162 -0
  107. package/dist/audio/export/CDMarkerExporter.js.map +1 -0
  108. package/dist/audio/export/ExportGraphBuilder.d.ts +119 -0
  109. package/dist/audio/export/ExportGraphBuilder.d.ts.map +1 -0
  110. package/dist/audio/export/ExportGraphBuilder.js +520 -0
  111. package/dist/audio/export/ExportGraphBuilder.js.map +1 -0
  112. package/dist/audio/export/ExportPresetManager.d.ts +85 -0
  113. package/dist/audio/export/ExportPresetManager.d.ts.map +1 -0
  114. package/dist/audio/export/ExportPresetManager.js +304 -0
  115. package/dist/audio/export/ExportPresetManager.js.map +1 -0
  116. package/dist/automation/AutomationList.d.ts +0 -1
  117. package/dist/automation/AutomationList.d.ts.map +1 -1
  118. package/dist/automation/AutomationList.js +0 -1
  119. package/dist/automation/AutomationList.js.map +1 -1
  120. package/dist/automation/AutomationMode.d.ts +0 -1
  121. package/dist/automation/AutomationMode.d.ts.map +1 -1
  122. package/dist/automation/AutomationMode.js +0 -1
  123. package/dist/automation/AutomationMode.js.map +1 -1
  124. package/dist/commands/CommandHistory.d.ts +1 -4
  125. package/dist/commands/CommandHistory.d.ts.map +1 -1
  126. package/dist/commands/CommandHistory.js +6 -9
  127. package/dist/commands/CommandHistory.js.map +1 -1
  128. package/dist/commands/CommandRegistry.d.ts +1 -2
  129. package/dist/commands/CommandRegistry.d.ts.map +1 -1
  130. package/dist/commands/CommandRegistry.js +1 -2
  131. package/dist/commands/CommandRegistry.js.map +1 -1
  132. package/dist/commands/UndoTransaction.d.ts +0 -2
  133. package/dist/commands/UndoTransaction.d.ts.map +1 -1
  134. package/dist/commands/UndoTransaction.js +1 -3
  135. package/dist/commands/UndoTransaction.js.map +1 -1
  136. package/dist/commands/handlers/HistoryHandler.d.ts +5 -5
  137. package/dist/commands/handlers/HistoryHandler.js +10 -10
  138. package/dist/commands/handlers/HistoryHandler.js.map +1 -1
  139. package/dist/commands/handlers/MarkerHandler.d.ts +0 -1
  140. package/dist/commands/handlers/MarkerHandler.d.ts.map +1 -1
  141. package/dist/commands/handlers/MarkerHandler.js +0 -1
  142. package/dist/commands/handlers/MarkerHandler.js.map +1 -1
  143. package/dist/commands/handlers/RegionHandler.d.ts.map +1 -1
  144. package/dist/commands/handlers/RegionHandler.js +25 -1
  145. package/dist/commands/handlers/RegionHandler.js.map +1 -1
  146. package/dist/commands/handlers/TrackHandler.js +1 -1
  147. package/dist/commands/handlers/TrackHandler.js.map +1 -1
  148. package/dist/commands/impl/CopyRegionCommand.d.ts +0 -1
  149. package/dist/commands/impl/CopyRegionCommand.d.ts.map +1 -1
  150. package/dist/commands/impl/CopyRegionCommand.js +0 -1
  151. package/dist/commands/impl/CopyRegionCommand.js.map +1 -1
  152. package/dist/commands/impl/DuplicateRegionCommand.d.ts +0 -1
  153. package/dist/commands/impl/DuplicateRegionCommand.d.ts.map +1 -1
  154. package/dist/commands/impl/DuplicateRegionCommand.js +0 -1
  155. package/dist/commands/impl/DuplicateRegionCommand.js.map +1 -1
  156. package/dist/commands/impl/ExportCommand.d.ts +0 -1
  157. package/dist/commands/impl/ExportCommand.d.ts.map +1 -1
  158. package/dist/commands/impl/ExportCommand.js +0 -1
  159. package/dist/commands/impl/ExportCommand.js.map +1 -1
  160. package/dist/commands/impl/FreezeTrackCommand.d.ts +1 -1
  161. package/dist/commands/impl/FreezeTrackCommand.d.ts.map +1 -1
  162. package/dist/commands/impl/FreezeTrackCommand.js +38 -37
  163. package/dist/commands/impl/FreezeTrackCommand.js.map +1 -1
  164. package/dist/commands/impl/PasteRegionCommand.d.ts +0 -1
  165. package/dist/commands/impl/PasteRegionCommand.d.ts.map +1 -1
  166. package/dist/commands/impl/PasteRegionCommand.js +0 -1
  167. package/dist/commands/impl/PasteRegionCommand.js.map +1 -1
  168. package/dist/commands/impl/SaveSnapshotCommand.d.ts +1 -1
  169. package/dist/commands/impl/SaveSnapshotCommand.js +1 -1
  170. package/dist/commands/impl/SetLoopRangeCommand.d.ts +0 -1
  171. package/dist/commands/impl/SetLoopRangeCommand.d.ts.map +1 -1
  172. package/dist/commands/impl/SetLoopRangeCommand.js +0 -1
  173. package/dist/commands/impl/SetLoopRangeCommand.js.map +1 -1
  174. package/dist/commands/impl/SetPunchRangeCommand.d.ts +0 -1
  175. package/dist/commands/impl/SetPunchRangeCommand.d.ts.map +1 -1
  176. package/dist/commands/impl/SetPunchRangeCommand.js +0 -1
  177. package/dist/commands/impl/SetPunchRangeCommand.js.map +1 -1
  178. package/dist/commands/impl/SetRegionTimeDomainCommand.d.ts.map +1 -1
  179. package/dist/commands/impl/SetRegionTimeDomainCommand.js +3 -3
  180. package/dist/commands/impl/SetRegionTimeDomainCommand.js.map +1 -1
  181. package/dist/commands/impl/SplitAtPlayheadCommand.d.ts +0 -2
  182. package/dist/commands/impl/SplitAtPlayheadCommand.d.ts.map +1 -1
  183. package/dist/commands/impl/SplitAtPlayheadCommand.js +0 -2
  184. package/dist/commands/impl/SplitAtPlayheadCommand.js.map +1 -1
  185. package/dist/commands/impl/SplitRegionCommand.d.ts +0 -1
  186. package/dist/commands/impl/SplitRegionCommand.d.ts.map +1 -1
  187. package/dist/commands/impl/SplitRegionCommand.js +0 -1
  188. package/dist/commands/impl/SplitRegionCommand.js.map +1 -1
  189. package/dist/commands/impl/StripSilenceCommand.d.ts +0 -1
  190. package/dist/commands/impl/StripSilenceCommand.d.ts.map +1 -1
  191. package/dist/commands/impl/StripSilenceCommand.js +0 -1
  192. package/dist/commands/impl/StripSilenceCommand.js.map +1 -1
  193. package/dist/commands/impl/TimeStretchRegionCommand.d.ts +1 -2
  194. package/dist/commands/impl/TimeStretchRegionCommand.d.ts.map +1 -1
  195. package/dist/commands/impl/TimeStretchRegionCommand.js +1 -2
  196. package/dist/commands/impl/TimeStretchRegionCommand.js.map +1 -1
  197. package/dist/commands/impl/ToggleLoopCommand.d.ts +1 -0
  198. package/dist/commands/impl/ToggleLoopCommand.d.ts.map +1 -1
  199. package/dist/commands/impl/ToggleLoopCommand.js +10 -0
  200. package/dist/commands/impl/ToggleLoopCommand.js.map +1 -1
  201. package/dist/commands/impl/TrimRegionCommand.d.ts +14 -1
  202. package/dist/commands/impl/TrimRegionCommand.d.ts.map +1 -1
  203. package/dist/commands/impl/TrimRegionCommand.js +138 -33
  204. package/dist/commands/impl/TrimRegionCommand.js.map +1 -1
  205. package/dist/commands/impl/TrimRegionToPlayheadCommand.d.ts +26 -0
  206. package/dist/commands/impl/TrimRegionToPlayheadCommand.d.ts.map +1 -0
  207. package/dist/commands/impl/TrimRegionToPlayheadCommand.js +68 -0
  208. package/dist/commands/impl/TrimRegionToPlayheadCommand.js.map +1 -0
  209. package/dist/commands/impl/TrimRegionToRangeCommand.d.ts +27 -0
  210. package/dist/commands/impl/TrimRegionToRangeCommand.d.ts.map +1 -0
  211. package/dist/commands/impl/TrimRegionToRangeCommand.js +68 -0
  212. package/dist/commands/impl/TrimRegionToRangeCommand.js.map +1 -0
  213. package/dist/commands/impl/TrimToAdjacentRegionCommand.d.ts +26 -0
  214. package/dist/commands/impl/TrimToAdjacentRegionCommand.d.ts.map +1 -0
  215. package/dist/commands/impl/TrimToAdjacentRegionCommand.js +76 -0
  216. package/dist/commands/impl/TrimToAdjacentRegionCommand.js.map +1 -0
  217. package/dist/commands/types.d.ts +19 -0
  218. package/dist/commands/types.d.ts.map +1 -1
  219. package/dist/commands/types.js +21 -0
  220. package/dist/commands/types.js.map +1 -1
  221. package/dist/domain/ABComparison.d.ts +0 -1
  222. package/dist/domain/ABComparison.d.ts.map +1 -1
  223. package/dist/domain/ABComparison.js +0 -1
  224. package/dist/domain/ABComparison.js.map +1 -1
  225. package/dist/domain/CDMarker.d.ts +0 -1
  226. package/dist/domain/CDMarker.d.ts.map +1 -1
  227. package/dist/domain/CDMarker.js +0 -1
  228. package/dist/domain/CDMarker.js.map +1 -1
  229. package/dist/domain/ClockMode.d.ts +0 -1
  230. package/dist/domain/ClockMode.d.ts.map +1 -1
  231. package/dist/domain/ClockMode.js +0 -1
  232. package/dist/domain/ClockMode.js.map +1 -1
  233. package/dist/domain/Crossfade.d.ts +78 -0
  234. package/dist/domain/Crossfade.d.ts.map +1 -0
  235. package/dist/domain/Crossfade.js +216 -0
  236. package/dist/domain/Crossfade.js.map +1 -0
  237. package/dist/domain/DragManager.d.ts +0 -2
  238. package/dist/domain/DragManager.d.ts.map +1 -1
  239. package/dist/domain/DragManager.js +0 -2
  240. package/dist/domain/DragManager.js.map +1 -1
  241. package/dist/domain/EditMode.d.ts +0 -1
  242. package/dist/domain/EditMode.d.ts.map +1 -1
  243. package/dist/domain/EditMode.js +0 -1
  244. package/dist/domain/EditMode.js.map +1 -1
  245. package/dist/domain/ExportConfig.d.ts +98 -2
  246. package/dist/domain/ExportConfig.d.ts.map +1 -1
  247. package/dist/domain/ExportConfig.js +154 -2
  248. package/dist/domain/ExportConfig.js.map +1 -1
  249. package/dist/domain/ExportPreset.d.ts +60 -0
  250. package/dist/domain/ExportPreset.d.ts.map +1 -0
  251. package/dist/domain/ExportPreset.js +77 -0
  252. package/dist/domain/ExportPreset.js.map +1 -0
  253. package/dist/domain/ExportStatus.d.ts +0 -1
  254. package/dist/domain/ExportStatus.d.ts.map +1 -1
  255. package/dist/domain/ExportStatus.js +0 -1
  256. package/dist/domain/ExportStatus.js.map +1 -1
  257. package/dist/domain/GridSettings.d.ts +0 -3
  258. package/dist/domain/GridSettings.d.ts.map +1 -1
  259. package/dist/domain/GridSettings.js +0 -3
  260. package/dist/domain/GridSettings.js.map +1 -1
  261. package/dist/domain/ImportStatus.d.ts +40 -0
  262. package/dist/domain/ImportStatus.d.ts.map +1 -0
  263. package/dist/domain/ImportStatus.js +86 -0
  264. package/dist/domain/ImportStatus.js.map +1 -0
  265. package/dist/domain/Marker.d.ts +0 -1
  266. package/dist/domain/Marker.d.ts.map +1 -1
  267. package/dist/domain/Marker.js +0 -1
  268. package/dist/domain/Marker.js.map +1 -1
  269. package/dist/domain/MeterData.d.ts +0 -2
  270. package/dist/domain/MeterData.d.ts.map +1 -1
  271. package/dist/domain/MeterType.d.ts +0 -2
  272. package/dist/domain/MeterType.d.ts.map +1 -1
  273. package/dist/domain/MeterType.js +0 -2
  274. package/dist/domain/MeterType.js.map +1 -1
  275. package/dist/domain/MonitorMode.d.ts +0 -1
  276. package/dist/domain/MonitorMode.d.ts.map +1 -1
  277. package/dist/domain/MonitorMode.js +0 -1
  278. package/dist/domain/MonitorMode.js.map +1 -1
  279. package/dist/domain/MouseMode.d.ts +0 -1
  280. package/dist/domain/MouseMode.d.ts.map +1 -1
  281. package/dist/domain/MouseMode.js +0 -1
  282. package/dist/domain/MouseMode.js.map +1 -1
  283. package/dist/domain/OverlapType.d.ts +0 -2
  284. package/dist/domain/OverlapType.d.ts.map +1 -1
  285. package/dist/domain/OverlapType.js +0 -2
  286. package/dist/domain/OverlapType.js.map +1 -1
  287. package/dist/domain/Playlist.d.ts +72 -0
  288. package/dist/domain/Playlist.d.ts.map +1 -1
  289. package/dist/domain/Playlist.js +231 -6
  290. package/dist/domain/Playlist.js.map +1 -1
  291. package/dist/domain/Range.d.ts +0 -1
  292. package/dist/domain/Range.d.ts.map +1 -1
  293. package/dist/domain/Range.js +0 -1
  294. package/dist/domain/Range.js.map +1 -1
  295. package/dist/domain/RecordMode.d.ts +0 -1
  296. package/dist/domain/RecordMode.d.ts.map +1 -1
  297. package/dist/domain/RecordMode.js +0 -1
  298. package/dist/domain/RecordMode.js.map +1 -1
  299. package/dist/domain/Region.d.ts +76 -0
  300. package/dist/domain/Region.d.ts.map +1 -1
  301. package/dist/domain/Region.js +234 -1
  302. package/dist/domain/Region.js.map +1 -1
  303. package/dist/domain/RegionClipboard.d.ts +1 -3
  304. package/dist/domain/RegionClipboard.d.ts.map +1 -1
  305. package/dist/domain/RegionClipboard.js +1 -2
  306. package/dist/domain/RegionClipboard.js.map +1 -1
  307. package/dist/domain/Route.d.ts +43 -3
  308. package/dist/domain/Route.d.ts.map +1 -1
  309. package/dist/domain/Route.js +92 -6
  310. package/dist/domain/Route.js.map +1 -1
  311. package/dist/domain/RulerType.d.ts +0 -1
  312. package/dist/domain/RulerType.d.ts.map +1 -1
  313. package/dist/domain/RulerType.js +0 -1
  314. package/dist/domain/RulerType.js.map +1 -1
  315. package/dist/domain/SelectionHistory.d.ts +0 -3
  316. package/dist/domain/SelectionHistory.d.ts.map +1 -1
  317. package/dist/domain/SelectionHistory.js +0 -3
  318. package/dist/domain/SelectionHistory.js.map +1 -1
  319. package/dist/domain/SendBus.d.ts +0 -1
  320. package/dist/domain/SendBus.d.ts.map +1 -1
  321. package/dist/domain/SendBus.js +0 -1
  322. package/dist/domain/SendBus.js.map +1 -1
  323. package/dist/domain/Session.d.ts +31 -0
  324. package/dist/domain/Session.d.ts.map +1 -1
  325. package/dist/domain/Session.js +70 -0
  326. package/dist/domain/Session.js.map +1 -1
  327. package/dist/domain/SidechainConfig.d.ts +0 -1
  328. package/dist/domain/SidechainConfig.d.ts.map +1 -1
  329. package/dist/domain/SidechainConfig.js +0 -1
  330. package/dist/domain/SidechainConfig.js.map +1 -1
  331. package/dist/domain/Source.d.ts +145 -1
  332. package/dist/domain/Source.d.ts.map +1 -1
  333. package/dist/domain/Source.js +144 -1
  334. package/dist/domain/Source.js.map +1 -1
  335. package/dist/domain/Take.d.ts +0 -1
  336. package/dist/domain/Take.d.ts.map +1 -1
  337. package/dist/domain/Take.js +0 -1
  338. package/dist/domain/Take.js.map +1 -1
  339. package/dist/domain/ThawList.d.ts +36 -0
  340. package/dist/domain/ThawList.d.ts.map +1 -0
  341. package/dist/domain/ThawList.js +72 -0
  342. package/dist/domain/ThawList.js.map +1 -0
  343. package/dist/domain/Track.d.ts +93 -1
  344. package/dist/domain/Track.d.ts.map +1 -1
  345. package/dist/domain/Track.js +136 -0
  346. package/dist/domain/Track.js.map +1 -1
  347. package/dist/domain/TrackGroup.d.ts +0 -1
  348. package/dist/domain/TrackGroup.d.ts.map +1 -1
  349. package/dist/domain/TrackGroup.js +0 -1
  350. package/dist/domain/TrackGroup.js.map +1 -1
  351. package/dist/domain/TransportFSM.d.ts +0 -1
  352. package/dist/domain/TransportFSM.d.ts.map +1 -1
  353. package/dist/domain/TransportFSM.js +0 -1
  354. package/dist/domain/TransportFSM.js.map +1 -1
  355. package/dist/domain/TransportMode.d.ts +0 -1
  356. package/dist/domain/TransportMode.d.ts.map +1 -1
  357. package/dist/domain/TransportMode.js +0 -1
  358. package/dist/domain/TransportMode.js.map +1 -1
  359. package/dist/domain/TriggerBox.d.ts +121 -0
  360. package/dist/domain/TriggerBox.d.ts.map +1 -0
  361. package/dist/domain/TriggerBox.js +428 -0
  362. package/dist/domain/TriggerBox.js.map +1 -0
  363. package/dist/domain/VCATrack.d.ts +63 -2
  364. package/dist/domain/VCATrack.d.ts.map +1 -1
  365. package/dist/domain/VCATrack.js +127 -2
  366. package/dist/domain/VCATrack.js.map +1 -1
  367. package/dist/domain/VideoExportConfig.d.ts +116 -0
  368. package/dist/domain/VideoExportConfig.d.ts.map +1 -0
  369. package/dist/domain/VideoExportConfig.js +243 -0
  370. package/dist/domain/VideoExportConfig.js.map +1 -0
  371. package/dist/domain/VideoExportStatus.d.ts +89 -0
  372. package/dist/domain/VideoExportStatus.d.ts.map +1 -0
  373. package/dist/domain/VideoExportStatus.js +192 -0
  374. package/dist/domain/VideoExportStatus.js.map +1 -0
  375. package/dist/domain/VideoMetadata.d.ts +46 -0
  376. package/dist/domain/VideoMetadata.d.ts.map +1 -0
  377. package/dist/domain/VideoMetadata.js +2 -0
  378. package/dist/domain/VideoMetadata.js.map +1 -0
  379. package/dist/domain/ZoomFocus.d.ts +0 -1
  380. package/dist/domain/ZoomFocus.d.ts.map +1 -1
  381. package/dist/domain/ZoomFocus.js +0 -1
  382. package/dist/domain/ZoomFocus.js.map +1 -1
  383. package/dist/domain/index.d.ts +5 -0
  384. package/dist/domain/index.d.ts.map +1 -1
  385. package/dist/domain/index.js +5 -0
  386. package/dist/domain/index.js.map +1 -1
  387. package/dist/domain/temporal/TempoMap.d.ts +198 -2
  388. package/dist/domain/temporal/TempoMap.d.ts.map +1 -1
  389. package/dist/domain/temporal/TempoMap.js +464 -30
  390. package/dist/domain/temporal/TempoMap.js.map +1 -1
  391. package/dist/domain/temporal/types.d.ts +1 -1
  392. package/dist/domain/temporal/types.d.ts.map +1 -1
  393. package/dist/domain/temporal/types.js +1 -1
  394. package/dist/domain/temporal/types.js.map +1 -1
  395. package/dist/index.d.ts +43 -1
  396. package/dist/index.d.ts.map +1 -1
  397. package/dist/index.js +32 -1
  398. package/dist/index.js.map +1 -1
  399. package/dist/lib/Signal.d.ts +1 -1
  400. package/dist/lib/ThawList.d.ts +98 -0
  401. package/dist/lib/ThawList.d.ts.map +1 -0
  402. package/dist/lib/ThawList.js +151 -0
  403. package/dist/lib/ThawList.js.map +1 -0
  404. package/dist/midi/MidiFileParser.d.ts +32 -0
  405. package/dist/midi/MidiFileParser.d.ts.map +1 -0
  406. package/dist/midi/MidiFileParser.js +245 -0
  407. package/dist/midi/MidiFileParser.js.map +1 -0
  408. package/dist/midi/MidiFileWriter.d.ts +30 -0
  409. package/dist/midi/MidiFileWriter.d.ts.map +1 -0
  410. package/dist/midi/MidiFileWriter.js +159 -0
  411. package/dist/midi/MidiFileWriter.js.map +1 -0
  412. package/dist/midi/MidiImporter.d.ts +37 -0
  413. package/dist/midi/MidiImporter.d.ts.map +1 -0
  414. package/dist/midi/MidiImporter.js +62 -0
  415. package/dist/midi/MidiImporter.js.map +1 -0
  416. package/dist/plugins/PluginManager.js +2 -2
  417. package/dist/plugins/PluginManager.js.map +1 -1
  418. package/dist/plugins/PluginPresetManager.d.ts +86 -0
  419. package/dist/plugins/PluginPresetManager.d.ts.map +1 -0
  420. package/dist/plugins/PluginPresetManager.js +140 -0
  421. package/dist/plugins/PluginPresetManager.js.map +1 -0
  422. package/dist/plugins/impl/ExpanderPlugin.d.ts +1 -1
  423. package/dist/plugins/impl/ExpanderPlugin.js +1 -1
  424. package/dist/plugins/impl/ParametricEQPlugin.d.ts +1 -1
  425. package/dist/plugins/impl/ParametricEQPlugin.js +1 -1
  426. package/dist/processing/IO.d.ts +15 -1
  427. package/dist/processing/IO.d.ts.map +1 -1
  428. package/dist/processing/IO.js +29 -1
  429. package/dist/processing/IO.js.map +1 -1
  430. package/dist/processing/InternalSend.d.ts +102 -0
  431. package/dist/processing/InternalSend.d.ts.map +1 -0
  432. package/dist/processing/InternalSend.js +175 -0
  433. package/dist/processing/InternalSend.js.map +1 -0
  434. package/dist/processing/MeterDSP.d.ts +165 -0
  435. package/dist/processing/MeterDSP.d.ts.map +1 -0
  436. package/dist/processing/MeterDSP.js +753 -0
  437. package/dist/processing/MeterDSP.js.map +1 -0
  438. package/dist/processing/MeterProcessor.d.ts +0 -1
  439. package/dist/processing/MeterProcessor.d.ts.map +1 -1
  440. package/dist/processing/MeterProcessor.js +0 -1
  441. package/dist/processing/MeterProcessor.js.map +1 -1
  442. package/dist/processing/Panner.d.ts +144 -0
  443. package/dist/processing/Panner.d.ts.map +1 -0
  444. package/dist/processing/Panner.js +280 -0
  445. package/dist/processing/Panner.js.map +1 -0
  446. package/dist/processing/PluginInsert.d.ts +56 -1
  447. package/dist/processing/PluginInsert.d.ts.map +1 -1
  448. package/dist/processing/PluginInsert.js +180 -2
  449. package/dist/processing/PluginInsert.js.map +1 -1
  450. package/dist/processing/PolarityProcessor.d.ts +1 -1
  451. package/dist/processing/PolarityProcessor.js +1 -1
  452. package/dist/processing/Processor.d.ts +38 -0
  453. package/dist/processing/Processor.d.ts.map +1 -1
  454. package/dist/processing/Processor.js +60 -1
  455. package/dist/processing/Processor.js.map +1 -1
  456. package/dist/processing/SendProcessor.d.ts +0 -1
  457. package/dist/processing/SendProcessor.d.ts.map +1 -1
  458. package/dist/processing/SendProcessor.js +0 -1
  459. package/dist/processing/SendProcessor.js.map +1 -1
  460. package/dist/processing/SurroundPanner.d.ts +120 -0
  461. package/dist/processing/SurroundPanner.d.ts.map +1 -0
  462. package/dist/processing/SurroundPanner.js +374 -0
  463. package/dist/processing/SurroundPanner.js.map +1 -0
  464. package/dist/processing/TruePeakLimiter.d.ts +32 -0
  465. package/dist/processing/TruePeakLimiter.d.ts.map +1 -0
  466. package/dist/processing/TruePeakLimiter.js +142 -0
  467. package/dist/processing/TruePeakLimiter.js.map +1 -0
  468. package/dist/storage/ExportPresetStorage.d.ts +33 -0
  469. package/dist/storage/ExportPresetStorage.d.ts.map +1 -0
  470. package/dist/storage/ExportPresetStorage.js +121 -0
  471. package/dist/storage/ExportPresetStorage.js.map +1 -0
  472. package/dist/storage/SessionArchive.d.ts +73 -0
  473. package/dist/storage/SessionArchive.d.ts.map +1 -0
  474. package/dist/storage/SessionArchive.js +211 -0
  475. package/dist/storage/SessionArchive.js.map +1 -0
  476. package/dist/storage/SessionStorage.d.ts +1 -1
  477. package/dist/storage/SessionTemplate.d.ts +74 -5
  478. package/dist/storage/SessionTemplate.d.ts.map +1 -1
  479. package/dist/storage/SessionTemplate.js +247 -53
  480. package/dist/storage/SessionTemplate.js.map +1 -1
  481. package/dist/utils/BwfMetadataWriter.d.ts +41 -0
  482. package/dist/utils/BwfMetadataWriter.d.ts.map +1 -0
  483. package/dist/utils/BwfMetadataWriter.js +130 -0
  484. package/dist/utils/BwfMetadataWriter.js.map +1 -0
  485. package/dist/utils/DitherProcessor.d.ts +0 -1
  486. package/dist/utils/DitherProcessor.d.ts.map +1 -1
  487. package/dist/utils/DitherProcessor.js +0 -1
  488. package/dist/utils/DitherProcessor.js.map +1 -1
  489. package/dist/utils/FilenameTemplate.d.ts +39 -0
  490. package/dist/utils/FilenameTemplate.d.ts.map +1 -0
  491. package/dist/utils/FilenameTemplate.js +77 -0
  492. package/dist/utils/FilenameTemplate.js.map +1 -0
  493. package/dist/utils/FlacEncoder.d.ts +0 -1
  494. package/dist/utils/FlacEncoder.d.ts.map +1 -1
  495. package/dist/utils/FlacEncoder.js +0 -1
  496. package/dist/utils/FlacEncoder.js.map +1 -1
  497. package/dist/utils/Logger.d.ts +28 -0
  498. package/dist/utils/Logger.d.ts.map +1 -0
  499. package/dist/utils/Logger.js +46 -0
  500. package/dist/utils/Logger.js.map +1 -0
  501. package/dist/utils/Mp4ChapterGenerator.d.ts +16 -0
  502. package/dist/utils/Mp4ChapterGenerator.d.ts.map +1 -0
  503. package/dist/utils/Mp4ChapterGenerator.js +32 -0
  504. package/dist/utils/Mp4ChapterGenerator.js.map +1 -0
  505. package/dist/utils/OggEncoder.d.ts +19 -21
  506. package/dist/utils/OggEncoder.d.ts.map +1 -1
  507. package/dist/utils/OggEncoder.js +113 -51
  508. package/dist/utils/OggEncoder.js.map +1 -1
  509. package/dist/utils/TocGenerator.d.ts +16 -0
  510. package/dist/utils/TocGenerator.d.ts.map +1 -0
  511. package/dist/utils/TocGenerator.js +46 -0
  512. package/dist/utils/TocGenerator.js.map +1 -0
  513. package/package.json +7 -8
@@ -0,0 +1,216 @@
1
+ import { Signal } from '../lib/Signal';
2
+ export var CrossfadeType;
3
+ (function (CrossfadeType) {
4
+ CrossfadeType["FULL"] = "full";
5
+ CrossfadeType["SHORT"] = "short";
6
+ CrossfadeType["CUSTOM"] = "custom";
7
+ })(CrossfadeType || (CrossfadeType = {}));
8
+ export var FadeCurve;
9
+ (function (FadeCurve) {
10
+ FadeCurve["LINEAR"] = "linear";
11
+ FadeCurve["EQUAL_POWER"] = "equal_power";
12
+ FadeCurve["S_CURVE"] = "s_curve";
13
+ FadeCurve["EXPONENTIAL"] = "exponential";
14
+ FadeCurve["LOGARITHMIC"] = "logarithmic";
15
+ FadeCurve["CONSTANT_POWER"] = "constant_power";
16
+ })(FadeCurve || (FadeCurve = {}));
17
+ // ─── Gain Calculation Helpers ────────────────────────────────────────────────
18
+ /**
19
+ * Compute the fade-in gain for a normalised position t (0..1) given a curve.
20
+ * t = 0 means silence, t = 1 means full gain.
21
+ */
22
+ function computeFadeInGain(t, curve) {
23
+ const s = Math.max(0, Math.min(1, t));
24
+ switch (curve) {
25
+ case FadeCurve.LINEAR:
26
+ return s;
27
+ case FadeCurve.EQUAL_POWER:
28
+ return Math.sqrt(s);
29
+ case FadeCurve.S_CURVE:
30
+ return s * s * (3 - 2 * s);
31
+ case FadeCurve.EXPONENTIAL:
32
+ // Exponential rise: slow start, fast finish
33
+ return s === 0 ? 0 : Math.pow(2, 10 * (s - 1));
34
+ case FadeCurve.LOGARITHMIC:
35
+ // Logarithmic rise: fast start, slow finish
36
+ return Math.log1p(s * (Math.E - 1)) / Math.log(Math.E);
37
+ case FadeCurve.CONSTANT_POWER:
38
+ // sine-based constant power (complementary with fade-out)
39
+ return Math.sin(s * Math.PI * 0.5);
40
+ default:
41
+ return s;
42
+ }
43
+ }
44
+ /**
45
+ * Compute the fade-out gain for a normalised position t (0..1) given a curve.
46
+ * t = 0 means full gain (beginning of crossfade), t = 1 means silence.
47
+ */
48
+ function computeFadeOutGain(t, curve) {
49
+ const s = Math.max(0, Math.min(1, t));
50
+ switch (curve) {
51
+ case FadeCurve.LINEAR:
52
+ return 1 - s;
53
+ case FadeCurve.EQUAL_POWER:
54
+ return Math.sqrt(1 - s);
55
+ case FadeCurve.S_CURVE: {
56
+ const inv = 1 - s;
57
+ return inv * inv * (3 - 2 * inv);
58
+ }
59
+ case FadeCurve.EXPONENTIAL:
60
+ // Exponential decay: fast start, slow tail
61
+ return s >= 1 ? 0 : Math.pow(2, -10 * s);
62
+ case FadeCurve.LOGARITHMIC:
63
+ // Logarithmic decay: slow start, fast tail
64
+ return 1 - Math.log1p(s * (Math.E - 1)) / Math.log(Math.E);
65
+ case FadeCurve.CONSTANT_POWER:
66
+ // cosine-based constant power (complementary with fade-in)
67
+ return Math.cos(s * Math.PI * 0.5);
68
+ default:
69
+ return 1 - s;
70
+ }
71
+ }
72
+ // ─── Crossfade Class ─────────────────────────────────────────────────────────
73
+ export class Crossfade {
74
+ constructor(id, inRegionId, outRegionId, position, length, type = CrossfadeType.FULL, fadeInCurve = FadeCurve.EQUAL_POWER, fadeOutCurve = FadeCurve.EQUAL_POWER) {
75
+ // Signals
76
+ this.changed = new Signal();
77
+ this.id = id;
78
+ this._inRegionId = inRegionId;
79
+ this._outRegionId = outRegionId;
80
+ this._position = position;
81
+ this._length = length;
82
+ this._type = type;
83
+ this._fadeInCurve = fadeInCurve;
84
+ this._fadeOutCurve = fadeOutCurve;
85
+ this._active = true;
86
+ }
87
+ // ─── Getters ─────────────────────────────────────────────────────────────
88
+ get inRegionId() {
89
+ return this._inRegionId;
90
+ }
91
+ get outRegionId() {
92
+ return this._outRegionId;
93
+ }
94
+ get length() {
95
+ return this._length;
96
+ }
97
+ get position() {
98
+ return this._position;
99
+ }
100
+ get end() {
101
+ return this._position + this._length;
102
+ }
103
+ get fadeInCurve() {
104
+ return this._fadeInCurve;
105
+ }
106
+ get fadeOutCurve() {
107
+ return this._fadeOutCurve;
108
+ }
109
+ get type() {
110
+ return this._type;
111
+ }
112
+ get active() {
113
+ return this._active;
114
+ }
115
+ // ─── Setters / Mutators ──────────────────────────────────────────────────
116
+ setLength(length) {
117
+ if (length < 0)
118
+ length = 0;
119
+ this._length = length;
120
+ this.changed.emit();
121
+ }
122
+ setPosition(position) {
123
+ if (position < 0)
124
+ position = 0;
125
+ this._position = position;
126
+ this.changed.emit();
127
+ }
128
+ setCurves(fadeIn, fadeOut) {
129
+ this._fadeInCurve = fadeIn;
130
+ this._fadeOutCurve = fadeOut;
131
+ this.changed.emit();
132
+ }
133
+ setType(type) {
134
+ this._type = type;
135
+ this.changed.emit();
136
+ }
137
+ setActive(active) {
138
+ this._active = active;
139
+ this.changed.emit();
140
+ }
141
+ // ─── Gain Calculation ────────────────────────────────────────────────────
142
+ /**
143
+ * Calculate the gain value at a given frame for either the fade-in or
144
+ * fade-out side of the crossfade.
145
+ *
146
+ * @param frame The absolute timeline frame.
147
+ * @param isIn True for the fade-in region, false for the fade-out region.
148
+ * @returns Gain value in the range [0, 1]. Returns 1 if the frame is
149
+ * outside the crossfade range (no attenuation).
150
+ */
151
+ getGainAt(frame, isIn) {
152
+ if (!this._active || this._length === 0)
153
+ return 1;
154
+ // Frame is before or after the crossfade zone
155
+ if (frame < this._position || frame >= this.end) {
156
+ return 1;
157
+ }
158
+ // Normalised position within the crossfade (0..1)
159
+ const t = (frame - this._position) / this._length;
160
+ if (isIn) {
161
+ return computeFadeInGain(t, this._fadeInCurve);
162
+ }
163
+ else {
164
+ return computeFadeOutGain(t, this._fadeOutCurve);
165
+ }
166
+ }
167
+ // ─── Bulk Gain Computation ───────────────────────────────────────────────
168
+ /**
169
+ * Pre-compute gain curves for efficient real-time use.
170
+ *
171
+ * @param numSamples Number of samples to compute (typically the crossfade
172
+ * length, but can be any resolution).
173
+ * @returns An object containing Float32Arrays for both curves.
174
+ */
175
+ computeGainCurve(numSamples) {
176
+ const fadeIn = new Float32Array(numSamples);
177
+ const fadeOut = new Float32Array(numSamples);
178
+ if (numSamples <= 1) {
179
+ if (numSamples === 1) {
180
+ fadeIn[0] = 0.5;
181
+ fadeOut[0] = 0.5;
182
+ }
183
+ return { fadeIn, fadeOut };
184
+ }
185
+ for (let i = 0; i < numSamples; i++) {
186
+ const t = i / (numSamples - 1);
187
+ fadeIn[i] = computeFadeInGain(t, this._fadeInCurve);
188
+ fadeOut[i] = computeFadeOutGain(t, this._fadeOutCurve);
189
+ }
190
+ return { fadeIn, fadeOut };
191
+ }
192
+ // ─── Static Helpers ──────────────────────────────────────────────────────
193
+ /**
194
+ * Calculate the overlap between two regions. Returns null if there is no
195
+ * overlap. The convention is that regionA is the earlier (fade-out) region
196
+ * and regionB is the later (fade-in) region, but the method handles
197
+ * either ordering.
198
+ */
199
+ static calculateOverlap(regionA, regionB) {
200
+ const overlapStart = Math.max(regionA.start, regionB.start);
201
+ const overlapEnd = Math.min(regionA.end, regionB.end);
202
+ if (overlapStart >= overlapEnd) {
203
+ return null; // No overlap
204
+ }
205
+ // Determine which region comes first (fade-out) and which comes second (fade-in)
206
+ const outRegionId = regionA.start <= regionB.start ? regionA.id : regionB.id;
207
+ const inRegionId = regionA.start <= regionB.start ? regionB.id : regionA.id;
208
+ return {
209
+ position: overlapStart,
210
+ length: overlapEnd - overlapStart,
211
+ outRegionId,
212
+ inRegionId,
213
+ };
214
+ }
215
+ }
216
+ //# sourceMappingURL=Crossfade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Crossfade.js","sourceRoot":"","sources":["../../src/domain/Crossfade.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  import { Signal } from '../lib/Signal';
2
2
  /**
3
3
  * DragManager - centralized drag state tracking.
4
- * Modeled after Ardour's _drags->active() / _drags->abort() pattern
5
- * (gtk2_ardour/editor_ops.cc).
6
4
  *
7
5
  * Components register/unregister active drags.
8
6
  * HistoryHandler aborts active drags before undo/redo.
@@ -1 +1 @@
1
- {"version":3,"file":"DragManager.d.ts","sourceRoot":"","sources":["../../src/domain/DragManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;;;;GAOG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,SAAgB,WAAW,eAAsB;IACjD,OAAO,CAAC,gBAAgB,CAAa;IAErC,OAAO;WAEO,WAAW,IAAI,WAAW;IAOjC,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,IAAI;IAI7B,IAAW,MAAM,IAAI,OAAO,CAE3B;IAEM,KAAK,IAAI,IAAI;CAMvB"}
1
+ {"version":3,"file":"DragManager.d.ts","sourceRoot":"","sources":["../../src/domain/DragManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;;GAKG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,SAAgB,WAAW,eAAsB;IACjD,OAAO,CAAC,gBAAgB,CAAa;IAErC,OAAO;WAEO,WAAW,IAAI,WAAW;IAOjC,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,IAAI;IAI7B,IAAW,MAAM,IAAI,OAAO,CAE3B;IAEM,KAAK,IAAI,IAAI;CAMvB"}
@@ -1,8 +1,6 @@
1
1
  import { Signal } from '../lib/Signal';
2
2
  /**
3
3
  * DragManager - centralized drag state tracking.
4
- * Modeled after Ardour's _drags->active() / _drags->abort() pattern
5
- * (gtk2_ardour/editor_ops.cc).
6
4
  *
7
5
  * Components register/unregister active drags.
8
6
  * HistoryHandler aborts active drags before undo/redo.
@@ -1 +1 @@
1
- {"version":3,"file":"DragManager.js","sourceRoot":"","sources":["../../src/domain/DragManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,OAAO,WAAW;IAKpB;QAHgB,gBAAW,GAAG,IAAI,MAAM,EAAQ,CAAC;QACzC,qBAAgB,GAAW,CAAC,CAAC;IAEd,CAAC;IAEjB,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YACxB,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,YAAY;QACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAEM,cAAc;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK;QACR,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"DragManager.js","sourceRoot":"","sources":["../../src/domain/DragManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IAKpB;QAHgB,gBAAW,GAAG,IAAI,MAAM,EAAQ,CAAC;QACzC,qBAAgB,GAAW,CAAC,CAAC;IAEd,CAAC;IAEjB,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YACxB,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,YAAY;QACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAEM,cAAc;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK;QACR,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;CACJ"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Edit Mode
3
- * Ardour 참조: gtk2_ardour/editing_syms.inc.h (EditMode)
4
3
  *
5
4
  * 리전 이동/삭제 시 주변 리전의 반응을 결정합니다.
6
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EditMode.d.ts","sourceRoot":"","sources":["../../src/domain/EditMode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oBAAY,QAAQ;IAChB,oBAAoB;IACpB,KAAK,UAAU;IACf,yBAAyB;IACzB,MAAM,WAAW;IACjB,uBAAuB;IACvB,IAAI,SAAS;CAChB"}
1
+ {"version":3,"file":"EditMode.d.ts","sourceRoot":"","sources":["../../src/domain/EditMode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,QAAQ;IAChB,oBAAoB;IACpB,KAAK,UAAU;IACf,yBAAyB;IACzB,MAAM,WAAW;IACjB,uBAAuB;IACvB,IAAI,SAAS;CAChB"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Edit Mode
3
- * Ardour 참조: gtk2_ardour/editing_syms.inc.h (EditMode)
4
3
  *
5
4
  * 리전 이동/삭제 시 주변 리전의 반응을 결정합니다.
6
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EditMode.js","sourceRoot":"","sources":["../../src/domain/EditMode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,oBAAoB;IACpB,2BAAe,CAAA;IACf,yBAAyB;IACzB,6BAAiB,CAAA;IACjB,uBAAuB;IACvB,yBAAa,CAAA;AACjB,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
1
+ {"version":3,"file":"EditMode.js","sourceRoot":"","sources":["../../src/domain/EditMode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,oBAAoB;IACpB,2BAAe,CAAA;IACf,yBAAyB;IACzB,6BAAiB,CAAA;IACjB,uBAAuB;IACvB,yBAAa,CAAA;AACjB,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
@@ -5,16 +5,42 @@ export declare enum ExportFormat {
5
5
  WAV = "wav",
6
6
  MP3 = "mp3",
7
7
  OGG = "ogg",
8
- FLAC = "flac"
8
+ FLAC = "flac",
9
+ MIDI = "midi"
9
10
  }
10
11
  export declare enum ExportSampleFormat {
11
12
  INT16 = "int16",
12
13
  INT24 = "int24",
13
14
  FLOAT32 = "float32"
14
15
  }
16
+ export type NormalizeMode = 'peak' | 'lufs';
17
+ /**
18
+ * Timespan for batch export
19
+ */
20
+ export interface ExportTimespan {
21
+ name: string;
22
+ startFrame: FrameCount;
23
+ endFrame: FrameCount;
24
+ }
25
+ /**
26
+ * BWF (Broadcast WAV) metadata
27
+ * EBU Tech 3285 — Broadcast Wave Format specification
28
+ */
29
+ export interface BwfMetadata {
30
+ description?: string;
31
+ originator?: string;
32
+ originatorReference?: string;
33
+ originationDate?: string;
34
+ originationTime?: string;
35
+ timeReference?: number;
36
+ codingHistory?: string;
37
+ }
38
+ /**
39
+ * @deprecated Use BwfMetadata (fields are now optional). Kept for backward compat.
40
+ */
41
+ export type BWFMetadata = BwfMetadata;
15
42
  /**
16
43
  * Export Configuration
17
- * Ardour 참조: libs/ardour/ardour/export_format_specification.h
18
44
  */
19
45
  export declare class ExportConfig {
20
46
  readonly id: string;
@@ -28,12 +54,28 @@ export declare class ExportConfig {
28
54
  endFrame: FrameCount;
29
55
  filename: string;
30
56
  folder: string;
57
+ filenameTemplate: string;
58
+ presetId?: string;
31
59
  exportMasterOnly: boolean;
32
60
  trackIds: string[];
33
61
  stemExport: boolean;
62
+ splitMono: boolean;
34
63
  ditherType: DitherType;
35
64
  normalize: boolean;
65
+ normalizeMode: NormalizeMode;
36
66
  targetPeakDb?: number;
67
+ targetLufs: number;
68
+ truePeakLimit: boolean;
69
+ truePeakCeiling: number;
70
+ timespans: ExportTimespan[];
71
+ silencePaddingStart: number;
72
+ silencePaddingEnd: number;
73
+ trimSilence: boolean;
74
+ exportCdMarkers: boolean;
75
+ cdMarkerFormat: 'cue' | 'toc' | 'mp4ch';
76
+ bwfMetadata: boolean;
77
+ bwfData?: BwfMetadata;
78
+ reimportAfterExport: boolean;
37
79
  readonly changed: Signal<void>;
38
80
  constructor(id?: string);
39
81
  setFormat(format: ExportFormat): void;
@@ -42,14 +84,68 @@ export declare class ExportConfig {
42
84
  setRangeById(rangeId: RangeId): void;
43
85
  setFilename(filename: string): void;
44
86
  setFolder(folder: string): void;
87
+ setFilenameTemplate(template: string): void;
45
88
  setNormalize(normalize: boolean, targetPeakDb?: number): void;
89
+ setNormalizeMode(mode: NormalizeMode): void;
90
+ setTargetLufs(lufs: number): void;
91
+ setTruePeakLimit(enabled: boolean, ceiling?: number): void;
46
92
  setStemExport(stemExport: boolean): void;
93
+ setSplitMono(splitMono: boolean): void;
47
94
  setQuality(quality: number): void;
48
95
  setDitherType(ditherType: DitherType): void;
49
96
  setExportMasterOnly(masterOnly: boolean): void;
50
97
  setTrackIds(trackIds: string[]): void;
98
+ setTimespans(timespans: ExportTimespan[]): void;
99
+ setSilencePadding(startFrames: number, endFrames: number): void;
100
+ setTrimSilence(trim: boolean): void;
101
+ setCdMarkerExport(enabled: boolean, format?: 'cue' | 'toc' | 'mp4ch'): void;
102
+ setBwfMetadata(enabled: boolean, data?: BwfMetadata): void;
103
+ setPresetId(presetId: string | undefined): void;
51
104
  validate(): boolean;
52
105
  getDuration(): FrameCount;
53
106
  getFullPath(): string;
107
+ /**
108
+ * Serialize to JSON for preset storage.
109
+ */
110
+ toJSON(): ExportConfigSnapshot;
111
+ /**
112
+ * Restore from JSON snapshot.
113
+ */
114
+ static fromJSON(data: ExportConfigSnapshot): ExportConfig;
115
+ }
116
+ export interface ExportConfigSnapshot {
117
+ id: string;
118
+ format: ExportFormat;
119
+ sampleFormat: ExportSampleFormat;
120
+ sampleRate: number;
121
+ bitrate?: number;
122
+ quality?: number;
123
+ rangeId?: string;
124
+ startFrame: number;
125
+ endFrame: number;
126
+ filename: string;
127
+ folder?: string;
128
+ filenameTemplate?: string;
129
+ presetId?: string;
130
+ exportMasterOnly: boolean;
131
+ trackIds: string[];
132
+ stemExport: boolean;
133
+ splitMono?: boolean;
134
+ ditherType: DitherType;
135
+ normalize: boolean;
136
+ normalizeMode?: NormalizeMode;
137
+ targetPeakDb?: number;
138
+ targetLufs?: number;
139
+ truePeakLimit?: boolean;
140
+ truePeakCeiling?: number;
141
+ timespans?: ExportTimespan[];
142
+ silencePaddingStart?: number;
143
+ silencePaddingEnd?: number;
144
+ trimSilence?: boolean;
145
+ exportCdMarkers?: boolean;
146
+ cdMarkerFormat?: 'cue' | 'toc' | 'mp4ch';
147
+ bwfMetadata?: boolean;
148
+ bwfData?: BwfMetadata;
149
+ reimportAfterExport?: boolean;
54
150
  }
55
151
  //# sourceMappingURL=ExportConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExportConfig.d.ts","sourceRoot":"","sources":["../../src/domain/ExportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,oBAAY,YAAY;IACpB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;CAChB;AAED,oBAAY,kBAAkB;IAC1B,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;CACtB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACrB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,YAAY,CAAoB;IACxC,YAAY,EAAE,kBAAkB,CAA8B;IAC9D,UAAU,EAAE,MAAM,CAAS;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,UAAU,CAAK;IAC3B,QAAQ,EAAE,UAAU,CAAK;IAGzB,QAAQ,EAAE,MAAM,CAAY;IAC5B,MAAM,EAAE,MAAM,CAAM;IAGpB,gBAAgB,EAAE,OAAO,CAAQ;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAM;IAGxB,UAAU,EAAE,OAAO,CAAS;IAG5B,UAAU,EAAE,UAAU,CAAmB;IAGzC,SAAS,EAAE,OAAO,CAAS;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAG7B,SAAgB,OAAO,eAAsB;gBAEjC,EAAE,CAAC,EAAE,MAAM;IAIhB,SAAS,CAAC,MAAM,EAAE,YAAY;IAK9B,eAAe,CAAC,YAAY,EAAE,kBAAkB;IAKhD,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU;IAOrD,YAAY,CAAC,OAAO,EAAE,OAAO;IAK7B,WAAW,CAAC,QAAQ,EAAE,MAAM;IAK5B,SAAS,CAAC,MAAM,EAAE,MAAM;IAKxB,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM;IAMtD,aAAa,CAAC,UAAU,EAAE,OAAO;IAKjC,UAAU,CAAC,OAAO,EAAE,MAAM;IAK1B,aAAa,CAAC,UAAU,EAAE,UAAU;IAKpC,mBAAmB,CAAC,UAAU,EAAE,OAAO;IAKvC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;IAK9B,QAAQ,IAAI,OAAO;IAQnB,WAAW,IAAI,UAAU;IAIzB,WAAW,IAAI,MAAM;CAK/B"}
1
+ {"version":3,"file":"ExportConfig.d.ts","sourceRoot":"","sources":["../../src/domain/ExportConfig.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export var ExportFormat;
6
6
  ExportFormat["MP3"] = "mp3";
7
7
  ExportFormat["OGG"] = "ogg";
8
8
  ExportFormat["FLAC"] = "flac";
9
+ ExportFormat["MIDI"] = "midi";
9
10
  })(ExportFormat || (ExportFormat = {}));
10
11
  export var ExportSampleFormat;
11
12
  (function (ExportSampleFormat) {
@@ -15,7 +16,6 @@ export var ExportSampleFormat;
15
16
  })(ExportSampleFormat || (ExportSampleFormat = {}));
16
17
  /**
17
18
  * Export Configuration
18
- * Ardour 참조: libs/ardour/ardour/export_format_specification.h
19
19
  */
20
20
  export class ExportConfig {
21
21
  constructor(id) {
@@ -28,15 +28,36 @@ export class ExportConfig {
28
28
  // File Settings
29
29
  this.filename = 'export';
30
30
  this.folder = '';
31
+ this.filenameTemplate = '%s'; // Phase 1: template with tokens
31
32
  // Channel Settings
32
33
  this.exportMasterOnly = true;
33
34
  this.trackIds = []; // If not master only, specific track IDs
34
35
  // Stem Export
35
36
  this.stemExport = false;
37
+ // Split Mono (Phase 5B)
38
+ this.splitMono = false;
36
39
  // Dithering
37
40
  this.ditherType = DitherType.NONE;
38
- // Normalize (peak normalization in dBFS — not LUFS)
41
+ // Normalize
39
42
  this.normalize = false;
43
+ this.normalizeMode = 'peak';
44
+ this.targetLufs = -14; // Phase 2A
45
+ // True Peak Limiter (Phase 2B)
46
+ this.truePeakLimit = false;
47
+ this.truePeakCeiling = -1.0; // dBTP
48
+ // Multi-Timespan (Phase 5A)
49
+ this.timespans = [];
50
+ // Silence Padding (Phase 5C)
51
+ this.silencePaddingStart = 0; // frames
52
+ this.silencePaddingEnd = 0; // frames
53
+ this.trimSilence = false;
54
+ // CD Markers (Phase 5D)
55
+ this.exportCdMarkers = false;
56
+ this.cdMarkerFormat = 'cue';
57
+ // BWF Metadata (Phase 5E)
58
+ this.bwfMetadata = false;
59
+ // Post-Export (Phase 6)
60
+ this.reimportAfterExport = false;
40
61
  // Signals
41
62
  this.changed = new Signal();
42
63
  this.id = id || crypto.randomUUID();
@@ -67,15 +88,37 @@ export class ExportConfig {
67
88
  this.folder = folder;
68
89
  this.changed.emit();
69
90
  }
91
+ setFilenameTemplate(template) {
92
+ this.filenameTemplate = template;
93
+ this.changed.emit();
94
+ }
70
95
  setNormalize(normalize, targetPeakDb) {
71
96
  this.normalize = normalize;
72
97
  this.targetPeakDb = targetPeakDb;
73
98
  this.changed.emit();
74
99
  }
100
+ setNormalizeMode(mode) {
101
+ this.normalizeMode = mode;
102
+ this.changed.emit();
103
+ }
104
+ setTargetLufs(lufs) {
105
+ this.targetLufs = lufs;
106
+ this.changed.emit();
107
+ }
108
+ setTruePeakLimit(enabled, ceiling) {
109
+ this.truePeakLimit = enabled;
110
+ if (ceiling !== undefined)
111
+ this.truePeakCeiling = ceiling;
112
+ this.changed.emit();
113
+ }
75
114
  setStemExport(stemExport) {
76
115
  this.stemExport = stemExport;
77
116
  this.changed.emit();
78
117
  }
118
+ setSplitMono(splitMono) {
119
+ this.splitMono = splitMono;
120
+ this.changed.emit();
121
+ }
79
122
  setQuality(quality) {
80
123
  this.quality = Math.max(0, Math.min(1, quality));
81
124
  this.changed.emit();
@@ -92,6 +135,35 @@ export class ExportConfig {
92
135
  this.trackIds = trackIds;
93
136
  this.changed.emit();
94
137
  }
138
+ setTimespans(timespans) {
139
+ this.timespans = timespans;
140
+ this.changed.emit();
141
+ }
142
+ setSilencePadding(startFrames, endFrames) {
143
+ this.silencePaddingStart = startFrames;
144
+ this.silencePaddingEnd = endFrames;
145
+ this.changed.emit();
146
+ }
147
+ setTrimSilence(trim) {
148
+ this.trimSilence = trim;
149
+ this.changed.emit();
150
+ }
151
+ setCdMarkerExport(enabled, format) {
152
+ this.exportCdMarkers = enabled;
153
+ if (format)
154
+ this.cdMarkerFormat = format;
155
+ this.changed.emit();
156
+ }
157
+ setBwfMetadata(enabled, data) {
158
+ this.bwfMetadata = enabled;
159
+ if (data)
160
+ this.bwfData = data;
161
+ this.changed.emit();
162
+ }
163
+ setPresetId(presetId) {
164
+ this.presetId = presetId;
165
+ this.changed.emit();
166
+ }
95
167
  validate() {
96
168
  if (this.endFrame <= this.startFrame)
97
169
  return false;
@@ -111,5 +183,85 @@ export class ExportConfig {
111
183
  const folder = this.folder || 'exports';
112
184
  return `${folder}/${this.filename}.${ext}`;
113
185
  }
186
+ /**
187
+ * Serialize to JSON for preset storage.
188
+ */
189
+ toJSON() {
190
+ return {
191
+ id: this.id,
192
+ format: this.format,
193
+ sampleFormat: this.sampleFormat,
194
+ sampleRate: this.sampleRate,
195
+ bitrate: this.bitrate,
196
+ quality: this.quality,
197
+ rangeId: this.rangeId,
198
+ startFrame: this.startFrame,
199
+ endFrame: this.endFrame,
200
+ filename: this.filename,
201
+ folder: this.folder,
202
+ filenameTemplate: this.filenameTemplate,
203
+ presetId: this.presetId,
204
+ exportMasterOnly: this.exportMasterOnly,
205
+ trackIds: [...this.trackIds],
206
+ stemExport: this.stemExport,
207
+ splitMono: this.splitMono,
208
+ ditherType: this.ditherType,
209
+ normalize: this.normalize,
210
+ normalizeMode: this.normalizeMode,
211
+ targetPeakDb: this.targetPeakDb,
212
+ targetLufs: this.targetLufs,
213
+ truePeakLimit: this.truePeakLimit,
214
+ truePeakCeiling: this.truePeakCeiling,
215
+ timespans: this.timespans.map(ts => (Object.assign({}, ts))),
216
+ silencePaddingStart: this.silencePaddingStart,
217
+ silencePaddingEnd: this.silencePaddingEnd,
218
+ trimSilence: this.trimSilence,
219
+ exportCdMarkers: this.exportCdMarkers,
220
+ cdMarkerFormat: this.cdMarkerFormat,
221
+ bwfMetadata: this.bwfMetadata,
222
+ bwfData: this.bwfData ? Object.assign({}, this.bwfData) : undefined,
223
+ reimportAfterExport: this.reimportAfterExport,
224
+ };
225
+ }
226
+ /**
227
+ * Restore from JSON snapshot.
228
+ */
229
+ static fromJSON(data) {
230
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
231
+ const config = new ExportConfig(data.id);
232
+ config.format = data.format;
233
+ config.sampleFormat = data.sampleFormat;
234
+ config.sampleRate = data.sampleRate;
235
+ config.bitrate = data.bitrate;
236
+ config.quality = data.quality;
237
+ config.rangeId = data.rangeId;
238
+ config.startFrame = data.startFrame;
239
+ config.endFrame = data.endFrame;
240
+ config.filename = data.filename;
241
+ config.folder = (_a = data.folder) !== null && _a !== void 0 ? _a : '';
242
+ config.filenameTemplate = (_b = data.filenameTemplate) !== null && _b !== void 0 ? _b : '%s';
243
+ config.presetId = data.presetId;
244
+ config.exportMasterOnly = data.exportMasterOnly;
245
+ config.trackIds = data.trackIds ? [...data.trackIds] : [];
246
+ config.stemExport = data.stemExport;
247
+ config.splitMono = (_c = data.splitMono) !== null && _c !== void 0 ? _c : false;
248
+ config.ditherType = data.ditherType;
249
+ config.normalize = data.normalize;
250
+ config.normalizeMode = (_d = data.normalizeMode) !== null && _d !== void 0 ? _d : 'peak';
251
+ config.targetPeakDb = data.targetPeakDb;
252
+ config.targetLufs = (_e = data.targetLufs) !== null && _e !== void 0 ? _e : -14;
253
+ config.truePeakLimit = (_f = data.truePeakLimit) !== null && _f !== void 0 ? _f : false;
254
+ config.truePeakCeiling = (_g = data.truePeakCeiling) !== null && _g !== void 0 ? _g : -1.0;
255
+ config.timespans = data.timespans ? data.timespans.map(ts => (Object.assign({}, ts))) : [];
256
+ config.silencePaddingStart = (_h = data.silencePaddingStart) !== null && _h !== void 0 ? _h : 0;
257
+ config.silencePaddingEnd = (_j = data.silencePaddingEnd) !== null && _j !== void 0 ? _j : 0;
258
+ config.trimSilence = (_k = data.trimSilence) !== null && _k !== void 0 ? _k : false;
259
+ config.exportCdMarkers = (_l = data.exportCdMarkers) !== null && _l !== void 0 ? _l : false;
260
+ config.cdMarkerFormat = (_m = data.cdMarkerFormat) !== null && _m !== void 0 ? _m : 'cue';
261
+ config.bwfMetadata = (_o = data.bwfMetadata) !== null && _o !== void 0 ? _o : false;
262
+ config.bwfData = data.bwfData ? Object.assign({}, data.bwfData) : undefined;
263
+ config.reimportAfterExport = (_p = data.reimportAfterExport) !== null && _p !== void 0 ? _p : false;
264
+ return config;
265
+ }
114
266
  }
115
267
  //# sourceMappingURL=ExportConfig.js.map