@libraz/libsonare 1.7.2 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/NOTICE +178 -0
  2. package/README.md +26 -203
  3. package/dist/_chain_config.d.ts +14 -0
  4. package/dist/_chain_config.d.ts.map +1 -0
  5. package/dist/_effects_common.d.ts +6 -0
  6. package/dist/_effects_common.d.ts.map +1 -0
  7. package/dist/_feature_validation.d.ts +8 -0
  8. package/dist/_feature_validation.d.ts.map +1 -0
  9. package/dist/_fft_options.d.ts +24 -0
  10. package/dist/_fft_options.d.ts.map +1 -0
  11. package/dist/align_take.d.ts +50 -0
  12. package/dist/align_take.d.ts.map +1 -0
  13. package/dist/analysis.d.ts +29 -5840
  14. package/dist/analysis.d.ts.map +1 -0
  15. package/dist/analysis.js +873 -722
  16. package/dist/analysis.js.map +1 -1
  17. package/dist/analysis_helpers.d.ts +9 -0
  18. package/dist/analysis_helpers.d.ts.map +1 -0
  19. package/dist/audio.d.ts +163 -0
  20. package/dist/audio.d.ts.map +1 -0
  21. package/dist/clip_page_streamer.d.ts +133 -0
  22. package/dist/clip_page_streamer.d.ts.map +1 -0
  23. package/dist/codes.d.ts +44 -0
  24. package/dist/codes.d.ts.map +1 -0
  25. package/dist/effects_mastering.d.ts +23 -0
  26. package/dist/effects_mastering.d.ts.map +1 -0
  27. package/dist/effects_note_ops.d.ts +477 -0
  28. package/dist/effects_note_ops.d.ts.map +1 -0
  29. package/dist/effects_percussive.d.ts +185 -0
  30. package/dist/effects_percussive.d.ts.map +1 -0
  31. package/dist/effects_separation.d.ts +65 -0
  32. package/dist/effects_separation.d.ts.map +1 -0
  33. package/dist/effects_spectral.d.ts +28 -0
  34. package/dist/effects_spectral.d.ts.map +1 -0
  35. package/dist/effects_timepitch.d.ts +129 -0
  36. package/dist/effects_timepitch.d.ts.map +1 -0
  37. package/dist/effects_voice_change.d.ts +53 -0
  38. package/dist/effects_voice_change.d.ts.map +1 -0
  39. package/dist/errors.d.ts +51 -0
  40. package/dist/errors.d.ts.map +1 -0
  41. package/dist/feature_core.d.ts +341 -0
  42. package/dist/feature_core.d.ts.map +1 -0
  43. package/dist/feature_decompose.d.ts +278 -0
  44. package/dist/feature_decompose.d.ts.map +1 -0
  45. package/dist/feature_inverse.d.ts +128 -0
  46. package/dist/feature_inverse.d.ts.map +1 -0
  47. package/dist/feature_loudness.d.ts +66 -0
  48. package/dist/feature_loudness.d.ts.map +1 -0
  49. package/dist/feature_music.d.ts +307 -0
  50. package/dist/feature_music.d.ts.map +1 -0
  51. package/dist/feature_pitch.d.ts +108 -0
  52. package/dist/feature_pitch.d.ts.map +1 -0
  53. package/dist/feature_resample.d.ts +16 -0
  54. package/dist/feature_resample.d.ts.map +1 -0
  55. package/dist/feature_spectral.d.ts +137 -0
  56. package/dist/feature_spectral.d.ts.map +1 -0
  57. package/dist/feature_spectrogram.d.ts +198 -0
  58. package/dist/feature_spectrogram.d.ts.map +1 -0
  59. package/dist/features.d.ts +10 -0
  60. package/dist/features.d.ts.map +1 -0
  61. package/dist/hrtf/default.shrf +0 -0
  62. package/dist/index.d.ts +74 -7431
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +3758 -1362
  65. package/dist/index.js.map +1 -1
  66. package/dist/instrument_types.d.ts +517 -0
  67. package/dist/instrument_types.d.ts.map +1 -0
  68. package/dist/live_audio.d.ts +35 -0
  69. package/dist/live_audio.d.ts.map +1 -0
  70. package/dist/mastering_chain.d.ts +213 -0
  71. package/dist/mastering_chain.d.ts.map +1 -0
  72. package/dist/mastering_core.d.ts +457 -0
  73. package/dist/mastering_core.d.ts.map +1 -0
  74. package/dist/mastering_dynamics.d.ts +80 -0
  75. package/dist/mastering_dynamics.d.ts.map +1 -0
  76. package/dist/metering.d.ts +287 -0
  77. package/dist/metering.d.ts.map +1 -0
  78. package/dist/mixer.d.ts +464 -0
  79. package/dist/mixer.d.ts.map +1 -0
  80. package/dist/mixing_assistant.d.ts +62 -0
  81. package/dist/mixing_assistant.d.ts.map +1 -0
  82. package/dist/mixing_oneshot.d.ts +40 -0
  83. package/dist/mixing_oneshot.d.ts.map +1 -0
  84. package/dist/module_state.d.ts +15 -0
  85. package/dist/module_state.d.ts.map +1 -0
  86. package/dist/opfs_clip_pages.d.ts +28 -0
  87. package/dist/opfs_clip_pages.d.ts.map +1 -0
  88. package/dist/playback_renderer.d.ts +128 -0
  89. package/dist/playback_renderer.d.ts.map +1 -0
  90. package/dist/polyphony.d.ts +202 -0
  91. package/dist/polyphony.d.ts.map +1 -0
  92. package/dist/project.d.ts +8 -0
  93. package/dist/project.d.ts.map +1 -0
  94. package/dist/project_class.d.ts +562 -0
  95. package/dist/project_class.d.ts.map +1 -0
  96. package/dist/project_internal.d.ts +194 -0
  97. package/dist/project_internal.d.ts.map +1 -0
  98. package/dist/project_synth.d.ts +74 -0
  99. package/dist/project_synth.d.ts.map +1 -0
  100. package/dist/project_types.d.ts +652 -0
  101. package/dist/project_types.d.ts.map +1 -0
  102. package/dist/public_types.d.ts +185 -0
  103. package/dist/public_types.d.ts.map +1 -0
  104. package/dist/public_types_acoustic.d.ts +215 -0
  105. package/dist/public_types_acoustic.d.ts.map +1 -0
  106. package/dist/public_types_mastering.d.ts +510 -0
  107. package/dist/public_types_mastering.d.ts.map +1 -0
  108. package/dist/public_types_mixing.d.ts +436 -0
  109. package/dist/public_types_mixing.d.ts.map +1 -0
  110. package/dist/public_types_music.d.ts +619 -0
  111. package/dist/public_types_music.d.ts.map +1 -0
  112. package/dist/public_types_playback.d.ts +164 -0
  113. package/dist/public_types_playback.d.ts.map +1 -0
  114. package/dist/public_types_realtime.d.ts +174 -0
  115. package/dist/public_types_realtime.d.ts.map +1 -0
  116. package/dist/public_types_repair.d.ts +424 -0
  117. package/dist/public_types_repair.d.ts.map +1 -0
  118. package/dist/public_types_spectral.d.ts +697 -0
  119. package/dist/public_types_spectral.d.ts.map +1 -0
  120. package/dist/quick_analysis.d.ts +445 -0
  121. package/dist/quick_analysis.d.ts.map +1 -0
  122. package/dist/realtime_engine.d.ts +850 -0
  123. package/dist/realtime_engine.d.ts.map +1 -0
  124. package/dist/realtime_voice_changer.d.ts +158 -0
  125. package/dist/realtime_voice_changer.d.ts.map +1 -0
  126. package/dist/repair_dereverb.d.ts +187 -0
  127. package/dist/repair_dereverb.d.ts.map +1 -0
  128. package/dist/repair_impulsive.d.ts +186 -0
  129. package/dist/repair_impulsive.d.ts.map +1 -0
  130. package/dist/repair_noise.d.ts +239 -0
  131. package/dist/repair_noise.d.ts.map +1 -0
  132. package/dist/repair_trim.d.ts +123 -0
  133. package/dist/repair_trim.d.ts.map +1 -0
  134. package/dist/sample_bank.d.ts +84 -0
  135. package/dist/sample_bank.d.ts.map +1 -0
  136. package/dist/scale.d.ts +10 -0
  137. package/dist/scale.d.ts.map +1 -0
  138. package/dist/schemas/mixer-scene.schema.json +393 -0
  139. package/dist/schemas/playback-renderer-config.schema.json +392 -0
  140. package/dist/sonare-analysis.d.ts +8 -0
  141. package/dist/sonare-analysis.js +2 -2
  142. package/dist/sonare-analysis.wasm +0 -0
  143. package/dist/sonare.d.ts +3909 -0
  144. package/dist/sonare.js +2 -2
  145. package/dist/sonare.wasm +0 -0
  146. package/dist/stream_analyzer.d.ts +163 -0
  147. package/dist/stream_analyzer.d.ts.map +1 -0
  148. package/dist/stream_types.d.ts +214 -0
  149. package/dist/stream_types.d.ts.map +1 -0
  150. package/dist/streaming_mixing.d.ts +6 -0
  151. package/dist/streaming_mixing.d.ts.map +1 -0
  152. package/dist/streaming_processors.d.ts +335 -0
  153. package/dist/streaming_processors.d.ts.map +1 -0
  154. package/dist/transcribe.d.ts +77 -0
  155. package/dist/transcribe.d.ts.map +1 -0
  156. package/dist/validation.d.ts +140 -0
  157. package/dist/validation.d.ts.map +1 -0
  158. package/dist/web_midi.d.ts +77 -0
  159. package/dist/web_midi.d.ts.map +1 -0
  160. package/dist/worker.d.ts +5 -48
  161. package/dist/worker.d.ts.map +1 -0
  162. package/dist/worker.js +94 -41
  163. package/dist/worker.js.map +1 -1
  164. package/dist/worker_client.d.ts +96 -0
  165. package/dist/worker_client.d.ts.map +1 -0
  166. package/dist/worker_protocol.d.ts +43 -0
  167. package/dist/worker_protocol.d.ts.map +1 -0
  168. package/dist/worklet/audio_types.d.ts +21 -0
  169. package/dist/worklet/audio_types.d.ts.map +1 -0
  170. package/dist/worklet/engine-automation.d.ts +29 -0
  171. package/dist/worklet/engine-automation.d.ts.map +1 -0
  172. package/dist/worklet/engine-capture-facade.d.ts +35 -0
  173. package/dist/worklet/engine-capture-facade.d.ts.map +1 -0
  174. package/dist/worklet/engine-clips.d.ts +23 -0
  175. package/dist/worklet/engine-clips.d.ts.map +1 -0
  176. package/dist/worklet/engine-markers.d.ts +40 -0
  177. package/dist/worklet/engine-markers.d.ts.map +1 -0
  178. package/dist/worklet/engine-mixer-facade.d.ts +128 -0
  179. package/dist/worklet/engine-mixer-facade.d.ts.map +1 -0
  180. package/dist/worklet/engine-node.d.ts +81 -0
  181. package/dist/worklet/engine-node.d.ts.map +1 -0
  182. package/dist/worklet/engine-offline.d.ts +81 -0
  183. package/dist/worklet/engine-offline.d.ts.map +1 -0
  184. package/dist/worklet/engine-options.d.ts +12 -0
  185. package/dist/worklet/engine-options.d.ts.map +1 -0
  186. package/dist/worklet/engine-parameter-facade.d.ts +106 -0
  187. package/dist/worklet/engine-parameter-facade.d.ts.map +1 -0
  188. package/dist/worklet/engine-processor.d.ts +68 -0
  189. package/dist/worklet/engine-processor.d.ts.map +1 -0
  190. package/dist/worklet/engine-register.d.ts +2 -0
  191. package/dist/worklet/engine-register.d.ts.map +1 -0
  192. package/dist/worklet/engine-strips.d.ts +73 -0
  193. package/dist/worklet/engine-strips.d.ts.map +1 -0
  194. package/dist/worklet/engine-sync.d.ts +37 -0
  195. package/dist/worklet/engine-sync.d.ts.map +1 -0
  196. package/dist/worklet/engine-tempo-facade.d.ts +48 -0
  197. package/dist/worklet/engine-tempo-facade.d.ts.map +1 -0
  198. package/dist/worklet/engine.d.ts +397 -0
  199. package/dist/worklet/engine.d.ts.map +1 -0
  200. package/dist/worklet/guards.d.ts +47 -0
  201. package/dist/worklet/guards.d.ts.map +1 -0
  202. package/dist/worklet/messages.d.ts +710 -0
  203. package/dist/worklet/messages.d.ts.map +1 -0
  204. package/dist/worklet/mixer-processor.d.ts +46 -0
  205. package/dist/worklet/mixer-processor.d.ts.map +1 -0
  206. package/dist/worklet/playback-processor.d.ts +62 -0
  207. package/dist/worklet/playback-processor.d.ts.map +1 -0
  208. package/dist/worklet/protocol.d.ts +323 -0
  209. package/dist/worklet/protocol.d.ts.map +1 -0
  210. package/dist/worklet/voice-changer-processor.d.ts +41 -0
  211. package/dist/worklet/voice-changer-processor.d.ts.map +1 -0
  212. package/dist/worklet.d.ts +16 -2515
  213. package/dist/worklet.d.ts.map +1 -0
  214. package/dist/worklet.js +2763 -501
  215. package/dist/worklet.js.map +1 -1
  216. package/package.json +23 -12
  217. package/src/_effects_common.ts +17 -0
  218. package/src/_feature_validation.ts +34 -0
  219. package/src/_fft_options.ts +39 -0
  220. package/src/align_take.ts +64 -0
  221. package/src/analysis.ts +56 -3
  222. package/src/analysis_helpers.ts +7 -0
  223. package/src/audio.ts +106 -3
  224. package/src/codes.ts +39 -2
  225. package/src/effects_mastering.ts +97 -22
  226. package/src/effects_note_ops.ts +635 -0
  227. package/src/effects_percussive.ts +217 -0
  228. package/src/effects_separation.ts +150 -0
  229. package/src/effects_spectral.ts +60 -0
  230. package/src/effects_timepitch.ts +377 -0
  231. package/src/errors.ts +23 -1
  232. package/src/feature_core.ts +127 -2
  233. package/src/feature_decompose.ts +633 -0
  234. package/src/feature_inverse.ts +454 -0
  235. package/src/feature_loudness.ts +125 -0
  236. package/src/feature_music.ts +107 -14
  237. package/src/feature_pitch.ts +96 -1
  238. package/src/feature_spectral.ts +16 -611
  239. package/src/feature_spectrogram.ts +63 -450
  240. package/src/features.ts +36 -22
  241. package/src/index.ts +282 -30
  242. package/src/instrument_types.ts +645 -0
  243. package/src/live_audio.ts +27 -1
  244. package/src/mastering_chain.ts +184 -0
  245. package/src/mastering_core.ts +346 -32
  246. package/src/mastering_dynamics.ts +22 -11
  247. package/src/metering.ts +67 -24
  248. package/src/mixer.ts +212 -3
  249. package/src/mixing_assistant.ts +138 -0
  250. package/src/mixing_oneshot.ts +10 -5
  251. package/src/module_state.ts +24 -2
  252. package/src/playback_renderer.ts +252 -0
  253. package/src/polyphony.ts +279 -0
  254. package/src/project.ts +61 -24
  255. package/src/project_class.ts +450 -27
  256. package/src/project_internal.ts +149 -42
  257. package/src/project_synth.ts +67 -1
  258. package/src/project_types.ts +268 -270
  259. package/src/public_types.ts +122 -3
  260. package/src/public_types_acoustic.ts +112 -3
  261. package/src/public_types_mastering.ts +254 -73
  262. package/src/public_types_mixing.ts +363 -1
  263. package/src/public_types_music.ts +312 -2
  264. package/src/public_types_playback.ts +195 -0
  265. package/src/public_types_realtime.ts +39 -7
  266. package/src/public_types_repair.ts +446 -0
  267. package/src/public_types_spectral.ts +487 -1
  268. package/src/quick_analysis.ts +203 -26
  269. package/src/realtime_engine.ts +711 -28
  270. package/src/realtime_voice_changer.ts +55 -1
  271. package/src/repair_dereverb.ts +299 -0
  272. package/src/repair_impulsive.ts +395 -0
  273. package/src/repair_noise.ts +425 -0
  274. package/src/repair_trim.ts +226 -0
  275. package/src/sample_bank.ts +113 -0
  276. package/src/sonare.js.d.ts +1122 -30
  277. package/src/stream_analyzer.ts +36 -4
  278. package/src/stream_types.ts +37 -0
  279. package/src/streaming_mixing.ts +1 -1
  280. package/src/streaming_processors.ts +194 -10
  281. package/src/transcribe.ts +89 -0
  282. package/src/validation.ts +285 -11
  283. package/src/web_midi.ts +1 -6
  284. package/src/worker.ts +18 -2
  285. package/src/worklet/audio_types.ts +37 -0
  286. package/src/worklet/engine-mixer-facade.ts +444 -10
  287. package/src/worklet/engine-node.ts +78 -26
  288. package/src/worklet/engine-offline.ts +14 -8
  289. package/src/worklet/engine-parameter-facade.ts +21 -0
  290. package/src/worklet/engine-processor.ts +272 -83
  291. package/src/worklet/engine-register.ts +32 -18
  292. package/src/worklet/engine-strips.ts +280 -9
  293. package/src/worklet/engine-sync.ts +14 -6
  294. package/src/worklet/engine.ts +365 -31
  295. package/src/worklet/guards.ts +140 -44
  296. package/src/worklet/messages.ts +227 -2
  297. package/src/worklet/mixer-processor.ts +109 -47
  298. package/src/worklet/playback-processor.ts +300 -0
  299. package/src/worklet/protocol.ts +53 -3
  300. package/src/worklet/voice-changer-processor.ts +17 -11
  301. package/src/worklet.ts +17 -0
  302. package/src/effects_transform.ts +0 -718
  303. 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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"}