Adafruit_Learning_System_Gu.../Grand_Central_Soundboard/code.py
2022-02-23 14:05:45 -05:00

57 lines
1.5 KiB
Python

# SPDX-FileCopyrightText: 2019 Anne Barela for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import time
import os
import digitalio
import audioio
import audiocore
import board
import adafruit_matrixkeypad
# Membrane 3x4 matrix keypad - https://www.adafruit.com/product/419
cols = [digitalio.DigitalInOut(x) for x in (board.D3, board.D2, board.D1)]
rows = [digitalio.DigitalInOut(x) for x in (board.D7, board.D6, board.D5, board.D4)]
keys = ((1, 2, 3),
(4, 5, 6),
(7, 8, 9),
('*', 0, '#'))
keypad = adafruit_matrixkeypad.Matrix_Keypad(rows, cols, keys)
wavefiles = [file for file in os.listdir("/sounds/")
if (file.endswith(".wav") and not file.startswith("._"))]
if len(wavefiles) < 1:
print("No wav files found in sounds directory")
else:
print("Audio files found: ", wavefiles)
# audio output
gc_audio = audioio.AudioOut(board.A0)
audio_file = None
def play_file(filename):
global audio_file # pylint: disable=global-statement
if gc_audio.playing:
gc_audio.stop()
if audio_file:
audio_file.close()
audio_file = open(filename, "rb")
wav = audiocore.WaveFile(audio_file)
gc_audio.play(wav)
while True:
keys = keypad.pressed_keys
if keys:
print("Pressed: ", keys)
button = keys[0]
if button > 0 and button < 9:
soundfile = "/sounds/0"+str(keys[0])+".wav"
play_file(soundfile)
if button == 0:
gc_audio.stop()
if audio_file:
audio_file.close()
time.sleep(0.1)