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