Servus beinand,
ich glaube ich bin RPi-mäßig etwas eingerostet, da ich im vergangenen Jahr (leider) wichtigere Sachen organisieren musste. Das vermeintlich Einfachste bringe ich zumindest auf die Schnelle nicht hin, einen pip install pyalsaaudio, da erhalte ich das:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
For more information visit http://rptl.io/venv
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Display More
Ich arbeite auf einem meiner vielen RPi3B unter Raspberry Pi OS Lite bookworm 32bit. 32bit deshalb, weil ich bei 64bit einen kodi-Absturz hatte. Beim RPi3 mit seinem 1GB RAM bringt 64bit zudem keinen wirklichen Vorteil...
Vorgehen bei der Installation:
1. Das OS mit dem RPi-Imager auf die SD-Karte geflasht. Inkl. SSH, deutscher Tastaturbelegung etc...
2. sudo apt update && sudo apt upgrade
3. In /boot/firmware/config.txt folgende Einträge ergänzt:
dtoverlay=hifiberry-dacplus
dtoverlay=vc4-fkms-v3d # es kann schon sein, dass ich wieder zum "echten" vc4-kms-v3d zurückkehre. Stellt sich am Schluss heraus...
4. eine /home/pi/.asoundrc für die ALSA-Konfiguration angelegt.
Hier geht es darum, zwei oder mehr Hardware-Soundkarten zu einer virtuellen Karte zusammenzufassen, die simultan die gleiche Audioausgabe liefern. Das funzt auch schon so weit. Ich habe sogar schon die drei Soundkarten erfolgreich zusammengefasst: (native) HDMI, HifiBerry DAC+, Logitech USB-Headset DZL-A-5572A. Details dazu siehe Thread Zero 2 W mit HifiBerry für Spotify, zu dem ich auch meinen Senf dazugegeben habe.
Wie gesagt, die gleichzeitige/simultane Wiedergabe einer Audioquelle über mehrere Hardware-Soundkarten funktioniert, auch deren Definiton als ALSA-Defaultgerät (Alsa-Einträge pcm) in der .asoundrc. Wenn man über eine Audiosoftware die Lautstärke regelt, beißt nur die Soundkarte an, die in ALSA als hw:0 eingebunden wird. Die Regler für amixer und alsamixer werden wohl über die Einträge ctl definiert, aber das funzt nicht so recht. Ich habe noch nicht gefunden, wie man ein ALSA-Mixerelement definiert, das gleichzeitig die Lautstärke mehrerer Soundkarten (bzw. einer virtuellen Karte) steuert. In allen im Internet gefundenen Beispielen wird letztlich eine Einzelkarte hw:<x> angegeben. Dies regelt aber dann eben nur diese eine HW-Soundkarte. Wegen der äußerst dürftigen und wohl relativ unaktuellen Dokumentation von ALSA (z.B. https://www.alsa-project.org/wiki/Asoundrc), bin ich hier ein echter Feuerwehrler: Ich stehe auf dem Schlauch!
Dann stieß ich auf pyalsaaudio, eine Python-Library, mit der man ALSA über Python steuern kann. Mein erster quick+dirty-Ansatz zum Testen wäre jetzt, ein Lautstärkesteuerprogramm zu schreiben, das allen einzelnen HW-Soundkarten meiner virtuellen Soundkarte die Lautstärkeänderung übergibt und somit auch die Lautstärke aller Einzelkarten gleichzeitig anpasst. Aber da scheitere ich schon bei der Installation von pyalsaaudio:
1. pip install pyalsaaudio
unter Raspi OS Lite kommt die Meldung: -bash: pip: command not found
2. sudo apt install pip
läuft ohne Auffälligkeiten durch
3. pip install pyalsaaudio
Jetzt kommt die Fehlermeldung von oben!
Liegt das jetzt an Raspi OS Lite? Bei mir ist zwar Python 3.11.2 installiert, aber das pip-Paket fehlt. Und danach funzt es immer noch nicht...
Großes
EDIT:
Interessant ist in diesem Zusammenhang, dass die Lautstärkeregelung von kodi wie gewünscht funktioniert, aber bei allen anderen Programmen nicht. Zuerst dachte ich, dies läge an einer fehlerhaften Umsetzung der anderen Software. Aber das ist bei den meisten Programmen so. Ich vermute mittlerweile, dass kodi seine Lautstärkeregelung nicht über ALSA steuert, sondern seine Audioausgabe selbst skaliert und in der eingestellten Lautstärke dann an ALSA liefert.