@signalsandsorcery/plugin-sdk 2.36.1 → 2.38.2

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/README.md CHANGED
@@ -111,7 +111,7 @@ const [prompts, setPrompts, setPromptsForScene] = useSceneState(activeSceneId, {
111
111
 
112
112
  ```typescript
113
113
  import {
114
- PLUGIN_SDK_VERSION, // '2.8.0'
114
+ PLUGIN_SDK_VERSION, // current API version — see src/constants/sdk-version.ts
115
115
  FX_CATEGORIES, // ['eq', 'compressor', 'chorus', 'phaser', 'delay', 'reverb']
116
116
  FX_PRESET_CONFIGS, // Preset definitions for all 6 FX categories
117
117
  } from '@signalsandsorcery/plugin-sdk';
package/dist/index.d.mts CHANGED
@@ -120,6 +120,38 @@ interface PanelBusState {
120
120
  /** User FX chain, top-to-bottom (master section excluded). */
121
121
  fx: PanelBusFxEntry[];
122
122
  }
123
+ /**
124
+ * One plugin a track freeze depends on (missing-deps reporting on the
125
+ * drawer's Freeze tab). @since SDK 2.46.0
126
+ */
127
+ interface FreezeDep {
128
+ /** Stable scan identity when known; null on legacy external-FX entries. */
129
+ identifier: string | null;
130
+ name: string;
131
+ kind: 'instrument' | 'fx';
132
+ }
133
+ /**
134
+ * A track's freeze state — the drawer Freeze tab's model. Frozen = the
135
+ * track plays a FADER-NEUTRAL stem while its sound chain is disabled;
136
+ * volume/pan/mute/solo stay live, and mixing never marks a freeze stale.
137
+ * @since SDK 2.46.0
138
+ */
139
+ interface TrackFreezeState {
140
+ frozen: boolean;
141
+ /** Only meaningful when frozen: sound inputs changed since the stem rendered. */
142
+ stale: boolean;
143
+ /** Which inputs changed ('midi' | 'preset' | 'instrument' | 'external-fx' | 'role'). */
144
+ staleReasons: string[];
145
+ /** PROVEN-missing plugins (blocks unfreeze; never populated on rumor). */
146
+ missingDeps: FreezeDep[];
147
+ /** Every plugin the active freeze recorded (empty when live). */
148
+ deps: FreezeDep[];
149
+ freezeId?: string;
150
+ frozenAt?: string;
151
+ wavPath?: string;
152
+ /** A fresh inactive freeze exists — re-freezing is instant. */
153
+ latentFreshFreeze: boolean;
154
+ }
123
155
  /**
124
156
  * One third-party (VST3/AU) FX insert on a TRACK's plugin chain, as shown to
125
157
  * the panel UI. The track's instrument, the built-in FX-toggle plugins
@@ -750,6 +782,20 @@ interface PluginHost {
750
782
  * @since SDK 2.41.0
751
783
  */
752
784
  copyTrackFxFrom?(destTrackId: string, sourceTrackDbId: string): Promise<TrackFxCopyResult>;
785
+ /** The track's freeze state (frozen / stale + reasons / missing plugins). */
786
+ getTrackFreezeState?(trackId: string): Promise<TrackFreezeState>;
787
+ /**
788
+ * Freeze the track (renders take seconds — resolve = frozen). Idempotent
789
+ * while fresh; re-freezing a stale track re-renders. Refused for
790
+ * sample/audio tracks and transition scenes (message explains why).
791
+ */
792
+ freezeTrack?(trackId: string): Promise<TrackFreezeState>;
793
+ /**
794
+ * Unfreeze: stem out, plugin chain (incl. per-FX bypass flags) restored;
795
+ * the stem is kept for instant re-freeze. Refuses while the track's
796
+ * plugins are provably missing — the message names them and the remedy.
797
+ */
798
+ unfreezeTrack?(trackId: string): Promise<TrackFreezeState>;
753
799
  /** Subscribe to transport state changes. Returns unsubscribe function. */
754
800
  onTransportEvent(listener: TransportEventListener): UnsubscribeFn;
755
801
  /** Subscribe to deck boundary events. Returns unsubscribe function. */
@@ -1030,6 +1076,32 @@ interface PluginHost {
1030
1076
  * @since SDK 2.9.0
1031
1077
  */
1032
1078
  onAllDecksStopped(listener: () => void): UnsubscribeFn;
1079
+ /**
1080
+ * Surge XT availability snapshot — the synth behind synth-layer tracks.
1081
+ * Panels that REQUIRE Surge (e.g. the livecode "Code" panel) gate their UI
1082
+ * on this and offer install. Optional — feature-check before calling.
1083
+ *
1084
+ * @since SDK 2.45.0
1085
+ */
1086
+ getSurgeXtStatus?(): Promise<SurgeXtStatus>;
1087
+ /**
1088
+ * Kick the bundled Surge XT installer (same flow as the setup wizard /
1089
+ * connection panel). Resolves when the install attempt finishes; progress
1090
+ * streams via {@link onSurgeXtStatus}.
1091
+ *
1092
+ * @since SDK 2.45.0
1093
+ */
1094
+ installSurgeXt?(): Promise<{
1095
+ success: boolean;
1096
+ error?: string;
1097
+ }>;
1098
+ /**
1099
+ * Subscribe to Surge XT status/progress changes (install started, progress
1100
+ * lines, completion). Returns an unsubscribe fn.
1101
+ *
1102
+ * @since SDK 2.45.0
1103
+ */
1104
+ onSurgeXtStatus?(listener: (status: SurgeXtStatus) => void): UnsubscribeFn;
1033
1105
  /** Get a value from scene-scoped plugin data. */
1034
1106
  getSceneData<T = unknown>(sceneId: string, key: string): Promise<T | null>;
1035
1107
  /** Set a value in scene-scoped plugin data. */
@@ -1815,6 +1887,18 @@ interface TransportEvent {
1815
1887
  position?: number;
1816
1888
  isPlaying?: boolean;
1817
1889
  }
1890
+ /**
1891
+ * Surge XT availability snapshot for panel prerequisite gates.
1892
+ * @since SDK 2.45.0
1893
+ */
1894
+ interface SurgeXtStatus {
1895
+ /** Surge XT is installed on this machine. */
1896
+ installed: boolean;
1897
+ /** An install kicked off via installSurgeXt (or the setup flow) is running. */
1898
+ installing: boolean;
1899
+ /** Human-readable progress line while installing. */
1900
+ progressMessage?: string;
1901
+ }
1818
1902
  interface DeckBoundaryEvent {
1819
1903
  deckId: string;
1820
1904
  bar: number;
@@ -2493,6 +2577,29 @@ interface FxPresetDataEntry {
2493
2577
  /** Persisted FX data format (stored as JSON in database) */
2494
2578
  type FxPresetData = Partial<Record<FxCategory, FxPresetDataEntry>>;
2495
2579
 
2580
+ /**
2581
+ * useTrackFreeze — one track's freeze state + actions (@since SDK 2.47.0).
2582
+ *
2583
+ * Owned by TrackRow (always mounted) so the ❄ row badge and the drawer's
2584
+ * Freeze tab share ONE state — the drawer unmounts when closed, so state
2585
+ * lifted here survives open/close. Capability-gated: pass any host; when it
2586
+ * lacks `getTrackFreezeState` the hook is inert (`enabled: false`, no
2587
+ * fetches) and nothing renders.
2588
+ */
2589
+
2590
+ interface UseTrackFreezeResult {
2591
+ /** Host supports the freeze surface (feature detection). */
2592
+ enabled: boolean;
2593
+ /** null until the first read resolves (or when reads fail / hook disabled). */
2594
+ state: TrackFreezeState | null;
2595
+ busy: 'freeze' | 'unfreeze' | null;
2596
+ error: string | null;
2597
+ refresh: () => Promise<void>;
2598
+ freeze: () => Promise<void>;
2599
+ unfreeze: () => Promise<void>;
2600
+ }
2601
+ declare function useTrackFreeze(host: PluginHost | undefined, trackId: string): UseTrackFreezeResult;
2602
+
2496
2603
  /**
2497
2604
  * TrackDrawer — the unified per-track drawer body.
2498
2605
  *
@@ -2514,7 +2621,7 @@ type FxPresetData = Partial<Record<FxCategory, FxPresetDataEntry>>;
2514
2621
  */
2515
2622
 
2516
2623
  /** The contextual tabs a track drawer can show, in display order. */
2517
- type DrawerTab = 'fx' | 'pick' | 'history' | 'import' | 'edit';
2624
+ type DrawerTab = 'fx' | 'pick' | 'history' | 'import' | 'edit' | 'freeze';
2518
2625
  interface TrackDrawerProps {
2519
2626
  /** Which tab is active (controlled by the host TrackRow). */
2520
2627
  activeTab: DrawerTab;
@@ -2535,6 +2642,12 @@ interface TrackDrawerProps {
2535
2642
  * FX tab.
2536
2643
  */
2537
2644
  externalFxHost?: PluginHost;
2645
+ /**
2646
+ * Lifted freeze state (@since SDK 2.47.0) — TrackRow owns useTrackFreeze
2647
+ * so its ❄ badge and this drawer share one state. When omitted, the drawer
2648
+ * runs its own hook off `externalFxHost` (direct-use backward compat).
2649
+ */
2650
+ freeze?: UseTrackFreezeResult;
2538
2651
  /** Available instrument plugins from engine scan. */
2539
2652
  instruments?: InstrumentDescriptor[];
2540
2653
  /** Currently loaded instrument plugin ID (null = default Surge XT). */
@@ -2576,7 +2689,7 @@ interface TrackDrawerProps {
2576
2689
  /** Optional single-note preview when the user adds a note. */
2577
2690
  onAuditionNote?: (pitch: number, velocity: number, durationMs: number) => void;
2578
2691
  }
2579
- declare function TrackDrawer({ activeTab, onTabChange, trackId, fxState, onFxToggle, onFxPresetChange, onFxDryWetChange, fxDisabled, externalFxHost, instruments, currentPluginId, isLoading, onSelect, onRefresh, editorStage, onShowEditor, onBackToInstruments, selectedInstrumentName, soundHistory, soundHistoryCursor, onRestoreSound, onToggleFavorite, onImportSound, importSoundLabel, editNotes, onNotesChange, editBars, editBpm, editSnap, onAuditionNote, }: TrackDrawerProps): React$1.ReactElement;
2692
+ declare function TrackDrawer({ activeTab, onTabChange, trackId, fxState, onFxToggle, onFxPresetChange, onFxDryWetChange, fxDisabled, externalFxHost, freeze, instruments, currentPluginId, isLoading, onSelect, onRefresh, editorStage, onShowEditor, onBackToInstruments, selectedInstrumentName, soundHistory, soundHistoryCursor, onRestoreSound, onToggleFavorite, onImportSound, importSoundLabel, editNotes, onNotesChange, editBars, editBpm, editSnap, onAuditionNote, }: TrackDrawerProps): React$1.ReactElement;
2580
2693
 
2581
2694
  /**
2582
2695
  * useTrackLevels — drives the cosmetic per-track strip meters.
@@ -4050,6 +4163,28 @@ interface UseTrackExternalFxResult {
4050
4163
  }
4051
4164
  declare function useTrackExternalFx(host: PluginHost, trackId: string): UseTrackExternalFxResult;
4052
4165
 
4166
+ /**
4167
+ * TrackFreezeSection — the drawer's Freeze tab body (@since SDK 2.46.0).
4168
+ *
4169
+ * Presentational: TrackDrawer owns the freeze state (it also needs it to
4170
+ * lock the sound-editing tabs while frozen) and passes it down with the two
4171
+ * actions. Freezing renders the track's sound chain to a FADER-NEUTRAL stem
4172
+ * on the same track and disables the plugins — volume, pan, mute and solo
4173
+ * stay fully live, so freezing never changes the mix. Unfreezing restores
4174
+ * the chain (including per-FX bypass flags) and keeps the stem for instant
4175
+ * re-freeze.
4176
+ */
4177
+
4178
+ interface TrackFreezeSectionProps {
4179
+ /** null = state not loaded yet (host fetch in flight or failed). */
4180
+ state: TrackFreezeState | null;
4181
+ busy: 'freeze' | 'unfreeze' | null;
4182
+ error: string | null;
4183
+ onFreeze: () => void;
4184
+ onUnfreeze: () => void;
4185
+ }
4186
+ declare function TrackFreezeSection({ state, busy, error, onFreeze, onUnfreeze, }: TrackFreezeSectionProps): React$1.ReactElement;
4187
+
4053
4188
  /**
4054
4189
  * PanSlider Component
4055
4190
  *
@@ -5543,7 +5678,7 @@ declare function useAnySolo(host: Pick<PluginHost, 'isAnySoloActive' | 'onTrackS
5543
5678
  * Registry checks semver.gte(PLUGIN_SDK_VERSION, manifest.minHostVersion)
5544
5679
  * during activation and marks incompatible plugins accordingly.
5545
5680
  */
5546
- declare const PLUGIN_SDK_VERSION = "2.43.0";
5681
+ declare const PLUGIN_SDK_VERSION = "2.46.0";
5547
5682
 
5548
5683
  /**
5549
5684
  * FX Preset Definitions
@@ -5702,4 +5837,4 @@ interface PickTopKOptions {
5702
5837
  */
5703
5838
  declare function pickTopKWeighted<T>(scored: ReadonlyArray<ScoredCandidate<T>>, options?: PickTopKOptions): T | null;
5704
5839
 
5705
- export { AUDIO_EFFECTS, AUDIO_EFFECT_LABEL, type AdjacentPairAnalysis, type AudioEffect, type AudioInputDevice, type BulkAddPlaceholderTrack, type ComposeProgressEvent, type ComposeProgressListener, type ComposeSceneOptions, type ComposeSceneResult, ConfirmDialog, type ConfirmDialogProps, type CoreTrackHandlers, type CreateTrackOptions, type CrossfadeInpaintInput, type CrossfadeLayer, type CrossfadeMeta, CrossfadeModal, type CrossfadeModalProps, type CrossfadePairMeta, type CrossfadeSelection, type CrossfadeSlot, CrossfadeTrackRow, type CrossfadeTrackRowProps, type CrossfadeVolumeCurves, DB_MAX, DB_MIN, DEFAULT_FX_CATEGORY_DETAIL, DEFAULT_FX_DRY_WET, DRAG_DEAD_ZONE, type DeckBoundaryEvent, type DeckBoundaryListener, type DesignerRowSlots, DownloadPackButton, type DownloadPackButtonProps, type DownloadPackButtonVariant, type DrawerTab, type DrumKit, EMPTY_FX_DETAIL_STATE, EMPTY_FX_STATE, ENSEMBLE_MAX_VOICES, ENSEMBLE_MIN_VOICES, ENSEMBLE_STYLES, EQUAL_POWER_GAIN, type EnforceVoiceOptions, type EnforceVoiceResult, type EnsembleAnalysis, type EnsembleNote, type EnsembleStyle, type EnsembleStyleRules, type EnsembleVoiceSpec, type ExportMidiBundleOptions, type ExportMidiBundleResult, type ExportedPluginData, FX_CATEGORIES, FX_CHAIN_ORDER, FX_DISPLAY_LABELS, FX_ENGINE_PLUGIN_NAMES, FX_PRESET_CONFIGS, type FadeDirection, type FadeEntry, type FadeGesture, type FadeLayer, type FadeMeta, FadeModal, type FadeModalProps, type FadeSelection, FadeTrackRow, type FadeTrackRowProps, type FxCategory, type FxCategoryDetailState, type FxPreset, type FxPresetConfig, type FxPresetData, type FxPresetDataEntry, FxToggleBar, type FxToggleBarProps, GUTTER_W, type GenerationServices, type GeneratorPanelAdapter, type GeneratorPanelCore, GeneratorPanelShell, type GeneratorPanelShellProps, type GeneratorPanelSlots, type GeneratorPlugin, type GeneratorTrackState, type GeneratorType, type GroupFadeEntry, type GroupFadeEntryOf, type GroupFadeMemberLayer, GroupFadeTrackRow, type GroupFadeTrackRowProps, type GroupParseSpec, type GroupRenderContext, type ImportCandidateScene, type ImportCandidateTrack, ImportTrackModal, type ImportTrackModalProps, type InstrumentDescriptor, TrackDrawer as InstrumentDrawer, type TrackDrawerProps as InstrumentDrawerProps, type InstrumentSampler, type InstrumentZone, type LLMCandidate, type LLMContent, type LLMFunctionDeclaration, type LLMGenerationConfig, type LLMGenerationRequest, type LLMGenerationResult, type LLMNoteResponse, type LLMPart, type LLMSystemInstruction, type LLMTool, type LLMToolUseRequest, type LLMToolUseResponse, type LLMUsageMetadata, LevelMeter, type LevelMeterProps, type ListAudioFilesOptions, type ListImportableTracksOptions, MIN_NOTE_DURATION_BEATS, type MidiClipData, type MidiWriteResult, type MixInterpolation, Modal, type ModalProps, type MotionKind, type MusicalContext, OffsetScrubber, type OffsetScrubberProps, PLUGIN_SDK_VERSION, PX_PER_BEAT, PanSlider, type PanelBusFxEntry, type PanelBusLevels, type PanelBusState, type PanelFeatureFlags, type PanelGenerationStrategy, type PanelGroupExtension, type PanelIdentity, PanelMasterStrip, type PanelMasterStripProps, type PanelShuffleAdapter, type PanelSoundAdapter, type PanelTransitionGroupAdapter, type ParsedEnsemble, type PeakAnalysis, PianoRollEditor, type PianoRollEditorProps, type PickTopKOptions, type PluginAppTool, type PluginAppToolInputSchema, type PluginAppToolResult, type PluginAudioTextureRequest, type PluginAudioTextureResult, type PluginCapabilities, type PluginChordSegment, type PluginChordTiming, type PluginConcurrentTrackInfo, type PluginCuePoints, type PluginDownloadOptions, PluginError, type PluginErrorCode, type PluginFileDialogOptions, type PluginFxCategoryDetailState, type PluginGenerationContext, type PluginGenerationContextOptions, type PluginHost, type PluginHttpRequestOptions, type PluginHttpResponse, type PluginManifest, type PluginMidiNote, type PluginPresetData, type PluginPresetInfo, type PluginRegistration, type PluginSampleFilter, type PluginSampleImportResult, type PluginSampleInfo, type PluginSampleTrackInfo, type PluginSceneContext, type PluginSceneInfo, type PluginSettingsSchema, type PluginSettingsStore, type PluginSkill, type PluginSkillInputSchema, type PluginStatus, type PluginStemSplitResult, type PluginStemTrackInfo, type PluginSynthInfo, type PluginTrackFxDetailState, type PluginTrackHandle, type PluginTrackInfo, type PluginTrackLevel, type PluginTrackRuntimeState, type PluginTransportState, type PluginTrimWindow, type PluginUIProps, type PostProcessOptions, RESIZE_HANDLE_PX, ROW_HEIGHT, type ReadMidiClip, type ReadMidiResult, type RecordingChunkFinalizedEvent, type RecordingTargetInfo, type ResolveGroupsOptions, type ResolvedCrossfadePair, type ResolvedFade, type ResolvedGroupFade, type ResolvedGroupsResult, type ResolvedTrackGroup, type SDKTrackRowProps, SLIDER_UNITY, STYLE_RULES, SUBMIT_ENSEMBLE_TOOL_NAME, SamplePackCTACard, type SamplePackCTACardProps, type SamplePackCTACardStatus, type SamplePackCardInfo, type SavePluginPresetOptions, type SceneChangeListener, type SceneFamilyTrack, type SceneTrackSummary, type ScoredCandidate, ScrollingWaveform, type ScrollingWaveformProps, type SettingDefinition, type ShufflePresetOptions, type ShufflePresetResult, SorceryProgressBar, type SoundHistoryEntry, type StemType, type SurgeSoundAdapterOverrides, type SynthesizeCuePointsOptions, TEXTURAL_ROLES, TRANSITION_DESIGNER_DRAFT_KEY, TrackDrawer, type TrackDrawerProps, type TrackExternalFxEntry, TrackExternalFxSection, type TrackExternalFxSectionProps, type TrackFxDetailState, type TrackFxState, type TrackGroupMember, type TrackGroupMeta, type TrackLevelsHandle, TrackMeterStrip, type TrackMeterStripProps, type TrackMeterView, TrackRow, type TrackRowDragProps, type TrackSoundHistory, type TrackSoundSnapshot, type TrackStateChangeListener, TransitionDesigner, type TransitionDesignerDraft, type TransitionDesignerProps, type TransitionOps, type TransitionRowType, type TransportEvent, type TransportEventListener, type UnsubscribeFn, type UseGeneratorPanelCoreOptions, type UsePanelBusResult, type UseSoundHistoryOptions, type UseSoundHistoryResult, type UseTrackExternalFxResult, type UseTrackReorderOptions, type UseTrackReorderResult, type UseTransitionOpsInputs, type VerbatimFadeMember, type VolumeAutomationPoint, VolumeSlider, type WaveformPeaks, WaveformView, type WaveformViewProps, analyzeEnsemble, analyzeWavPeak, asAudioEffect, asCrossfadeMeta, asFadeMeta, asTransitionDesignerDraft, buildCrossfadeInpaintPrompt, buildCrossfadeVolumeCurves, buildEnsembleSystemPrompt, buildFadeVolumeCurve, buildRowSlots, buildSubmitEnsembleParameters, buildViolationRetrySuffix, calculateTimeBasedTarget, cellToPx, centerScrollTop, computePeaks, createSurgeSoundAdapter, dbIdsFromKeys, dbToSlider, defaultFadeGesture, defaultVoiceSpecs, describeViolations, drawWaveform, effectivePxPerBeat, enforceVoice, foldPitchToRegister, formatConcurrentTracks, hashString, moveItem, nearestPitchWithPc, newTrackState, normalizeSlots, padPair, padSlots, parseCrossfadePairs, parseEnsembleArgs, parseFades, parseLLMNoteResponse, parseTrackGroups, pickTopKWeighted, pitchToName, pluginFxToToggleFx, promptEnterToGenerate, pxToCell, reconcileSlots, resizeNoteDuration, resolveTrackGroups, rowKey, rowType, scorePromptMatch, sliderToDb, slotsEqual, soundIdentity, splitFadeEntries, synthesizeCuePoints, tokenizePrompt, trackDataKey, transposeNotes, useAnySolo, useGeneratorPanelCore, usePanelBus, useSceneState, useSoundHistory, useTrackExternalFx, useTrackLevel, useTrackLevels, useTrackMeter, useTrackReorder, useTransitionOps, useTransportPlaying };
5840
+ export { AUDIO_EFFECTS, AUDIO_EFFECT_LABEL, type AdjacentPairAnalysis, type AudioEffect, type AudioInputDevice, type BulkAddPlaceholderTrack, type ComposeProgressEvent, type ComposeProgressListener, type ComposeSceneOptions, type ComposeSceneResult, ConfirmDialog, type ConfirmDialogProps, type CoreTrackHandlers, type CreateTrackOptions, type CrossfadeInpaintInput, type CrossfadeLayer, type CrossfadeMeta, CrossfadeModal, type CrossfadeModalProps, type CrossfadePairMeta, type CrossfadeSelection, type CrossfadeSlot, CrossfadeTrackRow, type CrossfadeTrackRowProps, type CrossfadeVolumeCurves, DB_MAX, DB_MIN, DEFAULT_FX_CATEGORY_DETAIL, DEFAULT_FX_DRY_WET, DRAG_DEAD_ZONE, type DeckBoundaryEvent, type DeckBoundaryListener, type DesignerRowSlots, DownloadPackButton, type DownloadPackButtonProps, type DownloadPackButtonVariant, type DrawerTab, type DrumKit, EMPTY_FX_DETAIL_STATE, EMPTY_FX_STATE, ENSEMBLE_MAX_VOICES, ENSEMBLE_MIN_VOICES, ENSEMBLE_STYLES, EQUAL_POWER_GAIN, type EnforceVoiceOptions, type EnforceVoiceResult, type EnsembleAnalysis, type EnsembleNote, type EnsembleStyle, type EnsembleStyleRules, type EnsembleVoiceSpec, type ExportMidiBundleOptions, type ExportMidiBundleResult, type ExportedPluginData, FX_CATEGORIES, FX_CHAIN_ORDER, FX_DISPLAY_LABELS, FX_ENGINE_PLUGIN_NAMES, FX_PRESET_CONFIGS, type FadeDirection, type FadeEntry, type FadeGesture, type FadeLayer, type FadeMeta, FadeModal, type FadeModalProps, type FadeSelection, FadeTrackRow, type FadeTrackRowProps, type FreezeDep, type FxCategory, type FxCategoryDetailState, type FxPreset, type FxPresetConfig, type FxPresetData, type FxPresetDataEntry, FxToggleBar, type FxToggleBarProps, GUTTER_W, type GenerationServices, type GeneratorPanelAdapter, type GeneratorPanelCore, GeneratorPanelShell, type GeneratorPanelShellProps, type GeneratorPanelSlots, type GeneratorPlugin, type GeneratorTrackState, type GeneratorType, type GroupFadeEntry, type GroupFadeEntryOf, type GroupFadeMemberLayer, GroupFadeTrackRow, type GroupFadeTrackRowProps, type GroupParseSpec, type GroupRenderContext, type ImportCandidateScene, type ImportCandidateTrack, ImportTrackModal, type ImportTrackModalProps, type InstrumentDescriptor, TrackDrawer as InstrumentDrawer, type TrackDrawerProps as InstrumentDrawerProps, type InstrumentSampler, type InstrumentZone, type LLMCandidate, type LLMContent, type LLMFunctionDeclaration, type LLMGenerationConfig, type LLMGenerationRequest, type LLMGenerationResult, type LLMNoteResponse, type LLMPart, type LLMSystemInstruction, type LLMTool, type LLMToolUseRequest, type LLMToolUseResponse, type LLMUsageMetadata, LevelMeter, type LevelMeterProps, type ListAudioFilesOptions, type ListImportableTracksOptions, MIN_NOTE_DURATION_BEATS, type MidiClipData, type MidiWriteResult, type MixInterpolation, Modal, type ModalProps, type MotionKind, type MusicalContext, OffsetScrubber, type OffsetScrubberProps, PLUGIN_SDK_VERSION, PX_PER_BEAT, PanSlider, type PanelBusFxEntry, type PanelBusLevels, type PanelBusState, type PanelFeatureFlags, type PanelGenerationStrategy, type PanelGroupExtension, type PanelIdentity, PanelMasterStrip, type PanelMasterStripProps, type PanelShuffleAdapter, type PanelSoundAdapter, type PanelTransitionGroupAdapter, type ParsedEnsemble, type PeakAnalysis, PianoRollEditor, type PianoRollEditorProps, type PickTopKOptions, type PluginAppTool, type PluginAppToolInputSchema, type PluginAppToolResult, type PluginAudioTextureRequest, type PluginAudioTextureResult, type PluginCapabilities, type PluginChordSegment, type PluginChordTiming, type PluginConcurrentTrackInfo, type PluginCuePoints, type PluginDownloadOptions, PluginError, type PluginErrorCode, type PluginFileDialogOptions, type PluginFxCategoryDetailState, type PluginGenerationContext, type PluginGenerationContextOptions, type PluginHost, type PluginHttpRequestOptions, type PluginHttpResponse, type PluginManifest, type PluginMidiNote, type PluginPresetData, type PluginPresetInfo, type PluginRegistration, type PluginSampleFilter, type PluginSampleImportResult, type PluginSampleInfo, type PluginSampleTrackInfo, type PluginSceneContext, type PluginSceneInfo, type PluginSettingsSchema, type PluginSettingsStore, type PluginSkill, type PluginSkillInputSchema, type PluginStatus, type PluginStemSplitResult, type PluginStemTrackInfo, type PluginSynthInfo, type PluginTrackFxDetailState, type PluginTrackHandle, type PluginTrackInfo, type PluginTrackLevel, type PluginTrackRuntimeState, type PluginTransportState, type PluginTrimWindow, type PluginUIProps, type PostProcessOptions, RESIZE_HANDLE_PX, ROW_HEIGHT, type ReadMidiClip, type ReadMidiResult, type RecordingChunkFinalizedEvent, type RecordingTargetInfo, type ResolveGroupsOptions, type ResolvedCrossfadePair, type ResolvedFade, type ResolvedGroupFade, type ResolvedGroupsResult, type ResolvedTrackGroup, type SDKTrackRowProps, SLIDER_UNITY, STYLE_RULES, SUBMIT_ENSEMBLE_TOOL_NAME, SamplePackCTACard, type SamplePackCTACardProps, type SamplePackCTACardStatus, type SamplePackCardInfo, type SavePluginPresetOptions, type SceneChangeListener, type SceneFamilyTrack, type SceneTrackSummary, type ScoredCandidate, ScrollingWaveform, type ScrollingWaveformProps, type SettingDefinition, type ShufflePresetOptions, type ShufflePresetResult, SorceryProgressBar, type SoundHistoryEntry, type StemType, type SurgeSoundAdapterOverrides, type SurgeXtStatus, type SynthesizeCuePointsOptions, TEXTURAL_ROLES, TRANSITION_DESIGNER_DRAFT_KEY, type TrackCreatedContext, TrackDrawer, type TrackDrawerProps, type TrackExternalFxEntry, TrackExternalFxSection, type TrackExternalFxSectionProps, TrackFreezeSection, type TrackFreezeSectionProps, type TrackFreezeState, type TrackFxDetailState, type TrackFxState, type TrackGroupMember, type TrackGroupMeta, type TrackLevelsHandle, TrackMeterStrip, type TrackMeterStripProps, type TrackMeterView, TrackRow, type TrackRowDragProps, type TrackSoundHistory, type TrackSoundSnapshot, type TrackStateChangeListener, TransitionDesigner, type TransitionDesignerDraft, type TransitionDesignerProps, type TransitionOps, type TransitionRowType, type TransportEvent, type TransportEventListener, type UnsubscribeFn, type UseGeneratorPanelCoreOptions, type UsePanelBusResult, type UseSoundHistoryOptions, type UseSoundHistoryResult, type UseTrackExternalFxResult, type UseTrackFreezeResult, type UseTrackReorderOptions, type UseTrackReorderResult, type UseTransitionOpsInputs, type VerbatimFadeMember, type VolumeAutomationPoint, VolumeSlider, type WaveformPeaks, WaveformView, type WaveformViewProps, analyzeEnsemble, analyzeWavPeak, asAudioEffect, asCrossfadeMeta, asFadeMeta, asTransitionDesignerDraft, buildCrossfadeInpaintPrompt, buildCrossfadeVolumeCurves, buildEnsembleSystemPrompt, buildFadeVolumeCurve, buildRowSlots, buildSubmitEnsembleParameters, buildViolationRetrySuffix, calculateTimeBasedTarget, cellToPx, centerScrollTop, computePeaks, createSurgeSoundAdapter, dbIdsFromKeys, dbToSlider, defaultFadeGesture, defaultVoiceSpecs, describeViolations, drawWaveform, effectivePxPerBeat, enforceVoice, foldPitchToRegister, formatConcurrentTracks, hashString, moveItem, nearestPitchWithPc, newTrackState, normalizeSlots, padPair, padSlots, parseCrossfadePairs, parseEnsembleArgs, parseFades, parseLLMNoteResponse, parseTrackGroups, pickTopKWeighted, pitchToName, pluginFxToToggleFx, promptEnterToGenerate, pxToCell, reconcileSlots, resizeNoteDuration, resolveTrackGroups, rowKey, rowType, scorePromptMatch, sliderToDb, slotsEqual, soundIdentity, splitFadeEntries, synthesizeCuePoints, tokenizePrompt, trackDataKey, transposeNotes, useAnySolo, useGeneratorPanelCore, usePanelBus, useSceneState, useSoundHistory, useTrackExternalFx, useTrackFreeze, useTrackLevel, useTrackLevels, useTrackMeter, useTrackReorder, useTransitionOps, useTransportPlaying };
package/dist/index.d.ts CHANGED
@@ -120,6 +120,38 @@ interface PanelBusState {
120
120
  /** User FX chain, top-to-bottom (master section excluded). */
121
121
  fx: PanelBusFxEntry[];
122
122
  }
123
+ /**
124
+ * One plugin a track freeze depends on (missing-deps reporting on the
125
+ * drawer's Freeze tab). @since SDK 2.46.0
126
+ */
127
+ interface FreezeDep {
128
+ /** Stable scan identity when known; null on legacy external-FX entries. */
129
+ identifier: string | null;
130
+ name: string;
131
+ kind: 'instrument' | 'fx';
132
+ }
133
+ /**
134
+ * A track's freeze state — the drawer Freeze tab's model. Frozen = the
135
+ * track plays a FADER-NEUTRAL stem while its sound chain is disabled;
136
+ * volume/pan/mute/solo stay live, and mixing never marks a freeze stale.
137
+ * @since SDK 2.46.0
138
+ */
139
+ interface TrackFreezeState {
140
+ frozen: boolean;
141
+ /** Only meaningful when frozen: sound inputs changed since the stem rendered. */
142
+ stale: boolean;
143
+ /** Which inputs changed ('midi' | 'preset' | 'instrument' | 'external-fx' | 'role'). */
144
+ staleReasons: string[];
145
+ /** PROVEN-missing plugins (blocks unfreeze; never populated on rumor). */
146
+ missingDeps: FreezeDep[];
147
+ /** Every plugin the active freeze recorded (empty when live). */
148
+ deps: FreezeDep[];
149
+ freezeId?: string;
150
+ frozenAt?: string;
151
+ wavPath?: string;
152
+ /** A fresh inactive freeze exists — re-freezing is instant. */
153
+ latentFreshFreeze: boolean;
154
+ }
123
155
  /**
124
156
  * One third-party (VST3/AU) FX insert on a TRACK's plugin chain, as shown to
125
157
  * the panel UI. The track's instrument, the built-in FX-toggle plugins
@@ -750,6 +782,20 @@ interface PluginHost {
750
782
  * @since SDK 2.41.0
751
783
  */
752
784
  copyTrackFxFrom?(destTrackId: string, sourceTrackDbId: string): Promise<TrackFxCopyResult>;
785
+ /** The track's freeze state (frozen / stale + reasons / missing plugins). */
786
+ getTrackFreezeState?(trackId: string): Promise<TrackFreezeState>;
787
+ /**
788
+ * Freeze the track (renders take seconds — resolve = frozen). Idempotent
789
+ * while fresh; re-freezing a stale track re-renders. Refused for
790
+ * sample/audio tracks and transition scenes (message explains why).
791
+ */
792
+ freezeTrack?(trackId: string): Promise<TrackFreezeState>;
793
+ /**
794
+ * Unfreeze: stem out, plugin chain (incl. per-FX bypass flags) restored;
795
+ * the stem is kept for instant re-freeze. Refuses while the track's
796
+ * plugins are provably missing — the message names them and the remedy.
797
+ */
798
+ unfreezeTrack?(trackId: string): Promise<TrackFreezeState>;
753
799
  /** Subscribe to transport state changes. Returns unsubscribe function. */
754
800
  onTransportEvent(listener: TransportEventListener): UnsubscribeFn;
755
801
  /** Subscribe to deck boundary events. Returns unsubscribe function. */
@@ -1030,6 +1076,32 @@ interface PluginHost {
1030
1076
  * @since SDK 2.9.0
1031
1077
  */
1032
1078
  onAllDecksStopped(listener: () => void): UnsubscribeFn;
1079
+ /**
1080
+ * Surge XT availability snapshot — the synth behind synth-layer tracks.
1081
+ * Panels that REQUIRE Surge (e.g. the livecode "Code" panel) gate their UI
1082
+ * on this and offer install. Optional — feature-check before calling.
1083
+ *
1084
+ * @since SDK 2.45.0
1085
+ */
1086
+ getSurgeXtStatus?(): Promise<SurgeXtStatus>;
1087
+ /**
1088
+ * Kick the bundled Surge XT installer (same flow as the setup wizard /
1089
+ * connection panel). Resolves when the install attempt finishes; progress
1090
+ * streams via {@link onSurgeXtStatus}.
1091
+ *
1092
+ * @since SDK 2.45.0
1093
+ */
1094
+ installSurgeXt?(): Promise<{
1095
+ success: boolean;
1096
+ error?: string;
1097
+ }>;
1098
+ /**
1099
+ * Subscribe to Surge XT status/progress changes (install started, progress
1100
+ * lines, completion). Returns an unsubscribe fn.
1101
+ *
1102
+ * @since SDK 2.45.0
1103
+ */
1104
+ onSurgeXtStatus?(listener: (status: SurgeXtStatus) => void): UnsubscribeFn;
1033
1105
  /** Get a value from scene-scoped plugin data. */
1034
1106
  getSceneData<T = unknown>(sceneId: string, key: string): Promise<T | null>;
1035
1107
  /** Set a value in scene-scoped plugin data. */
@@ -1815,6 +1887,18 @@ interface TransportEvent {
1815
1887
  position?: number;
1816
1888
  isPlaying?: boolean;
1817
1889
  }
1890
+ /**
1891
+ * Surge XT availability snapshot for panel prerequisite gates.
1892
+ * @since SDK 2.45.0
1893
+ */
1894
+ interface SurgeXtStatus {
1895
+ /** Surge XT is installed on this machine. */
1896
+ installed: boolean;
1897
+ /** An install kicked off via installSurgeXt (or the setup flow) is running. */
1898
+ installing: boolean;
1899
+ /** Human-readable progress line while installing. */
1900
+ progressMessage?: string;
1901
+ }
1818
1902
  interface DeckBoundaryEvent {
1819
1903
  deckId: string;
1820
1904
  bar: number;
@@ -2493,6 +2577,29 @@ interface FxPresetDataEntry {
2493
2577
  /** Persisted FX data format (stored as JSON in database) */
2494
2578
  type FxPresetData = Partial<Record<FxCategory, FxPresetDataEntry>>;
2495
2579
 
2580
+ /**
2581
+ * useTrackFreeze — one track's freeze state + actions (@since SDK 2.47.0).
2582
+ *
2583
+ * Owned by TrackRow (always mounted) so the ❄ row badge and the drawer's
2584
+ * Freeze tab share ONE state — the drawer unmounts when closed, so state
2585
+ * lifted here survives open/close. Capability-gated: pass any host; when it
2586
+ * lacks `getTrackFreezeState` the hook is inert (`enabled: false`, no
2587
+ * fetches) and nothing renders.
2588
+ */
2589
+
2590
+ interface UseTrackFreezeResult {
2591
+ /** Host supports the freeze surface (feature detection). */
2592
+ enabled: boolean;
2593
+ /** null until the first read resolves (or when reads fail / hook disabled). */
2594
+ state: TrackFreezeState | null;
2595
+ busy: 'freeze' | 'unfreeze' | null;
2596
+ error: string | null;
2597
+ refresh: () => Promise<void>;
2598
+ freeze: () => Promise<void>;
2599
+ unfreeze: () => Promise<void>;
2600
+ }
2601
+ declare function useTrackFreeze(host: PluginHost | undefined, trackId: string): UseTrackFreezeResult;
2602
+
2496
2603
  /**
2497
2604
  * TrackDrawer — the unified per-track drawer body.
2498
2605
  *
@@ -2514,7 +2621,7 @@ type FxPresetData = Partial<Record<FxCategory, FxPresetDataEntry>>;
2514
2621
  */
2515
2622
 
2516
2623
  /** The contextual tabs a track drawer can show, in display order. */
2517
- type DrawerTab = 'fx' | 'pick' | 'history' | 'import' | 'edit';
2624
+ type DrawerTab = 'fx' | 'pick' | 'history' | 'import' | 'edit' | 'freeze';
2518
2625
  interface TrackDrawerProps {
2519
2626
  /** Which tab is active (controlled by the host TrackRow). */
2520
2627
  activeTab: DrawerTab;
@@ -2535,6 +2642,12 @@ interface TrackDrawerProps {
2535
2642
  * FX tab.
2536
2643
  */
2537
2644
  externalFxHost?: PluginHost;
2645
+ /**
2646
+ * Lifted freeze state (@since SDK 2.47.0) — TrackRow owns useTrackFreeze
2647
+ * so its ❄ badge and this drawer share one state. When omitted, the drawer
2648
+ * runs its own hook off `externalFxHost` (direct-use backward compat).
2649
+ */
2650
+ freeze?: UseTrackFreezeResult;
2538
2651
  /** Available instrument plugins from engine scan. */
2539
2652
  instruments?: InstrumentDescriptor[];
2540
2653
  /** Currently loaded instrument plugin ID (null = default Surge XT). */
@@ -2576,7 +2689,7 @@ interface TrackDrawerProps {
2576
2689
  /** Optional single-note preview when the user adds a note. */
2577
2690
  onAuditionNote?: (pitch: number, velocity: number, durationMs: number) => void;
2578
2691
  }
2579
- declare function TrackDrawer({ activeTab, onTabChange, trackId, fxState, onFxToggle, onFxPresetChange, onFxDryWetChange, fxDisabled, externalFxHost, instruments, currentPluginId, isLoading, onSelect, onRefresh, editorStage, onShowEditor, onBackToInstruments, selectedInstrumentName, soundHistory, soundHistoryCursor, onRestoreSound, onToggleFavorite, onImportSound, importSoundLabel, editNotes, onNotesChange, editBars, editBpm, editSnap, onAuditionNote, }: TrackDrawerProps): React$1.ReactElement;
2692
+ declare function TrackDrawer({ activeTab, onTabChange, trackId, fxState, onFxToggle, onFxPresetChange, onFxDryWetChange, fxDisabled, externalFxHost, freeze, instruments, currentPluginId, isLoading, onSelect, onRefresh, editorStage, onShowEditor, onBackToInstruments, selectedInstrumentName, soundHistory, soundHistoryCursor, onRestoreSound, onToggleFavorite, onImportSound, importSoundLabel, editNotes, onNotesChange, editBars, editBpm, editSnap, onAuditionNote, }: TrackDrawerProps): React$1.ReactElement;
2580
2693
 
2581
2694
  /**
2582
2695
  * useTrackLevels — drives the cosmetic per-track strip meters.
@@ -4050,6 +4163,28 @@ interface UseTrackExternalFxResult {
4050
4163
  }
4051
4164
  declare function useTrackExternalFx(host: PluginHost, trackId: string): UseTrackExternalFxResult;
4052
4165
 
4166
+ /**
4167
+ * TrackFreezeSection — the drawer's Freeze tab body (@since SDK 2.46.0).
4168
+ *
4169
+ * Presentational: TrackDrawer owns the freeze state (it also needs it to
4170
+ * lock the sound-editing tabs while frozen) and passes it down with the two
4171
+ * actions. Freezing renders the track's sound chain to a FADER-NEUTRAL stem
4172
+ * on the same track and disables the plugins — volume, pan, mute and solo
4173
+ * stay fully live, so freezing never changes the mix. Unfreezing restores
4174
+ * the chain (including per-FX bypass flags) and keeps the stem for instant
4175
+ * re-freeze.
4176
+ */
4177
+
4178
+ interface TrackFreezeSectionProps {
4179
+ /** null = state not loaded yet (host fetch in flight or failed). */
4180
+ state: TrackFreezeState | null;
4181
+ busy: 'freeze' | 'unfreeze' | null;
4182
+ error: string | null;
4183
+ onFreeze: () => void;
4184
+ onUnfreeze: () => void;
4185
+ }
4186
+ declare function TrackFreezeSection({ state, busy, error, onFreeze, onUnfreeze, }: TrackFreezeSectionProps): React$1.ReactElement;
4187
+
4053
4188
  /**
4054
4189
  * PanSlider Component
4055
4190
  *
@@ -5543,7 +5678,7 @@ declare function useAnySolo(host: Pick<PluginHost, 'isAnySoloActive' | 'onTrackS
5543
5678
  * Registry checks semver.gte(PLUGIN_SDK_VERSION, manifest.minHostVersion)
5544
5679
  * during activation and marks incompatible plugins accordingly.
5545
5680
  */
5546
- declare const PLUGIN_SDK_VERSION = "2.43.0";
5681
+ declare const PLUGIN_SDK_VERSION = "2.46.0";
5547
5682
 
5548
5683
  /**
5549
5684
  * FX Preset Definitions
@@ -5702,4 +5837,4 @@ interface PickTopKOptions {
5702
5837
  */
5703
5838
  declare function pickTopKWeighted<T>(scored: ReadonlyArray<ScoredCandidate<T>>, options?: PickTopKOptions): T | null;
5704
5839
 
5705
- export { AUDIO_EFFECTS, AUDIO_EFFECT_LABEL, type AdjacentPairAnalysis, type AudioEffect, type AudioInputDevice, type BulkAddPlaceholderTrack, type ComposeProgressEvent, type ComposeProgressListener, type ComposeSceneOptions, type ComposeSceneResult, ConfirmDialog, type ConfirmDialogProps, type CoreTrackHandlers, type CreateTrackOptions, type CrossfadeInpaintInput, type CrossfadeLayer, type CrossfadeMeta, CrossfadeModal, type CrossfadeModalProps, type CrossfadePairMeta, type CrossfadeSelection, type CrossfadeSlot, CrossfadeTrackRow, type CrossfadeTrackRowProps, type CrossfadeVolumeCurves, DB_MAX, DB_MIN, DEFAULT_FX_CATEGORY_DETAIL, DEFAULT_FX_DRY_WET, DRAG_DEAD_ZONE, type DeckBoundaryEvent, type DeckBoundaryListener, type DesignerRowSlots, DownloadPackButton, type DownloadPackButtonProps, type DownloadPackButtonVariant, type DrawerTab, type DrumKit, EMPTY_FX_DETAIL_STATE, EMPTY_FX_STATE, ENSEMBLE_MAX_VOICES, ENSEMBLE_MIN_VOICES, ENSEMBLE_STYLES, EQUAL_POWER_GAIN, type EnforceVoiceOptions, type EnforceVoiceResult, type EnsembleAnalysis, type EnsembleNote, type EnsembleStyle, type EnsembleStyleRules, type EnsembleVoiceSpec, type ExportMidiBundleOptions, type ExportMidiBundleResult, type ExportedPluginData, FX_CATEGORIES, FX_CHAIN_ORDER, FX_DISPLAY_LABELS, FX_ENGINE_PLUGIN_NAMES, FX_PRESET_CONFIGS, type FadeDirection, type FadeEntry, type FadeGesture, type FadeLayer, type FadeMeta, FadeModal, type FadeModalProps, type FadeSelection, FadeTrackRow, type FadeTrackRowProps, type FxCategory, type FxCategoryDetailState, type FxPreset, type FxPresetConfig, type FxPresetData, type FxPresetDataEntry, FxToggleBar, type FxToggleBarProps, GUTTER_W, type GenerationServices, type GeneratorPanelAdapter, type GeneratorPanelCore, GeneratorPanelShell, type GeneratorPanelShellProps, type GeneratorPanelSlots, type GeneratorPlugin, type GeneratorTrackState, type GeneratorType, type GroupFadeEntry, type GroupFadeEntryOf, type GroupFadeMemberLayer, GroupFadeTrackRow, type GroupFadeTrackRowProps, type GroupParseSpec, type GroupRenderContext, type ImportCandidateScene, type ImportCandidateTrack, ImportTrackModal, type ImportTrackModalProps, type InstrumentDescriptor, TrackDrawer as InstrumentDrawer, type TrackDrawerProps as InstrumentDrawerProps, type InstrumentSampler, type InstrumentZone, type LLMCandidate, type LLMContent, type LLMFunctionDeclaration, type LLMGenerationConfig, type LLMGenerationRequest, type LLMGenerationResult, type LLMNoteResponse, type LLMPart, type LLMSystemInstruction, type LLMTool, type LLMToolUseRequest, type LLMToolUseResponse, type LLMUsageMetadata, LevelMeter, type LevelMeterProps, type ListAudioFilesOptions, type ListImportableTracksOptions, MIN_NOTE_DURATION_BEATS, type MidiClipData, type MidiWriteResult, type MixInterpolation, Modal, type ModalProps, type MotionKind, type MusicalContext, OffsetScrubber, type OffsetScrubberProps, PLUGIN_SDK_VERSION, PX_PER_BEAT, PanSlider, type PanelBusFxEntry, type PanelBusLevels, type PanelBusState, type PanelFeatureFlags, type PanelGenerationStrategy, type PanelGroupExtension, type PanelIdentity, PanelMasterStrip, type PanelMasterStripProps, type PanelShuffleAdapter, type PanelSoundAdapter, type PanelTransitionGroupAdapter, type ParsedEnsemble, type PeakAnalysis, PianoRollEditor, type PianoRollEditorProps, type PickTopKOptions, type PluginAppTool, type PluginAppToolInputSchema, type PluginAppToolResult, type PluginAudioTextureRequest, type PluginAudioTextureResult, type PluginCapabilities, type PluginChordSegment, type PluginChordTiming, type PluginConcurrentTrackInfo, type PluginCuePoints, type PluginDownloadOptions, PluginError, type PluginErrorCode, type PluginFileDialogOptions, type PluginFxCategoryDetailState, type PluginGenerationContext, type PluginGenerationContextOptions, type PluginHost, type PluginHttpRequestOptions, type PluginHttpResponse, type PluginManifest, type PluginMidiNote, type PluginPresetData, type PluginPresetInfo, type PluginRegistration, type PluginSampleFilter, type PluginSampleImportResult, type PluginSampleInfo, type PluginSampleTrackInfo, type PluginSceneContext, type PluginSceneInfo, type PluginSettingsSchema, type PluginSettingsStore, type PluginSkill, type PluginSkillInputSchema, type PluginStatus, type PluginStemSplitResult, type PluginStemTrackInfo, type PluginSynthInfo, type PluginTrackFxDetailState, type PluginTrackHandle, type PluginTrackInfo, type PluginTrackLevel, type PluginTrackRuntimeState, type PluginTransportState, type PluginTrimWindow, type PluginUIProps, type PostProcessOptions, RESIZE_HANDLE_PX, ROW_HEIGHT, type ReadMidiClip, type ReadMidiResult, type RecordingChunkFinalizedEvent, type RecordingTargetInfo, type ResolveGroupsOptions, type ResolvedCrossfadePair, type ResolvedFade, type ResolvedGroupFade, type ResolvedGroupsResult, type ResolvedTrackGroup, type SDKTrackRowProps, SLIDER_UNITY, STYLE_RULES, SUBMIT_ENSEMBLE_TOOL_NAME, SamplePackCTACard, type SamplePackCTACardProps, type SamplePackCTACardStatus, type SamplePackCardInfo, type SavePluginPresetOptions, type SceneChangeListener, type SceneFamilyTrack, type SceneTrackSummary, type ScoredCandidate, ScrollingWaveform, type ScrollingWaveformProps, type SettingDefinition, type ShufflePresetOptions, type ShufflePresetResult, SorceryProgressBar, type SoundHistoryEntry, type StemType, type SurgeSoundAdapterOverrides, type SynthesizeCuePointsOptions, TEXTURAL_ROLES, TRANSITION_DESIGNER_DRAFT_KEY, TrackDrawer, type TrackDrawerProps, type TrackExternalFxEntry, TrackExternalFxSection, type TrackExternalFxSectionProps, type TrackFxDetailState, type TrackFxState, type TrackGroupMember, type TrackGroupMeta, type TrackLevelsHandle, TrackMeterStrip, type TrackMeterStripProps, type TrackMeterView, TrackRow, type TrackRowDragProps, type TrackSoundHistory, type TrackSoundSnapshot, type TrackStateChangeListener, TransitionDesigner, type TransitionDesignerDraft, type TransitionDesignerProps, type TransitionOps, type TransitionRowType, type TransportEvent, type TransportEventListener, type UnsubscribeFn, type UseGeneratorPanelCoreOptions, type UsePanelBusResult, type UseSoundHistoryOptions, type UseSoundHistoryResult, type UseTrackExternalFxResult, type UseTrackReorderOptions, type UseTrackReorderResult, type UseTransitionOpsInputs, type VerbatimFadeMember, type VolumeAutomationPoint, VolumeSlider, type WaveformPeaks, WaveformView, type WaveformViewProps, analyzeEnsemble, analyzeWavPeak, asAudioEffect, asCrossfadeMeta, asFadeMeta, asTransitionDesignerDraft, buildCrossfadeInpaintPrompt, buildCrossfadeVolumeCurves, buildEnsembleSystemPrompt, buildFadeVolumeCurve, buildRowSlots, buildSubmitEnsembleParameters, buildViolationRetrySuffix, calculateTimeBasedTarget, cellToPx, centerScrollTop, computePeaks, createSurgeSoundAdapter, dbIdsFromKeys, dbToSlider, defaultFadeGesture, defaultVoiceSpecs, describeViolations, drawWaveform, effectivePxPerBeat, enforceVoice, foldPitchToRegister, formatConcurrentTracks, hashString, moveItem, nearestPitchWithPc, newTrackState, normalizeSlots, padPair, padSlots, parseCrossfadePairs, parseEnsembleArgs, parseFades, parseLLMNoteResponse, parseTrackGroups, pickTopKWeighted, pitchToName, pluginFxToToggleFx, promptEnterToGenerate, pxToCell, reconcileSlots, resizeNoteDuration, resolveTrackGroups, rowKey, rowType, scorePromptMatch, sliderToDb, slotsEqual, soundIdentity, splitFadeEntries, synthesizeCuePoints, tokenizePrompt, trackDataKey, transposeNotes, useAnySolo, useGeneratorPanelCore, usePanelBus, useSceneState, useSoundHistory, useTrackExternalFx, useTrackLevel, useTrackLevels, useTrackMeter, useTrackReorder, useTransitionOps, useTransportPlaying };
5840
+ export { AUDIO_EFFECTS, AUDIO_EFFECT_LABEL, type AdjacentPairAnalysis, type AudioEffect, type AudioInputDevice, type BulkAddPlaceholderTrack, type ComposeProgressEvent, type ComposeProgressListener, type ComposeSceneOptions, type ComposeSceneResult, ConfirmDialog, type ConfirmDialogProps, type CoreTrackHandlers, type CreateTrackOptions, type CrossfadeInpaintInput, type CrossfadeLayer, type CrossfadeMeta, CrossfadeModal, type CrossfadeModalProps, type CrossfadePairMeta, type CrossfadeSelection, type CrossfadeSlot, CrossfadeTrackRow, type CrossfadeTrackRowProps, type CrossfadeVolumeCurves, DB_MAX, DB_MIN, DEFAULT_FX_CATEGORY_DETAIL, DEFAULT_FX_DRY_WET, DRAG_DEAD_ZONE, type DeckBoundaryEvent, type DeckBoundaryListener, type DesignerRowSlots, DownloadPackButton, type DownloadPackButtonProps, type DownloadPackButtonVariant, type DrawerTab, type DrumKit, EMPTY_FX_DETAIL_STATE, EMPTY_FX_STATE, ENSEMBLE_MAX_VOICES, ENSEMBLE_MIN_VOICES, ENSEMBLE_STYLES, EQUAL_POWER_GAIN, type EnforceVoiceOptions, type EnforceVoiceResult, type EnsembleAnalysis, type EnsembleNote, type EnsembleStyle, type EnsembleStyleRules, type EnsembleVoiceSpec, type ExportMidiBundleOptions, type ExportMidiBundleResult, type ExportedPluginData, FX_CATEGORIES, FX_CHAIN_ORDER, FX_DISPLAY_LABELS, FX_ENGINE_PLUGIN_NAMES, FX_PRESET_CONFIGS, type FadeDirection, type FadeEntry, type FadeGesture, type FadeLayer, type FadeMeta, FadeModal, type FadeModalProps, type FadeSelection, FadeTrackRow, type FadeTrackRowProps, type FreezeDep, type FxCategory, type FxCategoryDetailState, type FxPreset, type FxPresetConfig, type FxPresetData, type FxPresetDataEntry, FxToggleBar, type FxToggleBarProps, GUTTER_W, type GenerationServices, type GeneratorPanelAdapter, type GeneratorPanelCore, GeneratorPanelShell, type GeneratorPanelShellProps, type GeneratorPanelSlots, type GeneratorPlugin, type GeneratorTrackState, type GeneratorType, type GroupFadeEntry, type GroupFadeEntryOf, type GroupFadeMemberLayer, GroupFadeTrackRow, type GroupFadeTrackRowProps, type GroupParseSpec, type GroupRenderContext, type ImportCandidateScene, type ImportCandidateTrack, ImportTrackModal, type ImportTrackModalProps, type InstrumentDescriptor, TrackDrawer as InstrumentDrawer, type TrackDrawerProps as InstrumentDrawerProps, type InstrumentSampler, type InstrumentZone, type LLMCandidate, type LLMContent, type LLMFunctionDeclaration, type LLMGenerationConfig, type LLMGenerationRequest, type LLMGenerationResult, type LLMNoteResponse, type LLMPart, type LLMSystemInstruction, type LLMTool, type LLMToolUseRequest, type LLMToolUseResponse, type LLMUsageMetadata, LevelMeter, type LevelMeterProps, type ListAudioFilesOptions, type ListImportableTracksOptions, MIN_NOTE_DURATION_BEATS, type MidiClipData, type MidiWriteResult, type MixInterpolation, Modal, type ModalProps, type MotionKind, type MusicalContext, OffsetScrubber, type OffsetScrubberProps, PLUGIN_SDK_VERSION, PX_PER_BEAT, PanSlider, type PanelBusFxEntry, type PanelBusLevels, type PanelBusState, type PanelFeatureFlags, type PanelGenerationStrategy, type PanelGroupExtension, type PanelIdentity, PanelMasterStrip, type PanelMasterStripProps, type PanelShuffleAdapter, type PanelSoundAdapter, type PanelTransitionGroupAdapter, type ParsedEnsemble, type PeakAnalysis, PianoRollEditor, type PianoRollEditorProps, type PickTopKOptions, type PluginAppTool, type PluginAppToolInputSchema, type PluginAppToolResult, type PluginAudioTextureRequest, type PluginAudioTextureResult, type PluginCapabilities, type PluginChordSegment, type PluginChordTiming, type PluginConcurrentTrackInfo, type PluginCuePoints, type PluginDownloadOptions, PluginError, type PluginErrorCode, type PluginFileDialogOptions, type PluginFxCategoryDetailState, type PluginGenerationContext, type PluginGenerationContextOptions, type PluginHost, type PluginHttpRequestOptions, type PluginHttpResponse, type PluginManifest, type PluginMidiNote, type PluginPresetData, type PluginPresetInfo, type PluginRegistration, type PluginSampleFilter, type PluginSampleImportResult, type PluginSampleInfo, type PluginSampleTrackInfo, type PluginSceneContext, type PluginSceneInfo, type PluginSettingsSchema, type PluginSettingsStore, type PluginSkill, type PluginSkillInputSchema, type PluginStatus, type PluginStemSplitResult, type PluginStemTrackInfo, type PluginSynthInfo, type PluginTrackFxDetailState, type PluginTrackHandle, type PluginTrackInfo, type PluginTrackLevel, type PluginTrackRuntimeState, type PluginTransportState, type PluginTrimWindow, type PluginUIProps, type PostProcessOptions, RESIZE_HANDLE_PX, ROW_HEIGHT, type ReadMidiClip, type ReadMidiResult, type RecordingChunkFinalizedEvent, type RecordingTargetInfo, type ResolveGroupsOptions, type ResolvedCrossfadePair, type ResolvedFade, type ResolvedGroupFade, type ResolvedGroupsResult, type ResolvedTrackGroup, type SDKTrackRowProps, SLIDER_UNITY, STYLE_RULES, SUBMIT_ENSEMBLE_TOOL_NAME, SamplePackCTACard, type SamplePackCTACardProps, type SamplePackCTACardStatus, type SamplePackCardInfo, type SavePluginPresetOptions, type SceneChangeListener, type SceneFamilyTrack, type SceneTrackSummary, type ScoredCandidate, ScrollingWaveform, type ScrollingWaveformProps, type SettingDefinition, type ShufflePresetOptions, type ShufflePresetResult, SorceryProgressBar, type SoundHistoryEntry, type StemType, type SurgeSoundAdapterOverrides, type SurgeXtStatus, type SynthesizeCuePointsOptions, TEXTURAL_ROLES, TRANSITION_DESIGNER_DRAFT_KEY, type TrackCreatedContext, TrackDrawer, type TrackDrawerProps, type TrackExternalFxEntry, TrackExternalFxSection, type TrackExternalFxSectionProps, TrackFreezeSection, type TrackFreezeSectionProps, type TrackFreezeState, type TrackFxDetailState, type TrackFxState, type TrackGroupMember, type TrackGroupMeta, type TrackLevelsHandle, TrackMeterStrip, type TrackMeterStripProps, type TrackMeterView, TrackRow, type TrackRowDragProps, type TrackSoundHistory, type TrackSoundSnapshot, type TrackStateChangeListener, TransitionDesigner, type TransitionDesignerDraft, type TransitionDesignerProps, type TransitionOps, type TransitionRowType, type TransportEvent, type TransportEventListener, type UnsubscribeFn, type UseGeneratorPanelCoreOptions, type UsePanelBusResult, type UseSoundHistoryOptions, type UseSoundHistoryResult, type UseTrackExternalFxResult, type UseTrackFreezeResult, type UseTrackReorderOptions, type UseTrackReorderResult, type UseTransitionOpsInputs, type VerbatimFadeMember, type VolumeAutomationPoint, VolumeSlider, type WaveformPeaks, WaveformView, type WaveformViewProps, analyzeEnsemble, analyzeWavPeak, asAudioEffect, asCrossfadeMeta, asFadeMeta, asTransitionDesignerDraft, buildCrossfadeInpaintPrompt, buildCrossfadeVolumeCurves, buildEnsembleSystemPrompt, buildFadeVolumeCurve, buildRowSlots, buildSubmitEnsembleParameters, buildViolationRetrySuffix, calculateTimeBasedTarget, cellToPx, centerScrollTop, computePeaks, createSurgeSoundAdapter, dbIdsFromKeys, dbToSlider, defaultFadeGesture, defaultVoiceSpecs, describeViolations, drawWaveform, effectivePxPerBeat, enforceVoice, foldPitchToRegister, formatConcurrentTracks, hashString, moveItem, nearestPitchWithPc, newTrackState, normalizeSlots, padPair, padSlots, parseCrossfadePairs, parseEnsembleArgs, parseFades, parseLLMNoteResponse, parseTrackGroups, pickTopKWeighted, pitchToName, pluginFxToToggleFx, promptEnterToGenerate, pxToCell, reconcileSlots, resizeNoteDuration, resolveTrackGroups, rowKey, rowType, scorePromptMatch, sliderToDb, slotsEqual, soundIdentity, splitFadeEntries, synthesizeCuePoints, tokenizePrompt, trackDataKey, transposeNotes, useAnySolo, useGeneratorPanelCore, usePanelBus, useSceneState, useSoundHistory, useTrackExternalFx, useTrackFreeze, useTrackLevel, useTrackLevels, useTrackMeter, useTrackReorder, useTransitionOps, useTransportPlaying };