@libraz/libsonare 1.7.2 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +7 -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 +874 -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 +502 -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 +134 -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 +4173 -1621
- 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 +483 -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 +654 -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 +528 -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 +165 -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 +893 -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 +3945 -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 +340 -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 +164 -0
- package/dist/worklet/engine-mixer-facade.d.ts.map +1 -0
- package/dist/worklet/engine-node.d.ts +83 -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 +72 -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 +75 -0
- package/dist/worklet/engine-strips.d.ts.map +1 -0
- package/dist/worklet/engine-sync.d.ts +39 -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 +418 -0
- package/dist/worklet/engine.d.ts.map +1 -0
- package/dist/worklet/guards.d.ts +53 -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 +331 -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 +3200 -541
- package/dist/worklet.js.map +1 -1
- package/package.json +23 -12
- package/src/_effects_common.ts +47 -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 +101 -22
- package/src/effects_note_ops.ts +683 -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 +388 -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 +288 -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 +441 -32
- package/src/mastering_dynamics.ts +22 -11
- package/src/metering.ts +67 -24
- package/src/mixer.ts +251 -22
- 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 +271 -271
- package/src/public_types.ts +122 -3
- package/src/public_types_acoustic.ts +112 -3
- package/src/public_types_mastering.ts +275 -73
- package/src/public_types_mixing.ts +363 -1
- package/src/public_types_music.ts +312 -2
- package/src/public_types_playback.ts +196 -0
- package/src/public_types_realtime.ts +39 -7
- package/src/public_types_repair.ts +446 -0
- package/src/public_types_spectral.ts +491 -5
- package/src/quick_analysis.ts +203 -26
- package/src/realtime_engine.ts +773 -34
- 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 +1158 -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 +202 -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 +800 -32
- package/src/worklet/engine-node.ts +99 -29
- package/src/worklet/engine-offline.ts +14 -8
- package/src/worklet/engine-parameter-facade.ts +21 -0
- package/src/worklet/engine-processor.ts +332 -93
- package/src/worklet/engine-register.ts +32 -18
- package/src/worklet/engine-strips.ts +275 -9
- package/src/worklet/engine-sync.ts +20 -7
- package/src/worklet/engine.ts +394 -48
- package/src/worklet/guards.ts +195 -44
- package/src/worklet/messages.ts +229 -2
- package/src/worklet/mixer-processor.ts +117 -48
- package/src/worklet/playback-processor.ts +300 -0
- package/src/worklet/protocol.ts +82 -11
- 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,81 @@
|
|
|
1
|
+
import type { EngineCaptureStatus, EngineMarker, EngineTrackLane, RealtimeEngine } from '../index';
|
|
2
|
+
import type { SonareEngineSyncCaptureMessage, SonareEngineTransportFacade } from './messages';
|
|
3
|
+
/** Capture configuration options accepted by the engine's `configureCapture`. */
|
|
4
|
+
export interface CaptureOptions {
|
|
5
|
+
bufferFrames: number;
|
|
6
|
+
channels?: number;
|
|
7
|
+
source?: EngineCaptureStatus['source'];
|
|
8
|
+
recordOffsetSamples?: number;
|
|
9
|
+
inputMonitor?: {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
gain?: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Normalizes capture options into the resolved config carried by the
|
|
16
|
+
* `syncCapture` message, applying defaults and refusing a non-integer count.
|
|
17
|
+
*
|
|
18
|
+
* @param options Raw capture options.
|
|
19
|
+
* @param defaultChannels Channel count to use when `options.channels` is unset.
|
|
20
|
+
* @throws RangeError if a frame count, channel count or offset is not an integer.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildCaptureConfig(options: CaptureOptions, defaultChannels: number): Omit<SonareEngineSyncCaptureMessage, 'type'>;
|
|
23
|
+
/**
|
|
24
|
+
* Collaborator surface the transport facade needs from the owning engine: the
|
|
25
|
+
* realtime node (sample-accurate command transport), the offline engine it
|
|
26
|
+
* mirrors, and the tempo/loop setters plus playing-state bookkeeping.
|
|
27
|
+
*/
|
|
28
|
+
export interface EngineTransportContext {
|
|
29
|
+
readonly sampleRate: number;
|
|
30
|
+
realtimeNode: {
|
|
31
|
+
play(sampleTime?: number): boolean;
|
|
32
|
+
stop(sampleTime?: number): boolean;
|
|
33
|
+
seekPpq(ppq: number, sampleTime?: number): boolean;
|
|
34
|
+
seekSample(timelineSample: number, sampleTime?: number): boolean;
|
|
35
|
+
};
|
|
36
|
+
offlineEngine: RealtimeEngine;
|
|
37
|
+
flushOfflineMirror(): void;
|
|
38
|
+
setTransportPlaying(playing: boolean): void;
|
|
39
|
+
flushPendingInstrumentSync(): void;
|
|
40
|
+
setTempo(bpm: number): void;
|
|
41
|
+
setTempoSegments(segments: readonly {
|
|
42
|
+
startPpq: number;
|
|
43
|
+
bpm: number;
|
|
44
|
+
}[]): void;
|
|
45
|
+
setLoop(startPpq: number, endPpq: number, enabled?: boolean): boolean;
|
|
46
|
+
}
|
|
47
|
+
/** Builds the public transport facade that fans control to both engines. */
|
|
48
|
+
export declare function buildTransportFacade(ctx: EngineTransportContext): SonareEngineTransportFacade;
|
|
49
|
+
/**
|
|
50
|
+
* Validates and normalizes an append-only mixer-lane declaration.
|
|
51
|
+
*
|
|
52
|
+
* Lane indices are append-only: the new list must start with the already
|
|
53
|
+
* declared lane ids in their current order and may only append new track ids.
|
|
54
|
+
* Returns the normalized lane entries (numbers coerced to descriptors) and the
|
|
55
|
+
* resulting ordered id list.
|
|
56
|
+
*
|
|
57
|
+
* @throws if any track id is invalid, ids are duplicated, or the existing lane
|
|
58
|
+
* order is not preserved.
|
|
59
|
+
*/
|
|
60
|
+
export declare function normalizeTrackLanes(existing: readonly number[], lanes: ReadonlyArray<number | EngineTrackLane>): {
|
|
61
|
+
entries: EngineTrackLane[];
|
|
62
|
+
ids: number[];
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Resolves a marker set, assigning fresh ids to entries without one and
|
|
66
|
+
* validating explicit ids (positive, unique).
|
|
67
|
+
*
|
|
68
|
+
* @param markers The marker list to resolve.
|
|
69
|
+
* @param nextMarkerId The id counter to draw fresh ids from.
|
|
70
|
+
* @returns The resolved markers and the advanced id counter.
|
|
71
|
+
* @throws on a non-finite ppq, an invalid id, or a duplicate id.
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolveMarkerSet(markers: ReadonlyArray<{
|
|
74
|
+
ppq: number;
|
|
75
|
+
name?: string;
|
|
76
|
+
id?: number;
|
|
77
|
+
}>, nextMarkerId: number): {
|
|
78
|
+
resolved: EngineMarker[];
|
|
79
|
+
nextMarkerId: number;
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=engine-offline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-offline.d.ts","sourceRoot":"","sources":["../../src/worklet/engine-offline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEnG,OAAO,KAAK,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9F,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,eAAe,EAAE,MAAM,GACtB,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAY9C;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE;QACZ,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACnD,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KAClE,CAAC;IACF,aAAa,EAAE,cAAc,CAAC;IAC9B,kBAAkB,IAAI,IAAI,CAAC;IAC3B,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,0BAA0B,IAAI,IAAI,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,QAAQ,EAAE,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IAC/E,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CACvE;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,sBAAsB,GAAG,2BAA2B,CAkC7F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,eAAe,CAAC,GAC7C;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAoB/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACnE,YAAY,EAAE,MAAM,GACnB;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CA2BpD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RealtimeEngine } from '../index';
|
|
2
|
+
import type { SonareRealtimeEngineNodeOptions } from './messages';
|
|
3
|
+
export interface SonareEngineOptions extends SonareRealtimeEngineNodeOptions {
|
|
4
|
+
offlineEngine?: RealtimeEngine;
|
|
5
|
+
offlineBlockSize?: number;
|
|
6
|
+
offlineChannelCount?: number;
|
|
7
|
+
}
|
|
8
|
+
export type SuspendableAudioContext = BaseAudioContext & {
|
|
9
|
+
suspend?: () => Promise<void>;
|
|
10
|
+
resume?: () => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=engine-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-options.d.ts","sourceRoot":"","sources":["../../src/worklet/engine-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,WAAW,mBAAoB,SAAQ,+BAA+B;IAC1E,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG;IACvD,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { EngineAutomationPoint, EngineParameterInfo, EngineTrackMonitorMode, RealtimeEngine } from '../index';
|
|
2
|
+
import type { SonareEngineSyncMessage } from './messages';
|
|
3
|
+
import { SonareEngineCommandType } from './protocol';
|
|
4
|
+
/**
|
|
5
|
+
* Collaborator surface the parameter / automation-id resolution helpers need
|
|
6
|
+
* from the owning {@link SonareEngine}: the offline engine they mirror into and
|
|
7
|
+
* query, the realtime node they command, the lane/bus declaration helpers, and
|
|
8
|
+
* the declared track-lane id store used to resolve insert-automation ids.
|
|
9
|
+
*/
|
|
10
|
+
export interface EngineParameterContext {
|
|
11
|
+
readonly offlineEngine: RealtimeEngine;
|
|
12
|
+
sendCommand(command: {
|
|
13
|
+
type: SonareEngineCommandType;
|
|
14
|
+
targetId?: number;
|
|
15
|
+
sampleTime?: number;
|
|
16
|
+
argFloat?: number;
|
|
17
|
+
argInt?: number;
|
|
18
|
+
}): boolean;
|
|
19
|
+
postSync(message: SonareEngineSyncMessage): void;
|
|
20
|
+
readonly automationLanes: Map<number, EngineAutomationPoint[]>;
|
|
21
|
+
readonly trackLaneIds: number[];
|
|
22
|
+
resolveParamId(nodeId: string, param: string | number): number;
|
|
23
|
+
ensureTrackLane(target: string | number): number;
|
|
24
|
+
ensureBus(busId: number): number;
|
|
25
|
+
}
|
|
26
|
+
export declare function setParam(ctx: EngineParameterContext, nodeId: string, param: string | number, value: number): boolean;
|
|
27
|
+
export declare function setSoloMute(ctx: EngineParameterContext, target: string | number, solo: boolean, mute: boolean): boolean;
|
|
28
|
+
export declare function setTrackMonitorMode(ctx: EngineParameterContext, target: string | number, mode: EngineTrackMonitorMode, renderFrame?: number): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Returns the automation target id for a mixer strip parameter.
|
|
31
|
+
*
|
|
32
|
+
* The id addresses the engine's reserved mixer namespace, so it can be fed
|
|
33
|
+
* straight to setAutomationLane to automate a fader or pan without
|
|
34
|
+
* registering a parameter.
|
|
35
|
+
*
|
|
36
|
+
* @param target Track id (declares a mixer lane on first use) or 'master'.
|
|
37
|
+
* @param kind Strip parameter to address.
|
|
38
|
+
* @returns Reserved engine parameter id for the strip parameter.
|
|
39
|
+
*/
|
|
40
|
+
export declare function automationParamId(ctx: EngineParameterContext, target: string | number, kind: 'faderDb' | 'pan'): number;
|
|
41
|
+
/**
|
|
42
|
+
* Returns the automation target id for a bus fader.
|
|
43
|
+
*
|
|
44
|
+
* @param busId Bus id (declares the mixer bus on first use).
|
|
45
|
+
* @returns Reserved engine parameter id for the bus fader gain (dB).
|
|
46
|
+
*/
|
|
47
|
+
export declare function busAutomationParamId(ctx: EngineParameterContext, busId: number): number;
|
|
48
|
+
/**
|
|
49
|
+
* Resolves a track-lane insert parameter (JSON-key name) to the reserved
|
|
50
|
+
* insert-automation id fed straight to setAutomationLane. Declares the track's
|
|
51
|
+
* mixer lane first (like automationParamId) so the offline engine resolves the
|
|
52
|
+
* same strip selector the realtime engine uses.
|
|
53
|
+
*
|
|
54
|
+
* @param target Track id (declares a mixer lane on first use).
|
|
55
|
+
* @param insertIndex Index into the strip's combined insert sequence.
|
|
56
|
+
* @param paramName Processor JSON-key parameter name.
|
|
57
|
+
* @returns Reserved insert-automation id, or -1 when strip/insert/key unknown.
|
|
58
|
+
*/
|
|
59
|
+
export declare function resolveTrackInsertAutomationId(ctx: EngineParameterContext, target: string | number, insertIndex: number, paramName: string): number;
|
|
60
|
+
/**
|
|
61
|
+
* Resolves a master-strip insert parameter to its reserved insert-automation
|
|
62
|
+
* id.
|
|
63
|
+
*
|
|
64
|
+
* @param insertIndex Index into the master strip's insert sequence.
|
|
65
|
+
* @param paramName Processor JSON-key parameter name.
|
|
66
|
+
* @returns Reserved insert-automation id, or -1 when insert/key unknown.
|
|
67
|
+
*/
|
|
68
|
+
export declare function resolveMasterInsertAutomationId(ctx: EngineParameterContext, insertIndex: number, paramName: string): number;
|
|
69
|
+
/**
|
|
70
|
+
* Resolves a bus-strip insert parameter to its reserved insert-automation id.
|
|
71
|
+
* Declares the mixer bus first so the offline engine resolves the same bus
|
|
72
|
+
* selector.
|
|
73
|
+
*
|
|
74
|
+
* @param busId Bus id (declares the mixer bus on first use).
|
|
75
|
+
* @param insertIndex Index into the bus strip's insert sequence.
|
|
76
|
+
* @param paramName Processor JSON-key parameter name.
|
|
77
|
+
* @returns Reserved insert-automation id, or -1 when bus/insert/key unknown.
|
|
78
|
+
*/
|
|
79
|
+
export declare function resolveBusInsertAutomationId(ctx: EngineParameterContext, busId: number, insertIndex: number, paramName: string): number;
|
|
80
|
+
/**
|
|
81
|
+
* Resolves a hosted instrument's continuous parameter to its reserved
|
|
82
|
+
* instrument-automation id, so an instrument parameter is driven from a
|
|
83
|
+
* breakpoint lane at audio-block precision like a strip insert.
|
|
84
|
+
*
|
|
85
|
+
* The instrument must already be bound on the offline engine for the
|
|
86
|
+
* destination (the worklet mirrors every instrument sync onto it), otherwise
|
|
87
|
+
* the resolve returns -1.
|
|
88
|
+
*
|
|
89
|
+
* @param destinationId MIDI destination the instrument is bound to.
|
|
90
|
+
* @param paramName Instrument JSON-key parameter name (e.g. `cutoffHz`).
|
|
91
|
+
* @returns Reserved instrument-automation id, or -1 when destination/key unknown.
|
|
92
|
+
*/
|
|
93
|
+
export declare function resolveInstrumentAutomationId(ctx: EngineParameterContext, destinationId: number, paramName: string): number;
|
|
94
|
+
/**
|
|
95
|
+
* Returns the number of automation lanes installed on the engine, including
|
|
96
|
+
* lanes whose breakpoint list is currently empty.
|
|
97
|
+
*
|
|
98
|
+
* @returns Engine-side automation lane count.
|
|
99
|
+
*/
|
|
100
|
+
export declare function automationLaneCount(ctx: EngineParameterContext): number;
|
|
101
|
+
export declare function listParameters(ctx: EngineParameterContext): EngineParameterInfo[];
|
|
102
|
+
/** Registers a parameter on both the offline mirror and live worklet engine. */
|
|
103
|
+
export declare function addParameter(ctx: EngineParameterContext, info: EngineParameterInfo): void;
|
|
104
|
+
/** Clears registered parameters and their automation lanes on both engines. */
|
|
105
|
+
export declare function clearParameters(ctx: EngineParameterContext): void;
|
|
106
|
+
//# sourceMappingURL=engine-parameter-facade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-parameter-facade.d.ts","sourceRoot":"","sources":["../../src/worklet/engine-parameter-facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type WorkletInput, type WorkletOutput } from './audio_types';
|
|
2
|
+
import { type SonareEngineCaptureRequestMessage, type SonareEngineSyncMessage, type SonareEngineTransportRequestMessage, type SonareRealtimeEngineWorkletProcessorOptions, type WorkletTransport } from './messages';
|
|
3
|
+
import { type SonareEngineCommandRecord } from './protocol';
|
|
4
|
+
/**
|
|
5
|
+
* AudioWorklet-style bridge for the DAW realtime engine facade.
|
|
6
|
+
*
|
|
7
|
+
* Backed by the `sonare.wasm` embind facade.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SonareRealtimeEngineWorkletProcessor {
|
|
10
|
+
private static warnedChannelScratchOverflow;
|
|
11
|
+
readonly sampleRate: number;
|
|
12
|
+
readonly blockSize: number;
|
|
13
|
+
readonly channelCount: number;
|
|
14
|
+
private engine;
|
|
15
|
+
private closed;
|
|
16
|
+
private commandRing?;
|
|
17
|
+
private telemetryRing?;
|
|
18
|
+
private meterRing?;
|
|
19
|
+
private scopeRing?;
|
|
20
|
+
private clipPageRequestRing?;
|
|
21
|
+
private externalMidiRing?;
|
|
22
|
+
private transport?;
|
|
23
|
+
private meterIntervalFrames;
|
|
24
|
+
private lastMeterFrame;
|
|
25
|
+
private scopeIntervalFrames;
|
|
26
|
+
private scopeEnabled;
|
|
27
|
+
private scopeBands;
|
|
28
|
+
private metronomeConfig;
|
|
29
|
+
private channelBuffers;
|
|
30
|
+
private monitorBuffers;
|
|
31
|
+
private readonly cueOutput;
|
|
32
|
+
private readonly liveClips;
|
|
33
|
+
private readonly pagedClipProviders;
|
|
34
|
+
private readonly pagedClipPageFrames;
|
|
35
|
+
private readonly pendingPagedClips;
|
|
36
|
+
private readonly clipPageRequestClipIds;
|
|
37
|
+
private readonly clipPageRequestPageIndices;
|
|
38
|
+
private clipPageRequestOverflowReported;
|
|
39
|
+
constructor(options?: SonareRealtimeEngineWorkletProcessorOptions, transport?: WorkletTransport);
|
|
40
|
+
process(inputs: WorkletInput, outputs: WorkletOutput): boolean;
|
|
41
|
+
private reacquireChannelBuffers;
|
|
42
|
+
private reacquireMonitorBuffers;
|
|
43
|
+
receiveCommand(command: SonareEngineCommandRecord): void;
|
|
44
|
+
receiveSync(message: SonareEngineSyncMessage): void;
|
|
45
|
+
private applySync;
|
|
46
|
+
receiveCaptureRequest(message: SonareEngineCaptureRequestMessage): void;
|
|
47
|
+
receiveTransportRequest(message: SonareEngineTransportRequestMessage): void;
|
|
48
|
+
destroy(): void;
|
|
49
|
+
private drainCommands;
|
|
50
|
+
private safeApplyCommand;
|
|
51
|
+
private applyCommand;
|
|
52
|
+
private publishTelemetry;
|
|
53
|
+
private writeTelemetryScratch;
|
|
54
|
+
private publishTelemetryRecord;
|
|
55
|
+
private publishMeters;
|
|
56
|
+
private writeMeterScratch;
|
|
57
|
+
private publishScope;
|
|
58
|
+
private postScopeScratch;
|
|
59
|
+
private writeScopeScratch;
|
|
60
|
+
private publishExternalMidi;
|
|
61
|
+
/**
|
|
62
|
+
* Forward a bounded batch of native page misses to the main thread. This
|
|
63
|
+
* deliberately runs after audio rendering: a cache miss is silence for this
|
|
64
|
+
* block, and OPFS I/O must never delay `process()`.
|
|
65
|
+
*/
|
|
66
|
+
private publishClipPageRequests;
|
|
67
|
+
private removePagedClipProvider;
|
|
68
|
+
private clearPagedClipProviders;
|
|
69
|
+
private commandRingFromSharedBuffer;
|
|
70
|
+
private telemetryRingFromSharedBuffer;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=engine-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-processor.d.ts","sourceRoot":"","sources":["../../src/worklet/engine-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAQ1F,OAAO,EAIL,KAAK,iCAAiC,EAEtC,KAAK,uBAAuB,EAC5B,KAAK,mCAAmC,EAExC,KAAK,2CAA2C,EAChD,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAmBL,KAAK,yBAAyB,EAY/B,MAAM,YAAY,CAAC;AAkBpB;;;;GAIG;AACH,qBAAa,oCAAoC;IAC/C,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAS;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAC,CAAgC;IACpD,OAAO,CAAC,aAAa,CAAC,CAAkC;IACxD,OAAO,CAAC,SAAS,CAAC,CAAwB;IAC1C,OAAO,CAAC,SAAS,CAAC,CAAwB;IAC1C,OAAO,CAAC,mBAAmB,CAAC,CAAkC;IAC9D,OAAO,CAAC,gBAAgB,CAAC,CAA+B;IACxD,OAAO,CAAC,SAAS,CAAC,CAAmB;IACrC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,eAAe,CAA4D;IAQnF,OAAO,CAAC,cAAc,CAAiB;IAIvC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAChE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA6B;IACjE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IAKnE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;IAC/D,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAwB;IACnE,OAAO,CAAC,+BAA+B,CAAK;gBAG1C,OAAO,GAAE,2CAAgD,EACzD,SAAS,CAAC,EAAE,gBAAgB;IAwF9B,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO;IAqF9D,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,uBAAuB;IAM/B,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAUxD,WAAW,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAenD,OAAO,CAAC,SAAS;IA0gBjB,qBAAqB,CAAC,OAAO,EAAE,iCAAiC,GAAG,IAAI;IAuDvE,uBAAuB,CAAC,OAAO,EAAE,mCAAmC,GAAG,IAAI;IAqB3E,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,YAAY;IA+GpB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,aAAa;IA6CrB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,mBAAmB;IA4B3B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IA+F/B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,6BAA6B;CAWtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-register.d.ts","sourceRoot":"","sources":["../../src/worklet/engine-register.ts"],"names":[],"mappings":"AAaA,wBAAgB,4CAA4C,CAC1D,IAAI,SAAqC,GACxC,IAAI,CA8IN"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { EqBand, PanLawInput, PanMode, RealtimeEngine } from '../index';
|
|
2
|
+
import type { InsertParamOverrideMap } from './engine-mixer-facade';
|
|
3
|
+
import { type InsertParamOverride, type StripJsonTarget } from './engine-mixer-facade';
|
|
4
|
+
import type { SonareEngineInstrumentSyncMessage, SonareEngineSyncMessage } from './messages';
|
|
5
|
+
/**
|
|
6
|
+
* Collaborator surface the strip/pan/EQ/insert/instrument/MIDI setters need from
|
|
7
|
+
* the owning {@link SonareEngine}: the offline engine they mirror writes into,
|
|
8
|
+
* the out-of-band sync posters, and the lane-resolution helpers.
|
|
9
|
+
*/
|
|
10
|
+
export interface EngineStripContext {
|
|
11
|
+
readonly offlineEngine: RealtimeEngine;
|
|
12
|
+
readonly trackLaneIds: number[];
|
|
13
|
+
postSync(message: SonareEngineSyncMessage): void;
|
|
14
|
+
postInstrumentSync(message: SonareEngineInstrumentSyncMessage): void;
|
|
15
|
+
ensureTrackLane(target: string | number): number;
|
|
16
|
+
resolveTargetId(target: string | number): number;
|
|
17
|
+
readStripJson(target: StripJsonTarget): string | undefined;
|
|
18
|
+
writeStripJson(target: StripJsonTarget, sceneJson: string): void;
|
|
19
|
+
readonly insertParamOverrides: InsertParamOverrideMap;
|
|
20
|
+
clearInsertAutomationLanes(target: StripJsonTarget): void;
|
|
21
|
+
}
|
|
22
|
+
export declare function setTrackStripJson(ctx: EngineStripContext, trackId: number, sceneJson: string, trackStripJson: Map<number, string>): {
|
|
23
|
+
insertBaseResets: StripJsonTarget[];
|
|
24
|
+
constructionOverrides: InsertParamOverride[];
|
|
25
|
+
};
|
|
26
|
+
export declare function setTrackStripEqBand(ctx: EngineStripContext, target: string | number, bandIndex: number, band: EqBand | string): void;
|
|
27
|
+
export declare function setTrackStripInsertBypassed(ctx: EngineStripContext, target: string | number, insertIndex: number, bypassed: boolean, resetOnBypass: boolean): void;
|
|
28
|
+
export declare function setTrackStripInsertParamByName(ctx: EngineStripContext, target: string | number, insertIndex: number, paramName: string, value: number): void;
|
|
29
|
+
export declare function setTrackStripPan(ctx: EngineStripContext, target: string | number, pan: number): void;
|
|
30
|
+
export declare function setTrackStripPanLaw(ctx: EngineStripContext, target: string | number, panLaw: PanLawInput): void;
|
|
31
|
+
export declare function setTrackStripPanMode(ctx: EngineStripContext, target: string | number, panMode: PanMode | number): void;
|
|
32
|
+
export declare function setTrackStripDualPan(ctx: EngineStripContext, target: string | number, leftPan: number, rightPan: number): void;
|
|
33
|
+
export declare function setTrackStripChannelDelaySamples(ctx: EngineStripContext, target: string | number, delaySamples: number): void;
|
|
34
|
+
/**
|
|
35
|
+
* Records a master fader or pan value the parameter path applied, so a master
|
|
36
|
+
* strip re-post does not reset it; a track lane keeps these outside its strip.
|
|
37
|
+
*/
|
|
38
|
+
export declare function cacheMasterStripScalar(ctx: EngineStripContext, field: 'faderDb' | 'pan', value: number): void;
|
|
39
|
+
export declare function setMasterStripEqBand(ctx: EngineStripContext, bandIndex: number, band: EqBand | string): void;
|
|
40
|
+
export declare function setMasterStripInsertBypassed(ctx: EngineStripContext, insertIndex: number, bypassed: boolean, resetOnBypass: boolean): void;
|
|
41
|
+
export declare function setMasterStripInsertParamByName(ctx: EngineStripContext, insertIndex: number, paramName: string, value: number): void;
|
|
42
|
+
export declare function setBusStripInsertParamByName(ctx: EngineStripContext, busId: number, insertIndex: number, paramName: string, value: number): void;
|
|
43
|
+
export declare function setBusStripInsertBypassed(ctx: EngineStripContext, busId: number, insertIndex: number, bypassed: boolean, resetOnBypass: boolean): void;
|
|
44
|
+
export declare function setBusStripEqBand(ctx: EngineStripContext, busId: number, bandIndex: number, band: EqBand | string): void;
|
|
45
|
+
export declare function setBusStripPan(ctx: EngineStripContext, busId: number, pan: number): void;
|
|
46
|
+
export declare function setBusStripPanLaw(ctx: EngineStripContext, busId: number, panLaw: PanLawInput): void;
|
|
47
|
+
export declare function setBusStripPanMode(ctx: EngineStripContext, busId: number, panMode: PanMode | number): void;
|
|
48
|
+
export declare function setBusStripDualPan(ctx: EngineStripContext, busId: number, leftPan: number, rightPan: number): void;
|
|
49
|
+
export declare function pushMidiNoteOn(ctx: EngineStripContext, trackId: string | number, group: number, channel: number, note: number, velocity: number, renderFrame: number): void;
|
|
50
|
+
export declare function pushMidiNoteOff(ctx: EngineStripContext, trackId: string | number, group: number, channel: number, note: number, velocity: number, renderFrame: number): void;
|
|
51
|
+
export declare function pushMidiCc(ctx: EngineStripContext, trackId: string | number, group: number, channel: number, controller: number, value: number, renderFrame: number): void;
|
|
52
|
+
export declare function pushMidiPitchBend(ctx: EngineStripContext, trackId: string | number, group: number, channel: number, bend14: number, renderFrame: number): void;
|
|
53
|
+
export declare function pushMidiChannelPressure(ctx: EngineStripContext, trackId: string | number, group: number, channel: number, pressure: number, renderFrame: number): void;
|
|
54
|
+
export declare function pushMidiPolyPressure(ctx: EngineStripContext, trackId: string | number, group: number, channel: number, note: number, pressure: number, renderFrame: number): void;
|
|
55
|
+
export declare function pushMidiUmp(ctx: EngineStripContext, trackId: string | number, word0: number, renderFrame: number): void;
|
|
56
|
+
export declare function setBuiltinInstrument(ctx: EngineStripContext, trackId: string | number, config: {
|
|
57
|
+
destinationId?: number;
|
|
58
|
+
} & Record<string, unknown>): void;
|
|
59
|
+
export declare function setSynthInstrument(ctx: EngineStripContext, trackId: string | number, patch: Record<string, unknown> | string): void;
|
|
60
|
+
export declare function loadSoundFont(ctx: EngineStripContext, data: Uint8Array): void;
|
|
61
|
+
export declare function setSf2Instrument(ctx: EngineStripContext, trackId: string | number, config: {
|
|
62
|
+
destinationId?: number;
|
|
63
|
+
gain?: number;
|
|
64
|
+
polyphony?: number;
|
|
65
|
+
preferModelForModeledFamilies?: boolean;
|
|
66
|
+
clearBankRig?: boolean;
|
|
67
|
+
gsEfxRealization?: 'modern' | 'classic';
|
|
68
|
+
}): void;
|
|
69
|
+
export declare function setMidiDestinationExternal(ctx: EngineStripContext, trackId: string | number, external: boolean): void;
|
|
70
|
+
export declare function setExternalMidiClockEnabled(ctx: EngineStripContext, enabled: boolean): void;
|
|
71
|
+
export declare function setMidiFx(ctx: EngineStripContext, trackId: string | number, configJson: string): void;
|
|
72
|
+
export declare function clearMidiFx(ctx: EngineStripContext, trackId: string | number): void;
|
|
73
|
+
export declare function pushMidiSysex(ctx: EngineStripContext, trackId: string | number, data: Uint8Array, renderFrame: number): void;
|
|
74
|
+
export declare function pushMidiPanic(ctx: EngineStripContext, renderFrame: number): void;
|
|
75
|
+
//# sourceMappingURL=engine-strips.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-strips.d.ts","sourceRoot":"","sources":["../../src/worklet/engine-strips.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { EngineParameterInfo, EngineTempoSegment, EngineTimeSignatureSegment, EngineTrackLane, EngineTrackSend } from '../index';
|
|
2
|
+
import type { SonareEngineSyncTempoMessage } from './messages';
|
|
3
|
+
/**
|
|
4
|
+
* Builds the ordered mixer-lane descriptors for a sync message.
|
|
5
|
+
*
|
|
6
|
+
* Each declared track id is paired with its current send list and output bus
|
|
7
|
+
* (both omitted when absent) and source channel layout, defensively copying the
|
|
8
|
+
* send entries.
|
|
9
|
+
*
|
|
10
|
+
* @param trackLaneIds Lane order (track ids) declared on the engine.
|
|
11
|
+
* @param trackSends Per-track send lists.
|
|
12
|
+
* @param trackOutputBus Per-track output bus routing.
|
|
13
|
+
* @param trackSourceChannelLayout Per-track source channel layouts.
|
|
14
|
+
* @returns Lane descriptors in lane order.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildMixerLanes(trackLaneIds: readonly number[], trackSends: ReadonlyMap<number, EngineTrackSend[]>, trackOutputBus: ReadonlyMap<number, number>, trackSourceChannelLayout: ReadonlyMap<number, number>): EngineTrackLane[];
|
|
17
|
+
/**
|
|
18
|
+
* Builds the out-of-band tempo/time-signature sync message, deep-copying the
|
|
19
|
+
* tempo and time-signature segments so the consumer cannot alias engine state.
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildTempoSync(tempoBpm: number, timeSignature: {
|
|
22
|
+
numerator: number;
|
|
23
|
+
denominator: number;
|
|
24
|
+
}, tempoSegments: readonly EngineTempoSegment[], timeSignatureSegments: readonly EngineTimeSignatureSegment[]): SonareEngineSyncTempoMessage;
|
|
25
|
+
/**
|
|
26
|
+
* Resolves a target id given as a number, or as a string naming one.
|
|
27
|
+
*
|
|
28
|
+
* Both spellings reach one refusal. Reading the string with `Number.parseInt`
|
|
29
|
+
* stops at the first non-digit, so `"3.5"` resolves to `3` and `"5abc"` to `5`,
|
|
30
|
+
* and an unparseable name resolves to `0` -- all ids the caller never named.
|
|
31
|
+
* `0` is a legal destination, so the native check these feed cannot tell the
|
|
32
|
+
* substitution from a deliberate choice and never reports one.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveTargetId(target: string | number): number;
|
|
35
|
+
/** Resolves a registered parameter name or passes through a numeric id. */
|
|
36
|
+
export declare function resolveParamId(parameters: readonly EngineParameterInfo[], nodeId: string, param: string | number): number;
|
|
37
|
+
/** Encodes an automation curve descriptor to the engine's numeric curve code. */
|
|
38
|
+
export declare function curveCode(curve: number | 'linear' | 'exponential'): number;
|
|
39
|
+
//# sourceMappingURL=engine-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-sync.d.ts","sourceRoot":"","sources":["../../src/worklet/engine-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,eAAe,EACf,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,EAClD,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3C,wBAAwB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACpD,eAAe,EAAE,CAYnB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACzD,aAAa,EAAE,SAAS,kBAAkB,EAAE,EAC5C,qBAAqB,EAAE,SAAS,0BAA0B,EAAE,GAC3D,4BAA4B,CAQ9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAS/D;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,mBAAmB,EAAE,EAC1C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,MAAM,CASR;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAK1E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { EngineTempoSegment, EngineTimeSignatureSegment, EngineTransportState, RealtimeEngine } from '../index';
|
|
2
|
+
import type { SonareRealtimeEngineNode } from './engine-node';
|
|
3
|
+
import type { SonareEngineSyncMessage } from './messages';
|
|
4
|
+
import { SonareEngineCommandType } from './protocol';
|
|
5
|
+
interface TimeSignature {
|
|
6
|
+
numerator: number;
|
|
7
|
+
denominator: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Collaborator surface the tempo / time-signature / loop / transport helpers
|
|
11
|
+
* need from the owning {@link SonareEngine}: the offline engine they mirror
|
|
12
|
+
* into, the realtime node they command and query, the out-of-band sync poster,
|
|
13
|
+
* and getters/setters for the tempo-map and cached-transport state the engine
|
|
14
|
+
* holds (so the helpers mutate it by reference).
|
|
15
|
+
*/
|
|
16
|
+
export interface EngineTempoContext {
|
|
17
|
+
readonly offlineEngine: RealtimeEngine;
|
|
18
|
+
readonly realtimeNode: SonareRealtimeEngineNode;
|
|
19
|
+
sendCommand(command: {
|
|
20
|
+
type: SonareEngineCommandType;
|
|
21
|
+
targetId?: number;
|
|
22
|
+
sampleTime?: number;
|
|
23
|
+
argFloat?: number;
|
|
24
|
+
argInt?: number;
|
|
25
|
+
}): boolean;
|
|
26
|
+
postSync(message: SonareEngineSyncMessage): void;
|
|
27
|
+
getTempoBpm(): number;
|
|
28
|
+
setTempoBpm(bpm: number): void;
|
|
29
|
+
getTimeSignature(): TimeSignature;
|
|
30
|
+
setTimeSignature(signature: TimeSignature): void;
|
|
31
|
+
getTempoSegments(): EngineTempoSegment[];
|
|
32
|
+
setTempoSegments(segments: EngineTempoSegment[]): void;
|
|
33
|
+
getTimeSignatureSegments(): EngineTimeSignatureSegment[];
|
|
34
|
+
setTimeSignatureSegments(segments: EngineTimeSignatureSegment[]): void;
|
|
35
|
+
setLatestTransportState(state: EngineTransportState): void;
|
|
36
|
+
getLatestTransportState(): EngineTransportState | undefined;
|
|
37
|
+
}
|
|
38
|
+
export declare function postTempoSync(ctx: EngineTempoContext): void;
|
|
39
|
+
export declare function setTempo(ctx: EngineTempoContext, bpm: number): void;
|
|
40
|
+
export declare function setTempoSegments(ctx: EngineTempoContext, segments: readonly EngineTempoSegment[]): void;
|
|
41
|
+
export declare function setTimeSignature(ctx: EngineTempoContext, numerator: number, denominator: number): void;
|
|
42
|
+
export declare function setTimeSignatureSegments(ctx: EngineTempoContext, segments: readonly EngineTimeSignatureSegment[]): void;
|
|
43
|
+
export declare function setLoop(ctx: EngineTempoContext, startPpq: number, endPpq: number, enabled?: boolean): boolean;
|
|
44
|
+
export declare function countInEndSample(ctx: EngineTempoContext, startSample: number, bars: number): number;
|
|
45
|
+
export declare function getTransportState(ctx: EngineTempoContext): Promise<EngineTransportState>;
|
|
46
|
+
export declare function cachedTransportState(ctx: EngineTempoContext): EngineTransportState | undefined;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=engine-tempo-facade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-tempo-facade.d.ts","sourceRoot":"","sources":["../../src/worklet/engine-tempo-facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAC;IAChD,WAAW,CAAC,OAAO,EAAE;QACnB,IAAI,EAAE,uBAAuB,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;IACZ,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjD,WAAW,IAAI,MAAM,CAAC;IACtB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,IAAI,aAAa,CAAC;IAClC,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IACjD,gBAAgB,IAAI,kBAAkB,EAAE,CAAC;IACzC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACvD,wBAAwB,IAAI,0BAA0B,EAAE,CAAC;IACzD,wBAAwB,CAAC,QAAQ,EAAE,0BAA0B,EAAE,GAAG,IAAI,CAAC;IACvE,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3D,uBAAuB,IAAI,oBAAoB,GAAG,SAAS,CAAC;CAC7D;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAS3D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACtC,IAAI,CAMN;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,kBAAkB,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,IAAI,CAKN;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,SAAS,0BAA0B,EAAE,GAC9C,IAAI,CASN;AAED,wBAAgB,OAAO,CACrB,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,UAAO,GACb,OAAO,CAkBT;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,kBAAkB,EACvB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAI9F;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,SAAS,CAE9F"}
|