@libraz/libsonare 1.7.1 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +178 -0
- package/README.md +26 -170
- package/dist/_chain_config.d.ts +14 -0
- package/dist/_chain_config.d.ts.map +1 -0
- package/dist/_effects_common.d.ts +6 -0
- package/dist/_effects_common.d.ts.map +1 -0
- package/dist/_feature_validation.d.ts +8 -0
- package/dist/_feature_validation.d.ts.map +1 -0
- package/dist/_fft_options.d.ts +24 -0
- package/dist/_fft_options.d.ts.map +1 -0
- package/dist/align_take.d.ts +50 -0
- package/dist/align_take.d.ts.map +1 -0
- package/dist/analysis.d.ts +29 -5837
- package/dist/analysis.d.ts.map +1 -0
- package/dist/analysis.js +873 -722
- package/dist/analysis.js.map +1 -1
- package/dist/analysis_helpers.d.ts +9 -0
- package/dist/analysis_helpers.d.ts.map +1 -0
- package/dist/audio.d.ts +163 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/clip_page_streamer.d.ts +133 -0
- package/dist/clip_page_streamer.d.ts.map +1 -0
- package/dist/codes.d.ts +44 -0
- package/dist/codes.d.ts.map +1 -0
- package/dist/effects_mastering.d.ts +23 -0
- package/dist/effects_mastering.d.ts.map +1 -0
- package/dist/effects_note_ops.d.ts +477 -0
- package/dist/effects_note_ops.d.ts.map +1 -0
- package/dist/effects_percussive.d.ts +185 -0
- package/dist/effects_percussive.d.ts.map +1 -0
- package/dist/effects_separation.d.ts +65 -0
- package/dist/effects_separation.d.ts.map +1 -0
- package/dist/effects_spectral.d.ts +28 -0
- package/dist/effects_spectral.d.ts.map +1 -0
- package/dist/effects_timepitch.d.ts +129 -0
- package/dist/effects_timepitch.d.ts.map +1 -0
- package/dist/effects_voice_change.d.ts +53 -0
- package/dist/effects_voice_change.d.ts.map +1 -0
- package/dist/errors.d.ts +51 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/feature_core.d.ts +341 -0
- package/dist/feature_core.d.ts.map +1 -0
- package/dist/feature_decompose.d.ts +278 -0
- package/dist/feature_decompose.d.ts.map +1 -0
- package/dist/feature_inverse.d.ts +128 -0
- package/dist/feature_inverse.d.ts.map +1 -0
- package/dist/feature_loudness.d.ts +66 -0
- package/dist/feature_loudness.d.ts.map +1 -0
- package/dist/feature_music.d.ts +307 -0
- package/dist/feature_music.d.ts.map +1 -0
- package/dist/feature_pitch.d.ts +108 -0
- package/dist/feature_pitch.d.ts.map +1 -0
- package/dist/feature_resample.d.ts +16 -0
- package/dist/feature_resample.d.ts.map +1 -0
- package/dist/feature_spectral.d.ts +137 -0
- package/dist/feature_spectral.d.ts.map +1 -0
- package/dist/feature_spectrogram.d.ts +198 -0
- package/dist/feature_spectrogram.d.ts.map +1 -0
- package/dist/features.d.ts +10 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/hrtf/default.shrf +0 -0
- package/dist/index.d.ts +74 -7329
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3816 -1359
- package/dist/index.js.map +1 -1
- package/dist/instrument_types.d.ts +517 -0
- package/dist/instrument_types.d.ts.map +1 -0
- package/dist/live_audio.d.ts +35 -0
- package/dist/live_audio.d.ts.map +1 -0
- package/dist/mastering_chain.d.ts +213 -0
- package/dist/mastering_chain.d.ts.map +1 -0
- package/dist/mastering_core.d.ts +457 -0
- package/dist/mastering_core.d.ts.map +1 -0
- package/dist/mastering_dynamics.d.ts +80 -0
- package/dist/mastering_dynamics.d.ts.map +1 -0
- package/dist/metering.d.ts +287 -0
- package/dist/metering.d.ts.map +1 -0
- package/dist/mixer.d.ts +464 -0
- package/dist/mixer.d.ts.map +1 -0
- package/dist/mixing_assistant.d.ts +62 -0
- package/dist/mixing_assistant.d.ts.map +1 -0
- package/dist/mixing_oneshot.d.ts +40 -0
- package/dist/mixing_oneshot.d.ts.map +1 -0
- package/dist/module_state.d.ts +15 -0
- package/dist/module_state.d.ts.map +1 -0
- package/dist/opfs_clip_pages.d.ts +28 -0
- package/dist/opfs_clip_pages.d.ts.map +1 -0
- package/dist/playback_renderer.d.ts +128 -0
- package/dist/playback_renderer.d.ts.map +1 -0
- package/dist/polyphony.d.ts +202 -0
- package/dist/polyphony.d.ts.map +1 -0
- package/dist/project.d.ts +8 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project_class.d.ts +562 -0
- package/dist/project_class.d.ts.map +1 -0
- package/dist/project_internal.d.ts +194 -0
- package/dist/project_internal.d.ts.map +1 -0
- package/dist/project_synth.d.ts +74 -0
- package/dist/project_synth.d.ts.map +1 -0
- package/dist/project_types.d.ts +652 -0
- package/dist/project_types.d.ts.map +1 -0
- package/dist/public_types.d.ts +185 -0
- package/dist/public_types.d.ts.map +1 -0
- package/dist/public_types_acoustic.d.ts +215 -0
- package/dist/public_types_acoustic.d.ts.map +1 -0
- package/dist/public_types_mastering.d.ts +510 -0
- package/dist/public_types_mastering.d.ts.map +1 -0
- package/dist/public_types_mixing.d.ts +436 -0
- package/dist/public_types_mixing.d.ts.map +1 -0
- package/dist/public_types_music.d.ts +619 -0
- package/dist/public_types_music.d.ts.map +1 -0
- package/dist/public_types_playback.d.ts +164 -0
- package/dist/public_types_playback.d.ts.map +1 -0
- package/dist/public_types_realtime.d.ts +174 -0
- package/dist/public_types_realtime.d.ts.map +1 -0
- package/dist/public_types_repair.d.ts +424 -0
- package/dist/public_types_repair.d.ts.map +1 -0
- package/dist/public_types_spectral.d.ts +697 -0
- package/dist/public_types_spectral.d.ts.map +1 -0
- package/dist/quick_analysis.d.ts +445 -0
- package/dist/quick_analysis.d.ts.map +1 -0
- package/dist/realtime_engine.d.ts +850 -0
- package/dist/realtime_engine.d.ts.map +1 -0
- package/dist/realtime_voice_changer.d.ts +158 -0
- package/dist/realtime_voice_changer.d.ts.map +1 -0
- package/dist/repair_dereverb.d.ts +187 -0
- package/dist/repair_dereverb.d.ts.map +1 -0
- package/dist/repair_impulsive.d.ts +186 -0
- package/dist/repair_impulsive.d.ts.map +1 -0
- package/dist/repair_noise.d.ts +239 -0
- package/dist/repair_noise.d.ts.map +1 -0
- package/dist/repair_trim.d.ts +123 -0
- package/dist/repair_trim.d.ts.map +1 -0
- package/dist/sample_bank.d.ts +84 -0
- package/dist/sample_bank.d.ts.map +1 -0
- package/dist/scale.d.ts +10 -0
- package/dist/scale.d.ts.map +1 -0
- package/dist/schemas/mixer-scene.schema.json +393 -0
- package/dist/schemas/playback-renderer-config.schema.json +392 -0
- package/dist/sonare-analysis.d.ts +8 -0
- package/dist/sonare-analysis.js +2 -2
- package/dist/sonare-analysis.wasm +0 -0
- package/dist/sonare.d.ts +3909 -0
- package/dist/sonare.js +2 -2
- package/dist/sonare.wasm +0 -0
- package/dist/stream_analyzer.d.ts +163 -0
- package/dist/stream_analyzer.d.ts.map +1 -0
- package/dist/stream_types.d.ts +214 -0
- package/dist/stream_types.d.ts.map +1 -0
- package/dist/streaming_mixing.d.ts +6 -0
- package/dist/streaming_mixing.d.ts.map +1 -0
- package/dist/streaming_processors.d.ts +335 -0
- package/dist/streaming_processors.d.ts.map +1 -0
- package/dist/transcribe.d.ts +77 -0
- package/dist/transcribe.d.ts.map +1 -0
- package/dist/validation.d.ts +140 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/web_midi.d.ts +77 -0
- package/dist/web_midi.d.ts.map +1 -0
- package/dist/worker.d.ts +5 -48
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +94 -41
- package/dist/worker.js.map +1 -1
- package/dist/worker_client.d.ts +96 -0
- package/dist/worker_client.d.ts.map +1 -0
- package/dist/worker_protocol.d.ts +43 -0
- package/dist/worker_protocol.d.ts.map +1 -0
- package/dist/worklet/audio_types.d.ts +21 -0
- package/dist/worklet/audio_types.d.ts.map +1 -0
- package/dist/worklet/engine-automation.d.ts +29 -0
- package/dist/worklet/engine-automation.d.ts.map +1 -0
- package/dist/worklet/engine-capture-facade.d.ts +35 -0
- package/dist/worklet/engine-capture-facade.d.ts.map +1 -0
- package/dist/worklet/engine-clips.d.ts +23 -0
- package/dist/worklet/engine-clips.d.ts.map +1 -0
- package/dist/worklet/engine-markers.d.ts +40 -0
- package/dist/worklet/engine-markers.d.ts.map +1 -0
- package/dist/worklet/engine-mixer-facade.d.ts +128 -0
- package/dist/worklet/engine-mixer-facade.d.ts.map +1 -0
- package/dist/worklet/engine-node.d.ts +81 -0
- package/dist/worklet/engine-node.d.ts.map +1 -0
- package/dist/worklet/engine-offline.d.ts +81 -0
- package/dist/worklet/engine-offline.d.ts.map +1 -0
- package/dist/worklet/engine-options.d.ts +12 -0
- package/dist/worklet/engine-options.d.ts.map +1 -0
- package/dist/worklet/engine-parameter-facade.d.ts +106 -0
- package/dist/worklet/engine-parameter-facade.d.ts.map +1 -0
- package/dist/worklet/engine-processor.d.ts +68 -0
- package/dist/worklet/engine-processor.d.ts.map +1 -0
- package/dist/worklet/engine-register.d.ts +2 -0
- package/dist/worklet/engine-register.d.ts.map +1 -0
- package/dist/worklet/engine-strips.d.ts +73 -0
- package/dist/worklet/engine-strips.d.ts.map +1 -0
- package/dist/worklet/engine-sync.d.ts +37 -0
- package/dist/worklet/engine-sync.d.ts.map +1 -0
- package/dist/worklet/engine-tempo-facade.d.ts +48 -0
- package/dist/worklet/engine-tempo-facade.d.ts.map +1 -0
- package/dist/worklet/engine.d.ts +397 -0
- package/dist/worklet/engine.d.ts.map +1 -0
- package/dist/worklet/guards.d.ts +47 -0
- package/dist/worklet/guards.d.ts.map +1 -0
- package/dist/worklet/messages.d.ts +710 -0
- package/dist/worklet/messages.d.ts.map +1 -0
- package/dist/worklet/mixer-processor.d.ts +46 -0
- package/dist/worklet/mixer-processor.d.ts.map +1 -0
- package/dist/worklet/playback-processor.d.ts +62 -0
- package/dist/worklet/playback-processor.d.ts.map +1 -0
- package/dist/worklet/protocol.d.ts +323 -0
- package/dist/worklet/protocol.d.ts.map +1 -0
- package/dist/worklet/voice-changer-processor.d.ts +41 -0
- package/dist/worklet/voice-changer-processor.d.ts.map +1 -0
- package/dist/worklet.d.ts +16 -2142
- package/dist/worklet.d.ts.map +1 -0
- package/dist/worklet.js +2889 -466
- package/dist/worklet.js.map +1 -1
- package/package.json +23 -12
- package/src/_effects_common.ts +17 -0
- package/src/_feature_validation.ts +34 -0
- package/src/_fft_options.ts +39 -0
- package/src/align_take.ts +64 -0
- package/src/analysis.ts +56 -3
- package/src/analysis_helpers.ts +7 -0
- package/src/audio.ts +106 -3
- package/src/codes.ts +39 -2
- package/src/effects_mastering.ts +97 -22
- package/src/effects_note_ops.ts +635 -0
- package/src/effects_percussive.ts +217 -0
- package/src/effects_separation.ts +150 -0
- package/src/effects_spectral.ts +60 -0
- package/src/effects_timepitch.ts +377 -0
- package/src/errors.ts +23 -1
- package/src/feature_core.ts +127 -2
- package/src/feature_decompose.ts +633 -0
- package/src/feature_inverse.ts +454 -0
- package/src/feature_loudness.ts +125 -0
- package/src/feature_music.ts +107 -14
- package/src/feature_pitch.ts +96 -1
- package/src/feature_spectral.ts +16 -611
- package/src/feature_spectrogram.ts +63 -450
- package/src/features.ts +36 -22
- package/src/index.ts +285 -30
- package/src/instrument_types.ts +645 -0
- package/src/live_audio.ts +27 -1
- package/src/mastering_chain.ts +184 -0
- package/src/mastering_core.ts +346 -32
- package/src/mastering_dynamics.ts +22 -11
- package/src/metering.ts +67 -24
- package/src/mixer.ts +212 -3
- package/src/mixing_assistant.ts +138 -0
- package/src/mixing_oneshot.ts +10 -5
- package/src/module_state.ts +24 -2
- package/src/playback_renderer.ts +252 -0
- package/src/polyphony.ts +279 -0
- package/src/project.ts +64 -24
- package/src/project_class.ts +502 -29
- package/src/project_internal.ts +151 -42
- package/src/project_synth.ts +67 -1
- package/src/project_types.ts +302 -270
- package/src/public_types.ts +122 -3
- package/src/public_types_acoustic.ts +112 -3
- package/src/public_types_mastering.ts +254 -73
- package/src/public_types_mixing.ts +363 -1
- package/src/public_types_music.ts +312 -2
- package/src/public_types_playback.ts +195 -0
- package/src/public_types_realtime.ts +39 -7
- package/src/public_types_repair.ts +446 -0
- package/src/public_types_spectral.ts +487 -1
- package/src/quick_analysis.ts +203 -26
- package/src/realtime_engine.ts +750 -28
- package/src/realtime_voice_changer.ts +55 -1
- package/src/repair_dereverb.ts +299 -0
- package/src/repair_impulsive.ts +395 -0
- package/src/repair_noise.ts +425 -0
- package/src/repair_trim.ts +226 -0
- package/src/sample_bank.ts +113 -0
- package/src/sonare.js.d.ts +1125 -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 +212 -10
- package/src/transcribe.ts +89 -0
- package/src/validation.ts +285 -11
- package/src/web_midi.ts +1 -6
- package/src/worker.ts +18 -2
- package/src/worklet/audio_types.ts +37 -0
- package/src/worklet/engine-mixer-facade.ts +444 -10
- package/src/worklet/engine-node.ts +85 -28
- package/src/worklet/engine-offline.ts +14 -8
- package/src/worklet/engine-parameter-facade.ts +21 -0
- package/src/worklet/engine-processor.ts +307 -71
- package/src/worklet/engine-register.ts +32 -18
- package/src/worklet/engine-strips.ts +280 -9
- package/src/worklet/engine-sync.ts +14 -6
- package/src/worklet/engine.ts +365 -31
- package/src/worklet/guards.ts +140 -44
- package/src/worklet/messages.ts +239 -2
- package/src/worklet/mixer-processor.ts +109 -47
- package/src/worklet/playback-processor.ts +300 -0
- package/src/worklet/protocol.ts +53 -3
- package/src/worklet/voice-changer-processor.ts +17 -11
- package/src/worklet.ts +22 -0
- package/src/effects_transform.ts +0 -718
- package/src/mastering_repair.ts +0 -273
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
import type { BuiltinSynthBinding, Sf2InstrumentConfig, Sf2ProgramStatus, SynthPatch } from './instrument_types';
|
|
2
|
+
import type { ExternalSeparatedStemImportRequest, ExternalSeparatedStemImportResult, MidiCcLearnOptions, ProjectAssistSidecar, ProjectAssistSidecarInput, ProjectAutomationLaneDesc, ProjectAutomationPoint, ProjectBounceOptions, ProjectChordSymbol, ProjectClip, ProjectClipCompSegment, ProjectClipDesc, ProjectClipFade, ProjectClipTake, ProjectCompileResult, ProjectDeserializeResult, ProjectKeySegment, ProjectLoopMode, ProjectLoopRecordingDesc, ProjectLoopRecordingResult, ProjectMarker, ProjectMidiCcBinding, ProjectMidiClipResult, ProjectMidiEvent, ProjectMidiFxBakeRequest, ProjectMidiFxBakeResult, ProjectMidiFxPreviewRequest, ProjectMidiRouteConfig, ProjectMidiRouteResult, ProjectNotePairValidation, ProjectSource, ProjectTempoCandidate, ProjectTempoOptions, ProjectTempoSegment, ProjectTimeSignatureSegment, ProjectTrack, ProjectTrackDesc, ProjectTrackKind, ProjectTranscribeRequest, ProjectWarpMapDesc, ProjectWarpMode } from './project_types';
|
|
3
|
+
/**
|
|
4
|
+
* Headless DAW project (control-thread-only arrangement model).
|
|
5
|
+
*
|
|
6
|
+
* Wraps the embind `Project` class over the C-ABI keystone
|
|
7
|
+
* `sonare_c_project.{h,cpp}`. Construct an empty project with `new Project()`,
|
|
8
|
+
* or deserialize one with {@link Project.fromJson}; serialize back with
|
|
9
|
+
* {@link toJson}; compile to a renderable timeline with {@link compile}; render
|
|
10
|
+
* offline to interleaved float audio with {@link bounce}. The edit and MIDI
|
|
11
|
+
* methods mirror the Node/Python project bindings.
|
|
12
|
+
*
|
|
13
|
+
* Call {@link delete} (or use a `try/finally`) to release the underlying WASM
|
|
14
|
+
* object — the embind handle is not garbage-collected automatically.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const project = new Project();
|
|
19
|
+
* try {
|
|
20
|
+
* project.setSampleRate(48000);
|
|
21
|
+
* const json = project.toJson();
|
|
22
|
+
* const restored = Project.fromJson(json);
|
|
23
|
+
* restored.delete();
|
|
24
|
+
* } finally {
|
|
25
|
+
* project.delete();
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare class Project {
|
|
30
|
+
private native;
|
|
31
|
+
private released;
|
|
32
|
+
constructor();
|
|
33
|
+
/** Create a new empty project. */
|
|
34
|
+
static create(): Project;
|
|
35
|
+
/** Pack a MIDI 1.0 note-on event accepted by {@link setMidiEvents}. */
|
|
36
|
+
static midiNoteOn(ppq: number, group: number, channel: number, note: number, velocity: number): ProjectMidiEvent;
|
|
37
|
+
/** Pack a MIDI 1.0 note-off event accepted by {@link setMidiEvents}. */
|
|
38
|
+
static midiNoteOff(ppq: number, group: number, channel: number, note: number, velocity?: number): ProjectMidiEvent;
|
|
39
|
+
/** Pack a MIDI 1.0 control-change event. */
|
|
40
|
+
static midiCc(ppq: number, group: number, channel: number, controller: number, value: number): ProjectMidiEvent;
|
|
41
|
+
/** Pack a MIDI 1.0 poly-pressure event. */
|
|
42
|
+
static midiPolyPressure(ppq: number, group: number, channel: number, note: number, pressure: number): ProjectMidiEvent;
|
|
43
|
+
/** Pack a MIDI 1.0 program-change event. */
|
|
44
|
+
static midiProgram(ppq: number, group: number, channel: number, program: number): ProjectMidiEvent;
|
|
45
|
+
/**
|
|
46
|
+
* Pack a MIDI 2.0 note-on event accepted by {@link setMidiEvents}.
|
|
47
|
+
* `velocity16` is the full 16-bit velocity (0 is a sounding note-on);
|
|
48
|
+
* `attributeType` 0 is none, 3 is pitch 7.9.
|
|
49
|
+
*/
|
|
50
|
+
static midi2NoteOn(ppq: number, group: number, channel: number, note: number, velocity16: number, attributeType?: number, attributeData?: number): ProjectMidiEvent;
|
|
51
|
+
/** Pack a MIDI 2.0 note-off event (`velocity16` is the full 16-bit release velocity). */
|
|
52
|
+
static midi2NoteOff(ppq: number, group: number, channel: number, note: number, velocity16?: number): ProjectMidiEvent;
|
|
53
|
+
/** Pack a MIDI 2.0 control-change event (`value32` is the full 32-bit value). */
|
|
54
|
+
static midi2Cc(ppq: number, group: number, channel: number, controller: number, value32: number): ProjectMidiEvent;
|
|
55
|
+
/** Pack a MIDI 2.0 poly-pressure event (`pressure32` is the full 32-bit pressure). */
|
|
56
|
+
static midi2PolyPressure(ppq: number, group: number, channel: number, note: number, pressure32: number): ProjectMidiEvent;
|
|
57
|
+
/** Pack a MIDI 2.0 channel-pressure event (`pressure32` is the full 32-bit pressure). */
|
|
58
|
+
static midi2ChannelPressure(ppq: number, group: number, channel: number, pressure32: number): ProjectMidiEvent;
|
|
59
|
+
/** Pack a MIDI 2.0 pitch-bend event (`bend32` is unsigned 32-bit, center = 0x80000000). */
|
|
60
|
+
static midi2PitchBend(ppq: number, group: number, channel: number, bend32: number): ProjectMidiEvent;
|
|
61
|
+
/**
|
|
62
|
+
* Pack a MIDI 2.0 program-change event. The bank travels in the same message
|
|
63
|
+
* and is applied only when `bankValid` is true.
|
|
64
|
+
*/
|
|
65
|
+
static midi2Program(ppq: number, group: number, channel: number, program: number, bankValid?: boolean, bankMsb?: number, bankLsb?: number): ProjectMidiEvent;
|
|
66
|
+
/** Pack a MIDI 2.0 registered controller (RPN) event. */
|
|
67
|
+
static midi2RegisteredController(ppq: number, group: number, channel: number, bank: number, index: number, value32: number): ProjectMidiEvent;
|
|
68
|
+
/** Pack a MIDI 2.0 assignable controller (NRPN) event. */
|
|
69
|
+
static midi2AssignableController(ppq: number, group: number, channel: number, bank: number, index: number, value32: number): ProjectMidiEvent;
|
|
70
|
+
/** Pack a MIDI 2.0 relative registered controller event (`delta32` is a signed change). */
|
|
71
|
+
static midi2RelativeRegisteredController(ppq: number, group: number, channel: number, bank: number, index: number, delta32: number): ProjectMidiEvent;
|
|
72
|
+
/** Pack a MIDI 2.0 relative assignable controller event (`delta32` is a signed change). */
|
|
73
|
+
static midi2RelativeAssignableController(ppq: number, group: number, channel: number, bank: number, index: number, delta32: number): ProjectMidiEvent;
|
|
74
|
+
/** Pack a MIDI 2.0 registered per-note controller event (`index` is 0..255). */
|
|
75
|
+
static midi2RegisteredPerNoteController(ppq: number, group: number, channel: number, note: number, index: number, value32: number): ProjectMidiEvent;
|
|
76
|
+
/** Pack a MIDI 2.0 assignable per-note controller event (`index` is 0..255). */
|
|
77
|
+
static midi2AssignablePerNoteController(ppq: number, group: number, channel: number, note: number, index: number, value32: number): ProjectMidiEvent;
|
|
78
|
+
/** Pack a MIDI 2.0 per-note pitch-bend event (`bend32` is unsigned 32-bit, center = 0x80000000). */
|
|
79
|
+
static midi2PerNotePitchBend(ppq: number, group: number, channel: number, note: number, bend32: number): ProjectMidiEvent;
|
|
80
|
+
/**
|
|
81
|
+
* Pack a MIDI 2.0 per-note management event. `detach` sets the D flag
|
|
82
|
+
* (detach per-note controllers from voices already sounding on `note`);
|
|
83
|
+
* `reset` sets the S flag (reset the note's per-note controllers).
|
|
84
|
+
*/
|
|
85
|
+
static midi2PerNoteManagement(ppq: number, group: number, channel: number, note: number, detach?: boolean, reset?: boolean): ProjectMidiEvent;
|
|
86
|
+
/** Return the General MIDI instrument name for `program`, or `null` when out of range. */
|
|
87
|
+
static gmInstrumentName(program: number): string | null;
|
|
88
|
+
/** Return the General MIDI program number for a canonical instrument name, or `-1`. */
|
|
89
|
+
static gmProgramForName(name: string): number;
|
|
90
|
+
/** Return the General MIDI family name for `family`, or `null` when out of range. */
|
|
91
|
+
static gmFamilyName(family: number): string | null;
|
|
92
|
+
/** Return the first General MIDI program number in `family`, or `-1`. */
|
|
93
|
+
static gmFamilyFirstProgram(family: number): number;
|
|
94
|
+
/** Return the GM2 bank/program instrument variation name, or `null` when unavailable. */
|
|
95
|
+
static gm2InstrumentName(bankLsb: number, program: number): string | null;
|
|
96
|
+
/** Return the General MIDI drum name for `note`, or `null` when out of range. */
|
|
97
|
+
static gmDrumName(note: number): string | null;
|
|
98
|
+
/** Return the General MIDI drum note for a canonical drum name, or `-1`. */
|
|
99
|
+
static gmDrumNoteForName(name: string): number;
|
|
100
|
+
/** Return the GM2 drum-set name for `bankLsb`, or `null` when unavailable. */
|
|
101
|
+
static gm2DrumSetName(bankLsb: number): string | null;
|
|
102
|
+
/** Return the GM2 drum name for `bankLsb`/`note`, or `null` when unavailable. */
|
|
103
|
+
static gm2DrumName(bankLsb: number, note: number): string | null;
|
|
104
|
+
/** Return the MIDI CC name for `controller`, or `null` when out of range. */
|
|
105
|
+
static midiCcName(controller: number): string | null;
|
|
106
|
+
/** Return the MIDI CC number for a canonical controller name, or `-1`. */
|
|
107
|
+
static midiCcIndexForName(name: string): number;
|
|
108
|
+
/** Return the MIDI 2.0 per-note controller name for `index`, or `null`. */
|
|
109
|
+
static perNoteControllerName(index: number): string | null;
|
|
110
|
+
/** Expand bank-select + program-change into MIDI events accepted by {@link setMidiEvents}. */
|
|
111
|
+
static midiBankProgram(ppq: number, group: number, channel: number, bankMsb: number, bankLsb: number, program: number): ProjectMidiEvent[];
|
|
112
|
+
/** Route MIDI events through the native MidiRouter filter/remap/thru logic. */
|
|
113
|
+
static midiRouteEvents(events: ReadonlyArray<ProjectMidiEvent>, config?: ProjectMidiRouteConfig): ProjectMidiRouteResult;
|
|
114
|
+
/** Run native MIDI learn over an event stream; returns `null` when nothing is learned. */
|
|
115
|
+
static midiCcLearn(events: ReadonlyArray<ProjectMidiEvent>, paramId: number, options?: MidiCcLearnOptions): ProjectMidiCcBinding | null;
|
|
116
|
+
/** Convert one CC event to an automation breakpoint using native CcMap. */
|
|
117
|
+
static midiCcToBreakpoint(bindings: ReadonlyArray<ProjectMidiCcBinding>, event: ProjectMidiEvent): ProjectAutomationPoint | null;
|
|
118
|
+
/** Convert one automation value back to a CC UMP event using native CcMap. */
|
|
119
|
+
static midiParamToCc(bindings: ReadonlyArray<ProjectMidiCcBinding>, paramId: number, unitValue: number, group: number, ppq?: number): ProjectMidiEvent | null;
|
|
120
|
+
/** Pack a MIDI 1.0 channel-pressure event. */
|
|
121
|
+
static midiChannelPressure(ppq: number, group: number, channel: number, pressure: number): ProjectMidiEvent;
|
|
122
|
+
/** Pack a MIDI 1.0 pitch-bend event (`bend` is unsigned 14-bit, center = 8192). */
|
|
123
|
+
static midiPitchBend(ppq: number, group: number, channel: number, bend: number): ProjectMidiEvent;
|
|
124
|
+
/**
|
|
125
|
+
* Deserialize project JSON into a new {@link Project}. Throws if the JSON is
|
|
126
|
+
* malformed, surfacing the joined diagnostic messages.
|
|
127
|
+
*/
|
|
128
|
+
static fromJson(json: string): Project;
|
|
129
|
+
/**
|
|
130
|
+
* Deserialize project JSON and return native warning diagnostics emitted on
|
|
131
|
+
* successful loads, such as dangling source references preserved for repair.
|
|
132
|
+
*/
|
|
133
|
+
static fromJsonWithDiagnostics(json: string): ProjectDeserializeResult;
|
|
134
|
+
/** Serialize the project (+ MIDI content) to deterministic JSON. */
|
|
135
|
+
toJson(): string;
|
|
136
|
+
/**
|
|
137
|
+
* Set the project sample rate in Hz. Must be in `[8000, 384000]`; anything
|
|
138
|
+
* outside that range throws. Applied through the edit history, so it is
|
|
139
|
+
* undoable.
|
|
140
|
+
*/
|
|
141
|
+
setSampleRate(sampleRate: number): void;
|
|
142
|
+
/** Add a track and return its allocated stable id. */
|
|
143
|
+
addTrack(desc?: ProjectTrackDesc): number;
|
|
144
|
+
/** Add an audio or MIDI clip and return its allocated clip id. */
|
|
145
|
+
addClip(desc: ProjectClipDesc): number;
|
|
146
|
+
/** Import host-separated PCM through the normal audio-track/clip path. */
|
|
147
|
+
importExternalStems(request: ExternalSeparatedStemImportRequest): ExternalSeparatedStemImportResult;
|
|
148
|
+
/** Split captured loop-recording audio into takes and add one clip. */
|
|
149
|
+
addLoopRecordingTakes(desc: ProjectLoopRecordingDesc): ProjectLoopRecordingResult;
|
|
150
|
+
/** Create a MIDI track + clip; returns `{ trackId, clipId }`. */
|
|
151
|
+
addMidiClip(startPpq: number, lengthPpq: number): ProjectMidiClipResult;
|
|
152
|
+
/** Split a clip at `splitPpq` and return the new clip id. */
|
|
153
|
+
splitClip(clipId: number, splitPpq: number): number;
|
|
154
|
+
/** Trim a clip's start / length in PPQ. */
|
|
155
|
+
trimClip(clipId: number, newStartPpq: number, newLengthPpq: number): void;
|
|
156
|
+
/** Move a clip to `newStartPpq` and optionally another track. */
|
|
157
|
+
moveClip(clipId: number, newStartPpq: number, newTrackId?: number): void;
|
|
158
|
+
/** Change a track kind via an undoable edit. */
|
|
159
|
+
setTrackKind(trackId: number, kind: ProjectTrackKind): void;
|
|
160
|
+
/** Set a clip's warp reference id (0 clears it). */
|
|
161
|
+
setClipWarpRef(clipId: number, warpRefId: number): void;
|
|
162
|
+
/** Set a clip's warp playback mode. */
|
|
163
|
+
setClipWarpMode(clipId: number, mode: ProjectWarpMode): void;
|
|
164
|
+
/** Add or replace a first-class warp map referenced by clip warp ids. */
|
|
165
|
+
setWarpMap(map: ProjectWarpMapDesc): void;
|
|
166
|
+
/** Remove a first-class warp map by id. */
|
|
167
|
+
removeWarpMap(warpRefId: number): void;
|
|
168
|
+
/**
|
|
169
|
+
* Route a track's MIDI to host-instrument `destinationId` (0 = default). The
|
|
170
|
+
* compiler stamps every MIDI clip on the track with this id so the engine
|
|
171
|
+
* dispatches its events to the instrument registered for that destination.
|
|
172
|
+
* Routes through an undoable edit command. Builtin, NativeSynth, and SF2
|
|
173
|
+
* instruments retain source-track provenance inside a shared destination
|
|
174
|
+
* voice pool. With only zero-latency instruments bound, live lanes and
|
|
175
|
+
* channel-strip bounces remain aligned. Configure one live lane per source
|
|
176
|
+
* track that needs strip processing.
|
|
177
|
+
*/
|
|
178
|
+
setTrackMidiDestination(trackId: number, destinationId: number): void;
|
|
179
|
+
/**
|
|
180
|
+
* Set a track's linear playback gain (1.0 = unity; >= 0) via an undoable edit.
|
|
181
|
+
*
|
|
182
|
+
* The value reaches the track's audio and MIDI alike, but the stage it lands
|
|
183
|
+
* on follows the track's channel strip. A strip bound by this track alone
|
|
184
|
+
* (including one synthesized for an unbound track) carries the controls on its
|
|
185
|
+
* own fader and panner. A strip several tracks share processes their sum and
|
|
186
|
+
* carries none of them; each track applies its controls upstream instead — on
|
|
187
|
+
* its own clip schedules for audio, on its track lane for MIDI.
|
|
188
|
+
*
|
|
189
|
+
* A MIDI track's gain/pan on a shared strip ride the track lane, which is fed
|
|
190
|
+
* per source track only by an instrument that preserves source-track identity
|
|
191
|
+
* (see {@link setTrackMidiDestination}). An opaque host-callback instrument, or
|
|
192
|
+
* one reporting non-zero latency, renders one buffer per destination and has no
|
|
193
|
+
* per-track stage on a shared strip, so its gain/pan do not reach the bounce
|
|
194
|
+
* there; bind such an instrument to a track with an exclusive strip. Mute and
|
|
195
|
+
* solo are unaffected: a silenced MIDI track schedules no events at all.
|
|
196
|
+
*/
|
|
197
|
+
setTrackGain(trackId: number, gain: number): void;
|
|
198
|
+
/** Set a track's mute flag via an undoable edit (a muted track is silent). */
|
|
199
|
+
setTrackMute(trackId: number, mute: boolean): void;
|
|
200
|
+
/** Set a track's solo flag via an undoable edit (when any track is soloed, only soloed tracks sound). */
|
|
201
|
+
setTrackSolo(trackId: number, solo: boolean): void;
|
|
202
|
+
/**
|
|
203
|
+
* Set a track's stereo balance in [-1, +1] (0 = center) via an undoable edit.
|
|
204
|
+
*
|
|
205
|
+
* See {@link setTrackGain} for which stage a track's controls land on. The pan
|
|
206
|
+
* law that shapes the balance belongs to that stage: the strip's configured law
|
|
207
|
+
* on a channel strip and on the clips of an audio track sharing a strip, and
|
|
208
|
+
* the track lane's law for a MIDI track sharing a strip (the law of whatever
|
|
209
|
+
* strip the host bound to that lane, or a linear balance when none is bound).
|
|
210
|
+
* Every law is normalized so a centered track stays at unity and only the away
|
|
211
|
+
* channel is attenuated, so the difference is a taper, not a level offset.
|
|
212
|
+
*/
|
|
213
|
+
setTrackPan(trackId: number, pan: number): void;
|
|
214
|
+
/** Undo the most recent edit. */
|
|
215
|
+
undo(): void;
|
|
216
|
+
/** Redo the most recently undone edit. */
|
|
217
|
+
redo(): void;
|
|
218
|
+
/** Clear the undo/redo history without changing the current project state. */
|
|
219
|
+
clearHistory(): void;
|
|
220
|
+
/** Cap the undo history depth (clamped to >= 1); evicts oldest entries beyond the cap. */
|
|
221
|
+
setMaxUndoDepth(depth: number): void;
|
|
222
|
+
/** Set the combined undo/redo history byte cap. Zero disables retention. */
|
|
223
|
+
setMaxHistoryBytes(bytes: number): void;
|
|
224
|
+
/**
|
|
225
|
+
* Replace a MIDI clip's entire event list.
|
|
226
|
+
*
|
|
227
|
+
* @remarks
|
|
228
|
+
* Drops the clip's SysEx, which {@link importSmf} and {@link exportSmf} both
|
|
229
|
+
* keep. A clip's SysEx payloads sit beside the event list and are reached by
|
|
230
|
+
* a handle {@link ProjectMidiEvent} does not carry, so replacing the list
|
|
231
|
+
* leaves nothing referring to them: a GS setup block that survives an import
|
|
232
|
+
* and an export byte for byte is gone after one call here. Nothing reads the
|
|
233
|
+
* handles back either, so a caller that must keep the setup edits the
|
|
234
|
+
* exported file rather than the event list.
|
|
235
|
+
*/
|
|
236
|
+
setMidiEvents(clipId: number, events: ReadonlyArray<ProjectMidiEvent | readonly [number, number, number]>): void;
|
|
237
|
+
/**
|
|
238
|
+
* Import an in-memory SMF buffer; returns the first added clip id.
|
|
239
|
+
* Malformed or partially truncated tracks are rejected instead of installing
|
|
240
|
+
* a silently shortened clip.
|
|
241
|
+
*/
|
|
242
|
+
importSmf(data: Uint8Array): number;
|
|
243
|
+
/**
|
|
244
|
+
* Export the project's tempo map + MIDI clips to an SMF byte buffer.
|
|
245
|
+
*
|
|
246
|
+
* @remarks
|
|
247
|
+
* The buffer owns a plain `ArrayBuffer`, which is what the `Blob` / `File`
|
|
248
|
+
* constructors accept — so `new Blob([project.exportSmf()])` compiles without
|
|
249
|
+
* a copy through `new Uint8Array(...)` first.
|
|
250
|
+
*/
|
|
251
|
+
exportSmf(): Uint8Array<ArrayBuffer>;
|
|
252
|
+
/**
|
|
253
|
+
* Import a MIDI 2.0 Clip File (`SMF2CLIP`); returns the first added clip id.
|
|
254
|
+
* Unlike {@link importSmf}, MIDI 2.0 channel-voice messages (16-bit velocity,
|
|
255
|
+
* 32-bit CC, per-note / registered controllers, bank-valid Program Change)
|
|
256
|
+
* survive without loss.
|
|
257
|
+
*/
|
|
258
|
+
importClipFile(data: Uint8Array): number;
|
|
259
|
+
/**
|
|
260
|
+
* Export the project's tempo map + MIDI clips to a MIDI 2.0 Clip File
|
|
261
|
+
* (`SMF2CLIP`) byte buffer. MIDI 2.0-only events are written without loss —
|
|
262
|
+
* prefer this over {@link exportSmf} when MIDI 2.0 fidelity matters.
|
|
263
|
+
*
|
|
264
|
+
* @remarks
|
|
265
|
+
* As with {@link exportSmf}, the buffer owns a plain `ArrayBuffer` and goes
|
|
266
|
+
* straight into a `Blob`.
|
|
267
|
+
*/
|
|
268
|
+
exportClipFile(): Uint8Array<ArrayBuffer>;
|
|
269
|
+
/**
|
|
270
|
+
* Set a MIDI clip's channel-0 program / bank at source PPQ 0. `bank` defaults
|
|
271
|
+
* to `-1` (no Bank Select emitted), matching `setProgramOnChannel` and the
|
|
272
|
+
* Node/Python surfaces; pass `>= 0` to emit a Bank Select.
|
|
273
|
+
*/
|
|
274
|
+
setProgram(clipId: number, program: number, bank?: number): void;
|
|
275
|
+
/** Set a MIDI clip's program / bank for one UMP group and channel. */
|
|
276
|
+
setProgramOnChannel(clipId: number, group: number, channel: number, program: number, bank?: number): void;
|
|
277
|
+
/**
|
|
278
|
+
* Destructively bake a MIDI-FX chain into all stored events. Large clips are
|
|
279
|
+
* drained without truncation; failure leaves the original clip unchanged.
|
|
280
|
+
*/
|
|
281
|
+
bakeMidiFx(clipId: number, configJson: string): void;
|
|
282
|
+
/**
|
|
283
|
+
* Request form. Setting `withSourceIndex` also returns per-event provenance,
|
|
284
|
+
* so a selection or an editorial annotation can be carried across the bake.
|
|
285
|
+
*/
|
|
286
|
+
bakeMidiFx(request: ProjectMidiFxBakeRequest): ProjectMidiFxBakeResult;
|
|
287
|
+
/**
|
|
288
|
+
* Count the events {@link bakeMidiFx} would produce for this clip and
|
|
289
|
+
* configuration, without mutating the project. The transform is
|
|
290
|
+
* deterministic, so the count matches what the bake goes on to produce.
|
|
291
|
+
*/
|
|
292
|
+
previewMidiFxCount(request: ProjectMidiFxPreviewRequest): number;
|
|
293
|
+
/** Backward alias for {@link bakeMidiFx}. */
|
|
294
|
+
setMidiFx(clipId: number, configJson: string): void;
|
|
295
|
+
/**
|
|
296
|
+
* Pre-flight check for hanging / unmatched notes in a MIDI clip: reports
|
|
297
|
+
* whether every note-on in the exported half-open playback window has a
|
|
298
|
+
* matching note-off (FIFO per group+channel+note). Useful before bouncing to
|
|
299
|
+
* catch a stuck note. Throws if `clipId` is unknown or not a MIDI clip.
|
|
300
|
+
*/
|
|
301
|
+
validateMidiNotes(clipId: number): ProjectNotePairValidation;
|
|
302
|
+
/**
|
|
303
|
+
* Transcribe mono audio straight into a MIDI clip's event list, **replacing**
|
|
304
|
+
* whatever it held — exactly as {@link setMidiEvents} does.
|
|
305
|
+
*
|
|
306
|
+
* The PPQ grid is this project's own tempo map, which is why there is no
|
|
307
|
+
* `tempoBpm` field: a project whose tempo was installed by {@link autoTempo}
|
|
308
|
+
* transcribes onto that map rather than onto a second, separately detected
|
|
309
|
+
* tempo. Use the standalone `transcribe` when you want events without a
|
|
310
|
+
* project.
|
|
311
|
+
*
|
|
312
|
+
* Quantizing, tempo detection and key/chord annotation are not done here —
|
|
313
|
+
* see `transcribe` for what each belongs to.
|
|
314
|
+
*
|
|
315
|
+
* @returns the number of notes written (half the events)
|
|
316
|
+
* @throws {RangeError} on empty `samples`, a non-finite sample, or a
|
|
317
|
+
* `sampleRate` outside `[8000, 384000]`
|
|
318
|
+
* @throws {SonareError} `InvalidParameter` when `clipId` is unknown or not a
|
|
319
|
+
* MIDI clip, or on an option outside its domain; `NotSupported` when the
|
|
320
|
+
* library was built without the pitch editor
|
|
321
|
+
*/
|
|
322
|
+
transcribeToClip(request: ProjectTranscribeRequest): number;
|
|
323
|
+
/** Return ranked tempo-octave and detected-meter candidates without editing. */
|
|
324
|
+
analyzeTempo(audio: Float32Array, sampleRate: number, options?: ProjectTempoOptions): ProjectTempoCandidate[];
|
|
325
|
+
/**
|
|
326
|
+
* Detect and install a ranked tempo candidate; optionally apply detected meter.
|
|
327
|
+
*
|
|
328
|
+
* @remarks
|
|
329
|
+
* `candidateIndex` indexes the ranking {@link analyzeTempo} produced, so pair
|
|
330
|
+
* the two on the same `options`. Read the installed map back with
|
|
331
|
+
* {@link tempoSegmentCount} and {@link tempoSegmentByIndex}.
|
|
332
|
+
*/
|
|
333
|
+
autoTempo(audio: Float32Array, sampleRate: number, candidateIndex?: number, applyTimeSignatures?: boolean, options?: ProjectTempoOptions): number;
|
|
334
|
+
/** Snap to a bar (`division=0`), beat (`1`), or beat subdivision (`2+`). */
|
|
335
|
+
snapToGrid(ppq: number, strength?: number, division?: number): number;
|
|
336
|
+
/** Compile the project into a renderable timeline, surfacing diagnostics. */
|
|
337
|
+
compile(): ProjectCompileResult;
|
|
338
|
+
/**
|
|
339
|
+
* Compile + render the project offline to interleaved float audio. MIDI
|
|
340
|
+
* tracks render silently here (no instrument is bound) — use
|
|
341
|
+
* {@link bounceWithBuiltinInstrument} to make MIDI audible.
|
|
342
|
+
*
|
|
343
|
+
* When `totalFrames` is omitted (or `<= 0`) the render length is auto-derived
|
|
344
|
+
* from the arrangement, so a project with content renders without computing a
|
|
345
|
+
* frame count; an empty project yields an empty buffer.
|
|
346
|
+
*
|
|
347
|
+
* @example
|
|
348
|
+
* ```typescript
|
|
349
|
+
* const audio = project.bounce({ numChannels: 2 });
|
|
350
|
+
* ```
|
|
351
|
+
*/
|
|
352
|
+
bounce(options?: ProjectBounceOptions): Float32Array;
|
|
353
|
+
/**
|
|
354
|
+
* Compile + render the project offline, routing MIDI tracks through the
|
|
355
|
+
* built-in oscillator synth so a MIDI-only arrangement bounces to audible
|
|
356
|
+
* audio. Pass a {@link BuiltinSynthBinding} (or an array of them) to choose
|
|
357
|
+
* the patch and MIDI destination; omit it (or pass `{}`) for one
|
|
358
|
+
* default-destination sine patch. Because the parameter defaults to `{}`,
|
|
359
|
+
* omission and explicit `undefined` both create that one default binding.
|
|
360
|
+
* Use an explicitly empty array `[]` (or runtime `null`) for zero bindings,
|
|
361
|
+
* so MIDI tracks render silently.
|
|
362
|
+
*
|
|
363
|
+
* Like {@link bounce}, omitting `totalFrames` auto-derives the render length
|
|
364
|
+
* from the arrangement plus the synth's release tail.
|
|
365
|
+
*
|
|
366
|
+
* @example
|
|
367
|
+
* ```typescript
|
|
368
|
+
* // MIDI-only project -> non-silent stereo audio.
|
|
369
|
+
* const audio = project.bounceWithBuiltinInstrument(
|
|
370
|
+
* { waveform: 'saw' },
|
|
371
|
+
* { numChannels: 2 },
|
|
372
|
+
* );
|
|
373
|
+
* ```
|
|
374
|
+
*/
|
|
375
|
+
bounceWithBuiltinInstrument(instrument?: BuiltinSynthBinding | ReadonlyArray<BuiltinSynthBinding>, options?: ProjectBounceOptions): Float32Array;
|
|
376
|
+
/**
|
|
377
|
+
* Compile + render the project offline, routing MIDI tracks through the
|
|
378
|
+
* patch-driven NativeSynth — the full synthesizer (every
|
|
379
|
+
* {@link SynthEngineMode} engine plus the realism layer; the modes are
|
|
380
|
+
* enumerated by {@link SYNTH_ENGINE_MODES}). Pass a {@link SynthPatch}, a preset-name
|
|
381
|
+
* string (`'saw-lead'` / `'va:saw-lead'`; see {@link synthPresetNames}), or
|
|
382
|
+
* an array of either; each object entry may carry `destinationId` (default
|
|
383
|
+
* 0) and `useGmPrograms` (default `false`) binding conveniences, neither of
|
|
384
|
+
* which is part of the NativeSynth patch itself. When enabled, MIDI program
|
|
385
|
+
* changes select the corresponding General MIDI voice while the patch remains
|
|
386
|
+
* the fallback.
|
|
387
|
+
* Because the parameter defaults to `{}`, omission and explicit `undefined`
|
|
388
|
+
* both create one default binding. Use an explicitly empty array `[]` (or
|
|
389
|
+
* runtime `null`) for zero bindings. Unknown preset names throw.
|
|
390
|
+
* Deterministic for a fixed project + options + patch.
|
|
391
|
+
*
|
|
392
|
+
* An `engineMode: 'sample'` patch reads its PCM from the {@link SampleBank}
|
|
393
|
+
* passed as `sampleBank`; the bank must still be alive when the bounce runs,
|
|
394
|
+
* and one bound without a bank renders silence.
|
|
395
|
+
*/
|
|
396
|
+
bounceWithSynthInstrument(instrument?: SynthPatch | string | ReadonlyArray<SynthPatch | string>, options?: ProjectBounceOptions): Float32Array;
|
|
397
|
+
/**
|
|
398
|
+
* Load (parse) SoundFont 2 bytes into the project: presets / instruments /
|
|
399
|
+
* sample headers plus the sample PCM decoded to a float pool. The host
|
|
400
|
+
* fetches the `.sf2` and passes the raw bytes; they are copied into linear
|
|
401
|
+
* memory for the call and not referenced afterwards. Replaces any previously
|
|
402
|
+
* loaded SoundFont; throws on malformed input (the previous SoundFont is
|
|
403
|
+
* kept).
|
|
404
|
+
*/
|
|
405
|
+
loadSoundFont(data: Uint8Array): void;
|
|
406
|
+
/** Release the project's loaded SoundFont (no-op when none is loaded). */
|
|
407
|
+
clearSoundFont(): void;
|
|
408
|
+
/** Number of presets in the loaded SoundFont (0 when none is loaded). */
|
|
409
|
+
soundFontPresetCount(): number;
|
|
410
|
+
/**
|
|
411
|
+
* Enumerate every (channel, bank, program) combination the arrangement plays
|
|
412
|
+
* a note through, in first-use order, reporting whether each resolves in the
|
|
413
|
+
* loaded SoundFont (`'sf2'`, GS variation/drum fallbacks included) or would
|
|
414
|
+
* fall back to the built-in synth (`'synth'`). Without a loaded SoundFont
|
|
415
|
+
* every entry is a synth fallback.
|
|
416
|
+
*/
|
|
417
|
+
soundFontManifest(): Sf2ProgramStatus[];
|
|
418
|
+
/**
|
|
419
|
+
* Like {@link bounceWithBuiltinInstrument}, but each bound destination
|
|
420
|
+
* renders through a GS-compatible SoundFont player fed by the project's
|
|
421
|
+
* loaded SoundFont ({@link loadSoundFont}): 16 MIDI channels per player,
|
|
422
|
+
* channel 10 drums via bank 128, GS NRPN part edits and GS/GM SysEx resets
|
|
423
|
+
* honored. Programs the SoundFont does not cover — including bouncing with
|
|
424
|
+
* no SoundFont loaded at all — play through the built-in synthesizer GM
|
|
425
|
+
* fallback bank (the data-free floor; see {@link soundFontManifest} for the
|
|
426
|
+
* per-program backend). Because the parameter defaults to `{}`, omission and
|
|
427
|
+
* explicit `undefined` both create one default binding. Use an explicitly
|
|
428
|
+
* empty array `[]` (or runtime `null`) for zero bindings, so MIDI tracks
|
|
429
|
+
* render silently.
|
|
430
|
+
*/
|
|
431
|
+
bounceWithSf2Instrument(instrument?: Sf2InstrumentConfig | ReadonlyArray<Sf2InstrumentConfig>, options?: ProjectBounceOptions): Float32Array;
|
|
432
|
+
/** Remove a clip (undoable). */
|
|
433
|
+
removeClip(clipId: number): void;
|
|
434
|
+
/** Set a clip's linear playback gain (>= 0; undoable). */
|
|
435
|
+
setClipGain(clipId: number, gain: number): void;
|
|
436
|
+
/** Set a clip's fade-in / fade-out regions (undoable). */
|
|
437
|
+
setClipFade(clipId: number, fadeIn?: ProjectClipFade, fadeOut?: ProjectClipFade): void;
|
|
438
|
+
/** Audio source ids that need decoded PCM after deserialization. */
|
|
439
|
+
unresolvedAudioSourceIds(): number[];
|
|
440
|
+
/** Register decoded interleaved PCM for an existing audio source (undoable). */
|
|
441
|
+
setSourceAudio(sourceId: number, audio: Float32Array, channels: number, sampleRate: number): void;
|
|
442
|
+
/** Replace an audio source's metadata strings as one undoable edit. */
|
|
443
|
+
setAudioSourceMetadata(sourceId: number, contentHash: string, externalStemRole: string): void;
|
|
444
|
+
/** Replace a clip's take list and active take id (undoable). */
|
|
445
|
+
setClipTakes(clipId: number, takes: ReadonlyArray<ProjectClipTake>, activeTakeId?: number): void;
|
|
446
|
+
/** Replace a clip's comp segments (undoable). */
|
|
447
|
+
setClipCompSegments(clipId: number, segments: ReadonlyArray<ProjectClipCompSegment>): void;
|
|
448
|
+
/**
|
|
449
|
+
* Set a clip's loop mode + loop length in PPQ (undoable). `loopCrossfadePpq`
|
|
450
|
+
* is an optional equal-power crossfade at the loop seam (PPQ, finite and >= 0;
|
|
451
|
+
* 0 = hard loop); the engine clamps it to the clip's pre-roll and half the loop.
|
|
452
|
+
*/
|
|
453
|
+
setClipLoop(clipId: number, loopMode: ProjectLoopMode, loopLengthPpq?: number, loopCrossfadePpq?: number): void;
|
|
454
|
+
/** Rebind a clip to a different (already-registered) source (undoable). */
|
|
455
|
+
setClipSource(clipId: number, sourceId: number): void;
|
|
456
|
+
/** Duplicate a clip at `newStartPpq` (same track); returns the new clip id. */
|
|
457
|
+
duplicateClip(clipId: number, newStartPpq: number): number;
|
|
458
|
+
/** Remove a track and its clips (undoable). */
|
|
459
|
+
removeTrack(trackId: number): void;
|
|
460
|
+
/** Rename a track (undoable). */
|
|
461
|
+
renameTrack(trackId: number, name: string): void;
|
|
462
|
+
/** Set a track's mixer-strip binding + output target (undoable; omit / '' clears). */
|
|
463
|
+
setTrackRoute(trackId: number, channelStripRef?: string, outputTarget?: string): void;
|
|
464
|
+
/** Append an automation lane; returns its stable target parameter id (undoable). */
|
|
465
|
+
addAutomationLane(trackId: number, desc: ProjectAutomationLaneDesc): number;
|
|
466
|
+
/** Replace the lane identified by its stable target parameter id (undoable). */
|
|
467
|
+
editAutomationLane(trackId: number, targetParamId: number, desc: ProjectAutomationLaneDesc): void;
|
|
468
|
+
/** Remove the lane identified by its stable target parameter id (undoable). */
|
|
469
|
+
removeAutomationLane(trackId: number, targetParamId: number): void;
|
|
470
|
+
/** Replace the project's key annotation stream (undoable). */
|
|
471
|
+
annotateKeys(keys: ReadonlyArray<ProjectKeySegment>): void;
|
|
472
|
+
/** Replace the project's chord-symbol annotation stream (undoable). */
|
|
473
|
+
annotateChords(chords: ReadonlyArray<ProjectChordSymbol>): void;
|
|
474
|
+
/**
|
|
475
|
+
* Add or update an opaque assist sidecar via an undoable edit.
|
|
476
|
+
*
|
|
477
|
+
* The descriptor form is the canonical API and matches the Node binding;
|
|
478
|
+
* the positional form remains available for compatibility with the original
|
|
479
|
+
* WASM facade.
|
|
480
|
+
*/
|
|
481
|
+
setAssistSidecar(sidecar: ProjectAssistSidecarInput): void;
|
|
482
|
+
setAssistSidecar(moduleId: string, schemaVersion: number, targetTrackId: number, regionStartPpq: number, regionEndPpq: number, payload: Uint8Array): void;
|
|
483
|
+
/** Number of assist sidecars currently stored on the project. */
|
|
484
|
+
assistSidecarCount(): number;
|
|
485
|
+
/** Read one assist sidecar by stable project order. */
|
|
486
|
+
getAssistSidecar(index: number): ProjectAssistSidecar;
|
|
487
|
+
/** Read every stored assist sidecar in the same order as the index getter. */
|
|
488
|
+
assistSidecars(): ProjectAssistSidecar[];
|
|
489
|
+
/** Set the project's clip-overlap policy (SonareProjectOverlapPolicy ordinal). */
|
|
490
|
+
setOverlapPolicy(policy: number): void;
|
|
491
|
+
/** Read the project's clip-overlap policy (SonareProjectOverlapPolicy ordinal). */
|
|
492
|
+
getOverlapPolicy(): number;
|
|
493
|
+
/** Read the project sample rate in Hz. */
|
|
494
|
+
getSampleRate(): number;
|
|
495
|
+
/** Replace the project's mixer scene from a scene JSON string. */
|
|
496
|
+
setMixerSceneJson(sceneJson: string): void;
|
|
497
|
+
/**
|
|
498
|
+
* Add or replace a marker. Pass `markerId` 0 to allocate a new id; returns the
|
|
499
|
+
* stable marker id (the allocated id when 0 was passed).
|
|
500
|
+
*/
|
|
501
|
+
setMarker(markerId: number, ppq: number, name: string): number;
|
|
502
|
+
/**
|
|
503
|
+
* Add or replace a marker from a full {@link ProjectMarker}, including its
|
|
504
|
+
* {@link MarkerKind} and (for key signatures) the key. Pass `id` 0 to allocate
|
|
505
|
+
* a new id; returns the stable marker id.
|
|
506
|
+
*/
|
|
507
|
+
setMarkerEx(marker: ProjectMarker): number;
|
|
508
|
+
/** Read a project marker by index (0-based, in stored order). */
|
|
509
|
+
markerByIndex(index: number): ProjectMarker;
|
|
510
|
+
/** Read a stored project track by 0-based index. */
|
|
511
|
+
trackByIndex(index: number): ProjectTrack;
|
|
512
|
+
/** Read a stored project clip by 0-based index. */
|
|
513
|
+
clipByIndex(index: number): ProjectClip;
|
|
514
|
+
/** Read a stored project source by 0-based index. */
|
|
515
|
+
sourceByIndex(index: number): ProjectSource;
|
|
516
|
+
/** Number of markers in the project. */
|
|
517
|
+
markerCount(): number;
|
|
518
|
+
/** Number of tracks in the project. */
|
|
519
|
+
trackCount(): number;
|
|
520
|
+
/** Number of clips in the project. */
|
|
521
|
+
clipCount(): number;
|
|
522
|
+
/** Number of audio sources registered on the project. */
|
|
523
|
+
sourceCount(): number;
|
|
524
|
+
/** Number of tempo-map segments on the project. */
|
|
525
|
+
tempoSegmentCount(): number;
|
|
526
|
+
/**
|
|
527
|
+
* Reads a tempo segment by index, in stored order.
|
|
528
|
+
*
|
|
529
|
+
* @param index - Zero-based index below {@link tempoSegmentCount}
|
|
530
|
+
* @returns The segment, in the shape {@link setTempoSegments} accepts
|
|
531
|
+
* @throws When the index is at or past the count
|
|
532
|
+
*/
|
|
533
|
+
tempoSegmentByIndex(index: number): ProjectTempoSegment;
|
|
534
|
+
/**
|
|
535
|
+
* Reads a time-signature segment by index, in stored order.
|
|
536
|
+
*
|
|
537
|
+
* @param index - Zero-based index below {@link timeSignatureCount}
|
|
538
|
+
* @returns The segment, in the shape {@link setTimeSignatures} accepts
|
|
539
|
+
* @throws When the index is at or past the count
|
|
540
|
+
*/
|
|
541
|
+
timeSignatureByIndex(index: number): ProjectTimeSignatureSegment;
|
|
542
|
+
/** Number of time-signature segments on the project. */
|
|
543
|
+
timeSignatureCount(): number;
|
|
544
|
+
/** Replace the project's tempo map with the given segments. */
|
|
545
|
+
setTempoSegments(segments: ReadonlyArray<ProjectTempoSegment>): void;
|
|
546
|
+
/** Replace the project's time-signature map with the given segments. */
|
|
547
|
+
setTimeSignatures(segments: ReadonlyArray<ProjectTimeSignatureSegment>): void;
|
|
548
|
+
/**
|
|
549
|
+
* Compile diagnostics produced by the most recent bounce on this project
|
|
550
|
+
* (e.g. MIDI clips rendering silently without a bound instrument). On a
|
|
551
|
+
* project no bounce has ever run on, the result is empty in full:
|
|
552
|
+
* `hasTimeline` is `false` and `diagnostics` is empty. A failed bounce is
|
|
553
|
+
* distinguishable from that state, because a bounce only loses its timeline
|
|
554
|
+
* through an error diagnostic and so always reports at least one.
|
|
555
|
+
*/
|
|
556
|
+
lastBounceCompileResult(): ProjectCompileResult;
|
|
557
|
+
/** Release the underlying WASM object. Idempotent, as the Node facade is. */
|
|
558
|
+
delete(): void;
|
|
559
|
+
/** Alias for {@link delete}, provided for cross-binding (Node) compatibility. */
|
|
560
|
+
destroy(): void;
|
|
561
|
+
}
|
|
562
|
+
//# sourceMappingURL=project_class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project_class.d.ts","sourceRoot":"","sources":["../src/project_class.ts"],"names":[],"mappings":"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"}
|