Esempio n. 1
0
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
Esempio n. 2
0
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)
Esempio n. 3
0
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())