@libraz/libsonare 1.7.2 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +7 -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 +874 -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 +502 -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 +134 -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 +4173 -1621
  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 +483 -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 +654 -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 +528 -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 +165 -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 +893 -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 +3945 -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 +340 -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 +164 -0
  179. package/dist/worklet/engine-mixer-facade.d.ts.map +1 -0
  180. package/dist/worklet/engine-node.d.ts +83 -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 +72 -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 +75 -0
  193. package/dist/worklet/engine-strips.d.ts.map +1 -0
  194. package/dist/worklet/engine-sync.d.ts +39 -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 +418 -0
  199. package/dist/worklet/engine.d.ts.map +1 -0
  200. package/dist/worklet/guards.d.ts +53 -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 +331 -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 +3200 -541
  215. package/dist/worklet.js.map +1 -1
  216. package/package.json +23 -12
  217. package/src/_effects_common.ts +47 -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 +101 -22
  226. package/src/effects_note_ops.ts +683 -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 +388 -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 +288 -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 +441 -32
  246. package/src/mastering_dynamics.ts +22 -11
  247. package/src/metering.ts +67 -24
  248. package/src/mixer.ts +251 -22
  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 +271 -271
  259. package/src/public_types.ts +122 -3
  260. package/src/public_types_acoustic.ts +112 -3
  261. package/src/public_types_mastering.ts +275 -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 +196 -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 +491 -5
  268. package/src/quick_analysis.ts +203 -26
  269. package/src/realtime_engine.ts +773 -34
  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 +1158 -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 +202 -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 +800 -32
  287. package/src/worklet/engine-node.ts +99 -29
  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 +332 -93
  291. package/src/worklet/engine-register.ts +32 -18
  292. package/src/worklet/engine-strips.ts +275 -9
  293. package/src/worklet/engine-sync.ts +20 -7
  294. package/src/worklet/engine.ts +394 -48
  295. package/src/worklet/guards.ts +195 -44
  296. package/src/worklet/messages.ts +229 -2
  297. package/src/worklet/mixer-processor.ts +117 -48
  298. package/src/worklet/playback-processor.ts +300 -0
  299. package/src/worklet/protocol.ts +82 -11
  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,483 @@
1
+ import type { LoudnessMatchResult, LoudnessMatchStereoResult, MasteringAssistantParams, MasteringInsertParamChoice, MasteringInsertSlot, MasteringOptions, MasteringProcessorParams, MasteringResult, MasteringStereoResult, PairAnalysis, PairProcessor, SoloProcessor, StereoAnalysis, StereoPairProcessor, StreamingPlatform } from './public_types';
2
+ export type { MasteringInsertParamChoice, MasteringInsertSlot };
3
+ /** Canonical request form for loudness/true-peak mastering. */
4
+ export interface MasteringRequest extends MasteringOptions {
5
+ samples: Float32Array;
6
+ sampleRate?: number;
7
+ }
8
+ export interface MasteringProcessRequest {
9
+ processorName: SoloProcessor;
10
+ samples: Float32Array;
11
+ sampleRate?: number;
12
+ params?: MasteringProcessorParams;
13
+ }
14
+ export interface MasteringProcessStereoRequest {
15
+ processorName: SoloProcessor;
16
+ left: Float32Array;
17
+ right: Float32Array;
18
+ sampleRate?: number;
19
+ params?: MasteringProcessorParams;
20
+ }
21
+ /** Canonical request form for a two-input match processor. */
22
+ export interface MasteringPairProcessRequest {
23
+ processorName: PairProcessor;
24
+ source: Float32Array;
25
+ reference: Float32Array;
26
+ sampleRate?: number;
27
+ params?: MasteringProcessorParams;
28
+ }
29
+ /** Canonical request form for a stereo two-input match processor. */
30
+ export interface MasteringPairProcessStereoRequest {
31
+ processorName: StereoPairProcessor;
32
+ sourceLeft: Float32Array;
33
+ sourceRight: Float32Array;
34
+ referenceLeft: Float32Array;
35
+ referenceRight: Float32Array;
36
+ sampleRate?: number;
37
+ params?: MasteringProcessorParams;
38
+ }
39
+ /** Canonical request form for {@link masteringAbMatchLoudness}. */
40
+ export interface MasteringAbMatchLoudnessRequest {
41
+ /** The take to gain-match. */
42
+ source: Float32Array;
43
+ /** The take whose loudness `source` is matched to; returned untouched. */
44
+ reference: Float32Array;
45
+ sampleRate?: number;
46
+ }
47
+ /** Canonical request form for stereo AB loudness matching. */
48
+ export interface MasteringAbMatchLoudnessStereoRequest {
49
+ sourceLeft: Float32Array;
50
+ sourceRight: Float32Array;
51
+ referenceLeft: Float32Array;
52
+ referenceRight: Float32Array;
53
+ sampleRate?: number;
54
+ }
55
+ /** Canonical request form for a two-input match analysis. */
56
+ export interface MasteringPairAnalyzeRequest {
57
+ analysisName: PairAnalysis;
58
+ source: Float32Array;
59
+ reference: Float32Array;
60
+ sampleRate?: number;
61
+ params?: MasteringProcessorParams;
62
+ }
63
+ /** Canonical request form for a stereo analysis. */
64
+ export interface MasteringStereoAnalyzeRequest {
65
+ analysisName: StereoAnalysis;
66
+ left: Float32Array;
67
+ right: Float32Array;
68
+ sampleRate?: number;
69
+ params?: MasteringProcessorParams;
70
+ }
71
+ /** Canonical request form for assistant/profile calls. */
72
+ export interface MasteringSamplesParamsRequest {
73
+ samples: Float32Array;
74
+ sampleRate?: number;
75
+ params?: MasteringProcessorParams;
76
+ }
77
+ /** Canonical request form for the assistant, whose params carry a target platform. */
78
+ export interface MasteringAssistantParamsRequest {
79
+ samples: Float32Array;
80
+ sampleRate?: number;
81
+ params?: MasteringAssistantParams;
82
+ }
83
+ /** Canonical request form for streaming-platform preview. */
84
+ export interface MasteringStreamingPreviewRequest {
85
+ samples: Float32Array;
86
+ sampleRate?: number;
87
+ platforms?: StreamingPlatform[];
88
+ }
89
+ /** Canonical request form for the stereo analysis entry points. */
90
+ export interface MasteringStereoParamsRequest {
91
+ left: Float32Array;
92
+ right: Float32Array;
93
+ sampleRate?: number;
94
+ params?: MasteringProcessorParams;
95
+ }
96
+ /** Stereo counterpart of {@link MasteringAssistantParamsRequest}. */
97
+ export interface MasteringAssistantStereoParamsRequest {
98
+ left: Float32Array;
99
+ right: Float32Array;
100
+ sampleRate?: number;
101
+ params?: MasteringAssistantParams;
102
+ }
103
+ /** Canonical request form for the stereo streaming-platform preview. */
104
+ export interface MasteringStreamingPreviewStereoRequest {
105
+ left: Float32Array;
106
+ right: Float32Array;
107
+ sampleRate?: number;
108
+ platforms?: StreamingPlatform[];
109
+ }
110
+ /**
111
+ * Apply mastering loudness normalization with a true-peak ceiling.
112
+ *
113
+ * @param samples - Audio samples (mono, float32)
114
+ * @param sampleRate - Sample rate in Hz (default: 22050)
115
+ * @param options - Loudness/ceiling settings ({@link MasteringOptions})
116
+ * @returns Processed audio and loudness metadata
117
+ */
118
+ export declare function mastering(request: MasteringRequest): MasteringResult;
119
+ export declare function mastering(samples: Float32Array, sampleRate?: number, options?: MasteringOptions): MasteringResult;
120
+ export declare function masteringProcessorNames(): SoloProcessor[];
121
+ /**
122
+ * Names of the insert processors the mastering chain can instantiate by name
123
+ * (`mastering::api::insert_factory_names`). Mirrors the C-ABI
124
+ * `sonare_mastering_insert_names` (which joins this list) as a `string[]`.
125
+ */
126
+ export declare function masteringInsertNames(): string[];
127
+ /**
128
+ * Returns the camelCase parameter names a given insert / FX processor reads, for
129
+ * tooling/validation. Any key NOT in this list is silently ignored by the
130
+ * processor (and would be reported via {@link Mixer.sceneWarnings} when a scene
131
+ * carrying it is loaded). Band/sub-band processors enumerate their indexed
132
+ * `band{i}.<field>` keys. Returns an empty array for an unknown name (or one
133
+ * whose insert needs an unavailable build feature, e.g. FX).
134
+ *
135
+ * @param name - Insert processor name (see {@link masteringInsertNames}).
136
+ */
137
+ export declare function masteringInsertParamNames(name: string): string[];
138
+ /**
139
+ * One parameter an insert processor's construction reads, whether or not it
140
+ * is realtime-automatable.
141
+ */
142
+ export interface MasteringInsertParamInfo {
143
+ /** JSON-key parameter name, as used in scene insert params. */
144
+ name: string;
145
+ /**
146
+ * Integer param id for realtime automation lanes / MIDI-CC binding, or null
147
+ * for a construction-only key with no automation target.
148
+ */
149
+ id: number | null;
150
+ /** Whether the param can be changed live from the audio thread; false when `id` is null. */
151
+ rtSafe: boolean;
152
+ /**
153
+ * The C++ type the processor's config builder reads the key as. `"enum"` is
154
+ * sent as the number in its `choices` entry; `"string"` / `"array"` (an
155
+ * embedded impulse response, a per-band list) is construction-only and
156
+ * reports null for `min`, `max`, `default` and `choices`.
157
+ */
158
+ type: 'boolean' | 'number' | 'enum' | 'string' | 'array';
159
+ /**
160
+ * Smallest value construction accepts, or null when the catalog states no
161
+ * limit or `choices` is non-null. Measured, so it is a hard constraint
162
+ * rather than a UI range; see {@link CapabilityCatalogParameter} for what a
163
+ * measured bound does and does not promise.
164
+ */
165
+ min: number | null;
166
+ /** Largest value construction accepts, or null when the catalog states no limit or `choices` is non-null. */
167
+ max: number | null;
168
+ /**
169
+ * Value the processor uses when the key is absent — the config struct's own
170
+ * field initializer, an enum as its number. Null for a param id with no
171
+ * construction key, a `"string"` / `"array"` key, or a construction key with
172
+ * no fallback.
173
+ */
174
+ default: boolean | number | null;
175
+ /** Physical unit, or null when the parameter is unitless. */
176
+ unit: string | null;
177
+ /**
178
+ * The closed set of values construction accepts, in value order, or null
179
+ * when the accepted values are not a closed set. Non-null only for `"enum"`
180
+ * (every declared enumerator construction accepts) or a `"number"` key
181
+ * whose accepted integers have holes; `min` / `max` are then both null.
182
+ */
183
+ choices: MasteringInsertParamChoice[] | null;
184
+ /**
185
+ * The {@link MasteringInsertSlot} this key belongs to, or null for a key that
186
+ * always exists.
187
+ */
188
+ slot: string | null;
189
+ }
190
+ /**
191
+ * Returns every parameter an insert / FX processor's construction reads,
192
+ * including construction-time-only keys with no realtime automation target.
193
+ * Entries come in two runs: first the processor's realtime automation
194
+ * targets in id order (the keys accepted by
195
+ * {@link RealtimeEngine.setTrackStripInsertParamByName}, `id` non-null); then,
196
+ * sorted by name, every other construction key with `id` null and `rtSafe`
197
+ * false. The name set matches {@link masteringInsertParamNames} plus any
198
+ * automation target construction does not read. Returns an empty array for an
199
+ * unknown name.
200
+ *
201
+ * @param name - Insert processor name (see {@link masteringInsertNames}).
202
+ */
203
+ export declare function masteringInsertParamInfo(name: string): MasteringInsertParamInfo[];
204
+ /** Latency and tail of one insert instance, in samples. */
205
+ export interface MasteringInsertTiming {
206
+ /** Latency in samples at the queried sample rate. */
207
+ latencySamples: number;
208
+ /** Audible decay tail in samples at the queried sample rate. */
209
+ tailSamples: number;
210
+ }
211
+ /** One built-in amp-sim rig with its resolved starting configuration. */
212
+ export interface MasteringAmpPresetCatalogEntry {
213
+ /** Stable index used by the amp-sim `presetIndex` parameter. */
214
+ index: number;
215
+ /** Canonical preset identifier accepted by the amp-sim insert. */
216
+ name: string;
217
+ /** Effective values from the core preset, before sparse user overrides. */
218
+ params: Record<string, number | boolean>;
219
+ }
220
+ /**
221
+ * Returns the built-in amp-sim rigs and their resolved control values.
222
+ *
223
+ * The catalog is read-only metadata for hosts such as Studio. Persist only the
224
+ * preset index and explicit overrides in a project so future core updates can
225
+ * continue to define the canonical DSP configuration.
226
+ */
227
+ export declare function masteringAmpPresetCatalog(): MasteringAmpPresetCatalogEntry[];
228
+ /**
229
+ * Latency and tail of insert `name` built from `params` and prepared at
230
+ * `sampleRate` (`mastering::api::insert_timing`). Answers for the exact
231
+ * instance a scene or strip would build — an oversampled saturation path, a
232
+ * linear-phase crossover, a lookahead all change the reported latency. The
233
+ * capability catalog's `latencySamples` / `tailSamples` are this query at
234
+ * default parameters and 48 kHz. `effects.reverb.convolution` answers for its
235
+ * configuration without an impulse response: its latency is its fixed
236
+ * partition size and does not depend on one.
237
+ *
238
+ * A key `name`'s construction does not read is refused rather than ignored,
239
+ * because an ignored key would answer for a configuration the caller did not
240
+ * ask for.
241
+ *
242
+ * @param name - Insert processor name (see {@link masteringInsertNames}).
243
+ * @param params - Flat parameter values, keyed as in {@link masteringInsertParamInfo}.
244
+ * @param sampleRate - Rate the insert is prepared at.
245
+ * @throws For an unknown `name`, a key the insert does not read, a value its
246
+ * construction or `prepare` refuses, or a `params` value that is not a
247
+ * finite number or boolean.
248
+ */
249
+ export declare function masteringInsertTiming(name: string, params: Record<string, number | boolean>, sampleRate: number): MasteringInsertTiming;
250
+ /**
251
+ * How a processor handles a buffer with more than two channels (a surround
252
+ * bed). "multichannel" processes every plane in one call; "stereoPairOnly"
253
+ * operates on the front L/R pair and passes any surround planes through dry.
254
+ * "perChannel"/"passthrough" are reserved and unused by the current catalog.
255
+ */
256
+ export type MasteringChannelPolicy = 'multichannel' | 'stereoPairOnly' | 'perChannel' | 'passthrough';
257
+ /** Coarse algorithmic work estimate for a realtime insert; not a benchmark. */
258
+ export type MasteringRealtimeCost = 'low' | 'moderate' | 'high';
259
+ /**
260
+ * Catalog grouping for a processor picker, derived from the id's prefix
261
+ * ("eq.*" -> "eq", "match.*" -> "reference"); anything unprefixed is "other".
262
+ */
263
+ export type MasteringProcessorCategory = 'dynamics' | 'effects' | 'eq' | 'final' | 'maximizer' | 'multiband' | 'other' | 'reference' | 'repair' | 'saturation' | 'spectral' | 'stereo' | 'utility';
264
+ /** One processor's realtime/offline/pair classification in the catalog. */
265
+ export interface MasteringProcessorCatalogEntry {
266
+ /** Processor id (the name used for scene inserts / named processors). */
267
+ id: string;
268
+ /**
269
+ * Primary classification, by precedence pair > realtime > offline: "pair" for
270
+ * two-input match.* processors, "realtime" for ids that build as a realtime
271
+ * scene insert, "offline" for whole-file-only processors.
272
+ */
273
+ kind: 'realtime' | 'offline' | 'pair';
274
+ /** True exactly for ids that always succeed as a realtime scene insert. */
275
+ realtimeInsertable: boolean;
276
+ /** True for processors with no mono implementation (stereo-only). */
277
+ stereoOnly: boolean;
278
+ /**
279
+ * Reported latency for the default 48 kHz / 512-sample probe configuration.
280
+ * Zero for offline processors; configuration-dependent values are estimates.
281
+ */
282
+ latencySamples: number;
283
+ /**
284
+ * Audible decay length for the same default prepared probe. Zero for
285
+ * offline, dry-only, and no-tail processors.
286
+ */
287
+ tailSamples: number;
288
+ /** Coarse realtime work estimate, or null when the processor is not an insert. */
289
+ realtimeCost: MasteringRealtimeCost | null;
290
+ /**
291
+ * How the mixer wraps the processor on a >2-channel (surround) bus insert:
292
+ * "multichannel" (one full-buffer call) or "stereoPairOnly" (front L/R pair,
293
+ * surround planes passed through dry).
294
+ */
295
+ channelPolicy: MasteringChannelPolicy;
296
+ /** Grouping for a processor picker; see {@link MasteringProcessorCategory}. */
297
+ category: MasteringProcessorCategory;
298
+ /**
299
+ * The processor's construction parameters, the same list
300
+ * {@link masteringInsertParamInfo} returns. Empty for entries that are not
301
+ * realtime-insertable.
302
+ */
303
+ params: MasteringInsertParamInfo[];
304
+ /**
305
+ * The insert's conditional key groups in declaration order, named by each
306
+ * parameter's `slot`. Empty for entries that are not realtime-insertable.
307
+ */
308
+ slots: MasteringInsertSlot[];
309
+ }
310
+ /**
311
+ * Returns the machine-readable classification catalog for every named processor
312
+ * id, merging the offline registry, the realtime insert factory, and the pair
313
+ * registry. Lets a host filter a processor picker by realtime insertability
314
+ * instead of offering ids the realtime strip would reject.
315
+ */
316
+ export declare function masteringProcessorCatalog(): MasteringProcessorCatalogEntry[];
317
+ export declare function masteringPairProcessorNames(): PairProcessor[];
318
+ export declare function masteringPairAnalysisNames(): PairAnalysis[];
319
+ export declare function masteringStereoAnalysisNames(): StereoAnalysis[];
320
+ export declare function masteringProcess(request: MasteringProcessRequest): MasteringResult;
321
+ export declare function masteringProcess(processorName: SoloProcessor, samples: Float32Array, sampleRate?: number, params?: MasteringProcessorParams): MasteringResult;
322
+ export declare function masteringProcessStereo(request: MasteringProcessStereoRequest): MasteringStereoResult;
323
+ export declare function masteringProcessStereo(processorName: SoloProcessor, left: Float32Array, right: Float32Array, sampleRate?: number, params?: MasteringProcessorParams): MasteringStereoResult;
324
+ /**
325
+ * Apply a two-input `match.*` processor. `source` and `reference` may have
326
+ * independent lengths — the match primitives consume each buffer at its own
327
+ * length.
328
+ */
329
+ export declare function masteringPairProcess(request: MasteringPairProcessRequest): MasteringResult;
330
+ export declare function masteringPairProcess(processorName: PairProcessor, source: Float32Array, reference: Float32Array, sampleRate?: number, params?: MasteringProcessorParams): MasteringResult;
331
+ /**
332
+ * Apply the stereo `match.abCrossfade` processor. Source and reference stereo
333
+ * pairs may have independent lengths, but each pair must have equal channels.
334
+ */
335
+ export declare function masteringPairProcessStereo(request: MasteringPairProcessStereoRequest): MasteringStereoResult;
336
+ export declare function masteringPairProcessStereo(processorName: StereoPairProcessor, sourceLeft: Float32Array, sourceRight: Float32Array, referenceLeft: Float32Array, referenceRight: Float32Array, sampleRate?: number, params?: MasteringProcessorParams): MasteringStereoResult;
337
+ /**
338
+ * Analyze a `source` against a `reference` with a two-input analysis. The two
339
+ * buffers may have independent lengths.
340
+ */
341
+ export declare function masteringPairAnalyze(request: MasteringPairAnalyzeRequest): string;
342
+ export declare function masteringPairAnalyze(analysisName: PairAnalysis, source: Float32Array, reference: Float32Array, sampleRate?: number, params?: MasteringProcessorParams): string;
343
+ /**
344
+ * Gain-match `source` to `reference`'s integrated loudness, so an A/B between
345
+ * the two is not decided by level. `source` and `reference` may have
346
+ * independent lengths.
347
+ *
348
+ * The gain is applied with no upper bound and `matchedTruePeakDbtp` reports
349
+ * where that left the peak, rather than the call capping it: a headroom clamp
350
+ * would return `source` at its own loudness whenever it started near full
351
+ * scale. Both loudness values are non-finite for a silent or below-gate take,
352
+ * and `appliedGainDb` is then 0.
353
+ *
354
+ * @example
355
+ * ```ts
356
+ * const { samples, appliedGainDb, matchedTruePeakDbtp } = masteringAbMatchLoudness({
357
+ * source: take,
358
+ * reference: master,
359
+ * sampleRate: 48000,
360
+ * });
361
+ * ```
362
+ */
363
+ export declare function masteringAbMatchLoudness(request: MasteringAbMatchLoudnessRequest): LoudnessMatchResult;
364
+ /** Gain-match a stereo source to a stereo reference with one shared gain. */
365
+ export declare function masteringAbMatchLoudnessStereo(request: MasteringAbMatchLoudnessStereoRequest): LoudnessMatchStereoResult;
366
+ export declare function masteringStereoAnalyze(request: MasteringStereoAnalyzeRequest): string;
367
+ export declare function masteringStereoAnalyze(analysisName: StereoAnalysis, left: Float32Array, right: Float32Array, sampleRate?: number, params?: MasteringProcessorParams): string;
368
+ export declare function masteringAssistantSuggest(request: MasteringAssistantParamsRequest): string;
369
+ export declare function masteringAssistantSuggest(samples: Float32Array, sampleRate?: number, params?: MasteringAssistantParams): string;
370
+ /**
371
+ * Suggest a mastering chain, as the flat `{key: number|boolean}` params map
372
+ * {@link masteringAssistantSuggest}'s `chainConfig` carries, without needing to
373
+ * pull it out of the full assistant document. The returned map can be passed
374
+ * straight through as `overrides` to {@link mastering} / {@link masterAudio}.
375
+ */
376
+ export declare function masteringAssistantSuggestChain(request: MasteringAssistantParamsRequest): Record<string, number | boolean>;
377
+ /**
378
+ * The shape {@link masteringAudioProfile}'s JSON parses to.
379
+ *
380
+ * The profile crosses as a string, so nothing type-checks it on arrival; this
381
+ * declaration is what a conformance check compares against the paths the C++
382
+ * writer publishes, so a field added on one side and not the other fails there
383
+ * rather than reaching a caller as `undefined`.
384
+ */
385
+ export interface MasteringAudioProfile {
386
+ durationSec: number;
387
+ bpm: number;
388
+ bpmConfidence: number;
389
+ loudness: {
390
+ integratedLufs: number;
391
+ lraLu: number;
392
+ truePeakDb: number;
393
+ crestFactorDb: number;
394
+ };
395
+ spectral: {
396
+ subRmsDb: number;
397
+ lowRmsDb: number;
398
+ lowMidRmsDb: number;
399
+ midRmsDb: number;
400
+ highMidRmsDb: number;
401
+ highRmsDb: number;
402
+ airRmsDb: number;
403
+ centroidHz: number;
404
+ flatness: number;
405
+ rolloffHz: number;
406
+ };
407
+ dynamics: {
408
+ shortTermLufsStd: number;
409
+ attackDensity: number;
410
+ sustainRatio: number;
411
+ };
412
+ /**
413
+ * What the repair detectors measured. `measured` is false when nothing ran —
414
+ * either `detectDefects` was not asked for or the input was too short — and
415
+ * every other field is then at its default rather than a reading.
416
+ */
417
+ defects: {
418
+ measured: boolean;
419
+ clickCount: number;
420
+ clickRejected: number;
421
+ clickLongestRunSamples: number;
422
+ clickPerSecond: number;
423
+ crackleSampleCount: number;
424
+ crackleSampleFraction: number;
425
+ cracklePerSecond: number;
426
+ clipSampleCount: number;
427
+ clipRunCount: number;
428
+ clipLongestRunSamples: number;
429
+ clipSampleFraction: number;
430
+ clipFlatRunCount: number;
431
+ clipFlatSampleCount: number;
432
+ clipLongestFlatRunSamples: number;
433
+ clipFlatLevel: number;
434
+ noiseFloorDbfs: number;
435
+ noiseBandPeakDbfs: number;
436
+ noiseBandPeakIndex: number;
437
+ humFundamentalHz: number;
438
+ humFundamentalProminence: number;
439
+ humHarmonics: number;
440
+ humFundamentalDbfs: number;
441
+ humPeakHarmonicDbfs: number;
442
+ lateDecayRatioDb: number;
443
+ };
444
+ }
445
+ export declare function masteringAudioProfile(request: MasteringSamplesParamsRequest): string;
446
+ export declare function masteringAudioProfile(samples: Float32Array, sampleRate?: number, params?: MasteringProcessorParams): string;
447
+ export declare function masteringStreamingPreview(request: MasteringStreamingPreviewRequest): string;
448
+ export declare function masteringStreamingPreview(samples: Float32Array, sampleRate?: number, platforms?: StreamingPlatform[]): string;
449
+ /**
450
+ * Suggest a mastering chain for a stereo pair, as shared JSON.
451
+ *
452
+ * Profiles through {@link masteringAudioProfileStereo}, so the loudness stage
453
+ * of the suggestion is built on the channel-summed program rather than a
454
+ * downmix that reads roughly 6 dB low.
455
+ */
456
+ export declare function masteringAssistantSuggestStereo(request: MasteringAssistantStereoParamsRequest): string;
457
+ /**
458
+ * Stereo counterpart of {@link masteringAssistantSuggestChain}: the flat
459
+ * `{key: number|boolean}` params map without the surrounding assistant
460
+ * document, ready to pass through as `overrides` to {@link masterAudioStereo}.
461
+ */
462
+ export declare function masteringAssistantSuggestChainStereo(request: MasteringAssistantStereoParamsRequest): Record<string, number | boolean>;
463
+ /**
464
+ * Mastering assistant profile of a stereo pair, as shared JSON.
465
+ *
466
+ * Only the `loudness` block is measured from the two channels: integrated LUFS
467
+ * and LRA come from the channel-summed program and the true peak is the larger
468
+ * of the two. The spectral, dynamics and tempo fields describe shape and timing
469
+ * rather than absolute level and are measured on the downmix, which keeps them
470
+ * comparable with {@link masteringAudioProfile}.
471
+ */
472
+ export declare function masteringAudioProfileStereo(request: MasteringStereoParamsRequest): string;
473
+ /**
474
+ * Preview streaming-platform normalization for a stereo pair, as shared JSON.
475
+ *
476
+ * Measures the integrated loudness with BS.1770 channel summing and reports the
477
+ * larger of the two channel true peaks. Passing a `0.5 * (left + right)` downmix
478
+ * to {@link masteringStreamingPreview} instead reads roughly 6 dB low on
479
+ * decorrelated material, and both the normalization gain and the ceiling-risk
480
+ * flag follow from that measurement.
481
+ */
482
+ export declare function masteringStreamingPreviewStereo(request: MasteringStreamingPreviewStereoRequest): string;
483
+ //# sourceMappingURL=mastering_core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mastering_core.d.ts","sourceRoot":"","sources":["../src/mastering_core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import type { ValidateOptions } from './validation';
2
+ /** Compressor sidechain detector mode. */
3
+ export type CompressorDetector = 'peak' | 'rms' | 'log_rms';
4
+ /** Options for `masteringDynamicsCompressor`. */
5
+ export interface CompressorOptions extends ValidateOptions {
6
+ thresholdDb?: number;
7
+ ratio?: number;
8
+ attackMs?: number;
9
+ releaseMs?: number;
10
+ kneeDb?: number;
11
+ makeupGainDb?: number;
12
+ autoMakeup?: boolean;
13
+ detector?: CompressorDetector | number;
14
+ sidechainHpfEnabled?: boolean;
15
+ sidechainHpfHz?: number;
16
+ pdrTimeMs?: number;
17
+ pdrReleaseScale?: number;
18
+ }
19
+ /** Canonical request form for the offline compressor. */
20
+ export interface MasteringDynamicsCompressorRequest extends CompressorOptions {
21
+ samples: Float32Array;
22
+ sampleRate: number;
23
+ }
24
+ /** Options for `masteringDynamicsGate`. */
25
+ export interface GateOptions extends ValidateOptions {
26
+ thresholdDb?: number;
27
+ attackMs?: number;
28
+ releaseMs?: number;
29
+ rangeDb?: number;
30
+ holdMs?: number;
31
+ closeThresholdDb?: number;
32
+ keyHpfHz?: number;
33
+ }
34
+ /** Canonical request form for the offline gate. */
35
+ export interface MasteringDynamicsGateRequest extends GateOptions {
36
+ samples: Float32Array;
37
+ sampleRate: number;
38
+ }
39
+ /** Options for `masteringDynamicsTransientShaper`. */
40
+ export interface TransientShaperOptions extends ValidateOptions {
41
+ attackGainDb?: number;
42
+ sustainGainDb?: number;
43
+ fastAttackMs?: number;
44
+ fastReleaseMs?: number;
45
+ slowAttackMs?: number;
46
+ slowReleaseMs?: number;
47
+ sensitivity?: number;
48
+ maxGainDb?: number;
49
+ gainSmoothingMs?: number;
50
+ lookaheadMs?: number;
51
+ }
52
+ /** Canonical request form for the offline transient shaper. */
53
+ export interface MasteringDynamicsTransientShaperRequest extends TransientShaperOptions {
54
+ samples: Float32Array;
55
+ sampleRate: number;
56
+ }
57
+ /**
58
+ * Result envelope returned by offline mastering dynamics processors.
59
+ *
60
+ * Named for what it is rather than for the module it lives in. {@link
61
+ * DynamicsResult} is the *analysis* shape on every binding, so having that one
62
+ * identifier mean two disjoint field lists across the Node and WASM packages
63
+ * made a shared TypeScript module type-check against one and fail against the
64
+ * other — with the identifier resolving either way, so only the member list
65
+ * gave it away.
66
+ */
67
+ export interface DynamicsProcessorResult {
68
+ samples: Float32Array;
69
+ latencySamples: number;
70
+ }
71
+ /** Offline feed-forward compressor (soft knee, optional auto-makeup / sidechain HPF). */
72
+ export declare function masteringDynamicsCompressor(request: MasteringDynamicsCompressorRequest): DynamicsProcessorResult;
73
+ export declare function masteringDynamicsCompressor(samples: Float32Array, sampleRate: number, options?: CompressorOptions): DynamicsProcessorResult;
74
+ /** Offline noise gate (hysteresis, hold, optional key HPF). */
75
+ export declare function masteringDynamicsGate(request: MasteringDynamicsGateRequest): DynamicsProcessorResult;
76
+ export declare function masteringDynamicsGate(samples: Float32Array, sampleRate: number, options?: GateOptions): DynamicsProcessorResult;
77
+ /** Offline transient shaper (envelope-difference attack/sustain control). */
78
+ export declare function masteringDynamicsTransientShaper(request: MasteringDynamicsTransientShaperRequest): DynamicsProcessorResult;
79
+ export declare function masteringDynamicsTransientShaper(samples: Float32Array, sampleRate: number, options?: TransientShaperOptions): DynamicsProcessorResult;
80
+ //# sourceMappingURL=mastering_dynamics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mastering_dynamics.d.ts","sourceRoot":"","sources":["../src/mastering_dynamics.ts"],"names":[],"mappings":"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"}