Servus Leute,
wundert Euch bitte nicht über mein aktuelles Projekt, es ist vermutlich in den Augen vieler etwas "old-fashioned":
Ein Hardware-CD-Player mit einem RPi für meinen Sohn (7 Jahre). Der wünscht sich sowas
EDIT: in Beitrag #42 befindet sich der Abschluss dieses Projektes.
Forenlinks zu RPi-Audioplayern ohne CD-Laufwerk
Es gibt ja gerade heutzutage genügend Leute, die keinen CD-Spieler (bauen) wollen.
Das kann ich verstehen, daher hier ein paar Links zu anderen erfolgreichen Projekten aus diesem Forum:
* [Projekt] jukebox4kids (Jukebox für Kinder) und die zugrunde liegende Phoniebox samt Quellcode auf github
* FrimpieBox - meine Hörspielbox
* Peppy Webradio (hier im Forum) oder dessen Originalbeiträge auf www.raspberrypi.org
* NewTron-Radio: Auflösungsunabhängiges Tron-Radio basierend auf MPD
* YAMuPlay - Yet Another Music PLAYer für Python3 basierend auf omxplayer.bin
Diese Liste mal vorab, für weitere Links bin ich per PN gerne zu haben. Es kann durchaus sein, dass ich noch das eine oder andere Projekt übersehen habe...
Hardwareseitig verwende ich folgende Konfiguration:
* RPi2 (vielleicht baue ich es noch auf eine RPi3 um...)
* Original RaspiDisplay von der RPi-Foundation
* HifiBerry MiniAmp: Die 3 Watt Musikleistung sollten für meinen Sohn laut genug sein:)
* externer USB DVD-Brenner LG GP50NW40: Soll jedoch vorerst zum reinen Abspielgerät für Audio-CDs (CDDA) "degradiert" werden
* S-USV pi advanced mobile: Das Ganze soll auch akkubetrieben eine Stunde düdeln können. nicht umgesetzt!
* 12V-Netzteil: Meanwell 25-12
Das Ganze habe ich in ein Industriegehäuse eingebaut, das in der Arbeit übrig blieb. Harwaremäßig steht es.
Jetzt muss ich es (Achtung: Unwort!) nur noch softwareseitig so zum Laufen bringen, dass es passt und am besten einigermaßen kindgerecht bedienbar ist. Natürlich gibt es etliche fertige Audioplayer für Linux (Raspbian), die das prinzipiell können und mein Plan B ist, die Qt-Version (EDIT: In Beitrag #42 wurde schließlich die GTK-Version verwendet) von audacious zu verwenden. Den meisten Playern gemeinsam ist, dass sie eher auf die Bedürfnisse für die Zielgruppe erwachsener Personen zugeschnitten wurden. Vom Design her am schönsten wäre eigentlich der Player KsCD, aber ausgerechnet der macht mir meine mühsam eingerichtete ALSA-Einbindung für den MiniAmp kaputt und der CD-Player würde immer unter voller Lautstärke laufen
Da auch das eject-Signal (zumindest auf dem RPi) nicht sauber(?) erkannt wird, hängen sich alle getesteten Player auf, wenn man unter dem Abspielen auf die Auswurftaste des externen CD-Laufwerkes drückt. Das Programm bleibt hängen und lässt sich nicht mal mit kill -9 <pid> bzw. sudo kill -9 <pid> abschießen. Das hängt solange, bis man wieder eine CD einlegt und das Laufwerk sie eingelesen hat. Der Lesefehler vom Laufwerk führt also zum Hängen. Selbst mit mplayer habe ich das Problem. Ein richtiges no-go, vor allem für ein Kind.
Also muss ich selber was programmieren. Derzeit versuche ich, es mit Python Audio Tools zu lösen, aber da ist mein Problem, dass ich nicht genau weiß, wie hier ALSA eingebunden wird. Angeblich geschieht das über die Bibliothek libasound2, die jedoch vom Audiotools-Installationsscript setup.py nicht gefunden wird, obwohl sie auf dem RPi installiert sein sollte:
python3 setup.py install
running install
running build
running build_py
running build_ext
============================================================================================
Python Audio Tools 3.2alpha2 Setup
============================================================================================
library present? used for download URL
------------ -------- ---------------------------------- -----------------------------------
libasound2 no ALSA output http://www.alsa-project.org
libcdio yes CDDA data extraction
libdvd-audio no DVD-Audio extraction http://libdvd-audio.sourceforge.net
libmpg123 no MP3/MP2 decoding http://www.mpg123.org
libpulse no PulseAudio output http://www.freedesktop.org
mp3lame no MP3 encoding http://lame.sourceforge.net
opus no Opus encoding http://www.opus-codec.org
opusfile no Opus decoding http://www.opus-codec.org
twolame no MP2 encoding http://twolame.sourceforge.net
vorbisenc no Ogg Vorbis encoding http://www.xiph.org
vorbisfile no Ogg Vorbis decoding http://xiph.org
wavpack no Wavpack decoding, Wavpack encoding http://www.wavpack.com
running build_scripts
running install_lib
running install_scripts
changing mode of /usr/local/bin/trackinfo to 755
Display More
Hier ist die Ausgabe in Zeile 10 zu beachten, dass die Bibliothek libasound2 nicht installiert sei.
dpkg -S libasound2 liefert jedoch folgende Ausgabe:
dpkg -S libasound2
libasound2:armhf: /usr/share/doc/libasound2/changelog.Debian.gz
libasound2:armhf: /usr/share/doc/libasound2
libasound2:armhf: /usr/share/doc/libasound2/examples/asoundrc.txt.gz
libasound2-data: /usr/share/doc/libasound2-data/changelog.gz
libasound2:armhf: /usr/share/doc/libasound2/examples
libasound2-data: /usr/share/doc/libasound2-data/copyright
libasound2:armhf: /usr/share/doc/libasound2/copyright
libasound2:armhf: /usr/share/doc/libasound2/changelog.gz
libasound2:armhf: /usr/share/doc/libasound2/NEWS.Debian.gz
libasound2-data: /usr/share/doc/libasound2-data
libasound2-data: /usr/share/doc/libasound2-data/changelog.Debian.gz
Display More
ebenso liefert dpkg -l | grep libasound2 folgendes:
dpkg -l | grep libasound2
Das verstehe ich gerade gar nicht.
Mein Problem ist, dass das Audiotools-Script cddaplay zwar offenbar eine CD abspielt (zumindest beginnt das Laufwerk zu arbeiten und die Zeit des Titels wird angezeigt), aber das eingestellte Audio-Device ist NULL und damit bleiben die Lautsprecher still. Auch dieses fertige Beispielscript hängt sich beim Entfernen der CD auf.
Vielleicht befinde ich mich auch gerade auf einem Holzweg und sollte folgende Fragestellungen lösen (ich weiß aber nicht wie):
1. EJECT-Signal des CD-Laufwerks über udev(?) erkennen:
Ein Ansatz ist das Programm udisks:
$ sudo apt-get install udisks
$ udisks --enumerate # liefert eine Liste ALLER erkannten Laufwerke
$ udisks --monitor # Anzeige der Events von den Laufwerken
2. Nach Lösung von 1. nochmals einen fertigprogrammierten Audioplayer (audacious) testen
Ich glaube irgendwo gelesen zu haben, dass speziell unter Raspbian das EJECT-Modul für CD-/DVD-Laufwerke nicht enthalten ist, da wohl an die wenigsten RPis ein externes Laufwerk angeschlossen wird. Dieser Thematik muss ich nochmals nachgehen...
3. Nach Lösung von 1. evtl doch auf MPlayer umsteigen
$ sudo apt-get install mplayer
$ mplayer -cdrom-device /dev/cdrom cdda:// # Dieser Aufruf startet das Abspielen der eingelegten CD
und eine simple Python-GUI (ähnlich zu KsCD) unter tkinter "stricken" und mplayer aufrufen.
In der PC-Welt wurde folgender Artikel veröffentlicht, dessen Schreiberling das EJECT-Problem auch nicht lösen konnte...
Ich bin jedenfalls für jeglichen Ratschlag dankbar.
schlizbäda