DynamicZeroCrossing
Defined in: packages/pleco-xa/src/loop/primitives.js:15
Dynamic Zero Crossing with Micro Crossfades.
Maintains musical accuracy while ensuring clean audio boundaries.
All-static API: use DynamicZeroCrossing.snap(...) / .optimizeLoopBoundaries(...).
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new DynamicZeroCrossing():
DynamicZeroCrossing
Returns
Section titled “Returns”DynamicZeroCrossing
Methods
Section titled “Methods”findNearestZeroCrossing()
Section titled “findNearestZeroCrossing()”
staticfindNearestZeroCrossing(audioData,centerSample,searchWindow):any
Defined in: packages/pleco-xa/src/loop/primitives.js:80
Find nearest zero crossing within search window
Parameters
Section titled “Parameters”audioData
Section titled “audioData”Float32Array<ArrayBufferLike>
Audio samples
centerSample
Section titled “centerSample”number
Target sample position
searchWindow
Section titled “searchWindow”number
Samples to search around center
Returns
Section titled “Returns”any
- { sample: number, confidence: number, distanceFromMusical: number }
generateMicroCrossfade()
Section titled “generateMicroCrossfade()”
staticgenerateMicroCrossfade(crossfadeInfo):object
Defined in: packages/pleco-xa/src/loop/primitives.js:118
Generate crossfade data for smooth loop transitions
Parameters
Section titled “Parameters”crossfadeInfo
Section titled “crossfadeInfo”any
Crossfade configuration ({ crossfadeDuration })
Returns
Section titled “Returns”object
fadeIn
Section titled “fadeIn”fadeIn:
Float32Array
fadeOut
Section titled “fadeOut”fadeOut:
Float32Array
length
Section titled “length”length:
number
optimizeLoopBoundaries()
Section titled “optimizeLoopBoundaries()”
staticoptimizeLoopBoundaries(audioData,musicalLoop,sampleRate):any
Defined in: packages/pleco-xa/src/loop/primitives.js:23
Find optimal loop boundaries with zero crossing alignment
Parameters
Section titled “Parameters”audioData
Section titled “audioData”Float32Array<ArrayBufferLike>
Raw audio samples
musicalLoop
Section titled “musicalLoop”any
{ start: 0-1, end: 0-1 } musical loop points
sampleRate
Section titled “sampleRate”number
Audio sample rate
Returns
Section titled “Returns”any
- Optimized loop with crossfade data
snap()
Section titled “snap()”
staticsnap(audioData,startSample,endSample,searchWindow?): [number,number]
Defined in: packages/pleco-xa/src/loop/primitives.js:145
Snap raw start/end sample indices to the nearest zero-crossing within ±searchWindow samples.
Parameters
Section titled “Parameters”audioData
Section titled “audioData”Float32Array<ArrayBufferLike>
startSample
Section titled “startSample”number
initial start index (samples)
endSample
Section titled “endSample”number
initial end index (samples)
searchWindow?
Section titled “searchWindow?”number = 441
window half-width in samples (≈10 ms @ 44.1 kHz)
Returns
Section titled “Returns”[number, number]
[snappedStart, snappedEnd] sample indices