Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# http://essentia.upf.edu/documentation/reference/std_SpectralWhitening.html
spectralWhitening = estd.SpectralWhitening(maxFrequency= maxFrequency,
sampleRate=self.fs)
# http://essentia.upf.edu/documentation/reference/std_HPCP.html
hpcp = estd.HPCP(sampleRate=self.fs,
maxFrequency=maxFrequency,
minFrequency=minFrequency,
referenceFrequency=referenceFrequency,
nonLinear=nonLinear,
harmonics=harmonicsPerPeak,
size=numBins)
pool = Pool()
#compute hpcp for each frame and add the results to the pool
for frame in frameGenerator:
spectrum_mag = spectrum(window(frame))
frequencies, magnitudes = spectralPeaks(spectrum_mag)
if whitening:
w_magnitudes = spectralWhitening(spectrum_mag,
frequencies,
magnitudes)
hpcp_vector = hpcp(frequencies, w_magnitudes)
else:
hpcp_vector = hpcp(frequencies, magnitudes)
pool.add('tonal.hpcp',hpcp_vector)
if display:
display_chroma(np.swapaxes(pool['tonal.hpcp']), 0, 1)
# If beat annotations exist, compute also annotated beatsyn features
if jam.beats != []:
logging.info("Reading beat annotations from JAMS")
annot = jam.beats[0]
annot_beats = []
for data in annot.data:
annot_beats.append(data.time.value)
annot_beats = essentia.array(np.unique(annot_beats).tolist())
annot_mfcc, annot_hpcp, annot_tonnetz = compute_features(
audio, annot_beats)
# Save output as json file
logging.info("Saving the JSON file in %s" % out_file)
yaml = YamlOutput(filename=out_file, format='json')
pool = essentia.Pool()
pool.add("beats.times", features["beats"])
pool.add("beats.confidence", features["beats_conf"])
pool.set("analysis.sample_rate", msaf.Anal.sample_rate)
pool.set("analysis.frame_rate", msaf.Anal.frame_size)
pool.set("analysis.hop_size", msaf.Anal.hop_size)
pool.set("analysis.window_type", msaf.Anal.window_type)
pool.set("analysis.mfcc_coeff", msaf.Anal.mfcc_coeff)
pool.set("timestamp",
datetime.datetime.today().strftime("%Y/%m/%d %H:%M:%S"))
save_features("framesync", pool, features["mfcc"], features["hpcp"],
features["tonnetz"])
save_features("est_beatsync", pool, features["bs_mfcc"],
features["bs_hpcp"], features["bs_tonnetz"])
if os.path.isfile(file_struct.ref_file) and jam.beats != []:
save_features("ann_beatsync", pool, annot_mfcc, annot_hpcp,
annot_tonnetz)
highFrequencyBound = sampleRate/2
windowing = Windowing(type=window, normalized=False, zeroPadding=zeroPadding)
spectrum = Spectrum()
melbands = MelBands(numberBands=numberBands,
sampleRate=sampleRate,
lowFrequencyBound=lowFrequencyBound,
highFrequencyBound=highFrequencyBound,
inputSize=(frameSize+zeroPadding)//2+1,
weighting=weighting,
normalize=normalize,
warpingFormula=warpingFormula,
type='power')
amp2db = UnaryOperator(type='lin2db', scale=2)
pool = essentia.Pool()
for frame in FrameGenerator(audio,
frameSize=frameSize, hopSize=hopSize,
startFromZero=not center):
pool.add('mel', amp2db(melbands(spectrum(windowing(frame)))))
return pool['mel'].T