]> vault307.fbx.one Git - Sensory_Wall.git/blob - circuitPython/PDMmic.py
more sensory wall projects
[Sensory_Wall.git] / circuitPython / PDMmic.py
1 import audiobusio
2 import math
3 import board
4 import array
5 import simpleio
6 import time
7
8 def mean(values):
9 return sum(values)/len(values)
10
11 def normalized_rms(values):
12 minbuf=int(mean(values))
13 samples_sum=sum(float(sample-minbuf)*(sample-minbuf)
14 for sample in values)
15
16 return math.sqrt(samples_sum/len(values))
17
18 #mic setup
19 mic=audiobusio.PDMIn(board.D8,board.D9,sample_rate=16000, bit_depth=16)
20 samples=array.array('H',[0]*160)
21
22 #last_input=0
23
24 while True:
25 mic.record(samples,len(samples))
26 magnitude=normalized_rms(samples)
27 #print((magnitude,))
28 mapped_value=simpleio.map_range(magnitude, 125, 500, 0, 16)
29 input_val=int(mapped_value)
30 print(input_val)