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)