@libraz/libsonare 1.2.1 → 1.2.3

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.
@@ -421,6 +421,69 @@ export interface AcousticResult {
421
421
  isBlind: boolean;
422
422
  }
423
423
 
424
+ /** Shoebox geometry + placement shared by RIR synthesis and the room morph. */
425
+ export interface RoomGeometryOptions {
426
+ lengthM?: number;
427
+ widthM?: number;
428
+ heightM?: number;
429
+ absorption?: number;
430
+ sourceX?: number;
431
+ sourceY?: number;
432
+ sourceZ?: number;
433
+ listenerX?: number;
434
+ listenerY?: number;
435
+ listenerZ?: number;
436
+ ismOrder?: number;
437
+ seed?: number;
438
+ maxSeconds?: number;
439
+ }
440
+
441
+ export interface RirSynthOptions extends RoomGeometryOptions {
442
+ sampleRate?: number;
443
+ /** Use the Eyring statistical late-tail model (default true); false = Sabine. */
444
+ preferEyring?: boolean;
445
+ /** Early/late crossover in ms (0 = auto, ~sqrt(V) ms). */
446
+ mixingTimeMs?: number;
447
+ /** Equal-power crossfade width around the mixing time in ms (0 = default). */
448
+ crossfadeMs?: number;
449
+ }
450
+
451
+ export interface RirResult {
452
+ rir: Float32Array;
453
+ sampleRate: number;
454
+ hasError: boolean;
455
+ }
456
+
457
+ export interface RoomEstimateOptions {
458
+ aspectHintLw?: number;
459
+ aspectHintLh?: number;
460
+ referenceAbsorption?: number;
461
+ preferEyring?: boolean;
462
+ nOctaveBands?: number;
463
+ /** Analyzer routing: 0 = auto, 1 = blind, 2 = impulse-response. */
464
+ mode?: number;
465
+ /** Analyzer decay-fit span in dB (0 = library default). */
466
+ minDecayDb?: number;
467
+ /** Analyzer noise-floor margin in dB (0 = library default). */
468
+ noiseFloorMarginDb?: number;
469
+ }
470
+
471
+ export interface RoomEstimateResult {
472
+ volume: number;
473
+ length: number;
474
+ width: number;
475
+ height: number;
476
+ drrDb: number;
477
+ confidence: number;
478
+ absorptionBands: Float32Array;
479
+ rt60Bands: Float32Array;
480
+ }
481
+
482
+ export interface RoomMorphOptions extends RoomGeometryOptions {
483
+ wet?: number;
484
+ sourceTailSuppression?: number;
485
+ }
486
+
424
487
  /**
425
488
  * HPSS (Harmonic-Percussive Source Separation) result
426
489
  */
@@ -855,6 +918,71 @@ export interface StreamingRetuneConfig {
855
918
  grainSize?: number;
856
919
  }
857
920
 
921
+ export type VoicePresetId =
922
+ | 'neutral-monitor'
923
+ | 'bright-idol'
924
+ | 'soft-whisper'
925
+ | 'deep-narrator'
926
+ | 'robot-mascot'
927
+ | 'dark-villain';
928
+
929
+ export interface RealtimeVoiceChangerPreset {
930
+ schemaVersion: 1;
931
+ id?: string;
932
+ name?: string;
933
+ description?: string;
934
+ macros?: Record<string, number>;
935
+ dsp?: Record<string, unknown>;
936
+ }
937
+
938
+ export type RealtimeVoiceChangerConfigInput = VoicePresetId | RealtimeVoiceChangerPreset;
939
+
940
+ /**
941
+ * Flat (POD) realtime voice-changer configuration. Field names mirror the
942
+ * C ABI `SonareRealtimeVoiceChangerConfig` / Python POD exactly (snake_case),
943
+ * so a config can be round-tripped across bindings without renaming.
944
+ */
945
+ export interface RealtimeVoiceChangerPodConfig {
946
+ input_gain_db: number;
947
+ output_gain_db: number;
948
+ wet_mix: number;
949
+ retune_semitones: number;
950
+ retune_mix: number;
951
+ retune_grain_size: number;
952
+ formant_factor: number;
953
+ formant_amount: number;
954
+ formant_body: number;
955
+ formant_brightness: number;
956
+ formant_nasal: number;
957
+ eq_highpass_hz: number;
958
+ eq_body_db: number;
959
+ eq_presence_db: number;
960
+ eq_air_db: number;
961
+ gate_threshold_db: number;
962
+ gate_attack_ms: number;
963
+ gate_release_ms: number;
964
+ gate_range_db: number;
965
+ compressor_threshold_db: number;
966
+ compressor_ratio: number;
967
+ compressor_attack_ms: number;
968
+ compressor_release_ms: number;
969
+ compressor_makeup_gain_db: number;
970
+ deesser_frequency_hz: number;
971
+ deesser_threshold_db: number;
972
+ deesser_ratio: number;
973
+ deesser_range_db: number;
974
+ reverb_mix: number;
975
+ reverb_time_ms: number;
976
+ reverb_damping: number;
977
+ reverb_seed: number;
978
+ limiter_ceiling_db: number;
979
+ limiter_release_ms: number;
980
+ /** Non-zero enables the 4x-oversampled inter-sample-peak limiter (default enabled). */
981
+ limiter_enable_isp_limiter: boolean;
982
+ /** True-peak ceiling in dBTP applied by the ISP limiter (default -1.0). */
983
+ limiter_isp_ceiling_dbtp: number;
984
+ }
985
+
858
986
  /** Options for {@link StreamingEqualizer.match}. */
859
987
  export interface EqMatchOptions {
860
988
  sampleRate?: number;