@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,77 @@
1
+ /**
2
+ * Filename Template Parser
3
+ *
4
+ * Supported tokens:
5
+ * %s - Session name
6
+ * %n - Timespan name (range/region name)
7
+ * %d - Date (YYYY-MM-DD)
8
+ * %t - Time (HH-MM-SS)
9
+ * %f - Format (wav/mp3/ogg/flac)
10
+ * %r - Revision number (auto-increment)
11
+ * %b - Bit depth / bitrate
12
+ * %c - Channel config (stereo/mono)
13
+ * %T - Track name (for stem export)
14
+ */
15
+ /**
16
+ * Resolve a filename template string into an actual filename.
17
+ */
18
+ export function resolveFilenameTemplate(template, context) {
19
+ var _a;
20
+ const now = new Date();
21
+ const dateStr = [
22
+ now.getFullYear(),
23
+ String(now.getMonth() + 1).padStart(2, '0'),
24
+ String(now.getDate()).padStart(2, '0'),
25
+ ].join('-');
26
+ const timeStr = [
27
+ String(now.getHours()).padStart(2, '0'),
28
+ String(now.getMinutes()).padStart(2, '0'),
29
+ String(now.getSeconds()).padStart(2, '0'),
30
+ ].join('-');
31
+ let result = template;
32
+ result = result.replace(/%s/g, sanitizeFilename(context.sessionName || 'Untitled'));
33
+ result = result.replace(/%n/g, sanitizeFilename(context.timespanName || 'export'));
34
+ result = result.replace(/%d/g, dateStr);
35
+ result = result.replace(/%t/g, timeStr);
36
+ result = result.replace(/%f/g, context.format || 'wav');
37
+ result = result.replace(/%r/g, String((_a = context.revision) !== null && _a !== void 0 ? _a : 1).padStart(3, '0'));
38
+ result = result.replace(/%b/g, context.bitDepthOrRate || '');
39
+ result = result.replace(/%c/g, context.channelConfig || 'stereo');
40
+ result = result.replace(/%T/g, sanitizeFilename(context.trackName || ''));
41
+ // Remove double separators and trailing separators
42
+ result = result.replace(/_{2,}/g, '_');
43
+ result = result.replace(/-{2,}/g, '-');
44
+ result = result.replace(/[_-]$/, '');
45
+ return result || 'export';
46
+ }
47
+ /**
48
+ * Sanitize a string for use in filenames.
49
+ */
50
+ function sanitizeFilename(name) {
51
+ return name.replace(/[^a-zA-Z0-9가-힣ぁ-んァ-ヶー一-龥_\- ]/g, '_').trim();
52
+ }
53
+ /**
54
+ * Get a human-readable preview of what tokens will resolve to.
55
+ */
56
+ export function previewFilenameTemplate(template, context) {
57
+ const resolved = resolveFilenameTemplate(template, context);
58
+ const ext = context.format || 'wav';
59
+ return `${resolved}.${ext}`;
60
+ }
61
+ /**
62
+ * List all supported tokens with descriptions.
63
+ */
64
+ export function getTemplateTokens() {
65
+ return [
66
+ { token: '%s', description: 'Session name' },
67
+ { token: '%n', description: 'Timespan / range name' },
68
+ { token: '%d', description: 'Date (YYYY-MM-DD)' },
69
+ { token: '%t', description: 'Time (HH-MM-SS)' },
70
+ { token: '%f', description: 'Format (wav/mp3/ogg/flac)' },
71
+ { token: '%r', description: 'Revision number' },
72
+ { token: '%b', description: 'Bit depth or bitrate' },
73
+ { token: '%c', description: 'Channel config (stereo/mono)' },
74
+ { token: '%T', description: 'Track name (stem export)' },
75
+ ];
76
+ }
77
+ //# sourceMappingURL=FilenameTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilenameTemplate.js","sourceRoot":"","sources":["../../src/utils/FilenameTemplate.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * FLAC Encoder (Lossless)
3
- * Ardour 참조: libs/ardour/export_format_specification.cc (FLAC format)
4
3
  *
5
4
  * Pure JS FLAC encoder with basic compression.
6
5
  * Implements a subset of the FLAC specification (verbatim frames for simplicity).
@@ -1 +1 @@
1
- {"version":3,"file":"FlacEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/FlacEncoder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,WAAW;IACpB;;;;OAIG;WACW,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,GAAE,MAAW,GAAG,IAAI;IAqC3E,OAAO,CAAC,MAAM,CAAC,eAAe;IA6C9B,OAAO,CAAC,MAAM,CAAC,UAAU;IA6FzB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAiBhC,OAAO,CAAC,MAAM,CAAC,IAAI;IAYnB,OAAO,CAAC,MAAM,CAAC,KAAK;CAWvB"}
1
+ {"version":3,"file":"FlacEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/FlacEncoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,WAAW;IACpB;;;;OAIG;WACW,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,GAAE,MAAW,GAAG,IAAI;IAqC3E,OAAO,CAAC,MAAM,CAAC,eAAe;IA6C9B,OAAO,CAAC,MAAM,CAAC,UAAU;IA6FzB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAiBhC,OAAO,CAAC,MAAM,CAAC,IAAI;IAYnB,OAAO,CAAC,MAAM,CAAC,KAAK;CAWvB"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * FLAC Encoder (Lossless)
3
- * Ardour 참조: libs/ardour/export_format_specification.cc (FLAC format)
4
3
  *
5
4
  * Pure JS FLAC encoder with basic compression.
6
5
  * Implements a subset of the FLAC specification (verbatim frames for simplicity).
@@ -1 +1 @@
1
- {"version":3,"file":"FlacEncoder.js","sourceRoot":"","sources":["../../src/utils/FlacEncoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FlacEncoder.js","sourceRoot":"","sources":["../../src/utils/FlacEncoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Lightweight logger with configurable log levels.
3
+ *
4
+ * Prevents verbose debug/info messages from reaching the console in
5
+ * production while still allowing warnings and errors through.
6
+ *
7
+ * Default level is WARN — set to DEBUG during development via
8
+ * `logger.setLevel(LogLevel.DEBUG)`.
9
+ */
10
+ export declare enum LogLevel {
11
+ DEBUG = 0,
12
+ INFO = 1,
13
+ WARN = 2,
14
+ ERROR = 3,
15
+ NONE = 4
16
+ }
17
+ declare class Logger {
18
+ private level;
19
+ setLevel(level: LogLevel): void;
20
+ getLevel(): LogLevel;
21
+ debug(tag: string, ...args: unknown[]): void;
22
+ info(tag: string, ...args: unknown[]): void;
23
+ warn(tag: string, ...args: unknown[]): void;
24
+ error(tag: string, ...args: unknown[]): void;
25
+ }
26
+ export declare const logger: Logger;
27
+ export {};
28
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,oBAAY,QAAQ;IAChB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;CACX;AAED,cAAM,MAAM;IACR,OAAO,CAAC,KAAK,CAA2B;IAExC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,QAAQ,IAAI,QAAQ;IAIpB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI5C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI3C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI3C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAG/C;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Lightweight logger with configurable log levels.
3
+ *
4
+ * Prevents verbose debug/info messages from reaching the console in
5
+ * production while still allowing warnings and errors through.
6
+ *
7
+ * Default level is WARN — set to DEBUG during development via
8
+ * `logger.setLevel(LogLevel.DEBUG)`.
9
+ */
10
+ export var LogLevel;
11
+ (function (LogLevel) {
12
+ LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
13
+ LogLevel[LogLevel["INFO"] = 1] = "INFO";
14
+ LogLevel[LogLevel["WARN"] = 2] = "WARN";
15
+ LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
16
+ LogLevel[LogLevel["NONE"] = 4] = "NONE";
17
+ })(LogLevel || (LogLevel = {}));
18
+ class Logger {
19
+ constructor() {
20
+ this.level = LogLevel.WARN;
21
+ }
22
+ setLevel(level) {
23
+ this.level = level;
24
+ }
25
+ getLevel() {
26
+ return this.level;
27
+ }
28
+ debug(tag, ...args) {
29
+ if (this.level <= LogLevel.DEBUG)
30
+ console.debug(`[${tag}]`, ...args);
31
+ }
32
+ info(tag, ...args) {
33
+ if (this.level <= LogLevel.INFO)
34
+ console.info(`[${tag}]`, ...args);
35
+ }
36
+ warn(tag, ...args) {
37
+ if (this.level <= LogLevel.WARN)
38
+ console.warn(`[${tag}]`, ...args);
39
+ }
40
+ error(tag, ...args) {
41
+ if (this.level <= LogLevel.ERROR)
42
+ console.error(`[${tag}]`, ...args);
43
+ }
44
+ }
45
+ export const logger = new Logger();
46
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAChB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;AACZ,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED,MAAM,MAAM;IAAZ;QACY,UAAK,GAAa,QAAQ,CAAC,IAAI,CAAC;IAyB5C,CAAC;IAvBG,QAAQ,CAAC,KAAe;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,GAAG,IAAe;QACjC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,GAAG,IAAe;QAChC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,GAAG,IAAe;QAChC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,GAAG,IAAe;QACjC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACzE,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * MP4 Chapter Generator
3
+ *
4
+ * Generates Nero-style MP4 chapter metadata (used by ffmpeg -i chapters.txt).
5
+ * Format: CHAPTER01=HH:MM:SS.mmm / CHAPTER01NAME=Title
6
+ */
7
+ import { CDMarker } from '../domain/CDMarker';
8
+ /**
9
+ * Generate MP4 chapter markers in Nero chapter format.
10
+ *
11
+ * @param markers CD markers
12
+ * @param sampleRate Audio sample rate
13
+ * @returns Chapter metadata string
14
+ */
15
+ export declare function generateMp4Chapters(markers: CDMarker[], sampleRate: number): string;
16
+ //# sourceMappingURL=Mp4ChapterGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mp4ChapterGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/Mp4ChapterGenerator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,QAAQ,EAAE,EACnB,UAAU,EAAE,MAAM,GACnB,MAAM,CAsBR"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * MP4 Chapter Generator
3
+ *
4
+ * Generates Nero-style MP4 chapter metadata (used by ffmpeg -i chapters.txt).
5
+ * Format: CHAPTER01=HH:MM:SS.mmm / CHAPTER01NAME=Title
6
+ */
7
+ /**
8
+ * Generate MP4 chapter markers in Nero chapter format.
9
+ *
10
+ * @param markers CD markers
11
+ * @param sampleRate Audio sample rate
12
+ * @returns Chapter metadata string
13
+ */
14
+ export function generateMp4Chapters(markers, sampleRate) {
15
+ const sorted = [...markers].sort((a, b) => a.index - b.index);
16
+ const lines = [];
17
+ for (let i = 0; i < sorted.length; i++) {
18
+ const marker = sorted[i];
19
+ const chNum = String(i + 1).padStart(2, '0');
20
+ // Convert position to HH:MM:SS.mmm
21
+ const totalSeconds = marker.position / sampleRate;
22
+ const hours = Math.floor(totalSeconds / 3600);
23
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
24
+ const seconds = Math.floor(totalSeconds % 60);
25
+ const millis = Math.floor((totalSeconds % 1) * 1000);
26
+ const timeStr = `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}.${String(millis).padStart(3, '0')}`;
27
+ lines.push(`CHAPTER${chNum}=${timeStr}`);
28
+ lines.push(`CHAPTER${chNum}NAME=${marker.title || `Chapter ${i + 1}`}`);
29
+ }
30
+ return lines.join('\n');
31
+ }
32
+ //# sourceMappingURL=Mp4ChapterGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mp4ChapterGenerator.js","sourceRoot":"","sources":["../../src/utils/Mp4ChapterGenerator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAC/B,OAAmB,EACnB,UAAkB;IAElB,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;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE7C,mCAAmC;QACnC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC;QAClD,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,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAE/J,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,MAAM,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,32 +1,30 @@
1
1
  /**
2
- * OGG PCM Encoder (Placeholder NOT true Vorbis/Opus)
3
- * Ardour 참조: libs/ardour/export_format_specification.cc (OGG format)
2
+ * OGG Encoder — Real OGG Opus encoding via MediaRecorder API,
3
+ * with PCM-in-OGG container fallback for environments without MediaRecorder.
4
4
  *
5
- * WARNING: This is a simplified placeholder encoder. It produces an OGG container
6
- * with raw PCM data inside Vorbis-style headers, but does NOT perform actual
7
- * Vorbis or Opus lossy compression. The output is NOT valid OGG Vorbis and most
8
- * players will fail to decode it.
9
- *
10
- * TODO: Replace with a real encoder. Options include:
11
- * - Browser MediaRecorder API with 'audio/ogg; codecs=opus' (requires live encoding)
12
- * - WebAssembly-based libvorbis/libopus port (e.g., opus-media-recorder, ogg-vorbis-encoder-js)
13
- * - Server-side encoding via FFmpeg
14
- *
15
- * The quality parameter is accepted for API compatibility but has no effect on
16
- * compression since no lossy encoding is performed.
5
+ * The browser's MediaRecorder with 'audio/ogg; codecs=opus' produces
6
+ * valid OGG Opus files that can be played by all modern browsers and players.
7
+ * Quality parameter maps to Opus bitrate (64-320 kbps).
17
8
  */
18
9
  export declare class OggEncoder {
19
10
  /**
20
- * Encode AudioBuffer to an OGG-wrapped PCM Blob.
21
- *
22
- * NOTE: This does NOT produce valid OGG Vorbis. The MIME type is set to
23
- * 'application/octet-stream' to avoid misleading players/browsers into
24
- * attempting Vorbis decoding. See class-level comment for replacement plans.
11
+ * Encode AudioBuffer to OGG Blob.
12
+ * Uses MediaRecorder (OGG Opus) when available, falls back to PCM container.
25
13
  *
26
14
  * @param buffer Audio data to encode
27
- * @param quality Ignored accepted for API compatibility only
15
+ * @param quality Quality 0.0-1.0, maps to Opus bitrate
16
+ */
17
+ static encode(buffer: AudioBuffer, quality?: number): Promise<Blob>;
18
+ /**
19
+ * Encode using MediaRecorder API with OGG Opus codec.
20
+ * This produces real, valid OGG Opus files.
21
+ */
22
+ private static encodeWithMediaRecorder;
23
+ /**
24
+ * Fallback: PCM data in OGG container.
25
+ * This is NOT valid OGG Vorbis/Opus, but provides basic container structure.
28
26
  */
29
- static encode(buffer: AudioBuffer, quality?: number): Blob;
27
+ private static encodePcmFallback;
30
28
  private static interleave;
31
29
  private static float32ToInt16;
32
30
  private static buildOggPage;
@@ -1 +1 @@
1
- {"version":3,"file":"OggEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/OggEncoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,UAAU;IACnB;;;;;;;;;OASG;WACW,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,MAAY,GAAG,IAAI;IA8CtE,OAAO,CAAC,MAAM,CAAC,UAAU;IAazB,OAAO,CAAC,MAAM,CAAC,cAAc;IAS7B,OAAO,CAAC,MAAM,CAAC,YAAY;IA+C3B,OAAO,CAAC,MAAM,CAAC,aAAa;IA2B5B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC,OAAO,CAAC,MAAM,CAAC,aAAa;IAY5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4B;IAEnD,OAAO,CAAC,MAAM,CAAC,WAAW;IAa1B,OAAO,CAAC,MAAM,CAAC,KAAK;CAQvB"}
1
+ {"version":3,"file":"OggEncoder.d.ts","sourceRoot":"","sources":["../../src/utils/OggEncoder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,UAAU;IACnB;;;;;;OAMG;WACiB,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrF;;;OAGG;mBACkB,uBAAuB;IA4E5C;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkChC,OAAO,CAAC,MAAM,CAAC,UAAU;IAazB,OAAO,CAAC,MAAM,CAAC,cAAc;IAS7B,OAAO,CAAC,MAAM,CAAC,YAAY;IAqC3B,OAAO,CAAC,MAAM,CAAC,aAAa;IAoB5B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAejC,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4B;IAEnD,OAAO,CAAC,MAAM,CAAC,WAAW;IAa1B,OAAO,CAAC,MAAM,CAAC,KAAK;CAQvB"}
@@ -1,46 +1,115 @@
1
1
  /**
2
- * OGG PCM Encoder (Placeholder NOT true Vorbis/Opus)
3
- * Ardour 참조: libs/ardour/export_format_specification.cc (OGG format)
2
+ * OGG Encoder — Real OGG Opus encoding via MediaRecorder API,
3
+ * with PCM-in-OGG container fallback for environments without MediaRecorder.
4
4
  *
5
- * WARNING: This is a simplified placeholder encoder. It produces an OGG container
6
- * with raw PCM data inside Vorbis-style headers, but does NOT perform actual
7
- * Vorbis or Opus lossy compression. The output is NOT valid OGG Vorbis and most
8
- * players will fail to decode it.
9
- *
10
- * TODO: Replace with a real encoder. Options include:
11
- * - Browser MediaRecorder API with 'audio/ogg; codecs=opus' (requires live encoding)
12
- * - WebAssembly-based libvorbis/libopus port (e.g., opus-media-recorder, ogg-vorbis-encoder-js)
13
- * - Server-side encoding via FFmpeg
14
- *
15
- * The quality parameter is accepted for API compatibility but has no effect on
16
- * compression since no lossy encoding is performed.
5
+ * The browser's MediaRecorder with 'audio/ogg; codecs=opus' produces
6
+ * valid OGG Opus files that can be played by all modern browsers and players.
7
+ * Quality parameter maps to Opus bitrate (64-320 kbps).
17
8
  */
18
9
  export class OggEncoder {
19
10
  /**
20
- * Encode AudioBuffer to an OGG-wrapped PCM Blob.
21
- *
22
- * NOTE: This does NOT produce valid OGG Vorbis. The MIME type is set to
23
- * 'application/octet-stream' to avoid misleading players/browsers into
24
- * attempting Vorbis decoding. See class-level comment for replacement plans.
11
+ * Encode AudioBuffer to OGG Blob.
12
+ * Uses MediaRecorder (OGG Opus) when available, falls back to PCM container.
25
13
  *
26
14
  * @param buffer Audio data to encode
27
- * @param quality Ignored accepted for API compatibility only
15
+ * @param quality Quality 0.0-1.0, maps to Opus bitrate
16
+ */
17
+ static async encode(buffer, quality = 0.5) {
18
+ // Try real encoding first
19
+ if (typeof MediaRecorder !== 'undefined' && typeof OfflineAudioContext !== 'undefined') {
20
+ try {
21
+ return await this.encodeWithMediaRecorder(buffer, quality);
22
+ }
23
+ catch (e) {
24
+ console.warn('[OggEncoder] MediaRecorder encoding failed, falling back to PCM:', e);
25
+ }
26
+ }
27
+ // Fallback: PCM-in-OGG container
28
+ return this.encodePcmFallback(buffer, quality);
29
+ }
30
+ /**
31
+ * Encode using MediaRecorder API with OGG Opus codec.
32
+ * This produces real, valid OGG Opus files.
33
+ */
34
+ static async encodeWithMediaRecorder(buffer, quality) {
35
+ const sampleRate = buffer.sampleRate;
36
+ const numChannels = buffer.numberOfChannels;
37
+ // Map quality 0.0-1.0 to bitrate 64-320 kbps
38
+ const bitrate = Math.round(64000 + quality * (320000 - 64000));
39
+ // Create an OfflineAudioContext to render the buffer through a MediaStreamDestination
40
+ // We need a real-time context for MediaRecorder
41
+ const ctx = new AudioContext({ sampleRate });
42
+ try {
43
+ const destination = ctx.createMediaStreamDestination();
44
+ const source = ctx.createBufferSource();
45
+ source.buffer = buffer;
46
+ source.connect(destination);
47
+ // Check if OGG Opus is supported
48
+ const mimeType = MediaRecorder.isTypeSupported('audio/ogg; codecs=opus')
49
+ ? 'audio/ogg; codecs=opus'
50
+ : MediaRecorder.isTypeSupported('audio/ogg')
51
+ ? 'audio/ogg'
52
+ : null;
53
+ if (!mimeType) {
54
+ throw new Error('OGG encoding not supported by MediaRecorder');
55
+ }
56
+ const recorder = new MediaRecorder(destination.stream, {
57
+ mimeType,
58
+ audioBitsPerSecond: bitrate,
59
+ });
60
+ const chunks = [];
61
+ return new Promise((resolve, reject) => {
62
+ recorder.ondataavailable = (e) => {
63
+ if (e.data.size > 0) {
64
+ chunks.push(e.data);
65
+ }
66
+ };
67
+ recorder.onstop = () => {
68
+ ctx.close();
69
+ const blob = new Blob(chunks, { type: 'audio/ogg' });
70
+ resolve(blob);
71
+ };
72
+ recorder.onerror = (e) => {
73
+ ctx.close();
74
+ reject(e);
75
+ };
76
+ recorder.start();
77
+ source.start(0);
78
+ // Stop after buffer duration + small padding
79
+ const durationMs = (buffer.length / sampleRate) * 1000;
80
+ setTimeout(() => {
81
+ try {
82
+ if (recorder.state === 'recording') {
83
+ recorder.stop();
84
+ }
85
+ // Stop all tracks on the stream
86
+ destination.stream.getTracks().forEach(t => t.stop());
87
+ }
88
+ catch (_a) {
89
+ // ignore
90
+ }
91
+ }, durationMs + 100);
92
+ });
93
+ }
94
+ catch (e) {
95
+ ctx.close();
96
+ throw e;
97
+ }
98
+ }
99
+ /**
100
+ * Fallback: PCM data in OGG container.
101
+ * This is NOT valid OGG Vorbis/Opus, but provides basic container structure.
28
102
  */
29
- static encode(buffer, quality = 0.5) {
103
+ static encodePcmFallback(buffer, quality) {
30
104
  const numChannels = buffer.numberOfChannels;
31
105
  const sampleRate = buffer.sampleRate;
32
106
  const interleaved = this.interleave(buffer);
33
- // Convert to Int16 for OGG (standard for Vorbis-like encoding)
34
107
  const int16Data = this.float32ToInt16(interleaved);
35
- // Build OGG pages
36
108
  const pages = [];
37
109
  const serialNumber = Math.floor(Math.random() * 0xFFFFFFFF);
38
- // Page 1: ID header
39
110
  pages.push(this.buildIdHeader(numChannels, sampleRate, quality, serialNumber));
40
- // Page 2: Comment header
41
111
  pages.push(this.buildCommentHeader(serialNumber));
42
- // Page 3+: Audio data pages
43
- const pageSize = 4096; // samples per page
112
+ const pageSize = 4096;
44
113
  const bytesPerSample = 2 * numChannels;
45
114
  let granulePosition = 0;
46
115
  let pageSequence = 2;
@@ -53,8 +122,7 @@ export class OggEncoder {
53
122
  const isLastPage = offset + chunkSize >= int16Data.byteLength;
54
123
  pages.push(this.buildDataPage(chunk, serialNumber, pageSequence++, granulePosition, isLastPage));
55
124
  }
56
- // NOTE: MIME type is 'application/octet-stream' because this is NOT valid OGG Vorbis.
57
- // Using 'audio/ogg' would cause browsers/players to attempt Vorbis decoding and fail.
125
+ // Use application/octet-stream since PCM fallback isn't valid OGG Vorbis
58
126
  return new Blob(pages, { type: 'application/octet-stream' });
59
127
  }
60
128
  static interleave(buffer) {
@@ -78,7 +146,6 @@ export class OggEncoder {
78
146
  return result.buffer;
79
147
  }
80
148
  static buildOggPage(headerType, granulePosition, serialNumber, pageSequence, data) {
81
- // Segment table
82
149
  const segments = [];
83
150
  let remaining = data.length;
84
151
  while (remaining >= 255) {
@@ -89,71 +156,67 @@ export class OggEncoder {
89
156
  const headerSize = 27 + segments.length;
90
157
  const page = new Uint8Array(headerSize + data.length);
91
158
  const view = new DataView(page.buffer);
92
- // Capture pattern
93
159
  page[0] = 0x4F;
94
160
  page[1] = 0x67;
95
161
  page[2] = 0x67;
96
162
  page[3] = 0x53; // "OggS"
97
- page[4] = 0; // version
163
+ page[4] = 0;
98
164
  page[5] = headerType;
99
- // Granule position (64-bit)
100
165
  view.setUint32(6, granulePosition & 0xFFFFFFFF, true);
101
166
  view.setUint32(10, Math.floor(granulePosition / 0x100000000) & 0xFFFFFFFF, true);
102
167
  view.setUint32(14, serialNumber, true);
103
168
  view.setUint32(18, pageSequence, true);
104
- view.setUint32(22, 0, true); // checksum (simplified)
169
+ view.setUint32(22, 0, true);
105
170
  page[26] = segments.length;
106
171
  for (let i = 0; i < segments.length; i++) {
107
172
  page[27 + i] = segments[i];
108
173
  }
109
174
  page.set(data, headerSize);
110
- // Calculate CRC32 and set it
111
175
  const crc = this.crc32(page);
112
176
  view.setUint32(22, crc, true);
113
177
  return page;
114
178
  }
115
179
  static buildIdHeader(channels, sampleRate, quality, serialNumber) {
116
- // Vorbis ID header
117
180
  const data = new Uint8Array(30);
118
181
  const view = new DataView(data.buffer);
119
- data[0] = 0x01; // packet type: ID
182
+ data[0] = 0x01;
120
183
  data[1] = 0x76;
121
184
  data[2] = 0x6F;
122
185
  data[3] = 0x72;
123
186
  data[4] = 0x62;
124
187
  data[5] = 0x69;
125
- data[6] = 0x73; // "vorbis"
126
- view.setUint32(7, 0, true); // version
188
+ data[6] = 0x73;
189
+ view.setUint32(7, 0, true);
127
190
  data[11] = channels;
128
191
  view.setUint32(12, sampleRate, true);
129
192
  const nominalBitrate = Math.floor(64000 + quality * (320000 - 64000));
130
- view.setInt32(16, nominalBitrate, true); // max bitrate
131
- view.setInt32(20, nominalBitrate, true); // nominal bitrate
132
- view.setInt32(24, nominalBitrate, true); // min bitrate
133
- data[28] = 0x08; // blocksize (256/2048)
134
- data[29] = 0x01; // framing
135
- return this.buildOggPage(0x02, 0, serialNumber, 0, data); // BOS flag
193
+ view.setInt32(16, nominalBitrate, true);
194
+ view.setInt32(20, nominalBitrate, true);
195
+ view.setInt32(24, nominalBitrate, true);
196
+ data[28] = 0x08;
197
+ data[29] = 0x01;
198
+ return this.buildOggPage(0x02, 0, serialNumber, 0, data);
136
199
  }
137
200
  static buildCommentHeader(serialNumber) {
138
201
  const vendor = 'drop.ai Web DAW';
139
202
  const vendorBytes = new TextEncoder().encode(vendor);
140
203
  const data = new Uint8Array(7 + 4 + vendorBytes.length + 4 + 1);
141
204
  const view = new DataView(data.buffer);
142
- data[0] = 0x03; // packet type: comment
205
+ data[0] = 0x03;
143
206
  data[1] = 0x76;
144
207
  data[2] = 0x6F;
145
208
  data[3] = 0x72;
146
209
  data[4] = 0x62;
147
210
  data[5] = 0x69;
148
- data[6] = 0x73; // "vorbis"
211
+ data[6] = 0x73;
149
212
  view.setUint32(7, vendorBytes.length, true);
150
213
  data.set(vendorBytes, 11);
151
- view.setUint32(11 + vendorBytes.length, 0, true); // no user comments
152
- data[11 + vendorBytes.length + 4] = 0x01; // framing
214
+ view.setUint32(11 + vendorBytes.length, 0, true);
215
+ data[11 + vendorBytes.length + 4] = 0x01;
153
216
  return this.buildOggPage(0x00, 0, serialNumber, 1, data);
154
217
  }
155
218
  static buildDataPage(audioData, serialNumber, pageSequence, granulePosition, isLast) {
156
- const headerType = isLast ? 0x04 : 0x00; // EOS flag if last
219
+ const headerType = isLast ? 0x04 : 0x00;
157
220
  return this.buildOggPage(headerType, granulePosition, serialNumber, pageSequence, audioData);
158
221
  }
159
222
  static getCrcTable() {
@@ -178,6 +241,5 @@ export class OggEncoder {
178
241
  return crc;
179
242
  }
180
243
  }
181
- // OGG CRC32 lookup table (polynomial 0x04C11DB7)
182
244
  OggEncoder.crcTable = null;
183
245
  //# sourceMappingURL=OggEncoder.js.map