@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,192 @@
1
+ import { Signal } from '../lib/Signal';
2
+ import { ExportStatus, ExportProgress } from './ExportStatus';
3
+ /**
4
+ * Video Export Progress Stages
5
+ * Extends base export progress with video-specific stages
6
+ */
7
+ export var VideoExportStage;
8
+ (function (VideoExportStage) {
9
+ VideoExportStage["IDLE"] = "idle";
10
+ VideoExportStage["RENDERING_AUDIO"] = "rendering_audio";
11
+ VideoExportStage["RENDERING_VIDEO"] = "rendering_video";
12
+ VideoExportStage["MUXING"] = "muxing";
13
+ VideoExportStage["COMPLETED"] = "completed";
14
+ VideoExportStage["FAILED"] = "failed";
15
+ VideoExportStage["ABORTED"] = "aborted";
16
+ })(VideoExportStage || (VideoExportStage = {}));
17
+ /**
18
+ * Video Export Status
19
+ * Extends ExportStatus to track multi-phase video export:
20
+ * - Phase 1: Audio rendering (40%)
21
+ * - Phase 2: Video frame rendering (40%)
22
+ * - Phase 3: FFmpeg muxing (20%)
23
+ */
24
+ export class VideoExportStatus extends ExportStatus {
25
+ constructor() {
26
+ super();
27
+ // Video-specific progress tracking
28
+ this.totalFrames = 0; // Total video frames to render
29
+ this.processedFrames = 0; // Video frames processed
30
+ this.ffmpegProgress = 0; // FFmpeg muxing progress (0-100)
31
+ // Phase-specific progress
32
+ this.audioProgress = 0; // 0-100
33
+ this.videoProgress = 0; // 0-100
34
+ this.muxingProgress = 0; // 0-100
35
+ // Current stage
36
+ this._currentStage = VideoExportStage.IDLE;
37
+ // Video-specific signals
38
+ this.videoFrameProcessed = new Signal();
39
+ this.ffmpegProgressChanged = new Signal();
40
+ this.stageChanged = new Signal();
41
+ }
42
+ /**
43
+ * Get current video export stage
44
+ */
45
+ get currentStage() {
46
+ return this._currentStage;
47
+ }
48
+ /**
49
+ * Get overall progress (weighted across all phases)
50
+ * Audio: 40%, Video: 40%, Muxing: 20%
51
+ */
52
+ get overallProgress() {
53
+ return (this.audioProgress * 0.4 +
54
+ this.videoProgress * 0.4 +
55
+ this.muxingProgress * 0.2);
56
+ }
57
+ /**
58
+ * Initialize video export
59
+ */
60
+ initVideoExport(totalAudioFrames, totalVideoFrames, filename) {
61
+ // Initialize base export status
62
+ this.init(totalAudioFrames, filename);
63
+ // Initialize video-specific fields
64
+ this.totalFrames = totalVideoFrames;
65
+ this.processedFrames = 0;
66
+ this.ffmpegProgress = 0;
67
+ this.audioProgress = 0;
68
+ this.videoProgress = 0;
69
+ this.muxingProgress = 0;
70
+ this._currentStage = VideoExportStage.RENDERING_AUDIO;
71
+ this.stageChanged.emit(this._currentStage);
72
+ }
73
+ /**
74
+ * Update audio rendering progress
75
+ */
76
+ updateAudioProgress(processedAudioFrames, totalAudioFrames) {
77
+ this.processedFrames = processedAudioFrames;
78
+ this.audioProgress = totalAudioFrames > 0
79
+ ? Math.min(100, (processedAudioFrames / totalAudioFrames) * 100)
80
+ : 0;
81
+ this.frameProcessed.emit(processedAudioFrames);
82
+ }
83
+ /**
84
+ * Start video frame rendering phase
85
+ */
86
+ startVideoRendering() {
87
+ this._currentStage = VideoExportStage.RENDERING_VIDEO;
88
+ this.audioProgress = 100; // Audio is complete
89
+ this.setProgress(ExportProgress.RENDERING);
90
+ this.stageChanged.emit(this._currentStage);
91
+ }
92
+ /**
93
+ * Update video frame rendering progress
94
+ */
95
+ updateVideoFrameProgress(processedFrames) {
96
+ this.processedFrames = processedFrames;
97
+ this.videoProgress = this.totalFrames > 0
98
+ ? Math.min(100, (processedFrames / this.totalFrames) * 100)
99
+ : 0;
100
+ this.videoFrameProcessed.emit(processedFrames);
101
+ }
102
+ /**
103
+ * Start FFmpeg muxing phase
104
+ */
105
+ startMuxing() {
106
+ this._currentStage = VideoExportStage.MUXING;
107
+ this.videoProgress = 100; // Video rendering is complete
108
+ this.setProgress(ExportProgress.ENCODING);
109
+ this.stageChanged.emit(this._currentStage);
110
+ }
111
+ /**
112
+ * Update FFmpeg muxing progress
113
+ */
114
+ updateFFmpegProgress(progress) {
115
+ this.ffmpegProgress = Math.min(100, Math.max(0, progress));
116
+ this.muxingProgress = this.ffmpegProgress;
117
+ this.ffmpegProgressChanged.emit(this.ffmpegProgress);
118
+ }
119
+ /**
120
+ * Complete video export
121
+ */
122
+ completeVideoExport(blob, url) {
123
+ this._currentStage = VideoExportStage.COMPLETED;
124
+ this.audioProgress = 100;
125
+ this.videoProgress = 100;
126
+ this.muxingProgress = 100;
127
+ this.ffmpegProgress = 100;
128
+ this.complete(blob, url);
129
+ this.stageChanged.emit(this._currentStage);
130
+ }
131
+ /**
132
+ * Fail video export with error
133
+ */
134
+ failVideoExport(message) {
135
+ this._currentStage = VideoExportStage.FAILED;
136
+ this.setError(message);
137
+ this.stageChanged.emit(this._currentStage);
138
+ }
139
+ /**
140
+ * Abort video export
141
+ */
142
+ abortVideoExport(errorOccurred = false) {
143
+ this._currentStage = VideoExportStage.ABORTED;
144
+ this.abort(errorOccurred);
145
+ this.stageChanged.emit(this._currentStage);
146
+ }
147
+ /**
148
+ * Get stage display name
149
+ */
150
+ getStageName() {
151
+ switch (this._currentStage) {
152
+ case VideoExportStage.IDLE:
153
+ return 'Idle';
154
+ case VideoExportStage.RENDERING_AUDIO:
155
+ return 'Rendering Audio';
156
+ case VideoExportStage.RENDERING_VIDEO:
157
+ return 'Rendering Video Frames';
158
+ case VideoExportStage.MUXING:
159
+ return 'Muxing Audio & Video';
160
+ case VideoExportStage.COMPLETED:
161
+ return 'Completed';
162
+ case VideoExportStage.FAILED:
163
+ return 'Failed';
164
+ case VideoExportStage.ABORTED:
165
+ return 'Aborted';
166
+ default:
167
+ return 'Processing';
168
+ }
169
+ }
170
+ /**
171
+ * Get progress message for current stage
172
+ */
173
+ getProgressMessage() {
174
+ switch (this._currentStage) {
175
+ case VideoExportStage.RENDERING_AUDIO:
176
+ return `Rendering audio... ${Math.round(this.audioProgress)}%`;
177
+ case VideoExportStage.RENDERING_VIDEO:
178
+ return `Rendering video frames (${this.processedFrames}/${this.totalFrames})... ${Math.round(this.videoProgress)}%`;
179
+ case VideoExportStage.MUXING:
180
+ return `Encoding video with FFmpeg... ${Math.round(this.muxingProgress)}%`;
181
+ case VideoExportStage.COMPLETED:
182
+ return 'Export completed successfully';
183
+ case VideoExportStage.FAILED:
184
+ return `Export failed: ${this.errorMessage}`;
185
+ case VideoExportStage.ABORTED:
186
+ return 'Export was aborted';
187
+ default:
188
+ return 'Processing...';
189
+ }
190
+ }
191
+ }
192
+ //# sourceMappingURL=VideoExportStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoExportStatus.js","sourceRoot":"","sources":["../../src/domain/VideoExportStatus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Video metadata attached to audio sources that originated from video files.
3
+ * This allows the DAW to track video-specific information and support video export.
4
+ */
5
+ export interface VideoMetadata {
6
+ /**
7
+ * Frames per second of the source video
8
+ */
9
+ readonly fps: number;
10
+ /**
11
+ * Video frame width in pixels
12
+ */
13
+ readonly width: number;
14
+ /**
15
+ * Video frame height in pixels
16
+ */
17
+ readonly height: number;
18
+ /**
19
+ * Video codec used in the source file (e.g., "h264", "vp9")
20
+ */
21
+ readonly codec: string;
22
+ /**
23
+ * Container format of the source file (e.g., "mp4", "webm", "mov")
24
+ */
25
+ readonly format: string;
26
+ /**
27
+ * Total number of frames in the source video
28
+ */
29
+ readonly frameCount: number;
30
+ /**
31
+ * Whether the source video file contained audio
32
+ * (audio will have been extracted to the Source's AudioBuffer)
33
+ */
34
+ readonly hasAudio: boolean;
35
+ /**
36
+ * Optional data URL for a thumbnail image of the video
37
+ * Used for timeline preview
38
+ */
39
+ readonly thumbnailUrl?: string;
40
+ /**
41
+ * Original video file URL (blob URL or file path)
42
+ * Used for video export and frame extraction
43
+ */
44
+ readonly originalVideoUrl: string;
45
+ }
46
+ //# sourceMappingURL=VideoMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoMetadata.d.ts","sourceRoot":"","sources":["../../src/domain/VideoMetadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VideoMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoMetadata.js","sourceRoot":"","sources":["../../src/domain/VideoMetadata.ts"],"names":[],"mappings":""}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Zoom Focus
3
- * Ardour 참조: gtk2_ardour/editing_syms.inc.h (ZoomFocus)
4
3
  *
5
4
  * 줌 시 기준점을 결정합니다.
6
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ZoomFocus.d.ts","sourceRoot":"","sources":["../../src/domain/ZoomFocus.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oBAAY,SAAS;IACjB,gBAAgB;IAChB,IAAI,SAAS;IACb,iBAAiB;IACjB,KAAK,UAAU;IACf,gBAAgB;IAChB,MAAM,WAAW;IACjB,eAAe;IACf,QAAQ,aAAa;IACrB,wBAAwB;IACxB,KAAK,UAAU;IACf,eAAe;IACf,UAAU,eAAe;CAC5B"}
1
+ {"version":3,"file":"ZoomFocus.d.ts","sourceRoot":"","sources":["../../src/domain/ZoomFocus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,SAAS;IACjB,gBAAgB;IAChB,IAAI,SAAS;IACb,iBAAiB;IACjB,KAAK,UAAU;IACf,gBAAgB;IAChB,MAAM,WAAW;IACjB,eAAe;IACf,QAAQ,aAAa;IACrB,wBAAwB;IACxB,KAAK,UAAU;IACf,eAAe;IACf,UAAU,eAAe;CAC5B"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Zoom Focus
3
- * Ardour 참조: gtk2_ardour/editing_syms.inc.h (ZoomFocus)
4
3
  *
5
4
  * 줌 시 기준점을 결정합니다.
6
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ZoomFocus.js","sourceRoot":"","sources":["../../src/domain/ZoomFocus.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAN,IAAY,SAaX;AAbD,WAAY,SAAS;IACjB,gBAAgB;IAChB,0BAAa,CAAA;IACb,iBAAiB;IACjB,4BAAe,CAAA;IACf,gBAAgB;IAChB,8BAAiB,CAAA;IACjB,eAAe;IACf,kCAAqB,CAAA;IACrB,wBAAwB;IACxB,4BAAe,CAAA;IACf,eAAe;IACf,sCAAyB,CAAA;AAC7B,CAAC,EAbW,SAAS,KAAT,SAAS,QAapB"}
1
+ {"version":3,"file":"ZoomFocus.js","sourceRoot":"","sources":["../../src/domain/ZoomFocus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,SAaX;AAbD,WAAY,SAAS;IACjB,gBAAgB;IAChB,0BAAa,CAAA;IACb,iBAAiB;IACjB,4BAAe,CAAA;IACf,gBAAgB;IAChB,8BAAiB,CAAA;IACjB,eAAe;IACf,kCAAqB,CAAA;IACrB,wBAAwB;IACxB,4BAAe,CAAA;IACf,eAAe;IACf,sCAAyB,CAAA;AAC7B,CAAC,EAbW,SAAS,KAAT,SAAS,QAapB"}
@@ -3,9 +3,14 @@ export * from './Track';
3
3
  export * from './Region';
4
4
  export * from './Route';
5
5
  export * from './Source';
6
+ export * from './Crossfade';
7
+ export * from './VideoMetadata';
6
8
  export * from './Range';
7
9
  export * from './GridSettings';
8
10
  export * from './ExportConfig';
11
+ export * from './VideoExportConfig';
9
12
  export * from './ExportStatus';
13
+ export * from './VideoExportStatus';
14
+ export * from './ThawList';
10
15
  export * from './types';
11
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -4,9 +4,14 @@ export * from './Track';
4
4
  export * from './Region';
5
5
  export * from './Route';
6
6
  export * from './Source';
7
+ export * from './Crossfade';
8
+ export * from './VideoMetadata';
7
9
  export * from './Range';
8
10
  export * from './GridSettings';
9
11
  export * from './ExportConfig';
12
+ export * from './VideoExportConfig';
10
13
  export * from './ExportStatus';
14
+ export * from './VideoExportStatus';
15
+ export * from './ThawList';
11
16
  export * from './types';
12
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -14,14 +14,68 @@ export interface TempoEvent {
14
14
  /** Time signature denominator (optional, inherits previous if unset) */
15
15
  timeSigDen?: number;
16
16
  }
17
+ /**
18
+ * A meter (time signature) change event, stored independently from tempo events.
19
+ */
20
+ export interface MeterEvent {
21
+ /** Position in frames */
22
+ frame: number;
23
+ /** Number of beats per bar (time signature numerator) */
24
+ beatsPerBar: number;
25
+ /** Beat value that gets one beat (time signature denominator, e.g. 4 = quarter note) */
26
+ beatValue: number;
27
+ }
28
+ /**
29
+ * Bar/Beat/Tick representation of a musical position.
30
+ * Tick resolution is 1920 ticks per beat.
31
+ */
32
+ export interface BBT {
33
+ /** Bar number (1-based) */
34
+ bar: number;
35
+ /** Beat within bar (1-based) */
36
+ beat: number;
37
+ /** Tick within beat (0-based, 0..1919) */
38
+ tick: number;
39
+ }
40
+ /**
41
+ * Subdivision types for grid calculations.
42
+ */
43
+ export type SubdivisionType = 'bar' | 'beat' | 'half' | 'quarter' | 'eighth' | 'sixteenth' | 'triplet' | 'dotted';
44
+ /**
45
+ * Combined tempo and meter information at a point in time.
46
+ */
47
+ export interface TempoAndMeter {
48
+ bpm: number;
49
+ beatsPerBar: number;
50
+ beatValue: number;
51
+ }
17
52
  /**
18
53
  * TempoMap handles conversion between AudioTime (samples/frames) and BeatTime (beats/ticks).
19
- * Supports multiple tempo changes over the timeline (Ardour-style tempo map).
54
+ * Supports multiple tempo and meter changes over the timeline.
55
+ *
56
+ * Features:
57
+ * - Dual domain support (AudioTime / BeatTime)
58
+ * - Independent tempo and meter event lists
59
+ * - Bar/Beat/Tick (BBT) conversions with 1920 ticks-per-beat resolution
60
+ * - Grid point generation with subdivision and swing support
61
+ * - Region repositioning on tempo change
62
+ * - Binary search for efficient segment lookup
20
63
  */
21
64
  export declare class TempoMap {
22
65
  private sampleRate;
23
66
  private events;
67
+ private _meterEvents;
68
+ /** Fires after any modification to the tempo map (add/remove tempo or meter changes). */
24
69
  readonly changed: Signal<void>;
70
+ /**
71
+ * Fires after a tempo value has been modified, providing the frame at which the change occurred.
72
+ * Useful for repositioning regions or cursors after a tempo edit.
73
+ */
74
+ readonly onTempoChanged: Signal<{
75
+ frame: number;
76
+ oldBpm: number;
77
+ newBpm: number;
78
+ }>;
25
79
  constructor(sampleRate?: number);
26
80
  /**
27
81
  * Add or update a tempo change at the given frame position.
@@ -35,18 +89,55 @@ export declare class TempoMap {
35
89
  removeTempoChange(frame: number): void;
36
90
  /**
37
91
  * Get the tempo (BPM) at a given frame position.
38
- * Returns the BPM of the most recent tempo event at or before the frame.
92
+ * Uses binary search for efficient lookup.
39
93
  */
40
94
  getTempoAtFrame(frame: number): number;
41
95
  /**
42
96
  * Get the time signature at a given frame position.
43
97
  * Returns [numerator, denominator].
98
+ * Walks through tempo events that carry time signature overrides.
44
99
  */
45
100
  getTimeSignatureAtFrame(frame: number): [number, number];
46
101
  /**
47
102
  * Get all tempo events, sorted by frame.
48
103
  */
49
104
  getAllEvents(): ReadonlyArray<TempoEvent>;
105
+ /**
106
+ * Add or update a meter (time signature) change at the given frame position.
107
+ * If a meter change already exists at the exact frame, it is updated.
108
+ *
109
+ * @param frame - Frame position of the meter change
110
+ * @param beatsPerBar - Number of beats per bar (time signature numerator)
111
+ * @param beatValue - Note value that gets one beat (time signature denominator, e.g. 4 = quarter)
112
+ */
113
+ addMeterChange(frame: number, beatsPerBar: number, beatValue: number): void;
114
+ /**
115
+ * Remove a meter change at the given frame.
116
+ * The initial meter event at frame 0 cannot be removed.
117
+ *
118
+ * @param frame - Frame position of the meter change to remove
119
+ */
120
+ removeMeterChange(frame: number): void;
121
+ /**
122
+ * Get the meter (time signature) at a given frame position.
123
+ * Uses binary search for efficient lookup.
124
+ *
125
+ * @param frame - Frame position to query
126
+ * @returns The active MeterEvent at the given frame
127
+ */
128
+ getMeterAt(frame: number): MeterEvent;
129
+ /**
130
+ * Get all meter events, sorted by frame.
131
+ */
132
+ getAllMeterEvents(): ReadonlyArray<MeterEvent>;
133
+ /**
134
+ * Get combined tempo and meter information at a given frame position.
135
+ * Convenience method that returns both BPM and time signature data.
136
+ *
137
+ * @param frame - Frame position to query
138
+ * @returns Combined tempo and meter data
139
+ */
140
+ getTempoAndMeterAt(frame: number): TempoAndMeter;
50
141
  /**
51
142
  * Convert frames to seconds, accounting for tempo changes across the timeline.
52
143
  * Integrates the duration of each tempo segment.
@@ -56,6 +147,111 @@ export declare class TempoMap {
56
147
  * Convert seconds to frames, accounting for tempo changes across the timeline.
57
148
  */
58
149
  secondsToFrames(seconds: number, sampleRate?: number): FrameCount;
150
+ /**
151
+ * Convert a frame position to an absolute beat count from the start of the timeline,
152
+ * accounting for ALL tempo changes along the way.
153
+ *
154
+ * For each tempo segment, the number of beats is calculated as:
155
+ * beats = (segmentFrames / sampleRate) * (bpm / 60)
156
+ *
157
+ * @param frame - Frame position to convert
158
+ * @param sampleRate - Sample rate override (defaults to constructor value)
159
+ * @returns Absolute beat count from frame 0
160
+ */
161
+ framesToBeatsAbsolute(frame: number, sampleRate?: number): number;
162
+ /**
163
+ * Convert an absolute beat count from the start of the timeline to a frame position,
164
+ * accounting for ALL tempo changes along the way.
165
+ *
166
+ * Inverse of `framesToBeatsAbsolute`.
167
+ *
168
+ * @param beats - Absolute beat count from the start
169
+ * @param sampleRate - Sample rate override (defaults to constructor value)
170
+ * @returns Frame position
171
+ */
172
+ beatsToFramesAbsolute(beats: number, sampleRate?: number): number;
173
+ /**
174
+ * Convert a frame position to Bar/Beat/Tick notation.
175
+ *
176
+ * Walks through tempo and meter segments to calculate the cumulative
177
+ * bar, beat, and tick position. Uses 1920 ticks per beat.
178
+ *
179
+ * @param frame - Frame position to convert
180
+ * @param sampleRate - Sample rate override (defaults to constructor value)
181
+ * @returns BBT position (bars and beats are 1-based, ticks are 0-based)
182
+ */
183
+ framesToBBT(frame: number, sampleRate?: number): BBT;
184
+ /**
185
+ * Convert Bar/Beat/Tick notation to a frame position.
186
+ *
187
+ * @param bar - Bar number (1-based)
188
+ * @param beat - Beat within bar (1-based)
189
+ * @param tick - Tick within beat (0-based, 0..1919)
190
+ * @param sampleRate - Sample rate override (defaults to constructor value)
191
+ * @returns Frame position
192
+ */
193
+ bbtToFrames(bar: number, beat: number, tick: number, sampleRate?: number): number;
194
+ /**
195
+ * Compute the absolute beat position at which each meter event begins.
196
+ * This integrates tempo across the timeline to find beat offsets for each meter point.
197
+ */
198
+ private _computeMeterBeatStarts;
199
+ /**
200
+ * Returns the number of quarter-note beats per subdivision unit.
201
+ * For example, 'eighth' = 0.5 beats, 'bar' depends on current meter.
202
+ */
203
+ private _subdivisionToBeats;
204
+ /**
205
+ * Generate grid points between two frame positions for a given subdivision type.
206
+ *
207
+ * Walks through tempo and meter segments, generating evenly spaced grid points
208
+ * according to the active tempo and subdivision at each point.
209
+ *
210
+ * @param startFrame - Start of the range (inclusive)
211
+ * @param endFrame - End of the range (inclusive)
212
+ * @param subdivisionType - Grid subdivision type
213
+ * @param sampleRate - Sample rate override (defaults to constructor value)
214
+ * @returns Array of frame positions for grid points within the range
215
+ */
216
+ getGridPoints(startFrame: number, endFrame: number, subdivisionType: SubdivisionType, sampleRate?: number): number[];
217
+ /**
218
+ * Snap a frame position to the nearest grid point for the given subdivision type.
219
+ *
220
+ * @param frame - Frame position to snap
221
+ * @param subdivisionType - Grid subdivision type
222
+ * @param sampleRate - Sample rate override (defaults to constructor value)
223
+ * @returns The nearest grid-aligned frame position
224
+ */
225
+ snapToGrid(frame: number, subdivisionType: SubdivisionType, sampleRate?: number): number;
226
+ /**
227
+ * Generate a swing grid between two frame positions.
228
+ *
229
+ * Swing offsets every other grid point by shifting it forward in time.
230
+ * A `swingAmount` of 0 produces a straight grid; 1 pushes the off-beat
231
+ * to the maximum position (the next grid point).
232
+ *
233
+ * @param startFrame - Start of the range (inclusive)
234
+ * @param endFrame - End of the range (inclusive)
235
+ * @param subdivision - Grid subdivision type
236
+ * @param swingAmount - Swing amount between 0 (straight) and 1 (max swing)
237
+ * @param sampleRate - Sample rate override (defaults to constructor value)
238
+ * @returns Array of frame positions for the swing-adjusted grid
239
+ */
240
+ getSwingGrid(startFrame: number, endFrame: number, subdivision: SubdivisionType, swingAmount: number, sampleRate?: number): number[];
241
+ /**
242
+ * Recalculate a frame position after a tempo change, preserving its musical position.
243
+ *
244
+ * When tempo changes from `oldTempo` to `newTempo`, a region that was at a certain
245
+ * beat position should move to maintain the same musical position. This method
246
+ * calculates the new frame position.
247
+ *
248
+ * @param frame - Original frame position
249
+ * @param oldTempo - Previous tempo in BPM
250
+ * @param newTempo - New tempo in BPM
251
+ * @param sampleRate - Sample rate override (defaults to constructor value)
252
+ * @returns Recalculated frame position
253
+ */
254
+ repositionFrameForTempoChange(frame: number, oldTempo: number, newTempo: number, sampleRate?: number): number;
59
255
  /** Convert beats to frames at given BPM */
60
256
  beatsToFrames(beats: Beats, bpm: number): FrameCount;
61
257
  /** Convert frames to beats at given BPM */
@@ -1 +1 @@
1
- {"version":3,"file":"TempoMap.d.ts","sourceRoot":"","sources":["../../../src/domain/temporal/TempoMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,QAAQ;IAKb,OAAO,CAAC,UAAU;IAJtB,OAAO,CAAC,MAAM,CAAoB;IAClC,SAAgB,OAAO,eAAsB;gBAGjC,UAAU,GAAE,MAAc;IAMtC;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAe1F;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAStC;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAYtC;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAcxD;;OAEG;IACH,YAAY,IAAI,aAAa,CAAC,UAAU,CAAC;IAIzC;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAuBhE;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;IAOjE,2CAA2C;IAC3C,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU;IAKpD,2CAA2C;IAC3C,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK;IAMrD,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU;IAQpD,oCAAoC;IACpC,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK;CAOjD"}
1
+ {"version":3,"file":"TempoMap.d.ts","sourceRoot":"","sources":["../../../src/domain/temporal/TempoMap.ts"],"names":[],"mappings":"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"}