@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,162 @@
1
+ /**
2
+ * CD Marker Exporter
3
+ *
4
+ * Generates industry-standard marker/chapter files from CDMarker data.
5
+ * Supports CUE sheets, cdrdao TOC files, and Nero-style MP4 chapter files.
6
+ */
7
+ export class CDMarkerExporter {
8
+ /**
9
+ * Generate a CUE sheet from CD markers.
10
+ *
11
+ * CUE format reference: https://en.wikipedia.org/wiki/Cue_sheet_(computing)
12
+ * Time format: MM:SS:FF where FF = CD frames (75 fps)
13
+ *
14
+ * @param markers Array of CDMarker instances
15
+ * @param filename Audio filename referenced in the CUE sheet
16
+ * @param sampleRate Sample rate of the audio
17
+ * @param albumTitle Optional album title
18
+ * @param albumPerformer Optional album performer
19
+ */
20
+ static generateCUE(markers, filename, sampleRate, albumTitle = 'Untitled', albumPerformer = '') {
21
+ const sorted = [...markers].sort((a, b) => a.index - b.index);
22
+ const lines = [];
23
+ // Global header
24
+ lines.push(`REM COMMENT "Generated by drop.ai"`);
25
+ if (albumPerformer) {
26
+ lines.push(`PERFORMER "${albumPerformer}"`);
27
+ }
28
+ lines.push(`TITLE "${albumTitle}"`);
29
+ lines.push(`FILE "${filename}" WAVE`);
30
+ for (const marker of sorted) {
31
+ const trackNum = String(marker.index).padStart(2, '0');
32
+ lines.push(` TRACK ${trackNum} AUDIO`);
33
+ if (marker.title) {
34
+ lines.push(` TITLE "${marker.title}"`);
35
+ }
36
+ if (marker.performer) {
37
+ lines.push(` PERFORMER "${marker.performer}"`);
38
+ }
39
+ if (marker.isrc) {
40
+ lines.push(` ISRC ${marker.isrc}`);
41
+ }
42
+ const cdTime = CDMarkerExporter.framesToCDTime(marker.position, sampleRate);
43
+ lines.push(` INDEX 01 ${cdTime}`);
44
+ }
45
+ return lines.join('\n') + '\n';
46
+ }
47
+ /**
48
+ * Generate a cdrdao-compatible TOC (Table of Contents) file.
49
+ *
50
+ * TOC format reference: cdrdao(1) man page
51
+ *
52
+ * @param markers Array of CDMarker instances
53
+ * @param filename Audio filename
54
+ * @param sampleRate Sample rate of the audio
55
+ */
56
+ static generateTOC(markers, filename, sampleRate) {
57
+ const sorted = [...markers].sort((a, b) => a.index - b.index);
58
+ const lines = [];
59
+ lines.push('CD_DA');
60
+ lines.push('');
61
+ lines.push('// Generated by drop.ai');
62
+ lines.push('');
63
+ for (let i = 0; i < sorted.length; i++) {
64
+ const marker = sorted[i];
65
+ lines.push(`// Track ${marker.index}`);
66
+ lines.push('TRACK AUDIO');
67
+ // CD-TEXT block
68
+ if (marker.title || marker.performer) {
69
+ lines.push('CD_TEXT {');
70
+ lines.push(' LANGUAGE 0 {');
71
+ if (marker.title) {
72
+ lines.push(` TITLE "${marker.title}"`);
73
+ }
74
+ if (marker.performer) {
75
+ lines.push(` PERFORMER "${marker.performer}"`);
76
+ }
77
+ lines.push(' }');
78
+ lines.push('}');
79
+ }
80
+ // ISRC
81
+ if (marker.isrc) {
82
+ lines.push(`ISRC "${marker.isrc}"`);
83
+ }
84
+ // Pregap for first track (standard 2-second pregap)
85
+ if (i === 0 && marker.position === 0) {
86
+ lines.push('PREGAP 00:02:00');
87
+ }
88
+ // File reference with start time
89
+ const cdTime = CDMarkerExporter.framesToCDTime(marker.position, sampleRate);
90
+ // Calculate length if next marker exists
91
+ if (i + 1 < sorted.length) {
92
+ const nextMarker = sorted[i + 1];
93
+ const lengthFrames = nextMarker.position - marker.position;
94
+ const lengthCdTime = CDMarkerExporter.framesToCDTime(lengthFrames, sampleRate);
95
+ lines.push(`FILE "${filename}" ${cdTime} ${lengthCdTime}`);
96
+ }
97
+ else {
98
+ // Last track: let cdrdao figure out the remaining length
99
+ lines.push(`FILE "${filename}" ${cdTime}`);
100
+ }
101
+ lines.push('');
102
+ }
103
+ return lines.join('\n');
104
+ }
105
+ /**
106
+ * Generate Nero-style MP4 chapter metadata.
107
+ *
108
+ * Format: CHAPTERXX=HH:MM:SS.mmm / CHAPTERXXNAME=Title
109
+ * This format is understood by ffmpeg via -i chapters.txt.
110
+ *
111
+ * @param markers Array of CDMarker instances
112
+ * @param sampleRate Sample rate of the audio
113
+ */
114
+ static generateMP4Chapters(markers, sampleRate) {
115
+ const sorted = [...markers].sort((a, b) => a.index - b.index);
116
+ const lines = [];
117
+ for (let i = 0; i < sorted.length; i++) {
118
+ const marker = sorted[i];
119
+ const chapterNum = String(i + 1).padStart(2, '0');
120
+ const timestamp = CDMarkerExporter.framesToTimestamp(marker.position, sampleRate);
121
+ lines.push(`CHAPTER${chapterNum}=${timestamp}`);
122
+ lines.push(`CHAPTER${chapterNum}NAME=${marker.title || `Chapter ${i + 1}`}`);
123
+ }
124
+ return lines.join('\n');
125
+ }
126
+ /**
127
+ * Convert a sample-frame position to CD time format MM:SS:FF.
128
+ * CD frames run at 75 fps (Red Book standard).
129
+ *
130
+ * @param frames Position in audio sample frames
131
+ * @param sampleRate Audio sample rate (e.g. 44100)
132
+ * @returns Time string in MM:SS:FF format
133
+ */
134
+ static framesToCDTime(frames, sampleRate) {
135
+ const totalSeconds = frames / sampleRate;
136
+ const minutes = Math.floor(totalSeconds / 60);
137
+ const seconds = Math.floor(totalSeconds % 60);
138
+ const cdFrames = Math.floor((totalSeconds % 1) * 75);
139
+ return (String(minutes).padStart(2, '0') + ':' +
140
+ String(seconds).padStart(2, '0') + ':' +
141
+ String(cdFrames).padStart(2, '0'));
142
+ }
143
+ /**
144
+ * Convert a sample-frame position to HH:MM:SS.mmm timestamp.
145
+ *
146
+ * @param frames Position in audio sample frames
147
+ * @param sampleRate Audio sample rate
148
+ * @returns Time string in HH:MM:SS.mmm format
149
+ */
150
+ static framesToTimestamp(frames, sampleRate) {
151
+ const totalSeconds = frames / sampleRate;
152
+ const hours = Math.floor(totalSeconds / 3600);
153
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
154
+ const seconds = Math.floor(totalSeconds % 60);
155
+ const millis = Math.floor((totalSeconds % 1) * 1000);
156
+ return (String(hours).padStart(2, '0') + ':' +
157
+ String(minutes).padStart(2, '0') + ':' +
158
+ String(seconds).padStart(2, '0') + '.' +
159
+ String(millis).padStart(3, '0'));
160
+ }
161
+ }
162
+ //# sourceMappingURL=CDMarkerExporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CDMarkerExporter.js","sourceRoot":"","sources":["../../../src/audio/export/CDMarkerExporter.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACzB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,WAAW,CACd,OAAmB,EACnB,QAAgB,EAChB,UAAkB,EAClB,aAAqB,UAAU,EAC/B,iBAAyB,EAAE;QAE3B,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,gBAAgB;QAChB,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACjD,IAAI,cAAc,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,cAAc,cAAc,GAAG,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,UAAU,UAAU,GAAG,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,QAAQ,CAAC,CAAC;QAEtC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,QAAQ,CAAC,CAAC;YAExC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC5E,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,CACd,OAAmB,EACnB,QAAgB,EAChB,UAAkB;QAElB,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAEzB,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE1B,gBAAgB;YAChB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC7B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACnB,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;gBACtD,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YAED,OAAO;YACP,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACxC,CAAC;YAED,oDAAoD;YACpD,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAClC,CAAC;YAED,iCAAiC;YACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE5E,yCAAyC;YACzC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjC,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC3D,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;gBAC/E,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,KAAK,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACJ,yDAAyD;gBACzD,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;YAC/C,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,mBAAmB,CACtB,OAAmB,EACnB,UAAkB;QAElB,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAElF,KAAK,CAAC,IAAI,CAAC,UAAU,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,UAAU,UAAU,QAAQ,MAAM,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,cAAc,CAAC,MAAc,EAAE,UAAkB;QACpD,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAErD,OAAO,CACH,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;YACtC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;YACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACpC,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAc,EAAE,UAAkB;QACvD,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAErD,OAAO,CACH,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;YACpC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;YACtC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAClC,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,119 @@
1
+ import { ExportConfig } from '../../domain/ExportConfig';
2
+ /**
3
+ * Analysis results from the analyzer node.
4
+ */
5
+ export interface ExportAnalysis {
6
+ peakDb: number;
7
+ rmsDb: number;
8
+ lufs: number;
9
+ truePeakDb: number;
10
+ dcOffset: number;
11
+ clippedSamples: number;
12
+ }
13
+ /**
14
+ * A single processing node in the export graph.
15
+ * Each node receives multi-channel audio (Float32Array[]) and returns processed arrays.
16
+ */
17
+ export interface ExportNode {
18
+ id: string;
19
+ type: 'source' | 'normalize' | 'limiter' | 'dither' | 'encoder' | 'analyzer' | 'silence_trim' | 'gain' | 'sample_rate_convert';
20
+ process(buffer: Float32Array[], sampleRate: number): Float32Array[] | Promise<Float32Array[]>;
21
+ }
22
+ /**
23
+ * Builds a dynamic processing chain for audio export.
24
+ *
25
+ * Instead of a fixed pipeline (as in OfflineExporter), ExportGraphBuilder
26
+ * assembles an ordered sequence of ExportNode instances based on the
27
+ * ExportConfig. Custom nodes can be inserted at any position to extend
28
+ * the chain without modifying the core logic.
29
+ */
30
+ export declare class ExportGraphBuilder {
31
+ private _nodes;
32
+ private _sampleRate;
33
+ private _channelCount;
34
+ private _config;
35
+ constructor(config: ExportConfig);
36
+ /**
37
+ * Build the processing graph from an ExportConfig.
38
+ * Clears any existing nodes and re-creates the chain.
39
+ */
40
+ buildFromConfig(config: ExportConfig): void;
41
+ /**
42
+ * Add a node to the graph.
43
+ * @param node The node to insert.
44
+ * @param position Optional zero-based index. Appends if omitted.
45
+ */
46
+ addNode(node: ExportNode, position?: number): void;
47
+ /**
48
+ * Remove a node by id.
49
+ */
50
+ removeNode(id: string): void;
51
+ /**
52
+ * Get the current ordered list of nodes (read-only copy).
53
+ */
54
+ getNodes(): ReadonlyArray<ExportNode>;
55
+ /**
56
+ * Process multi-channel audio through every node in sequence.
57
+ */
58
+ processBuffer(inputBuffer: Float32Array[]): Promise<Float32Array[]>;
59
+ /**
60
+ * Encode the processed buffer into a Blob according to the config format.
61
+ * This is a lightweight wrapper that delegates to format-specific logic.
62
+ */
63
+ encode(buffer: Float32Array[]): Promise<Blob>;
64
+ /**
65
+ * Create a normalization node.
66
+ * @param mode 'peak' or 'lufs'
67
+ * @param targetLevel Target level in dB (peak) or LUFS
68
+ */
69
+ static createNormalizeNode(mode: 'peak' | 'lufs', targetLevel: number): ExportNode;
70
+ /**
71
+ * Create a true-peak limiter node.
72
+ * @param ceiling Maximum true-peak level in dBTP (e.g. -1.0)
73
+ */
74
+ static createTruePeakLimiterNode(ceiling: number): ExportNode;
75
+ /**
76
+ * Create a dither node.
77
+ * @param type 'none', 'triangular', or 'shaped'
78
+ * @param bitDepth Target bit depth (16 or 24)
79
+ */
80
+ static createDitherNode(type: 'none' | 'triangular' | 'shaped', bitDepth: number): ExportNode;
81
+ /**
82
+ * Create a silence-trimming node.
83
+ * Removes leading and trailing silence below a threshold.
84
+ * @param thresholdDb Silence threshold in dBFS (e.g. -60)
85
+ */
86
+ static createSilenceTrimNode(thresholdDb: number): ExportNode;
87
+ /**
88
+ * Create a gain node.
89
+ * @param gainDb Gain in decibels
90
+ */
91
+ static createGainNode(gainDb: number): ExportNode;
92
+ /**
93
+ * Create a sample-rate conversion node.
94
+ * Uses linear interpolation for simplicity; a production implementation
95
+ * would use windowed sinc interpolation.
96
+ * @param fromRate Source sample rate
97
+ * @param toRate Target sample rate
98
+ */
99
+ static createSampleRateConverter(fromRate: number, toRate: number): ExportNode;
100
+ /**
101
+ * Create an analyzer node that measures audio characteristics
102
+ * without modifying the signal (pass-through).
103
+ */
104
+ static createAnalyzerNode(): ExportNode & {
105
+ getAnalysis(): ExportAnalysis;
106
+ };
107
+ /**
108
+ * Encode multi-channel Float32Array[] as a WAV Blob.
109
+ * Supports int16, int24, and float32.
110
+ */
111
+ private _encodeWav;
112
+ /**
113
+ * Wrap raw Float32 data in a generic Blob (placeholder for formats
114
+ * that require external encoders such as MP3, OGG, FLAC).
115
+ */
116
+ private _encodeRaw;
117
+ private _writeString;
118
+ }
119
+ //# sourceMappingURL=ExportGraphBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportGraphBuilder.d.ts","sourceRoot":"","sources":["../../../src/audio/export/ExportGraphBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoC,MAAM,2BAA2B,CAAC;AAG3F;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,GAAG,MAAM,GAAG,qBAAqB,CAAC;IAC/H,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACjG;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAe;gBAElB,MAAM,EAAE,YAAY;IAQhC;;;OAGG;IACI,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAmDlD;;;;OAIG;IACI,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzD;;OAEG;IACI,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACI,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC;IAK5C;;OAEG;IACU,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAQhF;;;OAGG;IACU,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B1D;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU;IAqDlF;;;OAGG;IACH,MAAM,CAAC,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IA+B7D;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAkC7F;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IA6C7D;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAgBjD;;;;;;OAMG;IACH,MAAM,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU;IAgC9E;;;OAGG;IACH,MAAM,CAAC,kBAAkB,IAAI,UAAU,GAAG;QAAE,WAAW,IAAI,cAAc,CAAA;KAAE;IAwE3E;;;OAGG;IACH,OAAO,CAAC,UAAU;IAqFlB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,YAAY;CAKvB"}