Added Labo Piano Light FX
ADD
Labo Piano Light FX/code.py
+import board
+import neopixel
+import time
+from analogio import AnalogIn
+import array
+
+n_pixels = 10 # Number of pixels you are using
+dc_offset = 0 # DC offset in mic signal - if unusure, leave 0
+noise = 100 # Noise/hum/interference in mic signal
+lvl = 10 # Current "dampened" audio level
+maxbrt = 127 # Maximum brightness of the neopixels (0-255)
+wheelStart = 0 # Start of the RGB spectrum we'll use
+wheelEnd = 255 # End of the RGB spectrum we'll use
+
+mic_pin = AnalogIn(board.A7)
+
+# Set up NeoPixels and turn them all off.
+strip = neopixel.NeoPixel(board.NEOPIXEL, n_pixels, brightness=0.1, auto_write=False)
+strip.fill(0)
+strip.show()
+
+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):
+ return (0, 0, 0)
+ if (pos < 85):
+ return (int(pos * 3), int(255 - (pos*3)), 0)
+ elif (pos < 170):
+ pos -= 85
+ return (int(255 - pos*3), 0, int(pos*3))
+ else:
+ pos -= 170
+ return (0, int(pos*3), int(255 - pos*3))
+
+def remapRangeSafe(value, leftMin, leftMax, rightMin, rightMax):
+ # this remaps a value from original (left) range to new (right) range
+
+ # Force the input value to within left min & max
+ if value < leftMin: value = leftMin
+ if value > leftMax: value = leftMax
+
+ # Figure out how 'wide' each range is
+ leftSpan = leftMax - leftMin
+ rightSpan = rightMax - rightMin
+
+ # Convert the left range into a 0-1 range (int)
+ valueScaled = int(value - leftMin) / int(leftSpan)
+
+ # Convert the 0-1 range into a value in the right range.
+ return int(rightMin + (valueScaled * rightSpan))
+
+while True:
+ n = int ( ( mic_pin.value / 65536 ) * 1000 ) # 10-bit ADC format
+ n = abs(n - 512 - dc_offset) # Center on zero
+
+ if ( n >= noise ): # Remove noise/hum
+ n = n - noise
+
+ lvl = int ( ( (lvl * 7) + n ) / 8 ) # "Dampened" reading (else looks twitchy) - divide by 8 (2^3)
+
+ # Color pixels based on rainbow gradient
+ vlvl = remapRangeSafe(lvl, 0, 255, wheelStart, wheelEnd)
+ for i in range(0, len(strip)):
+ strip[i] = wheel(vlvl)
+ # Set strip brightness based on audio level
+ strip.brightness = float(remapRangeSafe(lvl,50,255,0,maxbrt))/255.0
+ strip.show()

Added Labo Piano Light FX