@libraz/libsonare 1.7.2 → 1.8.0
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/NOTICE +178 -0
- package/README.md +26 -203
- package/dist/_chain_config.d.ts +14 -0
- package/dist/_chain_config.d.ts.map +1 -0
- package/dist/_effects_common.d.ts +6 -0
- package/dist/_effects_common.d.ts.map +1 -0
- package/dist/_feature_validation.d.ts +8 -0
- package/dist/_feature_validation.d.ts.map +1 -0
- package/dist/_fft_options.d.ts +24 -0
- package/dist/_fft_options.d.ts.map +1 -0
- package/dist/align_take.d.ts +50 -0
- package/dist/align_take.d.ts.map +1 -0
- package/dist/analysis.d.ts +29 -5840
- package/dist/analysis.d.ts.map +1 -0
- package/dist/analysis.js +873 -722
- package/dist/analysis.js.map +1 -1
- package/dist/analysis_helpers.d.ts +9 -0
- package/dist/analysis_helpers.d.ts.map +1 -0
- package/dist/audio.d.ts +163 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/clip_page_streamer.d.ts +133 -0
- package/dist/clip_page_streamer.d.ts.map +1 -0
- package/dist/codes.d.ts +44 -0
- package/dist/codes.d.ts.map +1 -0
- package/dist/effects_mastering.d.ts +23 -0
- package/dist/effects_mastering.d.ts.map +1 -0
- package/dist/effects_note_ops.d.ts +477 -0
- package/dist/effects_note_ops.d.ts.map +1 -0
- package/dist/effects_percussive.d.ts +185 -0
- package/dist/effects_percussive.d.ts.map +1 -0
- package/dist/effects_separation.d.ts +65 -0
- package/dist/effects_separation.d.ts.map +1 -0
- package/dist/effects_spectral.d.ts +28 -0
- package/dist/effects_spectral.d.ts.map +1 -0
- package/dist/effects_timepitch.d.ts +129 -0
- package/dist/effects_timepitch.d.ts.map +1 -0
- package/dist/effects_voice_change.d.ts +53 -0
- package/dist/effects_voice_change.d.ts.map +1 -0
- package/dist/errors.d.ts +51 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/feature_core.d.ts +341 -0
- package/dist/feature_core.d.ts.map +1 -0
- package/dist/feature_decompose.d.ts +278 -0
- package/dist/feature_decompose.d.ts.map +1 -0
- package/dist/feature_inverse.d.ts +128 -0
- package/dist/feature_inverse.d.ts.map +1 -0
- package/dist/feature_loudness.d.ts +66 -0
- package/dist/feature_loudness.d.ts.map +1 -0
- package/dist/feature_music.d.ts +307 -0
- package/dist/feature_music.d.ts.map +1 -0
- package/dist/feature_pitch.d.ts +108 -0
- package/dist/feature_pitch.d.ts.map +1 -0
- package/dist/feature_resample.d.ts +16 -0
- package/dist/feature_resample.d.ts.map +1 -0
- package/dist/feature_spectral.d.ts +137 -0
- package/dist/feature_spectral.d.ts.map +1 -0
- package/dist/feature_spectrogram.d.ts +198 -0
- package/dist/feature_spectrogram.d.ts.map +1 -0
- package/dist/features.d.ts +10 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/hrtf/default.shrf +0 -0
- package/dist/index.d.ts +74 -7431
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3758 -1362
- package/dist/index.js.map +1 -1
- package/dist/instrument_types.d.ts +517 -0
- package/dist/instrument_types.d.ts.map +1 -0
- package/dist/live_audio.d.ts +35 -0
- package/dist/live_audio.d.ts.map +1 -0
- package/dist/mastering_chain.d.ts +213 -0
- package/dist/mastering_chain.d.ts.map +1 -0
- package/dist/mastering_core.d.ts +457 -0
- package/dist/mastering_core.d.ts.map +1 -0
- package/dist/mastering_dynamics.d.ts +80 -0
- package/dist/mastering_dynamics.d.ts.map +1 -0
- package/dist/metering.d.ts +287 -0
- package/dist/metering.d.ts.map +1 -0
- package/dist/mixer.d.ts +464 -0
- package/dist/mixer.d.ts.map +1 -0
- package/dist/mixing_assistant.d.ts +62 -0
- package/dist/mixing_assistant.d.ts.map +1 -0
- package/dist/mixing_oneshot.d.ts +40 -0
- package/dist/mixing_oneshot.d.ts.map +1 -0
- package/dist/module_state.d.ts +15 -0
- package/dist/module_state.d.ts.map +1 -0
- package/dist/opfs_clip_pages.d.ts +28 -0
- package/dist/opfs_clip_pages.d.ts.map +1 -0
- package/dist/playback_renderer.d.ts +128 -0
- package/dist/playback_renderer.d.ts.map +1 -0
- package/dist/polyphony.d.ts +202 -0
- package/dist/polyphony.d.ts.map +1 -0
- package/dist/project.d.ts +8 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project_class.d.ts +562 -0
- package/dist/project_class.d.ts.map +1 -0
- package/dist/project_internal.d.ts +194 -0
- package/dist/project_internal.d.ts.map +1 -0
- package/dist/project_synth.d.ts +74 -0
- package/dist/project_synth.d.ts.map +1 -0
- package/dist/project_types.d.ts +652 -0
- package/dist/project_types.d.ts.map +1 -0
- package/dist/public_types.d.ts +185 -0
- package/dist/public_types.d.ts.map +1 -0
- package/dist/public_types_acoustic.d.ts +215 -0
- package/dist/public_types_acoustic.d.ts.map +1 -0
- package/dist/public_types_mastering.d.ts +510 -0
- package/dist/public_types_mastering.d.ts.map +1 -0
- package/dist/public_types_mixing.d.ts +436 -0
- package/dist/public_types_mixing.d.ts.map +1 -0
- package/dist/public_types_music.d.ts +619 -0
- package/dist/public_types_music.d.ts.map +1 -0
- package/dist/public_types_playback.d.ts +164 -0
- package/dist/public_types_playback.d.ts.map +1 -0
- package/dist/public_types_realtime.d.ts +174 -0
- package/dist/public_types_realtime.d.ts.map +1 -0
- package/dist/public_types_repair.d.ts +424 -0
- package/dist/public_types_repair.d.ts.map +1 -0
- package/dist/public_types_spectral.d.ts +697 -0
- package/dist/public_types_spectral.d.ts.map +1 -0
- package/dist/quick_analysis.d.ts +445 -0
- package/dist/quick_analysis.d.ts.map +1 -0
- package/dist/realtime_engine.d.ts +850 -0
- package/dist/realtime_engine.d.ts.map +1 -0
- package/dist/realtime_voice_changer.d.ts +158 -0
- package/dist/realtime_voice_changer.d.ts.map +1 -0
- package/dist/repair_dereverb.d.ts +187 -0
- package/dist/repair_dereverb.d.ts.map +1 -0
- package/dist/repair_impulsive.d.ts +186 -0
- package/dist/repair_impulsive.d.ts.map +1 -0
- package/dist/repair_noise.d.ts +239 -0
- package/dist/repair_noise.d.ts.map +1 -0
- package/dist/repair_trim.d.ts +123 -0
- package/dist/repair_trim.d.ts.map +1 -0
- package/dist/sample_bank.d.ts +84 -0
- package/dist/sample_bank.d.ts.map +1 -0
- package/dist/scale.d.ts +10 -0
- package/dist/scale.d.ts.map +1 -0
- package/dist/schemas/mixer-scene.schema.json +393 -0
- package/dist/schemas/playback-renderer-config.schema.json +392 -0
- package/dist/sonare-analysis.d.ts +8 -0
- package/dist/sonare-analysis.js +2 -2
- package/dist/sonare-analysis.wasm +0 -0
- package/dist/sonare.d.ts +3909 -0
- package/dist/sonare.js +2 -2
- package/dist/sonare.wasm +0 -0
- package/dist/stream_analyzer.d.ts +163 -0
- package/dist/stream_analyzer.d.ts.map +1 -0
- package/dist/stream_types.d.ts +214 -0
- package/dist/stream_types.d.ts.map +1 -0
- package/dist/streaming_mixing.d.ts +6 -0
- package/dist/streaming_mixing.d.ts.map +1 -0
- package/dist/streaming_processors.d.ts +335 -0
- package/dist/streaming_processors.d.ts.map +1 -0
- package/dist/transcribe.d.ts +77 -0
- package/dist/transcribe.d.ts.map +1 -0
- package/dist/validation.d.ts +140 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/web_midi.d.ts +77 -0
- package/dist/web_midi.d.ts.map +1 -0
- package/dist/worker.d.ts +5 -48
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +94 -41
- package/dist/worker.js.map +1 -1
- package/dist/worker_client.d.ts +96 -0
- package/dist/worker_client.d.ts.map +1 -0
- package/dist/worker_protocol.d.ts +43 -0
- package/dist/worker_protocol.d.ts.map +1 -0
- package/dist/worklet/audio_types.d.ts +21 -0
- package/dist/worklet/audio_types.d.ts.map +1 -0
- package/dist/worklet/engine-automation.d.ts +29 -0
- package/dist/worklet/engine-automation.d.ts.map +1 -0
- package/dist/worklet/engine-capture-facade.d.ts +35 -0
- package/dist/worklet/engine-capture-facade.d.ts.map +1 -0
- package/dist/worklet/engine-clips.d.ts +23 -0
- package/dist/worklet/engine-clips.d.ts.map +1 -0
- package/dist/worklet/engine-markers.d.ts +40 -0
- package/dist/worklet/engine-markers.d.ts.map +1 -0
- package/dist/worklet/engine-mixer-facade.d.ts +128 -0
- package/dist/worklet/engine-mixer-facade.d.ts.map +1 -0
- package/dist/worklet/engine-node.d.ts +81 -0
- package/dist/worklet/engine-node.d.ts.map +1 -0
- package/dist/worklet/engine-offline.d.ts +81 -0
- package/dist/worklet/engine-offline.d.ts.map +1 -0
- package/dist/worklet/engine-options.d.ts +12 -0
- package/dist/worklet/engine-options.d.ts.map +1 -0
- package/dist/worklet/engine-parameter-facade.d.ts +106 -0
- package/dist/worklet/engine-parameter-facade.d.ts.map +1 -0
- package/dist/worklet/engine-processor.d.ts +68 -0
- package/dist/worklet/engine-processor.d.ts.map +1 -0
- package/dist/worklet/engine-register.d.ts +2 -0
- package/dist/worklet/engine-register.d.ts.map +1 -0
- package/dist/worklet/engine-strips.d.ts +73 -0
- package/dist/worklet/engine-strips.d.ts.map +1 -0
- package/dist/worklet/engine-sync.d.ts +37 -0
- package/dist/worklet/engine-sync.d.ts.map +1 -0
- package/dist/worklet/engine-tempo-facade.d.ts +48 -0
- package/dist/worklet/engine-tempo-facade.d.ts.map +1 -0
- package/dist/worklet/engine.d.ts +397 -0
- package/dist/worklet/engine.d.ts.map +1 -0
- package/dist/worklet/guards.d.ts +47 -0
- package/dist/worklet/guards.d.ts.map +1 -0
- package/dist/worklet/messages.d.ts +710 -0
- package/dist/worklet/messages.d.ts.map +1 -0
- package/dist/worklet/mixer-processor.d.ts +46 -0
- package/dist/worklet/mixer-processor.d.ts.map +1 -0
- package/dist/worklet/playback-processor.d.ts +62 -0
- package/dist/worklet/playback-processor.d.ts.map +1 -0
- package/dist/worklet/protocol.d.ts +323 -0
- package/dist/worklet/protocol.d.ts.map +1 -0
- package/dist/worklet/voice-changer-processor.d.ts +41 -0
- package/dist/worklet/voice-changer-processor.d.ts.map +1 -0
- package/dist/worklet.d.ts +16 -2515
- package/dist/worklet.d.ts.map +1 -0
- package/dist/worklet.js +2763 -501
- package/dist/worklet.js.map +1 -1
- package/package.json +23 -12
- package/src/_effects_common.ts +17 -0
- package/src/_feature_validation.ts +34 -0
- package/src/_fft_options.ts +39 -0
- package/src/align_take.ts +64 -0
- package/src/analysis.ts +56 -3
- package/src/analysis_helpers.ts +7 -0
- package/src/audio.ts +106 -3
- package/src/codes.ts +39 -2
- package/src/effects_mastering.ts +97 -22
- package/src/effects_note_ops.ts +635 -0
- package/src/effects_percussive.ts +217 -0
- package/src/effects_separation.ts +150 -0
- package/src/effects_spectral.ts +60 -0
- package/src/effects_timepitch.ts +377 -0
- package/src/errors.ts +23 -1
- package/src/feature_core.ts +127 -2
- package/src/feature_decompose.ts +633 -0
- package/src/feature_inverse.ts +454 -0
- package/src/feature_loudness.ts +125 -0
- package/src/feature_music.ts +107 -14
- package/src/feature_pitch.ts +96 -1
- package/src/feature_spectral.ts +16 -611
- package/src/feature_spectrogram.ts +63 -450
- package/src/features.ts +36 -22
- package/src/index.ts +282 -30
- package/src/instrument_types.ts +645 -0
- package/src/live_audio.ts +27 -1
- package/src/mastering_chain.ts +184 -0
- package/src/mastering_core.ts +346 -32
- package/src/mastering_dynamics.ts +22 -11
- package/src/metering.ts +67 -24
- package/src/mixer.ts +212 -3
- package/src/mixing_assistant.ts +138 -0
- package/src/mixing_oneshot.ts +10 -5
- package/src/module_state.ts +24 -2
- package/src/playback_renderer.ts +252 -0
- package/src/polyphony.ts +279 -0
- package/src/project.ts +61 -24
- package/src/project_class.ts +450 -27
- package/src/project_internal.ts +149 -42
- package/src/project_synth.ts +67 -1
- package/src/project_types.ts +268 -270
- package/src/public_types.ts +122 -3
- package/src/public_types_acoustic.ts +112 -3
- package/src/public_types_mastering.ts +254 -73
- package/src/public_types_mixing.ts +363 -1
- package/src/public_types_music.ts +312 -2
- package/src/public_types_playback.ts +195 -0
- package/src/public_types_realtime.ts +39 -7
- package/src/public_types_repair.ts +446 -0
- package/src/public_types_spectral.ts +487 -1
- package/src/quick_analysis.ts +203 -26
- package/src/realtime_engine.ts +711 -28
- package/src/realtime_voice_changer.ts +55 -1
- package/src/repair_dereverb.ts +299 -0
- package/src/repair_impulsive.ts +395 -0
- package/src/repair_noise.ts +425 -0
- package/src/repair_trim.ts +226 -0
- package/src/sample_bank.ts +113 -0
- package/src/sonare.js.d.ts +1122 -30
- package/src/stream_analyzer.ts +36 -4
- package/src/stream_types.ts +37 -0
- package/src/streaming_mixing.ts +1 -1
- package/src/streaming_processors.ts +194 -10
- package/src/transcribe.ts +89 -0
- package/src/validation.ts +285 -11
- package/src/web_midi.ts +1 -6
- package/src/worker.ts +18 -2
- package/src/worklet/audio_types.ts +37 -0
- package/src/worklet/engine-mixer-facade.ts +444 -10
- package/src/worklet/engine-node.ts +78 -26
- package/src/worklet/engine-offline.ts +14 -8
- package/src/worklet/engine-parameter-facade.ts +21 -0
- package/src/worklet/engine-processor.ts +272 -83
- package/src/worklet/engine-register.ts +32 -18
- package/src/worklet/engine-strips.ts +280 -9
- package/src/worklet/engine-sync.ts +14 -6
- package/src/worklet/engine.ts +365 -31
- package/src/worklet/guards.ts +140 -44
- package/src/worklet/messages.ts +227 -2
- package/src/worklet/mixer-processor.ts +109 -47
- package/src/worklet/playback-processor.ts +300 -0
- package/src/worklet/protocol.ts +53 -3
- package/src/worklet/voice-changer-processor.ts +17 -11
- package/src/worklet.ts +17 -0
- package/src/effects_transform.ts +0 -718
- package/src/mastering_repair.ts +0 -273
|
@@ -0,0 +1,710 @@
|
|
|
1
|
+
import type { EngineAutomationPoint, EngineBus, EngineCaptureStatus, EngineClip, EngineMarker, EngineMetronomeConfig, EngineMidiClipSchedule, EngineParameterInfo, EngineTempoSegment, EngineTimeSignatureSegment, EngineTrackLane, EngineTransportState, PlaybackDiagnostics, PlaybackRendererConfig, RealtimeVoiceChangerConfigInput, RealtimeVoiceChangerPodConfig } from '../index';
|
|
2
|
+
import type { AutomationCurve } from '../public_types';
|
|
3
|
+
import type { SonareEngineCommandRecord, SonareEngineTelemetryRecord, SonareWorkletMeterSnapshot, SonareWorkletSpectrumSnapshot } from './protocol';
|
|
4
|
+
export interface SonareWorkletProcessorOptions {
|
|
5
|
+
sceneJson: string;
|
|
6
|
+
sampleRate?: number;
|
|
7
|
+
blockSize?: number;
|
|
8
|
+
stripCount?: number;
|
|
9
|
+
meterIntervalFrames?: number;
|
|
10
|
+
meterSharedBuffer?: SharedArrayBuffer;
|
|
11
|
+
meterRingCapacity?: number;
|
|
12
|
+
spectrumIntervalFrames?: number;
|
|
13
|
+
spectrumBands?: number;
|
|
14
|
+
spectrumSharedBuffer?: SharedArrayBuffer;
|
|
15
|
+
spectrumRingCapacity?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface SonareRealtimeEngineWorkletProcessorOptions {
|
|
18
|
+
wasmBinary?: ArrayBuffer | Uint8Array;
|
|
19
|
+
initialSyncMessages?: SonareEngineSyncMessage[];
|
|
20
|
+
initialCommands?: SonareEngineCommandRecord[];
|
|
21
|
+
sampleRate?: number;
|
|
22
|
+
blockSize?: number;
|
|
23
|
+
channelCount?: number;
|
|
24
|
+
meterIntervalFrames?: number;
|
|
25
|
+
commandSharedBuffer?: SharedArrayBuffer;
|
|
26
|
+
commandRingCapacity?: number;
|
|
27
|
+
telemetrySharedBuffer?: SharedArrayBuffer;
|
|
28
|
+
telemetryRingCapacity?: number;
|
|
29
|
+
meterSharedBuffer?: SharedArrayBuffer;
|
|
30
|
+
meterRingCapacity?: number;
|
|
31
|
+
scopeIntervalFrames?: number;
|
|
32
|
+
scopeBands?: number;
|
|
33
|
+
scopeSharedBuffer?: SharedArrayBuffer;
|
|
34
|
+
scopeRingCapacity?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Lock-free SPSC queue for clip-page cache misses. Supplying this is required
|
|
37
|
+
* for realtime-safe OPFS streaming: it avoids both embind object creation and
|
|
38
|
+
* postMessage structured cloning from AudioWorklet process().
|
|
39
|
+
*/
|
|
40
|
+
clipPageRequestSharedBuffer?: SharedArrayBuffer;
|
|
41
|
+
clipPageRequestRingCapacity?: number;
|
|
42
|
+
/** Lock-free worklet-to-main-thread MIDI-1 output ring. */
|
|
43
|
+
externalMidiSharedBuffer?: SharedArrayBuffer;
|
|
44
|
+
externalMidiRingCapacity?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Route the PFL/AFL cue bus to the processor's SECOND output instead of
|
|
47
|
+
* folding it into the program output. Off by default, so an existing
|
|
48
|
+
* single-output host keeps its current mix sample for sample. The node must
|
|
49
|
+
* be constructed with two outputs for the cue to be audible.
|
|
50
|
+
*/
|
|
51
|
+
cueOutput?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface SonareRealtimeVoiceChangerWorkletProcessorOptions {
|
|
54
|
+
preset?: RealtimeVoiceChangerConfigInput;
|
|
55
|
+
sampleRate?: number;
|
|
56
|
+
blockSize?: number;
|
|
57
|
+
channelCount?: number;
|
|
58
|
+
}
|
|
59
|
+
export interface SonareRealtimeVoiceChangerSetConfigMessage {
|
|
60
|
+
type: 'setConfig';
|
|
61
|
+
/** Pre-normalized by the main thread; never JSON parsed in the worklet. */
|
|
62
|
+
config: RealtimeVoiceChangerPodConfig;
|
|
63
|
+
}
|
|
64
|
+
export interface SonareRealtimeVoiceChangerResetMessage {
|
|
65
|
+
type: 'reset';
|
|
66
|
+
}
|
|
67
|
+
export interface SonareRealtimeVoiceChangerDestroyMessage {
|
|
68
|
+
type: 'destroy';
|
|
69
|
+
}
|
|
70
|
+
export type SonareRealtimeVoiceChangerMessage = SonareRealtimeVoiceChangerSetConfigMessage | SonareRealtimeVoiceChangerResetMessage | SonareRealtimeVoiceChangerDestroyMessage;
|
|
71
|
+
export interface SonarePlaybackWorkletProcessorOptions {
|
|
72
|
+
/** Renderer configuration; parsed once, in the processor constructor. Default `{}`. */
|
|
73
|
+
config?: PlaybackRendererConfig | string;
|
|
74
|
+
/**
|
|
75
|
+
* SHRF v1 bytes, required for a headphones target (e.g. the package asset
|
|
76
|
+
* `./hrtf/default.shrf`). Copied into the renderer at construction.
|
|
77
|
+
*/
|
|
78
|
+
hrtf?: ArrayBuffer | Uint8Array;
|
|
79
|
+
/** Largest render quantum the processor accepts. Default 128. */
|
|
80
|
+
maxBlockSize?: number;
|
|
81
|
+
/** Defaults to the AudioWorkletGlobalScope `sampleRate`, then 48000. */
|
|
82
|
+
sampleRate?: number;
|
|
83
|
+
}
|
|
84
|
+
export interface SonarePlaybackNodeOptions extends SonarePlaybackWorkletProcessorOptions {
|
|
85
|
+
processorName?: string;
|
|
86
|
+
nodeFactory?: (context: BaseAudioContext, processorName: string, options: AudioWorkletNodeOptions) => AudioWorkletNode;
|
|
87
|
+
}
|
|
88
|
+
export interface SonarePlaybackConfigMessage {
|
|
89
|
+
type: 'config';
|
|
90
|
+
/** A complete configuration document, serialized on the main thread. */
|
|
91
|
+
config: string;
|
|
92
|
+
}
|
|
93
|
+
export interface SonarePlaybackOrientationMessage {
|
|
94
|
+
type: 'orientation';
|
|
95
|
+
/** Degrees; see `PlaybackRenderer.setHeadOrientation`. */
|
|
96
|
+
yaw: number;
|
|
97
|
+
pitch?: number;
|
|
98
|
+
roll?: number;
|
|
99
|
+
}
|
|
100
|
+
/** Clears the pipeline after a seek; the handler runs between render quanta. */
|
|
101
|
+
export interface SonarePlaybackResetMessage {
|
|
102
|
+
type: 'reset';
|
|
103
|
+
}
|
|
104
|
+
/** Requests a {@link SonarePlaybackDiagnosticsReplyMessage}. */
|
|
105
|
+
export interface SonarePlaybackDiagnosticsRequestMessage {
|
|
106
|
+
type: 'diagnostics';
|
|
107
|
+
}
|
|
108
|
+
export interface SonarePlaybackDestroyMessage {
|
|
109
|
+
type: 'destroy';
|
|
110
|
+
}
|
|
111
|
+
export type SonarePlaybackMessage = SonarePlaybackConfigMessage | SonarePlaybackOrientationMessage | SonarePlaybackResetMessage | SonarePlaybackDiagnosticsRequestMessage | SonarePlaybackDestroyMessage;
|
|
112
|
+
/** The renderer's diagnostics plus the worklet's own block counter. */
|
|
113
|
+
export interface SonarePlaybackWorkletDiagnostics extends PlaybackDiagnostics {
|
|
114
|
+
/**
|
|
115
|
+
* Render quanta whose input channel count the renderer does not accept
|
|
116
|
+
* (not 1, 2, 6 or 8 under `"auto"`; not the fixed layout's count otherwise).
|
|
117
|
+
* Each was rendered as silence on the active input layout, so the timeline
|
|
118
|
+
* still advanced.
|
|
119
|
+
*/
|
|
120
|
+
unsupported_input_blocks: number;
|
|
121
|
+
}
|
|
122
|
+
export interface SonarePlaybackDiagnosticsReplyMessage {
|
|
123
|
+
type: 'diagnostics';
|
|
124
|
+
diagnostics: SonarePlaybackWorkletDiagnostics;
|
|
125
|
+
}
|
|
126
|
+
/** Posted when a control message is refused (e.g. a changed prepare key). */
|
|
127
|
+
export interface SonarePlaybackErrorMessage {
|
|
128
|
+
type: 'error';
|
|
129
|
+
request: SonarePlaybackMessage['type'];
|
|
130
|
+
message: string;
|
|
131
|
+
}
|
|
132
|
+
export interface SonareRealtimeEngineNodeCapabilities {
|
|
133
|
+
mode: 'sab' | 'postMessage';
|
|
134
|
+
runtimeTarget: 'embind';
|
|
135
|
+
sharedArrayBuffer: boolean;
|
|
136
|
+
atomics: boolean;
|
|
137
|
+
audioWorklet: boolean;
|
|
138
|
+
/** True only when clip-page misses use the bounded SAB ring. */
|
|
139
|
+
clipPageRequestsRealtimeSafe: boolean;
|
|
140
|
+
/** True when external MIDI uses the SAB output ring rather than postMessage. */
|
|
141
|
+
externalMidiRealtimeSafe: boolean;
|
|
142
|
+
/**
|
|
143
|
+
* True when the node carries a second output fed by the PFL/AFL cue bus. When
|
|
144
|
+
* false the cue is folded into the program output, as it always was.
|
|
145
|
+
*/
|
|
146
|
+
cueOutput: boolean;
|
|
147
|
+
engineAbiVersion?: number;
|
|
148
|
+
expectedEngineAbiVersion?: number;
|
|
149
|
+
abiCompatible?: boolean;
|
|
150
|
+
degradedReason?: string;
|
|
151
|
+
readyMessage?: boolean;
|
|
152
|
+
}
|
|
153
|
+
export interface SonareRealtimeEngineNodeOptions extends SonareRealtimeEngineWorkletProcessorOptions {
|
|
154
|
+
processorName?: string;
|
|
155
|
+
moduleUrl?: string | URL;
|
|
156
|
+
mode?: 'auto' | 'sab' | 'postMessage';
|
|
157
|
+
engineAbiVersion?: number;
|
|
158
|
+
expectedEngineAbiVersion?: number;
|
|
159
|
+
requireAbiCompatible?: boolean;
|
|
160
|
+
nodeFactory?: (context: BaseAudioContext, processorName: string, options: AudioWorkletNodeOptions) => AudioWorkletNode;
|
|
161
|
+
}
|
|
162
|
+
export interface SonareEngineTransportFacade {
|
|
163
|
+
play(sampleTime?: number): boolean;
|
|
164
|
+
stop(sampleTime?: number): boolean;
|
|
165
|
+
seekPpq(ppq: number, sampleTime?: number): boolean;
|
|
166
|
+
seekSeconds(seconds: number, sampleTime?: number): boolean;
|
|
167
|
+
setTempo(bpm: number): void;
|
|
168
|
+
setTempoSegments(segments: readonly EngineTempoSegment[]): void;
|
|
169
|
+
setLoop(startPpq: number, endPpq: number, enabled?: boolean): boolean;
|
|
170
|
+
}
|
|
171
|
+
export interface SonareWorkletScheduleInsertAutomationMessage {
|
|
172
|
+
type: 'scheduleInsertAutomation';
|
|
173
|
+
stripIndex: number;
|
|
174
|
+
insertIndex: number;
|
|
175
|
+
paramId: number;
|
|
176
|
+
value: number;
|
|
177
|
+
samplePos?: number;
|
|
178
|
+
curve?: AutomationCurve;
|
|
179
|
+
}
|
|
180
|
+
export interface SonareWorkletSetMeterIntervalMessage {
|
|
181
|
+
type: 'setMeterInterval';
|
|
182
|
+
frames: number;
|
|
183
|
+
}
|
|
184
|
+
export interface SonareWorkletDestroyMessage {
|
|
185
|
+
type: 'destroy';
|
|
186
|
+
}
|
|
187
|
+
export type SonareWorkletMessage = SonareWorkletScheduleInsertAutomationMessage | SonareWorkletSetMeterIntervalMessage | SonareWorkletDestroyMessage;
|
|
188
|
+
/** One external-MIDI event delivered to the main thread, lowered to MIDI 1.0
|
|
189
|
+
* bytes ready for a Web MIDI output port. */
|
|
190
|
+
export interface SonareWorkletExternalMidiEvent {
|
|
191
|
+
/** Originating track lane, or 0xFFFFFFFF for transport/clock bytes. */
|
|
192
|
+
destinationId: number;
|
|
193
|
+
/** Sample position within the producing block. */
|
|
194
|
+
renderFrame: number;
|
|
195
|
+
/** MIDI 1.0 status + data bytes (1..3 entries). */
|
|
196
|
+
bytes: number[];
|
|
197
|
+
}
|
|
198
|
+
/** Batch of external-MIDI events posted from the worklet once per render block. */
|
|
199
|
+
export interface SonareWorkletExternalMidiMessage {
|
|
200
|
+
type: 'externalMidi';
|
|
201
|
+
events: SonareWorkletExternalMidiEvent[];
|
|
202
|
+
}
|
|
203
|
+
/** A control-plane sync message that the worklet rejected without crashing. */
|
|
204
|
+
export interface SonareEngineSyncErrorMessage {
|
|
205
|
+
type: 'syncError';
|
|
206
|
+
/**
|
|
207
|
+
* Discriminant of the rejected sync. Usually a known member, but a
|
|
208
|
+
* `sync`-prefixed type this build does not recognize is reported here too
|
|
209
|
+
* rather than dropped, so the set is open. `Record<never, never>` keeps the
|
|
210
|
+
* known members as editor completions instead of collapsing to `string`.
|
|
211
|
+
*/
|
|
212
|
+
syncType: SonareEngineSyncMessage['type'] | (string & Record<never, never>);
|
|
213
|
+
message: string;
|
|
214
|
+
}
|
|
215
|
+
export type SonareWorkletTransportMessage = SonareWorkletMeterSnapshot | SonareWorkletSpectrumSnapshot | SonareWorkletExternalMidiMessage | SonareEngineClipPageRequestMessage | SonareEngineTelemetryRecord;
|
|
216
|
+
export interface WorkletTransport {
|
|
217
|
+
postMessage?: (message: SonareWorkletTransportMessage | SonareEngineCaptureResponseMessageInternal | SonareEngineTransportResponseMessage | SonareEngineSyncErrorMessage, transfer?: Transferable[]) => void;
|
|
218
|
+
onMeter?: (meter: SonareWorkletMeterSnapshot) => void;
|
|
219
|
+
onSpectrum?: (spectrum: SonareWorkletSpectrumSnapshot) => void;
|
|
220
|
+
}
|
|
221
|
+
export interface ResolvedMetronomeConfig {
|
|
222
|
+
beatGain: number;
|
|
223
|
+
accentGain: number;
|
|
224
|
+
clickSamples: number;
|
|
225
|
+
clickSeconds: number;
|
|
226
|
+
}
|
|
227
|
+
export declare const DEFAULT_METRONOME_CONFIG: ResolvedMetronomeConfig;
|
|
228
|
+
export declare function resolveMetronomeConfig(config: EngineMetronomeConfig): ResolvedMetronomeConfig;
|
|
229
|
+
export interface SonareEngineSyncClipsMessage {
|
|
230
|
+
type: 'syncClips';
|
|
231
|
+
clips: EngineClip[];
|
|
232
|
+
}
|
|
233
|
+
export interface SonareEngineSyncClipsDeltaMessage {
|
|
234
|
+
type: 'syncClipsDelta';
|
|
235
|
+
upserts: EngineClip[];
|
|
236
|
+
removeIds: number[];
|
|
237
|
+
}
|
|
238
|
+
/** Begins a paged, pre-baked clip transfer. PCM pages follow in FIFO order. */
|
|
239
|
+
export interface SonareEngineSyncClipPageProviderMessage {
|
|
240
|
+
type: 'syncClipPageProvider';
|
|
241
|
+
clipId: number;
|
|
242
|
+
/** Omitted when an OPFS stream is primed before its clip is scheduled. */
|
|
243
|
+
clip?: EngineClip;
|
|
244
|
+
numChannels: number;
|
|
245
|
+
numSamples: number;
|
|
246
|
+
pageFrames: number;
|
|
247
|
+
}
|
|
248
|
+
/** Supplies one bounded PCM page for a pending pre-baked clip transfer. */
|
|
249
|
+
export interface SonareEngineSyncClipPageMessage {
|
|
250
|
+
type: 'syncClipPage';
|
|
251
|
+
clipId: number;
|
|
252
|
+
pageIndex: number;
|
|
253
|
+
channels: Float32Array[];
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Sets the worklet engine's clip-page look-ahead window in timeline frames, so
|
|
257
|
+
* the audio thread reports the pages it is about to read before it reads them.
|
|
258
|
+
* 0 disables the look-ahead.
|
|
259
|
+
*/
|
|
260
|
+
export interface SonareEngineSyncClipPagePrefetchFramesMessage {
|
|
261
|
+
type: 'syncClipPagePrefetchFrames';
|
|
262
|
+
frames: number;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Sets the worklet engine's concurrent time-stretch voice capacity. The
|
|
266
|
+
* capacity was already validated (and applied to the offline engine) by the
|
|
267
|
+
* caller, so the worklet side just mirrors the accepted value; the pool
|
|
268
|
+
* rebuild itself happens on the audio thread, at the next block boundary.
|
|
269
|
+
*/
|
|
270
|
+
export interface SonareEngineSyncWarpVoiceCapacityMessage {
|
|
271
|
+
type: 'syncWarpVoiceCapacity';
|
|
272
|
+
voices: number;
|
|
273
|
+
}
|
|
274
|
+
/** Evicts one page after the main-thread sliding window advances. */
|
|
275
|
+
export interface SonareEngineSyncClipPageClearMessage {
|
|
276
|
+
type: 'syncClipPageClear';
|
|
277
|
+
clipId: number;
|
|
278
|
+
pageIndex: number;
|
|
279
|
+
}
|
|
280
|
+
/** Releases a provider whose clip was removed or whose stream was closed. */
|
|
281
|
+
export interface SonareEngineSyncClipPageDestroyMessage {
|
|
282
|
+
type: 'syncClipPageDestroy';
|
|
283
|
+
clipId: number;
|
|
284
|
+
}
|
|
285
|
+
/** Makes a fully supplied paged clip visible to the audio engine. */
|
|
286
|
+
export interface SonareEngineSyncClipPageCommitMessage {
|
|
287
|
+
type: 'syncClipPageCommit';
|
|
288
|
+
clipId: number;
|
|
289
|
+
/**
|
|
290
|
+
* Clip schedule to publish with a provider that was primed before its
|
|
291
|
+
* schedule was known. The original pre-baked push path supplies it on the
|
|
292
|
+
* provider message instead.
|
|
293
|
+
*/
|
|
294
|
+
clip?: EngineClip;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* A bounded batch of page misses emitted by the AudioWorklet. The main thread
|
|
298
|
+
* resolves these from OPFS and responds with `syncClipPage`; a missing page is
|
|
299
|
+
* silent until that response arrives.
|
|
300
|
+
*/
|
|
301
|
+
export interface SonareEngineClipPageRequestMessage {
|
|
302
|
+
type: 'clipPageRequest';
|
|
303
|
+
requests: Array<{
|
|
304
|
+
clipId: number;
|
|
305
|
+
pageIndex: number;
|
|
306
|
+
}>;
|
|
307
|
+
/** Number of misses dropped because a bounded native or SAB request queue was full. */
|
|
308
|
+
dropped?: number;
|
|
309
|
+
}
|
|
310
|
+
export interface SonareEngineSyncMidiClipsMessage {
|
|
311
|
+
type: 'syncMidiClips';
|
|
312
|
+
clips: EngineMidiClipSchedule[];
|
|
313
|
+
}
|
|
314
|
+
export interface SonareEngineSyncMarkersMessage {
|
|
315
|
+
type: 'syncMarkers';
|
|
316
|
+
markers: EngineMarker[];
|
|
317
|
+
}
|
|
318
|
+
export interface SonareEngineSyncMetronomeMessage {
|
|
319
|
+
type: 'syncMetronome';
|
|
320
|
+
config: EngineMetronomeConfig;
|
|
321
|
+
}
|
|
322
|
+
export interface SonareEngineSyncAutomationMessage {
|
|
323
|
+
type: 'syncAutomation';
|
|
324
|
+
paramId: number;
|
|
325
|
+
points: EngineAutomationPoint[];
|
|
326
|
+
}
|
|
327
|
+
/** Replaces the live engine's registered custom-parameter set. */
|
|
328
|
+
export interface SonareEngineSyncParametersMessage {
|
|
329
|
+
type: 'syncParameters';
|
|
330
|
+
parameters: EngineParameterInfo[];
|
|
331
|
+
}
|
|
332
|
+
export interface SonareEngineSyncTempoMessage {
|
|
333
|
+
type: 'syncTempo';
|
|
334
|
+
bpm: number;
|
|
335
|
+
timeSignature: {
|
|
336
|
+
numerator: number;
|
|
337
|
+
denominator: number;
|
|
338
|
+
};
|
|
339
|
+
tempoSegments?: EngineTempoSegment[];
|
|
340
|
+
timeSignatureSegments?: EngineTimeSignatureSegment[];
|
|
341
|
+
}
|
|
342
|
+
export type SonareEngineSyncMixerInsertParamOverride = {
|
|
343
|
+
kind: 'track';
|
|
344
|
+
trackId: number;
|
|
345
|
+
insertIndex: number;
|
|
346
|
+
paramName: string;
|
|
347
|
+
value: number;
|
|
348
|
+
} | {
|
|
349
|
+
kind: 'bus';
|
|
350
|
+
busId: number;
|
|
351
|
+
insertIndex: number;
|
|
352
|
+
paramName: string;
|
|
353
|
+
value: number;
|
|
354
|
+
} | {
|
|
355
|
+
kind: 'master';
|
|
356
|
+
insertIndex: number;
|
|
357
|
+
paramName: string;
|
|
358
|
+
value: number;
|
|
359
|
+
};
|
|
360
|
+
export interface SonareEngineSyncMixerMessage {
|
|
361
|
+
type: 'syncMixer';
|
|
362
|
+
/** Apply only supplied sidechain bindings; preserve current mixer topology. */
|
|
363
|
+
sidechainDelta?: boolean;
|
|
364
|
+
lanes: EngineTrackLane[];
|
|
365
|
+
buses?: EngineBus[];
|
|
366
|
+
trackStrips?: Array<{
|
|
367
|
+
trackId: number;
|
|
368
|
+
sceneJson: string;
|
|
369
|
+
}>;
|
|
370
|
+
busStrips?: Array<{
|
|
371
|
+
busId: number;
|
|
372
|
+
sceneJson: string;
|
|
373
|
+
}>;
|
|
374
|
+
masterStripJson?: string;
|
|
375
|
+
/** Retained by-name insert values, applied after strip and sidechain replay. */
|
|
376
|
+
insertParamOverrides?: SonareEngineSyncMixerInsertParamOverride[];
|
|
377
|
+
/** Explicit full strip replacements that must reset retained insert state. */
|
|
378
|
+
forceInsertResets?: Array<{
|
|
379
|
+
kind: 'track';
|
|
380
|
+
trackId: number;
|
|
381
|
+
} | {
|
|
382
|
+
kind: 'bus';
|
|
383
|
+
busId: number;
|
|
384
|
+
} | {
|
|
385
|
+
kind: 'master';
|
|
386
|
+
}>;
|
|
387
|
+
/** Lane insert sidechain bindings (replayed after lanes/strips). */
|
|
388
|
+
laneSidechains?: Array<{
|
|
389
|
+
trackId: number;
|
|
390
|
+
insertIndex: number;
|
|
391
|
+
sourceTrackId: number;
|
|
392
|
+
}>;
|
|
393
|
+
/**
|
|
394
|
+
* Bus insert sidechain bindings (replayed after lanes/buses/strips).
|
|
395
|
+
* `sourceKind` is a `SonareSidechainSourceKind` ordinal (0 track / 1 bus).
|
|
396
|
+
*/
|
|
397
|
+
busSidechains?: Array<{
|
|
398
|
+
busId: number;
|
|
399
|
+
insertIndex: number;
|
|
400
|
+
sourceKind: number;
|
|
401
|
+
sourceId: number;
|
|
402
|
+
}>;
|
|
403
|
+
/** Master strip insert sidechain bindings. Same `sourceKind` convention. */
|
|
404
|
+
masterSidechains?: Array<{
|
|
405
|
+
insertIndex: number;
|
|
406
|
+
sourceKind: number;
|
|
407
|
+
sourceId: number;
|
|
408
|
+
}>;
|
|
409
|
+
}
|
|
410
|
+
export interface SonareEngineSyncCaptureMessage {
|
|
411
|
+
type: 'syncCapture';
|
|
412
|
+
bufferFrames: number;
|
|
413
|
+
channels: number;
|
|
414
|
+
source: EngineCaptureStatus['source'];
|
|
415
|
+
recordOffsetSamples: number;
|
|
416
|
+
inputMonitor: {
|
|
417
|
+
enabled: boolean;
|
|
418
|
+
gain: number;
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
export interface SonareEngineSyncTrackStripEqBandMessage {
|
|
422
|
+
type: 'syncTrackStripEqBand';
|
|
423
|
+
trackId: number;
|
|
424
|
+
bandIndex: number;
|
|
425
|
+
bandJson: string;
|
|
426
|
+
}
|
|
427
|
+
export interface SonareEngineSyncMasterStripEqBandMessage {
|
|
428
|
+
type: 'syncMasterStripEqBand';
|
|
429
|
+
bandIndex: number;
|
|
430
|
+
bandJson: string;
|
|
431
|
+
}
|
|
432
|
+
export interface SonareEngineSyncBusStripEqBandMessage {
|
|
433
|
+
type: 'syncBusStripEqBand';
|
|
434
|
+
busId: number;
|
|
435
|
+
bandIndex: number;
|
|
436
|
+
bandJson: string;
|
|
437
|
+
}
|
|
438
|
+
export interface SonareEngineSyncTrackStripInsertBypassedMessage {
|
|
439
|
+
type: 'syncTrackStripInsertBypassed';
|
|
440
|
+
trackId: number;
|
|
441
|
+
insertIndex: number;
|
|
442
|
+
bypassed: boolean;
|
|
443
|
+
resetOnBypass: boolean;
|
|
444
|
+
}
|
|
445
|
+
export interface SonareEngineSyncMasterStripInsertBypassedMessage {
|
|
446
|
+
type: 'syncMasterStripInsertBypassed';
|
|
447
|
+
insertIndex: number;
|
|
448
|
+
bypassed: boolean;
|
|
449
|
+
resetOnBypass: boolean;
|
|
450
|
+
}
|
|
451
|
+
export interface SonareEngineSyncTrackStripInsertParamByNameMessage {
|
|
452
|
+
type: 'syncTrackStripInsertParamByName';
|
|
453
|
+
trackId: number;
|
|
454
|
+
insertIndex: number;
|
|
455
|
+
paramName: string;
|
|
456
|
+
value: number;
|
|
457
|
+
}
|
|
458
|
+
export interface SonareEngineSyncMasterStripInsertParamByNameMessage {
|
|
459
|
+
type: 'syncMasterStripInsertParamByName';
|
|
460
|
+
insertIndex: number;
|
|
461
|
+
paramName: string;
|
|
462
|
+
value: number;
|
|
463
|
+
}
|
|
464
|
+
export interface SonareEngineSyncBusStripInsertParamByNameMessage {
|
|
465
|
+
type: 'syncBusStripInsertParamByName';
|
|
466
|
+
busId: number;
|
|
467
|
+
insertIndex: number;
|
|
468
|
+
paramName: string;
|
|
469
|
+
value: number;
|
|
470
|
+
}
|
|
471
|
+
export interface SonareEngineSyncBusStripInsertBypassedMessage {
|
|
472
|
+
type: 'syncBusStripInsertBypassed';
|
|
473
|
+
busId: number;
|
|
474
|
+
insertIndex: number;
|
|
475
|
+
bypassed: boolean;
|
|
476
|
+
resetOnBypass: boolean;
|
|
477
|
+
}
|
|
478
|
+
export interface SonareEngineSyncTrackStripPanMessage {
|
|
479
|
+
type: 'syncTrackStripPan';
|
|
480
|
+
trackId: number;
|
|
481
|
+
pan: number;
|
|
482
|
+
}
|
|
483
|
+
export interface SonareEngineSyncTrackStripPanLawMessage {
|
|
484
|
+
type: 'syncTrackStripPanLaw';
|
|
485
|
+
trackId: number;
|
|
486
|
+
panLaw: number;
|
|
487
|
+
}
|
|
488
|
+
export interface SonareEngineSyncTrackStripPanModeMessage {
|
|
489
|
+
type: 'syncTrackStripPanMode';
|
|
490
|
+
trackId: number;
|
|
491
|
+
panMode: number;
|
|
492
|
+
}
|
|
493
|
+
export interface SonareEngineSyncTrackStripDualPanMessage {
|
|
494
|
+
type: 'syncTrackStripDualPan';
|
|
495
|
+
trackId: number;
|
|
496
|
+
leftPan: number;
|
|
497
|
+
rightPan: number;
|
|
498
|
+
}
|
|
499
|
+
export interface SonareEngineSyncBusStripPanMessage {
|
|
500
|
+
type: 'syncBusStripPan';
|
|
501
|
+
busId: number;
|
|
502
|
+
pan: number;
|
|
503
|
+
}
|
|
504
|
+
export interface SonareEngineSyncBusStripPanLawMessage {
|
|
505
|
+
type: 'syncBusStripPanLaw';
|
|
506
|
+
busId: number;
|
|
507
|
+
panLaw: number;
|
|
508
|
+
}
|
|
509
|
+
export interface SonareEngineSyncBusStripPanModeMessage {
|
|
510
|
+
type: 'syncBusStripPanMode';
|
|
511
|
+
busId: number;
|
|
512
|
+
panMode: number;
|
|
513
|
+
}
|
|
514
|
+
export interface SonareEngineSyncBusStripDualPanMessage {
|
|
515
|
+
type: 'syncBusStripDualPan';
|
|
516
|
+
busId: number;
|
|
517
|
+
leftPan: number;
|
|
518
|
+
rightPan: number;
|
|
519
|
+
}
|
|
520
|
+
export interface SonareEngineSyncTrackStripChannelDelaySamplesMessage {
|
|
521
|
+
type: 'syncTrackStripChannelDelaySamples';
|
|
522
|
+
trackId: number;
|
|
523
|
+
delaySamples: number;
|
|
524
|
+
}
|
|
525
|
+
export interface SonareEngineSyncBuiltinInstrumentMessage {
|
|
526
|
+
type: 'syncBuiltinInstrument';
|
|
527
|
+
destinationId: number;
|
|
528
|
+
config: {
|
|
529
|
+
destinationId?: number;
|
|
530
|
+
} & Record<string, unknown>;
|
|
531
|
+
}
|
|
532
|
+
export interface SonareEngineSyncSynthInstrumentMessage {
|
|
533
|
+
type: 'syncSynthInstrument';
|
|
534
|
+
destinationId: number;
|
|
535
|
+
patch: Record<string, unknown> | string;
|
|
536
|
+
}
|
|
537
|
+
export interface SonareEngineSyncSf2InstrumentMessage {
|
|
538
|
+
type: 'syncSf2Instrument';
|
|
539
|
+
destinationId: number;
|
|
540
|
+
config: {
|
|
541
|
+
destinationId?: number;
|
|
542
|
+
gain?: number;
|
|
543
|
+
polyphony?: number;
|
|
544
|
+
preferModelForModeledFamilies?: boolean;
|
|
545
|
+
clearBankRig?: boolean;
|
|
546
|
+
gsEfxRealization?: 'modern' | 'classic';
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
export interface SonareEngineSyncLoadSoundFontMessage {
|
|
550
|
+
type: 'syncLoadSoundFont';
|
|
551
|
+
data: Uint8Array;
|
|
552
|
+
}
|
|
553
|
+
export interface SonareEngineSyncMidiFxMessage {
|
|
554
|
+
type: 'syncMidiFx' | 'syncClearMidiFx';
|
|
555
|
+
destinationId: number;
|
|
556
|
+
/** Engine MIDI-FX config JSON; present for 'syncMidiFx', absent for a clear. */
|
|
557
|
+
configJson?: string;
|
|
558
|
+
}
|
|
559
|
+
export interface SonareEngineSyncMidiNoteMessage {
|
|
560
|
+
type: 'syncMidiNoteOn' | 'syncMidiNoteOff';
|
|
561
|
+
destinationId: number;
|
|
562
|
+
group: number;
|
|
563
|
+
channel: number;
|
|
564
|
+
note: number;
|
|
565
|
+
velocity: number;
|
|
566
|
+
renderFrame: number;
|
|
567
|
+
}
|
|
568
|
+
export interface SonareEngineSyncMidiCcMessage {
|
|
569
|
+
type: 'syncMidiCc';
|
|
570
|
+
destinationId: number;
|
|
571
|
+
group: number;
|
|
572
|
+
channel: number;
|
|
573
|
+
controller: number;
|
|
574
|
+
value: number;
|
|
575
|
+
renderFrame: number;
|
|
576
|
+
}
|
|
577
|
+
export interface SonareEngineSyncMidiUmpMessage {
|
|
578
|
+
type: 'syncMidiUmp';
|
|
579
|
+
destinationId: number;
|
|
580
|
+
word0: number;
|
|
581
|
+
renderFrame: number;
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* One of the three per-note expression dimensions, addressed to a destination.
|
|
585
|
+
* `data0`/`data1` carry the dimension's own payload the way the live-input
|
|
586
|
+
* message beside this one does: bend14 / 0, pressure / 0, or note / pressure.
|
|
587
|
+
* A bend is 14-bit, which is why these do not ride the 7-bit CC message.
|
|
588
|
+
*/
|
|
589
|
+
export interface SonareEngineSyncMidiExpressionMessage {
|
|
590
|
+
type: 'syncMidiPitchBend' | 'syncMidiChannelPressure' | 'syncMidiPolyPressure';
|
|
591
|
+
destinationId: number;
|
|
592
|
+
group: number;
|
|
593
|
+
channel: number;
|
|
594
|
+
data0: number;
|
|
595
|
+
data1: number;
|
|
596
|
+
renderFrame: number;
|
|
597
|
+
}
|
|
598
|
+
export interface SonareEngineSyncMidiSysexMessage {
|
|
599
|
+
type: 'syncMidiSysex';
|
|
600
|
+
destinationId: number;
|
|
601
|
+
data: Uint8Array;
|
|
602
|
+
renderFrame: number;
|
|
603
|
+
}
|
|
604
|
+
export interface SonareEngineSyncMidiPanicMessage {
|
|
605
|
+
type: 'syncMidiPanic';
|
|
606
|
+
renderFrame: number;
|
|
607
|
+
}
|
|
608
|
+
export interface SonareEngineSyncMidiDestinationExternalMessage {
|
|
609
|
+
type: 'syncMidiDestinationExternal';
|
|
610
|
+
destinationId: number;
|
|
611
|
+
external: boolean;
|
|
612
|
+
}
|
|
613
|
+
export interface SonareEngineSyncExternalMidiClockMessage {
|
|
614
|
+
type: 'syncExternalMidiClock';
|
|
615
|
+
enabled: boolean;
|
|
616
|
+
}
|
|
617
|
+
export interface SonareEngineSyncMidiInputSourceMessage {
|
|
618
|
+
type: 'syncMidiInputSource' | 'syncClearMidiInputSource';
|
|
619
|
+
destinationId?: number;
|
|
620
|
+
}
|
|
621
|
+
export interface SonareEngineSyncMidiCcBindingMessage {
|
|
622
|
+
type: 'syncMidiCcBinding';
|
|
623
|
+
channel: number;
|
|
624
|
+
controller: number;
|
|
625
|
+
paramId: number;
|
|
626
|
+
minValue: number;
|
|
627
|
+
maxValue: number;
|
|
628
|
+
}
|
|
629
|
+
export interface SonareEngineSyncMidiInputEventMessage {
|
|
630
|
+
type: 'syncMidiInputNoteOn' | 'syncMidiInputNoteOff' | 'syncMidiInputCc' | 'syncMidiInputPitchBend' | 'syncMidiInputChannelPressure' | 'syncMidiInputPolyPressure';
|
|
631
|
+
group: number;
|
|
632
|
+
channel: number;
|
|
633
|
+
data0: number;
|
|
634
|
+
data1: number;
|
|
635
|
+
portTimeSamples: number;
|
|
636
|
+
}
|
|
637
|
+
/** Releases the realtime engine and all worklet-owned clip buffers. */
|
|
638
|
+
export interface SonareEngineDestroyMessage {
|
|
639
|
+
type: 'destroy';
|
|
640
|
+
}
|
|
641
|
+
export type SonareEngineInstrumentSyncMessage = SonareEngineSyncBuiltinInstrumentMessage | SonareEngineSyncSynthInstrumentMessage | SonareEngineSyncSf2InstrumentMessage | SonareEngineSyncLoadSoundFontMessage | SonareEngineSyncMidiFxMessage;
|
|
642
|
+
export type SonareEngineSyncMessage = SonareEngineSyncClipsMessage | SonareEngineSyncClipsDeltaMessage | SonareEngineSyncClipPageProviderMessage | SonareEngineSyncClipPageMessage | SonareEngineSyncClipPageClearMessage | SonareEngineSyncClipPagePrefetchFramesMessage | SonareEngineSyncWarpVoiceCapacityMessage | SonareEngineSyncClipPageCommitMessage | SonareEngineSyncClipPageDestroyMessage | SonareEngineSyncMidiClipsMessage | SonareEngineSyncMarkersMessage | SonareEngineSyncMetronomeMessage | SonareEngineSyncAutomationMessage | SonareEngineSyncParametersMessage | SonareEngineSyncTempoMessage | SonareEngineSyncMixerMessage | SonareEngineSyncCaptureMessage | SonareEngineSyncTrackStripEqBandMessage | SonareEngineSyncMasterStripEqBandMessage | SonareEngineSyncBusStripEqBandMessage | SonareEngineSyncTrackStripInsertBypassedMessage | SonareEngineSyncMasterStripInsertBypassedMessage | SonareEngineSyncTrackStripInsertParamByNameMessage | SonareEngineSyncMasterStripInsertParamByNameMessage | SonareEngineSyncBusStripInsertParamByNameMessage | SonareEngineSyncBusStripInsertBypassedMessage | SonareEngineSyncTrackStripPanMessage | SonareEngineSyncTrackStripPanLawMessage | SonareEngineSyncTrackStripPanModeMessage | SonareEngineSyncTrackStripDualPanMessage | SonareEngineSyncBusStripPanMessage | SonareEngineSyncBusStripPanLawMessage | SonareEngineSyncBusStripPanModeMessage | SonareEngineSyncBusStripDualPanMessage | SonareEngineSyncTrackStripChannelDelaySamplesMessage | SonareEngineSyncBuiltinInstrumentMessage | SonareEngineSyncSynthInstrumentMessage | SonareEngineSyncSf2InstrumentMessage | SonareEngineSyncLoadSoundFontMessage | SonareEngineSyncMidiFxMessage | SonareEngineSyncMidiNoteMessage | SonareEngineSyncMidiCcMessage | SonareEngineSyncMidiUmpMessage | SonareEngineSyncMidiExpressionMessage | SonareEngineSyncMidiSysexMessage | SonareEngineSyncMidiPanicMessage | SonareEngineSyncMidiDestinationExternalMessage | SonareEngineSyncExternalMidiClockMessage | SonareEngineSyncMidiInputSourceMessage | SonareEngineSyncMidiCcBindingMessage | SonareEngineSyncMidiInputEventMessage | SonareEngineDestroyMessage;
|
|
643
|
+
export interface WorkletPort {
|
|
644
|
+
postMessage?: (message: unknown, transfer?: Transferable[]) => void;
|
|
645
|
+
onmessage?: (event: {
|
|
646
|
+
data: unknown;
|
|
647
|
+
}) => void;
|
|
648
|
+
addEventListener?: (type: 'message', listener: (event: {
|
|
649
|
+
data: unknown;
|
|
650
|
+
}) => void) => void;
|
|
651
|
+
start?: () => void;
|
|
652
|
+
}
|
|
653
|
+
export interface SonareEngineCaptureRequestMessage {
|
|
654
|
+
type: 'captureRequest';
|
|
655
|
+
requestId: number;
|
|
656
|
+
op: 'status' | 'read' | 'reset';
|
|
657
|
+
}
|
|
658
|
+
/**
|
|
659
|
+
* Public capture response shape retained for source compatibility.
|
|
660
|
+
*
|
|
661
|
+
* The worklet wire protocol is stricter than this legacy structural type; use
|
|
662
|
+
* `SonareEngineCaptureResponseMessageInternal` inside the implementation.
|
|
663
|
+
*/
|
|
664
|
+
export interface SonareEngineCaptureResponseMessage {
|
|
665
|
+
type: 'captureResponse';
|
|
666
|
+
requestId: number;
|
|
667
|
+
ok: boolean;
|
|
668
|
+
status?: EngineCaptureStatus;
|
|
669
|
+
channels?: Float32Array[] | number[][];
|
|
670
|
+
error?: string;
|
|
671
|
+
}
|
|
672
|
+
interface SonareEngineCaptureStatusResponseMessageInternal {
|
|
673
|
+
type: 'captureResponse';
|
|
674
|
+
requestId: number;
|
|
675
|
+
ok: true;
|
|
676
|
+
status: EngineCaptureStatus;
|
|
677
|
+
}
|
|
678
|
+
interface SonareEngineCaptureReadResponseMessageInternal {
|
|
679
|
+
type: 'captureResponse';
|
|
680
|
+
requestId: number;
|
|
681
|
+
ok: true;
|
|
682
|
+
channels: Float32Array[];
|
|
683
|
+
}
|
|
684
|
+
interface SonareEngineCaptureResetResponseMessageInternal {
|
|
685
|
+
type: 'captureResponse';
|
|
686
|
+
requestId: number;
|
|
687
|
+
ok: true;
|
|
688
|
+
}
|
|
689
|
+
interface SonareEngineCaptureErrorResponseMessageInternal {
|
|
690
|
+
type: 'captureResponse';
|
|
691
|
+
requestId: number;
|
|
692
|
+
ok: false;
|
|
693
|
+
error: string;
|
|
694
|
+
}
|
|
695
|
+
/** Strict wire response type used only by the worklet implementation. */
|
|
696
|
+
export type SonareEngineCaptureResponseMessageInternal = SonareEngineCaptureStatusResponseMessageInternal | SonareEngineCaptureReadResponseMessageInternal | SonareEngineCaptureResetResponseMessageInternal | SonareEngineCaptureErrorResponseMessageInternal;
|
|
697
|
+
export interface SonareEngineTransportRequestMessage {
|
|
698
|
+
type: 'transportRequest';
|
|
699
|
+
requestId: number;
|
|
700
|
+
op: 'state';
|
|
701
|
+
}
|
|
702
|
+
export interface SonareEngineTransportResponseMessage {
|
|
703
|
+
type: 'transportResponse';
|
|
704
|
+
requestId: number;
|
|
705
|
+
ok: boolean;
|
|
706
|
+
state?: EngineTransportState;
|
|
707
|
+
error?: string;
|
|
708
|
+
}
|
|
709
|
+
export {};
|
|
710
|
+
//# sourceMappingURL=messages.d.ts.map
|