code.py
1 # SPDX-FileCopyrightText: 2018 Kattni Rembor for Adafruit Industries 2 # 3 # SPDX-License-Identifier: MIT 4 5 import array 6 import math 7 import time 8 9 import audiobusio 10 import board 11 12 13 def mean(values): 14 return sum(values) / len(values) 15 16 17 def normalized_rms(values): 18 minbuf = int(mean(values)) 19 sum_of_samples = sum( 20 float(sample - minbuf) * (sample - minbuf) 21 for sample in values 22 ) 23 24 return math.sqrt(sum_of_samples / len(values)) 25 26 27 mic = audiobusio.PDMIn( 28 board.MICROPHONE_CLOCK, 29 board.MICROPHONE_DATA, 30 sample_rate=16000, 31 bit_depth=16 32 ) 33 samples = array.array('H', [0] * 160) 34 mic.record(samples, len(samples)) 35 36 while True: 37 mic.record(samples, len(samples)) 38 magnitude = normalized_rms(samples) 39 print(((magnitude),)) 40 time.sleep(0.1)