audiodrivers

This commit is contained in:
Dominic DiTaranto 2026-08-09 21:25:08 -04:00
parent 9d6babd722
commit 678ac77842

View file

@ -1,8 +1,13 @@
import time
import os
from importlib import resources
import sys
import fluidsynth
try:
import fluidsynth
except ImportError:
print("Error: The 'pyfluidsynth' python package is missing.", file=sys.stderr)
sys.exit(1)
from atonatui.constants import NOTE_TO_MIDI, GENERAL_MIDI_PROGRAMS, SOUNDFONTS
from atonatui.settings_mixin import Settings
@ -10,8 +15,24 @@ from atonatui.settings_mixin import Settings
class AudioMixin:
def __init__(self):
self.fs = fluidsynth.Synth()
self.fs.start(driver="alsa" if os.name != "nt" else "dsound")
try:
self.fs = fluidsynth.Synth()
except OSError:
print("\n[!] Error: FluidSynth system library not found.", file=sys.stderr)
print("Please install the system fluidysnth package first:", file=sys.stderr)
print(" - Arch Linux: sudo pacman -S fluidsynth", file=sys.stderr)
print(" - Ubuntu/Debian: sudo apt install fluidsynth\n", file=sys.stderr)
print(" - mac: brew install fluidsynth\n", file=sys.stderr)
sys.exit(1)
if sys.platform == "darkwin" or sys.platform == "darwin":
audio_driver = "coreaudio"
elif os.name == "nt":
audio_driver = "dsound"
else:
audio_driver = "alsa"
self.fs.start(driver=audio_driver)
self.sf_id = None
self.update_sf(SOUNDFONTS[Settings.INSTRUMENT])