DJLoopAnalyzer
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:24
Complete DJ Loop Analyzer Class Provides intelligent loop analysis, similarity matching, and organization
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new DJLoopAnalyzer():
DJLoopAnalyzer
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:25
Returns
Section titled “Returns”DJLoopAnalyzer
Properties
Section titled “Properties”analysisCache
Section titled “analysisCache”analysisCache:
Map<any,any>
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:29
clusters
Section titled “clusters”clusters:
any
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:28
loops:
Map<any,any>
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:26
similarityMatrix
Section titled “similarityMatrix”similarityMatrix:
any[]
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:27
Methods
Section titled “Methods”analyzeClusterCharacteristics()
Section titled “analyzeClusterCharacteristics()”analyzeClusterCharacteristics(
members):any
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:418
Analyze cluster characteristics — every value is measured from the member loops (no fabricated defaults).
Parameters
Section titled “Parameters”members
Section titled “members”any[]
Cluster member loop objects
Returns
Section titled “Returns”any
Cluster characteristics
analyzeLoop()
Section titled “analyzeLoop()”analyzeLoop(
audioBuffer,metadata?):Promise<any>
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:38
Analyze a loop and extract all features
Parameters
Section titled “Parameters”audioBuffer
Section titled “audioBuffer”AudioBuffer
Audio buffer to analyze
metadata?
Section titled “metadata?”any = {}
Additional metadata
Returns
Section titled “Returns”Promise<any>
Complete loop analysis
analyzeStructure()
Section titled “analyzeStructure()”analyzeStructure(
onsetEnv,beatTimes):object
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:763
Parameters
Section titled “Parameters”onsetEnv
Section titled “onsetEnv”any
beatTimes
Section titled “beatTimes”any
Returns
Section titled “Returns”object
beatCount
Section titled “beatCount”beatCount:
any=beatTimes.length
hasBreakdown
Section titled “hasBreakdown”hasBreakdown:
any
hasDrop
Section titled “hasDrop”hasDrop:
any
structuralComplexity
Section titled “structuralComplexity”structuralComplexity:
number
calculateChromaSimilarity()
Section titled “calculateChromaSimilarity()”calculateChromaSimilarity(
loop1,loop2):number
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:229
Calculate chroma similarity using DTW
Parameters
Section titled “Parameters”any
First loop
any
Second loop
Returns
Section titled “Returns”number
Similarity score (0-1)
calculateComplexity()
Section titled “calculateComplexity()”calculateComplexity(
features):number
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:617
Parameters
Section titled “Parameters”features
Section titled “features”any
Returns
Section titled “Returns”number
calculateEnergySimilarity()
Section titled “calculateEnergySimilarity()”calculateEnergySimilarity(
loop1,loop2):number
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:306
Calculate energy similarity
Parameters
Section titled “Parameters”any
First loop
any
Second loop
Returns
Section titled “Returns”number
Similarity score (0-1)
calculateKeyCompatibility()
Section titled “calculateKeyCompatibility()”calculateKeyCompatibility(
key1,key2):number
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:320
Calculate key compatibility using Camelot Wheel
Parameters
Section titled “Parameters”any
First key
any
Second key
Returns
Section titled “Returns”number
Compatibility score (0-1)
calculateOverallEnergy()
Section titled “calculateOverallEnergy()”calculateOverallEnergy(
features):number
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:605
Parameters
Section titled “Parameters”features
Section titled “features”any
Returns
Section titled “Returns”number
calculateTempoSimilarity()
Section titled “calculateTempoSimilarity()”calculateTempoSimilarity(
loop1,loop2,tolerance):number
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:276
Calculate tempo similarity
Parameters
Section titled “Parameters”any
First loop
any
Second loop
tolerance
Section titled “tolerance”number
BPM tolerance
Returns
Section titled “Returns”number
Similarity score (0-1)
clusterLoops()
Section titled “clusterLoops()”clusterLoops(
nClusters?):any[]
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:379
Cluster loops into similar groups
Parameters
Section titled “Parameters”nClusters?
Section titled “nClusters?”number = 5
Number of clusters
Returns
Section titled “Returns”any[]
Cluster results
computeChromaMean()
Section titled “computeChromaMean()”computeChromaMean(
chroma):Float32Array<ArrayBuffer>
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:590
Parameters
Section titled “Parameters”chroma
Section titled “chroma”any
Returns
Section titled “Returns”Float32Array<ArrayBuffer>
computeStructuralComplexity()
Section titled “computeStructuralComplexity()”computeStructuralComplexity(
onsetEnv):number
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:799
Structural complexity measured from the onset envelope. The envelope is
split into up to 16 equal segments; the coefficient of variation of the
per-segment mean energy is soft-squashed to [0, 1) via cv / (1 + cv).
A steady loop has near-uniform segment energy (low value); breakdowns,
drops and build-ups raise the segment-to-segment variance (high value).
Measured from the signal — never a fabricated constant, never NaN.
Parameters
Section titled “Parameters”onsetEnv
Section titled “onsetEnv”ArrayLike<number>
Onset strength envelope
Returns
Section titled “Returns”number
Complexity in [0, 1)
estimateKey()
Section titled “estimateKey()”estimateKey(
chroma):object
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:635
Krumhansl-Schmuckler key estimation: Pearson correlation between the mean chroma vector and each rotated key profile. Confidence is the best correlation clamped to [0, 1] — a normalized figure, not the raw (scale-dependent) profile dot product.
Parameters
Section titled “Parameters”chroma
Section titled “chroma”any
Returns
Section titled “Returns”object
confidence
Section titled “confidence”confidence:
number
key:
string=bestKey
mode:
string
tonic:
string
extractAllFeatures()
Section titled “extractAllFeatures()”extractAllFeatures(
audioData,sampleRate):Promise<any>
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:90
Extract comprehensive audio features
Parameters
Section titled “Parameters”audioData
Section titled “audioData”Float32Array<ArrayBufferLike>
Audio time series
sampleRate
Section titled “sampleRate”number
Sample rate
Returns
Section titled “Returns”Promise<any>
Extracted features
extractEnergyFeatures()
Section titled “extractEnergyFeatures()”extractEnergyFeatures(
audioData,onsetEnv):object
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:741
Parameters
Section titled “Parameters”audioData
Section titled “audioData”any
onsetEnv
Section titled “onsetEnv”any
Returns
Section titled “Returns”object
crest_factor
Section titled “crest_factor”crest_factor:
number=crestFactor
dynamic_range
Section titled “dynamic_range”dynamic_range:
number=crestFactor
onset_density
Section titled “onset_density”onset_density:
number
peak:
number
rms:
number
extractTimbralFeatures()
Section titled “extractTimbralFeatures()”extractTimbralFeatures(
audioData,sampleRate):object
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:724
Timbral descriptors, measured from the signal (documented proxies):
- brightness: mean spectral centroid normalized by Nyquist (0..1)
- roughness: mean spectral flatness (0 tonal .. 1 noisy)
- warmth: 1 − mean spectral rolloff (85%) / Nyquist (0..1)
Parameters
Section titled “Parameters”audioData
Section titled “audioData”Float32Array<ArrayBufferLike>
sampleRate
Section titled “sampleRate”number
Returns
Section titled “Returns”object
brightness
Section titled “brightness”brightness:
number
roughness
Section titled “roughness”roughness:
number
warmth
Section titled “warmth”warmth:
number
fallbackChromaSimilarity()
Section titled “fallbackChromaSimilarity()”fallbackChromaSimilarity(
loop1,loop2):number
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:251
Fallback chroma similarity using mean vectors
Parameters
Section titled “Parameters”any
First loop
any
Second loop
Returns
Section titled “Returns”number
Similarity score
fallbackClustering()
Section titled “fallbackClustering()”fallbackClustering(
nClusters):any[]
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:462
Fallback clustering by tempo
Parameters
Section titled “Parameters”nClusters
Section titled “nClusters”number
Number of clusters
Returns
Section titled “Returns”any[]
Tempo-based clusters
findSimilarLoops()
Section titled “findSimilarLoops()”findSimilarLoops(
loopId,options?):any[]
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:155
Find similar loops using DTW and multiple feature comparison
Parameters
Section titled “Parameters”loopId
Section titled “loopId”string
Target loop ID
options?
Section titled “options?”any = {}
Search options
Returns
Section titled “Returns”any[]
Similar loops ranked by similarity
generateCacheKey()
Section titled “generateCacheKey()”generateCacheKey(
audioData):string
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:581
Helper methods
Parameters
Section titled “Parameters”audioData
Section titled “audioData”any
Returns
Section titled “Returns”string
generateTags()
Section titled “generateTags()”generateTags(
features):any[]
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:545
Generate automatic tags based on features
Parameters
Section titled “Parameters”features
Section titled “features”any
Extracted features
Returns
Section titled “Returns”any[]
Generated tags
getHarmonicMixingOptions()
Section titled “getHarmonicMixingOptions()”getHarmonicMixingOptions(
currentLoopId):any[]
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:499
Get harmonic mixing suggestions
Parameters
Section titled “Parameters”currentLoopId
Section titled “currentLoopId”string
Currently playing loop
Returns
Section titled “Returns”any[]
Harmonically compatible loops
updateSimilarityMatrix()
Section titled “updateSimilarityMatrix()”updateSimilarityMatrix():
void
Defined in: packages/pleco-xa/src/scripts/dj-loop-analyzer.js:826
Returns
Section titled “Returns”void