@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
@@ -1,76 +1,270 @@
1
1
  import { Session } from '../domain/Session';
2
2
  import { TrackType } from '../domain/Track';
3
+ import { Signal } from '../lib/Signal';
4
+ // ─── SessionTemplateManager ──────────────────────────────────────────────────
3
5
  /**
4
- * Built-in session templates.
6
+ * Manages session templates — predefined track / routing configurations
7
+ * that users can instantiate to quickly bootstrap new sessions.
8
+ *
9
+ * Includes a set of built-in factory templates (recording, podcast,
10
+ * mixing, mastering, production) and supports user-created custom
11
+ * templates.
5
12
  */
6
- const TEMPLATES = [
7
- {
8
- id: 'empty',
9
- name: 'Empty Session',
10
- description: 'A blank session with no tracks.',
11
- trackCount: 0,
12
- },
13
- {
14
- id: '4-track-recording',
15
- name: '4-Track Recording',
16
- description: 'Four audio tracks ready for recording.',
17
- trackCount: 4,
18
- },
19
- {
20
- id: 'mixing-8-tracks',
21
- name: 'Mixing Template (8 tracks)',
22
- description: 'Eight audio tracks pre-configured for mixing.',
23
- trackCount: 8,
24
- },
25
- ];
13
+ export class SessionTemplateManager {
14
+ constructor() {
15
+ this._templates = new Map();
16
+ this.templatesChanged = new Signal();
17
+ // Seed with default templates
18
+ for (const t of SessionTemplateManager.getDefaultTemplates()) {
19
+ this._templates.set(t.id, t);
20
+ }
21
+ }
22
+ // ─── CRUD ─────────────────────────────────────────────────────────────────
23
+ /**
24
+ * Add a new template. An `id`, `createdAt`, and `updatedAt` are generated
25
+ * automatically.
26
+ */
27
+ addTemplate(template) {
28
+ const now = new Date().toISOString();
29
+ const full = Object.assign(Object.assign({}, template), { id: crypto.randomUUID(), createdAt: now, updatedAt: now });
30
+ this._templates.set(full.id, full);
31
+ this.templatesChanged.emit();
32
+ return full;
33
+ }
34
+ /**
35
+ * Update an existing template. Only the supplied fields are merged; the
36
+ * `updatedAt` timestamp is refreshed automatically.
37
+ */
38
+ updateTemplate(id, updates) {
39
+ const existing = this._templates.get(id);
40
+ if (!existing) {
41
+ throw new Error(`SessionTemplate not found: ${id}`);
42
+ }
43
+ const updated = Object.assign(Object.assign(Object.assign({}, existing), updates), { id, updatedAt: new Date().toISOString() });
44
+ this._templates.set(id, updated);
45
+ this.templatesChanged.emit();
46
+ }
47
+ /**
48
+ * Remove a template by ID.
49
+ */
50
+ removeTemplate(id) {
51
+ if (this._templates.delete(id)) {
52
+ this.templatesChanged.emit();
53
+ }
54
+ }
55
+ /**
56
+ * Get a single template by ID.
57
+ */
58
+ getTemplate(id) {
59
+ return this._templates.get(id);
60
+ }
61
+ /**
62
+ * Get all registered templates.
63
+ */
64
+ getAllTemplates() {
65
+ return Array.from(this._templates.values());
66
+ }
67
+ /**
68
+ * Get templates filtered by category.
69
+ */
70
+ getTemplatesByCategory(category) {
71
+ return this.getAllTemplates().filter(t => t.category === category);
72
+ }
73
+ // ─── Create template from a live Session ──────────────────────────────────
74
+ /**
75
+ * Snapshot a Session into a reusable template.
76
+ */
77
+ static createFromSession(session, name, description) {
78
+ const trackTemplates = session.tracks.map((track) => ({
79
+ name: track.name,
80
+ type: track.type,
81
+ color: track.color,
82
+ armed: track.armed,
83
+ monitorMode: track.monitorMode,
84
+ }));
85
+ const now = new Date().toISOString();
86
+ return {
87
+ id: crypto.randomUUID(),
88
+ name,
89
+ description,
90
+ category: 'custom',
91
+ sampleRate: session.sampleRate,
92
+ tempo: session.tempo,
93
+ timeSignature: [...session.timeSignature],
94
+ tracks: trackTemplates,
95
+ createdAt: now,
96
+ updatedAt: now,
97
+ };
98
+ }
99
+ // ─── Built-in default templates ──────────────────────────────────────────
100
+ static getDefaultTemplates() {
101
+ const now = new Date().toISOString();
102
+ return [
103
+ // 1. Empty Session
104
+ {
105
+ id: 'tpl-empty',
106
+ name: 'Empty Session',
107
+ description: 'A blank slate with no tracks — start from scratch.',
108
+ category: 'custom',
109
+ sampleRate: 44100,
110
+ tempo: 120,
111
+ timeSignature: [4, 4],
112
+ tracks: [],
113
+ createdAt: now,
114
+ updatedAt: now,
115
+ },
116
+ // 2. Basic Recording (8 audio tracks)
117
+ {
118
+ id: 'tpl-basic-recording',
119
+ name: 'Basic Recording',
120
+ description: '8 audio tracks pre-named for a typical drum/bass/vocal recording session.',
121
+ category: 'recording',
122
+ sampleRate: 48000,
123
+ tempo: 120,
124
+ timeSignature: [4, 4],
125
+ tracks: [
126
+ { name: 'Kick', type: TrackType.AUDIO, color: '#ff6b6b', armed: true },
127
+ { name: 'Snare', type: TrackType.AUDIO, color: '#ff922b', armed: true },
128
+ { name: 'HiHat', type: TrackType.AUDIO, color: '#ffd43b', armed: true },
129
+ { name: 'Toms', type: TrackType.AUDIO, color: '#51cf66', armed: true },
130
+ { name: 'OHL', type: TrackType.AUDIO, color: '#20c997', armed: true },
131
+ { name: 'OHR', type: TrackType.AUDIO, color: '#4a9eff', armed: true },
132
+ { name: 'Bass DI', type: TrackType.AUDIO, color: '#cc5de8', armed: true },
133
+ { name: 'Vocal', type: TrackType.AUDIO, color: '#f06595', armed: true },
134
+ ],
135
+ createdAt: now,
136
+ updatedAt: now,
137
+ },
138
+ // 3. Podcast (2 audio + 1 music bed)
139
+ {
140
+ id: 'tpl-podcast',
141
+ name: 'Podcast',
142
+ description: '2 voice tracks (Host, Guest) and a music-bed audio track for podcast production.',
143
+ category: 'podcast',
144
+ sampleRate: 48000,
145
+ tempo: 120,
146
+ timeSignature: [4, 4],
147
+ tracks: [
148
+ { name: 'Host', type: TrackType.AUDIO, color: '#4a9eff', armed: true, monitorMode: 'auto' },
149
+ { name: 'Guest', type: TrackType.AUDIO, color: '#51cf66', armed: true, monitorMode: 'auto' },
150
+ { name: 'Music Bed', type: TrackType.AUDIO, color: '#cc5de8', armed: false },
151
+ ],
152
+ createdAt: now,
153
+ updatedAt: now,
154
+ },
155
+ // 4. Song Production (4 audio + 2 MIDI + 1 bus)
156
+ {
157
+ id: 'tpl-song-production',
158
+ name: 'Song Production',
159
+ description: '4 audio tracks, 2 MIDI tracks, and a Drums bus for modern song production.',
160
+ category: 'production',
161
+ sampleRate: 48000,
162
+ tempo: 128,
163
+ timeSignature: [4, 4],
164
+ tracks: [
165
+ { name: 'Kick', type: TrackType.AUDIO, color: '#ff6b6b' },
166
+ { name: 'Snare', type: TrackType.AUDIO, color: '#ff922b' },
167
+ { name: 'HiHat', type: TrackType.AUDIO, color: '#ffd43b' },
168
+ { name: 'Vocal', type: TrackType.AUDIO, color: '#f06595', armed: true },
169
+ { name: 'Synth Lead', type: TrackType.MIDI, color: '#4a9eff' },
170
+ { name: 'Synth Pad', type: TrackType.MIDI, color: '#cc5de8' },
171
+ { name: 'Drums Bus', type: TrackType.BUS, color: '#868e96' },
172
+ ],
173
+ createdAt: now,
174
+ updatedAt: now,
175
+ },
176
+ // 5. Mixing (pre-configured bus structure)
177
+ {
178
+ id: 'tpl-mixing',
179
+ name: 'Mixing',
180
+ description: 'Pre-configured bus structure for mixing: Drums, Bass, Keys, Vocals, and FX buses.',
181
+ category: 'mixing',
182
+ sampleRate: 48000,
183
+ tempo: 120,
184
+ timeSignature: [4, 4],
185
+ tracks: [
186
+ { name: 'Drums Bus', type: TrackType.BUS, color: '#ff6b6b' },
187
+ { name: 'Bass Bus', type: TrackType.BUS, color: '#ff922b' },
188
+ { name: 'Keys Bus', type: TrackType.BUS, color: '#ffd43b' },
189
+ { name: 'Vocals Bus', type: TrackType.BUS, color: '#4a9eff' },
190
+ { name: 'FX Bus', type: TrackType.BUS, color: '#cc5de8' },
191
+ ],
192
+ createdAt: now,
193
+ updatedAt: now,
194
+ },
195
+ // 6. Mastering (1 stereo audio + 1 reference)
196
+ {
197
+ id: 'tpl-mastering',
198
+ name: 'Mastering',
199
+ description: '1 stereo audio track for the mix and a reference track for A/B comparison.',
200
+ category: 'mastering',
201
+ sampleRate: 96000,
202
+ tempo: 120,
203
+ timeSignature: [4, 4],
204
+ tracks: [
205
+ { name: 'Mix', type: TrackType.AUDIO, color: '#4a9eff' },
206
+ { name: 'Reference', type: TrackType.AUDIO, color: '#868e96' },
207
+ ],
208
+ createdAt: now,
209
+ updatedAt: now,
210
+ },
211
+ ];
212
+ }
213
+ // ─── Serialization ────────────────────────────────────────────────────────
214
+ /**
215
+ * Serialize all templates to a JSON string.
216
+ */
217
+ serialize() {
218
+ const snapshot = {
219
+ templates: this.getAllTemplates(),
220
+ };
221
+ return JSON.stringify(snapshot, null, 2);
222
+ }
223
+ /**
224
+ * Restore a SessionTemplateManager from a JSON string produced by
225
+ * `serialize()`.
226
+ */
227
+ static deserialize(json) {
228
+ const snapshot = JSON.parse(json);
229
+ const manager = new SessionTemplateManager();
230
+ // Clear the defaults that the constructor seeded
231
+ manager._templates.clear();
232
+ for (const t of snapshot.templates) {
233
+ manager._templates.set(t.id, t);
234
+ }
235
+ return manager;
236
+ }
237
+ }
238
+ // ─── Convenience helpers (backward-compatible with old API) ──────────────────
26
239
  /**
27
240
  * Returns the list of available session templates.
28
241
  */
29
242
  export function getTemplates() {
30
- return [...TEMPLATES];
243
+ return SessionTemplateManager.getDefaultTemplates();
31
244
  }
32
245
  /**
33
246
  * Create a new Session from a template.
34
247
  *
35
248
  * Each template pre-configures tracks with default names, colors,
36
- * and routing through the master bus.
249
+ * armed state, and routing through the master bus.
37
250
  */
38
251
  export function createFromTemplate(templateId) {
39
- const template = TEMPLATES.find(t => t.id === templateId);
252
+ const templates = SessionTemplateManager.getDefaultTemplates();
253
+ const template = templates.find(t => t.id === templateId);
40
254
  if (!template) {
41
255
  throw new Error(`Unknown template: ${templateId}`);
42
256
  }
43
- const session = new Session(template.name);
44
- switch (templateId) {
45
- case 'empty':
46
- // No tracks
47
- break;
48
- case '4-track-recording': {
49
- const colors = ['#4a9eff', '#ff6b6b', '#51cf66', '#ffd43b'];
50
- for (let i = 0; i < 4; i++) {
51
- const track = session.addTrack(`Track ${i + 1}`, TrackType.AUDIO);
52
- track.color = colors[i];
53
- track.armed = true;
54
- }
55
- break;
257
+ const session = new Session(template.name, undefined, template.sampleRate);
258
+ session.tempo = template.tempo;
259
+ session.timeSignature = [...template.timeSignature];
260
+ for (const tt of template.tracks) {
261
+ const track = session.addTrack(tt.name, tt.type);
262
+ if (tt.color) {
263
+ track.color = tt.color;
56
264
  }
57
- case 'mixing-8-tracks': {
58
- const mixColors = [
59
- '#4a9eff', '#ff6b6b', '#51cf66', '#ffd43b',
60
- '#cc5de8', '#ff922b', '#20c997', '#868e96',
61
- ];
62
- const trackNames = [
63
- 'Drums', 'Bass', 'Guitar L', 'Guitar R',
64
- 'Keys', 'Vocals', 'FX', 'Aux',
65
- ];
66
- for (let i = 0; i < 8; i++) {
67
- const track = session.addTrack(trackNames[i], TrackType.AUDIO);
68
- track.color = mixColors[i];
69
- }
70
- break;
265
+ if (tt.armed) {
266
+ track.armed = true;
71
267
  }
72
- default:
73
- throw new Error(`Template factory not implemented: ${templateId}`);
74
268
  }
75
269
  return session;
76
270
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SessionTemplate.js","sourceRoot":"","sources":["../../src/storage/SessionTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAY5C;;GAEG;AACH,MAAM,SAAS,GAAsB;IACjC;QACI,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,CAAC;KAChB;IACD;QACI,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE,CAAC;KAChB;IACD;QACI,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,+CAA+C;QAC5D,UAAU,EAAE,CAAC;KAChB;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY;IACxB,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACjD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE3C,QAAQ,UAAU,EAAE,CAAC;QACjB,KAAK,OAAO;YACR,YAAY;YACZ,MAAM;QAEV,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBAClE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACvB,CAAC;YACD,MAAM;QACV,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACrB,MAAM,SAAS,GAAG;gBACd,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;gBAC1C,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;aAC7C,CAAC;YACF,MAAM,UAAU,GAAG;gBACf,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;gBACvC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;aAChC,CAAC;YACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC/D,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM;QACV,CAAC;QAED;YACI,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"SessionTemplate.js","sourceRoot":"","sources":["../../src/storage/SessionTemplate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * BWF (Broadcast WAV) Metadata Writer
3
+ *
4
+ * Adds a 'bext' chunk to a WAV file for broadcast metadata (EBU Tech 3285).
5
+ *
6
+ * BWF extends WAV by adding a 'bext' chunk with:
7
+ * - Description (256 chars)
8
+ * - Originator (32 chars)
9
+ * - OriginatorReference (32 chars)
10
+ * - OriginationDate (10 chars: YYYY-MM-DD)
11
+ * - OriginationTime (8 chars: HH:MM:SS)
12
+ * - TimeReference (64-bit sample count since midnight)
13
+ * - Version (2 bytes)
14
+ * - UMID (64 bytes)
15
+ * - LoudnessValue (2 bytes)
16
+ * - LoudnessRange (2 bytes)
17
+ * - MaxTruePeakLevel (2 bytes)
18
+ * - MaxMomentaryLoudness (2 bytes)
19
+ * - MaxShortTermLoudness (2 bytes)
20
+ */
21
+ export interface BwfChunkData {
22
+ description?: string;
23
+ originator?: string;
24
+ originatorReference?: string;
25
+ originationDate?: string;
26
+ originationTime?: string;
27
+ timeReference?: number;
28
+ loudnessValue?: number;
29
+ loudnessRange?: number;
30
+ maxTruePeakLevel?: number;
31
+ }
32
+ /**
33
+ * Build a BWF 'bext' chunk as a Uint8Array.
34
+ */
35
+ export declare function buildBextChunk(data: BwfChunkData): Uint8Array;
36
+ /**
37
+ * Insert a bext chunk into a WAV blob, creating a BWF file.
38
+ * Inserts after the 'fmt ' chunk and before the 'data' chunk.
39
+ */
40
+ export declare function insertBextIntoWav(wavBlob: Blob, bextData: BwfChunkData): Promise<Blob>;
41
+ //# sourceMappingURL=BwfMetadataWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BwfMetadataWriter.d.ts","sourceRoot":"","sources":["../../src/utils/BwfMetadataWriter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,YAAY;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAsE7D;AAQD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDtF"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * BWF (Broadcast WAV) Metadata Writer
3
+ *
4
+ * Adds a 'bext' chunk to a WAV file for broadcast metadata (EBU Tech 3285).
5
+ *
6
+ * BWF extends WAV by adding a 'bext' chunk with:
7
+ * - Description (256 chars)
8
+ * - Originator (32 chars)
9
+ * - OriginatorReference (32 chars)
10
+ * - OriginationDate (10 chars: YYYY-MM-DD)
11
+ * - OriginationTime (8 chars: HH:MM:SS)
12
+ * - TimeReference (64-bit sample count since midnight)
13
+ * - Version (2 bytes)
14
+ * - UMID (64 bytes)
15
+ * - LoudnessValue (2 bytes)
16
+ * - LoudnessRange (2 bytes)
17
+ * - MaxTruePeakLevel (2 bytes)
18
+ * - MaxMomentaryLoudness (2 bytes)
19
+ * - MaxShortTermLoudness (2 bytes)
20
+ */
21
+ /**
22
+ * Build a BWF 'bext' chunk as a Uint8Array.
23
+ */
24
+ export function buildBextChunk(data) {
25
+ var _a;
26
+ // Fixed-size bext chunk (version 2): 602 bytes minimum
27
+ const BEXT_SIZE = 602;
28
+ const chunk = new Uint8Array(8 + BEXT_SIZE); // 8 for chunk ID + size
29
+ const view = new DataView(chunk.buffer);
30
+ // Chunk ID: "bext"
31
+ chunk[0] = 0x62; // b
32
+ chunk[1] = 0x65; // e
33
+ chunk[2] = 0x78; // x
34
+ chunk[3] = 0x74; // t
35
+ // Chunk size
36
+ view.setUint32(4, BEXT_SIZE, true);
37
+ const encoder = new TextEncoder();
38
+ // All data offsets below are relative to chunk start (includes 8-byte header)
39
+ const H = 8; // chunk header size (ID + size)
40
+ // Description (256 bytes, data offset 0)
41
+ writeFixedString(chunk, H + 0, data.description || '', 256);
42
+ // Originator (32 bytes, data offset 256)
43
+ writeFixedString(chunk, H + 256, data.originator || 'drop.ai Web DAW', 32);
44
+ // OriginatorReference (32 bytes, data offset 288)
45
+ writeFixedString(chunk, H + 288, data.originatorReference || '', 32);
46
+ // OriginationDate (10 bytes, data offset 320)
47
+ const now = new Date();
48
+ const dateStr = data.originationDate || `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;
49
+ writeFixedString(chunk, H + 320, dateStr, 10);
50
+ // OriginationTime (8 bytes, data offset 330)
51
+ const timeStr = data.originationTime || `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`;
52
+ writeFixedString(chunk, H + 330, timeStr, 8);
53
+ // TimeReference (64-bit, data offset 338)
54
+ const timeRef = (_a = data.timeReference) !== null && _a !== void 0 ? _a : 0;
55
+ view.setUint32(H + 338, timeRef & 0xFFFFFFFF, true);
56
+ view.setUint32(H + 342, Math.floor(timeRef / 0x100000000) & 0xFFFFFFFF, true);
57
+ // Version (2 bytes, data offset 346) — BWF version 2
58
+ view.setUint16(H + 346, 2, true);
59
+ // UMID (64 bytes, data offset 348) — zeros (no UMID)
60
+ // Already zeros
61
+ // LoudnessValue (2 bytes, data offset 412)
62
+ if (data.loudnessValue !== undefined) {
63
+ view.setInt16(H + 412, Math.round(data.loudnessValue * 100), true);
64
+ }
65
+ // LoudnessRange (2 bytes, data offset 414)
66
+ if (data.loudnessRange !== undefined) {
67
+ view.setInt16(H + 414, Math.round(data.loudnessRange * 100), true);
68
+ }
69
+ // MaxTruePeakLevel (2 bytes, data offset 416)
70
+ if (data.maxTruePeakLevel !== undefined) {
71
+ view.setInt16(H + 416, Math.round(data.maxTruePeakLevel * 100), true);
72
+ }
73
+ // MaxMomentaryLoudness (2 bytes, data offset 418) — skip
74
+ // MaxShortTermLoudness (2 bytes, data offset 420) — skip
75
+ // Reserved (180 bytes, data offset 422) — already zeros
76
+ return chunk;
77
+ }
78
+ function writeFixedString(target, offset, str, maxLen) {
79
+ for (let i = 0; i < maxLen; i++) {
80
+ target[offset + i] = i < str.length ? str.charCodeAt(i) & 0xFF : 0;
81
+ }
82
+ }
83
+ /**
84
+ * Insert a bext chunk into a WAV blob, creating a BWF file.
85
+ * Inserts after the 'fmt ' chunk and before the 'data' chunk.
86
+ */
87
+ export function insertBextIntoWav(wavBlob, bextData) {
88
+ return new Promise((resolve, reject) => {
89
+ const reader = new FileReader();
90
+ reader.onload = () => {
91
+ try {
92
+ const wavBuffer = reader.result;
93
+ const wavBytes = new Uint8Array(wavBuffer);
94
+ const bextChunk = buildBextChunk(bextData);
95
+ // Find 'data' chunk position
96
+ let dataOffset = 12; // skip RIFF header
97
+ while (dataOffset < wavBytes.length - 8) {
98
+ const chunkId = String.fromCharCode(wavBytes[dataOffset], wavBytes[dataOffset + 1], wavBytes[dataOffset + 2], wavBytes[dataOffset + 3]);
99
+ const chunkSize = new DataView(wavBuffer).getUint32(dataOffset + 4, true);
100
+ if (chunkId === 'data') {
101
+ break;
102
+ }
103
+ dataOffset += 8 + chunkSize;
104
+ // Align to even boundary
105
+ if (dataOffset % 2 !== 0)
106
+ dataOffset++;
107
+ }
108
+ // Insert bext chunk before 'data'
109
+ const before = wavBytes.slice(0, dataOffset);
110
+ const after = wavBytes.slice(dataOffset);
111
+ // Update RIFF size
112
+ const newSize = wavBytes.length + bextChunk.length;
113
+ const result = new Uint8Array(newSize);
114
+ result.set(before, 0);
115
+ result.set(bextChunk, dataOffset);
116
+ result.set(after, dataOffset + bextChunk.length);
117
+ // Update RIFF chunk size (offset 4)
118
+ const resultView = new DataView(result.buffer);
119
+ resultView.setUint32(4, newSize - 8, true);
120
+ resolve(new Blob([result], { type: 'audio/wav' }));
121
+ }
122
+ catch (e) {
123
+ reject(e);
124
+ }
125
+ };
126
+ reader.onerror = () => reject(reader.error);
127
+ reader.readAsArrayBuffer(wavBlob);
128
+ });
129
+ }
130
+ //# sourceMappingURL=BwfMetadataWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BwfMetadataWriter.js","sourceRoot":"","sources":["../../src/utils/BwfMetadataWriter.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Dither Processor
3
- * Ardour 참조: libs/ardour/dither.cc
4
3
  *
5
4
  * Applies TPDF (Triangular Probability Density Function) dithering
6
5
  * when converting from higher to lower bit depths.
@@ -1 +1 @@
1
- {"version":3,"file":"DitherProcessor.d.ts","sourceRoot":"","sources":["../../src/utils/DitherProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,oBAAY,UAAU;IAClB,IAAI,SAAS;IACb,IAAI,SAAS,CAAU,sCAAsC;IAC7D,MAAM,WAAW;CACpB;AAED,qBAAa,eAAe;IACxB;;;;;;;OAOG;WACW,KAAK,CACf,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,UAA4B,GACzC,IAAI;IAYP;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAcxB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;CAoB7B"}
1
+ {"version":3,"file":"DitherProcessor.d.ts","sourceRoot":"","sources":["../../src/utils/DitherProcessor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oBAAY,UAAU;IAClB,IAAI,SAAS;IACb,IAAI,SAAS,CAAU,sCAAsC;IAC7D,MAAM,WAAW;CACpB;AAED,qBAAa,eAAe;IACxB;;;;;;;OAOG;WACW,KAAK,CACf,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,UAA4B,GACzC,IAAI;IAYP;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAcxB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;CAoB7B"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Dither Processor
3
- * Ardour 참조: libs/ardour/dither.cc
4
3
  *
5
4
  * Applies TPDF (Triangular Probability Density Function) dithering
6
5
  * when converting from higher to lower bit depths.
@@ -1 +1 @@
1
- {"version":3,"file":"DitherProcessor.js","sourceRoot":"","sources":["../../src/utils/DitherProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,+BAAiB,CAAA;AACrB,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,OAAO,eAAe;IACxB;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CACf,OAAqB,EACrB,UAAkB,EAClB,aAAyB,UAAU,CAAC,IAAI;QAExC,IAAI,UAAU,KAAK,UAAU,CAAC,IAAI;YAAE,OAAO;QAE3C,MAAM,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;QAE3D,IAAI,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,UAAU,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACK,MAAM,CAAC,SAAS,CAAC,OAAqB,EAAE,gBAAwB;QACpE,MAAM,KAAK,GAAG,GAAG,GAAG,gBAAgB,CAAC,CAAC,qBAAqB;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,uEAAuE;YACvE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC;YAE5C,2EAA2E;YAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;YACpE,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QAC3B,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,WAAW,CAAC,OAAqB,EAAE,gBAAwB;QACtE,MAAM,KAAK,GAAG,GAAG,GAAG,gBAAgB,CAAC,CAAC,qBAAqB;QAC3D,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,iBAAiB;YACjB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC;YAE5C,iDAAiD;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,aAAa,GAAG,GAAG,CAAC;YAEzD,+BAA+B;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;YACrD,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEvC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QAC3B,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"DitherProcessor.js","sourceRoot":"","sources":["../../src/utils/DitherProcessor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,+BAAiB,CAAA;AACrB,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,OAAO,eAAe;IACxB;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CACf,OAAqB,EACrB,UAAkB,EAClB,aAAyB,UAAU,CAAC,IAAI;QAExC,IAAI,UAAU,KAAK,UAAU,CAAC,IAAI;YAAE,OAAO;QAE3C,MAAM,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;QAE3D,IAAI,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,UAAU,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACK,MAAM,CAAC,SAAS,CAAC,OAAqB,EAAE,gBAAwB;QACpE,MAAM,KAAK,GAAG,GAAG,GAAG,gBAAgB,CAAC,CAAC,qBAAqB;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,uEAAuE;YACvE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC;YAE5C,2EAA2E;YAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;YACpE,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QAC3B,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,WAAW,CAAC,OAAqB,EAAE,gBAAwB;QACtE,MAAM,KAAK,GAAG,GAAG,GAAG,gBAAgB,CAAC,CAAC,qBAAqB;QAC3D,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,iBAAiB;YACjB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC;YAE5C,iDAAiD;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,aAAa,GAAG,GAAG,CAAC;YAEzD,+BAA+B;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;YACrD,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEvC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QAC3B,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Filename Template Parser
3
+ *
4
+ * Supported tokens:
5
+ * %s - Session name
6
+ * %n - Timespan name (range/region name)
7
+ * %d - Date (YYYY-MM-DD)
8
+ * %t - Time (HH-MM-SS)
9
+ * %f - Format (wav/mp3/ogg/flac)
10
+ * %r - Revision number (auto-increment)
11
+ * %b - Bit depth / bitrate
12
+ * %c - Channel config (stereo/mono)
13
+ * %T - Track name (for stem export)
14
+ */
15
+ export interface FilenameTemplateContext {
16
+ sessionName?: string;
17
+ timespanName?: string;
18
+ format?: string;
19
+ revision?: number;
20
+ bitDepthOrRate?: string;
21
+ channelConfig?: string;
22
+ trackName?: string;
23
+ }
24
+ /**
25
+ * Resolve a filename template string into an actual filename.
26
+ */
27
+ export declare function resolveFilenameTemplate(template: string, context: FilenameTemplateContext): string;
28
+ /**
29
+ * Get a human-readable preview of what tokens will resolve to.
30
+ */
31
+ export declare function previewFilenameTemplate(template: string, context: FilenameTemplateContext): string;
32
+ /**
33
+ * List all supported tokens with descriptions.
34
+ */
35
+ export declare function getTemplateTokens(): Array<{
36
+ token: string;
37
+ description: string;
38
+ }>;
39
+ //# sourceMappingURL=FilenameTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilenameTemplate.d.ts","sourceRoot":"","sources":["../../src/utils/FilenameTemplate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,uBAAuB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GACjC,MAAM,CAiCR;AASD;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GACjC,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAYjF"}