@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
|
@@ -1,16 +1,194 @@
|
|
|
1
1
|
import { Processor } from './Processor';
|
|
2
|
+
/**
|
|
3
|
+
* Default sample rate assumption for tail-time estimation when the actual
|
|
4
|
+
* session sample rate is not available.
|
|
5
|
+
*/
|
|
6
|
+
const DEFAULT_SAMPLE_RATE = 44100;
|
|
7
|
+
/**
|
|
8
|
+
* PluginInsert wraps a Plugin instance inside the Processor graph, bridging
|
|
9
|
+
* the plugin parameter world with the route's latency-compensation and
|
|
10
|
+
* tail-length bookkeeping.
|
|
11
|
+
*
|
|
12
|
+
* It automatically estimates processing latency and tail time based on the
|
|
13
|
+
* plugin type and name, and re-evaluates those estimates whenever a plugin
|
|
14
|
+
* parameter changes.
|
|
15
|
+
*/
|
|
2
16
|
export class PluginInsert extends Processor {
|
|
3
|
-
constructor(id, plugin) {
|
|
17
|
+
constructor(id, plugin, sampleRate = DEFAULT_SAMPLE_RATE) {
|
|
4
18
|
super(id, `Insert: ${plugin.name}`);
|
|
5
19
|
this._plugin = plugin;
|
|
20
|
+
this._sampleRate = sampleRate;
|
|
21
|
+
// Initial latency / tail estimation based on the plugin's current state.
|
|
22
|
+
this.updateLatencyFromPlugin();
|
|
23
|
+
this.updateTailFromPlugin();
|
|
24
|
+
// Re-estimate whenever a plugin parameter changes.
|
|
25
|
+
this._parameterSubscription = this._plugin.parameterChanged.connect((_change) => {
|
|
26
|
+
this.updateLatencyFromPlugin();
|
|
27
|
+
this.updateTailFromPlugin();
|
|
28
|
+
});
|
|
6
29
|
}
|
|
7
30
|
get plugin() {
|
|
8
31
|
return this._plugin;
|
|
9
32
|
}
|
|
33
|
+
/** The sample rate used for time-to-sample conversions in tail estimation. */
|
|
34
|
+
get sampleRate() {
|
|
35
|
+
return this._sampleRate;
|
|
36
|
+
}
|
|
37
|
+
set sampleRate(rate) {
|
|
38
|
+
if (rate > 0 && rate !== this._sampleRate) {
|
|
39
|
+
this._sampleRate = rate;
|
|
40
|
+
// Re-estimate with the new sample rate.
|
|
41
|
+
this.updateLatencyFromPlugin();
|
|
42
|
+
this.updateTailFromPlugin();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
10
45
|
// Proxy active state to plugin bypass if supported
|
|
11
46
|
set active(value) {
|
|
12
47
|
super.active = value;
|
|
13
|
-
//
|
|
48
|
+
// When bypassed, the processor introduces no latency or tail.
|
|
49
|
+
if (!value) {
|
|
50
|
+
this.setLatency(0);
|
|
51
|
+
this.setTailLength(0);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.updateLatencyFromPlugin();
|
|
55
|
+
this.updateTailFromPlugin();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
get active() {
|
|
59
|
+
return super.active;
|
|
60
|
+
}
|
|
61
|
+
// ── Latency Estimation ──────────────────────────────────────────────────
|
|
62
|
+
/**
|
|
63
|
+
* Estimate latency (in samples) based on plugin name / type heuristics.
|
|
64
|
+
*
|
|
65
|
+
* Real-world plugins would report their exact latency; here we use
|
|
66
|
+
* conservative estimates for common processor categories:
|
|
67
|
+
*
|
|
68
|
+
* - Linear-phase EQ: ~512 samples (FIR filter latency)
|
|
69
|
+
* - Compressor / Limiter: ~64-256 samples (look-ahead)
|
|
70
|
+
* - De-esser: ~64 samples
|
|
71
|
+
* - Other effects / instruments / analyzers: 0
|
|
72
|
+
*/
|
|
73
|
+
updateLatencyFromPlugin() {
|
|
74
|
+
if (!this.active)
|
|
75
|
+
return;
|
|
76
|
+
const nameLower = this._plugin.name.toLowerCase();
|
|
77
|
+
let latency = 0;
|
|
78
|
+
if (nameLower.includes('linear')) {
|
|
79
|
+
// Linear-phase EQ – significant FIR latency
|
|
80
|
+
latency = 512;
|
|
81
|
+
}
|
|
82
|
+
else if (nameLower.includes('comp') || nameLower.includes('limit')) {
|
|
83
|
+
// Compressor / Limiter – look-ahead buffer
|
|
84
|
+
// Scale with a "lookahead" parameter if available, otherwise default.
|
|
85
|
+
const lookaheadParam = this._plugin.getParameter('lookahead');
|
|
86
|
+
if (lookaheadParam) {
|
|
87
|
+
// Parameter value is a 0-1 normalised range; scale to 64-256 samples.
|
|
88
|
+
latency = Math.round(64 + lookaheadParam.value * (256 - 64));
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
latency = 64;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else if (nameLower.includes('de-ess') || nameLower.includes('deess')) {
|
|
95
|
+
latency = 64;
|
|
96
|
+
}
|
|
97
|
+
this.setLatency(latency);
|
|
98
|
+
}
|
|
99
|
+
// ── Tail Time Estimation ────────────────────────────────────────────────
|
|
100
|
+
/**
|
|
101
|
+
* Estimate the tail length (in frames / samples) based on plugin name and
|
|
102
|
+
* parameter state.
|
|
103
|
+
*
|
|
104
|
+
* - Reverb / convolution: 2-5 seconds, scaled by decay / wet parameters.
|
|
105
|
+
* - Delay: delay-time * estimated feedback-loop count.
|
|
106
|
+
* - Everything else: 0.
|
|
107
|
+
*/
|
|
108
|
+
updateTailFromPlugin() {
|
|
109
|
+
if (!this.active)
|
|
110
|
+
return;
|
|
111
|
+
const nameLower = this._plugin.name.toLowerCase();
|
|
112
|
+
let tailSeconds = 0;
|
|
113
|
+
if (nameLower.includes('reverb') || nameLower.includes('convol')) {
|
|
114
|
+
tailSeconds = this._estimateReverbTail();
|
|
115
|
+
}
|
|
116
|
+
else if (nameLower.includes('delay')) {
|
|
117
|
+
tailSeconds = this._estimateDelayTail();
|
|
118
|
+
}
|
|
119
|
+
const tailFrames = Math.ceil(tailSeconds * this._sampleRate);
|
|
120
|
+
this.setTailLength(tailFrames);
|
|
121
|
+
}
|
|
122
|
+
// ── Private helpers ─────────────────────────────────────────────────────
|
|
123
|
+
/**
|
|
124
|
+
* Estimate reverb tail between 2 and 5 seconds.
|
|
125
|
+
* Uses 'decay' or 'time' parameters for the base, and 'wet' / 'mix' to
|
|
126
|
+
* scale down when the effect is barely audible.
|
|
127
|
+
*/
|
|
128
|
+
_estimateReverbTail() {
|
|
129
|
+
var _a, _b;
|
|
130
|
+
const baseTail = 2; // minimum tail in seconds
|
|
131
|
+
const maxTail = 5;
|
|
132
|
+
// Look for a decay / time parameter.
|
|
133
|
+
const decayParam = (_a = this._plugin.getParameter('decay')) !== null && _a !== void 0 ? _a : this._plugin.getParameter('time');
|
|
134
|
+
let tail;
|
|
135
|
+
if (decayParam) {
|
|
136
|
+
// Normalised 0-1 → 2-5 seconds.
|
|
137
|
+
const norm = (decayParam.value - decayParam.min) / (decayParam.max - decayParam.min || 1);
|
|
138
|
+
tail = baseTail + norm * (maxTail - baseTail);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
tail = baseTail;
|
|
142
|
+
}
|
|
143
|
+
// Scale by wet/mix level – if wet is near zero the audible tail is negligible.
|
|
144
|
+
const wetParam = (_b = this._plugin.getParameter('wet')) !== null && _b !== void 0 ? _b : this._plugin.getParameter('mix');
|
|
145
|
+
if (wetParam) {
|
|
146
|
+
const wetNorm = (wetParam.value - wetParam.min) / (wetParam.max - wetParam.min || 1);
|
|
147
|
+
tail *= wetNorm;
|
|
148
|
+
}
|
|
149
|
+
return tail;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Estimate delay tail based on delay-time and feedback.
|
|
153
|
+
*
|
|
154
|
+
* The effective tail is roughly `delayTime * loops` where loops is
|
|
155
|
+
* derived from the feedback amount: loops ≈ log(threshold) / log(feedback).
|
|
156
|
+
* We cap at a sensible maximum (10 s).
|
|
157
|
+
*/
|
|
158
|
+
_estimateDelayTail() {
|
|
159
|
+
var _a;
|
|
160
|
+
const MAX_TAIL = 10; // seconds
|
|
161
|
+
const timeParam = (_a = this._plugin.getParameter('time')) !== null && _a !== void 0 ? _a : this._plugin.getParameter('delay');
|
|
162
|
+
const feedbackParam = this._plugin.getParameter('feedback');
|
|
163
|
+
// Default delay time 0.5 s if not found.
|
|
164
|
+
let delayTime = 0.5;
|
|
165
|
+
if (timeParam) {
|
|
166
|
+
// Assume parameter value is already in seconds, or normalised 0-1 → 0-2 s.
|
|
167
|
+
if (timeParam.max <= 1) {
|
|
168
|
+
delayTime = timeParam.value * 2;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
delayTime = timeParam.value;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
let loops = 1;
|
|
175
|
+
if (feedbackParam) {
|
|
176
|
+
const fbNorm = (feedbackParam.value - feedbackParam.min) / (feedbackParam.max - feedbackParam.min || 1);
|
|
177
|
+
const fb = Math.min(fbNorm, 0.99); // clamp to avoid infinite loops
|
|
178
|
+
if (fb > 0.01) {
|
|
179
|
+
// Number of iterations until signal drops below -60 dB.
|
|
180
|
+
const threshold = 0.001; // -60 dB
|
|
181
|
+
loops = Math.ceil(Math.log(threshold) / Math.log(fb));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return Math.min(delayTime * loops, MAX_TAIL);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Dispose of internal subscriptions. Call when removing the insert from
|
|
188
|
+
* the processing chain.
|
|
189
|
+
*/
|
|
190
|
+
dispose() {
|
|
191
|
+
this._parameterSubscription.dispose();
|
|
14
192
|
}
|
|
15
193
|
}
|
|
16
194
|
//# sourceMappingURL=PluginInsert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginInsert.js","sourceRoot":"","sources":["../../src/processing/PluginInsert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,aAAa,CAAC;AAGrD,MAAM,OAAO,YAAa,SAAQ,SAAS;
|
|
1
|
+
{"version":3,"file":"PluginInsert.js","sourceRoot":"","sources":["../../src/processing/PluginInsert.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { Signal } from '../lib/Signal';
|
|
|
4
4
|
* Phase inversion (polarity) processor.
|
|
5
5
|
*
|
|
6
6
|
* When inverted, all samples are multiplied by -1. This is the standard
|
|
7
|
-
* "phase flip" found on every DAW channel strip
|
|
7
|
+
* "phase flip" found on every DAW channel strip.
|
|
8
8
|
*
|
|
9
9
|
* Placed in the signal chain after the main fader and before post-fader plugins:
|
|
10
10
|
* Input -> Trim -> [Pre-fader] -> Fader -> Polarity -> [Post-fader] -> Panner -> Output
|
|
@@ -4,7 +4,7 @@ import { Signal } from '../lib/Signal';
|
|
|
4
4
|
* Phase inversion (polarity) processor.
|
|
5
5
|
*
|
|
6
6
|
* When inverted, all samples are multiplied by -1. This is the standard
|
|
7
|
-
* "phase flip" found on every DAW channel strip
|
|
7
|
+
* "phase flip" found on every DAW channel strip.
|
|
8
8
|
*
|
|
9
9
|
* Placed in the signal chain after the main fader and before post-fader plugins:
|
|
10
10
|
* Input -> Trim -> [Pre-fader] -> Fader -> Polarity -> [Post-fader] -> Panner -> Output
|
|
@@ -12,10 +12,33 @@ export declare abstract class Processor {
|
|
|
12
12
|
paramName: string;
|
|
13
13
|
list: AutomationList;
|
|
14
14
|
}>;
|
|
15
|
+
/**
|
|
16
|
+
* The number of frames of audio "tail" this processor produces after
|
|
17
|
+
* input ceases (e.g. reverb decay, delay feedback). Used by the engine
|
|
18
|
+
* to know how long to keep processing after playback stops.
|
|
19
|
+
*/
|
|
20
|
+
private _tailLength;
|
|
21
|
+
readonly tailLengthChanged: Signal<number>;
|
|
22
|
+
/**
|
|
23
|
+
* Processing latency in samples. Subclasses that introduce latency
|
|
24
|
+
* (e.g. look-ahead limiters, linear-phase EQs) should call
|
|
25
|
+
* {@link setLatency} rather than overriding {@link getLatency}.
|
|
26
|
+
*/
|
|
27
|
+
private _latency;
|
|
28
|
+
readonly latencyChanged: Signal<number>;
|
|
15
29
|
constructor(id: ProcessorId, name: string);
|
|
16
30
|
getAutomation(paramName: string): AutomationList;
|
|
17
31
|
get active(): boolean;
|
|
18
32
|
set active(value: boolean);
|
|
33
|
+
/**
|
|
34
|
+
* Returns the tail length in frames.
|
|
35
|
+
*/
|
|
36
|
+
getTailLength(): number;
|
|
37
|
+
/**
|
|
38
|
+
* Set the tail length in frames.
|
|
39
|
+
* @param frames Number of frames (>= 0).
|
|
40
|
+
*/
|
|
41
|
+
setTailLength(frames: number): void;
|
|
19
42
|
/**
|
|
20
43
|
* Returns the processing latency introduced by this processor, in samples.
|
|
21
44
|
*
|
|
@@ -27,5 +50,20 @@ export declare abstract class Processor {
|
|
|
27
50
|
* @returns Latency in samples (default 0).
|
|
28
51
|
*/
|
|
29
52
|
getLatency(): number;
|
|
53
|
+
/**
|
|
54
|
+
* Set the processing latency in samples.
|
|
55
|
+
* @param samples Latency in samples (>= 0).
|
|
56
|
+
*/
|
|
57
|
+
setLatency(samples: number): void;
|
|
58
|
+
/**
|
|
59
|
+
* Returns the effective tail length, which is the maximum of this
|
|
60
|
+
* processor's own tail length and any child processor tail lengths.
|
|
61
|
+
*
|
|
62
|
+
* Subclasses that contain child processors (e.g. processor chains,
|
|
63
|
+
* plugin wrappers) should override this to include their children.
|
|
64
|
+
*
|
|
65
|
+
* @returns Effective tail length in frames.
|
|
66
|
+
*/
|
|
67
|
+
getEffectiveTailLength(): number;
|
|
30
68
|
}
|
|
31
69
|
//# sourceMappingURL=Processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Processor.d.ts","sourceRoot":"","sources":["../../src/processing/Processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,8BAAsB,SAAS;IAC3B,SAAgB,EAAE,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IAGb,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IAE5D,SAAS,CAAC,OAAO,EAAE,OAAO,CAAQ;IAClC,SAAgB,aAAa,kBAAyB;IACtD,SAAgB,YAAY,eAAsB;IAClD,SAAgB,eAAe;mBAA2B,MAAM;cAAQ,cAAc;OAAM;
|
|
1
|
+
{"version":3,"file":"Processor.d.ts","sourceRoot":"","sources":["../../src/processing/Processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,8BAAsB,SAAS;IAC3B,SAAgB,EAAE,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IAGb,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IAE5D,SAAS,CAAC,OAAO,EAAE,OAAO,CAAQ;IAClC,SAAgB,aAAa,kBAAyB;IACtD,SAAgB,YAAY,eAAsB;IAClD,SAAgB,eAAe;mBAA2B,MAAM;cAAQ,cAAc;OAAM;IAG5F;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAAa;IAChC,SAAgB,iBAAiB,iBAAwB;IAGzD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAa;IAC7B,SAAgB,cAAc,iBAAwB;gBAE1C,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAKlC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IASvD,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,OAAO,EAK/B;IAID;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B;;;OAGG;IACI,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU1C;;;;;;;;;OASG;IACI,UAAU,IAAI,MAAM;IAI3B;;;OAGG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUxC;;;;;;;;OAQG;IACI,sBAAsB,IAAI,MAAM;CAG1C"}
|
|
@@ -8,6 +8,22 @@ export class Processor {
|
|
|
8
8
|
this.activeChanged = new Signal();
|
|
9
9
|
this.stateChanged = new Signal();
|
|
10
10
|
this.automationAdded = new Signal();
|
|
11
|
+
// ── Tail length ─────────────────────────────────────────────────────────
|
|
12
|
+
/**
|
|
13
|
+
* The number of frames of audio "tail" this processor produces after
|
|
14
|
+
* input ceases (e.g. reverb decay, delay feedback). Used by the engine
|
|
15
|
+
* to know how long to keep processing after playback stops.
|
|
16
|
+
*/
|
|
17
|
+
this._tailLength = 0;
|
|
18
|
+
this.tailLengthChanged = new Signal();
|
|
19
|
+
// ── Latency ─────────────────────────────────────────────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* Processing latency in samples. Subclasses that introduce latency
|
|
22
|
+
* (e.g. look-ahead limiters, linear-phase EQs) should call
|
|
23
|
+
* {@link setLatency} rather than overriding {@link getLatency}.
|
|
24
|
+
*/
|
|
25
|
+
this._latency = 0;
|
|
26
|
+
this.latencyChanged = new Signal();
|
|
11
27
|
this.id = id;
|
|
12
28
|
this.name = name;
|
|
13
29
|
}
|
|
@@ -28,6 +44,25 @@ export class Processor {
|
|
|
28
44
|
this.activeChanged.emit(value);
|
|
29
45
|
}
|
|
30
46
|
}
|
|
47
|
+
// ── Tail length API ─────────────────────────────────────────────────────
|
|
48
|
+
/**
|
|
49
|
+
* Returns the tail length in frames.
|
|
50
|
+
*/
|
|
51
|
+
getTailLength() {
|
|
52
|
+
return this._tailLength;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Set the tail length in frames.
|
|
56
|
+
* @param frames Number of frames (>= 0).
|
|
57
|
+
*/
|
|
58
|
+
setTailLength(frames) {
|
|
59
|
+
const clamped = Math.max(0, frames);
|
|
60
|
+
if (this._tailLength !== clamped) {
|
|
61
|
+
this._tailLength = clamped;
|
|
62
|
+
this.tailLengthChanged.emit(clamped);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// ── Latency API ─────────────────────────────────────────────────────────
|
|
31
66
|
/**
|
|
32
67
|
* Returns the processing latency introduced by this processor, in samples.
|
|
33
68
|
*
|
|
@@ -39,7 +74,31 @@ export class Processor {
|
|
|
39
74
|
* @returns Latency in samples (default 0).
|
|
40
75
|
*/
|
|
41
76
|
getLatency() {
|
|
42
|
-
return
|
|
77
|
+
return this._latency;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Set the processing latency in samples.
|
|
81
|
+
* @param samples Latency in samples (>= 0).
|
|
82
|
+
*/
|
|
83
|
+
setLatency(samples) {
|
|
84
|
+
const clamped = Math.max(0, samples);
|
|
85
|
+
if (this._latency !== clamped) {
|
|
86
|
+
this._latency = clamped;
|
|
87
|
+
this.latencyChanged.emit(clamped);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// ── Effective tail length ───────────────────────────────────────────────
|
|
91
|
+
/**
|
|
92
|
+
* Returns the effective tail length, which is the maximum of this
|
|
93
|
+
* processor's own tail length and any child processor tail lengths.
|
|
94
|
+
*
|
|
95
|
+
* Subclasses that contain child processors (e.g. processor chains,
|
|
96
|
+
* plugin wrappers) should override this to include their children.
|
|
97
|
+
*
|
|
98
|
+
* @returns Effective tail length in frames.
|
|
99
|
+
*/
|
|
100
|
+
getEffectiveTailLength() {
|
|
101
|
+
return this._tailLength;
|
|
43
102
|
}
|
|
44
103
|
}
|
|
45
104
|
//# sourceMappingURL=Processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Processor.js","sourceRoot":"","sources":["../../src/processing/Processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAI9D,MAAM,OAAgB,SAAS;
|
|
1
|
+
{"version":3,"file":"Processor.js","sourceRoot":"","sources":["../../src/processing/Processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAI9D,MAAM,OAAgB,SAAS;IA8B3B,YAAY,EAAe,EAAE,IAAY;QA1BzC,mCAAmC;QAC5B,gBAAW,GAAgC,IAAI,GAAG,EAAE,CAAC;QAElD,YAAO,GAAY,IAAI,CAAC;QAClB,kBAAa,GAAG,IAAI,MAAM,EAAW,CAAC;QACtC,iBAAY,GAAG,IAAI,MAAM,EAAQ,CAAC;QAClC,oBAAe,GAAG,IAAI,MAAM,EAA+C,CAAC;QAE5F,2EAA2E;QAC3E;;;;WAIG;QACK,gBAAW,GAAW,CAAC,CAAC;QAChB,sBAAiB,GAAG,IAAI,MAAM,EAAU,CAAC;QAEzD,2EAA2E;QAC3E;;;;WAIG;QACK,aAAQ,GAAW,CAAC,CAAC;QACb,mBAAc,GAAG,IAAI,MAAM,EAAU,CAAC;QAGlD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,aAAa,CAAC,SAAiB;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC5C,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,MAAM,CAAC,KAAc;QAC5B,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED,2EAA2E;IAE3E;;OAEG;IACI,aAAa;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,MAAc;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED,2EAA2E;IAE3E;;;;;;;;;OASG;IACI,UAAU;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,OAAe;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,2EAA2E;IAE3E;;;;;;;;OAQG;IACI,sBAAsB;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;CACJ"}
|
|
@@ -4,7 +4,6 @@ import { MeterData } from '../domain/MeterData';
|
|
|
4
4
|
/**
|
|
5
5
|
* Send processor -- routes a copy of the signal to a destination track or bus.
|
|
6
6
|
*
|
|
7
|
-
* Modelled after Ardour's InternalSend / Send (libs/ardour/send.cc).
|
|
8
7
|
* A send can be placed either pre-fader or post-fader in the processor chain.
|
|
9
8
|
* It has its own independent level (in dB) and mute state.
|
|
10
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SendProcessor.d.ts","sourceRoot":"","sources":["../../src/processing/SendProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"SendProcessor.d.ts","sourceRoot":"","sources":["../../src/processing/SendProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;;;;;;;;GASG;AACH,qBAAa,aAAc,SAAQ,SAAS;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAkB;IAEhC,2CAA2C;IAC3C,SAAgB,YAAY,iBAAwB;IACpD,yDAAyD;IACzD,SAAgB,eAAe,kBAAyB;IACxD,2CAA2C;IAC3C,SAAgB,WAAW,kBAAyB;IAEpD;;;;;;OAMG;gBAEC,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,OAAe,EACzB,QAAQ,GAAE,OAAe;IAW7B,wBAAwB;IACxB,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAM7B;IAID,kEAAkE;IAClE,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAMjC;IAID,uCAAuC;IACvC,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAID,qDAAqD;IACrD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAID,kCAAkC;IAClC,IAAW,KAAK,IAAI,OAAO,CAE1B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,OAAO,EAM9B;IAID;;;;OAIG;IACI,YAAY,IAAI,SAAS;CAQnC"}
|
|
@@ -3,7 +3,6 @@ import { Signal } from '../lib/Signal';
|
|
|
3
3
|
/**
|
|
4
4
|
* Send processor -- routes a copy of the signal to a destination track or bus.
|
|
5
5
|
*
|
|
6
|
-
* Modelled after Ardour's InternalSend / Send (libs/ardour/send.cc).
|
|
7
6
|
* A send can be placed either pre-fader or post-fader in the processor chain.
|
|
8
7
|
* It has its own independent level (in dB) and mute state.
|
|
9
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SendProcessor.js","sourceRoot":"","sources":["../../src/processing/SendProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC
|
|
1
|
+
{"version":3,"file":"SendProcessor.js","sourceRoot":"","sources":["../../src/processing/SendProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAS;IAcxC;;;;;;OAMG;IACH,YACI,EAAe,EACf,QAAgB,EAChB,QAAgB,CAAC,EACjB,WAAoB,KAAK,EACzB,WAAoB,KAAK;QAEzB,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAvBd,WAAM,GAAY,KAAK,CAAC;QAEhC,2CAA2C;QAC3B,iBAAY,GAAG,IAAI,MAAM,EAAU,CAAC;QACpD,yDAAyD;QACzC,oBAAe,GAAG,IAAI,MAAM,EAAW,CAAC;QACxD,2CAA2C;QAC3B,gBAAW,GAAG,IAAI,MAAM,EAAW,CAAC;QAiBhD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,4EAA4E;IAE5E,wBAAwB;IACxB,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,IAAW,KAAK,CAAC,KAAa;QAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,4EAA4E;IAE5E,kEAAkE;IAClE,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAW,QAAQ,CAAC,KAAc;QAC9B,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,4EAA4E;IAE5E,uCAAuC;IACvC,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,4EAA4E;IAE5E,qDAAqD;IACrD,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,4EAA4E;IAE5E,kCAAkC;IAClC,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,IAAW,KAAK,CAAC,KAAc;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,4EAA4E;IAE5E;;;;OAIG;IACI,YAAY;QACf,OAAO;YACH,IAAI,EAAE,CAAC,QAAQ;YACf,GAAG,EAAE,CAAC,QAAQ;YACd,QAAQ,EAAE,CAAC,QAAQ;YACnB,QAAQ,EAAE,KAAK;SAClB,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Processor, ProcessorId } from './Processor';
|
|
2
|
+
import { Signal } from '../lib/Signal';
|
|
3
|
+
/**
|
|
4
|
+
* SurroundPanner supports multichannel panning beyond stereo.
|
|
5
|
+
*
|
|
6
|
+
* Supported layouts:
|
|
7
|
+
* - Stereo (2.0): L, R
|
|
8
|
+
* - Quad (4.0): FL, FR, RL, RR
|
|
9
|
+
* - 5.1: FL, FR, C, LFE, RL, RR
|
|
10
|
+
* - 7.1: FL, FR, C, LFE, RL, RR, SL, SR
|
|
11
|
+
* - Atmos/3D: adds height channels
|
|
12
|
+
*
|
|
13
|
+
* Uses VBAP (Vector Base Amplitude Panning) algorithm for
|
|
14
|
+
* arbitrary speaker configurations.
|
|
15
|
+
*/
|
|
16
|
+
export declare enum SpeakerLayout {
|
|
17
|
+
STEREO = "STEREO",
|
|
18
|
+
QUAD = "QUAD",
|
|
19
|
+
SURROUND_5_1 = "5.1",
|
|
20
|
+
SURROUND_7_1 = "7.1"
|
|
21
|
+
}
|
|
22
|
+
export interface SpeakerPosition {
|
|
23
|
+
azimuth: number;
|
|
24
|
+
elevation: number;
|
|
25
|
+
distance: number;
|
|
26
|
+
label: string;
|
|
27
|
+
}
|
|
28
|
+
export interface SurroundPannerSnapshot {
|
|
29
|
+
id: ProcessorId;
|
|
30
|
+
name: string;
|
|
31
|
+
azimuth: number;
|
|
32
|
+
elevation: number;
|
|
33
|
+
spread: number;
|
|
34
|
+
lfeLevel: number;
|
|
35
|
+
layout: SpeakerLayout;
|
|
36
|
+
active: boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare class SurroundPanner extends Processor {
|
|
39
|
+
private _azimuth;
|
|
40
|
+
private _elevation;
|
|
41
|
+
private _spread;
|
|
42
|
+
private _lfeLevel;
|
|
43
|
+
private _layout;
|
|
44
|
+
private _speakers;
|
|
45
|
+
private _gains;
|
|
46
|
+
readonly positionChanged: Signal<{
|
|
47
|
+
azimuth: number;
|
|
48
|
+
elevation: number;
|
|
49
|
+
}>;
|
|
50
|
+
readonly layoutChanged: Signal<SpeakerLayout>;
|
|
51
|
+
constructor(id: ProcessorId, layout?: SpeakerLayout);
|
|
52
|
+
/**
|
|
53
|
+
* Set the source position.
|
|
54
|
+
* @param azimuth Horizontal angle in degrees (-180 to 180).
|
|
55
|
+
* @param elevation Vertical angle in degrees (-90 to 90). Defaults to current.
|
|
56
|
+
*/
|
|
57
|
+
setPosition(azimuth: number, elevation?: number): void;
|
|
58
|
+
/**
|
|
59
|
+
* Set the source spread.
|
|
60
|
+
* @param spread 0 = point source, 1 = omnidirectional.
|
|
61
|
+
*/
|
|
62
|
+
setSpread(spread: number): void;
|
|
63
|
+
/**
|
|
64
|
+
* Set the LFE send level.
|
|
65
|
+
* @param level 0 to 1.
|
|
66
|
+
*/
|
|
67
|
+
setLFELevel(level: number): void;
|
|
68
|
+
get azimuth(): number;
|
|
69
|
+
get elevation(): number;
|
|
70
|
+
get spread(): number;
|
|
71
|
+
get lfeLevel(): number;
|
|
72
|
+
/**
|
|
73
|
+
* Set the speaker layout. Recomputes speaker positions and gains.
|
|
74
|
+
*/
|
|
75
|
+
setLayout(layout: SpeakerLayout): void;
|
|
76
|
+
get layout(): SpeakerLayout;
|
|
77
|
+
/** Number of output channels for the current layout. */
|
|
78
|
+
get channelCount(): number;
|
|
79
|
+
/** Speaker positions for the current layout. */
|
|
80
|
+
get speakers(): ReadonlyArray<SpeakerPosition>;
|
|
81
|
+
/**
|
|
82
|
+
* Compute per-channel gains based on the current source position,
|
|
83
|
+
* spread, and layout using VBAP.
|
|
84
|
+
*
|
|
85
|
+
* @returns Float32Array of linear gains, one per speaker/channel.
|
|
86
|
+
*/
|
|
87
|
+
computeGains(): Float32Array;
|
|
88
|
+
/**
|
|
89
|
+
* 2D VBAP: Vector Base Amplitude Panning in the horizontal plane.
|
|
90
|
+
*
|
|
91
|
+
* For each adjacent speaker pair, computes the amplitude split
|
|
92
|
+
* based on the angular position of the source relative to both speakers.
|
|
93
|
+
*
|
|
94
|
+
* @param azimuth Source azimuth in degrees (-180 to 180).
|
|
95
|
+
*/
|
|
96
|
+
private vbap2D;
|
|
97
|
+
/**
|
|
98
|
+
* 3D VBAP: Vector Base Amplitude Panning with elevation.
|
|
99
|
+
*
|
|
100
|
+
* Extends 2D VBAP by considering the vertical angle to distribute
|
|
101
|
+
* energy across speakers at different elevations.
|
|
102
|
+
*
|
|
103
|
+
* @param azimuth Source azimuth in degrees.
|
|
104
|
+
* @param elevation Source elevation in degrees.
|
|
105
|
+
*/
|
|
106
|
+
private vbap3D;
|
|
107
|
+
/**
|
|
108
|
+
* Setup default speaker positions for a given layout.
|
|
109
|
+
* Angles follow the ITU-R BS.775 and ITU-R BS.2051 standards.
|
|
110
|
+
*/
|
|
111
|
+
private setupSpeakers;
|
|
112
|
+
/**
|
|
113
|
+
* Get the index of the LFE channel in the current layout.
|
|
114
|
+
* Returns -1 if the layout has no LFE channel.
|
|
115
|
+
*/
|
|
116
|
+
private getLFEChannelIndex;
|
|
117
|
+
toJSON(): SurroundPannerSnapshot;
|
|
118
|
+
static fromJSON(data: SurroundPannerSnapshot): SurroundPanner;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=SurroundPanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SurroundPanner.d.ts","sourceRoot":"","sources":["../../src/processing/SurroundPanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;;;;;;;;;GAYG;AAEH,oBAAY,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,YAAY,QAAQ;IACpB,YAAY,QAAQ;CACvB;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,WAAW,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,cAAe,SAAQ,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,MAAM,CAAqC;IAEnD,SAAgB,eAAe;iBAAyB,MAAM;mBAAa,MAAM;OAAM;IACvF,SAAgB,aAAa,wBAA+B;gBAEhD,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa;IAWnD;;;;OAIG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAe7D;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAStC;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQvC,IAAW,OAAO,IAAI,MAAM,CAA0B;IACtD,IAAW,SAAS,IAAI,MAAM,CAA4B;IAC1D,IAAW,MAAM,IAAI,MAAM,CAAyB;IACpD,IAAW,QAAQ,IAAI,MAAM,CAA2B;IAIxD;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAW7C,IAAW,MAAM,IAAI,aAAa,CAAyB;IAE3D,wDAAwD;IACxD,IAAW,YAAY,IAAI,MAAM,CAAkC;IAEnE,gDAAgD;IAChD,IAAW,QAAQ,IAAI,aAAa,CAAC,eAAe,CAAC,CAA2B;IAIhF;;;;;OAKG;IACI,YAAY,IAAI,YAAY;IAiCnC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM;IAwFd;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM;IAsEd;;;OAGG;IACH,OAAO,CAAC,aAAa;IA8CrB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAMnB,MAAM,IAAI,sBAAsB;WAazB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,GAAG,cAAc;CAWvE"}
|