@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,164 @@
1
+ import type { HrtfSet } from './playback_renderer';
2
+ /**
3
+ * The playback renderer configuration document, in the schema
4
+ * `schemas/playback-renderer-config.schema.json` (also shipped as the
5
+ * `./schemas/playback-renderer-config.schema.json` package export). Field
6
+ * spelling is the schema's own (snake_case, dotted nesting) rather than this
7
+ * binding's usual camelCase: the document is parsed by the shared C++ core, so
8
+ * every surface has to agree on one literal spelling.
9
+ *
10
+ * Every key is either a "prepare" key (fixed at {@link PlaybackRenderer}
11
+ * construction; changing one through `setConfig` throws) or a "realtime" key
12
+ * (adopted at the next processed block). Omitted keys take the schema defaults
13
+ * documented on each field below.
14
+ */
15
+ export interface PlaybackRendererConfig {
16
+ input?: PlaybackInputConfig;
17
+ target?: PlaybackTargetConfig;
18
+ /** LFE level folded into L/R when the output has no LFE plane or no subwoofer. Realtime, default 0. */
19
+ lfe_mix_db?: number;
20
+ upmix?: PlaybackUpmixConfig;
21
+ /** Static gain on the discrete centre of 5.1 / 7.1 input. Realtime, [-12, 12], default 0. */
22
+ dialogue_level_db?: number;
23
+ loudness?: PlaybackLoudnessConfig;
24
+ night_mode?: PlaybackNightModeConfig;
25
+ room?: PlaybackRoomConfig;
26
+ head_tracking?: PlaybackHeadTrackingConfig;
27
+ output_limiter?: PlaybackOutputLimiterConfig;
28
+ }
29
+ /** A speaker role name (`schemas/playback-renderer-config.schema.json` `$defs.role`). */
30
+ export type PlaybackChannelRole = 'L' | 'R' | 'C' | 'LFE' | 'Ls' | 'Rs' | 'Lss' | 'Rss';
31
+ export interface PlaybackInputConfig {
32
+ /** Prepare. `"auto"` follows the channel count of each processed block (1, 2, 6 or 8). Default `"auto"`. */
33
+ layout?: 'auto' | 'mono' | 'stereo' | '5.1' | '7.1';
34
+ /**
35
+ * Prepare. Role of each input channel, covering the fixed layout's roles
36
+ * exactly once; requires a fixed `layout`. `null` means canonical order.
37
+ */
38
+ channel_map?: PlaybackChannelRole[] | null;
39
+ }
40
+ export interface PlaybackSpeakerConfig {
41
+ /** Prepare. Listener distance in metres, [0.1, 30]; `null` disables distance compensation. Default `null`. */
42
+ distance_m?: number | null;
43
+ /** Realtime. Level trim in dB, [-20, 20]. Default 0. */
44
+ trim_db?: number;
45
+ /** Prepare. A `"small"` speaker is high-passed at the crossover when bass management is enabled. Default `"large"`. */
46
+ size?: 'large' | 'small';
47
+ }
48
+ export interface PlaybackBassManagementConfig {
49
+ /** Prepare. Default false. */
50
+ enabled?: boolean;
51
+ /** Prepare. LR4 crossover frequency, [40, 200]. Default 80. */
52
+ crossover_hz?: number;
53
+ /** Prepare. false folds the low band and LFE into the large L/R pair; L and R must then be large. Default true. */
54
+ subwoofer?: boolean;
55
+ /** Realtime. LFE gain when feeding the subwoofer, [-10, 15]. Default 10. */
56
+ lfe_gain_db?: number;
57
+ }
58
+ export interface PlaybackTargetConfig {
59
+ /** Prepare. Default `"headphones"`. */
60
+ kind?: 'headphones' | 'speakers';
61
+ /** Prepare. Required for `kind: "speakers"`, forbidden for `"headphones"`. */
62
+ layout?: 'stereo' | '5.1' | '7.1';
63
+ /** Per-speaker calibration keyed by role; only the non-LFE roles of the output layout. */
64
+ speakers?: Partial<Record<Exclude<PlaybackChannelRole, 'LFE'>, PlaybackSpeakerConfig>>;
65
+ bass_management?: PlaybackBassManagementConfig;
66
+ }
67
+ export interface PlaybackUpmixConfig {
68
+ /** Realtime. Stereo input only; the latency does not change. Default true. */
69
+ enabled?: boolean;
70
+ /** Realtime. Width of the centre window on the panning index, [0.05, 1]. Default 0.2. */
71
+ center_width?: number;
72
+ /** Realtime. Power share of the ambience kept in the front pair, [0, 1]. Default 0.5. */
73
+ front_ambience?: number;
74
+ /** Realtime. Derive LFE from the low-passed L/R sum. Default false. */
75
+ lfe_from_upmix?: boolean;
76
+ }
77
+ export interface PlaybackLoudnessConfig {
78
+ /** Realtime. Measured program loudness, [-70, 0]; `null` means no alignment gain. Default `null`. */
79
+ program_lufs?: number | null;
80
+ /** Realtime. [-40, -5]. Default -24. */
81
+ target_lufs?: number;
82
+ }
83
+ export interface PlaybackNightModeConfig {
84
+ /** Realtime. 0 disables the dynamic range control. [0, 1]. Default 0. */
85
+ amount?: number;
86
+ }
87
+ export interface PlaybackRoomConfig {
88
+ /** Prepare. Headphones only. Default `"living_room"`. */
89
+ preset?: 'none' | 'living_room' | 'home_theater' | 'screening_room';
90
+ /** Realtime. Level of the early reflections and the late reverberation, [-30, 6]. Default -6. */
91
+ mix_db?: number;
92
+ /** Realtime. Default true. */
93
+ enabled?: boolean;
94
+ }
95
+ export interface PlaybackHeadTrackingConfig {
96
+ /** Realtime. false treats the head pose as zero. Default true. */
97
+ enabled?: boolean;
98
+ }
99
+ export interface PlaybackOutputLimiterConfig {
100
+ /** Realtime. The latency does not change. Default true. */
101
+ enabled?: boolean;
102
+ /** Realtime. [-12, 0]. Default -1. */
103
+ ceiling_db?: number;
104
+ }
105
+ /** A stage name used in {@link PlaybackDiagnostics.inactive_stages} and `.latency.stages`. */
106
+ export type PlaybackStageName = 'reorder' | 'dialogue_level' | 'upmix' | 'loudness' | 'night_mode' | 'layout_convert' | 'speaker_calibration' | 'bass_management' | 'binaural' | 'room_early' | 'room_late' | 'output_limiter';
107
+ /** Per-stage reported latency, in samples and in Q8 fixed-point. */
108
+ export interface PlaybackStageLatency {
109
+ samples: number;
110
+ q8: number;
111
+ }
112
+ /**
113
+ * The renderer's diagnostics document, a plain object that can be sent through
114
+ * `postMessage` as is. Field spelling is the core's own (snake_case), the same
115
+ * pass-through convention as {@link PlaybackRendererConfig}.
116
+ */
117
+ export interface PlaybackDiagnostics {
118
+ active_input_layout: 'mono' | 'stereo' | '5.1' | '7.1';
119
+ layout_switches: number;
120
+ truncated_drains: number;
121
+ /** Stages this configuration does not exercise (e.g. `room_early` for a speakers target). */
122
+ inactive_stages: PlaybackStageName[];
123
+ latency: {
124
+ samples: number;
125
+ /** Every stage name reports an entry, whether or not it is currently active. */
126
+ stages: Record<PlaybackStageName, PlaybackStageLatency>;
127
+ };
128
+ loudness_gain_db: number;
129
+ loudness_gain_clamped: boolean;
130
+ /** True when an `hrtf` was supplied to a speakers target, which ignores it. */
131
+ hrtf_ignored: boolean;
132
+ limiter_gain_reduction_db: number;
133
+ non_finite_discards: number;
134
+ }
135
+ /** Request shape for the {@link PlaybackRenderer} constructor. */
136
+ export interface PlaybackRendererOptions {
137
+ config: PlaybackRendererConfig | string;
138
+ /**
139
+ * Required for a headphones target: this build embeds no HRTF data. Load the
140
+ * package asset `./hrtf/default.shrf` (or any SHRF v1 file) and pass it
141
+ * through `HrtfSet.fromBytes`. Ignored by a speakers target.
142
+ */
143
+ hrtf?: HrtfSet;
144
+ /** Default 48000. */
145
+ sampleRate?: number;
146
+ /** Upper bound on the frames of every process call. Default 1024. */
147
+ maxBlockSize?: number;
148
+ }
149
+ /** Request shape for the one-shot `renderPlayback`. */
150
+ export interface RenderPlaybackRequest {
151
+ /** Interleaved input, `channels` samples per frame. */
152
+ samples: Float32Array;
153
+ channels: number;
154
+ sampleRate: number;
155
+ config: PlaybackRendererConfig | string;
156
+ /** Required for a headphones target; see {@link PlaybackRendererOptions.hrtf}. */
157
+ hrtf?: HrtfSet;
158
+ }
159
+ /** `renderPlayback`'s result: interleaved output with the target's own channel count. */
160
+ export interface RenderPlaybackResult {
161
+ samples: Float32Array;
162
+ channels: number;
163
+ }
164
+ //# sourceMappingURL=public_types_playback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_types_playback.d.ts","sourceRoot":"","sources":["../src/public_types_playback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Realtime equalizer snapshot.
3
+ *
4
+ * Mirrors the C++ `EqualizerSpectrumSnapshot`: `preLeft`/`preRight` and
5
+ * `postLeft`/`postRight` are the pre- and post-EQ waveform streams (uniformly
6
+ * decimated time-domain samples, trimmed to their valid count), so they are a
7
+ * scope feed rather than a spectral estimate. `bandGainDb` holds per-band
8
+ * applied gain (24 entries). `profileDb` is the frequency-domain view: the
9
+ * post-EQ signal is Hann-windowed, transformed and its bin powers summed into
10
+ * 16 geometrically spaced bands covering 20 Hz to 20 kHz, in amplitude decibels
11
+ * relative to full scale (a full-scale sine reads about 0 dB in its own band),
12
+ * rising immediately and falling smoothly. `lastAutoGainDb` is the latest
13
+ * auto-gain compensation, and `seq` increments each time a new snapshot is
14
+ * published.
15
+ */
16
+ export interface EqSpectrumSnapshot {
17
+ preLeft: Float32Array;
18
+ preRight: Float32Array;
19
+ postLeft: Float32Array;
20
+ postRight: Float32Array;
21
+ bandGainDb: Float32Array;
22
+ profileDb: Float32Array;
23
+ lastAutoGainDb: number;
24
+ seq: number;
25
+ }
26
+ /**
27
+ * Equalizer band type (string union mirroring `sonare::mastering::eq::EqBandType`).
28
+ */
29
+ export type EqBandType = 'Peak' | 'LowShelf' | 'HighShelf' | 'LowPass' | 'HighPass' | 'BandPass' | 'Notch' | 'TiltShelf' | 'FlatTilt' | 'AllPass';
30
+ /** Biquad coefficient design mode. */
31
+ export type EqCoeffMode = 'Rbj' | 'Vicanek';
32
+ /** Stereo placement for an EQ band. */
33
+ export type EqStereoPlacement = 'Stereo' | 'Left' | 'Right' | 'Mid' | 'Side';
34
+ /** Per-band phase behaviour. */
35
+ export type EqBandPhase = 'Inherit' | 'ZeroLatency' | 'NaturalPhase' | 'LinearPhase';
36
+ /**
37
+ * Equalizer band configuration accepted by {@link StreamingEqualizer.setBand}.
38
+ *
39
+ * All fields are optional; omitted values fall back to the C++ band defaults
40
+ * (Peak, 1000 Hz, 0 dB gain, Butterworth Q, disabled).
41
+ */
42
+ export interface EqBand {
43
+ type?: EqBandType;
44
+ frequencyHz?: number;
45
+ gainDb?: number;
46
+ /**
47
+ * Resonance/slope. Ignored for a LowShelf/HighShelf band once `phase:
48
+ * 'NaturalPhase'` forces Vicanek coefficients (the Vicanek matched-Z shelf
49
+ * design has no Q/S parameter) -- the value is still stored and read back
50
+ * verbatim, so a reflected `q` on such a band does not describe the applied
51
+ * response. Set `coeffMode: 'Rbj'` for a Q-controllable shelf.
52
+ */
53
+ q?: number;
54
+ enabled?: boolean;
55
+ coeffMode?: EqCoeffMode;
56
+ /**
57
+ * Slope in dB/octave. 6 selects a first-order section on a pass or shelf
58
+ * band; a first-order shelf's frequency is its half-gain point and its `q`
59
+ * is unused.
60
+ */
61
+ slopeDbOct?: number;
62
+ placement?: EqStereoPlacement;
63
+ /**
64
+ * `'NaturalPhase'` forces `coeffMode: 'Vicanek'` for this band, which
65
+ * ignores `q` for LowShelf/HighShelf (see `q`'s doc).
66
+ */
67
+ phase?: EqBandPhase;
68
+ soloed?: boolean;
69
+ bypassed?: boolean;
70
+ proportionalQ?: boolean;
71
+ proportionalQStrength?: number;
72
+ dynamic?: boolean;
73
+ thresholdDb?: number;
74
+ autoThreshold?: boolean;
75
+ ratio?: number;
76
+ rangeDb?: number;
77
+ attackMs?: number;
78
+ releaseMs?: number;
79
+ /**
80
+ * Delays the detector's view of the signal by this many ms; a larger value
81
+ * makes the band react LATER, not earlier -- this is a detector delay, not
82
+ * true look-ahead, and adds no latency to the audio path.
83
+ */
84
+ detectorDelayMs?: number;
85
+ /** Former (misleading) spelling of `detectorDelayMs`, still accepted; `detectorDelayMs` wins if both are set. */
86
+ lookaheadMs?: number;
87
+ externalSidechain?: boolean;
88
+ sidechainFreqHz?: number;
89
+ sidechainQ?: number;
90
+ }
91
+ /** Construction options for {@link StreamingEqualizer}. */
92
+ export interface StreamingEqualizerConfig {
93
+ sampleRate?: number;
94
+ maxBlockSize?: number;
95
+ }
96
+ /** Configuration for {@link StreamingRetune}. */
97
+ export interface StreamingRetuneConfig {
98
+ /** Pitch shift in semitones, clamped by the native processor to +/-24. */
99
+ semitones?: number;
100
+ /** Wet/dry mix, clamped by the native processor to 0..1. */
101
+ mix?: number;
102
+ /** Grain size in samples. Use 0/omit to derive it from the sample rate. */
103
+ grainSize?: number;
104
+ }
105
+ /** Options for {@link StreamingEqualizer.match}. */
106
+ export interface EqMatchOptions {
107
+ sampleRate?: number;
108
+ maxBands?: number;
109
+ }
110
+ export type VoicePresetId = 'neutral-monitor' | 'bright-idol' | 'soft-whisper' | 'deep-narrator' | 'robot-mascot' | 'dark-villain';
111
+ export type VoicePresetCategory = 'monitor' | 'bright' | 'soft' | 'deep' | 'robot' | 'dark' | 'custom';
112
+ export interface RealtimeVoiceChangerPresetMetadata {
113
+ schemaVersion: 1;
114
+ id: string;
115
+ name: string;
116
+ description?: string;
117
+ category: VoicePresetCategory;
118
+ }
119
+ export type RealtimeVoiceChangerPreset = (RealtimeVoiceChangerPresetMetadata & {
120
+ dsp: Record<string, unknown>;
121
+ macros?: never;
122
+ }) | (RealtimeVoiceChangerPresetMetadata & {
123
+ macros: Record<string, number>;
124
+ dsp?: never;
125
+ });
126
+ export type RealtimeVoiceChangerConfigInput = VoicePresetId | RealtimeVoiceChangerPreset;
127
+ /**
128
+ * Flat (POD) realtime voice-changer configuration. Keys are camelCase to match
129
+ * the Node addon getter, so a preset config reads identically across both JS
130
+ * surfaces (the underlying C ABI / Python POD uses the snake_case equivalents).
131
+ */
132
+ export interface RealtimeVoiceChangerPodConfig {
133
+ inputGainDb: number;
134
+ outputGainDb: number;
135
+ wetMix: number;
136
+ retuneSemitones: number;
137
+ retuneMix: number;
138
+ retuneGrainSize: number;
139
+ formantFactor: number;
140
+ formantAmount: number;
141
+ formantBody: number;
142
+ formantBrightness: number;
143
+ formantNasal: number;
144
+ eqHighpassHz: number;
145
+ eqBodyDb: number;
146
+ eqPresenceDb: number;
147
+ eqAirDb: number;
148
+ gateThresholdDb: number;
149
+ gateAttackMs: number;
150
+ gateReleaseMs: number;
151
+ gateRangeDb: number;
152
+ compressorThresholdDb: number;
153
+ compressorRatio: number;
154
+ compressorAttackMs: number;
155
+ compressorReleaseMs: number;
156
+ compressorMakeupGainDb: number;
157
+ deesserFrequencyHz: number;
158
+ deesserThresholdDb: number;
159
+ deesserRatio: number;
160
+ deesserRangeDb: number;
161
+ reverbMix: number;
162
+ reverbTimeMs: number;
163
+ reverbDamping: number;
164
+ reverbSeed: number;
165
+ limiterCeilingDb: number;
166
+ limiterReleaseMs: number;
167
+ /** Non-zero enables the 4x-oversampled inter-sample-peak limiter (default enabled). */
168
+ limiterEnableIspLimiter: boolean;
169
+ /** True-peak ceiling in dBTP applied by the ISP limiter (default -1.0). */
170
+ limiterIspCeilingDbtp: number;
171
+ }
172
+ /** One raw UMP message: 1 to 4 words, most significant word first. */
173
+ export type UmpWords = Uint32Array | readonly number[];
174
+ //# sourceMappingURL=public_types_realtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_types_realtime.d.ts","sourceRoot":"","sources":["../src/public_types_realtime.ts"],"names":[],"mappings":"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"}