def beatDetection(): stream = micStream.Stream(fps=30, nBuffers=4) #powerSmooth = lib.ExpFilter(val=1.0, alpha_rise=0.05, alpha_decay=0.05) powerSmooth = lib.ExpFilter(val=1.0, alpha_rise=0.05, alpha_decay=0.05) print(stream.freqs.shape) print(stream.freqs) print(stream.notes) for i in range(0, 10): print(stream.freqsToMelMatrix[0, i * 10:(i + 1) * 10]) powerMinFreqIndex = int(0 / stream.dFreq) powerMaxFreqIndex = int(250 / stream.dFreq) thresh = 1.3 recentBeat = 0 powerNorm = np.asarray([0., 0., 0.]) while True: success = stream.readAndCalc() if success: power = np.sum( stream.freqSpectrum[powerMinFreqIndex:powerMaxFreqIndex]) powerSmooth.update(power) powerNorm[2] = powerNorm[1] powerNorm[1] = powerNorm[0] powerNorm[0] = power / powerSmooth.value lib.clDisplay(powerNorm[0]) if powerNorm[2] < powerNorm[1] and powerNorm[1] > powerNorm[ 0] and powerNorm[1] > thresh and recentBeat <= 0: recentBeat = 4 print('BEAT ' * 21) recentBeat -= 1
def chase_beatDetection(brightnessFactor): # always here global nStrips, lStrip client = fastopc.FastOPC('localhost:7890') # setup stream = micStream.Stream(fps=30, nBuffers=4) powerSmooth1 = lib.ExpFilter(val=1.0, alpha_rise=0.05, alpha_decay=0.05) powerMinFreqIndex1 = int(0 / stream.dFreq) powerMaxFreqIndex1 = int(120 / stream.dFreq) beatObj1 = music.Beat(thresh=1.5, waitFrames=5) powerSmooth2 = lib.ExpFilter(val=1.0, alpha_rise=0.1, alpha_decay=0.1) powerMinFreqIndex2 = int(9000 / stream.dFreq) powerMaxFreqIndex2 = int(10000 / stream.dFreq) beatObj2 = music.Beat(thresh=2.5, waitFrames=2) dir = 1 pixels = lib.Pixels(nStrips, lStrip, 20) theoStrip = np.zeros([lStrip * nStrips, 3]) color = 2 for n in range(0, lStrip * nStrips, lStrip // 2 + 2): theoStrip[n, color] = 255 # loop while True: success = stream.readAndCalc() if success: power1 = np.sum( stream.freqSpectrum[powerMinFreqIndex1:powerMaxFreqIndex1]) powerSmooth1.update(power1) #powerTot = np.sum(stream.freqSpectrum) powerSmooth1.update(power1) powerNorm1 = power1 / powerSmooth1.value beatObj1.update(powerNorm1) power2 = np.sum( stream.freqSpectrum[powerMinFreqIndex2:powerMaxFreqIndex2]) powerSmooth2.update(power2) powerNorm2 = power2 / powerSmooth2.value beatObj2.update(powerNorm2) if beatObj1.getBeatStatus() == True: dir *= -1 theoStrip = np.roll(theoStrip, 1, axis=1) lib.clDisplay(powerNorm1) theoStrip = np.roll(theoStrip, dir, axis=0) pixels.update(theoStrip, 1.0, 0.05) client.putPixels(0, brightnessFactor * pixels.getArrayForDisplay()) n += dir time.sleep(0.003)
def beatDetection(brightnessFactor): # always here client = fastopc.FastOPC('localhost:7890') pixels = lib.Pixels(nStrips, lStrip, 0) theo = np.zeros([lStrip, 3]) stream = micStream.Stream(fps=30, nBuffers=4) powerSmooth1 = lib.ExpFilter(val=1.0, alpha_rise=0.05, alpha_decay=0.05) powerMinFreqIndex1 = int(0 / stream.dFreq) powerMaxFreqIndex1 = int(250 / stream.dFreq) beatObj1 = music.Beat() powerSmooth2 = lib.ExpFilter(val=1.0, alpha_rise=0.1, alpha_decay=0.1) powerMinFreqIndex2 = int(9000 / stream.dFreq) powerMaxFreqIndex2 = int(10000 / stream.dFreq) beatObj2 = music.Beat(thresh=2.5, waitFrames=2) while True: success = stream.readAndCalc() if success: power1 = np.sum( stream.freqSpectrum[powerMinFreqIndex1:powerMaxFreqIndex1]) powerSmooth1.update(power1) powerNorm1 = power1 / powerSmooth1.value beatObj1.update(powerNorm1) power2 = np.sum( stream.freqSpectrum[powerMinFreqIndex2:powerMaxFreqIndex2]) powerSmooth2.update(power2) powerNorm2 = power2 / powerSmooth2.value beatObj2.update(powerNorm2) theo[0, :] = 0 theo = np.roll(theo, -1, axis=0) if beatObj1.getBeatStatus() == True: theo[-1, 0] = 255 print('BEAT ' * 21) if beatObj2.getBeatStatus() == True: theo[-1, 2] = 255 #print('BEAT '*21) lib.clDisplay(powerNorm2) pixels.update(theo, 1.0, 0.3) client.putPixels(0, brightnessFactor * pixels.getArrayForDisplay())