@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.
- package/LICENSE +21 -21
- package/README.md +734 -316
- package/dist/actions/ActionRegistry.d.ts.map +1 -1
- package/dist/actions/ActionRegistry.js +7 -2
- package/dist/actions/ActionRegistry.js.map +1 -1
- package/dist/actions/types.d.ts +7 -1
- package/dist/actions/types.d.ts.map +1 -1
- package/dist/analysis/AudioAnalyzer.d.ts +69 -0
- package/dist/analysis/AudioAnalyzer.d.ts.map +1 -0
- package/dist/analysis/AudioAnalyzer.js +567 -0
- package/dist/analysis/AudioAnalyzer.js.map +1 -0
- package/dist/audio/AudioEngine.d.ts +14 -1
- package/dist/audio/AudioEngine.d.ts.map +1 -1
- package/dist/audio/AudioEngine.js +115 -35
- package/dist/audio/AudioEngine.js.map +1 -1
- package/dist/audio/Auditioner.d.ts +102 -0
- package/dist/audio/Auditioner.d.ts.map +1 -0
- package/dist/audio/Auditioner.js +237 -0
- package/dist/audio/Auditioner.js.map +1 -0
- package/dist/audio/BWFMetadata.d.ts +114 -0
- package/dist/audio/BWFMetadata.d.ts.map +1 -0
- package/dist/audio/BWFMetadata.js +392 -0
- package/dist/audio/BWFMetadata.js.map +1 -0
- package/dist/audio/BufferPool.d.ts +0 -3
- package/dist/audio/BufferPool.d.ts.map +1 -1
- package/dist/audio/BufferPool.js +0 -3
- package/dist/audio/BufferPool.js.map +1 -1
- package/dist/audio/ChannelSplitter.d.ts +36 -0
- package/dist/audio/ChannelSplitter.d.ts.map +1 -0
- package/dist/audio/ChannelSplitter.js +81 -0
- package/dist/audio/ChannelSplitter.js.map +1 -0
- package/dist/audio/ExportAnalyzer.d.ts +38 -0
- package/dist/audio/ExportAnalyzer.d.ts.map +1 -0
- package/dist/audio/ExportAnalyzer.js +75 -0
- package/dist/audio/ExportAnalyzer.js.map +1 -0
- package/dist/audio/LufsNormalizer.d.ts +36 -0
- package/dist/audio/LufsNormalizer.d.ts.map +1 -0
- package/dist/audio/LufsNormalizer.js +216 -0
- package/dist/audio/LufsNormalizer.js.map +1 -0
- package/dist/audio/MeterUtils.d.ts +0 -2
- package/dist/audio/MeterUtils.d.ts.map +1 -1
- package/dist/audio/MeterUtils.js +0 -2
- package/dist/audio/MeterUtils.js.map +1 -1
- package/dist/audio/OfflineExporter.d.ts +1 -7
- package/dist/audio/OfflineExporter.d.ts.map +1 -1
- package/dist/audio/OfflineExporter.js +31 -11
- package/dist/audio/OfflineExporter.js.map +1 -1
- package/dist/audio/ProcessingGraph.d.ts +0 -1
- package/dist/audio/ProcessingGraph.d.ts.map +1 -1
- package/dist/audio/ProcessingGraph.js +0 -1
- package/dist/audio/ProcessingGraph.js.map +1 -1
- package/dist/audio/RoutingGraph.d.ts +134 -0
- package/dist/audio/RoutingGraph.d.ts.map +1 -0
- package/dist/audio/RoutingGraph.js +547 -0
- package/dist/audio/RoutingGraph.js.map +1 -0
- package/dist/audio/SampleRateConverter.d.ts +20 -0
- package/dist/audio/SampleRateConverter.d.ts.map +1 -0
- package/dist/audio/SampleRateConverter.js +83 -0
- package/dist/audio/SampleRateConverter.js.map +1 -0
- package/dist/audio/SilencePadding.d.ts +27 -0
- package/dist/audio/SilencePadding.d.ts.map +1 -0
- package/dist/audio/SilencePadding.js +84 -0
- package/dist/audio/SilencePadding.js.map +1 -0
- package/dist/audio/SourceCache.d.ts +13 -19
- package/dist/audio/SourceCache.d.ts.map +1 -1
- package/dist/audio/SourceCache.js +21 -36
- package/dist/audio/SourceCache.js.map +1 -1
- package/dist/audio/engine/Declick.d.ts +97 -0
- package/dist/audio/engine/Declick.d.ts.map +1 -0
- package/dist/audio/engine/Declick.js +203 -0
- package/dist/audio/engine/Declick.js.map +1 -0
- package/dist/audio/engine/DiskIO.d.ts +170 -0
- package/dist/audio/engine/DiskIO.d.ts.map +1 -0
- package/dist/audio/engine/DiskIO.js +382 -0
- package/dist/audio/engine/DiskIO.js.map +1 -0
- package/dist/audio/engine/LatencyCompensator.d.ts +46 -0
- package/dist/audio/engine/LatencyCompensator.d.ts.map +1 -0
- package/dist/audio/engine/LatencyCompensator.js +84 -0
- package/dist/audio/engine/LatencyCompensator.js.map +1 -0
- package/dist/audio/engine/MultiTrackRecorder.d.ts +144 -0
- package/dist/audio/engine/MultiTrackRecorder.d.ts.map +1 -0
- package/dist/audio/engine/MultiTrackRecorder.js +359 -0
- package/dist/audio/engine/MultiTrackRecorder.js.map +1 -0
- package/dist/audio/engine/PlaylistEngine.d.ts +1 -1
- package/dist/audio/engine/PlaylistEngine.d.ts.map +1 -1
- package/dist/audio/engine/PlaylistEngine.js +10 -3
- package/dist/audio/engine/PlaylistEngine.js.map +1 -1
- package/dist/audio/engine/PunchRecordManager.d.ts +111 -0
- package/dist/audio/engine/PunchRecordManager.d.ts.map +1 -0
- package/dist/audio/engine/PunchRecordManager.js +191 -0
- package/dist/audio/engine/PunchRecordManager.js.map +1 -0
- package/dist/audio/engine/RoutingGraph.d.ts +133 -0
- package/dist/audio/engine/RoutingGraph.d.ts.map +1 -0
- package/dist/audio/engine/RoutingGraph.js +436 -0
- package/dist/audio/engine/RoutingGraph.js.map +1 -0
- package/dist/audio/engine/SidechainRouter.d.ts +137 -0
- package/dist/audio/engine/SidechainRouter.d.ts.map +1 -0
- package/dist/audio/engine/SidechainRouter.js +290 -0
- package/dist/audio/engine/SidechainRouter.js.map +1 -0
- package/dist/audio/engine/XrunTracker.d.ts +71 -0
- package/dist/audio/engine/XrunTracker.d.ts.map +1 -0
- package/dist/audio/engine/XrunTracker.js +118 -0
- package/dist/audio/engine/XrunTracker.js.map +1 -0
- package/dist/audio/export/CDMarkerExporter.d.ts +60 -0
- package/dist/audio/export/CDMarkerExporter.d.ts.map +1 -0
- package/dist/audio/export/CDMarkerExporter.js +162 -0
- package/dist/audio/export/CDMarkerExporter.js.map +1 -0
- package/dist/audio/export/ExportGraphBuilder.d.ts +119 -0
- package/dist/audio/export/ExportGraphBuilder.d.ts.map +1 -0
- package/dist/audio/export/ExportGraphBuilder.js +520 -0
- package/dist/audio/export/ExportGraphBuilder.js.map +1 -0
- package/dist/audio/export/ExportPresetManager.d.ts +85 -0
- package/dist/audio/export/ExportPresetManager.d.ts.map +1 -0
- package/dist/audio/export/ExportPresetManager.js +304 -0
- package/dist/audio/export/ExportPresetManager.js.map +1 -0
- package/dist/automation/AutomationList.d.ts +0 -1
- package/dist/automation/AutomationList.d.ts.map +1 -1
- package/dist/automation/AutomationList.js +0 -1
- package/dist/automation/AutomationList.js.map +1 -1
- package/dist/automation/AutomationMode.d.ts +0 -1
- package/dist/automation/AutomationMode.d.ts.map +1 -1
- package/dist/automation/AutomationMode.js +0 -1
- package/dist/automation/AutomationMode.js.map +1 -1
- package/dist/commands/CommandHistory.d.ts +1 -4
- package/dist/commands/CommandHistory.d.ts.map +1 -1
- package/dist/commands/CommandHistory.js +6 -9
- package/dist/commands/CommandHistory.js.map +1 -1
- package/dist/commands/CommandRegistry.d.ts +1 -2
- package/dist/commands/CommandRegistry.d.ts.map +1 -1
- package/dist/commands/CommandRegistry.js +1 -2
- package/dist/commands/CommandRegistry.js.map +1 -1
- package/dist/commands/UndoTransaction.d.ts +0 -2
- package/dist/commands/UndoTransaction.d.ts.map +1 -1
- package/dist/commands/UndoTransaction.js +1 -3
- package/dist/commands/UndoTransaction.js.map +1 -1
- package/dist/commands/handlers/HistoryHandler.d.ts +5 -5
- package/dist/commands/handlers/HistoryHandler.js +10 -10
- package/dist/commands/handlers/HistoryHandler.js.map +1 -1
- package/dist/commands/handlers/MarkerHandler.d.ts +0 -1
- package/dist/commands/handlers/MarkerHandler.d.ts.map +1 -1
- package/dist/commands/handlers/MarkerHandler.js +0 -1
- package/dist/commands/handlers/MarkerHandler.js.map +1 -1
- package/dist/commands/handlers/RegionHandler.d.ts.map +1 -1
- package/dist/commands/handlers/RegionHandler.js +25 -1
- package/dist/commands/handlers/RegionHandler.js.map +1 -1
- package/dist/commands/handlers/TrackHandler.js +1 -1
- package/dist/commands/handlers/TrackHandler.js.map +1 -1
- package/dist/commands/impl/CopyRegionCommand.d.ts +0 -1
- package/dist/commands/impl/CopyRegionCommand.d.ts.map +1 -1
- package/dist/commands/impl/CopyRegionCommand.js +0 -1
- package/dist/commands/impl/CopyRegionCommand.js.map +1 -1
- package/dist/commands/impl/DuplicateRegionCommand.d.ts +0 -1
- package/dist/commands/impl/DuplicateRegionCommand.d.ts.map +1 -1
- package/dist/commands/impl/DuplicateRegionCommand.js +0 -1
- package/dist/commands/impl/DuplicateRegionCommand.js.map +1 -1
- package/dist/commands/impl/ExportCommand.d.ts +0 -1
- package/dist/commands/impl/ExportCommand.d.ts.map +1 -1
- package/dist/commands/impl/ExportCommand.js +0 -1
- package/dist/commands/impl/ExportCommand.js.map +1 -1
- package/dist/commands/impl/FreezeTrackCommand.d.ts +1 -1
- package/dist/commands/impl/FreezeTrackCommand.d.ts.map +1 -1
- package/dist/commands/impl/FreezeTrackCommand.js +38 -37
- package/dist/commands/impl/FreezeTrackCommand.js.map +1 -1
- package/dist/commands/impl/PasteRegionCommand.d.ts +0 -1
- package/dist/commands/impl/PasteRegionCommand.d.ts.map +1 -1
- package/dist/commands/impl/PasteRegionCommand.js +0 -1
- package/dist/commands/impl/PasteRegionCommand.js.map +1 -1
- package/dist/commands/impl/SaveSnapshotCommand.d.ts +1 -1
- package/dist/commands/impl/SaveSnapshotCommand.js +1 -1
- package/dist/commands/impl/SetLoopRangeCommand.d.ts +0 -1
- package/dist/commands/impl/SetLoopRangeCommand.d.ts.map +1 -1
- package/dist/commands/impl/SetLoopRangeCommand.js +0 -1
- package/dist/commands/impl/SetLoopRangeCommand.js.map +1 -1
- package/dist/commands/impl/SetPunchRangeCommand.d.ts +0 -1
- package/dist/commands/impl/SetPunchRangeCommand.d.ts.map +1 -1
- package/dist/commands/impl/SetPunchRangeCommand.js +0 -1
- package/dist/commands/impl/SetPunchRangeCommand.js.map +1 -1
- package/dist/commands/impl/SetRegionTimeDomainCommand.d.ts.map +1 -1
- package/dist/commands/impl/SetRegionTimeDomainCommand.js +3 -3
- package/dist/commands/impl/SetRegionTimeDomainCommand.js.map +1 -1
- package/dist/commands/impl/SplitAtPlayheadCommand.d.ts +0 -2
- package/dist/commands/impl/SplitAtPlayheadCommand.d.ts.map +1 -1
- package/dist/commands/impl/SplitAtPlayheadCommand.js +0 -2
- package/dist/commands/impl/SplitAtPlayheadCommand.js.map +1 -1
- package/dist/commands/impl/SplitRegionCommand.d.ts +0 -1
- package/dist/commands/impl/SplitRegionCommand.d.ts.map +1 -1
- package/dist/commands/impl/SplitRegionCommand.js +0 -1
- package/dist/commands/impl/SplitRegionCommand.js.map +1 -1
- package/dist/commands/impl/StripSilenceCommand.d.ts +0 -1
- package/dist/commands/impl/StripSilenceCommand.d.ts.map +1 -1
- package/dist/commands/impl/StripSilenceCommand.js +0 -1
- package/dist/commands/impl/StripSilenceCommand.js.map +1 -1
- package/dist/commands/impl/TimeStretchRegionCommand.d.ts +1 -2
- package/dist/commands/impl/TimeStretchRegionCommand.d.ts.map +1 -1
- package/dist/commands/impl/TimeStretchRegionCommand.js +1 -2
- package/dist/commands/impl/TimeStretchRegionCommand.js.map +1 -1
- package/dist/commands/impl/ToggleLoopCommand.d.ts +1 -0
- package/dist/commands/impl/ToggleLoopCommand.d.ts.map +1 -1
- package/dist/commands/impl/ToggleLoopCommand.js +10 -0
- package/dist/commands/impl/ToggleLoopCommand.js.map +1 -1
- package/dist/commands/impl/TrimRegionCommand.d.ts +14 -1
- package/dist/commands/impl/TrimRegionCommand.d.ts.map +1 -1
- package/dist/commands/impl/TrimRegionCommand.js +138 -33
- package/dist/commands/impl/TrimRegionCommand.js.map +1 -1
- package/dist/commands/impl/TrimRegionToPlayheadCommand.d.ts +26 -0
- package/dist/commands/impl/TrimRegionToPlayheadCommand.d.ts.map +1 -0
- package/dist/commands/impl/TrimRegionToPlayheadCommand.js +68 -0
- package/dist/commands/impl/TrimRegionToPlayheadCommand.js.map +1 -0
- package/dist/commands/impl/TrimRegionToRangeCommand.d.ts +27 -0
- package/dist/commands/impl/TrimRegionToRangeCommand.d.ts.map +1 -0
- package/dist/commands/impl/TrimRegionToRangeCommand.js +68 -0
- package/dist/commands/impl/TrimRegionToRangeCommand.js.map +1 -0
- package/dist/commands/impl/TrimToAdjacentRegionCommand.d.ts +26 -0
- package/dist/commands/impl/TrimToAdjacentRegionCommand.d.ts.map +1 -0
- package/dist/commands/impl/TrimToAdjacentRegionCommand.js +76 -0
- package/dist/commands/impl/TrimToAdjacentRegionCommand.js.map +1 -0
- package/dist/commands/types.d.ts +19 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +21 -0
- package/dist/commands/types.js.map +1 -1
- package/dist/domain/ABComparison.d.ts +0 -1
- package/dist/domain/ABComparison.d.ts.map +1 -1
- package/dist/domain/ABComparison.js +0 -1
- package/dist/domain/ABComparison.js.map +1 -1
- package/dist/domain/CDMarker.d.ts +0 -1
- package/dist/domain/CDMarker.d.ts.map +1 -1
- package/dist/domain/CDMarker.js +0 -1
- package/dist/domain/CDMarker.js.map +1 -1
- package/dist/domain/ClockMode.d.ts +0 -1
- package/dist/domain/ClockMode.d.ts.map +1 -1
- package/dist/domain/ClockMode.js +0 -1
- package/dist/domain/ClockMode.js.map +1 -1
- package/dist/domain/Crossfade.d.ts +78 -0
- package/dist/domain/Crossfade.d.ts.map +1 -0
- package/dist/domain/Crossfade.js +216 -0
- package/dist/domain/Crossfade.js.map +1 -0
- package/dist/domain/DragManager.d.ts +0 -2
- package/dist/domain/DragManager.d.ts.map +1 -1
- package/dist/domain/DragManager.js +0 -2
- package/dist/domain/DragManager.js.map +1 -1
- package/dist/domain/EditMode.d.ts +0 -1
- package/dist/domain/EditMode.d.ts.map +1 -1
- package/dist/domain/EditMode.js +0 -1
- package/dist/domain/EditMode.js.map +1 -1
- package/dist/domain/ExportConfig.d.ts +98 -2
- package/dist/domain/ExportConfig.d.ts.map +1 -1
- package/dist/domain/ExportConfig.js +154 -2
- package/dist/domain/ExportConfig.js.map +1 -1
- package/dist/domain/ExportPreset.d.ts +60 -0
- package/dist/domain/ExportPreset.d.ts.map +1 -0
- package/dist/domain/ExportPreset.js +77 -0
- package/dist/domain/ExportPreset.js.map +1 -0
- package/dist/domain/ExportStatus.d.ts +0 -1
- package/dist/domain/ExportStatus.d.ts.map +1 -1
- package/dist/domain/ExportStatus.js +0 -1
- package/dist/domain/ExportStatus.js.map +1 -1
- package/dist/domain/GridSettings.d.ts +0 -3
- package/dist/domain/GridSettings.d.ts.map +1 -1
- package/dist/domain/GridSettings.js +0 -3
- package/dist/domain/GridSettings.js.map +1 -1
- package/dist/domain/ImportStatus.d.ts +40 -0
- package/dist/domain/ImportStatus.d.ts.map +1 -0
- package/dist/domain/ImportStatus.js +86 -0
- package/dist/domain/ImportStatus.js.map +1 -0
- package/dist/domain/Marker.d.ts +0 -1
- package/dist/domain/Marker.d.ts.map +1 -1
- package/dist/domain/Marker.js +0 -1
- package/dist/domain/Marker.js.map +1 -1
- package/dist/domain/MeterData.d.ts +0 -2
- package/dist/domain/MeterData.d.ts.map +1 -1
- package/dist/domain/MeterType.d.ts +0 -2
- package/dist/domain/MeterType.d.ts.map +1 -1
- package/dist/domain/MeterType.js +0 -2
- package/dist/domain/MeterType.js.map +1 -1
- package/dist/domain/MonitorMode.d.ts +0 -1
- package/dist/domain/MonitorMode.d.ts.map +1 -1
- package/dist/domain/MonitorMode.js +0 -1
- package/dist/domain/MonitorMode.js.map +1 -1
- package/dist/domain/MouseMode.d.ts +0 -1
- package/dist/domain/MouseMode.d.ts.map +1 -1
- package/dist/domain/MouseMode.js +0 -1
- package/dist/domain/MouseMode.js.map +1 -1
- package/dist/domain/OverlapType.d.ts +0 -2
- package/dist/domain/OverlapType.d.ts.map +1 -1
- package/dist/domain/OverlapType.js +0 -2
- package/dist/domain/OverlapType.js.map +1 -1
- package/dist/domain/Playlist.d.ts +72 -0
- package/dist/domain/Playlist.d.ts.map +1 -1
- package/dist/domain/Playlist.js +231 -6
- package/dist/domain/Playlist.js.map +1 -1
- package/dist/domain/Range.d.ts +0 -1
- package/dist/domain/Range.d.ts.map +1 -1
- package/dist/domain/Range.js +0 -1
- package/dist/domain/Range.js.map +1 -1
- package/dist/domain/RecordMode.d.ts +0 -1
- package/dist/domain/RecordMode.d.ts.map +1 -1
- package/dist/domain/RecordMode.js +0 -1
- package/dist/domain/RecordMode.js.map +1 -1
- package/dist/domain/Region.d.ts +76 -0
- package/dist/domain/Region.d.ts.map +1 -1
- package/dist/domain/Region.js +234 -1
- package/dist/domain/Region.js.map +1 -1
- package/dist/domain/RegionClipboard.d.ts +1 -3
- package/dist/domain/RegionClipboard.d.ts.map +1 -1
- package/dist/domain/RegionClipboard.js +1 -2
- package/dist/domain/RegionClipboard.js.map +1 -1
- package/dist/domain/Route.d.ts +43 -3
- package/dist/domain/Route.d.ts.map +1 -1
- package/dist/domain/Route.js +92 -6
- package/dist/domain/Route.js.map +1 -1
- package/dist/domain/RulerType.d.ts +0 -1
- package/dist/domain/RulerType.d.ts.map +1 -1
- package/dist/domain/RulerType.js +0 -1
- package/dist/domain/RulerType.js.map +1 -1
- package/dist/domain/SelectionHistory.d.ts +0 -3
- package/dist/domain/SelectionHistory.d.ts.map +1 -1
- package/dist/domain/SelectionHistory.js +0 -3
- package/dist/domain/SelectionHistory.js.map +1 -1
- package/dist/domain/SendBus.d.ts +0 -1
- package/dist/domain/SendBus.d.ts.map +1 -1
- package/dist/domain/SendBus.js +0 -1
- package/dist/domain/SendBus.js.map +1 -1
- package/dist/domain/Session.d.ts +31 -0
- package/dist/domain/Session.d.ts.map +1 -1
- package/dist/domain/Session.js +70 -0
- package/dist/domain/Session.js.map +1 -1
- package/dist/domain/SidechainConfig.d.ts +0 -1
- package/dist/domain/SidechainConfig.d.ts.map +1 -1
- package/dist/domain/SidechainConfig.js +0 -1
- package/dist/domain/SidechainConfig.js.map +1 -1
- package/dist/domain/Source.d.ts +145 -1
- package/dist/domain/Source.d.ts.map +1 -1
- package/dist/domain/Source.js +144 -1
- package/dist/domain/Source.js.map +1 -1
- package/dist/domain/Take.d.ts +0 -1
- package/dist/domain/Take.d.ts.map +1 -1
- package/dist/domain/Take.js +0 -1
- package/dist/domain/Take.js.map +1 -1
- package/dist/domain/ThawList.d.ts +36 -0
- package/dist/domain/ThawList.d.ts.map +1 -0
- package/dist/domain/ThawList.js +72 -0
- package/dist/domain/ThawList.js.map +1 -0
- package/dist/domain/Track.d.ts +93 -1
- package/dist/domain/Track.d.ts.map +1 -1
- package/dist/domain/Track.js +136 -0
- package/dist/domain/Track.js.map +1 -1
- package/dist/domain/TrackGroup.d.ts +0 -1
- package/dist/domain/TrackGroup.d.ts.map +1 -1
- package/dist/domain/TrackGroup.js +0 -1
- package/dist/domain/TrackGroup.js.map +1 -1
- package/dist/domain/TransportFSM.d.ts +0 -1
- package/dist/domain/TransportFSM.d.ts.map +1 -1
- package/dist/domain/TransportFSM.js +0 -1
- package/dist/domain/TransportFSM.js.map +1 -1
- package/dist/domain/TransportMode.d.ts +0 -1
- package/dist/domain/TransportMode.d.ts.map +1 -1
- package/dist/domain/TransportMode.js +0 -1
- package/dist/domain/TransportMode.js.map +1 -1
- package/dist/domain/TriggerBox.d.ts +121 -0
- package/dist/domain/TriggerBox.d.ts.map +1 -0
- package/dist/domain/TriggerBox.js +428 -0
- package/dist/domain/TriggerBox.js.map +1 -0
- package/dist/domain/VCATrack.d.ts +63 -2
- package/dist/domain/VCATrack.d.ts.map +1 -1
- package/dist/domain/VCATrack.js +127 -2
- package/dist/domain/VCATrack.js.map +1 -1
- package/dist/domain/VideoExportConfig.d.ts +116 -0
- package/dist/domain/VideoExportConfig.d.ts.map +1 -0
- package/dist/domain/VideoExportConfig.js +243 -0
- package/dist/domain/VideoExportConfig.js.map +1 -0
- package/dist/domain/VideoExportStatus.d.ts +89 -0
- package/dist/domain/VideoExportStatus.d.ts.map +1 -0
- package/dist/domain/VideoExportStatus.js +192 -0
- package/dist/domain/VideoExportStatus.js.map +1 -0
- package/dist/domain/VideoMetadata.d.ts +46 -0
- package/dist/domain/VideoMetadata.d.ts.map +1 -0
- package/dist/domain/VideoMetadata.js +2 -0
- package/dist/domain/VideoMetadata.js.map +1 -0
- package/dist/domain/ZoomFocus.d.ts +0 -1
- package/dist/domain/ZoomFocus.d.ts.map +1 -1
- package/dist/domain/ZoomFocus.js +0 -1
- package/dist/domain/ZoomFocus.js.map +1 -1
- package/dist/domain/index.d.ts +5 -0
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +5 -0
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/temporal/TempoMap.d.ts +198 -2
- package/dist/domain/temporal/TempoMap.d.ts.map +1 -1
- package/dist/domain/temporal/TempoMap.js +464 -30
- package/dist/domain/temporal/TempoMap.js.map +1 -1
- package/dist/domain/temporal/types.d.ts +1 -1
- package/dist/domain/temporal/types.d.ts.map +1 -1
- package/dist/domain/temporal/types.js +1 -1
- package/dist/domain/temporal/types.js.map +1 -1
- package/dist/index.d.ts +43 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/Signal.d.ts +1 -1
- package/dist/lib/ThawList.d.ts +98 -0
- package/dist/lib/ThawList.d.ts.map +1 -0
- package/dist/lib/ThawList.js +151 -0
- package/dist/lib/ThawList.js.map +1 -0
- package/dist/midi/MidiFileParser.d.ts +32 -0
- package/dist/midi/MidiFileParser.d.ts.map +1 -0
- package/dist/midi/MidiFileParser.js +245 -0
- package/dist/midi/MidiFileParser.js.map +1 -0
- package/dist/midi/MidiFileWriter.d.ts +30 -0
- package/dist/midi/MidiFileWriter.d.ts.map +1 -0
- package/dist/midi/MidiFileWriter.js +159 -0
- package/dist/midi/MidiFileWriter.js.map +1 -0
- package/dist/midi/MidiImporter.d.ts +37 -0
- package/dist/midi/MidiImporter.d.ts.map +1 -0
- package/dist/midi/MidiImporter.js +62 -0
- package/dist/midi/MidiImporter.js.map +1 -0
- package/dist/plugins/PluginManager.js +2 -2
- package/dist/plugins/PluginManager.js.map +1 -1
- package/dist/plugins/PluginPresetManager.d.ts +86 -0
- package/dist/plugins/PluginPresetManager.d.ts.map +1 -0
- package/dist/plugins/PluginPresetManager.js +140 -0
- package/dist/plugins/PluginPresetManager.js.map +1 -0
- package/dist/plugins/impl/ExpanderPlugin.d.ts +1 -1
- package/dist/plugins/impl/ExpanderPlugin.js +1 -1
- package/dist/plugins/impl/ParametricEQPlugin.d.ts +1 -1
- package/dist/plugins/impl/ParametricEQPlugin.js +1 -1
- package/dist/processing/IO.d.ts +15 -1
- package/dist/processing/IO.d.ts.map +1 -1
- package/dist/processing/IO.js +29 -1
- package/dist/processing/IO.js.map +1 -1
- package/dist/processing/InternalSend.d.ts +102 -0
- package/dist/processing/InternalSend.d.ts.map +1 -0
- package/dist/processing/InternalSend.js +175 -0
- package/dist/processing/InternalSend.js.map +1 -0
- package/dist/processing/MeterDSP.d.ts +165 -0
- package/dist/processing/MeterDSP.d.ts.map +1 -0
- package/dist/processing/MeterDSP.js +753 -0
- package/dist/processing/MeterDSP.js.map +1 -0
- package/dist/processing/MeterProcessor.d.ts +0 -1
- package/dist/processing/MeterProcessor.d.ts.map +1 -1
- package/dist/processing/MeterProcessor.js +0 -1
- package/dist/processing/MeterProcessor.js.map +1 -1
- package/dist/processing/Panner.d.ts +144 -0
- package/dist/processing/Panner.d.ts.map +1 -0
- package/dist/processing/Panner.js +280 -0
- package/dist/processing/Panner.js.map +1 -0
- package/dist/processing/PluginInsert.d.ts +56 -1
- package/dist/processing/PluginInsert.d.ts.map +1 -1
- package/dist/processing/PluginInsert.js +180 -2
- package/dist/processing/PluginInsert.js.map +1 -1
- package/dist/processing/PolarityProcessor.d.ts +1 -1
- package/dist/processing/PolarityProcessor.js +1 -1
- package/dist/processing/Processor.d.ts +38 -0
- package/dist/processing/Processor.d.ts.map +1 -1
- package/dist/processing/Processor.js +60 -1
- package/dist/processing/Processor.js.map +1 -1
- package/dist/processing/SendProcessor.d.ts +0 -1
- package/dist/processing/SendProcessor.d.ts.map +1 -1
- package/dist/processing/SendProcessor.js +0 -1
- package/dist/processing/SendProcessor.js.map +1 -1
- package/dist/processing/SurroundPanner.d.ts +120 -0
- package/dist/processing/SurroundPanner.d.ts.map +1 -0
- package/dist/processing/SurroundPanner.js +374 -0
- package/dist/processing/SurroundPanner.js.map +1 -0
- package/dist/processing/TruePeakLimiter.d.ts +32 -0
- package/dist/processing/TruePeakLimiter.d.ts.map +1 -0
- package/dist/processing/TruePeakLimiter.js +142 -0
- package/dist/processing/TruePeakLimiter.js.map +1 -0
- package/dist/storage/ExportPresetStorage.d.ts +33 -0
- package/dist/storage/ExportPresetStorage.d.ts.map +1 -0
- package/dist/storage/ExportPresetStorage.js +121 -0
- package/dist/storage/ExportPresetStorage.js.map +1 -0
- package/dist/storage/SessionArchive.d.ts +73 -0
- package/dist/storage/SessionArchive.d.ts.map +1 -0
- package/dist/storage/SessionArchive.js +211 -0
- package/dist/storage/SessionArchive.js.map +1 -0
- package/dist/storage/SessionStorage.d.ts +1 -1
- package/dist/storage/SessionTemplate.d.ts +74 -5
- package/dist/storage/SessionTemplate.d.ts.map +1 -1
- package/dist/storage/SessionTemplate.js +247 -53
- package/dist/storage/SessionTemplate.js.map +1 -1
- package/dist/utils/BwfMetadataWriter.d.ts +41 -0
- package/dist/utils/BwfMetadataWriter.d.ts.map +1 -0
- package/dist/utils/BwfMetadataWriter.js +130 -0
- package/dist/utils/BwfMetadataWriter.js.map +1 -0
- package/dist/utils/DitherProcessor.d.ts +0 -1
- package/dist/utils/DitherProcessor.d.ts.map +1 -1
- package/dist/utils/DitherProcessor.js +0 -1
- package/dist/utils/DitherProcessor.js.map +1 -1
- package/dist/utils/FilenameTemplate.d.ts +39 -0
- package/dist/utils/FilenameTemplate.d.ts.map +1 -0
- package/dist/utils/FilenameTemplate.js +77 -0
- package/dist/utils/FilenameTemplate.js.map +1 -0
- package/dist/utils/FlacEncoder.d.ts +0 -1
- package/dist/utils/FlacEncoder.d.ts.map +1 -1
- package/dist/utils/FlacEncoder.js +0 -1
- package/dist/utils/FlacEncoder.js.map +1 -1
- package/dist/utils/Logger.d.ts +28 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +46 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/Mp4ChapterGenerator.d.ts +16 -0
- package/dist/utils/Mp4ChapterGenerator.d.ts.map +1 -0
- package/dist/utils/Mp4ChapterGenerator.js +32 -0
- package/dist/utils/Mp4ChapterGenerator.js.map +1 -0
- package/dist/utils/OggEncoder.d.ts +19 -21
- package/dist/utils/OggEncoder.d.ts.map +1 -1
- package/dist/utils/OggEncoder.js +113 -51
- package/dist/utils/OggEncoder.js.map +1 -1
- package/dist/utils/TocGenerator.d.ts +16 -0
- package/dist/utils/TocGenerator.d.ts.map +1 -0
- package/dist/utils/TocGenerator.js +46 -0
- package/dist/utils/TocGenerator.js.map +1 -0
- package/package.json +7 -8
package/dist/domain/Source.d.ts
CHANGED
|
@@ -1,4 +1,57 @@
|
|
|
1
1
|
import { SourceId, FrameCount } from './types';
|
|
2
|
+
import type { VideoMetadata } from './VideoMetadata';
|
|
3
|
+
import { Signal } from '../lib/Signal';
|
|
4
|
+
/**
|
|
5
|
+
* Pre-computed peak data for waveform rendering at a given resolution.
|
|
6
|
+
*
|
|
7
|
+
* Each entry represents one "pixel column" of the waveform and stores
|
|
8
|
+
* the minimum, maximum, and RMS sample values within that column's
|
|
9
|
+
* frame range.
|
|
10
|
+
*/
|
|
11
|
+
export interface PeakData {
|
|
12
|
+
/** Minimum sample values per peak pixel. */
|
|
13
|
+
min: Float32Array;
|
|
14
|
+
/** Maximum sample values per peak pixel. */
|
|
15
|
+
max: Float32Array;
|
|
16
|
+
/** RMS (root mean square) values per peak pixel. */
|
|
17
|
+
rms: Float32Array;
|
|
18
|
+
/** Number of peak entries. */
|
|
19
|
+
length: number;
|
|
20
|
+
/** Number of source frames represented by each peak entry. */
|
|
21
|
+
resolution: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Aggregated analysis results computed by the AudioAnalyzer.
|
|
25
|
+
*
|
|
26
|
+
* Fields are populated lazily — not all analysis passes produce
|
|
27
|
+
* every metric, so most values are optional.
|
|
28
|
+
*/
|
|
29
|
+
export interface SourceAnalysisData {
|
|
30
|
+
/** Detected transient positions in frames. */
|
|
31
|
+
transients: number[];
|
|
32
|
+
/** Estimated tempo in beats per minute. */
|
|
33
|
+
bpm?: number;
|
|
34
|
+
/** Confidence of the BPM estimate (0..1). */
|
|
35
|
+
bpmConfidence?: number;
|
|
36
|
+
/** Integrated loudness in LUFS. */
|
|
37
|
+
lufs?: number;
|
|
38
|
+
/** True peak level in dBFS. */
|
|
39
|
+
truePeak?: number;
|
|
40
|
+
/** Zero crossing rate (crossings per second). */
|
|
41
|
+
zeroCrossingRate?: number;
|
|
42
|
+
/** Spectral centroid in Hz. */
|
|
43
|
+
spectralCentroid?: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Bitflags for source metadata properties.
|
|
47
|
+
*/
|
|
48
|
+
export declare enum SourceFlags {
|
|
49
|
+
WRITABLE = 1,// 1
|
|
50
|
+
CAN_RENAME = 2,// 2
|
|
51
|
+
REMOVABLE = 4,// 4
|
|
52
|
+
MISSING = 8,// 8
|
|
53
|
+
RF64_RIFF = 16
|
|
54
|
+
}
|
|
2
55
|
export declare class Source {
|
|
3
56
|
readonly id: SourceId;
|
|
4
57
|
readonly name: string;
|
|
@@ -6,6 +59,97 @@ export declare class Source {
|
|
|
6
59
|
readonly duration: FrameCount;
|
|
7
60
|
readonly sampleRate: number;
|
|
8
61
|
readonly channelCount: number;
|
|
9
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Optional video metadata if this source originated from a video file.
|
|
64
|
+
* When present, indicates that audio was extracted from a video file.
|
|
65
|
+
*/
|
|
66
|
+
readonly videoMetadata?: VideoMetadata;
|
|
67
|
+
/** Bitflags describing source properties (see SourceFlags). */
|
|
68
|
+
flags: number;
|
|
69
|
+
/** Identifier linking this source to a specific take. */
|
|
70
|
+
takeId?: string;
|
|
71
|
+
/** Name of the ancestor source (e.g. the original file before edits). */
|
|
72
|
+
ancestorName?: string;
|
|
73
|
+
/** Reference count tracking how many regions/clips use this source. */
|
|
74
|
+
private _useCount;
|
|
75
|
+
/** Cached peak data for waveform display at various zoom levels. */
|
|
76
|
+
private _peakCache;
|
|
77
|
+
/** Analysis results (populated lazily by AudioAnalyzer). */
|
|
78
|
+
private _analysisData;
|
|
79
|
+
/** Emitted when peak data for a given resolution is added or updated. */
|
|
80
|
+
readonly peakCacheUpdated: Signal<number>;
|
|
81
|
+
/** Emitted when analysis data is set or replaced. */
|
|
82
|
+
readonly analysisCompleted: Signal<SourceAnalysisData>;
|
|
83
|
+
/** Natural timeline position in frames (where the source was originally recorded). */
|
|
84
|
+
naturalPosition?: number;
|
|
85
|
+
/** Detected transient positions in frames. */
|
|
86
|
+
transients: number[];
|
|
87
|
+
/** Cue markers mapping frame positions to names. */
|
|
88
|
+
cueMarkers: Map<number, string>;
|
|
89
|
+
/** Positions (in frames) where xruns / buffer underruns occurred during capture. */
|
|
90
|
+
xrunPositions: number[];
|
|
91
|
+
/** The track name this source was originally captured for. */
|
|
92
|
+
capturedFor?: string;
|
|
93
|
+
constructor(id: SourceId, name: string, url: string, duration: FrameCount, sampleRate?: number, channelCount?: number, videoMetadata?: VideoMetadata);
|
|
94
|
+
/**
|
|
95
|
+
* Check if this source originated from a video file
|
|
96
|
+
*/
|
|
97
|
+
isVideoSource(): boolean;
|
|
98
|
+
get useCount(): number;
|
|
99
|
+
addUse(): void;
|
|
100
|
+
removeUse(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Check whether a specific flag is set.
|
|
103
|
+
*/
|
|
104
|
+
hasFlag(flag: SourceFlags): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Set a specific flag.
|
|
107
|
+
*/
|
|
108
|
+
setFlag(flag: SourceFlags): void;
|
|
109
|
+
/**
|
|
110
|
+
* Clear a specific flag.
|
|
111
|
+
*/
|
|
112
|
+
clearFlag(flag: SourceFlags): void;
|
|
113
|
+
/**
|
|
114
|
+
* Store peak data for a given resolution (frames per peak entry).
|
|
115
|
+
*
|
|
116
|
+
* Replaces any previously cached data at the same resolution.
|
|
117
|
+
* Emits {@link peakCacheUpdated} with the resolution key.
|
|
118
|
+
*/
|
|
119
|
+
setPeakData(resolution: number, data: PeakData): void;
|
|
120
|
+
/**
|
|
121
|
+
* Retrieve cached peak data for a given resolution.
|
|
122
|
+
*
|
|
123
|
+
* @returns The peak data, or `undefined` if not yet computed.
|
|
124
|
+
*/
|
|
125
|
+
getPeakData(resolution: number): PeakData | undefined;
|
|
126
|
+
/**
|
|
127
|
+
* Check whether peak data exists for a given resolution.
|
|
128
|
+
*/
|
|
129
|
+
hasPeakData(resolution: number): boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Clear all cached peak data for this source.
|
|
132
|
+
*/
|
|
133
|
+
clearPeakCache(): void;
|
|
134
|
+
/**
|
|
135
|
+
* Set or replace analysis data for this source.
|
|
136
|
+
*
|
|
137
|
+
* This also updates the legacy {@link transients} array from the
|
|
138
|
+
* analysis results for backward compatibility.
|
|
139
|
+
* Emits {@link analysisCompleted} with the new data.
|
|
140
|
+
*/
|
|
141
|
+
setAnalysisData(data: SourceAnalysisData): void;
|
|
142
|
+
/**
|
|
143
|
+
* Retrieve the analysis data, or `null` if no analysis has been run.
|
|
144
|
+
*/
|
|
145
|
+
getAnalysisData(): SourceAnalysisData | null;
|
|
146
|
+
/**
|
|
147
|
+
* Release resources held by this source.
|
|
148
|
+
*
|
|
149
|
+
* Revokes the blob URL (if applicable), clears the peak cache, and
|
|
150
|
+
* disconnects all signal listeners. After disposal the source should
|
|
151
|
+
* not be used.
|
|
152
|
+
*/
|
|
153
|
+
dispose(): void;
|
|
10
154
|
}
|
|
11
155
|
//# sourceMappingURL=Source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Source.d.ts","sourceRoot":"","sources":["../../src/domain/Source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Source.d.ts","sourceRoot":"","sources":["../../src/domain/Source.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/Source.js
CHANGED
|
@@ -1,11 +1,154 @@
|
|
|
1
|
+
import { Signal } from '../lib/Signal';
|
|
2
|
+
/**
|
|
3
|
+
* Bitflags for source metadata properties.
|
|
4
|
+
*/
|
|
5
|
+
export var SourceFlags;
|
|
6
|
+
(function (SourceFlags) {
|
|
7
|
+
SourceFlags[SourceFlags["WRITABLE"] = 1] = "WRITABLE";
|
|
8
|
+
SourceFlags[SourceFlags["CAN_RENAME"] = 2] = "CAN_RENAME";
|
|
9
|
+
SourceFlags[SourceFlags["REMOVABLE"] = 4] = "REMOVABLE";
|
|
10
|
+
SourceFlags[SourceFlags["MISSING"] = 8] = "MISSING";
|
|
11
|
+
SourceFlags[SourceFlags["RF64_RIFF"] = 16] = "RF64_RIFF";
|
|
12
|
+
})(SourceFlags || (SourceFlags = {}));
|
|
1
13
|
export class Source {
|
|
2
|
-
constructor(id, name, url, duration, sampleRate = 44100, channelCount = 2) {
|
|
14
|
+
constructor(id, name, url, duration, sampleRate = 44100, channelCount = 2, videoMetadata) {
|
|
15
|
+
/** Bitflags describing source properties (see SourceFlags). */
|
|
16
|
+
this.flags = 0;
|
|
17
|
+
/** Reference count tracking how many regions/clips use this source. */
|
|
18
|
+
this._useCount = 0;
|
|
19
|
+
/** Cached peak data for waveform display at various zoom levels. */
|
|
20
|
+
this._peakCache = new Map();
|
|
21
|
+
/** Analysis results (populated lazily by AudioAnalyzer). */
|
|
22
|
+
this._analysisData = null;
|
|
23
|
+
/** Emitted when peak data for a given resolution is added or updated. */
|
|
24
|
+
this.peakCacheUpdated = new Signal();
|
|
25
|
+
/** Emitted when analysis data is set or replaced. */
|
|
26
|
+
this.analysisCompleted = new Signal();
|
|
27
|
+
/** Detected transient positions in frames. */
|
|
28
|
+
this.transients = [];
|
|
29
|
+
/** Cue markers mapping frame positions to names. */
|
|
30
|
+
this.cueMarkers = new Map();
|
|
31
|
+
/** Positions (in frames) where xruns / buffer underruns occurred during capture. */
|
|
32
|
+
this.xrunPositions = [];
|
|
3
33
|
this.id = id;
|
|
4
34
|
this.name = name;
|
|
5
35
|
this.url = url;
|
|
6
36
|
this.duration = duration;
|
|
7
37
|
this.sampleRate = sampleRate;
|
|
8
38
|
this.channelCount = channelCount;
|
|
39
|
+
this.videoMetadata = videoMetadata;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check if this source originated from a video file
|
|
43
|
+
*/
|
|
44
|
+
isVideoSource() {
|
|
45
|
+
return this.videoMetadata !== undefined;
|
|
46
|
+
}
|
|
47
|
+
// --- Use count ---
|
|
48
|
+
get useCount() {
|
|
49
|
+
return this._useCount;
|
|
50
|
+
}
|
|
51
|
+
addUse() {
|
|
52
|
+
this._useCount++;
|
|
53
|
+
}
|
|
54
|
+
removeUse() {
|
|
55
|
+
if (this._useCount > 0) {
|
|
56
|
+
this._useCount--;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// --- Flag helpers ---
|
|
60
|
+
/**
|
|
61
|
+
* Check whether a specific flag is set.
|
|
62
|
+
*/
|
|
63
|
+
hasFlag(flag) {
|
|
64
|
+
return (this.flags & flag) !== 0;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Set a specific flag.
|
|
68
|
+
*/
|
|
69
|
+
setFlag(flag) {
|
|
70
|
+
this.flags |= flag;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Clear a specific flag.
|
|
74
|
+
*/
|
|
75
|
+
clearFlag(flag) {
|
|
76
|
+
this.flags &= ~flag;
|
|
77
|
+
}
|
|
78
|
+
// --- Peak cache ---
|
|
79
|
+
/**
|
|
80
|
+
* Store peak data for a given resolution (frames per peak entry).
|
|
81
|
+
*
|
|
82
|
+
* Replaces any previously cached data at the same resolution.
|
|
83
|
+
* Emits {@link peakCacheUpdated} with the resolution key.
|
|
84
|
+
*/
|
|
85
|
+
setPeakData(resolution, data) {
|
|
86
|
+
this._peakCache.set(resolution, data);
|
|
87
|
+
this.peakCacheUpdated.emit(resolution);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Retrieve cached peak data for a given resolution.
|
|
91
|
+
*
|
|
92
|
+
* @returns The peak data, or `undefined` if not yet computed.
|
|
93
|
+
*/
|
|
94
|
+
getPeakData(resolution) {
|
|
95
|
+
return this._peakCache.get(resolution);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check whether peak data exists for a given resolution.
|
|
99
|
+
*/
|
|
100
|
+
hasPeakData(resolution) {
|
|
101
|
+
return this._peakCache.has(resolution);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Clear all cached peak data for this source.
|
|
105
|
+
*/
|
|
106
|
+
clearPeakCache() {
|
|
107
|
+
this._peakCache.clear();
|
|
108
|
+
}
|
|
109
|
+
// --- Analysis data ---
|
|
110
|
+
/**
|
|
111
|
+
* Set or replace analysis data for this source.
|
|
112
|
+
*
|
|
113
|
+
* This also updates the legacy {@link transients} array from the
|
|
114
|
+
* analysis results for backward compatibility.
|
|
115
|
+
* Emits {@link analysisCompleted} with the new data.
|
|
116
|
+
*/
|
|
117
|
+
setAnalysisData(data) {
|
|
118
|
+
this._analysisData = data;
|
|
119
|
+
// Keep legacy transients array in sync
|
|
120
|
+
this.transients = data.transients;
|
|
121
|
+
this.analysisCompleted.emit(data);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Retrieve the analysis data, or `null` if no analysis has been run.
|
|
125
|
+
*/
|
|
126
|
+
getAnalysisData() {
|
|
127
|
+
return this._analysisData;
|
|
128
|
+
}
|
|
129
|
+
// --- Cleanup ---
|
|
130
|
+
/**
|
|
131
|
+
* Release resources held by this source.
|
|
132
|
+
*
|
|
133
|
+
* Revokes the blob URL (if applicable), clears the peak cache, and
|
|
134
|
+
* disconnects all signal listeners. After disposal the source should
|
|
135
|
+
* not be used.
|
|
136
|
+
*/
|
|
137
|
+
dispose() {
|
|
138
|
+
// Revoke blob URLs to free browser memory
|
|
139
|
+
if (this.url && this.url.startsWith('blob:')) {
|
|
140
|
+
try {
|
|
141
|
+
URL.revokeObjectURL(this.url);
|
|
142
|
+
}
|
|
143
|
+
catch (_a) {
|
|
144
|
+
// Best-effort; URL may already be revoked
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
this.clearPeakCache();
|
|
148
|
+
this._analysisData = null;
|
|
149
|
+
// Disconnect all signal listeners
|
|
150
|
+
this.peakCacheUpdated.clear();
|
|
151
|
+
this.analysisCompleted.clear();
|
|
9
152
|
}
|
|
10
153
|
}
|
|
11
154
|
//# sourceMappingURL=Source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Source.js","sourceRoot":"","sources":["../../src/domain/Source.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,MAAM;
|
|
1
|
+
{"version":3,"file":"Source.js","sourceRoot":"","sources":["../../src/domain/Source.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/Take.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { Signal } from '../lib/Signal';
|
|
|
2
2
|
import { RegionId, FrameCount, TrackId } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Take
|
|
5
|
-
* Ardour 참조: libs/ardour/playlist.cc (take/layer management)
|
|
6
5
|
*
|
|
7
6
|
* A Take represents one recording pass during loop recording.
|
|
8
7
|
* Multiple takes are stacked in a take lane for comping.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Take.d.ts","sourceRoot":"","sources":["../../src/domain/Take.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAExD
|
|
1
|
+
{"version":3,"file":"Take.d.ts","sourceRoot":"","sources":["../../src/domain/Take.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAExD;;;;;GAKG;AACH,qBAAa,IAAI;IACb,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,SAAgB,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAS;IACjC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC,SAAgB,gBAAgB,kBAAyB;gBAGrD,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,UAAU;IAWxB,IAAW,QAAQ,IAAI,UAAU,CAEhC;IAEM,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAOpC,MAAM,IAAI,YAAY;WAaf,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAYnD;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,QAAQ;IACjB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,MAAM,CAAc;IAE5B,SAAgB,SAAS,eAAsB;IAC/C,SAAgB,WAAW,iBAAwB;IACnD,SAAgB,aAAa,sBAA6B;gBAE9C,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAKjC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAKzB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKhC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIhD,IAAW,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,CAEtC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;OAEG;IACI,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUvC;;OAEG;IACI,aAAa,IAAI,IAAI,GAAG,SAAS;IAIxC;;;OAGG;IACI,wBAAwB,IAAI,QAAQ,EAAE;CAKhD"}
|
package/dist/domain/Take.js
CHANGED
package/dist/domain/Take.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Take.js","sourceRoot":"","sources":["../../src/domain/Take.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC
|
|
1
|
+
{"version":3,"file":"Take.js","sourceRoot":"","sources":["../../src/domain/Take.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC;;;;;GAKG;AACH,MAAM,OAAO,IAAI;IAYb,YACI,EAAU,EACV,UAAkB,EAClB,QAAkB,EAClB,OAAgB,EAChB,UAAsB,EACtB,QAAoB;QAXjB,aAAQ,GAAY,KAAK,CAAC;QAGjB,qBAAgB,GAAG,IAAI,MAAM,EAAW,CAAC;QAUrD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;IAC3C,CAAC;IAEM,WAAW,CAAC,QAAiB;QAChC,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAEM,MAAM;QACT,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,IAAkB;QACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CACjB,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAoB,EACzB,IAAI,CAAC,OAAkB,EACvB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,CAChB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAaD;;GAEG;AACH,MAAM,OAAO,QAAQ;IASjB,YAAY,EAAU,EAAE,OAAgB;QANhC,WAAM,GAAW,EAAE,CAAC;QAEZ,cAAS,GAAG,IAAI,MAAM,EAAQ,CAAC;QAC/B,gBAAW,GAAG,IAAI,MAAM,EAAU,CAAC;QACnC,kBAAa,GAAG,IAAI,MAAM,EAAe,CAAC;QAGtD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,IAAU;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEM,UAAU,CAAC,MAAc;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAEM,OAAO,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,MAAc;QAC5B,IAAI,UAAU,GAAgB,IAAI,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAC/B,IAAI,YAAY;gBAAE,UAAU,GAAG,IAAI,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,aAAa;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACI,wBAAwB;QAC3B,OAAO,IAAI,CAAC,MAAM;aACb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACJ"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Signal } from '../lib/Signal';
|
|
2
|
+
/**
|
|
3
|
+
* ThawList - Defers signal emissions during batch operations.
|
|
4
|
+
* Collects change notifications and emits them all at once when thawed.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ThawList {
|
|
7
|
+
private _frozen;
|
|
8
|
+
private _pendingEmissions;
|
|
9
|
+
private _changeCount;
|
|
10
|
+
/** Freeze: begin collecting emissions instead of firing them immediately. */
|
|
11
|
+
freeze(): void;
|
|
12
|
+
/**
|
|
13
|
+
* Thaw: emit all pending signals that were queued while frozen,
|
|
14
|
+
* then reset to the unfrozen state.
|
|
15
|
+
*/
|
|
16
|
+
thaw(): void;
|
|
17
|
+
/** Whether the ThawList is currently frozen. */
|
|
18
|
+
isFrozen(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Queue an emission. If frozen, the emission is stored and will be
|
|
21
|
+
* fired when {@link thaw} is called. If not frozen, the signal is
|
|
22
|
+
* emitted immediately.
|
|
23
|
+
*/
|
|
24
|
+
queueEmission<T>(signal: Signal<T>, data: T): void;
|
|
25
|
+
/** Get the number of pending emissions queued while frozen. */
|
|
26
|
+
getPendingCount(): number;
|
|
27
|
+
/** Discard all pending emissions without firing them. */
|
|
28
|
+
discard(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Execute a callback within a freeze/thaw block.
|
|
31
|
+
* The thawList is frozen before fn() runs and thawed after it completes,
|
|
32
|
+
* even if fn() throws.
|
|
33
|
+
*/
|
|
34
|
+
static batch(fn: () => void, thawList: ThawList): void;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=ThawList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThawList.d.ts","sourceRoot":"","sources":["../../src/domain/ThawList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;GAGG;AACH,qBAAa,QAAQ;IACjB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,iBAAiB,CAAiD;IAC1E,OAAO,CAAC,YAAY,CAAa;IAIjC,6EAA6E;IACtE,MAAM,IAAI,IAAI;IAIrB;;;OAGG;IACI,IAAI,IAAI,IAAI;IASnB,gDAAgD;IACzC,QAAQ,IAAI,OAAO;IAM1B;;;;OAIG;IACI,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAWzD,+DAA+D;IACxD,eAAe,IAAI,MAAM;IAIhC,yDAAyD;IAClD,OAAO,IAAI,IAAI;IAMtB;;;;OAIG;WACW,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAQhE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThawList - Defers signal emissions during batch operations.
|
|
3
|
+
* Collects change notifications and emits them all at once when thawed.
|
|
4
|
+
*/
|
|
5
|
+
export class ThawList {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._frozen = false;
|
|
8
|
+
this._pendingEmissions = [];
|
|
9
|
+
this._changeCount = 0;
|
|
10
|
+
}
|
|
11
|
+
// ─── Freeze / Thaw ──────────────────────────────────────────────────────
|
|
12
|
+
/** Freeze: begin collecting emissions instead of firing them immediately. */
|
|
13
|
+
freeze() {
|
|
14
|
+
this._frozen = true;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Thaw: emit all pending signals that were queued while frozen,
|
|
18
|
+
* then reset to the unfrozen state.
|
|
19
|
+
*/
|
|
20
|
+
thaw() {
|
|
21
|
+
this._frozen = false;
|
|
22
|
+
const pending = [...this._pendingEmissions];
|
|
23
|
+
this._pendingEmissions = [];
|
|
24
|
+
for (const { signal, data } of pending) {
|
|
25
|
+
signal.emit(data);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Whether the ThawList is currently frozen. */
|
|
29
|
+
isFrozen() {
|
|
30
|
+
return this._frozen;
|
|
31
|
+
}
|
|
32
|
+
// ─── Emission Queuing ───────────────────────────────────────────────────
|
|
33
|
+
/**
|
|
34
|
+
* Queue an emission. If frozen, the emission is stored and will be
|
|
35
|
+
* fired when {@link thaw} is called. If not frozen, the signal is
|
|
36
|
+
* emitted immediately.
|
|
37
|
+
*/
|
|
38
|
+
queueEmission(signal, data) {
|
|
39
|
+
this._changeCount++;
|
|
40
|
+
if (this._frozen) {
|
|
41
|
+
this._pendingEmissions.push({ signal, data });
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
signal.emit(data);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// ─── Inspection ─────────────────────────────────────────────────────────
|
|
48
|
+
/** Get the number of pending emissions queued while frozen. */
|
|
49
|
+
getPendingCount() {
|
|
50
|
+
return this._pendingEmissions.length;
|
|
51
|
+
}
|
|
52
|
+
/** Discard all pending emissions without firing them. */
|
|
53
|
+
discard() {
|
|
54
|
+
this._pendingEmissions = [];
|
|
55
|
+
}
|
|
56
|
+
// ─── Batch Helper ───────────────────────────────────────────────────────
|
|
57
|
+
/**
|
|
58
|
+
* Execute a callback within a freeze/thaw block.
|
|
59
|
+
* The thawList is frozen before fn() runs and thawed after it completes,
|
|
60
|
+
* even if fn() throws.
|
|
61
|
+
*/
|
|
62
|
+
static batch(fn, thawList) {
|
|
63
|
+
thawList.freeze();
|
|
64
|
+
try {
|
|
65
|
+
fn();
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
thawList.thaw();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=ThawList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThawList.js","sourceRoot":"","sources":["../../src/domain/ThawList.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,QAAQ;IAArB;QACY,YAAO,GAAY,KAAK,CAAC;QACzB,sBAAiB,GAA8C,EAAE,CAAC;QAClE,iBAAY,GAAW,CAAC,CAAC;IAsErC,CAAC;IApEG,2EAA2E;IAE3E,6EAA6E;IACtE,MAAM;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,IAAI;QACP,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IAED,gDAAgD;IACzC,QAAQ;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,2EAA2E;IAE3E;;;;OAIG;IACI,aAAa,CAAI,MAAiB,EAAE,IAAO;QAC9C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IAED,2EAA2E;IAE3E,+DAA+D;IACxD,eAAe;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;IACzC,CAAC;IAED,yDAAyD;IAClD,OAAO;QACV,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,2EAA2E;IAE3E;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,EAAc,EAAE,QAAkB;QAClD,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,EAAE,EAAE,CAAC;QACT,CAAC;gBAAS,CAAC;YACP,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACL,CAAC;CACJ"}
|
package/dist/domain/Track.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Route } from './Route';
|
|
2
2
|
import { Playlist } from './Playlist';
|
|
3
3
|
import { Signal } from '../lib/Signal';
|
|
4
|
-
import { TrackId } from './types';
|
|
4
|
+
import { TrackId, FrameCount } from './types';
|
|
5
5
|
import { MonitorMode } from './MonitorMode';
|
|
6
6
|
export declare enum TrackType {
|
|
7
7
|
AUDIO = "AUDIO",
|
|
@@ -11,6 +11,23 @@ export declare enum TrackType {
|
|
|
11
11
|
FOLDER = "FOLDER",
|
|
12
12
|
VCA = "VCA"
|
|
13
13
|
}
|
|
14
|
+
export interface BounceConfig {
|
|
15
|
+
startFrame?: number;
|
|
16
|
+
endFrame?: number;
|
|
17
|
+
includePlugins: boolean;
|
|
18
|
+
includeAutomation: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Track mode determines recording and playback behavior.
|
|
22
|
+
*
|
|
23
|
+
* - 'normal': standard layered playback (default) -- all overlapping regions
|
|
24
|
+
* play simultaneously, respecting layer ordering.
|
|
25
|
+
* - 'non_layered': only the top-most region at any given time position is
|
|
26
|
+
* audible; lower layers are silenced.
|
|
27
|
+
* - 'tape': destructive recording mode -- new audio physically replaces
|
|
28
|
+
* existing audio in the source file rather than creating new regions.
|
|
29
|
+
*/
|
|
30
|
+
export type TrackMode = 'normal' | 'non_layered' | 'tape';
|
|
14
31
|
export declare class Track {
|
|
15
32
|
readonly id: TrackId;
|
|
16
33
|
name: string;
|
|
@@ -32,6 +49,9 @@ export declare class Track {
|
|
|
32
49
|
parentTrackId: TrackId | null;
|
|
33
50
|
groupId: string | null;
|
|
34
51
|
isCollapsed: boolean;
|
|
52
|
+
private _alignStyle;
|
|
53
|
+
private _trackMode;
|
|
54
|
+
private _bounceProgress;
|
|
35
55
|
readonly armChanged: Signal<boolean>;
|
|
36
56
|
readonly monitorChanged: Signal<boolean>;
|
|
37
57
|
readonly muteChanged: Signal<boolean>;
|
|
@@ -42,6 +62,12 @@ export declare class Track {
|
|
|
42
62
|
readonly trimGainChanged: Signal<number>;
|
|
43
63
|
readonly colorChanged: Signal<string>;
|
|
44
64
|
readonly frozenChanged: Signal<boolean>;
|
|
65
|
+
readonly alignStyleChanged: Signal<string>;
|
|
66
|
+
readonly trackModeChanged: Signal<string>;
|
|
67
|
+
readonly bounceProgressChanged: Signal<number>;
|
|
68
|
+
readonly bounceCompleted: Signal<{
|
|
69
|
+
sourceId: string;
|
|
70
|
+
}>;
|
|
45
71
|
constructor(id: TrackId, name: string, type: TrackType);
|
|
46
72
|
rename(newName: string): void;
|
|
47
73
|
setArmed(armed: boolean): void;
|
|
@@ -54,5 +80,71 @@ export declare class Track {
|
|
|
54
80
|
setSoloSafe(safe: boolean): void;
|
|
55
81
|
setMonitorMode(mode: MonitorMode): void;
|
|
56
82
|
setTrimGain(db: number): void;
|
|
83
|
+
/**
|
|
84
|
+
* Whether the track can be frozen. Returns false if already frozen.
|
|
85
|
+
*/
|
|
86
|
+
canFreeze(): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Whether the track can be bounced.
|
|
89
|
+
* Audio and MIDI tracks can be bounced; AUX, BUS, FOLDER, and VCA cannot.
|
|
90
|
+
*/
|
|
91
|
+
canBounce(): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Get the default bounce configuration for this track.
|
|
94
|
+
*/
|
|
95
|
+
getBounceConfig(): BounceConfig;
|
|
96
|
+
/**
|
|
97
|
+
* Get a bounce configuration for a specific frame range.
|
|
98
|
+
*
|
|
99
|
+
* @param startFrame The start frame of the bounce range.
|
|
100
|
+
* @param endFrame The end frame of the bounce range.
|
|
101
|
+
* @returns A BounceConfig with the specified range.
|
|
102
|
+
*/
|
|
103
|
+
getBounceRangeConfig(startFrame: FrameCount, endFrame: FrameCount): BounceConfig;
|
|
104
|
+
/**
|
|
105
|
+
* Freeze the track, storing a reference to the rendered source.
|
|
106
|
+
*
|
|
107
|
+
* Freezing renders the track's output (including all plugins and
|
|
108
|
+
* automation) to a new audio source. The original playlist is preserved
|
|
109
|
+
* so it can be restored on unfreeze. While frozen, the track plays
|
|
110
|
+
* back from the rendered source and plugins are bypassed.
|
|
111
|
+
*
|
|
112
|
+
* @param sourceId Identifier of the rendered audio source.
|
|
113
|
+
*/
|
|
114
|
+
freeze(sourceId: string): void;
|
|
115
|
+
/**
|
|
116
|
+
* Unfreeze the track, restoring the original playlist and plugins.
|
|
117
|
+
* Discards the frozen source reference.
|
|
118
|
+
*/
|
|
119
|
+
unfreeze(): void;
|
|
120
|
+
/**
|
|
121
|
+
* Update the bounce progress.
|
|
122
|
+
* Used by the engine to report rendering progress to the UI.
|
|
123
|
+
*
|
|
124
|
+
* @param progress A value between 0 (not started) and 1 (complete).
|
|
125
|
+
*/
|
|
126
|
+
setBounceProgress(progress: number): void;
|
|
127
|
+
/** Current bounce progress (0 to 1). */
|
|
128
|
+
get bounceProgress(): number;
|
|
129
|
+
/**
|
|
130
|
+
* Signal that a bounce operation has completed.
|
|
131
|
+
* Resets bounce progress to 0 and emits the bounceCompleted signal.
|
|
132
|
+
*
|
|
133
|
+
* @param sourceId Identifier of the newly created audio source.
|
|
134
|
+
*/
|
|
135
|
+
completeBounce(sourceId: string): void;
|
|
136
|
+
/** Get the current alignment style for recording. */
|
|
137
|
+
getAlignStyle(): string;
|
|
138
|
+
/** Set the alignment style for recording. */
|
|
139
|
+
setAlignStyle(style: 'existing_material' | 'capture_time'): void;
|
|
140
|
+
/** Get the current track mode. */
|
|
141
|
+
getTrackMode(): string;
|
|
142
|
+
/**
|
|
143
|
+
* Set the track mode.
|
|
144
|
+
* - 'normal': standard layered playback (default)
|
|
145
|
+
* - 'non_layered': only one region plays at a time (highest layer wins)
|
|
146
|
+
* - 'tape': destructive recording, new audio replaces old
|
|
147
|
+
*/
|
|
148
|
+
setTrackMode(mode: TrackMode): void;
|
|
57
149
|
}
|
|
58
150
|
//# sourceMappingURL=Track.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Track.d.ts","sourceRoot":"","sources":["../../src/domain/Track.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,OAAO,EAAW,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Track.d.ts","sourceRoot":"","sources":["../../src/domain/Track.ts"],"names":[],"mappings":"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"}
|