meh
This commit is contained in:
parent
0ac35a4bc9
commit
aaf49b6292
@ -1,16 +1,73 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
import alsaaudio
|
||||
import audioop
|
||||
import board
|
||||
import math
|
||||
import neopixel
|
||||
import time
|
||||
|
||||
def wheel(pos):
|
||||
# Input a value 0 to 255 to get a color value.
|
||||
# The colours are a transition r - g - b - back to r.
|
||||
if pos < 0 or pos > 255:
|
||||
r = g = b = 0
|
||||
elif pos < 85:
|
||||
r = int(pos * 3)
|
||||
g = int(255 - pos * 3)
|
||||
b = 0
|
||||
elif pos < 170:
|
||||
pos -= 85
|
||||
r = int(255 - pos * 3)
|
||||
g = 0
|
||||
b = int(pos * 3)
|
||||
else:
|
||||
pos -= 170
|
||||
r = 0
|
||||
g = int(pos * 3)
|
||||
b = int(255 - pos * 3)
|
||||
return (r, g, b)
|
||||
|
||||
def main():
|
||||
pixels = neopixel.NeoPixel(board.D21, 30, brightness=0.2, auto_write=False)
|
||||
def exec_neopixel(pixels, max):
|
||||
for i in range(0, max):
|
||||
pixels[i] = wheel(i * 255 / 300)
|
||||
# pixels.show()
|
||||
for i in range(max, 300):
|
||||
pixels[i] = (0, 0, 0)
|
||||
pixels.show()
|
||||
|
||||
def exec_audio():
|
||||
lo = 1E6
|
||||
hi = 5E8
|
||||
|
||||
log_lo = math.log(lo)
|
||||
log_hi = math.log(hi)
|
||||
|
||||
print(alsaaudio.pcms(alsaaudio.PCM_CAPTURE))
|
||||
pixels = neopixel.NeoPixel(board.D12, 300, brightness=0.1, auto_write=False)
|
||||
pixels[0] = (100, 0, 0)
|
||||
audioIn = alsaaudio.PCM(type=alsaaudio.PCM_CAPTURE, mode=alsaaudio.PCM_NORMAL, rate=48000, channels=1, format=alsaaudio.PCM_FORMAT_S32_LE, periodsize=640, device='plughw:CARD=sndrpii2scard,DEV=0')
|
||||
while True:
|
||||
length, data = audioIn.read()
|
||||
if length > 0:
|
||||
max_amp = max(audioop.max(data, 4), 1)
|
||||
log_max = math.log(float(max_amp))
|
||||
vu = (log_max - log_lo) / (log_hi - log_lo)
|
||||
led_nb = min(max(int(vu*300),0),299)
|
||||
print("max =", max_amp, ", log =", log_max, "vu = ", vu, "led =", led_nb)
|
||||
exec_neopixel(pixels, led_nb)
|
||||
|
||||
def test_neopixel():
|
||||
pixels = neopixel.NeoPixel(board.D12, 300, brightness=0.1, auto_write=False)
|
||||
for i in range(0, 300):
|
||||
print("Lighting", i)
|
||||
pixels[i] = (100, 0, 0)
|
||||
pixels.show()
|
||||
time.sleep(2)
|
||||
print("ok\n")
|
||||
input()
|
||||
|
||||
def main():
|
||||
# test_neopixel()
|
||||
exec_audio()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Loading…
Reference in New Issue
Block a user