ncmpcpp

cmus und mocp sind ja ganz ok, aber ncmpcpp wollte ich doch mal anschauen…also gesagt, getan.

[Edit]: habe den Post über die Tage einige male revidiert bzw. ergänzt…

mpd

mpd ist schnell eingerichtet. Da nur ich mit meinem Desktop arbeite, habe ich es in der globalen Config gemacht (lässt sich aber natürlich auch per User unter ~/.config/mpd einrichten). In der globalen Config unter /etc/mpd.conf hab ich eigentlich nur zwei Zeilen angepasst – das Directory mit der Musiklibrary und das Directory für Playlists:

Damit die Visualisierung funktioniert, muss noch folgender Schnipsel ergänzt werden

normalization

Kann zwar noch nicht bestätigen, da noch nicht so beachtet, aber diese Option scheint mir sinnvoll:

Wenn das dasselbe wie bei wodim ist, dann will ich es ganz klar.

Dann den Service durchstarten, erledigt.

mpc

mpc ist ja eigentlich der “Standard”-Client für mpd, und ich muss gestehen, der allein ist schon geil. mpd (zumindest bei Debian) hat autocompletion, also geh ich nicht auf die Details ein. Jedenfalls weiss ich jetzt schon, dass mpc bei mir in gewissen Scripten zum Einsatz kommen wird (starte Playlist xy täglich um 8 Uhr etc…).
Falls via Client (egal was für einer) die Lautstärke nicht gesetzt werden kann, muss beim Output lediglich die Zeile mixer_type “software” ergänzt werden. Notiers jetzt hier einfach noch, man weiss ja nie…

ncmpcpp

Mit ncmpcpp (ncurses music player client plus plus) hab ich mich anfänglich etwas schwerer getan (beim Namen hab ich immer noch Mühe…). Wenn man’s dann aber mal geschnallt hat, ist es ein echt geiles Tool.

Beim ersten Start wird man wohl mal die Library updaten wollen – dazu drückt man einfach “u”. Oben rechts wird dies auch durch [U] angezeigt. Je nach Grösse der Library kann das schon etwas dauern.

Es gibt mehrere “Fenster” in ncmpcpp, welche mit den Tasten 1 – 8 ausgewählt werden können. Eines der ersten Dinger, die ich gemacht hab war ein Keybinding für die Taste 9 zu setzen, und zwar für die Hilfe. Das ist für einen Anfänger sehr hilfreich. Dies ist zwar nicht zwingend nötig – F1 ist der default für die Hilfe. Ich habe aber die F1-Taste bei mir komplett deaktiviert, weil sie nervt 😉
Beispiel-Configs findet man übrigens unter /usr/share/doc/ncmpcpp/examples. Am besten kopiert man die zu Beginn mal nach ~/.ncmpcpp.

zudem – um sich einfach zuhause zu fühlen – hab ich noch diese zwei Bindings ergänzt

Basics

Views

1: Playlist
2: Browse Library
3: Search Engine
4: Media Library
5: Playlist Editor
6: Tag Editor
7: Outputs
8: Music visualizer

mit ‘a’ kann man Lieder oder ganze Alben zur Playlist hinzufügen, Playlists können mit ‘S’ gespeichert werden.

weitere Steuerung (defaults)

q – Quit
f – vorwärts suchen
b – rückwärts suchen
m – Track nach oben in der Playlist schieben
n – Track weiter nach unten in der Playlist schieben
a – Track (oder Album, Artist,…) zur Playlist hinzufügen
del – Track aus Playlist löschen
S – Playlist speichern
e – Auswahl im Tag-Editor bearbeiten
\ – Zwischen klassicher und alternativer Ansicht wechseln
P – Display Mode wechseln (config value: playlist_display_mode)
# – Bitrate des Files anzeigen
i – Song Informationen anzeigen
I – Künstler Informationen anzeigen
L – Shuffle between available lyric databases
l – Song-Text anzeigen / wieder verstecken
> – nächster Track
< – vorheriger Track
p – Play/Pause
+ – Lautstärke 2% erhöhen
– Lautstärke 2% verringern
= – Uhr anzeigen (tmux-like)

Im Netz findet man aber genügend Cheat-Sheets und Beschreibungen, bringts jetzt nicht, alles zu erklären. (Eigentlich hab ich’s ja nur für mich gepostet, solange ich die Keybindings noch nicht voll ‘intus’ hab…)

Modes

r – repeat mode [r—–]
z – random mode [-z—-]
y – single mode [–s—] (Wiederholt den aktuellen Track, wenn das Ende erreicht wurde)
R – consume mode [—c–] (entfernt den aktuellen Track von der Playlist, wenn das Ende erreicht wurde)
x – crossfade mode [—-x-]

und so sieht dann etwa der Visualizer (8) aus (im Screenshot mit visualizer_in_stereo = no, erst danach umgestellt). Den Stil der Visualisierung kann man übrigens mit der Leertaste “on the fly” ändern:

Tagging

Was mir auch sehr gut gefällt, dass ein ziemlich brauchbarer Tag Editor (6) bei ncmpcpp mitkommt. Nur leider hat der beim Ersten Versuch nicht wirklich was schreiben wollen – es gab nur ‘error whilte writing tags….file not found). Damit das ganze klappt, muss man ncmpcpp in der Config das mpd-Music-Directory mitgeben, danach klappts tadellos:

Theming

ncmpcpp lässt sich beliebig anpassen, darauf gehe ich jetzt aber nicht ein – hier findet man genügend Beispiele auf DotShare und Github…

Sonos

Und endlich habe ich eine Möglichkeit, den Sound meines Rechners auf die Sonos zu streamen! (ja, ich weiss es gibt z.B. Sonos-Controller unofficial, der auch ganz gut klappt, aber eben mit GUI)…
Dazu muss man in mpd einen neuen Output für einen HTTP-Stream definieren:

oder via Shoutcast (ich hab das ganze auch via Icecast probiert, konnte aber keinen Unterschied feststellen):

Ich habe die erste Variante – via HTTP-Stream – verwendet, denn ich wüsste nicht, wie man bei Sonos ein Passwort mitgeben könnte. (wie erwähnt konnte ich keinen Unterschied mit Icecast feststellen, also dann doch gleich mit der “in-house” Lösung….

Wenn das alles erledigt ist, muss man im Sonos-Programm (wohl oder übel in der Desktopversion der Software, da es nur dort möglich ist) eine neue Radiostation hinzufügen. Na gut, dann hab ich das halt schnell auf der Kiste vom Vater gemacht:

Und nun kann man die eigene Playlist via ncmpcpp auf die Sonos streamen. Damit’s aber nicht auf dem Rechner und dem Sonos abgespielt wird, muss der ALSA-Output deaktiviert und der HTTP-Stream aktiviert werden. Das macht man, indem man den entsprechenden Output markiert und Enter drückt..

Wenn ich einen Track wechsle, hat es eine kurze (mehrere Sekunden…) Verzögerung (Anzeige in ncmpcpp ist schneller als Sonos), aber damit kann ich gut leben. Vielleicht auch einfach ein lokales WLAN-Problem, das nix damit zu tun hat… Das ganze konnte ich jedoch in mpd mit einem buffer von 0% etwas verbessern:

Probleme

Das einzige, das ich nicht via ncmpcpp machen kann ist die Lautstärke anpassen. Hierzu hab ich aber bisher noch keine Lösung, verwende derzeit einfach den Sonos-Controller-unofficial oder die Android-App (unter Android ist übrigens MPDroid zu empfehlen…). Ist jetzt nicht ganz so tragisch, da der Stream ja sowieso irgendwo “gestartet” werden muss. Schön wär’s aber trotzdem direkt via ncmpcpp (Volume n/a kann man durch ein dummy-Gerät (mixer_type “null”) beheben, aber das ist dann wirklich halt nur ein dummy und das bringt ja auch nicht viel…)

Notifications

Anfangs hab ich mir mit notify-send eine Notiication mit einem 5 Sekunden Timeout gesendet, was grad läuft. Das klappt auch ganz gut, jedoch wenn ich ne Weile nicht am Rechner bin und dieser gelockt ist, stauen sich die Meldungen an (nehme an, dass das bewusst so ist, weil ja niemand die Notifications sieht, wenn der Rechner gelockt ist):

 

Da ich den Status aber sowieso in der i3bar anzeige, ist es eigentlich auch sinnlos, deswegen hab ich die Notification deaktiviert…