RaspiBlaster: CD-Player mit dem RPi oder wie binde ich "libasound2" in "Python Audio Tools" ein?

  • 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 https://www.raspberrypi.org/forums/viewtopic.php?t=139983

    * 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

    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

    ebenso liefert dpkg -l | grep libasound2 folgendes:

    dpkg -l | grep libasound2
    Code
    ii  libasound2:armhf      1.1.3-5+rpi3     armhf    shared library for ALSA applications
    ii  libasound2-data       1.1.3-5+rpi3     all      Configuration files and profiles for ALSA drivers

    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:

    Code
    $ 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

    Code
    $ 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.:danke_ATDE:

    schlizbäda

  • RaspiBlaster: CD-Player mit dem RPi oder wie binde ich "libasound2" in "Python Audio Tools" ein?? Schau mal ob du hier fündig wirst!

  • Test unter OSMC mit kodi

    Rein testweise habe ich schnell (auch so ein Unwort!) OSMC auf einer SD-Karte installiert und unter meiner Hardware eingerichtet. Kurzes Fazit:

    1. OSMC bleibt beim Entfernen der CD über die Auswurftaste des Laufwerk nicht hängen.

    Das Event wird vom OSMC-Linux anscheinend sauber erkennt und bearbeitet. Dies beweist u.a., dass die Eject-Problematik unter Raspbian rein softwareseitige Gründe hat.

    2. Die Touchbedienung über das Original 7"-RaspiDisplay funktioniert praktisch nicht

    Bei der Einrichtung funktionierte die Touchbedienung relativ gut, aber im "normalen" Betrieb von kodi nicht intuitiv: Die Touchsignale werden zwar erkannt, weil in der Ecke links oben ein Mauspfeil erscheint, aber der Mauspfeil lässt sich nicht verschieben und auch die Schaltflächen reagieren nicht auf Klicks.

    3. Beim Einlegen einer DVD wird der Film abgespielt.

    Das soll jetzt der Player nicht unbedingt können, wenn er für ein siebenjähriges Kind gedacht ist.

    4. Auch ansonsten ist die Bedienung nicht immer intuitiv.

    Mein OSMC-Mediacenter im Wohnzimmer wird über eine IR-Fernbedienung gesteuert. Dafür wurde kodi offensichtlich optimiert. Ohne USB-Tastatur wäre dieser Versuchsaufbau nicht bedienbar gewesen.


    --> leider fällt kodi/OSMC als Software damit für meinen RaspiBlaster aus...


    Das Blöde ist, dass ich jetzt bei meiner Test-DVD hängengeblieben bin:

    Asterix erobert Rom mit der Spracheinstellung "bairisch" für die Gallier

    ... anstatt dass ich unter OSMC-Linux über SSH den MPlayer installiert und ausprobiert hätte --> nachgeholt, siehe Beitrag #5

  • Die Touchbedienung über das Original 7"-RaspiDisplay funktioniert praktisch nicht

    Bei der Einrichtung funktionierte die Touchbedienung relativ gut, aber im "normalen" Betrieb von kodi nicht intuitiv: Die Touchsignale werden zwar erkannt, weil in der Ecke links oben ein Mauspfeil erscheint, aber der Mauspfeil lässt sich nicht verschieben und auch die Schaltflächen reagieren nicht auf Klicks.

    Hallo,

    ohne Einschänkungen, muß ich widersprechen (gut, meine osmc-Installation ist etwas älter).

    bei mir (RPi 2B, offizielles 7"Touchscreen Display, Internet über LAN-Kabel, Sound an 3.5mm-Buchse, Dekodierung im Grafikprozessor, keine Maus, keine Fernbedienung) läuft OSMC mit radio.de und Zattoo.

    Bedienung über Touchscreen ist 'gewöhnungsbedürftig', aber keine Hänger.

    Schönen Gruß, kle

  • ohne Einschänkungen, muß ich widersprechen

    Hallo kle,

    danke für den Hinweis, dass die Touchpanelbedienung in OSMC anscheinend doch funktioniert bzw. funktionieren kann.

    * Welchen Skin nutzt Du? Ich habe den Standard-OSMC-Skin beibehalten, vielleicht liegt es auch daran?

    * Welches OSMC-Image (Datum) nutzt Du?

    * Im Menü Einstellungen-->System-->Eingabe gibt es die CheckBox "Maus- und Touchscreen-Unterstützung aktivieren". Ist bei mir aktiviert.

    * Ich habe die Anzeige aufgrund der Einbausituation um 180° gedreht. Aber daran wird's ja hoffentlich nicht liegen...

    Generell ist es so, dass beim Berühren des Touchpanels in der Ecke links oben ein Mauspfeil erscheint. Er lässt sich über das Panel nicht bewegen. Mit einer USB-Maus funktioniert es jedoch.

    Da die OSMC-Lösung vermutlich ohnehin nicht in Frage kommt, weil ich noch nicht will, dass mein Kind jederzeit Videos, DVDs etc. anschauen kann, ist dies für mich derzeit nur von prinzipiellem Interesse und eine Antwort eilt nicht. Kodi kann aber für dieses Projekt in ein paar Jahren(?) durchaus interessant werden...

  • Test von MPlayer unter OSMC

    Ich habe auf meiner OSMC-Installation eine SSH-Sitzung geöffnet und schnell den MPlayer installiert:

    Code
    $ sudo apt-get install mplayer
    $ mplayer -cdrom-device /dev/cdrom cdda:// # Dieser Aufruf startet das Abspielen der eingelegten CD

    Damit wurde das Abspielen der CD erfolgreich (Running wild: "Prowling Werewolf" bei voller Lautstärke) gestartet. Gott sei Dank sind's nur 3 Watt:fies:

    Das Auswerfen der CD mit der eject-Taste führt jedenfalls in MPlayer zum gleichen Hänger wie bei Raspbian. Erst wenn das Laufwerk wieder eine CD erkannt hat, beißt das kill-Kommando an. Auch hier reicht wie bei Raspbian aber dann der "einfache" kill ohne das harte kill-Signal -9.

    --> ich werde mich jetzt in die EJECT-Problematik einarbeiten...

  • Hallo,


    Skin: Estouchy

    Datum: laut /etc/os-release: VERSION="February 2017"

    VERSION_ID="2017.02-2"

    Die Orientierung war mal so "Optionen -> My OSMC -> PI Config -> custom settings" zu erreichen.

    aktuell weis ich es nicht. In /boot/config.txt steht:

    lcd_rotate=2

    damit 3.5mm-Klinkenbuchse und mini-HDMI oben sind.

    * Im Menü Einstellungen-->System-->Eingabe gibt es die CheckBox "Maus- und Touchscreen-Unterstützung aktivieren". Ist bei mir aktiviert.

    bei mir auch.

    Schönen Gruß, kle

  • libasound2 erfolgreich in Python-Audio-Tools eingebunden!

    Hähä, es gibt einen Teilerfolg zu vermelden:

    Ich schaffte es, die Bibliothek libasound2 in den Python-Audio-Tools bekannt zu geben und einzubinden! Das mitgelieferte Script cddaplay spielt jetzt die CD ab und die Musik wird über ALSA (bzw. den MiniAmp) auf die Lautsprecher ausgegeben. Yeah!

    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...

    Die Lösung ist, das Paket libasound2-dev zu installieren, nicht das normale libasound2-Paket. Das ist ja im aktuellen Raspbian eh schon enthalten. Also anstatt über sudo apt-get install libasound2 das "normale" Library-Paket zu installieren muss das Entwicklerpaket verwendet werden, bei dem hinten immer(?)/meistens -dev angehängt ist:

    sudo apt-get install libasound2-dev

    Da hat der Dauernoob wieder was gelernt!

    [OT]

    Nachdem ich mich diesbezüglich auch auf https://raspberrypi.stackexchange.com ausgelassen habe, kam mir obige Idee. Anscheinend hilft so eine Schreiberei bisweilen, den Kopf für neue Ansichten und Herangehensweisen frei zu bekommen. Mittlerweile sehe und behandle ich auch diesen Thread so :conf:

    [/OT]


    Allerdings habe ich auch mit den Python Audio Tools bzw. den vorgefertigten Beispielscripts (cddaplay) die gleichen EJECT-Probleme wie bei mplayer. Aber morgen ist auch noch ein Tag (gähn)!

  • Servus hyle,

    danke für diese einfache wie geniale Idee, die Auswurftaste einfach mit eject -i on zu sperren. Nur leider interessiert das mein CD-Laufwerk, ein LG GP50NW40 keinen Stutzen. Aber wenn Software nicht so hard wäre (frei nach VeryPrivat), bräuchte ich es auch nicht hardwaremäßig zu lösen: Aufgrund dieser Erfahrungen werde ich jetzt mal schauen, ob ich im Laufwerk zwischen den Taster an der Frontschublade und der Elektronik ein Relais einbauen kann...

    Wenn's einfach waar, kannt's a Depp aa! (Wenn es einfach wäre, würde es eine leicht unterbegabte Person auch lösen können...)

  • Mei is dees a G'frett! :wallbash:

    Ich beschloss, vor dem Zerfleddern des CDROM-Laufwerks (wegen Relais und so) das Ganze nochmals softwareseitig zu lösen, aber jetzt gehört das Laufwerk der Katz'!

    Mit den Python Audio Tools hatte ich zunächst eine kleine Routine zum Abspielen einer CD programmiert und da hängt die Sache beim CD-Auswurf genauso wie mit MPlayer und dem Script cddaplay:

    Python Audio Tools - Klasse audiotools.player.CDPlayer()

    Versuch 1:

    Python-Code mit "high-level"-Zugriff auf Audio-CD, die Audioausgabe funktioniert hier ganz normal, aber beim EJECT hängt dieser Code in cdplayer.play()

    Daraufhin wollte ich testen, was passiert, wenn man richtig "low-level"-mäßig ganz wenige Daten von der CD liest, ohne dabei über zig übergestülpte Klassen auf das CD-Laufwerk zuzugreifen. Auch hier bleibt das Programm beim Auswurf der CD im Kommando cddareader.read(1) hängen:

    Python Audio Tools - Klasse audiotools.cdio.CDDAReader()


    Versuch 2:

    "low-level"-Zugriff auf die Audio-CD mit try-Konstruktionen, um Fehler sauber zu erkennen und Wartezeiten für gesteuerten "Debug"

    Hier ist das Problem, dass bei geöffneten Laufwerk zwar der erste try anbeißt, da der Konstruktor eine Exception wirft. Nicht so das Kommando cddareader.read(1) im zweiten try: Es hängt "ewig", obwohl es nur einen Sektor (oder so, jedenfalls ganz wenige Daten) von der CD lesen soll. Es wird keine Exception ausgelöst, sondern das Programm bleibt hängen und läuft erst weiter, wenn man die CD wieder einlegt und eine Minute (oder so, jedenfalls relativ lange) herwartet, bis sich die Sache wieder fängt.

    Hier noch die Debugausgabe des Programms. Zwischen den Ausgabetexten der obigen Routine befinden sich die mittels pyudev abgefangenen udev-Meldungen vom CDROM-Laufwerk:

    Nachdem jetzt auch ein echter Low-Level-Zugriff keinen Erfolg bringt, muss ich wirklich versuchen, es hardwaremäßig lösen. Mir graut es :baeh2:

    schlizbäda

  • Umbau des CDROM-Laufwerks LG GP50NW40:

    nachdem ich offensichtlich zu blöd bin, die eject-Problematik softwaremäßig zu lösen, erledigte ich es trotzdem prinzipiell nach dem Vorschlag von hyle, die Auswurftaste zu sperren, solange das CDROM-Laufwerk eine CD abspielt. Allerdings nicht softwaremäßig, sondern in der Hardware des Laufwerks: Dort wird eine Leitung des Auswurftasters aufgetrennt und ein Relaiskontakt in Reihe eingeschleift. Bei geöffnetem Relaiskontakt ist der Auswurftaster deaktiviert.

    Der RPi kann den Relaiskontakt über den GPIO4 (Pin 7 auf der 40pol. Stiftleiste) so steuern, dass er während des Abspielens einer CD (play) offen ist und somit den Auswurftaster sperrt. Erst nach Beenden des Abspielens (stop) wird der Relaiskontakt wieder geschlossen. In die Software für den CD-Spieler kann eine eject-Schaltfläche integriert werden, die zuerst stop ausführt, den Relaiskontakt dann schließt und schließlich eject anstößt, indem es z.B. in Python über subprocess.call() das gleichnamige Linux-Kommando aufruft. Der Hänger kann damit nicht mehr auftreten:

    CDROM_eject.zip (eagle-Schaltplan, Datenblätter)

    So viel zur Theorie. Der tatsächliche Umbau hat mich dann fast den ganzen Sonntag gekostet. In dem Laufwerk geht's dermaßen eng zu (hier leider kein dehnbarer Begriff :shy:). Da muss man um jeden mm kämpfen! Und das ist jetzt keine Floskel.

    Die Schritte im Einzelnen:

    * Laufwerk (mal wieder) aus dem Raspiblaster ausbauen und zerlegen

    * mit dem Multimeter die Anschlüsse des Auswurftasters suchen

    * Auf der Elektronik eine geeignete Stelle zum Auftrennen der Leitung suchen, ich wurde auf der Leiterplatte fündig.

    * Die Leiterbahn auftrennen und Kabel für den Relaisanschluss anlöten

    * Das Ganze so einbauen, dass es sich in das winzige Gehäuse sauber einfügt:

    Leider ist fast die gesamte Elektronik auf der beweglichen Schublade des Laufwerks untergebracht. Die Verbindung von der Schublade zum fest montierten USB-Anschluss erfolgt über eine dünne Folienleitung. Zunächst habe ich einfach versucht, die beiden Kabel so zu legen, dass sie nicht stören. Das war jedoch leider unmöglich. Folienleitung habe ich (derzeit) keine, aber dann kam mir die Idee, es mit einer klassischen Flachbandleitung zu versuchen. Nachdem ich noch den Boden des Laufwerks an der Stelle großzügig weggedremelt habe, an der die Flachbandleitung ihren Platz braucht, konnte ich es so einbauen, dass sich das Laufwerk wieder öffnen und schließen lässt, wenn auch mit etwas mehr Reibung :baeh2:

    Erklärung zu den Bildern im Dateianhang

    1. aufgetrennte Leiterbahn:

    Die Leiterbahn musste getrennt werden, um den Relaiskontakt dazwischen zu schwindeln: Ein Kabel wurde an der relativ kleinen Lötstelle der Folienleitung von der Schubladenfront angelötet, das andere an einer kleinen Durchkontaktierung (Via) der Leiterplatte. Da musste der Lötstopplack vorsichtig abgekratzt werden, ohne dabei das Kupfer der Durchkontaktierung zu beschädigen

    2. Anlöten der Kabel an Pin 2 der Folienleitung und an der Durchkontaktierung:
    Dünnere Kabel fand ich leider nicht

    --> Für 1 und 2 war eine ruhige Hand gefragt, deshalb am Vortag keine Sauferei ;)

    3. prinzipielle Kabelführung:

    Das Prinzip habe ich von der werksseitigen Folienleitung abgeschaut. Allerdings ist meine Flachbandleitung wesentlich größer! Da muss jetzt jeder Millimeter herausgeschunden werden

    4. Da die ursprüngliche Verklebung und Kabelbiegung der Flachbandleitung bei fast geschlossenem Laufwerk am Gehäuse anstößt, musste weiterer Platz herausgeschunden werden! Alles Unnötige wurde mit einem Dremel weggefräst. Sieht allerdings aus, wie wenn es von Mäusen angebissen wurde :angel:

    Mein "Mechanikverbot" in der Arbeit habe ich mir schon ehrlich erarbeitet :lol:

    5. Endgültiger Verlauf der Flachbandleitung

    Die nach hinten versetzte Flachbandleitung lässt jetzt das Schließen und Öffnen des Laufwerks zu, allerdings geht es immer noch streng.

    Der Boden wurde weiter ausgedremelt und von der USB-Platine habe ich ebenfalls alles Unnötige "weggebissen". Eine Optimierung steht allerdings noch aus (quasi noch ein Trumpf im Ärmel): Von der Flachbandleitung können noch die zwei unteren Adern abgetrennt werden, dann dürfte es noch etwas flexibler und leichter laufen...

    6. Rückansicht (beim Foto war das Gehäuse bewusst noch nicht ganz geschlossen):

    Neben dem Mini-USB-Anschluss des Laufwerks habe ich eine zweipolige Stiftleiste eingebaut. Bei Stecken eines Jumpers hat man die alte Funktionalität des Laufwerks bzw. der Auswurftaste oder man schließt ein Relais (den Öffnerkontakt) an, der dann über den RPi gesteuert wird.

    Hähä:

    Während der Bastelei wollte ich zwischendrin das Laufwerk am PC testen und bekam dann so Meldungen "USB-Gerät nicht erkannt". Kurz davor hatte ich beim Dremeln die Folienleitung ganz leicht berührt. Gott sei Dank war es "nur" eine (von mehreren) Masseleitungen und die war auch nicht wirklich durch. Trotzdem lief das Laufwerk nicht mehr richtig. Das wird doch jetzt nicht ganz kaputt sein! Kurz bevor ich weinen musste sah ich zum USB-Kabel hinunter und das erschien mir irgendwie komisch. Daraufhin nahm ich ein anderes von einem USB-Hub her, das einen zweiten USB-Anschluss zur Stromerhöhung hat. Eigentlich ein Shicedreck in meinen Augen. Aber siehe da, damit funktionierte das Laufwerk wieder. Letztlich war es das Mysterium®, das hier zugeschlagen hat. Allerdings nicht am RPi (da sorge ich schon dafür), sondern am PC!

    Puuh, große Erleichterung und 40 Euro "gespart".

    Was lernt man daraus?

    Beim nächsten Raspiblaster wird ein 5,25"-CD-Laufwerk verbaut, das für einen Desktop-PC gedacht ist. Da dürfte mehr Platz sein...

    schlizbäda

    • Offizieller Beitrag

    Hallo schlizbäda,

    Hut ab! Ist echt bewundernswert wie Du Dich durch dieses Projekt kämpfst. Wider aller Hindernisse, frei nach Goethe: "Und bist Du nicht willig, so brauch' ich 'nen Dremel." :thumbup:

    Ja..., was man nicht alles so für seine "Senker" macht... :denker:

  • Weihnachtsausgabe vom Raspiblaster

    Jetzt habe ich es gerade noch geschafft, den Raspiblaster für meinen Sohn bis zur Bescherung einigermaßen herzurichten8o

    Funktionierende Teile (damit bin ich schneller fertig):

    * Play/Pause-Taste zum Abspielen der eingelegten CD

    * Prev-/Next-Tasten für Titelsprung auf der CD

    * Stop-Taste

    * Eject-Taste

    * Auf dem RPi-Desktop befindet sich ein Desktopicon zum Anklicken, das den Raspiblaster öffnet.

    Nicht funktionierende Komponenten:

    * Rewind-/FastForward-Tasten im Programm (raspiblaster.py)

    * softwaremäßige Sperre der Auswurftaste am Laufwerk (raspiblaster.py)

    * Die tkinter-GUI: Funktioniert zwar, ist aber schiach (häßlich)

    --> Diese drei Punkte sind auf Zeitmangel zurückzuführen: Dauernd ist eine Weihnachtsfeier oder sonst irgendetwas, wovor man sich ums Verrecken nicht drücken kann.

    * S-USV: Habe ich nicht vernünftig zum Laufen gebracht. Da scheint die Herstellerfirma noch Probleme zu haben...

    Jedenfalls kommt der Raspiblaster jetzt in die Geschenkeschachtel und dann unter den Baum.

    Anbei die Erstversion (V0.1) meines Python-Scriptes:

    * Nicht fertigprogrammiert

    * Eigentlich nicht vorzeigbar


    Ich wünsche Euch allen frohe Weihnachten!

    schlizbäda

  • Erste Erfahrungen aus der Praxis

    Meine ersten Erfahrungen nach dem Test am Kunden, wie ihn auch die Autoindustrie gerne praktiziert:

    1. So ein CDROM-Laufwerk für'n Computer ist ja nicht gerade für das Abspielen von CDDA (Compact Disk Digital Audio) optimiert. Die kleinsten Lesefehler führen zu Tonaussetzern. Meine Test-CD war eine relativ verkratzte selbstgebrannte CD aus dem Auto in mittelmäßigem Zustand. Deshalb gab ich zunächst nix drauf, aber bei den neuen Original-CDs von Weihnachten tritt dieses Problem auch auf. Dies kann aber durch den Kommandozeilenparameter -cache <size in kB> (z.B. mplayer -cache 8192) relativ gut kompensiert werden!
    --> Problem 1 ist gelöst.

    2. Ja greimfetzn!

    Da gibt's CDs, bei denen mplayer die einzelnen Lieder bzw. Tracks sowohl als titles als auch als chapters (diese Nomenklatur stammt vermutlich eher aus der DVD-Welt) erkennt. Dabei besteht kein (erkennbarer) Zeitversatz. Und dann gibt's welche (z.B. Alan Parsons Project - Pop Classics), da erkennt der mplayer zwar die 16 titles (ANS_titles=16), aber keine chapters (ANS_chapters=0) Und bei Absetzen des Kommandos property_get chapter erhalte ich ANS_ERROR=PROPERTY_UNAVAILABLE.

    Idealerweise gibt es im mplayer zwar das Kommando set_property chapter <num>, nicht aber die Variante set_property title <num>! Wie soll ich bei der CD ein bestimmtes Lied anspringen? :baeh2:

    Jetzt werde ich mir mal die man-pages von mplayer vorknöpfen... Vielleicht finde ich da noch eine Möglichkeit?

    EDIT: Nein, eine einfache Möglichkeit fand ich jetzt leider nicht, würde ja nicht zu diesem Projekt passen... Bei CDs ohne chapters funktionieren auch die Tasteneingaben ! (zurück) und @ (vor) im mplayer nicht. Also besteht da wenig Hoffnung, außer dass dies ein seltener Gendefekt unter der CDDA-Spezies ist ;)

    3. Vergleich mit Konsumware:

    Mein Neffe nebenan bekam vom Christkind keinen RPi-CD-Player:no_sad:, sondern viel cooler :cool: einen kidizoom Duo 5.0 von vtech [Anzeige] (eine meiner absoluten Lieblingsmarken). Dieses Trumm hatte ich auch schon in den Fingern. Das Gehäuse scheint kindgerecht-stabil zu sein. Neben fotografieren (inkl. zweiter Linse auf der Rückseite für Selfies :stumm:) und kleinen Videospielen kann das Ding auch noch Musik abspielen (Videos weiß ich nicht). Und da musste jetzt ein bissl Mucke drauf. Boah drexgeil:bravo2:Vor allem der Riiiiiiiesen-Speicher. 30 Bilder drauf und noch 25MB frei (richtig gelesen: MB, kein Schreibfehler) Aber es hat ja einen Micro-SD-Schacht. Da habe ich meinem Neffen gleich noch eine 4GB-Karte (fat32-formatiert) spendiert. Passt eh kein Raspbian stretch PIXEL mehr drauf...

    ABER:

    Das Ding kann neben MP3 auch *.wav abspielen (sonst hab ich nichts getestet) und der Musikbrowser zeigt Unterordner an, in die man sogar hineingehen kann! Das muss ich neidlos anerkennen und zolle den angemessenen Respekt. Und die Grafik der GUI ist viel schöner :bussi2:

    Gut, die Bilder von der Kamera sind sehr verwackelt. Billiges Kameramodul eben und daher für Kinder eher ungeeignet, aber ansonsten wäre es wohl noch teurer. Meine Angetraute meinte schon, im Herbst zum Geburtstag gibt's für die unseren auch sowas. :auslachen:Hoffentlich kann ich das bis dahin noch mit einem RPi mit Kameramodul und Kameragehäuse hinunterbiegen? Billig-Mediaplayer und Minigames sind dann auch noch schnell drauf. Das Kameramodul vom RPi und dessen Qualität kenne ich aus der Praxis allerdings überhaupt nicht.

    So das war jetzt aber genug off-topic!

    Hier noch ein paar Bilder vom (schon wieder geöffneten) Raspiblaster.

    • Offizieller Beitrag

    Hallo schlizbäda,

    ich finde es echt schade, dass Dir bei Deinem Raspiblaster-Projekt nach wie vor so viele Steine im Weg liegen. ;(

    Aber zur Hardware: Jetzt wo ich das erste mal den kompletten Player auf Bildern und von außen sehe... Pfff, alter Schwede! Das sieht "schweinegeil" aus! :bravo2:

  • Jetzt wo ich das erste mal den kompletten Player auf Bildern und von außen sehe... Pfff, alter Schwede! Das sieht "schweinegeil" aus! :bravo2:

    Hallo hyle,

    vielen Dank für die Rasp- äh, Lorbeeren!

    Aber wenn man sich den Raspiblaster aus der Nähe anschaut, sieht man leider, dass das Gehäuse durchaus Gebrauchsspuren aufweist, wenn auch kleine. Und beim Einbau der Lautsprecher hatte ich zuerst Bohrungen mit Aufsenkungen für M4-Senkkopfschrauben gemacht. Natürlich passten die (später gelieferten) Abdeckungen nicht 100%ig zu den Lautsprechern (obwohl gleiche Marke), so dass ich die Gesamtverschraubung letztlich nur über Tricks hinschwindeln konnte. Leider sieht man die Senkungen noch unter den Abdeckungen an den Ecken hervorschauen. Ist nicht wie beim Programmcode, dass man Fehler einfach mit der Backspace-Taste löschen kann :(

    mplayer-Eigenschaften titles bzw. chapters

    Der mplayer ist eben doch eher ein Videoplayer als ein Audioplayer. Ich sehe mich in meiner Vermutung durch Stichprobengriffe in meine CD-Sammlung bestätigt, dass relativ alte CDs nur titles aber keine chapters aufweisen.

    Queen: A Day At The Races ANS_titles=10, ANS_chapters=0: Hier tritt das Problem auf, dass mplayer nicht zum nächsten Musikstück springen kann. Diese CD ist relativ alt ("Made in West Germany")

    Gleiches gilt für folgende CDs:

    * Queen: The Miracle

    * ABBA: Golden Starts international

    * Accept: Metal Heart

    Die gleiche Anzahl titles und chapters weisen folgende relativ neuen CDs auf:

    * Queen: Sheer Heart Attack (2011 Digital Remaster)

    * Iron Maiden: Edward the Great - The Greatest Hits (2002)

    * Die ultimative Chartshow: Hits 2017

    * Running wild: 20 Years in History (2003)

    Interessant sind noch meine Maiden-CDs The Number Of The Beast und Fear Of The Dark, die in dieser Version 1998 herausgebracht wurden. Dabei handelt es sich um sogenannte enhanced CDs, d.h. sie enthalten einen Track, in dem ein Computerprogramm (für Win und MAC) enthalten ist. Am Linux-PC (ubuntu 16.04) werden zwei Partitionen gemountet, eine mit den Audiotracks (kein echter Mount) und eine mit dem Multimedia-Track. Aber dort sieht man keine Dateien. Der VLC-Player spielt beim letzten Track die Datenbits akustisch ab (schiach).

    Der mplayer findet z.B. 10 titles und 9 chapters (die 9 echten Lieder von The Number Of The Beast). In raspiblaster.py habe ich es mit dem Zugriff auf die chapters intuitiv richtig programmiert (selbstschulterklopf), wohl in erster Linie wegen der fehlenden titles-Auswahl.

    Meine Erkenntnis ist, dass ich meinen Resturlaub doch u.a. dazu verwenden werde, raspiblaster.py unter Verwendung von Python Audio Tools weitestgehend neu aufzusetzen. Anstelle der Uralt-GUI tkinter werde ich auf wxPython, PyQt oder PyGTK umschwenken...

    Sorry, dass das mittlerweile in so einen mimimi-Thread ausartet;)

    schlizbäda

    • Offizieller Beitrag

    Accept: Metal Heart

    ...

    Iron Maiden: Edward the Great

    ...

    The Number Of The Beast und Fear Of The Dark

    Gitarre Schlagzeuger Singing Endlich normale Leute!

    Ich hatte mir zum Glück vor ein paar Jahren mal die Mühe gemacht, wegen des besseren Handlings, meine "Schätze" als MP3 zu speichern. So habe ich hier überall dank RPi und minidlna zugriff auf meine Musik.

    BTW: Metal muss man eh laut mit der großen Anlage hören, das klingt doch sonst nicht ohne Bass! ;) Das erinnert mich immer, an damals... eine meiner Lieblingskassetten war Master of Puppets. Die anzuhören mit dem KR650 war grausam. :no_sad:

    Was die "Bearbeitungsspuren" am Raspiblaster betrifft... Es gibt Leute die kaufen Klamotten die zerschlissen, ausgewaschen und löchrig sind bzw. welche ich so nichtmal zur Altkleidersammlung geben würde. Das ist halt alles Geschmacksache, hauptsache Deinem Kleinen gefällts.

    Leider besitze ich keine externes CD-Laufwerk sonst würde ich schon aus reinem Interesse auch ein paar Player testen. Mein vermutlich erster Versuch wäre mpd/mpc. Das Erzeugen der jeweiligen Playlist ist bestimmt auch nicht so einfach. :denker: Aber ich habe mangels Erfahrung nichtmal Ahnung ob und wenn ja, wie mpg mit CDAs umgehen kann. Allerdings habe ich gerade das https://www.musicpd.org/doc/user/input_plugins.html und das https://www.gnu.org/software/libcdio/ gesehen. mpd auch, weil sich der Raspiblaster so ganz leicht auch als Internetradio nutzen ließe.

    Könnte die unterschiedliche Behandlung zwischen alten und neueren CDs auch mit dem CD-Text zusammenhängen? Ich bin zu lange aus der Materie raus, aber die alten CD hatten ja noch keinen CD-Text.

    • Offizieller Beitrag

    kle Ich kenne newtron-radio, habe aber aus Spaß an der Freude eigene Projekte mit mpd (als Internetradio) realisiert. Einen kleinen Rückschlag hatte ich hier mal, die Lösung dazu war trivial. Der Link nur um die Benutzten GPIO und den damit verbundenen Umfang zu zeigen. Dabei werden die Playlists händisch oder wahlweise mittels kleinem Script automatisch erstellt. ;) Ich bin gerade dabei den RPi B in Rente zu schicken und als Nachfolger einen Zero W zurechtzustricken.

    schlizbäda Sorry für OT!

  • Servus hyle,

    Der KR650 ist doch eine Art Vintage-Raspiblaster :)

    Das mit dem Bass bezüglich Heavy Metal ist schon richtig, aber beim Programmieren ist zu große Lautstärke und/oder zu viel Baß bisweilen nervig, denn ich bin ein geschmeidiger Mittvierziger. Das mit viel Baß und so kommt jetzt aber bald wieder auf dem Faschingswagen. Da bin ich wieder für die Anlage zuständig: Einen yamuplay an gescheite Verstärker + Lautsprecher angeschlossen und ab geht der Punk!

    mpd/mpc:

    Nachdem ich jetzt kurz mit PyQt5 am PC unter ubuntu 16.04 gespielt hatte, wollte ich es nun am RPi testen.

    PyQt5 am RPi einrichten ist leider gar nicht mal sooo einfach

    (Achtung: Unwort!) Schnellam RPi die drei Installationskommandos von ubuntu einhacken:

    Code
    $ sudo apt install python3-pip
    $ pip3 install SIP
    $ pip3 install PyQt5

    Bei den pip3-Kommandos kommt auf dem RPi folgende Meldung:

    Code
    $ pip3 install PyQt5
    Collecting PyQt5
      Could not find a version that satisfies the requirement PyQt5 (from versions: )
    No matching distribution found for PyQt5

    so richtig schön in rot:baeh2:

    Ich denke eine Installation dürfte auch am RPi funktionieren, wenn man alle notwendigen Pakete/Metadaten für dpkg lädt/aktualisiert

    Da ist das mit mpd/mpc hinsichtlich CD-Unterstützung zumindest mal einen intensiveren Blick wert! Danke Dir auch für diese gute Idee!

    An die Sache mit CD-Text habe ich auch schon gedacht, da bin ich mir aber nicht ganz sicher. Möglich wär's. Ich habe aber keinen echten CD-Player, der das unterstützt und bei der Software (VLC-Player, mplayer) bin ich mir nicht sicher, ob die das können/unterstützen. VLC zeigte vorhin bei einer der neuen CDs jedenfalls nichts an, audacious auch nicht. Das Internet habe ich vorsichtshalber getrennt wegen freedb/musicbrainz.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!