@signalsandsorcery/plugin-sdk 2.0.1 → 2.0.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/dist/index.d.mts CHANGED
@@ -362,6 +362,20 @@ interface PluginHost {
362
362
  getPluginSampleTracks(): Promise<PluginSampleTrackInfo[]>;
363
363
  /** Time-stretch a sample to a target BPM. Returns the new sample info. */
364
364
  timeStretchSample(sampleId: string, targetBpm: number): Promise<PluginSampleInfo>;
365
+ /**
366
+ * Fit a sample to the active scene's `(bpm, length_bars)`. Composes:
367
+ * 1. Time-stretch to scene BPM (no-op if already matching).
368
+ * 2. Chop / loop-stitch / passthrough so the resulting clip's duration
369
+ * equals exactly `length_bars × 4 × (60 / bpm)` seconds.
370
+ *
371
+ * Required because the deck loops the clip at the scene's bar boundary —
372
+ * a 4-bar sample dropped into a 2-bar scene used to over-run; a 4-bar
373
+ * sample dropped into an 8-bar scene used to leave 4 bars of silence.
374
+ *
375
+ * The fitted sample is cached in the library by content hash, so
376
+ * subsequent calls for the same `(sample, bpm, bars)` return instantly.
377
+ */
378
+ fitSampleToScene(sampleId: string): Promise<PluginSampleInfo>;
365
379
  /**
366
380
  * Lightweight one-shot sample audition through the cue (headphone) output.
367
381
  *
@@ -379,6 +393,25 @@ interface PluginHost {
379
393
  stopPreview(): Promise<void>;
380
394
  /** Invoke the host's audio texture generation pipeline. */
381
395
  generateAudioTexture(request: PluginAudioTextureRequest): Promise<PluginAudioTextureResult>;
396
+ /**
397
+ * Persist cue points (detected beat positions) for an audio track.
398
+ * Called once after `writeAudioClip` to remember the trim metadata so the
399
+ * UI can later draw beat ticks and snap-to-beat the manual offset.
400
+ *
401
+ * Pass `null` to clear cue points. Throws OWNERSHIP_VIOLATION if the
402
+ * track wasn't created by this plugin.
403
+ */
404
+ setCuePoints(trackId: string, cues: PluginCuePoints | null): Promise<void>;
405
+ /** Read cue points previously written by `setCuePoints`. Returns null when none stored. */
406
+ getCuePoints(trackId: string): Promise<PluginCuePoints | null>;
407
+ /**
408
+ * Set the manual sample-offset applied to the track's audio clip during
409
+ * playback. Positive shifts later, negative shifts earlier with head
410
+ * silence. Throws OWNERSHIP_VIOLATION if not owned by this plugin.
411
+ */
412
+ setAudioOffsetSamples(trackId: string, offsetSamples: number): Promise<void>;
413
+ /** Read the current manual offset (0 if never set). */
414
+ getAudioOffsetSamples(trackId: string): Promise<number>;
382
415
  /** Trigger bulk composition for the active scene (LLM plans arrangement, creates tracks, generates MIDI). */
383
416
  composeScene(options: ComposeSceneOptions): Promise<ComposeSceneResult>;
384
417
  /** Subscribe to composition progress events (planning, generating, complete, error). */
@@ -793,7 +826,7 @@ interface PluginSettingsStore {
793
826
  /** Subscribe to settings changes. Returns unsubscribe fn. */
794
827
  onChange(listener: (key: string, value: unknown) => void): UnsubscribeFn;
795
828
  }
796
- type PluginErrorCode = 'NOT_OWNED' | 'TRACK_NOT_FOUND' | 'TRACK_LIMIT_EXCEEDED' | 'NO_ACTIVE_SCENE' | 'ENGINE_ERROR' | 'INVALID_MIDI' | 'FILE_NOT_FOUND' | 'INVALID_FORMAT' | 'PLUGIN_NOT_FOUND' | 'LLM_BUDGET_EXCEEDED' | 'LLM_UNAVAILABLE' | 'NOT_AUTHENTICATED' | 'TIMEOUT' | 'CANCELLED' | 'INCOMPATIBLE' | 'CAPABILITY_DENIED' | 'SECRET_NOT_FOUND';
829
+ type PluginErrorCode = 'NOT_OWNED' | 'TRACK_NOT_FOUND' | 'TRACK_LIMIT_EXCEEDED' | 'NO_ACTIVE_SCENE' | 'ENGINE_ERROR' | 'INVALID_MIDI' | 'FILE_NOT_FOUND' | 'INVALID_FORMAT' | 'PLUGIN_NOT_FOUND' | 'LLM_BUDGET_EXCEEDED' | 'LLM_UNAVAILABLE' | 'NOT_AUTHENTICATED' | 'TIMEOUT' | 'CANCELLED' | 'INCOMPATIBLE' | 'CAPABILITY_DENIED' | 'SECRET_NOT_FOUND' | 'VALIDATION_ERROR';
797
830
  declare class PluginError extends Error {
798
831
  readonly code: PluginErrorCode;
799
832
  readonly details?: Record<string, unknown>;
@@ -905,6 +938,34 @@ interface PluginAudioTextureResult {
905
938
  filePath: string;
906
939
  /** Duration of the generated audio in seconds */
907
940
  durationSeconds: number;
941
+ /**
942
+ * Beat positions inside the generated audio file plus the detected BPM.
943
+ * Sample positions are relative to the file at `filePath`. Null when the
944
+ * audio-processor did not surface detection data (older binary, fallback
945
+ * path, or processing failed). Persist via `host.setCuePoints` after the
946
+ * clip is written so the OffsetScrubber UI can read them later.
947
+ */
948
+ cuePoints: PluginCuePoints | null;
949
+ }
950
+ /**
951
+ * Cue-points sidecar surfaced by the audio-processor `trim` command —
952
+ * sample positions for each detected beat inside the generated WAV.
953
+ * Mirrors the canonical `CuePoints` shape from the assistant; duplicated
954
+ * here so external plugins don't reach into sas-assistant internals.
955
+ */
956
+ interface PluginCuePoints {
957
+ /** Schema version (currently 1). */
958
+ schema: 1;
959
+ /** Sample rate the beat positions are expressed in. */
960
+ sample_rate: number;
961
+ /** Detected BPM (may differ from project BPM). Null when detection failed. */
962
+ detected_bpm: number | null;
963
+ /** Sample position of bar 1 / beat 1 inside the clip. */
964
+ downbeat_sample: number;
965
+ /** Monotone-increasing array of beat positions in samples. */
966
+ beats: number[];
967
+ /** ISO-8601 timestamp of when detection ran. */
968
+ detected_at: string;
908
969
  }
909
970
  /** Options for composing a full scene arrangement via LLM. */
910
971
  interface ComposeSceneOptions {
@@ -1402,4 +1463,4 @@ declare function sliderToDb(slider: number): number;
1402
1463
  */
1403
1464
  declare function dbToSlider(db: number): number;
1404
1465
 
1405
- export { type BulkAddPlaceholderTrack, type ComposeProgressEvent, type ComposeProgressListener, type ComposeSceneOptions, type ComposeSceneResult, type CreateTrackOptions, DB_MAX, DB_MIN, DEFAULT_FX_CATEGORY_DETAIL, DEFAULT_FX_DRY_WET, type DeckBoundaryEvent, type DeckBoundaryListener, EMPTY_FX_DETAIL_STATE, EMPTY_FX_STATE, type ExportMidiBundleOptions, type ExportMidiBundleResult, type ExportedPluginData, FX_CATEGORIES, FX_CHAIN_ORDER, FX_DISPLAY_LABELS, FX_ENGINE_PLUGIN_NAMES, FX_PRESET_CONFIGS, type FxCategory, type FxCategoryDetailState, type FxPreset, type FxPresetConfig, type FxPresetData, type FxPresetDataEntry, FxToggleBar, type FxToggleBarProps, type GeneratorPlugin, type GeneratorType, type InstrumentDescriptor, InstrumentDrawer, type InstrumentDrawerProps, type LLMGenerationRequest, type LLMGenerationResult, type MidiClipData, type MidiWriteResult, type MixInterpolation, type MusicalContext, PLUGIN_SDK_VERSION, PanSlider, type PluginAppTool, type PluginAppToolInputSchema, type PluginAppToolResult, type PluginAudioTextureRequest, type PluginAudioTextureResult, type PluginCapabilities, type PluginChordSegment, type PluginChordTiming, type PluginConcurrentTrackInfo, type PluginDownloadOptions, PluginError, type PluginErrorCode, type PluginFileDialogOptions, type PluginFxCategoryDetailState, type PluginGenerationContext, 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 PluginTrackRuntimeState, type PluginTransportState, type PluginUIProps, type PostProcessOptions, type SDKTrackRowProps, SLIDER_UNITY, type SavePluginPresetOptions, type SceneChangeListener, type SettingDefinition, type ShufflePresetResult, SorceryProgressBar, type StemType, type TrackFxDetailState, type TrackFxState, TrackRow, type TrackStateChangeListener, type TransportEvent, type TransportEventListener, type UnsubscribeFn, VolumeSlider, calculateTimeBasedTarget, dbToSlider, sliderToDb, useSceneState };
1466
+ export { type BulkAddPlaceholderTrack, type ComposeProgressEvent, type ComposeProgressListener, type ComposeSceneOptions, type ComposeSceneResult, type CreateTrackOptions, DB_MAX, DB_MIN, DEFAULT_FX_CATEGORY_DETAIL, DEFAULT_FX_DRY_WET, type DeckBoundaryEvent, type DeckBoundaryListener, EMPTY_FX_DETAIL_STATE, EMPTY_FX_STATE, type ExportMidiBundleOptions, type ExportMidiBundleResult, type ExportedPluginData, FX_CATEGORIES, FX_CHAIN_ORDER, FX_DISPLAY_LABELS, FX_ENGINE_PLUGIN_NAMES, FX_PRESET_CONFIGS, type FxCategory, type FxCategoryDetailState, type FxPreset, type FxPresetConfig, type FxPresetData, type FxPresetDataEntry, FxToggleBar, type FxToggleBarProps, type GeneratorPlugin, type GeneratorType, type InstrumentDescriptor, InstrumentDrawer, type InstrumentDrawerProps, type LLMGenerationRequest, type LLMGenerationResult, type MidiClipData, type MidiWriteResult, type MixInterpolation, type MusicalContext, PLUGIN_SDK_VERSION, PanSlider, 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 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 PluginTrackRuntimeState, type PluginTransportState, type PluginUIProps, type PostProcessOptions, type SDKTrackRowProps, SLIDER_UNITY, type SavePluginPresetOptions, type SceneChangeListener, type SettingDefinition, type ShufflePresetResult, SorceryProgressBar, type StemType, type TrackFxDetailState, type TrackFxState, TrackRow, type TrackStateChangeListener, type TransportEvent, type TransportEventListener, type UnsubscribeFn, VolumeSlider, calculateTimeBasedTarget, dbToSlider, sliderToDb, useSceneState };
package/dist/index.d.ts CHANGED
@@ -362,6 +362,20 @@ interface PluginHost {
362
362
  getPluginSampleTracks(): Promise<PluginSampleTrackInfo[]>;
363
363
  /** Time-stretch a sample to a target BPM. Returns the new sample info. */
364
364
  timeStretchSample(sampleId: string, targetBpm: number): Promise<PluginSampleInfo>;
365
+ /**
366
+ * Fit a sample to the active scene's `(bpm, length_bars)`. Composes:
367
+ * 1. Time-stretch to scene BPM (no-op if already matching).
368
+ * 2. Chop / loop-stitch / passthrough so the resulting clip's duration
369
+ * equals exactly `length_bars × 4 × (60 / bpm)` seconds.
370
+ *
371
+ * Required because the deck loops the clip at the scene's bar boundary —
372
+ * a 4-bar sample dropped into a 2-bar scene used to over-run; a 4-bar
373
+ * sample dropped into an 8-bar scene used to leave 4 bars of silence.
374
+ *
375
+ * The fitted sample is cached in the library by content hash, so
376
+ * subsequent calls for the same `(sample, bpm, bars)` return instantly.
377
+ */
378
+ fitSampleToScene(sampleId: string): Promise<PluginSampleInfo>;
365
379
  /**
366
380
  * Lightweight one-shot sample audition through the cue (headphone) output.
367
381
  *
@@ -379,6 +393,25 @@ interface PluginHost {
379
393
  stopPreview(): Promise<void>;
380
394
  /** Invoke the host's audio texture generation pipeline. */
381
395
  generateAudioTexture(request: PluginAudioTextureRequest): Promise<PluginAudioTextureResult>;
396
+ /**
397
+ * Persist cue points (detected beat positions) for an audio track.
398
+ * Called once after `writeAudioClip` to remember the trim metadata so the
399
+ * UI can later draw beat ticks and snap-to-beat the manual offset.
400
+ *
401
+ * Pass `null` to clear cue points. Throws OWNERSHIP_VIOLATION if the
402
+ * track wasn't created by this plugin.
403
+ */
404
+ setCuePoints(trackId: string, cues: PluginCuePoints | null): Promise<void>;
405
+ /** Read cue points previously written by `setCuePoints`. Returns null when none stored. */
406
+ getCuePoints(trackId: string): Promise<PluginCuePoints | null>;
407
+ /**
408
+ * Set the manual sample-offset applied to the track's audio clip during
409
+ * playback. Positive shifts later, negative shifts earlier with head
410
+ * silence. Throws OWNERSHIP_VIOLATION if not owned by this plugin.
411
+ */
412
+ setAudioOffsetSamples(trackId: string, offsetSamples: number): Promise<void>;
413
+ /** Read the current manual offset (0 if never set). */
414
+ getAudioOffsetSamples(trackId: string): Promise<number>;
382
415
  /** Trigger bulk composition for the active scene (LLM plans arrangement, creates tracks, generates MIDI). */
383
416
  composeScene(options: ComposeSceneOptions): Promise<ComposeSceneResult>;
384
417
  /** Subscribe to composition progress events (planning, generating, complete, error). */
@@ -793,7 +826,7 @@ interface PluginSettingsStore {
793
826
  /** Subscribe to settings changes. Returns unsubscribe fn. */
794
827
  onChange(listener: (key: string, value: unknown) => void): UnsubscribeFn;
795
828
  }
796
- type PluginErrorCode = 'NOT_OWNED' | 'TRACK_NOT_FOUND' | 'TRACK_LIMIT_EXCEEDED' | 'NO_ACTIVE_SCENE' | 'ENGINE_ERROR' | 'INVALID_MIDI' | 'FILE_NOT_FOUND' | 'INVALID_FORMAT' | 'PLUGIN_NOT_FOUND' | 'LLM_BUDGET_EXCEEDED' | 'LLM_UNAVAILABLE' | 'NOT_AUTHENTICATED' | 'TIMEOUT' | 'CANCELLED' | 'INCOMPATIBLE' | 'CAPABILITY_DENIED' | 'SECRET_NOT_FOUND';
829
+ type PluginErrorCode = 'NOT_OWNED' | 'TRACK_NOT_FOUND' | 'TRACK_LIMIT_EXCEEDED' | 'NO_ACTIVE_SCENE' | 'ENGINE_ERROR' | 'INVALID_MIDI' | 'FILE_NOT_FOUND' | 'INVALID_FORMAT' | 'PLUGIN_NOT_FOUND' | 'LLM_BUDGET_EXCEEDED' | 'LLM_UNAVAILABLE' | 'NOT_AUTHENTICATED' | 'TIMEOUT' | 'CANCELLED' | 'INCOMPATIBLE' | 'CAPABILITY_DENIED' | 'SECRET_NOT_FOUND' | 'VALIDATION_ERROR';
797
830
  declare class PluginError extends Error {
798
831
  readonly code: PluginErrorCode;
799
832
  readonly details?: Record<string, unknown>;
@@ -905,6 +938,34 @@ interface PluginAudioTextureResult {
905
938
  filePath: string;
906
939
  /** Duration of the generated audio in seconds */
907
940
  durationSeconds: number;
941
+ /**
942
+ * Beat positions inside the generated audio file plus the detected BPM.
943
+ * Sample positions are relative to the file at `filePath`. Null when the
944
+ * audio-processor did not surface detection data (older binary, fallback
945
+ * path, or processing failed). Persist via `host.setCuePoints` after the
946
+ * clip is written so the OffsetScrubber UI can read them later.
947
+ */
948
+ cuePoints: PluginCuePoints | null;
949
+ }
950
+ /**
951
+ * Cue-points sidecar surfaced by the audio-processor `trim` command —
952
+ * sample positions for each detected beat inside the generated WAV.
953
+ * Mirrors the canonical `CuePoints` shape from the assistant; duplicated
954
+ * here so external plugins don't reach into sas-assistant internals.
955
+ */
956
+ interface PluginCuePoints {
957
+ /** Schema version (currently 1). */
958
+ schema: 1;
959
+ /** Sample rate the beat positions are expressed in. */
960
+ sample_rate: number;
961
+ /** Detected BPM (may differ from project BPM). Null when detection failed. */
962
+ detected_bpm: number | null;
963
+ /** Sample position of bar 1 / beat 1 inside the clip. */
964
+ downbeat_sample: number;
965
+ /** Monotone-increasing array of beat positions in samples. */
966
+ beats: number[];
967
+ /** ISO-8601 timestamp of when detection ran. */
968
+ detected_at: string;
908
969
  }
909
970
  /** Options for composing a full scene arrangement via LLM. */
910
971
  interface ComposeSceneOptions {
@@ -1402,4 +1463,4 @@ declare function sliderToDb(slider: number): number;
1402
1463
  */
1403
1464
  declare function dbToSlider(db: number): number;
1404
1465
 
1405
- export { type BulkAddPlaceholderTrack, type ComposeProgressEvent, type ComposeProgressListener, type ComposeSceneOptions, type ComposeSceneResult, type CreateTrackOptions, DB_MAX, DB_MIN, DEFAULT_FX_CATEGORY_DETAIL, DEFAULT_FX_DRY_WET, type DeckBoundaryEvent, type DeckBoundaryListener, EMPTY_FX_DETAIL_STATE, EMPTY_FX_STATE, type ExportMidiBundleOptions, type ExportMidiBundleResult, type ExportedPluginData, FX_CATEGORIES, FX_CHAIN_ORDER, FX_DISPLAY_LABELS, FX_ENGINE_PLUGIN_NAMES, FX_PRESET_CONFIGS, type FxCategory, type FxCategoryDetailState, type FxPreset, type FxPresetConfig, type FxPresetData, type FxPresetDataEntry, FxToggleBar, type FxToggleBarProps, type GeneratorPlugin, type GeneratorType, type InstrumentDescriptor, InstrumentDrawer, type InstrumentDrawerProps, type LLMGenerationRequest, type LLMGenerationResult, type MidiClipData, type MidiWriteResult, type MixInterpolation, type MusicalContext, PLUGIN_SDK_VERSION, PanSlider, type PluginAppTool, type PluginAppToolInputSchema, type PluginAppToolResult, type PluginAudioTextureRequest, type PluginAudioTextureResult, type PluginCapabilities, type PluginChordSegment, type PluginChordTiming, type PluginConcurrentTrackInfo, type PluginDownloadOptions, PluginError, type PluginErrorCode, type PluginFileDialogOptions, type PluginFxCategoryDetailState, type PluginGenerationContext, 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 PluginTrackRuntimeState, type PluginTransportState, type PluginUIProps, type PostProcessOptions, type SDKTrackRowProps, SLIDER_UNITY, type SavePluginPresetOptions, type SceneChangeListener, type SettingDefinition, type ShufflePresetResult, SorceryProgressBar, type StemType, type TrackFxDetailState, type TrackFxState, TrackRow, type TrackStateChangeListener, type TransportEvent, type TransportEventListener, type UnsubscribeFn, VolumeSlider, calculateTimeBasedTarget, dbToSlider, sliderToDb, useSceneState };
1466
+ export { type BulkAddPlaceholderTrack, type ComposeProgressEvent, type ComposeProgressListener, type ComposeSceneOptions, type ComposeSceneResult, type CreateTrackOptions, DB_MAX, DB_MIN, DEFAULT_FX_CATEGORY_DETAIL, DEFAULT_FX_DRY_WET, type DeckBoundaryEvent, type DeckBoundaryListener, EMPTY_FX_DETAIL_STATE, EMPTY_FX_STATE, type ExportMidiBundleOptions, type ExportMidiBundleResult, type ExportedPluginData, FX_CATEGORIES, FX_CHAIN_ORDER, FX_DISPLAY_LABELS, FX_ENGINE_PLUGIN_NAMES, FX_PRESET_CONFIGS, type FxCategory, type FxCategoryDetailState, type FxPreset, type FxPresetConfig, type FxPresetData, type FxPresetDataEntry, FxToggleBar, type FxToggleBarProps, type GeneratorPlugin, type GeneratorType, type InstrumentDescriptor, InstrumentDrawer, type InstrumentDrawerProps, type LLMGenerationRequest, type LLMGenerationResult, type MidiClipData, type MidiWriteResult, type MixInterpolation, type MusicalContext, PLUGIN_SDK_VERSION, PanSlider, 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 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 PluginTrackRuntimeState, type PluginTransportState, type PluginUIProps, type PostProcessOptions, type SDKTrackRowProps, SLIDER_UNITY, type SavePluginPresetOptions, type SceneChangeListener, type SettingDefinition, type ShufflePresetResult, SorceryProgressBar, type StemType, type TrackFxDetailState, type TrackFxState, TrackRow, type TrackStateChangeListener, type TransportEvent, type TransportEventListener, type UnsubscribeFn, VolumeSlider, calculateTimeBasedTarget, dbToSlider, sliderToDb, useSceneState };