@libraz/libsonare 1.7.0 → 1.7.2

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.
package/README.md CHANGED
@@ -198,6 +198,39 @@ The bounded-memory guarantee applies only to an OPFS/page-provider source.
198
198
  Passing a `Float32Array[]` to `addClip` keeps that full array in the JavaScript
199
199
  heap, so it is appropriate for short clips but does not make long clips bounded.
200
200
 
201
+ ### Cue bus on a second AudioWorklet output
202
+
203
+ Per-track PFL/AFL monitoring normally folds the cue into the program output.
204
+ Pass `cueOutput` and the node gains a second output carrying the cue alone, so
205
+ it can be routed to headphones or a separate device while the program mix stays
206
+ untouched.
207
+
208
+ ```typescript
209
+ import { SonareEngine } from '@libraz/libsonare/worklet';
210
+
211
+ const engine = await SonareEngine.create(audioContext, { cueOutput: true });
212
+ engine.setTrackMonitorMode(trackId, 'pfl');
213
+
214
+ engine.node.connect(audioContext.destination, 0); // program
215
+ engine.node.connect(cueDestination, 1); // cue
216
+ ```
217
+
218
+ Without `cueOutput` the node keeps a single output and the folded mix, sample
219
+ for sample. Off the worklet, the same split is available on the zero-copy path
220
+ as `prepareMonitorChannels` / `getMonitorChannelBuffer` /
221
+ `processPreparedWithMonitor`, and as `processWithMonitor` for a copy-in call.
222
+
223
+ ### Mastering preview inside the worklet
224
+
225
+ `StreamingMasteringChain` is exported from `@libraz/libsonare/worklet`, so a live
226
+ preview can run in the render realm instead of round-tripping audio to the main
227
+ thread. Build and `prepare()` it from a message handler — `prepare()` allocates
228
+ and must not run inside `process()`. An enabled `loudness` stage needs the
229
+ offline-measured `loudnessStaticGainDb`, since whole-signal integrated LUFS
230
+ cannot be measured block by block. The chain is a host-side stage: it is outside
231
+ the engine's own delay compensation, so aligning it against other engine outputs
232
+ is the caller's job.
233
+
201
234
  ## Capabilities
202
235
 
203
236
  Every area below has runnable examples and the full API in the
@@ -363,6 +363,15 @@ interface MasteringChainConfig {
363
363
  releaseMs?: number;
364
364
  applyGainAtInputRate?: boolean;
365
365
  };
366
+ /**
367
+ * Dot-notation spelling of any leaf above, e.g. `'loudness.targetLufs': -20`
368
+ * beside or instead of `loudness: { targetLufs: -20 }`. It is the form the C
369
+ * ABI carries parameters in, so a caller assembling overrides dynamically can
370
+ * emit it directly; the core validates the key and rejects an unknown one.
371
+ * The nested spelling is canonical — prefer it in hand-written code, where it
372
+ * is checked field by field while a dotted key is only checked at run time.
373
+ */
374
+ [flatKey: `${string}.${string}`]: number | boolean | undefined;
366
375
  }
367
376
  /**
368
377
  * Configuration for the block-by-block {@link StreamingMasteringChain}.
@@ -1024,6 +1033,14 @@ interface RealtimeVoiceChangerPodConfig {
1024
1033
  limiterIspCeilingDbtp: number;
1025
1034
  }
1026
1035
 
1036
+ /**
1037
+ * Per-frame voicing decision, one entry per `f0Hz` frame. A truthy or non-zero
1038
+ * entry marks the frame voiced. The union covers what the analysis side hands
1039
+ * back — `PitchResult.voicedFlag` is a `boolean[]` — as well as the typed and
1040
+ * plain numeric arrays a caller may build directly, so a pitch track can be fed
1041
+ * straight into pitch correction without a conversion step.
1042
+ */
1043
+ type VoicedFlags = Int32Array | Uint8Array | Float32Array | readonly number[] | readonly boolean[];
1027
1044
  /** Options for `pitchCorrectTimevarying`. All fields are optional. */
1028
1045
  interface PitchCorrectOptions extends ValidateOptions {
1029
1046
  /** `'midi'` retunes toward `targetMidi`; `'scale'` snaps to the key. Default `'midi'`. */
@@ -1044,8 +1061,8 @@ interface PitchCorrectOptions extends ValidateOptions {
1044
1061
  retuneSpeedMs?: number;
1045
1062
  /** Corrections below this are bypassed to preserve vibrato (cents). Default 20. */
1046
1063
  vibratoThresholdCents?: number;
1047
- /** Per-frame voiced flags (non-zero = voiced); omit to treat all frames as voiced. */
1048
- voiced?: Int32Array;
1064
+ /** Per-frame voiced flags (truthy = voiced); omit to treat all frames as voiced. */
1065
+ voiced?: VoicedFlags;
1049
1066
  /** Per-frame voicing probability in `[0, 1]`; omit to derive from `voiced`. */
1050
1067
  voicedProb?: Float32Array;
1051
1068
  }
@@ -2376,6 +2393,9 @@ interface WasmRealtimeEngine {
2376
2393
  prepareChannels: (numChannels: number, maxFrames: number) => void;
2377
2394
  getChannelBuffer: (channel: number, numFrames: number) => Float32Array;
2378
2395
  processPrepared: (numFrames: number) => void;
2396
+ prepareMonitorChannels: (numChannels: number, maxFrames: number) => void;
2397
+ getMonitorChannelBuffer: (channel: number, numFrames: number) => Float32Array;
2398
+ processPreparedWithMonitor: (numFrames: number) => void;
2379
2399
  processWithMonitor: (channels: Float32Array[]) => WasmEngineProcessWithMonitorResult;
2380
2400
  renderOffline: (channels: Float32Array[], blockSize: number) => Float32Array[];
2381
2401
  bounceOffline: (options: WasmEngineBounceOptions) => WasmEngineBounceResult;
@@ -2589,6 +2609,11 @@ interface SonareModule {
2589
2609
  hopLength: number,
2590
2610
  ) => number;
2591
2611
  meteringCrestFactorDb: (samples: Float32Array, sampleRate: number) => number;
2612
+ meteringCrestFactorDbStereo: (
2613
+ left: Float32Array,
2614
+ right: Float32Array,
2615
+ sampleRate: number,
2616
+ ) => number;
2592
2617
  meteringDcOffset: (samples: Float32Array, sampleRate: number) => number;
2593
2618
  meteringTruePeakDb: (
2594
2619
  samples: Float32Array,
@@ -2954,6 +2979,24 @@ interface SonareModule {
2954
2979
  sampleRate: number,
2955
2980
  platforms: Array<{ name: string; targetLufs: number; ceilingDb: number }>,
2956
2981
  ) => string;
2982
+ masteringAssistantSuggestStereo: (
2983
+ left: Float32Array,
2984
+ right: Float32Array,
2985
+ sampleRate: number,
2986
+ params: Record<string, number | boolean>,
2987
+ ) => string;
2988
+ masteringAudioProfileStereo: (
2989
+ left: Float32Array,
2990
+ right: Float32Array,
2991
+ sampleRate: number,
2992
+ params: Record<string, number | boolean>,
2993
+ ) => string;
2994
+ masteringStreamingPreviewStereo: (
2995
+ left: Float32Array,
2996
+ right: Float32Array,
2997
+ sampleRate: number,
2998
+ platforms: Array<{ name: string; targetLufs: number; ceilingDb: number }>,
2999
+ ) => string;
2957
3000
  masteringRepairDeclick: (
2958
3001
  samples: Float32Array,
2959
3002
  sampleRate: number,
@@ -5340,6 +5383,15 @@ declare function meteringSilenceRatio(request: MeteringSilenceRatioRequest): num
5340
5383
  declare function meteringSilenceRatio(samples: Float32Array, sampleRate?: number, thresholdDb?: number, frameLength?: number, hopLength?: number, options?: ValidateOptions): number;
5341
5384
  declare function meteringCrestFactorDb(request: MeteringSamplesRequest): number;
5342
5385
  declare function meteringCrestFactorDb(samples: Float32Array, sampleRate?: number, options?: ValidateOptions): number;
5386
+ /**
5387
+ * Crest factor in dB across both channels of a stereo pair.
5388
+ *
5389
+ * Takes the peak across both channels and the RMS over both together. An
5390
+ * out-of-phase pair cancels in the `0.5 * (left + right)` downmix
5391
+ * {@link meteringCrestFactorDb} would need, which understates its RMS and so
5392
+ * overstates the crest factor.
5393
+ */
5394
+ declare function meteringCrestFactorDbStereo(request: MeteringStereoRequest): number;
5343
5395
  declare function meteringDcOffset(request: MeteringSamplesRequest): number;
5344
5396
  declare function meteringDcOffset(samples: Float32Array, sampleRate?: number, options?: ValidateOptions): number;
5345
5397
  /**
@@ -5806,4 +5858,4 @@ declare function engineAbiVersion(): number;
5806
5858
  /** Voice-changer ABI version retained for cross-entry compatibility checks. */
5807
5859
  declare function voiceChangerAbiVersion(): number;
5808
5860
 
5809
- export { type AcousticOptions, type AcousticResult, type AnalysisResult, type AnalyzeBpmOptions, type AnalyzeBpmRequest, type AnalyzeDynamicsOptions, type AnalyzeDynamicsRequest, type AnalyzeImpulseResponseRequest, type AnalyzeMelodyRequest, type AnalyzeRhythmOptions, type AnalyzeRhythmRequest, type AnalyzeSectionsOptions, type AnalyzeSectionsRequest, type AnalyzeTimbreOptions, type AnalyzeTimbreRequest, type AnalyzeWithProgressRequest, type AutomationCurve, type Beat, type BpmAnalysisResult, type BpmCandidate, type BpmHypothesis, type CapabilityCatalog, type CapabilityCatalogParameter, type CapabilityCatalogPresets, type CapabilityCatalogProcessor, type ChirpRequest, type Chord, type ChordAnalysisResult, type ChordDetectionOptions, type ChordFunctionalAnalysisRequest, ChordQuality, type ChromaResult, type ChromaSpectrogramRequest, type ClicksRequest, type ClippingRegion, type ClippingReport, type CqtRequest, type CqtResult, type CqtToAudioRequest, type CyclicTempogramRequest, type DbConversionRequest, type DecomposeRequest, type DecomposeWithInitRequest, type DetectAcousticRequest, type DetectChordsRequest, type DetectKeyRequest, type DynamicRangeReport, type Dynamics, type DynamicsAnalysisResult, type Ebur128LoudnessRangeRequest, type EmphasisRequest, type EqBand, type EqBandPhase, type EqBandType, type EqCoeffMode, type EqMatchOptions, type EqSpectrumSnapshot, type EqStereoPlacement, ErrorCode, type EstimateTuningRequest, type FixFramesRequest, type FixLengthRequest, type FourierTempogramRequest, type FrameSignalRequest, type GoniometerPoint, type GriffinLimRequest, type HpssResult, type HpssWithResidualRequest, type Key, type KeyCandidate, type KeyDetectionOptions, KeyProfile, type KeyProfileName, type LufsInterleavedRequest, type LufsRequest, type LufsResult, type MasteringChainConfig, type MasteringChainResult, type MasteringChainStereoResult, type MasteringLoudnessSummary, type MasteringOptions, type MasteringPreset, type MasteringProcessorParams, type MasteringReport, type MasteringResult, type MasteringStereoChainResult, type MasteringStereoResult, type MelDeltaRequest, type MelPowerResult, type MelSpectrogramRequest, type MelSpectrogramResult, type MelToAudioRequest, type MelToStftRequest, type MelodyContour, type MelodyOptions, type MelodyPoint, type MelodyResult, type MeterTap, type MeteringDetectClippingOptions, type MeteringDetectClippingRequest, type MeteringDynamicRangeOptions, type MeteringDynamicRangeRequest, type MeteringSamplesRequest, type MeteringSilenceRatioRequest, type MeteringSpectrumFrameRequest, type MeteringSpectrumRequest, type MeteringStereoDecimatedRequest, type MeteringStereoRequest, type MeteringTruePeakRequest, type MfccRequest, type MfccResult, type MfccToAudioRequest, type MfccToMelRequest, type MixMeterSnapshot, type MixOptions, type MixResult, type MixerProcessResult, Mode, type MusicAnalyzeOptions, type MusicAnalyzeRequest, type NnFilterRequest, type NnlsChromaRequest, type NoteMoveOptions, type NoteSegment, type NoteSegmentsRequest, type NoteStretchOptions, type OnsetBacktrackRequest, type OnsetEnvelopeRequest, type OnsetStrengthMultiRequest, type OnsetStrengthMultiResult, type PadCenterRequest, type PairAnalysis, type PairProcessor, type PanLaw, type PanLawInput, type PanLawName, type PanMode, type PcenRequest, type PeakPickRequest, type PhaseScopeReport, type PhaseVocoderRequest, type PiptrackRequest, type PiptrackResult, PitchClass, type PitchCorrectOptions, type PitchPyinRequest, type PitchResult, type PitchTuningRequest, type PitchYinRequest, type PlpRequest, type PolyFeaturesRequest, type ProgressCallback, type RealtimeVoiceChangerConfigInput, type RealtimeVoiceChangerPodConfig, type RealtimeVoiceChangerPreset, type RealtimeVoiceChangerPresetMetadata, type ReassignedSpectrogramRequest, type ReassignedSpectrogramResult, type RemixRequest, type ResampleRequest, type RhythmAnalysisResult, type RhythmFeatures, type RirResult, type RirSynthOptions, type RoomEstimateOptions, type RoomEstimateResult, type RoomGeometryOptions, type RoomMorphOptions, type SamplesRequest, type ScopeOptions, type Section, SectionType, type SegmentAgglomerativeRequest, type SegmentCrossSimilarityRequest, type SegmentLagToRecurrenceRequest, type SegmentMatrix, type SegmentPathEnhanceRequest, type SegmentRecurrenceMatrixRequest, type SegmentRecurrenceToLagRequest, type SegmentSubsegmentRequest, type SendTiming, type SilenceRequest, type SoloProcessor, type SonareCapabilities, SonareError, type SpectralContrastRequest, type SpectralEditMode, type SpectralEditOptions, type SpectralEditWindow, type SpectralFrameRequest, type SpectralRegionOp, type SpectralRolloffRequest, type SpectrogramRequest, type SpectrumOptions, type SpectrumReport, type StageGainReduction, type StereoAnalysis, type StftPowerResult, type StftResult, type StreamingEqualizerConfig, type StreamingMasteringChainConfig, type StreamingPlatform, type StreamingRetuneConfig, type SurroundPan, type TempogramMode$1 as TempogramMode, type TempogramRatioRequest, type TempogramRequest, type Timbre, type TimbreAnalysisResult, type TimbreFrame, type TimeSignature, type ToneRequest, type TonnetzRequest, type TrimRequest, type VectorNormalizeRequest, type VectorscopeReport, type VoicePresetCategory, type VoicePresetId, type VqtRequest, type VqtToAudioRequest, type WaveformPeakPyramidOptions, type WaveformPeakPyramidRequest, type WaveformPeaksOptions, type WaveformPeaksReport, type WaveformPeaksRequest, type ZeroCrossingRateRequest, type ZeroCrossingsRequest, abiVersion, amplitudeToDb, analyze, analyzeBpm, analyzeDynamics, analyzeImpulseResponse, analyzeMelody, analyzeRhythm, analyzeSections, analyzeTimbre, analyzeWithProgress, bassChroma, capabilities, chirp, chordFunctionalAnalysis, chroma, chromaCens, chromaCqt, clicks, cqt, cqtToAudio, cyclicTempogram, dbToAmplitude, dbToPower, decompose, decomposeWithInit, deemphasis, detectAcoustic, detectBeats, detectBpm, detectChords, detectDownbeats, detectKey, detectKeyCandidates, detectOnsets, ebur128LoudnessRange, engineAbiVersion, estimateTuning, fixFrames, fixLength, fourierTempogram, frameSignal, framesToSamples, framesToTime, griffinLim, hasFfmpegSupport, hpssWithResidual, hybridCqt, hzToMel, hzToMidi, hzToNote, init, isInitialized, isSonareError, lufs, lufsInterleaved, melDelta, melSpectrogram, melToAudio, melToHz, melToStft, meteringCrestFactorDb, meteringDcOffset, meteringDetectClipping, meteringDynamicRange, meteringPeakDb, meteringPhaseScope, meteringPhaseScopeDecimated, meteringRmsDb, meteringSilenceRatio, meteringSpectrum, meteringSpectrumFrame, meteringStereoCorrelation, meteringStereoWidth, meteringTruePeakDb, meteringVectorscope, meteringVectorscopeDecimated, mfcc, mfccToAudio, mfccToMel, midiToHz, momentaryLufs, nnFilter, nnlsChroma, noteSegments, noteToHz, onsetBacktrack, onsetEnvelope, onsetStrengthMulti, padCenter, pcen, peakPick, phaseVocoder, piptrack, pitchPyin, pitchTuning, pitchYin, plp, polyFeatures, powerToDb, preemphasis, pseudoCqt, reassignedSpectrogram, remix, resample, rmsEnergy, samplesToFrames, segmentAgglomerative, segmentCrossSimilarity, segmentLagToRecurrence, segmentPathEnhance, segmentRecurrenceMatrix, segmentRecurrenceToLag, segmentSubsegment, shortTermLufs, spectralBandwidth, spectralCentroid, spectralContrast, spectralFlatness, spectralFlux, spectralRolloff, splitSilence, stft, stftDb, tempogram, tempogramRatio, timeToFrames, tone, tonnetz, trim, trimSilence, vectorNormalize, version, voiceChangerAbiVersion, vqt, vqtToAudio, waveformPeakPyramid, waveformPeaks, zeroCrossingRate, zeroCrossings };
5861
+ export { type AcousticOptions, type AcousticResult, type AnalysisResult, type AnalyzeBpmOptions, type AnalyzeBpmRequest, type AnalyzeDynamicsOptions, type AnalyzeDynamicsRequest, type AnalyzeImpulseResponseRequest, type AnalyzeMelodyRequest, type AnalyzeRhythmOptions, type AnalyzeRhythmRequest, type AnalyzeSectionsOptions, type AnalyzeSectionsRequest, type AnalyzeTimbreOptions, type AnalyzeTimbreRequest, type AnalyzeWithProgressRequest, type AutomationCurve, type Beat, type BpmAnalysisResult, type BpmCandidate, type BpmHypothesis, type CapabilityCatalog, type CapabilityCatalogParameter, type CapabilityCatalogPresets, type CapabilityCatalogProcessor, type ChirpRequest, type Chord, type ChordAnalysisResult, type ChordDetectionOptions, type ChordFunctionalAnalysisRequest, ChordQuality, type ChromaResult, type ChromaSpectrogramRequest, type ClicksRequest, type ClippingRegion, type ClippingReport, type CqtRequest, type CqtResult, type CqtToAudioRequest, type CyclicTempogramRequest, type DbConversionRequest, type DecomposeRequest, type DecomposeWithInitRequest, type DetectAcousticRequest, type DetectChordsRequest, type DetectKeyRequest, type DynamicRangeReport, type Dynamics, type DynamicsAnalysisResult, type Ebur128LoudnessRangeRequest, type EmphasisRequest, type EqBand, type EqBandPhase, type EqBandType, type EqCoeffMode, type EqMatchOptions, type EqSpectrumSnapshot, type EqStereoPlacement, ErrorCode, type EstimateTuningRequest, type FixFramesRequest, type FixLengthRequest, type FourierTempogramRequest, type FrameSignalRequest, type GoniometerPoint, type GriffinLimRequest, type HpssResult, type HpssWithResidualRequest, type Key, type KeyCandidate, type KeyDetectionOptions, KeyProfile, type KeyProfileName, type LufsInterleavedRequest, type LufsRequest, type LufsResult, type MasteringChainConfig, type MasteringChainResult, type MasteringChainStereoResult, type MasteringLoudnessSummary, type MasteringOptions, type MasteringPreset, type MasteringProcessorParams, type MasteringReport, type MasteringResult, type MasteringStereoChainResult, type MasteringStereoResult, type MelDeltaRequest, type MelPowerResult, type MelSpectrogramRequest, type MelSpectrogramResult, type MelToAudioRequest, type MelToStftRequest, type MelodyContour, type MelodyOptions, type MelodyPoint, type MelodyResult, type MeterTap, type MeteringDetectClippingOptions, type MeteringDetectClippingRequest, type MeteringDynamicRangeOptions, type MeteringDynamicRangeRequest, type MeteringSamplesRequest, type MeteringSilenceRatioRequest, type MeteringSpectrumFrameRequest, type MeteringSpectrumRequest, type MeteringStereoDecimatedRequest, type MeteringStereoRequest, type MeteringTruePeakRequest, type MfccRequest, type MfccResult, type MfccToAudioRequest, type MfccToMelRequest, type MixMeterSnapshot, type MixOptions, type MixResult, type MixerProcessResult, Mode, type MusicAnalyzeOptions, type MusicAnalyzeRequest, type NnFilterRequest, type NnlsChromaRequest, type NoteMoveOptions, type NoteSegment, type NoteSegmentsRequest, type NoteStretchOptions, type OnsetBacktrackRequest, type OnsetEnvelopeRequest, type OnsetStrengthMultiRequest, type OnsetStrengthMultiResult, type PadCenterRequest, type PairAnalysis, type PairProcessor, type PanLaw, type PanLawInput, type PanLawName, type PanMode, type PcenRequest, type PeakPickRequest, type PhaseScopeReport, type PhaseVocoderRequest, type PiptrackRequest, type PiptrackResult, PitchClass, type PitchCorrectOptions, type PitchPyinRequest, type PitchResult, type PitchTuningRequest, type PitchYinRequest, type PlpRequest, type PolyFeaturesRequest, type ProgressCallback, type RealtimeVoiceChangerConfigInput, type RealtimeVoiceChangerPodConfig, type RealtimeVoiceChangerPreset, type RealtimeVoiceChangerPresetMetadata, type ReassignedSpectrogramRequest, type ReassignedSpectrogramResult, type RemixRequest, type ResampleRequest, type RhythmAnalysisResult, type RhythmFeatures, type RirResult, type RirSynthOptions, type RoomEstimateOptions, type RoomEstimateResult, type RoomGeometryOptions, type RoomMorphOptions, type SamplesRequest, type ScopeOptions, type Section, SectionType, type SegmentAgglomerativeRequest, type SegmentCrossSimilarityRequest, type SegmentLagToRecurrenceRequest, type SegmentMatrix, type SegmentPathEnhanceRequest, type SegmentRecurrenceMatrixRequest, type SegmentRecurrenceToLagRequest, type SegmentSubsegmentRequest, type SendTiming, type SilenceRequest, type SoloProcessor, type SonareCapabilities, SonareError, type SpectralContrastRequest, type SpectralEditMode, type SpectralEditOptions, type SpectralEditWindow, type SpectralFrameRequest, type SpectralRegionOp, type SpectralRolloffRequest, type SpectrogramRequest, type SpectrumOptions, type SpectrumReport, type StageGainReduction, type StereoAnalysis, type StftPowerResult, type StftResult, type StreamingEqualizerConfig, type StreamingMasteringChainConfig, type StreamingPlatform, type StreamingRetuneConfig, type SurroundPan, type TempogramMode$1 as TempogramMode, type TempogramRatioRequest, type TempogramRequest, type Timbre, type TimbreAnalysisResult, type TimbreFrame, type TimeSignature, type ToneRequest, type TonnetzRequest, type TrimRequest, type VectorNormalizeRequest, type VectorscopeReport, type VoicePresetCategory, type VoicePresetId, type VoicedFlags, type VqtRequest, type VqtToAudioRequest, type WaveformPeakPyramidOptions, type WaveformPeakPyramidRequest, type WaveformPeaksOptions, type WaveformPeaksReport, type WaveformPeaksRequest, type ZeroCrossingRateRequest, type ZeroCrossingsRequest, abiVersion, amplitudeToDb, analyze, analyzeBpm, analyzeDynamics, analyzeImpulseResponse, analyzeMelody, analyzeRhythm, analyzeSections, analyzeTimbre, analyzeWithProgress, bassChroma, capabilities, chirp, chordFunctionalAnalysis, chroma, chromaCens, chromaCqt, clicks, cqt, cqtToAudio, cyclicTempogram, dbToAmplitude, dbToPower, decompose, decomposeWithInit, deemphasis, detectAcoustic, detectBeats, detectBpm, detectChords, detectDownbeats, detectKey, detectKeyCandidates, detectOnsets, ebur128LoudnessRange, engineAbiVersion, estimateTuning, fixFrames, fixLength, fourierTempogram, frameSignal, framesToSamples, framesToTime, griffinLim, hasFfmpegSupport, hpssWithResidual, hybridCqt, hzToMel, hzToMidi, hzToNote, init, isInitialized, isSonareError, lufs, lufsInterleaved, melDelta, melSpectrogram, melToAudio, melToHz, melToStft, meteringCrestFactorDb, meteringCrestFactorDbStereo, meteringDcOffset, meteringDetectClipping, meteringDynamicRange, meteringPeakDb, meteringPhaseScope, meteringPhaseScopeDecimated, meteringRmsDb, meteringSilenceRatio, meteringSpectrum, meteringSpectrumFrame, meteringStereoCorrelation, meteringStereoWidth, meteringTruePeakDb, meteringVectorscope, meteringVectorscopeDecimated, mfcc, mfccToAudio, mfccToMel, midiToHz, momentaryLufs, nnFilter, nnlsChroma, noteSegments, noteToHz, onsetBacktrack, onsetEnvelope, onsetStrengthMulti, padCenter, pcen, peakPick, phaseVocoder, piptrack, pitchPyin, pitchTuning, pitchYin, plp, polyFeatures, powerToDb, preemphasis, pseudoCqt, reassignedSpectrogram, remix, resample, rmsEnergy, samplesToFrames, segmentAgglomerative, segmentCrossSimilarity, segmentLagToRecurrence, segmentPathEnhance, segmentRecurrenceMatrix, segmentRecurrenceToLag, segmentSubsegment, shortTermLufs, spectralBandwidth, spectralCentroid, spectralContrast, spectralFlatness, spectralFlux, spectralRolloff, splitSilence, stft, stftDb, tempogram, tempogramRatio, timeToFrames, tone, tonnetz, trim, trimSilence, vectorNormalize, version, voiceChangerAbiVersion, vqt, vqtToAudio, waveformPeakPyramid, waveformPeaks, zeroCrossingRate, zeroCrossings };
package/dist/analysis.js CHANGED
@@ -1732,6 +1732,15 @@ function meteringCrestFactorDb(samples, sampleRate = 22050, options = {}) {
1732
1732
  assertSamples("meteringCrestFactorDb", request.samples, request.validate !== false);
1733
1733
  return requireModule7().meteringCrestFactorDb(request.samples, request.sampleRate ?? 22050);
1734
1734
  }
1735
+ function meteringCrestFactorDbStereo(request) {
1736
+ assertSamples("meteringCrestFactorDbStereo", request.left, request.validate !== false);
1737
+ assertSamples("meteringCrestFactorDbStereo", request.right, request.validate !== false);
1738
+ return requireModule7().meteringCrestFactorDbStereo(
1739
+ request.left,
1740
+ request.right,
1741
+ request.sampleRate ?? 22050
1742
+ );
1743
+ }
1735
1744
  function meteringDcOffset(samples, sampleRate = 22050, options = {}) {
1736
1745
  const request = samples instanceof Float32Array ? { samples, sampleRate, ...options } : samples;
1737
1746
  assertSamples("meteringDcOffset", request.samples, request.validate !== false);
@@ -2492,6 +2501,7 @@ export {
2492
2501
  melToHz,
2493
2502
  melToStft,
2494
2503
  meteringCrestFactorDb,
2504
+ meteringCrestFactorDbStereo,
2495
2505
  meteringDcOffset,
2496
2506
  meteringDetectClipping,
2497
2507
  meteringDynamicRange,