@signalsandsorcery/plugin-sdk 2.35.8 → 2.36.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
@@ -1,4 +1,4 @@
1
- import React$1, { ReactNode, ComponentType, DragEvent, Dispatch, SetStateAction } from 'react';
1
+ import React$1, { ReactNode, ComponentType, DragEvent, Dispatch, SetStateAction, KeyboardEvent } from 'react';
2
2
 
3
3
  /**
4
4
  * Plugin SDK Type Definitions
@@ -1030,6 +1030,32 @@ interface PluginHost {
1030
1030
  * @since SDK 2.9.0
1031
1031
  */
1032
1032
  onAllDecksStopped(listener: () => void): UnsubscribeFn;
1033
+ /**
1034
+ * Surge XT availability snapshot — the synth behind synth-layer tracks.
1035
+ * Panels that REQUIRE Surge (e.g. the livecode "Code" panel) gate their UI
1036
+ * on this and offer install. Optional — feature-check before calling.
1037
+ *
1038
+ * @since SDK 2.45.0
1039
+ */
1040
+ getSurgeXtStatus?(): Promise<SurgeXtStatus>;
1041
+ /**
1042
+ * Kick the bundled Surge XT installer (same flow as the setup wizard /
1043
+ * connection panel). Resolves when the install attempt finishes; progress
1044
+ * streams via {@link onSurgeXtStatus}.
1045
+ *
1046
+ * @since SDK 2.45.0
1047
+ */
1048
+ installSurgeXt?(): Promise<{
1049
+ success: boolean;
1050
+ error?: string;
1051
+ }>;
1052
+ /**
1053
+ * Subscribe to Surge XT status/progress changes (install started, progress
1054
+ * lines, completion). Returns an unsubscribe fn.
1055
+ *
1056
+ * @since SDK 2.45.0
1057
+ */
1058
+ onSurgeXtStatus?(listener: (status: SurgeXtStatus) => void): UnsubscribeFn;
1033
1059
  /** Get a value from scene-scoped plugin data. */
1034
1060
  getSceneData<T = unknown>(sceneId: string, key: string): Promise<T | null>;
1035
1061
  /** Set a value in scene-scoped plugin data. */
@@ -1815,6 +1841,18 @@ interface TransportEvent {
1815
1841
  position?: number;
1816
1842
  isPlaying?: boolean;
1817
1843
  }
1844
+ /**
1845
+ * Surge XT availability snapshot for panel prerequisite gates.
1846
+ * @since SDK 2.45.0
1847
+ */
1848
+ interface SurgeXtStatus {
1849
+ /** Surge XT is installed on this machine. */
1850
+ installed: boolean;
1851
+ /** An install kicked off via installSurgeXt (or the setup flow) is running. */
1852
+ installing: boolean;
1853
+ /** Human-readable progress line while installing. */
1854
+ progressMessage?: string;
1855
+ }
1818
1856
  interface DeckBoundaryEvent {
1819
1857
  deckId: string;
1820
1858
  bar: number;
@@ -3779,13 +3817,21 @@ declare function Modal({ open, onClose, children, testIdPrefix, closeOnBackdrop,
3779
3817
  *
3780
3818
  * Coordinate spaces:
3781
3819
  * pitch (0-127) ── row = hi - pitch ── top px = row * ROW_HEIGHT
3782
- * beat (¼ notes) ─────────────────────── left px = beat * PX_PER_BEAT
3820
+ * beat (¼ notes) ─────────────────────── left px = beat * pxPerBeat
3821
+ * where pxPerBeat is the EFFECTIVE horizontal scale: at least PX_PER_BEAT
3822
+ * (long clips overflow into a horizontal scroll), stretched up so short clips
3823
+ * fill the viewport width (see effectivePxPerBeat).
3783
3824
  *
3784
3825
  * The pure helpers (`cellToPx` / `pxToCell` / `transposeNotes`) and layout
3785
3826
  * constants are exported so coordinate math can be unit-tested without a DOM.
3786
3827
  */
3787
3828
 
3788
- /** Horizontal pixels per quarter-note beat. */
3829
+ /**
3830
+ * MINIMUM horizontal pixels per quarter-note beat. The grid never renders
3831
+ * tighter than this (long clips overflow into a horizontal scroll), but it
3832
+ * stretches beyond it to fill the container when the clip is short — see
3833
+ * {@link effectivePxPerBeat}.
3834
+ */
3789
3835
  declare const PX_PER_BEAT = 24;
3790
3836
  /** Vertical pixels per semitone row. */
3791
3837
  declare const ROW_HEIGHT = 12;
@@ -3795,13 +3841,22 @@ declare const GUTTER_W = 28;
3795
3841
  declare const DRAG_DEAD_ZONE = 4;
3796
3842
  /** Width (px) of the right-edge grab handle that resizes a note's length. */
3797
3843
  declare const RESIZE_HANDLE_PX = 6;
3844
+ /**
3845
+ * Pixels per beat for a grid of `totalBeats` inside a `containerWidth`-px
3846
+ * scroll viewport (which also holds the {@link GUTTER_W} keyboard gutter).
3847
+ * Fills the available width when the clip is short; never drops below
3848
+ * {@link PX_PER_BEAT}, so long clips overflow into a horizontal scroll.
3849
+ * An unknown/unmeasured container (≤ gutter width) yields the minimum.
3850
+ */
3851
+ declare function effectivePxPerBeat(containerWidth: number, totalBeats: number): number;
3798
3852
  /** MIDI pitch → scientific note name (60 = C4). */
3799
3853
  declare function pitchToName(pitch: number): string;
3800
3854
  /**
3801
3855
  * Cell (pitch, startBeat) → top-left pixel offset within the grid.
3802
- * `hi` is the highest (top) visible pitch.
3856
+ * `hi` is the highest (top) visible pitch. `pxPerBeat` is the effective
3857
+ * (possibly stretched) horizontal scale; defaults to the minimum.
3803
3858
  */
3804
- declare function cellToPx(pitch: number, startBeat: number, hi: number): {
3859
+ declare function cellToPx(pitch: number, startBeat: number, hi: number, pxPerBeat?: number): {
3805
3860
  left: number;
3806
3861
  top: number;
3807
3862
  };
@@ -3810,7 +3865,7 @@ declare function cellToPx(pitch: number, startBeat: number, hi: number): {
3810
3865
  * snaps to the nearest `snap` step and clamps to `[0, totalBeats - snap]`;
3811
3866
  * pitch clamps to `[0, 127]`.
3812
3867
  */
3813
- declare function pxToCell(localX: number, localY: number, hi: number, snap: number, bars: number, beatsPerBar: number): {
3868
+ declare function pxToCell(localX: number, localY: number, hi: number, snap: number, bars: number, beatsPerBar: number, pxPerBeat?: number): {
3814
3869
  pitch: number;
3815
3870
  startBeat: number;
3816
3871
  };
@@ -3820,7 +3875,7 @@ declare function pxToCell(localX: number, localY: number, hi: number, snap: numb
3820
3875
  * step past `startBeat`, and never extends beyond the grid's right edge
3821
3876
  * (`bars * beatsPerBar`). `startBeat` and `pitch` are untouched.
3822
3877
  */
3823
- declare function resizeNoteDuration(startBeat: number, localX: number, snap: number, bars: number, beatsPerBar: number): number;
3878
+ declare function resizeNoteDuration(startBeat: number, localX: number, snap: number, bars: number, beatsPerBar: number, pxPerBeat?: number): number;
3824
3879
  /**
3825
3880
  * `scrollTop` that vertically centers the bulk of the notes in a `viewportH`-px
3826
3881
  * window. Targets the MEDIAN pitch (robust to a stray high/low outlier — keeps
@@ -3836,7 +3891,7 @@ interface PianoRollEditorProps {
3836
3891
  notes: readonly PluginMidiNote[];
3837
3892
  /** Emitted on every edit (add / delete / move / transpose) with the full next array. */
3838
3893
  onChange: (next: PluginMidiNote[]) => void;
3839
- /** Scene length in bars → grid width = bars * beatsPerBar * PX_PER_BEAT. */
3894
+ /** Scene length in bars → grid width = bars * beatsPerBar * pxPerBeat (min PX_PER_BEAT, stretched to fill). */
3840
3895
  bars: number;
3841
3896
  /** BPM — used only for audition timing in v1. */
3842
3897
  bpm: number;
@@ -4640,6 +4695,16 @@ declare function resolveTrackGroups<M, T>(parsedGroups: TrackGroupMeta<M>[], tra
4640
4695
  * @since SDK 2.35.0
4641
4696
  */
4642
4697
 
4698
+ /**
4699
+ * Default prompt-field keyboard behavior: Enter (without Shift) fires the
4700
+ * Generate action, exactly like clicking the Generate button. The SDK
4701
+ * TrackRow's own prompt input uses this; group headers that render their OWN
4702
+ * prompt input (bass / ensemble / arp / pad stacks) must attach it too so
4703
+ * Enter is never a dead key while the button sits right next to the field.
4704
+ *
4705
+ * @since SDK 2.36.0
4706
+ */
4707
+ declare function promptEnterToGenerate(generate: () => void, disabled?: boolean): (e: KeyboardEvent<HTMLInputElement>) => void;
4643
4708
  /**
4644
4709
  * Build a scene plugin_data key for a track-scoped value. Scene-data keys are
4645
4710
  * ALWAYS constructed from the stable DB UUID (`handle.dbId`) — never the
@@ -5516,7 +5581,7 @@ declare function useAnySolo(host: Pick<PluginHost, 'isAnySoloActive' | 'onTrackS
5516
5581
  * Registry checks semver.gte(PLUGIN_SDK_VERSION, manifest.minHostVersion)
5517
5582
  * during activation and marks incompatible plugins accordingly.
5518
5583
  */
5519
- declare const PLUGIN_SDK_VERSION = "2.43.0";
5584
+ declare const PLUGIN_SDK_VERSION = "2.45.0";
5520
5585
 
5521
5586
  /**
5522
5587
  * FX Preset Definitions
@@ -5675,4 +5740,4 @@ interface PickTopKOptions {
5675
5740
  */
5676
5741
  declare function pickTopKWeighted<T>(scored: ReadonlyArray<ScoredCandidate<T>>, options?: PickTopKOptions): T | null;
5677
5742
 
5678
- 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, enforceVoice, foldPitchToRegister, formatConcurrentTracks, hashString, moveItem, nearestPitchWithPc, newTrackState, normalizeSlots, padPair, padSlots, parseCrossfadePairs, parseEnsembleArgs, parseFades, parseLLMNoteResponse, parseTrackGroups, pickTopKWeighted, pitchToName, pluginFxToToggleFx, 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 };
5743
+ 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 SurgeXtStatus, type SynthesizeCuePointsOptions, TEXTURAL_ROLES, TRANSITION_DESIGNER_DRAFT_KEY, type TrackCreatedContext, 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 };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React$1, { ReactNode, ComponentType, DragEvent, Dispatch, SetStateAction } from 'react';
1
+ import React$1, { ReactNode, ComponentType, DragEvent, Dispatch, SetStateAction, KeyboardEvent } from 'react';
2
2
 
3
3
  /**
4
4
  * Plugin SDK Type Definitions
@@ -1030,6 +1030,32 @@ interface PluginHost {
1030
1030
  * @since SDK 2.9.0
1031
1031
  */
1032
1032
  onAllDecksStopped(listener: () => void): UnsubscribeFn;
1033
+ /**
1034
+ * Surge XT availability snapshot — the synth behind synth-layer tracks.
1035
+ * Panels that REQUIRE Surge (e.g. the livecode "Code" panel) gate their UI
1036
+ * on this and offer install. Optional — feature-check before calling.
1037
+ *
1038
+ * @since SDK 2.45.0
1039
+ */
1040
+ getSurgeXtStatus?(): Promise<SurgeXtStatus>;
1041
+ /**
1042
+ * Kick the bundled Surge XT installer (same flow as the setup wizard /
1043
+ * connection panel). Resolves when the install attempt finishes; progress
1044
+ * streams via {@link onSurgeXtStatus}.
1045
+ *
1046
+ * @since SDK 2.45.0
1047
+ */
1048
+ installSurgeXt?(): Promise<{
1049
+ success: boolean;
1050
+ error?: string;
1051
+ }>;
1052
+ /**
1053
+ * Subscribe to Surge XT status/progress changes (install started, progress
1054
+ * lines, completion). Returns an unsubscribe fn.
1055
+ *
1056
+ * @since SDK 2.45.0
1057
+ */
1058
+ onSurgeXtStatus?(listener: (status: SurgeXtStatus) => void): UnsubscribeFn;
1033
1059
  /** Get a value from scene-scoped plugin data. */
1034
1060
  getSceneData<T = unknown>(sceneId: string, key: string): Promise<T | null>;
1035
1061
  /** Set a value in scene-scoped plugin data. */
@@ -1815,6 +1841,18 @@ interface TransportEvent {
1815
1841
  position?: number;
1816
1842
  isPlaying?: boolean;
1817
1843
  }
1844
+ /**
1845
+ * Surge XT availability snapshot for panel prerequisite gates.
1846
+ * @since SDK 2.45.0
1847
+ */
1848
+ interface SurgeXtStatus {
1849
+ /** Surge XT is installed on this machine. */
1850
+ installed: boolean;
1851
+ /** An install kicked off via installSurgeXt (or the setup flow) is running. */
1852
+ installing: boolean;
1853
+ /** Human-readable progress line while installing. */
1854
+ progressMessage?: string;
1855
+ }
1818
1856
  interface DeckBoundaryEvent {
1819
1857
  deckId: string;
1820
1858
  bar: number;
@@ -3779,13 +3817,21 @@ declare function Modal({ open, onClose, children, testIdPrefix, closeOnBackdrop,
3779
3817
  *
3780
3818
  * Coordinate spaces:
3781
3819
  * pitch (0-127) ── row = hi - pitch ── top px = row * ROW_HEIGHT
3782
- * beat (¼ notes) ─────────────────────── left px = beat * PX_PER_BEAT
3820
+ * beat (¼ notes) ─────────────────────── left px = beat * pxPerBeat
3821
+ * where pxPerBeat is the EFFECTIVE horizontal scale: at least PX_PER_BEAT
3822
+ * (long clips overflow into a horizontal scroll), stretched up so short clips
3823
+ * fill the viewport width (see effectivePxPerBeat).
3783
3824
  *
3784
3825
  * The pure helpers (`cellToPx` / `pxToCell` / `transposeNotes`) and layout
3785
3826
  * constants are exported so coordinate math can be unit-tested without a DOM.
3786
3827
  */
3787
3828
 
3788
- /** Horizontal pixels per quarter-note beat. */
3829
+ /**
3830
+ * MINIMUM horizontal pixels per quarter-note beat. The grid never renders
3831
+ * tighter than this (long clips overflow into a horizontal scroll), but it
3832
+ * stretches beyond it to fill the container when the clip is short — see
3833
+ * {@link effectivePxPerBeat}.
3834
+ */
3789
3835
  declare const PX_PER_BEAT = 24;
3790
3836
  /** Vertical pixels per semitone row. */
3791
3837
  declare const ROW_HEIGHT = 12;
@@ -3795,13 +3841,22 @@ declare const GUTTER_W = 28;
3795
3841
  declare const DRAG_DEAD_ZONE = 4;
3796
3842
  /** Width (px) of the right-edge grab handle that resizes a note's length. */
3797
3843
  declare const RESIZE_HANDLE_PX = 6;
3844
+ /**
3845
+ * Pixels per beat for a grid of `totalBeats` inside a `containerWidth`-px
3846
+ * scroll viewport (which also holds the {@link GUTTER_W} keyboard gutter).
3847
+ * Fills the available width when the clip is short; never drops below
3848
+ * {@link PX_PER_BEAT}, so long clips overflow into a horizontal scroll.
3849
+ * An unknown/unmeasured container (≤ gutter width) yields the minimum.
3850
+ */
3851
+ declare function effectivePxPerBeat(containerWidth: number, totalBeats: number): number;
3798
3852
  /** MIDI pitch → scientific note name (60 = C4). */
3799
3853
  declare function pitchToName(pitch: number): string;
3800
3854
  /**
3801
3855
  * Cell (pitch, startBeat) → top-left pixel offset within the grid.
3802
- * `hi` is the highest (top) visible pitch.
3856
+ * `hi` is the highest (top) visible pitch. `pxPerBeat` is the effective
3857
+ * (possibly stretched) horizontal scale; defaults to the minimum.
3803
3858
  */
3804
- declare function cellToPx(pitch: number, startBeat: number, hi: number): {
3859
+ declare function cellToPx(pitch: number, startBeat: number, hi: number, pxPerBeat?: number): {
3805
3860
  left: number;
3806
3861
  top: number;
3807
3862
  };
@@ -3810,7 +3865,7 @@ declare function cellToPx(pitch: number, startBeat: number, hi: number): {
3810
3865
  * snaps to the nearest `snap` step and clamps to `[0, totalBeats - snap]`;
3811
3866
  * pitch clamps to `[0, 127]`.
3812
3867
  */
3813
- declare function pxToCell(localX: number, localY: number, hi: number, snap: number, bars: number, beatsPerBar: number): {
3868
+ declare function pxToCell(localX: number, localY: number, hi: number, snap: number, bars: number, beatsPerBar: number, pxPerBeat?: number): {
3814
3869
  pitch: number;
3815
3870
  startBeat: number;
3816
3871
  };
@@ -3820,7 +3875,7 @@ declare function pxToCell(localX: number, localY: number, hi: number, snap: numb
3820
3875
  * step past `startBeat`, and never extends beyond the grid's right edge
3821
3876
  * (`bars * beatsPerBar`). `startBeat` and `pitch` are untouched.
3822
3877
  */
3823
- declare function resizeNoteDuration(startBeat: number, localX: number, snap: number, bars: number, beatsPerBar: number): number;
3878
+ declare function resizeNoteDuration(startBeat: number, localX: number, snap: number, bars: number, beatsPerBar: number, pxPerBeat?: number): number;
3824
3879
  /**
3825
3880
  * `scrollTop` that vertically centers the bulk of the notes in a `viewportH`-px
3826
3881
  * window. Targets the MEDIAN pitch (robust to a stray high/low outlier — keeps
@@ -3836,7 +3891,7 @@ interface PianoRollEditorProps {
3836
3891
  notes: readonly PluginMidiNote[];
3837
3892
  /** Emitted on every edit (add / delete / move / transpose) with the full next array. */
3838
3893
  onChange: (next: PluginMidiNote[]) => void;
3839
- /** Scene length in bars → grid width = bars * beatsPerBar * PX_PER_BEAT. */
3894
+ /** Scene length in bars → grid width = bars * beatsPerBar * pxPerBeat (min PX_PER_BEAT, stretched to fill). */
3840
3895
  bars: number;
3841
3896
  /** BPM — used only for audition timing in v1. */
3842
3897
  bpm: number;
@@ -4640,6 +4695,16 @@ declare function resolveTrackGroups<M, T>(parsedGroups: TrackGroupMeta<M>[], tra
4640
4695
  * @since SDK 2.35.0
4641
4696
  */
4642
4697
 
4698
+ /**
4699
+ * Default prompt-field keyboard behavior: Enter (without Shift) fires the
4700
+ * Generate action, exactly like clicking the Generate button. The SDK
4701
+ * TrackRow's own prompt input uses this; group headers that render their OWN
4702
+ * prompt input (bass / ensemble / arp / pad stacks) must attach it too so
4703
+ * Enter is never a dead key while the button sits right next to the field.
4704
+ *
4705
+ * @since SDK 2.36.0
4706
+ */
4707
+ declare function promptEnterToGenerate(generate: () => void, disabled?: boolean): (e: KeyboardEvent<HTMLInputElement>) => void;
4643
4708
  /**
4644
4709
  * Build a scene plugin_data key for a track-scoped value. Scene-data keys are
4645
4710
  * ALWAYS constructed from the stable DB UUID (`handle.dbId`) — never the
@@ -5516,7 +5581,7 @@ declare function useAnySolo(host: Pick<PluginHost, 'isAnySoloActive' | 'onTrackS
5516
5581
  * Registry checks semver.gte(PLUGIN_SDK_VERSION, manifest.minHostVersion)
5517
5582
  * during activation and marks incompatible plugins accordingly.
5518
5583
  */
5519
- declare const PLUGIN_SDK_VERSION = "2.43.0";
5584
+ declare const PLUGIN_SDK_VERSION = "2.45.0";
5520
5585
 
5521
5586
  /**
5522
5587
  * FX Preset Definitions
@@ -5675,4 +5740,4 @@ interface PickTopKOptions {
5675
5740
  */
5676
5741
  declare function pickTopKWeighted<T>(scored: ReadonlyArray<ScoredCandidate<T>>, options?: PickTopKOptions): T | null;
5677
5742
 
5678
- 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, enforceVoice, foldPitchToRegister, formatConcurrentTracks, hashString, moveItem, nearestPitchWithPc, newTrackState, normalizeSlots, padPair, padSlots, parseCrossfadePairs, parseEnsembleArgs, parseFades, parseLLMNoteResponse, parseTrackGroups, pickTopKWeighted, pitchToName, pluginFxToToggleFx, 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 };
5743
+ 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 SurgeXtStatus, type SynthesizeCuePointsOptions, TEXTURAL_ROLES, TRANSITION_DESIGNER_DRAFT_KEY, type TrackCreatedContext, 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 };