@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,520 @@
1
+ import { ExportFormat, ExportSampleFormat } from '../../domain/ExportConfig';
2
+ import { DitherType } from '../../utils/DitherProcessor';
3
+ /**
4
+ * Builds a dynamic processing chain for audio export.
5
+ *
6
+ * Instead of a fixed pipeline (as in OfflineExporter), ExportGraphBuilder
7
+ * assembles an ordered sequence of ExportNode instances based on the
8
+ * ExportConfig. Custom nodes can be inserted at any position to extend
9
+ * the chain without modifying the core logic.
10
+ */
11
+ export class ExportGraphBuilder {
12
+ constructor(config) {
13
+ this._nodes = [];
14
+ this._config = config;
15
+ this._sampleRate = config.sampleRate;
16
+ this._channelCount = config.exportMasterOnly ? 2 : 2; // default stereo
17
+ this.buildFromConfig(config);
18
+ }
19
+ // ------------------------------------------------------------------ graph
20
+ /**
21
+ * Build the processing graph from an ExportConfig.
22
+ * Clears any existing nodes and re-creates the chain.
23
+ */
24
+ buildFromConfig(config) {
25
+ var _a, _b, _c, _d, _e;
26
+ this._nodes = [];
27
+ this._config = config;
28
+ this._sampleRate = config.sampleRate;
29
+ // 1. Silence trim (before everything else)
30
+ if (config.trimSilence) {
31
+ this._nodes.push(ExportGraphBuilder.createSilenceTrimNode(-60));
32
+ }
33
+ // 2. Normalization
34
+ if (config.normalize) {
35
+ const mode = (_a = config.normalizeMode) !== null && _a !== void 0 ? _a : 'peak';
36
+ const targetLevel = mode === 'lufs'
37
+ ? ((_b = config.targetLufs) !== null && _b !== void 0 ? _b : -14)
38
+ : ((_c = config.targetPeakDb) !== null && _c !== void 0 ? _c : -1);
39
+ this._nodes.push(ExportGraphBuilder.createNormalizeNode(mode, targetLevel));
40
+ }
41
+ // 3. True-peak limiter
42
+ if (config.truePeakLimit) {
43
+ this._nodes.push(ExportGraphBuilder.createTruePeakLimiterNode((_d = config.truePeakCeiling) !== null && _d !== void 0 ? _d : -1.0));
44
+ }
45
+ // 4. Dithering (only when reducing bit depth below 32-bit float)
46
+ if (config.ditherType && config.ditherType !== DitherType.NONE) {
47
+ const targetBits = config.sampleFormat === ExportSampleFormat.INT16 ? 16
48
+ : config.sampleFormat === ExportSampleFormat.INT24 ? 24
49
+ : 32;
50
+ if (targetBits < 32) {
51
+ const ditherTypeMap = {
52
+ [DitherType.NONE]: 'none',
53
+ [DitherType.TPDF]: 'triangular',
54
+ [DitherType.SHAPED]: 'shaped',
55
+ };
56
+ this._nodes.push(ExportGraphBuilder.createDitherNode((_e = ditherTypeMap[config.ditherType]) !== null && _e !== void 0 ? _e : 'none', targetBits));
57
+ }
58
+ }
59
+ // 5. Final analyzer (captures stats of the processed audio)
60
+ this._nodes.push(ExportGraphBuilder.createAnalyzerNode());
61
+ }
62
+ // -------------------------------------------------------- node management
63
+ /**
64
+ * Add a node to the graph.
65
+ * @param node The node to insert.
66
+ * @param position Optional zero-based index. Appends if omitted.
67
+ */
68
+ addNode(node, position) {
69
+ if (position !== undefined && position >= 0 && position <= this._nodes.length) {
70
+ this._nodes.splice(position, 0, node);
71
+ }
72
+ else {
73
+ this._nodes.push(node);
74
+ }
75
+ }
76
+ /**
77
+ * Remove a node by id.
78
+ */
79
+ removeNode(id) {
80
+ this._nodes = this._nodes.filter(n => n.id !== id);
81
+ }
82
+ /**
83
+ * Get the current ordered list of nodes (read-only copy).
84
+ */
85
+ getNodes() {
86
+ return [...this._nodes];
87
+ }
88
+ // --------------------------------------------------------------- process
89
+ /**
90
+ * Process multi-channel audio through every node in sequence.
91
+ */
92
+ async processBuffer(inputBuffer) {
93
+ let buffer = inputBuffer;
94
+ for (const node of this._nodes) {
95
+ buffer = await node.process(buffer, this._sampleRate);
96
+ }
97
+ return buffer;
98
+ }
99
+ /**
100
+ * Encode the processed buffer into a Blob according to the config format.
101
+ * This is a lightweight wrapper that delegates to format-specific logic.
102
+ */
103
+ async encode(buffer) {
104
+ const format = this._config.format;
105
+ const sampleRate = this._sampleRate;
106
+ switch (format) {
107
+ case ExportFormat.WAV:
108
+ case 'wav':
109
+ return this._encodeWav(buffer, sampleRate, this._config.sampleFormat);
110
+ case ExportFormat.FLAC:
111
+ case 'flac':
112
+ return this._encodeRaw(buffer, 'audio/flac');
113
+ case ExportFormat.OGG:
114
+ case 'ogg':
115
+ return this._encodeRaw(buffer, 'audio/ogg');
116
+ case ExportFormat.MP3:
117
+ case 'mp3':
118
+ return this._encodeRaw(buffer, 'audio/mp3');
119
+ default:
120
+ return this._encodeWav(buffer, sampleRate, this._config.sampleFormat);
121
+ }
122
+ }
123
+ // ===================================================================
124
+ // Built-in node factories
125
+ // ===================================================================
126
+ /**
127
+ * Create a normalization node.
128
+ * @param mode 'peak' or 'lufs'
129
+ * @param targetLevel Target level in dB (peak) or LUFS
130
+ */
131
+ static createNormalizeNode(mode, targetLevel) {
132
+ return {
133
+ id: `normalize-${mode}`,
134
+ type: 'normalize',
135
+ process(buffer, _sampleRate) {
136
+ if (mode === 'peak') {
137
+ // Peak normalization
138
+ let maxPeak = 0;
139
+ for (const ch of buffer) {
140
+ for (let i = 0; i < ch.length; i++) {
141
+ const abs = Math.abs(ch[i]);
142
+ if (abs > maxPeak)
143
+ maxPeak = abs;
144
+ }
145
+ }
146
+ if (maxPeak === 0)
147
+ return buffer;
148
+ const targetLinear = Math.pow(10, targetLevel / 20);
149
+ const gain = targetLinear / maxPeak;
150
+ for (const ch of buffer) {
151
+ for (let i = 0; i < ch.length; i++) {
152
+ ch[i] *= gain;
153
+ }
154
+ }
155
+ }
156
+ else {
157
+ // Simplified LUFS-style normalization
158
+ // Compute integrated loudness using K-weighted RMS approximation
159
+ let sumSquared = 0;
160
+ let totalSamples = 0;
161
+ for (const ch of buffer) {
162
+ for (let i = 0; i < ch.length; i++) {
163
+ sumSquared += ch[i] * ch[i];
164
+ }
165
+ totalSamples += ch.length;
166
+ }
167
+ if (totalSamples === 0 || sumSquared === 0)
168
+ return buffer;
169
+ const rms = Math.sqrt(sumSquared / totalSamples);
170
+ const currentLufs = 20 * Math.log10(rms) - 0.691; // simplified K-weighting offset
171
+ const gainDb = targetLevel - currentLufs;
172
+ const gainLinear = Math.pow(10, gainDb / 20);
173
+ for (const ch of buffer) {
174
+ for (let i = 0; i < ch.length; i++) {
175
+ ch[i] *= gainLinear;
176
+ }
177
+ }
178
+ }
179
+ return buffer;
180
+ },
181
+ };
182
+ }
183
+ /**
184
+ * Create a true-peak limiter node.
185
+ * @param ceiling Maximum true-peak level in dBTP (e.g. -1.0)
186
+ */
187
+ static createTruePeakLimiterNode(ceiling) {
188
+ return {
189
+ id: 'true-peak-limiter',
190
+ type: 'limiter',
191
+ process(buffer, _sampleRate) {
192
+ const ceilingLinear = Math.pow(10, ceiling / 20);
193
+ const attack = 0.001; // ~1 ms in samples (simplified)
194
+ const release = 0.050; // ~50 ms
195
+ for (const ch of buffer) {
196
+ let envelope = 0;
197
+ for (let i = 0; i < ch.length; i++) {
198
+ const abs = Math.abs(ch[i]);
199
+ // Simple peak follower
200
+ if (abs > envelope) {
201
+ envelope = abs + attack * (abs - envelope);
202
+ }
203
+ else {
204
+ envelope = abs + (1 - release) * (envelope - abs);
205
+ }
206
+ // Apply gain reduction when envelope exceeds ceiling
207
+ if (envelope > ceilingLinear) {
208
+ ch[i] *= ceilingLinear / envelope;
209
+ }
210
+ }
211
+ }
212
+ return buffer;
213
+ },
214
+ };
215
+ }
216
+ /**
217
+ * Create a dither node.
218
+ * @param type 'none', 'triangular', or 'shaped'
219
+ * @param bitDepth Target bit depth (16 or 24)
220
+ */
221
+ static createDitherNode(type, bitDepth) {
222
+ return {
223
+ id: `dither-${type}-${bitDepth}`,
224
+ type: 'dither',
225
+ process(buffer, _sampleRate) {
226
+ if (type === 'none')
227
+ return buffer;
228
+ const quantizationStep = 1.0 / Math.pow(2, bitDepth - 1);
229
+ const scale = 1.0 / quantizationStep;
230
+ for (const ch of buffer) {
231
+ let previousError = 0;
232
+ for (let i = 0; i < ch.length; i++) {
233
+ const r1 = Math.random();
234
+ const r2 = Math.random();
235
+ const dither = (r1 - r2) * quantizationStep;
236
+ if (type === 'shaped') {
237
+ const shaped = ch[i] + dither - previousError * 0.5;
238
+ const quantized = Math.round(shaped * scale) / scale;
239
+ previousError = quantized - ch[i];
240
+ ch[i] = quantized;
241
+ }
242
+ else {
243
+ // triangular (TPDF)
244
+ const quantized = Math.round((ch[i] + dither) * scale) / scale;
245
+ ch[i] = quantized;
246
+ }
247
+ }
248
+ }
249
+ return buffer;
250
+ },
251
+ };
252
+ }
253
+ /**
254
+ * Create a silence-trimming node.
255
+ * Removes leading and trailing silence below a threshold.
256
+ * @param thresholdDb Silence threshold in dBFS (e.g. -60)
257
+ */
258
+ static createSilenceTrimNode(thresholdDb) {
259
+ return {
260
+ id: 'silence-trim',
261
+ type: 'silence_trim',
262
+ process(buffer, _sampleRate) {
263
+ if (buffer.length === 0 || buffer[0].length === 0)
264
+ return buffer;
265
+ const thresholdLinear = Math.pow(10, thresholdDb / 20);
266
+ const length = buffer[0].length;
267
+ // Find first sample above threshold (across all channels)
268
+ let startSample = 0;
269
+ outer_start: for (let i = 0; i < length; i++) {
270
+ for (const ch of buffer) {
271
+ if (Math.abs(ch[i]) > thresholdLinear) {
272
+ startSample = i;
273
+ break outer_start;
274
+ }
275
+ }
276
+ }
277
+ // Find last sample above threshold
278
+ let endSample = length - 1;
279
+ outer_end: for (let i = length - 1; i >= startSample; i--) {
280
+ for (const ch of buffer) {
281
+ if (Math.abs(ch[i]) > thresholdLinear) {
282
+ endSample = i;
283
+ break outer_end;
284
+ }
285
+ }
286
+ }
287
+ // If no signal found at all, return a single-sample silence
288
+ if (startSample > endSample) {
289
+ return buffer.map(() => new Float32Array(1));
290
+ }
291
+ const trimmedLength = endSample - startSample + 1;
292
+ return buffer.map(ch => ch.slice(startSample, startSample + trimmedLength));
293
+ },
294
+ };
295
+ }
296
+ /**
297
+ * Create a gain node.
298
+ * @param gainDb Gain in decibels
299
+ */
300
+ static createGainNode(gainDb) {
301
+ return {
302
+ id: `gain-${gainDb}dB`,
303
+ type: 'gain',
304
+ process(buffer, _sampleRate) {
305
+ const gainLinear = Math.pow(10, gainDb / 20);
306
+ for (const ch of buffer) {
307
+ for (let i = 0; i < ch.length; i++) {
308
+ ch[i] *= gainLinear;
309
+ }
310
+ }
311
+ return buffer;
312
+ },
313
+ };
314
+ }
315
+ /**
316
+ * Create a sample-rate conversion node.
317
+ * Uses linear interpolation for simplicity; a production implementation
318
+ * would use windowed sinc interpolation.
319
+ * @param fromRate Source sample rate
320
+ * @param toRate Target sample rate
321
+ */
322
+ static createSampleRateConverter(fromRate, toRate) {
323
+ return {
324
+ id: `src-${fromRate}-${toRate}`,
325
+ type: 'sample_rate_convert',
326
+ process(buffer, _sampleRate) {
327
+ if (fromRate === toRate)
328
+ return buffer;
329
+ const ratio = fromRate / toRate;
330
+ const newLength = Math.round(buffer[0].length / ratio);
331
+ const result = [];
332
+ for (const ch of buffer) {
333
+ const output = new Float32Array(newLength);
334
+ for (let i = 0; i < newLength; i++) {
335
+ const srcPos = i * ratio;
336
+ const idx = Math.floor(srcPos);
337
+ const frac = srcPos - idx;
338
+ if (idx + 1 < ch.length) {
339
+ // Linear interpolation
340
+ output[i] = ch[idx] * (1 - frac) + ch[idx + 1] * frac;
341
+ }
342
+ else if (idx < ch.length) {
343
+ output[i] = ch[idx];
344
+ }
345
+ }
346
+ result.push(output);
347
+ }
348
+ return result;
349
+ },
350
+ };
351
+ }
352
+ /**
353
+ * Create an analyzer node that measures audio characteristics
354
+ * without modifying the signal (pass-through).
355
+ */
356
+ static createAnalyzerNode() {
357
+ let analysis = {
358
+ peakDb: -Infinity,
359
+ rmsDb: -Infinity,
360
+ lufs: -Infinity,
361
+ truePeakDb: -Infinity,
362
+ dcOffset: 0,
363
+ clippedSamples: 0,
364
+ };
365
+ const node = {
366
+ id: 'analyzer',
367
+ type: 'analyzer',
368
+ process(buffer, _sampleRate) {
369
+ let maxPeak = 0;
370
+ let sumSquared = 0;
371
+ let totalSamples = 0;
372
+ let dcSum = 0;
373
+ let clipped = 0;
374
+ let truePeak = 0;
375
+ for (const ch of buffer) {
376
+ for (let i = 0; i < ch.length; i++) {
377
+ const sample = ch[i];
378
+ const abs = Math.abs(sample);
379
+ if (abs > maxPeak)
380
+ maxPeak = abs;
381
+ sumSquared += sample * sample;
382
+ dcSum += sample;
383
+ totalSamples++;
384
+ if (abs >= 1.0)
385
+ clipped++;
386
+ // Simplified true-peak detection via 4x oversampling estimation
387
+ // In production, this would use proper FIR interpolation
388
+ if (i > 0) {
389
+ const interpolated = Math.abs((ch[i - 1] + ch[i]) / 2);
390
+ if (interpolated > truePeak)
391
+ truePeak = interpolated;
392
+ }
393
+ if (abs > truePeak)
394
+ truePeak = abs;
395
+ }
396
+ }
397
+ const rms = totalSamples > 0 ? Math.sqrt(sumSquared / totalSamples) : 0;
398
+ const dc = totalSamples > 0 ? dcSum / totalSamples : 0;
399
+ analysis = {
400
+ peakDb: maxPeak > 0 ? 20 * Math.log10(maxPeak) : -Infinity,
401
+ rmsDb: rms > 0 ? 20 * Math.log10(rms) : -Infinity,
402
+ lufs: rms > 0 ? 20 * Math.log10(rms) - 0.691 : -Infinity,
403
+ truePeakDb: truePeak > 0 ? 20 * Math.log10(truePeak) : -Infinity,
404
+ dcOffset: dc,
405
+ clippedSamples: clipped,
406
+ };
407
+ // Pass through unmodified
408
+ return buffer;
409
+ },
410
+ getAnalysis() {
411
+ return Object.assign({}, analysis);
412
+ },
413
+ };
414
+ return node;
415
+ }
416
+ // ===================================================================
417
+ // Private helpers
418
+ // ===================================================================
419
+ /**
420
+ * Encode multi-channel Float32Array[] as a WAV Blob.
421
+ * Supports int16, int24, and float32.
422
+ */
423
+ _encodeWav(buffer, sampleRate, sampleFormat) {
424
+ var _a, _b, _c, _d;
425
+ const numChannels = buffer.length;
426
+ const numSamples = (_b = (_a = buffer[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
427
+ let bytesPerSample;
428
+ let audioFormat; // 1 = PCM integer, 3 = IEEE float
429
+ switch (sampleFormat) {
430
+ case ExportSampleFormat.INT16:
431
+ bytesPerSample = 2;
432
+ audioFormat = 1;
433
+ break;
434
+ case ExportSampleFormat.INT24:
435
+ bytesPerSample = 3;
436
+ audioFormat = 1;
437
+ break;
438
+ case ExportSampleFormat.FLOAT32:
439
+ default:
440
+ bytesPerSample = 4;
441
+ audioFormat = 3;
442
+ break;
443
+ }
444
+ const blockAlign = numChannels * bytesPerSample;
445
+ const dataSize = numSamples * blockAlign;
446
+ const headerSize = 44;
447
+ const arrayBuffer = new ArrayBuffer(headerSize + dataSize);
448
+ const view = new DataView(arrayBuffer);
449
+ // RIFF header
450
+ this._writeString(view, 0, 'RIFF');
451
+ view.setUint32(4, 36 + dataSize, true);
452
+ this._writeString(view, 8, 'WAVE');
453
+ // fmt chunk
454
+ this._writeString(view, 12, 'fmt ');
455
+ view.setUint32(16, 16, true); // chunk size
456
+ view.setUint16(20, audioFormat, true); // audio format
457
+ view.setUint16(22, numChannels, true);
458
+ view.setUint32(24, sampleRate, true);
459
+ view.setUint32(28, sampleRate * blockAlign, true); // byte rate
460
+ view.setUint16(32, blockAlign, true);
461
+ view.setUint16(34, bytesPerSample * 8, true);
462
+ // data chunk
463
+ this._writeString(view, 36, 'data');
464
+ view.setUint32(40, dataSize, true);
465
+ // Interleave and write samples
466
+ let offset = headerSize;
467
+ for (let i = 0; i < numSamples; i++) {
468
+ for (let ch = 0; ch < numChannels; ch++) {
469
+ const sample = (_d = (_c = buffer[ch]) === null || _c === void 0 ? void 0 : _c[i]) !== null && _d !== void 0 ? _d : 0;
470
+ switch (sampleFormat) {
471
+ case ExportSampleFormat.INT16: {
472
+ const clamped = Math.max(-1, Math.min(1, sample));
473
+ const int16 = clamped < 0 ? clamped * 0x8000 : clamped * 0x7FFF;
474
+ view.setInt16(offset, int16, true);
475
+ offset += 2;
476
+ break;
477
+ }
478
+ case ExportSampleFormat.INT24: {
479
+ const clamped = Math.max(-1, Math.min(1, sample));
480
+ const int24 = Math.round(clamped * 0x7FFFFF);
481
+ view.setUint8(offset, int24 & 0xFF);
482
+ view.setUint8(offset + 1, (int24 >> 8) & 0xFF);
483
+ view.setUint8(offset + 2, (int24 >> 16) & 0xFF);
484
+ offset += 3;
485
+ break;
486
+ }
487
+ case ExportSampleFormat.FLOAT32:
488
+ default:
489
+ view.setFloat32(offset, sample, true);
490
+ offset += 4;
491
+ break;
492
+ }
493
+ }
494
+ }
495
+ return new Blob([arrayBuffer], { type: 'audio/wav' });
496
+ }
497
+ /**
498
+ * Wrap raw Float32 data in a generic Blob (placeholder for formats
499
+ * that require external encoders such as MP3, OGG, FLAC).
500
+ */
501
+ _encodeRaw(buffer, mimeType) {
502
+ var _a, _b, _c, _d;
503
+ // Interleave channels into a single Float32Array
504
+ const numChannels = buffer.length;
505
+ const numSamples = (_b = (_a = buffer[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
506
+ const interleaved = new Float32Array(numChannels * numSamples);
507
+ for (let i = 0; i < numSamples; i++) {
508
+ for (let ch = 0; ch < numChannels; ch++) {
509
+ interleaved[i * numChannels + ch] = (_d = (_c = buffer[ch]) === null || _c === void 0 ? void 0 : _c[i]) !== null && _d !== void 0 ? _d : 0;
510
+ }
511
+ }
512
+ return new Blob([interleaved.buffer], { type: mimeType });
513
+ }
514
+ _writeString(view, offset, str) {
515
+ for (let i = 0; i < str.length; i++) {
516
+ view.setUint8(offset + i, str.charCodeAt(i));
517
+ }
518
+ }
519
+ }
520
+ //# sourceMappingURL=ExportGraphBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportGraphBuilder.js","sourceRoot":"","sources":["../../../src/audio/export/ExportGraphBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { Signal } from '../../lib/Signal';
2
+ import { ExportFormat, ExportSampleFormat, NormalizeMode } from '../../domain/ExportConfig';
3
+ import { DitherType } from '../../utils/DitherProcessor';
4
+ /**
5
+ * A partial export configuration used in presets.
6
+ * Mirrors the relevant fields from ExportConfig.
7
+ */
8
+ export interface ExportPresetConfig {
9
+ format?: ExportFormat;
10
+ sampleFormat?: ExportSampleFormat;
11
+ sampleRate?: number;
12
+ bitrate?: number;
13
+ quality?: number;
14
+ ditherType?: DitherType;
15
+ normalize?: boolean;
16
+ normalizeMode?: NormalizeMode;
17
+ targetPeakDb?: number;
18
+ targetLufs?: number;
19
+ truePeakLimit?: boolean;
20
+ truePeakCeiling?: number;
21
+ exportMasterOnly?: boolean;
22
+ stemExport?: boolean;
23
+ splitMono?: boolean;
24
+ filenameTemplate?: string;
25
+ silencePaddingStart?: number;
26
+ silencePaddingEnd?: number;
27
+ trimSilence?: boolean;
28
+ exportCdMarkers?: boolean;
29
+ cdMarkerFormat?: 'cue' | 'toc' | 'mp4ch';
30
+ bwfMetadata?: boolean;
31
+ }
32
+ /**
33
+ * A saved export configuration snapshot for quick recall.
34
+ */
35
+ export interface ExportPreset {
36
+ id: string;
37
+ name: string;
38
+ version: number;
39
+ config: ExportPresetConfig;
40
+ createdAt: string;
41
+ updatedAt: string;
42
+ }
43
+ /**
44
+ * Manages a collection of export presets, both user-created and built-in.
45
+ */
46
+ export declare class ExportPresetManager {
47
+ private _presets;
48
+ /** Emitted whenever the preset list or any preset changes. */
49
+ readonly presetsChanged: Signal<void>;
50
+ constructor();
51
+ /**
52
+ * Create a new preset from the given config.
53
+ */
54
+ addPreset(name: string, config: ExportPresetConfig): ExportPreset;
55
+ /**
56
+ * Update an existing preset's configuration.
57
+ */
58
+ updatePreset(id: string, config: ExportPresetConfig): void;
59
+ /**
60
+ * Remove a preset by id.
61
+ */
62
+ removePreset(id: string): void;
63
+ /**
64
+ * Get a single preset by id.
65
+ */
66
+ getPreset(id: string): ExportPreset | undefined;
67
+ /**
68
+ * Get all presets, sorted by name.
69
+ */
70
+ getAllPresets(): ExportPreset[];
71
+ /**
72
+ * Returns the built-in default presets covering common export workflows.
73
+ */
74
+ static getDefaultPresets(): ExportPreset[];
75
+ /**
76
+ * Serialize the preset manager to a JSON string for persistence.
77
+ */
78
+ serialize(): string;
79
+ /**
80
+ * Deserialize from a JSON string and return a new ExportPresetManager.
81
+ * User presets from the JSON are merged on top of the defaults.
82
+ */
83
+ static deserialize(json: string): ExportPresetManager;
84
+ }
85
+ //# sourceMappingURL=ExportPresetManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportPresetManager.d.ts","sourceRoot":"","sources":["../../../src/audio/export/ExportPresetManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAUD;;GAEG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAA4B;IAE5C,8DAA8D;IAC9D,SAAgB,cAAc,eAAsB;;IAapD;;OAEG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,YAAY;IAexE;;OAEG;IACI,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAYjE;;OAEG;IACI,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQrC;;OAEG;IACI,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAKtD;;OAEG;IACI,aAAa,IAAI,YAAY,EAAE;IAQtC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,YAAY,EAAE;IAmM1C;;OAEG;IACI,SAAS,IAAI,MAAM;IAQ1B;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB;CA0BxD"}