Merge db6b00dff9 into 62453248a6
This commit is contained in:
commit
60ba10e620
3 changed files with 83 additions and 11 deletions
|
|
@ -9,6 +9,7 @@
|
|||
import math
|
||||
import time
|
||||
import array
|
||||
import json
|
||||
import gc
|
||||
import os
|
||||
import digitalio
|
||||
|
|
@ -22,6 +23,7 @@ import audiobusio
|
|||
import audiomixer
|
||||
import synthio
|
||||
import board
|
||||
import adafruit_pathlib as pathlib
|
||||
import adafruit_tlv320
|
||||
from adafruit_midi.note_on import NoteOn
|
||||
from adafruit_midi.note_off import NoteOff
|
||||
|
|
@ -63,6 +65,12 @@ class SoundManager:
|
|||
# Setup PWM audio output on D10
|
||||
self.audio = audiopwmio.PWMAudioOut(board.D10)
|
||||
else: # i2s
|
||||
# optional configuration file for speaker/headphone setting
|
||||
launcher_config = {}
|
||||
if pathlib.Path("/launcher.conf.json").exists():
|
||||
with open("/launcher.conf.json", "r") as f:
|
||||
launcher_config = json.load(f)
|
||||
|
||||
try:
|
||||
# Import libraries needed for I2S
|
||||
#check for Metro RP2350 vs. Fruit Jam
|
||||
|
|
@ -98,9 +106,23 @@ class SoundManager:
|
|||
|
||||
# Initialize TLV320
|
||||
self.tlv = adafruit_tlv320.TLV320DAC3100(i2c)
|
||||
|
||||
# set sample rate & bit depth
|
||||
self.tlv.configure_clocks(sample_rate=11025, bit_depth=16)
|
||||
self.tlv.headphone_output = True
|
||||
self.tlv.headphone_volume = -15 # dB
|
||||
|
||||
if "tlv320" in launcher_config:
|
||||
if launcher_config["tlv320"].get("output") == "speaker":
|
||||
# use speaker
|
||||
self.tlv.speaker_output = True
|
||||
self.tlv.dac_volume = launcher_config["tlv320"].get("volume",5) # dB
|
||||
else:
|
||||
# use headphones
|
||||
self.tlv.headphone_output = True
|
||||
self.tlv.dac_volume = launcher_config["tlv320"].get("volume",0) # dB
|
||||
else:
|
||||
# default to headphones
|
||||
self.tlv.headphone_output = True
|
||||
self.tlv.dac_volume = 0 # dB
|
||||
|
||||
# Setup I2S audio output - important to do this AFTER configuring the DAC
|
||||
self.audio = audiobusio.I2SOut(
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import board
|
|||
import picodvi
|
||||
import framebufferio
|
||||
import displayio
|
||||
import adafruit_tlv320
|
||||
import audiobusio
|
||||
from audio import Audio
|
||||
from game import Game
|
||||
|
|
@ -39,16 +38,12 @@ SOUND_EFFECTS = {
|
|||
|
||||
displayio.release_displays()
|
||||
|
||||
i2c = board.I2C()
|
||||
dac = adafruit_tlv320.TLV320DAC3100(i2c)
|
||||
dac.configure_clocks(sample_rate=44100, bit_depth=16)
|
||||
dac.headphone_output = True
|
||||
dac.headphone_volume = -15 # dB
|
||||
|
||||
if hasattr(board, "I2S_BCLK"):
|
||||
audio_bus = audiobusio.I2SOut(board.I2S_BCLK, board.I2S_WS, board.I2S_DIN)
|
||||
else:
|
||||
elif hasattr(board, "D9") and hasattr(board, "D10") and hasattr(board, "D11"):
|
||||
audio_bus = audiobusio.I2SOut(board.D9, board.D10, board.D11)
|
||||
else:
|
||||
audio_bus = None
|
||||
audio = Audio(audio_bus, SOUND_EFFECTS)
|
||||
|
||||
fb = picodvi.Framebuffer(320, 240, clk_dp=board.CKP, clk_dn=board.CKN,
|
||||
|
|
|
|||
|
|
@ -1,10 +1,65 @@
|
|||
# SPDX-FileCopyrightText: 2025 Melissa LeBlanc-Williams
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
import json
|
||||
import time
|
||||
import board
|
||||
from micropython import const
|
||||
import adafruit_pathlib as pathlib
|
||||
import adafruit_tlv320
|
||||
|
||||
# optional configuration file for speaker/headphone setting
|
||||
launcher_config = {}
|
||||
if pathlib.Path("/launcher.conf.json").exists():
|
||||
with open("/launcher.conf.json", "r") as f:
|
||||
launcher_config = json.load(f)
|
||||
|
||||
# Check if DAC is connected
|
||||
if "I2C" in dir(board):
|
||||
i2c = board.I2C()
|
||||
for i in range(500): # try for 5 seconds
|
||||
if i2c.try_lock():
|
||||
break
|
||||
time.sleep(0.01)
|
||||
if 0x18 in i2c.scan():
|
||||
tlv320_present = True
|
||||
else:
|
||||
tlv320_present = False
|
||||
i2c.unlock()
|
||||
else:
|
||||
tlv320_present = False
|
||||
|
||||
if tlv320_present:
|
||||
dac = adafruit_tlv320.TLV320DAC3100(i2c)
|
||||
|
||||
# set sample rate & bit depth
|
||||
dac.configure_clocks(sample_rate=44100, bit_depth=16)
|
||||
|
||||
if "tlv320" in launcher_config:
|
||||
if launcher_config["tlv320"].get("output") == "speaker":
|
||||
# use speaker
|
||||
dac.speaker_output = True
|
||||
dac.dac_volume = launcher_config["tlv320"].get("volume",5) # dB
|
||||
else:
|
||||
# use headphones
|
||||
dac.headphone_output = True
|
||||
dac.dac_volume = launcher_config["tlv320"].get("volume",0) # dB
|
||||
else:
|
||||
# default to headphones
|
||||
dac.headphone_output = True
|
||||
dac.dac_volume = 0 # dB
|
||||
|
||||
if tlv320_present:
|
||||
_default_play_sounds = True
|
||||
else:
|
||||
_default_play_sounds = False
|
||||
|
||||
if "sound" in launcher_config:
|
||||
if launcher_config["tlv320"].get("output") == "mute":
|
||||
_default_play_sounds = False
|
||||
|
||||
# Settings
|
||||
PLAY_SOUNDS = True
|
||||
PLAY_SOUNDS = _default_play_sounds
|
||||
|
||||
# Timing Constants
|
||||
TICKS_PER_SECOND = const(20)
|
||||
|
|
|
|||
Loading…
Reference in a new issue