add Circuit Playground-O-Phonor code

This commit is contained in:
caternuson 2019-10-22 08:08:15 -07:00
parent 40fcafb795
commit 31e1f97b4d
6 changed files with 8351 additions and 0 deletions

View file

@ -0,0 +1,58 @@
import time
import board
import array
import audiobusio
#---| User Configuration |---------------------------
SAMPLERATE = 16000
SAMPLES = 1024
THRESHOLD = 100
MIN_DELTAS = 5
DELAY = 0.2
#----------------------------------------------------
# Create a buffer to record into
samples = array.array('H', [0] * SAMPLES)
# Setup the mic input
mic = audiobusio.PDMIn(board.MICROPHONE_CLOCK,
board.MICROPHONE_DATA,
sample_rate=SAMPLERATE,
bit_depth=16)
while True:
# Get raw mic data
mic.record(samples, SAMPLES)
# Compute DC offset (mean) and threshold level
mean = int(sum(samples) / len(samples) + 0.5)
threshold = mean + THRESHOLD
# Compute deltas between mean crossing points
# (this bit by Dan Halbert)
deltas = []
last_xing_point = None
crossed_threshold = False
for i in range(SAMPLES-1):
sample = samples[i]
if sample > threshold:
crossed_threshold = True
if crossed_threshold and sample < mean:
if last_xing_point:
deltas.append(i - last_xing_point)
last_xing_point = i
crossed_threshold = False
# Try again if not enough deltas
if len(deltas) < MIN_DELTAS:
continue
# Average the deltas
mean = sum(deltas) / len(deltas)
# Compute frequency
freq = SAMPLERATE / mean
print("crossings: {} mean: {} freq: {} ".format(len(deltas), mean, freq))
time.sleep(DELAY)

View file

@ -0,0 +1,84 @@
import time
import board
import array
import audiobusio
import simpleio
import neopixel
#---| User Configuration |---------------------------
SAMPLERATE = 16000
SAMPLES = 1024
THRESHOLD = 100
MIN_DELTAS = 5
DELAY = 0.2
FREQ_LOW = 520
FREQ_HIGH = 990
COLORS = (
(0xFF, 0x00, 0x00) , # pixel 0
(0xFF, 0x71, 0x00) , # pixel 1
(0xFF, 0xE2, 0x00) , # pixel 2
(0xAA, 0xFF, 0x00) , # pixel 3
(0x38, 0xFF, 0x00) , # pixel 4
(0x00, 0xFF, 0x38) , # pixel 5
(0x00, 0xFF, 0xA9) , # pixel 6
(0x00, 0xE2, 0xFF) , # pixel 7
(0x00, 0x71, 0xFF) , # pixel 8
(0x00, 0x00, 0xFF) , # pixel 9
)
#----------------------------------------------------
# Create a buffer to record into
samples = array.array('H', [0] * SAMPLES)
# Setup the mic input
mic = audiobusio.PDMIn(board.MICROPHONE_CLOCK,
board.MICROPHONE_DATA,
sample_rate=SAMPLERATE,
bit_depth=16)
# Setup NeoPixels
pixels = neopixel.NeoPixel(board.NEOPIXEL, 10, auto_write=False)
while True:
# Get raw mic data
mic.record(samples, SAMPLES)
# Compute DC offset (mean) and threshold level
mean = int(sum(samples) / len(samples) + 0.5)
threshold = mean + THRESHOLD
# Compute deltas between mean crossing points
# (this bit by Dan Halbert)
deltas = []
last_xing_point = None
crossed_threshold = False
for i in range(SAMPLES-1):
sample = samples[i]
if sample > threshold:
crossed_threshold = True
if crossed_threshold and sample < mean:
if last_xing_point:
deltas.append(i - last_xing_point)
last_xing_point = i
crossed_threshold = False
# Try again if not enough deltas
if len(deltas) < MIN_DELTAS:
continue
# Average the deltas
mean = sum(deltas) / len(deltas)
# Compute frequency
freq = SAMPLERATE / mean
print("crossings: {} mean: {} freq: {} ".format(len(deltas), mean, freq))
# Show on NeoPixels
pixels.fill(0)
pixel = round(simpleio.map_range(freq, FREQ_LOW, FREQ_HIGH, 0, 9))
pixels[pixel] = COLORS[pixel]
pixels.show()
time.sleep(DELAY)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,862 @@
STARTFONT 2.1
COMMENT
COMMENT Converted from OpenType font "monoMMM_5.ttf" by "otf2bdf 3.0".
COMMENT
FONT -FreeType-monoMMM_5-Medium-R-Normal--125-900-100-100-P-695-ISO10646-1
SIZE 90 100 100
FONTBOUNDINGBOX 69 97 0 0
STARTPROPERTIES 19
FOUNDRY "FreeType"
FAMILY_NAME "monoMMM_5"
WEIGHT_NAME "Medium"
SLANT "R"
SETWIDTH_NAME "Normal"
ADD_STYLE_NAME ""
PIXEL_SIZE 125
POINT_SIZE 900
RESOLUTION_X 100
RESOLUTION_Y 100
SPACING "P"
AVERAGE_WIDTH 695
CHARSET_REGISTRY "ISO10646"
CHARSET_ENCODING "1"
FONT_ASCENT 126
FONT_DESCENT 27
COPYRIGHT "Marcelo Magalh綟s Macedo - 2009"
_OTF_FONTFILE "monoMMM_5.ttf"
_OTF_PSNAME "monoMMM5-Regular"
ENDPROPERTIES
CHARS 8
STARTCHAR 0041
ENCODING 65
SWIDTH 664 0
DWIDTH 83 0
BBX 69 97 0 0
BITMAP
000007FFFFFF000000
00003FFFFFFFE00000
0000FFFFFFFFFC0000
0003FFFFFFFFFE0000
000FFFFFFFFFFF8000
001FFFFFFFFFFFC000
003FFFFFFFFFFFF000
007FFFFFFFFFFFF800
00FFFFFFFFFFFFFC00
01FFFFFFFFFFFFFE00
03FFFFFFFFFFFFFE00
07FFFFFFFFFFFFFF00
0FFFFFFFFFFFFFFF80
0FFFFFFFFFFFFFFFC0
1FFFFE000003FFFFC0
1FFFF8000000FFFFE0
3FFFE00000003FFFE0
3FFFC00000001FFFF0
7FFF800000000FFFF0
7FFF8000000007FFF0
7FFF0000000003FFF8
7FFE0000000003FFF8
FFFE0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
ENDCHAR
STARTCHAR 0042
ENCODING 66
SWIDTH 664 0
DWIDTH 83 0
BBX 69 97 0 0
BITMAP
FFFFFFFFFFFE000000
FFFFFFFFFFFFE00000
FFFFFFFFFFFFF80000
FFFFFFFFFFFFFE0000
FFFFFFFFFFFFFF8000
FFFFFFFFFFFFFFC000
FFFFFFFFFFFFFFF000
FFFFFFFFFFFFFFF800
FFFFFFFFFFFFFFFC00
FFFFFFFFFFFFFFFE00
FFFFFFFFFFFFFFFE00
FFFFFFFFFFFFFFFF00
FFFFFFFFFFFFFFFF80
FFFFFFFFFFFFFFFFC0
FFFC00000007FFFFC0
FFFC00000000FFFFE0
FFFC000000003FFFE0
FFFC000000001FFFF0
FFFC000000000FFFF0
FFFC0000000007FFF0
FFFC0000000007FFF8
FFFC0000000003FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000000FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000003FFF8
FFFC0000000003FFF0
FFFC0000000007FFF0
FFFC000000000FFFF0
FFFC000000001FFFE0
FFFC000000003FFFE0
FFFC00000000FFFFC0
FFFC00000007FFFF80
FFFFFFFFFFFFFFFF80
FFFFFFFFFFFFFFFF00
FFFFFFFFFFFFFFFE00
FFFFFFFFFFFFFFFC00
FFFFFFFFFFFFFFF800
FFFFFFFFFFFFFFF000
FFFFFFFFFFFFFFC000
FFFFFFFFFFFFFFC000
FFFFFFFFFFFFFFF000
FFFFFFFFFFFFFFF800
FFFFFFFFFFFFFFFC00
FFFFFFFFFFFFFFFE00
FFFFFFFFFFFFFFFF00
FFFFFFFFFFFFFFFF00
FFFC00000007FFFF80
FFFC00000000FFFFC0
FFFC000000007FFFE0
FFFC000000001FFFE0
FFFC000000000FFFE0
FFFC0000000007FFF0
FFFC0000000007FFF0
FFFC0000000003FFF8
FFFC0000000003FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000003FFF8
FFFC0000000003FFF8
FFFC0000000007FFF0
FFFC0000000007FFF0
FFFC000000000FFFF0
FFFC000000001FFFF0
FFFC000000003FFFE0
FFFC00000000FFFFE0
FFFC00000007FFFFC0
FFFFFFFFFFFFFFFFC0
FFFFFFFFFFFFFFFF80
FFFFFFFFFFFFFFFF00
FFFFFFFFFFFFFFFE00
FFFFFFFFFFFFFFFE00
FFFFFFFFFFFFFFFC00
FFFFFFFFFFFFFFF800
FFFFFFFFFFFFFFF000
FFFFFFFFFFFFFFC000
FFFFFFFFFFFFFF8000
FFFFFFFFFFFFFE0000
FFFFFFFFFFFFF80000
FFFFFFFFFFFFE00000
FFFFFFFFFFFE000000
ENDCHAR
STARTCHAR 0043
ENCODING 67
SWIDTH 664 0
DWIDTH 83 0
BBX 69 97 0 0
BITMAP
000003FFFFFE000000
00001FFFFFFFE00000
0000FFFFFFFFF80000
0003FFFFFFFFFE0000
0007FFFFFFFFFF8000
001FFFFFFFFFFFC000
003FFFFFFFFFFFE000
007FFFFFFFFFFFF000
00FFFFFFFFFFFFF800
01FFFFFFFFFFFFFC00
03FFFFFFFFFFFFFE00
07FFFFFFFFFFFFFF00
07FFFFFFFFFFFFFF80
0FFFFFFFFFFFFFFF80
1FFFFF000007FFFFC0
1FFFFC000000FFFFE0
3FFFF00000003FFFE0
3FFFE00000001FFFE0
7FFFC00000000FFFF0
7FFF8000000007FFF0
7FFF0000000007FFF0
7FFE0000000003FFF8
FFFE0000000003FFF8
FFFE0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000000FFF8
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC0000000000FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFE0000000001FFF8
FFFE0000000003FFF8
7FFE0000000003FFF8
7FFF0000000007FFF0
7FFF8000000007FFF0
7FFFC00000000FFFF0
3FFFE00000001FFFE0
3FFFF00000003FFFE0
1FFFF8000000FFFFE0
1FFFFF000007FFFFC0
0FFFFFFFFFFFFFFF80
07FFFFFFFFFFFFFF80
07FFFFFFFFFFFFFF00
03FFFFFFFFFFFFFE00
01FFFFFFFFFFFFFC00
00FFFFFFFFFFFFF800
007FFFFFFFFFFFF000
003FFFFFFFFFFFE000
001FFFFFFFFFFFC000
0007FFFFFFFFFF8000
0003FFFFFFFFFE0000
0000FFFFFFFFF80000
00003FFFFFFFE00000
000003FFFFFE000000
ENDCHAR
STARTCHAR 0044
ENCODING 68
SWIDTH 664 0
DWIDTH 83 0
BBX 69 97 0 0
BITMAP
FFFFFFFFFFFE000000
FFFFFFFFFFFFE00000
FFFFFFFFFFFFF80000
FFFFFFFFFFFFFE0000
FFFFFFFFFFFFFF8000
FFFFFFFFFFFFFFC000
FFFFFFFFFFFFFFE000
FFFFFFFFFFFFFFF800
FFFFFFFFFFFFFFFC00
FFFFFFFFFFFFFFFC00
FFFFFFFFFFFFFFFE00
FFFFFFFFFFFFFFFF00
FFFFFFFFFFFFFFFF80
FFFFFFFFFFFFFFFF80
FFFC00000007FFFFC0
FFFC00000000FFFFE0
FFFC000000003FFFE0
FFFC000000001FFFE0
FFFC000000000FFFF0
FFFC0000000007FFF0
FFFC0000000007FFF0
FFFC0000000003FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000003FFF8
FFFC0000000007FFF8
FFFC0000000007FFF0
FFFC000000000FFFF0
FFFC000000001FFFF0
FFFC000000003FFFE0
FFFC00000000FFFFE0
FFFC00000007FFFFC0
FFFFFFFFFFFFFFFFC0
FFFFFFFFFFFFFFFF80
FFFFFFFFFFFFFFFF00
FFFFFFFFFFFFFFFE00
FFFFFFFFFFFFFFFC00
FFFFFFFFFFFFFFFC00
FFFFFFFFFFFFFFF800
FFFFFFFFFFFFFFE000
FFFFFFFFFFFFFFC000
FFFFFFFFFFFFFF8000
FFFFFFFFFFFFFE0000
FFFFFFFFFFFFF80000
FFFFFFFFFFFFE00000
FFFFFFFFFFFE000000
ENDCHAR
STARTCHAR 0045
ENCODING 69
SWIDTH 664 0
DWIDTH 83 0
BBX 69 97 0 0
BITMAP
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
ENDCHAR
STARTCHAR 0046
ENCODING 70
SWIDTH 664 0
DWIDTH 83 0
BBX 69 97 0 0
BITMAP
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFFFFFFFFFFFFFFF8
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFFFFFFFFFFFF0000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
ENDCHAR
STARTCHAR 0047
ENCODING 71
SWIDTH 664 0
DWIDTH 83 0
BBX 69 97 0 0
BITMAP
000003FFFFFE000000
00001FFFFFFFE00000
0000FFFFFFFFF80000
0003FFFFFFFFFE0000
0007FFFFFFFFFF8000
001FFFFFFFFFFFC000
003FFFFFFFFFFFE000
007FFFFFFFFFFFF000
00FFFFFFFFFFFFF800
01FFFFFFFFFFFFFC00
03FFFFFFFFFFFFFE00
07FFFFFFFFFFFFFF00
07FFFFFFFFFFFFFF80
0FFFFFFFFFFFFFFF80
1FFFFF000007FFFFC0
1FFFFC000000FFFFE0
3FFFF00000003FFFE0
3FFFE00000001FFFE0
7FFFC00000000FFFF0
7FFF8000000007FFF0
7FFF0000000007FFF0
7FFE0000000003FFF8
FFFE0000000003FFF8
FFFE0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000000FFF8
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC00000000000000
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000003FFFFFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFC0000000001FFF8
FFFE0000000001FFF8
FFFE0000000003FFF8
7FFE0000000003FFF8
7FFF0000000007FFF0
7FFF8000000007FFF0
7FFFC00000000FFFF0
3FFFE00000001FFFE0
3FFFF00000003FFFE0
1FFFF8000000FFFFE0
1FFFFF000007FFFFC0
0FFFFFFFFFFFFFFF80
07FFFFFFFFFFFFFF80
07FFFFFFFFFFFFFF00
03FFFFFFFFFFFFFE00
01FFFFFFFFFFFFFC00
00FFFFFFFFFFFFF800
007FFFFFFFFFFFF000
003FFFFFFFFFFFE000
001FFFFFFFFFFFC000
0007FFFFFFFFFF8000
0003FFFFFFFFFE0000
0000FFFFFFFFF80000
00003FFFFFFFE00000
000003FFFFFE000000
ENDCHAR
STARTCHAR 004D
ENCODING 77
SWIDTH 664 0
DWIDTH 83 0
BBX 69 97 0 0
BITMAP
FFFC0000000001FFF8
FFFE0000000001FFF8
FFFF0000000003FFF8
FFFF0000000007FFF8
FFFF8000000007FFF8
FFFF800000000FFFF8
FFFFC00000000FFFF8
FFFFE00000001FFFF8
FFFFE00000003FFFF8
FFFFF00000003FFFF8
FFFFF00000007FFFF8
FFFFF80000007FFFF8
FFFFFC000000FFFFF8
FFFFFC000001FFFFF8
FFFFFE000001FFFFF8
FFFFFE000003FFFFF8
FFFFFF000003FFFFF8
FFFFFF800007FFFFF8
FFFFFF80000FFFFFF8
FFFFFFC0000FFFFFF8
FFFFFFC0001FFFFFF8
FFFFFFE0001FFFFFF8
FFFFFFF0003FFFFFF8
FFFFFFF0007FFFFFF8
FFFFFFF8007FFFFFF8
FFFFFFF800FFFFFFF8
FFFFFFFC00FFFFFFF8
FFFFFFFE01FFFEFFF8
FFFDFFFE03FFFEFFF8
FFFCFFFF03FFFCFFF8
FFFCFFFF07FFF8FFF8
FFFC7FFF87FFF8FFF8
FFFC7FFFCFFFF0FFF8
FFFC3FFFDFFFF0FFF8
FFFC1FFFFFFFE0FFF8
FFFC1FFFFFFFC0FFF8
FFFC0FFFFFFFC0FFF8
FFFC0FFFFFFF80FFF8
FFFC07FFFFFF80FFF8
FFFC03FFFFFF00FFF8
FFFC03FFFFFE00FFF8
FFFC01FFFFFE00FFF8
FFFC01FFFFFC00FFF8
FFFC00FFFFFC00FFF8
FFFC007FFFF800FFF8
FFFC007FFFF000FFF8
FFFC003FFFF000FFF8
FFFC003FFFE000FFF8
FFFC001FFFE000FFF8
FFFC000FFFC000FFF8
FFFC000FFF8000FFF8
FFFC0007FF8000FFF8
FFFC0007FF0000FFF8
FFFC0003FF0000FFF8
FFFC0001FE0000FFF8
FFFC0001FC0000FFF8
FFFC0000FC0000FFF8
FFFC0000F80000FFF8
FFFC0000700000FFF8
FFFC0000300000FFF8
FFFC0000200000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
FFFC0000000000FFF8
ENDCHAR
ENDFONT

View file

@ -0,0 +1,75 @@
import time
import board
import array
import audiobusio
#---| User Configuration |---------------------------
SAMPLERATE = 16000
SAMPLES = 1024
THRESHOLD = 100
MIN_DELTAS = 5
DELAY = 0.2
# octave = 1 2 3 4 5 6 7 8
NOTES = { "C" : (33, 65, 131, 262, 523, 1047, 2093, 4186),
"D" : (37, 73, 147, 294, 587, 1175, 2349, 4699),
"E" : (41, 82, 165, 330, 659, 1319, 2637, 5274),
"F" : (44, 87, 175, 349, 698, 1397, 2794, 5588),
"G" : (49, 98, 196, 392, 785, 1568, 3136, 6272),
"A" : (55, 110, 220, 440, 880, 1760, 3520, 7040),
"B" : (62, 123, 247, 494, 988, 1976, 3951, 7902)}
#----------------------------------------------------
# Create a buffer to record into
samples = array.array('H', [0] * SAMPLES)
# Setup the mic input
mic = audiobusio.PDMIn(board.MICROPHONE_CLOCK,
board.MICROPHONE_DATA,
sample_rate=SAMPLERATE,
bit_depth=16)
while True:
# Get raw mic data
mic.record(samples, SAMPLES)
# Compute DC offset (mean) and threshold level
mean = int(sum(samples) / len(samples) + 0.5)
threshold = mean + THRESHOLD
# Compute deltas between mean crossing points
# (this bit by Dan Halbert)
deltas = []
last_xing_point = None
crossed_threshold = False
for i in range(SAMPLES-1):
sample = samples[i]
if sample > threshold:
crossed_threshold = True
if crossed_threshold and sample < mean:
if last_xing_point:
deltas.append(i - last_xing_point)
last_xing_point = i
crossed_threshold = False
# Try again if not enough deltas
if len(deltas) < MIN_DELTAS:
continue
# Average the deltas
mean = sum(deltas) / len(deltas)
# Compute frequency
freq = SAMPLERATE / mean
print("crossings: {} mean: {} freq: {} ".format(len(deltas), mean, freq))
# Find corresponding note
for note in NOTES:
for octave, note_freq in enumerate(NOTES[note]):
if note_freq * 0.97 <= freq <= note_freq * 1.03:
print("-"*10)
print("NOTE = {}{}".format(note, octave + 1))
print("-"*10)
time.sleep(DELAY)

View file

@ -0,0 +1,116 @@
import time
import board
import busio
import array
import audiobusio
import displayio
from adafruit_st7789 import ST7789
from adafruit_bitmap_font import bitmap_font
from adafruit_display_text import label
#---| User Configuration |---------------------------
SAMPLERATE = 16000
SAMPLES = 1024
THRESHOLD = 100
MIN_DELTAS = 5
DELAY = 0.2
NOTES = { "C" : (33, 65, 131, 262, 523, 1047, 2093, 4186),
"D" : (37, 73, 147, 294, 587, 1175, 2349, 4699),
"E" : (41, 82, 165, 330, 659, 1319, 2637, 5274),
"F" : (44, 87, 175, 349, 698, 1397, 2794, 5588),
"G" : (49, 98, 196, 392, 785, 1568, 3136, 6272),
"A" : (55, 110, 220, 440, 880, 1760, 3520, 7040),
"B" : (62, 123, 247, 494, 988, 1976, 3951, 7902)}
#----------------------------------------------------
# Create a buffer to record into
samples = array.array('H', [0] * SAMPLES)
# Setup the mic input
mic = audiobusio.PDMIn(board.MICROPHONE_CLOCK,
board.MICROPHONE_DATA,
sample_rate=SAMPLERATE,
bit_depth=16)
# Setup TFT Gizmo
displayio.release_displays()
spi = busio.SPI(board.SCL, MOSI=board.SDA)
tft_cs = board.RX
tft_dc = board.TX
tft_backlight = board.A3
display_bus = displayio.FourWire(spi, command=tft_dc, chip_select=tft_cs)
display = ST7789(display_bus, width=240, height=240, rowstart=80,
backlight_pin=tft_backlight, rotation=180)
# Setup the various text labels
note_font = bitmap_font.load_font("/monoMMM_5_90.bdf")
note_text = label.Label(note_font, text="A", color=0xFFFFFF)
note_text.x = 90
note_text.y = 100
oct_font = bitmap_font.load_font("/monoMMM_5_24.bdf")
oct_text = label.Label(oct_font, text=" ", color=0x00FFFF)
oct_text.x = 180
oct_text.y = 150
freq_font = oct_font
freq_text = label.Label(freq_font, text="f = 1234.5", color=0xFFFF00)
freq_text.x = 20
freq_text.y = 220
# Add everything to the display group
splash = displayio.Group()
splash.append(note_text)
splash.append(oct_text)
splash.append(freq_text)
display.show(splash)
while True:
# Get raw mic data
mic.record(samples, SAMPLES)
# Compute DC offset (mean) and threshold level
mean = int(sum(samples) / len(samples) + 0.5)
threshold = mean + THRESHOLD
# Compute deltas between mean crossing points
# (this bit by Dan Halbert)
deltas = []
last_xing_point = None
crossed_threshold = False
for i in range(SAMPLES-1):
sample = samples[i]
if sample > threshold:
crossed_threshold = True
if crossed_threshold and sample < mean:
if last_xing_point:
deltas.append(i - last_xing_point)
last_xing_point = i
crossed_threshold = False
# Try again if not enough deltas
if len(deltas) < MIN_DELTAS:
continue
# Average the deltas
mean = sum(deltas) / len(deltas)
# Compute frequency
freq = SAMPLERATE / mean
print("crossings: {} mean: {} freq: {} ".format(len(deltas), mean, freq))
freq_text.text = "f = {:6.1f}".format(freq)
# Find corresponding note
for note in NOTES:
for octave, note_freq in enumerate(NOTES[note]):
if note_freq * 0.97 <= freq <= note_freq * 1.03:
print("Note: {}{}".format(note, octave + 1))
note_text.text = note
oct_text.text = "{}".format(octave + 1)
time.sleep(DELAY)