Benutzer-Werkzeuge

Webseiten-Werkzeuge


raspberry:mp3-player

MP3 Player

Gleich vorweg: Ich hatte mir das Alles einfacher vorgestellt. Es gab hier und da so richtig Probleme, sei es mit dem Treiber für das Display, oder mit dem Einrichten von alsa mit mpd. Aber am Ende hat dann doch nach drei Tagen man-Pages lesen und Dr. Google das Gerät widerspenstig seinen Dienst aufgenommen.

Die Anmerkungen in diesen Boxen sind unbedingt zu beachten!

Zutaten

Raspberry 3A+ oder 3B+ (Habe es mit beiden probiert)
TRU COMPONENTS Touchscreen-Monitor 8.9 cm (3.5 Zoll) 320 x 480 Pixel
https://www.conrad.de/de/p/tru-components-touchscreen-monitor-8-9-cm-3-5-zoll-320-x-480-pixel-2144982.html
Nach dem Auspacken war es dann ein MAKEVMP400
OS: Raspbian (Release: 2020-05-27) :!: KEINE UPDATES MACHEN :!: Mit dem 5.x Kernen geht das Display aktuell nicht
USB-Stick mit MP3s (Let's Rock!)

Programme und Treiber

Installation

Raspbian

Noobs V3.4 mit Raspbian
Da ich von Grunde auf FAUL bin, habe ich mir NOOBS mit Raspbian runtergeladen und auf die SD-Card geschoben und die Installation damit ausgeführt.
Die Installation durch Noobs wird hier nicht beschrieben.

Versionsinformationen:

ROOT
root@raspberrypi:~# cat /etc/os-release PRETTY_NAME=„Raspbian GNU/Linux 10 (buster)“ NAME=„Raspbian GNU/Linux“ VERSION_ID=„10“ VERSION=„10 (buster)“ VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian HOME_URL=„http://www.raspbian.org/“ SUPPORT_URL=„http://www.raspbian.org/RaspbianForums“ BUG_REPORT_URL=„http://www.raspbian.org/RaspbianBugs

root@raspberrypi:~# cat /etc/issue Raspbian GNU/Linux 10

root@raspberrypi:~# uname -a Linux raspberrypi 4.19.118-v7+ #1311 SMP Mon Apr 27 14:21:24 BST 2020 armv7l GNU/Linux root@raspberrypi:~#

Bei der Installation bitte Default auf Englisch ⇒ en_gb UTF8 stehen lassen. Der Grund:
Die interne Soundkarte wird nicht erkannt!
Das kann man hier auch nachlesen: https://www.raspberrypi.org/forums/viewtopic.php?t=275400

Nach der Installtion auf keinen Fall ein Update machen! Grund:
Das Display wird mit dem neuen Kernl 5.x nicht mehr funktionieren.

Tools und Anpassung

Aktiviert SSH ⇒ raspi-config ⇒ auf dem kleinen Display kann man nachträglich nicht wirklich arbeiten

Audio aktivieren ⇒ in der /boot/config.txtdtparam=audio=on anmachen.

Damit man mit dem Touch-Display besser arbeiten kann, sollte man auch den Single-Click aktivieren.
En: ⇒ AccessoriesFile ManagerEditPreferenceOpen Files with One Click
De: ⇒ ZubehörDateinamangerEditPreferenceOpen Files with One Click

vim installieren, damit man auf der Shell ordentlich mit vi arbeiten kann (Ich nehme kein nano)

root@raspberrypi:~# apt-get install  vim
...
...

Die Konfiguration von vim anpassen - kommentiert diese beien Zeilen ein.

root@raspberrypi:~# vi /etc/vim/vimrc
...
syntax on
set background=dark
...

Und weil mir der Maus-Support tierisch auf den Sack geht, hier noch schnell den Mist abschalten!

root@raspberrypi:~# vi ~/.vimrc
set mouse=

Und was fehlt nun noch, mein lieblings-Alias l ⇒ aka ls -ali --color

root@raspberrypi:~# vi /root/.bashrc
...
export LS_OPTIONS='--color=auto'
...
alias l='ls $LS_OPTIONS -ali'

Und noch schnell aktivieren. Ja, da ist ein Leerzeichen nach dem Punkt.

root@raspberrypi:~# . /root/.bashrc

Und ein absolutes muss, wenn man mal schnell die Logs neben Start/Stop-Dienst angucken will ⇒ screen

root@raspberrypi:~# apt-get install screen

Rechtsklick

Die drei Zeilen in die Konfiguration einfügen… in die vorhandene Sektion.

root@raspberrypi:~# vi /etc/X11/xorg.conf.d/99-calibration.conf
 
  Option "EmulateThirdButton" "1"
  Option "EmulateThirdButtonTimeout" "750"
  Option "EmulateThirdButtonMoveThreshold" "30"
 

Virtuelle Tastatur

Damit man dann auch auf dem Display schreiben kann, habe ich mich für matchbox-keyboard entschieden.

root@raspberrypi:~# apt-get install matchbox-keyboard

Und weil bei der Tastatur die F1 - F12-Tasten fehlen, diese noch schnell in der Konfiguration einfügen. Sucht in der Konfigurationsdatei das erste Tag <row> und fügt dort die folgenden Zeilen davor ein.

root@raspberrypi:~# vi /usr/share/matchbox-keyboard/keyboard.xml
...
//Ab hier die Zeilen kopieren und..
    <row>
        <key width="13">
                <default display="F1" action="f1" />
        </key>
        <key width="13">
                <default display="F2" action="f2" />
        </key>
        <key width="13">
                <default display="F3" action="f3" />
        </key>
        <key width="13">
                <default display="F4" action="f4" />
        </key>
        <key width="13">
                <default display="F5" action="f5" />
        </key>
        <key width="13">
                <default display="F6" action="f6" />
        </key>
        <key width="13">
                <default display="F7" action="f7" />
        </key>
        <key width="13">
                <default display="F8" action="f8" />
        </key>
        <key width="13">
                <default display="F9" action="f9" />
        </key>
        <key width="13">
                <default display="F10" action="f10" />
        </key>
        <key width="13">
                <default display="F11" action="f11" />
        </key>
        <key width="13">
                <default display="F12" action="f12" />
        </key>
    </row>

Und nun noch die Tastatur autom. bei jedem Start mit starten.
Legt dazu die Datei ~/.config/autostart/matchbox-keyboard.desktop an und fügt den unten aufgeführten Inhalt ein.

Achtung: Dies muss als Benutzer pi ausgeführt werden.

pi@raspberrypi:~ $ mkdir ~/.config/autostart
pi@raspberrypi:~ $ vi ~/.config/autostart/matchbox-keyboard.desktop
 
[Desktop Entry]
Name=Matchbox-keyboard
Exec=matchbox-keyboard
Type=application

Hier ein Tastaturlayout mit allen Tasten. Diese könnt Ihr natürlich auch herunter laden und die /usr/share/matchbox-keyboard/keyboard.xml damit ersetzen. https://github.com/xlab/matchbox-keyboard/blob/matchbox-keyboard-xlab/layouts/keyboard-full.xml

Das Display anmachen

Der Treiber, den es auf der Conrad-Seite gibt, gleich mal sein lassen. Nach der Installation dieses Treibers endet das Booten in einer Kernel-Panic.
Benutzt den aktuellen Treiber von der Github-Seite: https://github.com/goodtft/LCD-show

  • Schalten den RasPi aus
  • Steckt das Display auf den GPIO-Header
  • Schaltet den Raspi wieder ein und führt dann die Installation aus


root@raspberrypi:~# git clone https://github.com/goodtft/LCD-show.git
...
root@raspberrypi:~# chmod -R 755 LCD-show
root@raspberrypi:~# cd LCD-show/
root@raspberrypi:~/LCD-show# ./LCD35-show

Der RasPi wird nun neu gestartet und Ihr solltet nun den Desktop auf dem 3.5 Zoll Display sehen.

Wenn Ihr die Ausgabe wieder über HDMI haben wollt, gibt es zwei Wege. Ich bevorzuge aber den, das Backup wieder herzustellen, welches bei der Installation angelegt wurde.

Ausgabe umschalten

root@raspberrypi:~# cd LCD-show/
root@raspberrypi:~/LCD-show# ./system_restore.sh

Der RasPi wird wieder neu gestartet und die Ausgabe erfolgt nun wieder über HDMI.
Wenn nun wieder auf dem 3.5 Zoll Display ausgegeben werden soll, einfach die Installation mit:

root@raspberrypi:~# cd LCD-show/
root@raspberrypi:~/LCD-show# ./LCD35-show

ausführen.

Der Player

Als erstes die folgenden Programme installiert werden.

root@raspberrypi:~# apt-get install jq ffmpeg sxiv mpd mpc alsa-utils
...
...

Nun noch schnell Kunst installieren, um Informationen für Alben/Interpreten herunterzuladen, darzustellen. ( https://github.com/sdushantha/kunst )

root@raspberrypi:~# git clone https://github.com/sdushantha/kunst
root@raspberrypi:~/kunst# cd kunst
root@raspberrypi:~/kunst# make install

Und nun noch die Player-GUI installieren.

root@raspberrypi:~# git clone https://github.com/granpino/RaspiPlayer.git
root@raspberrypi:~# cd RaspiPlayer
root@raspberrypi:~/RaspiPlayer# chmod +x *.sh
root@raspberrypi:~/RaspiPlayer# ./install.sh

Die RaspiPlayer-Installation überschreibt die /etc/mpd.conf. Diese muss dann wieder angepasst werden, damit mpd den USB-Stick findet oder auch die Soundeinstellungen wieder stimmen (wie bei mir).

Bei der Installation des Players wird ein Icon zum Starten auf dem Desktop angelegt. Über dieses Icon kann die GUI gestartet werden.

Ihr müsst den Player über die grafische Shell starten!

Damit der Player seinen Dienst tut, muss mpd noch konfiguriert werden.

mpd - mpc

Ich musste bei mir die Einstellungen von mpd anpassen, da die Defaultwerte nicht stimmen.

  • Der USB-Stick Pfad passt nicht
  • Die Soundkarte hat eine andere Adresse als 0:0

Erst mal den USB-Stick suchen: Und gefunden unter ⇒ /media/pi/Volume

root@raspberrypi:~# mount
...
/dev/sda1 on /media/pi/Volume type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)
...

Damit mpd auch drauf zugreifen kann und nicht immer die Fehlermeldung access denied kommt, muss man gleich noch die Rechte anpassen. Da ich eh nix anders mit dem Ding vorhabe ⇒ gleich Quick and dirty! Und auch die Rechte für den Zugriff auf die Playlist setzen..

root@raspberrypi:~# chown -R mpd /media
root@raspberrypi:~# chmod -R 777 /var/lib/mpd/playlists

Hier der Hinweis, warum ich screen einsetze: Nutzt screen um gleichzeitig den Dienst mpd zu starten und die Log-Datei anzusehen. Hilfe zu screen findet ihr in der Wiki. Was man bemötigt ist: Strg-a S und Strg-a <TAB>.

Da kommt die 1 her, die als Hardwareadresse in der mpd.conf angegeben wird!

root@raspberrypi:~# cat /proc/asound/cards
 0 [b1             ]: bcm2835_hdmi - bcm2835 HDMI 1
                      bcm2835 HDMI 1
 1 [Headphones     ]: bcm2835_headphonbcm2835 Headphones - bcm2835 Headphones
                      bcm2835 Headphones

Befehle, die Helfen können, um die richtigen Einstellungen zu finden:

  • cat /proc/asound/cards
  • lsmod | grep „snd“

Und nun noch mpd konfigurieren, ich habe die Zeilen kommentiert, die ich angepasst habe.

root@raspberrypi:~# vi /etc/mpd.conf
# created by RaspiPlayer
# An example configuration file for MPD.
# Files and directories #######################################################
#
#music_directory                "/mnt/usbdrive"
music_directory         "/media/pi/Volume"              #USB-Stick :D
playlist_directory      "/var/lib/mpd/playlists"
db_file                 "/var/lib/mpd/database"
log_file                "/var/log/mpd/mpd.log"
pid_file                "/run/mpd/pid"
state_file              "/var/lib/mpd/state"
sticker_file            "/var/lib/mpd/sticker.sql"
# General music daemon options ################################################
user                    "mpd"
bind_to_address         "localhost"
# Input #######################################################################
input {
        plugin "curl"
}
# Audio Output ################################################################
audio_output {
        type            "alsa"
        name            "My ALSA Device"
        device          "hw:1,0"                        #Soundkarte normal steht hier 0:0
        mixer_type      "software"                      #damit über mpc auch laut/leise getsellt werden kann
}
#
#
audio_output {
       type            "alsa"
       name            "bluetooth-speaker "
       device          "bluealsa:HCI=hci0,DEV=xx:xx:xx:xx:xx:xx,PROFILE=a2dp"   #Evtl. hier noch die Addr. für Bluetooth anpassen... wenn nötig
       mixer_type      "software"
}
#
filesystem_charset              "UTF-8"
id3v1_encoding                  "UTF-8"

Jetzt muss der Dienst mpd neu gestartet werden

root@raspberrypi:~# invoke-rc.d mpd restart

Nun könnt Ihr schon mal auf der Shell mit mpc ein wenig testen.

Mal alles einlesen zBsp. vom USB-Stick

root@raspberrypi:~# mpc update
..
....
.....

Anzeigen lassen, was alles so drauf ist.

root@raspberrypi:~# mpc listall
AC_DC/AC-DC - Highway To Hell(live).mp3
...
Hier sollten dann
so einige MP3s
die auf dem USB-Stick sind ... auftauchen
...
Van Helen/1982 Diver Down/02 Hang 'Em High.mp3

Und nun mal was abspielen ⇒ Let's ROCK! :!:

root@raspberrypi:~# mpc play
AC/DC - Highway to Hell (live)
[playing] #3/3722   0:00/5:40 (0%)
volume: 65%   repeat: off   random: off   single: off   consume: off

Und nun noch testen, ob man auch die Lautstärke ändern kann. Das Kommando wird auch von dem RaspiPlayer verwendet. 65% bei AC-DC ist eindeutig zu wenig, wenn man schon mal auf einem Konzert von denen war. Rock'n Roll

root@raspberrypi:~# mpc volume 100
AC/DC - Highway to Hell (live)
[playing] #3/3722   2:40/5:40 (47%)
volume:100%   repeat: off   random: off   single: off   consume: off

So, nun könnt ihr den RaspiPlayer starten - und Spaß damit haben.
Ich habe es zum Leid meiner Frau - gleich mal im Auto probiert.

Radiosender

mpc quick tut

Eigene Playlisten für Alben anlegen, bzw löschen. Diese werden unter /var/lib/mpd/playlists gespeichert und können dann über den RaspiPlayer aufgerufen werden (das grüne Ordnersymbol klicken).

# mpc playlist                  => wenn hier was angezeigt wird...
# mpc clear                     => mal schnell aufräumen
# mpc playlist                  => zeigt nun nichts mehr an

# mpc ls | mpc add              => lädt alles in die leere Playlist
# mpc save all                  => speichert die Playlist all.m3u

    oder

# mpc ls | grep ACDC | mpd add  => lädt ACDC in die leere Playlist
# mpc save ACDC                 => speichert die Playlist ACDC.m3u

    oder
    
# mpc ls | grep Lyny | mpd add  => lädt Lynyrd Skynyrdn die leere Playlist
# mpc save Lynyrd_Skynyrd       => speichert die Playlist Lynyrd_Skynyrd.m3u


    Löschen
    
# mpc rm all                    => löscht die Playlist all.m3u

Quellen

Aussichten

Damit das Teil dann an 12V im Auto geht, habe ich derzeit folgende Bauelemente im Sinn:
Das sollte normal reichen

Aber wenn man schon baut… 3A sind besser als 2A ;)

Das Programm RaspiPlayer anpassen, dass man Musikstücke suchen und diese dann abspielen kann.

  • Suchmaske für Titel/Interpret-Suche
  • Auswahl der Suchergebnisse
  • Und Abspielfunktion dieser Auswahl

Aussichten => Suchmaske

Die Änderung am RaspiPlayer zum Suchen nach Musikstücken wurde umgesetzt. Den Code könnt Ihr unter
https://github.com/raiserle/RaspiPlayer herunterladen und wie mit der alten RaspiPlayer-Version verwenden.

Die Neuerungen im Überblick

Der Button für die Playlistumschaltung wurde umfunktioniert. Über diesen Button wird nun die Tastatur für die Suche eingeblendet.

Über die Tastatur könnt Ihr nun nach einem Musikstück suchen. Der * hat dabei eine Platzhalterfunktion.
Die Suche ist wie folgt aufgebaut:

  1. Das erste Token vor dem * wird als Suche auf den Dateinamen angewendet
  2. Jedes weitere Token wird auf das Ergebnis der Dateinamen mit einem & angewendet

Die Suchfunktion bzw. die Tastatur sind ggf. noch einmal anzupassen.
Ich habe zBsp. AC/DC - Thunderstruck auf dem USB-Stick. Die Suche danach gestaltet sich ein wenig schwierig, da der Tastatur der / fehlt.
Die Suche sieht dann so aus: AC*AC*DC*Thunder

  1. Alle MP3s mit AC im Dateinamen werden gesucht
  2. In den Ergebnissen muss im Text AC und DC und Thunder vorkommen.

Das Ergebnis ist:

  1. AC/DC - Thunderstruck
  2. AC/DC - Got some Rock & Roll Thunder


Mit dem RETURN-Button bestätigt Ihr die Suche. Die Tastatur kann nur über den RETURN-Button geschlossen werden. Soll nichts gesucht werden, einfach nichts eintippen und blos den RETURN klicken.

Das Suchergebnis kann dann wie folgt aussehen.

Wählt über UP oder DOWN den Song aus und bestätigt dies mit OK. Der Song wird nun in die aktuelle Playliste eingefügt und abgespielt.
Die Playlisten bleiben dabei unverändert, sie werden nicht gespeichert.

raspberry/mp3-player.txt · Zuletzt geändert: 2020/08/23 19:32 von raiser