@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,654 @@
|
|
|
1
|
+
import type { PROJECT_AUTOMATION_CURVE_VALUES } from './codes';
|
|
2
|
+
import type { Project } from './project_class';
|
|
3
|
+
/**
|
|
4
|
+
* Expected project ABI version. Mirrors `SONARE_PROJECT_ABI_VERSION` in
|
|
5
|
+
* `src/sonare_c_project.h`; checked against {@link projectAbiVersion} to detect
|
|
6
|
+
* a WASM build whose flat project POD layout has drifted from this wrapper.
|
|
7
|
+
*/
|
|
8
|
+
export declare const EXPECTED_PROJECT_ABI_VERSION = 2;
|
|
9
|
+
/** Render options for {@link Project.bounce}. All fields are optional. */
|
|
10
|
+
export interface ProjectBounceOptions {
|
|
11
|
+
/** Render length in frames at the output sample rate. */
|
|
12
|
+
totalFrames?: number;
|
|
13
|
+
/** Render block size; <= 0 uses the engine default (128). */
|
|
14
|
+
blockSize?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Output channel count: 1, 2, 6 or 8, and at most the width of the scene
|
|
17
|
+
* master's layout (mono/stereo/no master allow 2). The master is mixed at
|
|
18
|
+
* this width; 1 folds a 2-channel master to 0.5(L+R). <= 0 uses the default
|
|
19
|
+
* (2).
|
|
20
|
+
*/
|
|
21
|
+
numChannels?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Output sample rate. This is not a resample: a positive value must equal
|
|
24
|
+
* the project's own sample rate, or the bounce is refused. <= 0 uses the
|
|
25
|
+
* project sample rate.
|
|
26
|
+
*/
|
|
27
|
+
sampleRate?: number;
|
|
28
|
+
/** Host-instrument PDC (latency) fed to the compiler. */
|
|
29
|
+
instrumentLatencySamples?: number;
|
|
30
|
+
}
|
|
31
|
+
/** One decoded output from a host-owned source-separation model. */
|
|
32
|
+
export interface ExternalSeparatedStem {
|
|
33
|
+
name: string;
|
|
34
|
+
/** Optional host metadata; it does not change DSP. */
|
|
35
|
+
role?: string;
|
|
36
|
+
layout: 'mono' | 'stereo' | 1 | 2;
|
|
37
|
+
planarSamples: Float32Array[];
|
|
38
|
+
/** Absolute project-rate frame at which this stem begins. */
|
|
39
|
+
startFrame?: number;
|
|
40
|
+
}
|
|
41
|
+
/** Request for {@link Project.importExternalStems}. */
|
|
42
|
+
export interface ExternalSeparatedStemImportRequest {
|
|
43
|
+
sampleRate: number;
|
|
44
|
+
stems: ExternalSeparatedStem[];
|
|
45
|
+
}
|
|
46
|
+
/** Ids of the normal tracks and clips created by the import. */
|
|
47
|
+
export interface ExternalSeparatedStemImportResult {
|
|
48
|
+
trackIds: number[];
|
|
49
|
+
clipIds: number[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Marker kind ordinals. Mirrors `SonareMarkerKind` in `src/sonare_c_types.h`;
|
|
53
|
+
* the values are part of the ABI and must not be renumbered.
|
|
54
|
+
*/
|
|
55
|
+
export declare const MarkerKind: {
|
|
56
|
+
readonly marker: 0;
|
|
57
|
+
readonly text: 1;
|
|
58
|
+
readonly lyric: 2;
|
|
59
|
+
readonly cuePoint: 3;
|
|
60
|
+
readonly keySignature: 4;
|
|
61
|
+
};
|
|
62
|
+
/** A project timeline marker with its kind and (for key signatures) the key. */
|
|
63
|
+
export interface ProjectMarker {
|
|
64
|
+
/** Stable marker id (0 when allocating a new id via {@link Project.setMarkerEx}). */
|
|
65
|
+
id: number;
|
|
66
|
+
/** Marker position in PPQ (quarter notes). */
|
|
67
|
+
ppq: number;
|
|
68
|
+
/** Marker label. */
|
|
69
|
+
name?: string;
|
|
70
|
+
/** {@link MarkerKind} ordinal (default 0 = marker). */
|
|
71
|
+
kind?: number;
|
|
72
|
+
/** Key signature only: -7..7 (sharps positive). */
|
|
73
|
+
keyFifths?: number;
|
|
74
|
+
/** Key signature only: false = major, true = minor. */
|
|
75
|
+
keyMinor?: boolean;
|
|
76
|
+
}
|
|
77
|
+
/** Read-only stored project track returned by {@link Project.trackByIndex}. */
|
|
78
|
+
export interface ProjectTrack {
|
|
79
|
+
id: number;
|
|
80
|
+
kind: number;
|
|
81
|
+
midiDestinationId: number;
|
|
82
|
+
gain: number;
|
|
83
|
+
pan: number;
|
|
84
|
+
mute: boolean;
|
|
85
|
+
solo: boolean;
|
|
86
|
+
name: string;
|
|
87
|
+
}
|
|
88
|
+
/** Read-only stored project clip returned by {@link Project.clipByIndex}. */
|
|
89
|
+
export interface ProjectClip {
|
|
90
|
+
id: number;
|
|
91
|
+
trackId: number;
|
|
92
|
+
sourceId: number;
|
|
93
|
+
sourceKind: number;
|
|
94
|
+
startPpq: number;
|
|
95
|
+
lengthPpq: number;
|
|
96
|
+
sourceOffsetPpq: number;
|
|
97
|
+
gain: number;
|
|
98
|
+
loopMode: number;
|
|
99
|
+
loopLengthPpq: number;
|
|
100
|
+
}
|
|
101
|
+
/** Read-only stored project source returned by {@link Project.sourceByIndex}. */
|
|
102
|
+
export interface ProjectSource {
|
|
103
|
+
id: number;
|
|
104
|
+
kind: number;
|
|
105
|
+
channelCount: number;
|
|
106
|
+
storageHandleId: number;
|
|
107
|
+
sampleRateHint: number;
|
|
108
|
+
nameOrUri: string;
|
|
109
|
+
/** Owning content hash for audio sources; empty for MIDI sources. */
|
|
110
|
+
contentHash: string;
|
|
111
|
+
/** External source-separation role for audio sources; empty for MIDI sources. */
|
|
112
|
+
externalStemRole: string;
|
|
113
|
+
}
|
|
114
|
+
/** Clip fade-curve for {@link Project.setClipFade}. */
|
|
115
|
+
export type ProjectFadeCurve = 'linear' | 'equal-power' | 'equal_power' | 'equalPower' | 'equalpower' | 'exponential' | 'exp' | 'logarithmic' | 'log' | 0 | 1 | 2 | 3;
|
|
116
|
+
/** One clip fade region for {@link Project.setClipFade}. */
|
|
117
|
+
export interface ProjectClipFade {
|
|
118
|
+
/** Fade length in PPQ (>= 0; 0 = no fade). */
|
|
119
|
+
lengthPpq?: number;
|
|
120
|
+
/** Fade curve (default `'linear'`). */
|
|
121
|
+
curve?: ProjectFadeCurve;
|
|
122
|
+
}
|
|
123
|
+
/** One alternate take for {@link Project.setClipTakes}. */
|
|
124
|
+
export interface ProjectClipTake {
|
|
125
|
+
id: number;
|
|
126
|
+
sourceId?: number;
|
|
127
|
+
sourceOffsetPpq?: number;
|
|
128
|
+
name?: string;
|
|
129
|
+
}
|
|
130
|
+
/** One comp segment for {@link Project.setClipCompSegments}. */
|
|
131
|
+
export interface ProjectClipCompSegment {
|
|
132
|
+
startPpq: number;
|
|
133
|
+
endPpq: number;
|
|
134
|
+
takeId?: number;
|
|
135
|
+
/** Equal-power crossfade from the preceding segment, in PPQ (default 0 = butt join). */
|
|
136
|
+
crossfadePpq?: number;
|
|
137
|
+
}
|
|
138
|
+
/** Descriptor for {@link Project.addLoopRecordingTakes}. */
|
|
139
|
+
export interface ProjectLoopRecordingDesc {
|
|
140
|
+
trackId: number;
|
|
141
|
+
startPpq?: number;
|
|
142
|
+
loopLengthPpq: number;
|
|
143
|
+
audio: Float32Array;
|
|
144
|
+
audioChannels?: number;
|
|
145
|
+
audioSampleRate?: number;
|
|
146
|
+
}
|
|
147
|
+
/** Result returned by {@link Project.addLoopRecordingTakes}. */
|
|
148
|
+
export interface ProjectLoopRecordingResult {
|
|
149
|
+
clipId: number;
|
|
150
|
+
takeCount: number;
|
|
151
|
+
}
|
|
152
|
+
/** Clip loop mode for {@link Project.setClipLoop}. */
|
|
153
|
+
export type ProjectLoopMode = 'off' | 'loop' | 0 | 1;
|
|
154
|
+
/**
|
|
155
|
+
* How a clip follows its warp map.
|
|
156
|
+
*
|
|
157
|
+
* - `'off'` — no warping.
|
|
158
|
+
* - `'repitch'` — resample along the map, so a rate change moves the pitch with
|
|
159
|
+
* the timing (tape-style).
|
|
160
|
+
* - `'tempo-sync'` — control-thread bake against the tempo map.
|
|
161
|
+
* - `'time-stretch'` — realtime pitch-preserving stretch. Follows the same map
|
|
162
|
+
* as `'repitch'` but overlap-adds instead of resampling, so a new anchor set
|
|
163
|
+
* takes effect from the next block with no re-bake. Falls back to `'repitch'`
|
|
164
|
+
* behaviour when the stretcher's voice budget is exhausted.
|
|
165
|
+
*/
|
|
166
|
+
export type ProjectWarpMode = 'off' | 'repitch' | 'tempo-sync' | 'time-stretch' | 0 | 1 | 2 | 3;
|
|
167
|
+
/**
|
|
168
|
+
* Automation breakpoint interpolation for {@link ProjectAutomationPoint}.
|
|
169
|
+
*
|
|
170
|
+
* `'s-curve'` is the canonical spelling, matching the Node engine and the mixer
|
|
171
|
+
* automation types. The legacy `'scurve'` remains accepted for compatibility.
|
|
172
|
+
* The spellings are derived from the resolver's own table, so the documented
|
|
173
|
+
* set and the accepted set cannot drift apart.
|
|
174
|
+
*/
|
|
175
|
+
export type ProjectAutomationCurve = 0 | 1 | 2 | 3 | keyof typeof PROJECT_AUTOMATION_CURVE_VALUES;
|
|
176
|
+
/** One automation breakpoint accepted by the automation-lane edit ops. */
|
|
177
|
+
export interface ProjectAutomationPoint {
|
|
178
|
+
/** Breakpoint position in PPQ. */
|
|
179
|
+
ppq: number;
|
|
180
|
+
/** Breakpoint value. */
|
|
181
|
+
value: number;
|
|
182
|
+
/** Curve to the next breakpoint (default `'linear'`). */
|
|
183
|
+
curve?: ProjectAutomationCurve;
|
|
184
|
+
/** Alias of {@link ProjectAutomationPoint.curve}; `curve` wins when both are set. */
|
|
185
|
+
curveToNext?: ProjectAutomationCurve;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Persistent target classification for an automation lane.
|
|
189
|
+
*
|
|
190
|
+
* The numeric ordinals mirror `SonareAutomationTargetKind`; the string names
|
|
191
|
+
* are the public WASM spellings accepted by the project facade.
|
|
192
|
+
*/
|
|
193
|
+
export declare const AutomationTargetKind: {
|
|
194
|
+
readonly opaque: 0;
|
|
195
|
+
readonly trackFaderDb: 1;
|
|
196
|
+
readonly trackPan: 2;
|
|
197
|
+
};
|
|
198
|
+
/** Accepted automation target kind name or ABI ordinal. */
|
|
199
|
+
export type ProjectAutomationTargetKind = 'opaque' | 'track-fader-db' | 'track-pan' | 0 | 1 | 2;
|
|
200
|
+
/** Numeric aliases matching the C-ABI enum names. */
|
|
201
|
+
export declare const PROJECT_AUTOMATION_TARGET_OPAQUE: 0;
|
|
202
|
+
export declare const PROJECT_AUTOMATION_TARGET_TRACK_FADER_DB: 1;
|
|
203
|
+
export declare const PROJECT_AUTOMATION_TARGET_TRACK_PAN: 2;
|
|
204
|
+
/** Automation-lane descriptor for {@link Project.addAutomationLane}. */
|
|
205
|
+
export interface ProjectAutomationLaneDesc {
|
|
206
|
+
/** Host-defined, non-zero id of the parameter the lane drives (zero is reserved). */
|
|
207
|
+
targetParamId: number;
|
|
208
|
+
/** Breakpoints (stored verbatim). */
|
|
209
|
+
points: ReadonlyArray<ProjectAutomationPoint>;
|
|
210
|
+
/** Optional persistent target classification; omission retains the legacy opaque route. */
|
|
211
|
+
targetKind?: ProjectAutomationTargetKind;
|
|
212
|
+
}
|
|
213
|
+
/** One tempo segment for {@link Project.setTempoSegments}. */
|
|
214
|
+
export interface ProjectTempoSegment {
|
|
215
|
+
/** Segment start in PPQ. */
|
|
216
|
+
startPpq: number;
|
|
217
|
+
/** Tempo in beats per minute at the segment start. */
|
|
218
|
+
bpm: number;
|
|
219
|
+
/**
|
|
220
|
+
* Derived segment start in samples. Accepted for compatibility and ignored on
|
|
221
|
+
* input; never returned, because a project stores musical positions only and
|
|
222
|
+
* sample positions are derived when it is compiled.
|
|
223
|
+
*/
|
|
224
|
+
startSample?: number;
|
|
225
|
+
/** Optional ramp end tempo in BPM (0 = constant tempo over the segment). */
|
|
226
|
+
endBpm?: number;
|
|
227
|
+
}
|
|
228
|
+
/** One time-signature segment for {@link Project.setTimeSignatures}. */
|
|
229
|
+
export interface ProjectTimeSignatureSegment {
|
|
230
|
+
/** Segment start in PPQ. */
|
|
231
|
+
startPpq: number;
|
|
232
|
+
/** Beats per bar (time-signature numerator). */
|
|
233
|
+
numerator: number;
|
|
234
|
+
/** Beat unit (time-signature denominator, e.g. 4 or 8). */
|
|
235
|
+
denominator: number;
|
|
236
|
+
}
|
|
237
|
+
/** A ranked primary/half/double tempo hypothesis returned by {@link Project.analyzeTempo}. */
|
|
238
|
+
/**
|
|
239
|
+
* Scoring options for the beat-analysis to tempo-map bridge, shared by
|
|
240
|
+
* {@link Project.analyzeTempo} and {@link Project.autoTempo}.
|
|
241
|
+
*
|
|
242
|
+
* @remarks
|
|
243
|
+
* Every field is optional and falls back to the native default. Pair the two
|
|
244
|
+
* calls on the same options: `candidateIndex` indexes the ranking `analyzeTempo`
|
|
245
|
+
* produced under whatever options it was given.
|
|
246
|
+
*/
|
|
247
|
+
export interface ProjectTempoOptions {
|
|
248
|
+
/**
|
|
249
|
+
* Whether beat tracking may follow a tempo that moves during the take
|
|
250
|
+
* (default: `false`).
|
|
251
|
+
*
|
|
252
|
+
* @remarks
|
|
253
|
+
* With it off the tracker fits one tempo to the whole take, so on a
|
|
254
|
+
* performance that accelerates, slows or breathes every segment the bridge
|
|
255
|
+
* emits sits near the take's average. Leave it off for material recorded to a
|
|
256
|
+
* click; turn it on for a performance. Constant-tempo material still comes
|
|
257
|
+
* back as a single segment either way.
|
|
258
|
+
*/
|
|
259
|
+
adaptiveTempo?: boolean;
|
|
260
|
+
/** Beats of context the local tempo estimate is read over. Used only when {@link adaptiveTempo} is on. */
|
|
261
|
+
tempoUpdateIntervalBeats?: number;
|
|
262
|
+
/**
|
|
263
|
+
* Relative tempo change at which one segment closes and the next opens
|
|
264
|
+
* (default: `0.02`). Smaller follows the performance more closely and emits
|
|
265
|
+
* more segments; larger merges more of it into constant stretches.
|
|
266
|
+
*/
|
|
267
|
+
rampThreshold?: number;
|
|
268
|
+
/** Whether to rank the half- and double-tempo alternatives alongside the primary (default: `true`). */
|
|
269
|
+
includeOctaveCandidates?: boolean;
|
|
270
|
+
}
|
|
271
|
+
export interface ProjectTempoCandidate {
|
|
272
|
+
bpm: number;
|
|
273
|
+
confidence: number;
|
|
274
|
+
label: 'primary' | 'half' | 'double';
|
|
275
|
+
timeSignatureCount: number;
|
|
276
|
+
timeSignature: ProjectTimeSignatureSegment;
|
|
277
|
+
}
|
|
278
|
+
/** Key segment for {@link Project.annotateKeys}. */
|
|
279
|
+
export interface ProjectKeySegment {
|
|
280
|
+
startPpq: number;
|
|
281
|
+
endPpq: number;
|
|
282
|
+
/** Tonic pitch class 0..11 (C=0) or 255 for unknown. */
|
|
283
|
+
tonicPc?: number;
|
|
284
|
+
/** KeyMode ordinal (0 unknown, 1 major, 2 minor, 3 dorian, ...). */
|
|
285
|
+
mode?: number;
|
|
286
|
+
}
|
|
287
|
+
/** Chord symbol for {@link Project.annotateChords}. */
|
|
288
|
+
export interface ProjectChordSymbol {
|
|
289
|
+
startPpq: number;
|
|
290
|
+
endPpq: number;
|
|
291
|
+
/** Root pitch class 0..11 (C=0) or 255 for unknown. */
|
|
292
|
+
rootPc?: number;
|
|
293
|
+
/** ChordQuality ordinal (0 unknown, 1 major, 2 minor, ...). */
|
|
294
|
+
quality?: number;
|
|
295
|
+
/** Extension semitone offsets (up to 8). */
|
|
296
|
+
extensions?: ReadonlyArray<number>;
|
|
297
|
+
/** Slash-bass pitch class 0..11 or 255 for none. */
|
|
298
|
+
slashBassPc?: number;
|
|
299
|
+
/** Optional roman-numeral label. */
|
|
300
|
+
romanNumeral?: string;
|
|
301
|
+
/** True at a modulation boundary. */
|
|
302
|
+
modulationBoundary?: boolean;
|
|
303
|
+
}
|
|
304
|
+
/** Descriptor accepted by {@link Project.setAssistSidecar}. */
|
|
305
|
+
export interface ProjectAssistSidecarInput {
|
|
306
|
+
/** Non-empty module id key. */
|
|
307
|
+
moduleId: string;
|
|
308
|
+
/** Module-defined schema version. Defaults to `0`. */
|
|
309
|
+
schemaVersion?: number;
|
|
310
|
+
/** Target track id (`0` = project scope). Defaults to `0`. */
|
|
311
|
+
targetTrackId?: number;
|
|
312
|
+
/** Region start in PPQ. Defaults to `0`. */
|
|
313
|
+
regionStartPpq?: number;
|
|
314
|
+
/** Region end in PPQ. Defaults to `0`. */
|
|
315
|
+
regionEndPpq?: number;
|
|
316
|
+
/** Opaque module-owned payload bytes. Defaults to an empty payload. */
|
|
317
|
+
payload?: Uint8Array;
|
|
318
|
+
}
|
|
319
|
+
/** Assist sidecar snapshot returned by {@link Project.getAssistSidecar}. */
|
|
320
|
+
export interface ProjectAssistSidecar {
|
|
321
|
+
moduleId: string;
|
|
322
|
+
schemaVersion: number;
|
|
323
|
+
targetTrackId: number;
|
|
324
|
+
regionStartPpq: number;
|
|
325
|
+
regionEndPpq: number;
|
|
326
|
+
payload: Uint8Array;
|
|
327
|
+
}
|
|
328
|
+
/** Track kind for {@link Project.addTrack}. */
|
|
329
|
+
export type ProjectTrackKind = 'audio' | 'midi' | 'aux' | 0 | 1 | 2;
|
|
330
|
+
/** Descriptor for {@link Project.addTrack}. */
|
|
331
|
+
export interface ProjectTrackDesc {
|
|
332
|
+
kind?: ProjectTrackKind;
|
|
333
|
+
name?: string;
|
|
334
|
+
}
|
|
335
|
+
export interface ProjectWarpAnchor {
|
|
336
|
+
warpSample: number;
|
|
337
|
+
sourceSample: number;
|
|
338
|
+
}
|
|
339
|
+
export interface ProjectWarpMapDesc {
|
|
340
|
+
id: number;
|
|
341
|
+
name?: string;
|
|
342
|
+
anchors: ProjectWarpAnchor[];
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Canonical request form for {@link alignTakeToReference}.
|
|
346
|
+
*
|
|
347
|
+
* Both resolution fields are optional and omitting one takes the library value.
|
|
348
|
+
* A `0` is **refused** rather than read as a request for the default: neither
|
|
349
|
+
* field has a meaning at 0, so omission is already how you ask for the default,
|
|
350
|
+
* and a substituted value is indistinguishable downstream from one you chose.
|
|
351
|
+
*/
|
|
352
|
+
export interface AlignTakeToReferenceRequest {
|
|
353
|
+
/**
|
|
354
|
+
* The reference timeline — the guide take, or the backing track the takes were
|
|
355
|
+
* sung against. Must be non-empty and all-finite.
|
|
356
|
+
*/
|
|
357
|
+
reference: Float32Array;
|
|
358
|
+
/** The take to be placed under it. Must be non-empty and all-finite. */
|
|
359
|
+
take: Float32Array;
|
|
360
|
+
/**
|
|
361
|
+
* Sample rate of **both** buffers in Hz, `[8000, 384000]`. Resample first if
|
|
362
|
+
* they differ: the alignment does no rate conversion.
|
|
363
|
+
*/
|
|
364
|
+
sampleRate: number;
|
|
365
|
+
/**
|
|
366
|
+
* Chroma hop in samples, which sets the time resolution of the anchors — a
|
|
367
|
+
* smaller hop measures more frames and yields more anchors. Default `512`;
|
|
368
|
+
* must be a positive integer.
|
|
369
|
+
*/
|
|
370
|
+
hopLength?: number;
|
|
371
|
+
/**
|
|
372
|
+
* Chroma bins per octave — the CQT resolution the twelve pitch classes are
|
|
373
|
+
* folded from. Default `12`; must be a positive **multiple of 12**, since each
|
|
374
|
+
* pitch class takes the mean of a whole number of CQT bins.
|
|
375
|
+
*/
|
|
376
|
+
binsPerOctave?: number;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* How well an alignment was conditioned, reported by
|
|
380
|
+
* {@link AlignTakeToReferenceResult}.
|
|
381
|
+
*
|
|
382
|
+
* Every field is descriptive: none of them makes the call fail, and a caller
|
|
383
|
+
* deciding what is acceptable supplies its own threshold.
|
|
384
|
+
*/
|
|
385
|
+
export interface TakeAlignment {
|
|
386
|
+
/**
|
|
387
|
+
* Mean absolute frame residual of the path around its diagonal trend. A coarse
|
|
388
|
+
* indicator of how far the alignment strayed from a constant rate, not an error
|
|
389
|
+
* bound.
|
|
390
|
+
*/
|
|
391
|
+
meanResidualFrames: number;
|
|
392
|
+
/** Chroma frames the reference produced. */
|
|
393
|
+
referenceFrames: number;
|
|
394
|
+
/**
|
|
395
|
+
* Chroma frames the take produced. Its ratio to `referenceFrames` is the
|
|
396
|
+
* overall rate difference the anchors encode.
|
|
397
|
+
*/
|
|
398
|
+
takeFrames: number;
|
|
399
|
+
}
|
|
400
|
+
/** Result of {@link alignTakeToReference}. */
|
|
401
|
+
export interface AlignTakeToReferenceResult {
|
|
402
|
+
/**
|
|
403
|
+
* At least two finite, strictly increasing anchors, ready to hand to
|
|
404
|
+
* {@link Project.setWarpMap} as the take clip's own warp map.
|
|
405
|
+
*
|
|
406
|
+
* `warpSample` is a position on the **reference** timeline and `sourceSample`
|
|
407
|
+
* the corresponding position in the **take**, which is the direction a clip
|
|
408
|
+
* whose source is that take needs.
|
|
409
|
+
*/
|
|
410
|
+
anchors: ProjectWarpAnchor[];
|
|
411
|
+
/** How well the alignment was conditioned. */
|
|
412
|
+
alignment: TakeAlignment;
|
|
413
|
+
}
|
|
414
|
+
/** Descriptor for {@link Project.addClip}. */
|
|
415
|
+
export interface ProjectClipDesc {
|
|
416
|
+
trackId: number;
|
|
417
|
+
isMidi?: boolean;
|
|
418
|
+
startPpq?: number;
|
|
419
|
+
lengthPpq: number;
|
|
420
|
+
sourceOffsetPpq?: number;
|
|
421
|
+
gain?: number;
|
|
422
|
+
audio?: Float32Array;
|
|
423
|
+
audioChannels?: number;
|
|
424
|
+
/**
|
|
425
|
+
* Sample rate of `audio` in Hz. Required whenever `audio` is supplied, and
|
|
426
|
+
* must be in `[8000, 384000]`: omitting it sends 0, which the native side
|
|
427
|
+
* rejects. Ignored for a metadata-only clip.
|
|
428
|
+
*/
|
|
429
|
+
audioSampleRate?: number;
|
|
430
|
+
sourceUri?: string;
|
|
431
|
+
}
|
|
432
|
+
/** Result returned by {@link Project.addMidiClip}. */
|
|
433
|
+
export interface ProjectMidiClipResult {
|
|
434
|
+
trackId: number;
|
|
435
|
+
clipId: number;
|
|
436
|
+
}
|
|
437
|
+
/** Flat MIDI event accepted by {@link Project.setMidiEvents}. */
|
|
438
|
+
/**
|
|
439
|
+
* One MIDI event in a clip's list: a position plus the first two UMP words.
|
|
440
|
+
*
|
|
441
|
+
* @remarks
|
|
442
|
+
* Channel-voice messages only. A clip's SysEx payloads live beside the event
|
|
443
|
+
* list and are reached by a handle this type does not carry — they survive
|
|
444
|
+
* {@link Project.importSmf}, {@link Project.exportSmf} and project
|
|
445
|
+
* serialization, and are destroyed by {@link Project.setMidiEvents}.
|
|
446
|
+
*/
|
|
447
|
+
export interface ProjectMidiEvent {
|
|
448
|
+
ppq: number;
|
|
449
|
+
data0: number;
|
|
450
|
+
data1?: number;
|
|
451
|
+
}
|
|
452
|
+
/** Options for {@link Project.midiRouteEvents}. `null`/omitted filter fields mean any/no remap. */
|
|
453
|
+
export interface ProjectMidiRouteConfig {
|
|
454
|
+
filterGroup?: number | null;
|
|
455
|
+
filterChannel?: number | null;
|
|
456
|
+
remapChannel?: number | null;
|
|
457
|
+
thru?: boolean;
|
|
458
|
+
}
|
|
459
|
+
/** Result of {@link Project.midiRouteEvents}. */
|
|
460
|
+
export interface ProjectMidiRouteResult {
|
|
461
|
+
events: ProjectMidiEvent[];
|
|
462
|
+
overflowed: boolean;
|
|
463
|
+
overflowCount: number;
|
|
464
|
+
}
|
|
465
|
+
export type ProjectMidiCcBindingKind = 0 | 1 | 2 | 3;
|
|
466
|
+
/** Options for {@link Project.midiCcLearn}. All fields are optional. */
|
|
467
|
+
export interface MidiCcLearnOptions {
|
|
468
|
+
/** Lower end of the mapped parameter range. Default `0`. */
|
|
469
|
+
minValue?: number;
|
|
470
|
+
/** Upper end of the mapped parameter range. Default `1`. */
|
|
471
|
+
maxValue?: number;
|
|
472
|
+
/** Activity threshold in 7-bit CC units (integer 0-127) a controller must move to be learned. Default `0`. */
|
|
473
|
+
minMovement?: number;
|
|
474
|
+
}
|
|
475
|
+
/** MIDI CC <-> automation binding descriptor used by CC learn/conversion helpers. */
|
|
476
|
+
export interface ProjectMidiCcBinding {
|
|
477
|
+
ccNumber: number;
|
|
478
|
+
/** MIDI channel 0..15, or 255 for any channel. Omit for the any-channel sentinel `255`. */
|
|
479
|
+
channel?: number;
|
|
480
|
+
/** 0 = 7-bit CC, 1 = 14-bit CC, 2 = RPN, 3 = NRPN. Default `0`. */
|
|
481
|
+
kind?: ProjectMidiCcBindingKind;
|
|
482
|
+
ccLsbNumber?: number;
|
|
483
|
+
selectorMsb?: number;
|
|
484
|
+
selectorLsb?: number;
|
|
485
|
+
paramId: number;
|
|
486
|
+
/** Lower end of the mapped parameter range. Default `0`. */
|
|
487
|
+
minValue?: number;
|
|
488
|
+
/** Upper end of the mapped parameter range. Default `1`. */
|
|
489
|
+
maxValue?: number;
|
|
490
|
+
}
|
|
491
|
+
/** Result of {@link Project.validateMidiNotes}. */
|
|
492
|
+
export interface ProjectNotePairValidation {
|
|
493
|
+
/** True when every note-on has a matching note-off (and vice versa). */
|
|
494
|
+
ok: boolean;
|
|
495
|
+
/** Count of note-ons that never received a matching note-off. */
|
|
496
|
+
unmatchedNoteOns: number;
|
|
497
|
+
/** Count of note-offs with no preceding matching note-on. */
|
|
498
|
+
unmatchedNoteOffs: number;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Request form of {@link Project.bakeMidiFx}. The positional
|
|
502
|
+
* `(clipId, configJson)` call stays supported and normalizes to this shape.
|
|
503
|
+
*/
|
|
504
|
+
export interface ProjectMidiFxBakeRequest {
|
|
505
|
+
/** Target MIDI clip id. */
|
|
506
|
+
clipId: number;
|
|
507
|
+
/** MIDI-FX chain configuration as JSON. */
|
|
508
|
+
configJson: string;
|
|
509
|
+
/** Return per-event provenance in the result. Default false. */
|
|
510
|
+
withSourceIndex?: boolean;
|
|
511
|
+
}
|
|
512
|
+
/** Result of the request form of {@link Project.bakeMidiFx}. */
|
|
513
|
+
export interface ProjectMidiFxBakeResult {
|
|
514
|
+
/**
|
|
515
|
+
* One entry per transformed event in canonical order: the index of the input
|
|
516
|
+
* event it derives from, or -1 for an event with no originating input. Chord
|
|
517
|
+
* and arpeggiator fan-out makes several outputs share one source index, so a
|
|
518
|
+
* caller that treats the first output per index as the same event and the
|
|
519
|
+
* rest as newly generated can carry a selection across the bake. Present only
|
|
520
|
+
* when the request set `withSourceIndex`.
|
|
521
|
+
*/
|
|
522
|
+
sourceIndex?: Int32Array;
|
|
523
|
+
}
|
|
524
|
+
/** Request form of {@link Project.previewMidiFxCount}. */
|
|
525
|
+
export interface ProjectMidiFxPreviewRequest {
|
|
526
|
+
/** Target MIDI clip id. */
|
|
527
|
+
clipId: number;
|
|
528
|
+
/** MIDI-FX chain configuration as JSON. */
|
|
529
|
+
configJson: string;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Detector settings shared by {@link transcribe} and
|
|
533
|
+
* {@link Project.transcribeToClip}.
|
|
534
|
+
*
|
|
535
|
+
* Every field is optional and omitting one takes the documented default. A
|
|
536
|
+
* value outside a field's domain is **refused**, never silently replaced — a
|
|
537
|
+
* substituted default is indistinguishable downstream from one you chose.
|
|
538
|
+
*
|
|
539
|
+
* That includes `0` on the fields whose domain excludes it (`referenceHz`,
|
|
540
|
+
* `fmin`, `fmax`, `minNoteMs`, `segmentationThresholdCents`,
|
|
541
|
+
* `velocityFloorDb`, `fixedVelocity`): omitting the field is how you ask for
|
|
542
|
+
* the default, so a `0` you wrote is a value, and it is out of domain. Only
|
|
543
|
+
* `group` and `channel` accept `0` — there it is a value you can mean.
|
|
544
|
+
*/
|
|
545
|
+
export interface TranscribeOptions {
|
|
546
|
+
/**
|
|
547
|
+
* `true` reads the multi-F0 chain, which finds overlapping notes at the cost
|
|
548
|
+
* of a full STFT and a mask per tracked ridge. `false` (the default) reads
|
|
549
|
+
* pYIN cut into notes, which follows one line at a time.
|
|
550
|
+
*/
|
|
551
|
+
polyphonic?: boolean;
|
|
552
|
+
/**
|
|
553
|
+
* Tuning reference in Hz the MIDI note numbers are measured against.
|
|
554
|
+
* Default `440`; must be finite and positive.
|
|
555
|
+
*
|
|
556
|
+
* **It is not measured for you.** A take recorded away from A440 should have
|
|
557
|
+
* its reference measured first — run `pitchPyin` and feed its F0 array to
|
|
558
|
+
* `pitchTuning` — and the answer passed in here. Measuring it internally
|
|
559
|
+
* would track the pitch twice and hide which of the two answers a wrong
|
|
560
|
+
* transcription came from.
|
|
561
|
+
*/
|
|
562
|
+
referenceHz?: number;
|
|
563
|
+
/**
|
|
564
|
+
* F0 tracker range in Hz. Both paths use these bounds; the polyphonic path
|
|
565
|
+
* applies them to the salience estimator's F0 axis while its cent-spectrum
|
|
566
|
+
* bounds remain independent. When omitted, the monophonic defaults are `65`
|
|
567
|
+
* and `2093`, while the polyphonic defaults are `55` and `1760`. Explicit
|
|
568
|
+
* values must be finite and positive, and `fmax` must exceed `fmin`.
|
|
569
|
+
*/
|
|
570
|
+
fmin?: number;
|
|
571
|
+
/** Upper end of the F0 tracker range in Hz; omitted defaults to `2093` mono or `1760` poly. */
|
|
572
|
+
fmax?: number;
|
|
573
|
+
/** Shortest span kept as a note, in milliseconds. Default `30`; must be positive. */
|
|
574
|
+
minNoteMs?: number;
|
|
575
|
+
/**
|
|
576
|
+
* Pitch movement, in cents, that ends one note and starts the next.
|
|
577
|
+
* Default `50`; must be positive.
|
|
578
|
+
*/
|
|
579
|
+
segmentationThresholdCents?: number;
|
|
580
|
+
/**
|
|
581
|
+
* Level mapped to velocity 1, in dBFS. Default `-48`; **must be negative**.
|
|
582
|
+
*
|
|
583
|
+
* A note's peak per-frame RMS is taken in dBFS and mapped linearly from
|
|
584
|
+
* `[velocityFloorDb, 0]` onto `[1, 127]`, clamped at both ends.
|
|
585
|
+
*/
|
|
586
|
+
velocityFloorDb?: number;
|
|
587
|
+
/**
|
|
588
|
+
* An integer in `[1, 127]` gives every note that velocity and skips the level
|
|
589
|
+
* measurement. **Omit the field to measure** — `0` is refused, because it is
|
|
590
|
+
* not a MIDI velocity and omission already says "measure".
|
|
591
|
+
*/
|
|
592
|
+
fixedVelocity?: number;
|
|
593
|
+
/** UMP group the events are emitted on, `0..15`. Default `0`. */
|
|
594
|
+
group?: number;
|
|
595
|
+
/** MIDI channel the events are emitted on, `0..15`. Default `0`. */
|
|
596
|
+
channel?: number;
|
|
597
|
+
}
|
|
598
|
+
/** Result of {@link transcribe}. */
|
|
599
|
+
export interface TranscribeResult {
|
|
600
|
+
/**
|
|
601
|
+
* Note-on / note-off pairs in canonical PPQ order, ready to hand straight to
|
|
602
|
+
* {@link Project.setMidiEvents}.
|
|
603
|
+
*
|
|
604
|
+
* Ordering is `(ppq, note-off before note-on)`. A note-off sharing a tick
|
|
605
|
+
* with the next note's on comes first, so a consumer playing the events in
|
|
606
|
+
* order does not start a legato repeat of the same pitch and immediately
|
|
607
|
+
* stop it.
|
|
608
|
+
*/
|
|
609
|
+
events: ProjectMidiEvent[];
|
|
610
|
+
/** Number of notes, which is always half `events.length`. */
|
|
611
|
+
noteCount: number;
|
|
612
|
+
/** The tempo the PPQ coordinates were built on — yours when you gave one, the detected one otherwise. */
|
|
613
|
+
tempoBpm: number;
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* Request form of {@link Project.transcribeToClip}.
|
|
617
|
+
*
|
|
618
|
+
* No `tempoBpm`: the PPQ grid is the **project's own tempo map**, so a project
|
|
619
|
+
* whose tempo was installed by {@link Project.autoTempo} transcribes onto that
|
|
620
|
+
* map rather than onto a second, separately detected tempo.
|
|
621
|
+
*/
|
|
622
|
+
export interface ProjectTranscribeRequest extends TranscribeOptions {
|
|
623
|
+
/** Target MIDI clip id. Its entire event list is replaced. */
|
|
624
|
+
clipId: number;
|
|
625
|
+
/** Mono source audio. Must be non-empty and all-finite. */
|
|
626
|
+
samples: Float32Array;
|
|
627
|
+
/** Sample rate of `samples` in Hz, `[8000, 384000]`. */
|
|
628
|
+
sampleRate: number;
|
|
629
|
+
}
|
|
630
|
+
/** One compile diagnostic (mirrors SonareProjectDiagnostic). */
|
|
631
|
+
export interface ProjectDiagnostic {
|
|
632
|
+
code: number;
|
|
633
|
+
/** 0 = error, 1 = warning. */
|
|
634
|
+
severity: number;
|
|
635
|
+
/** Affected clip / track / source id (0 = n/a). */
|
|
636
|
+
targetId: number;
|
|
637
|
+
/** Human-readable message for this diagnostic. */
|
|
638
|
+
message: string;
|
|
639
|
+
}
|
|
640
|
+
/** Diagnostics summary returned by {@link Project.compile}. */
|
|
641
|
+
export interface ProjectCompileResult {
|
|
642
|
+
/** Number of diagnostics surfaced by the compile. Kept for backward compatibility. */
|
|
643
|
+
diagnosticCount: number;
|
|
644
|
+
/** True when compilation produced a renderable timeline (no error diagnostics). */
|
|
645
|
+
hasTimeline: boolean;
|
|
646
|
+
/** Newline-joined human-readable detail of every diagnostic. */
|
|
647
|
+
messages: string;
|
|
648
|
+
diagnostics: ProjectDiagnostic[];
|
|
649
|
+
}
|
|
650
|
+
export interface ProjectDeserializeResult {
|
|
651
|
+
project: Project;
|
|
652
|
+
diagnostics: string;
|
|
653
|
+
}
|
|
654
|
+
//# sourceMappingURL=project_types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project_types.d.ts","sourceRoot":"","sources":["../src/project_types.ts"],"names":[],"mappings":"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"}
|