Spis treści

moode Audio Player

Dlaczego zamiast odtwarzacza CD?

Configure

Library

Audio

Network

System

Renderers

Peripherals

MPD

CamillaDSP

Multiroom Audio

Clock radio settings

Input Select

Inne

Konwersja i dzielenie pliku .ape lub .flac na pliki .flac

Wymogiem jest posiadanie do pliku .ape lub .flac pliku .cue z informacją o poszczególnych ścieżkach płyty.

shnsplit -f Kitaro-Silk_Road_Suite.cue -t "%n %t" -o flac Kitaro-Silk_Road_Suite.ape
shnsplit -f Kitaro-Silk_Road_Suite.cue -t "%n %t" -o flac Kitaro-Silk_Road_Suite.flac

Można też użyć gwiazdek i dodać katalog wyjściowy np out, ale uprzednio taki katalog musi być utworzony.

shnsplit -f *.cue -t "%n %t" -d out -o flac *.flac

Ponieważ w niektórych tytułach utworów pojawiają się niedozwolone znaki dla nazw plików jeszcze lepsze rozwiązanie to:

shnsplit -f *.cue -t "%n" -d out -o flac *.flac && cd out && cuetag.sh ../*.cue *.flac

Pliki są tylko numerowane ścieżką a tagowanie wykonane jest osobno poleceniem cuetag.sh.

Jeżeli shnsplit tworzy kilkusekundowy plik 00 to można użyć:

shnsplit -f *.cue -t "%n" -d out -o flac *.flac && cd out && rm -f 00.flac && cuetag.sh ../*.cue *.flac

Automatyczne odtwarzanie playlisty po uruchomieniu

sudo nano /etc/rc.local

dopisać przed exit 0:

# Autoplay playlist after boot (random + consume)
(
  sleep 10
  mpc clear
  mpc load "Muzyczka"
  mpc shuffle
  mpc random on
  mpc consume on
  mpc play
) &

Uruchomienie odpowiedniej playlisty w zależności od pory dnia

#Autoplay playlist after boot (random + consume)
(
  sleep 30
 
  HOUR=$(date +%H)
 
  if [ "$HOUR" -lt 12 ]; then
    PLAYLIST="Rano"
  elif [ "$HOUR" -lt 18 ]; then
    PLAYLIST="Popoludnie"
  else
    PLAYLIST="Wieczor"
  fi
 
  mpc clear
  echo "$PLAYLIST" > /tmp/current_playlist.txt
 
  # Próba załadowania wybranej playlisty. Jeśli się nie uda, ładuje zapasową "Muzyczka"
  if mpc load "$PLAYLIST" > /dev/null 2>&1; then
    echo "$PLAYLIST" > /tmp/current_playlist.txt
  else
    mpc load "Muzyczka"
    echo "Muzyczka" > /tmp/current_playlist.txt
  fi
 
  chmod 666 /tmp/current_playlist.txt
  mpc shuffle
  mpc consume on
  mpc play
) &

O czym musisz pamiętać?

Odpalenie odbiornika podczerwieni do pilota

Wykonane na przykładzie pilota od wzmacniacza Yamaha AX-397. Wykorzystałem przyciski od kontroli magnetofonu którego nie posiadam. Symbol pilota RAX15(WF67620).

Utworzenie urządzenia /dev/lirc0.

sudo nano /boot/firmware/config.txt

Jeżeli używasz nakładkę DAC zgodną z HiFiBerry dodajemy:

# Włączenie odbiornika IR na GPIO 26 w przypadku użycia HiFiBerry
dtoverlay=gpio-ir,gpio_pin=26

Następnie restart maliny:

sudo reboot

Sprawdzamy czy powstało urządzenie /dev/lirc0

ls -l /dev/lirc*

Sprawdzamy czy dioda coś odbiera gdy strzelamy do niej z pilota:

sudo ir-ctl -d /dev/lirc0 -r -1 -v

Jeżeli nie to walczymy z odpowiednim ustawieniem gpio_pin=XX. Jeżeli tak to instalujemy dwa pakiety:

sudo apt install -y v4l-utils ir-keytable

Uruchom polecenie:

sudo ir-keytable -p nec -t

W moim przypadku otrzymałem wynik:

Protocols changed to nec 
Testing events. Please, press CTRL-C to abort.
1037.356020: lirc protocol(nec): scancode = 0x7a04
1037.356060: event type EV_MSC(0x04): scancode = 0x7a04
1037.356060: event type EV_KEY(0x01) key_down: KEY_MEDIA(0x00e2)
1037.356060: event type EV_SYN(0x00).
1037.408071: lirc protocol(nec): scancode = 0x7a04 repeat
1037.408107: event type EV_MSC(0x04): scancode = 0x7a04
1037.408107: event type EV_SYN(0x00).
1037.516071: lirc protocol(nec): scancode = 0x7a04 repeat
1037.516244: event type EV_MSC(0x04): scancode = 0x7a04
1037.516244: event type EV_SYN(0x00).
1037.624064: lirc protocol(nec): scancode = 0x7a04 repeat
1037.624102: event type EV_MSC(0x04): scancode = 0x7a04
1037.624102: event type EV_SYN(0x00).
1037.756051: event type EV_KEY(0x01) key_up: KEY_MEDIA(0x00e2)
1037.756051: event type EV_SYN(0x00).

Interesuje nas kod 0x7a04. To jest kod mojego przycisku na pilocie. Sprawdzamy wszystkie pozostałe interesujące nas przyciski i wpisujemy do pliku:

sudo nano /etc/rc_keymaps/moj_pilot.toml

Z treścią:

[[protocols]]
name = "moj_pilot"
protocol = "nec"
 
[protocols.scancodes]
0x7a00 = "KEY_PLAY"
0x7a01 = "KEY_REWIND"
0x7a02 = "KEY_FASTFORWARD"
0x7a03 = "KEY_STOP"
0x7a04 = "KEY_MEDIA"
0x7a06 = "KEY_PAUSE"
0x7a07 = "KEY_PREVIOUSSONG"
0x7a40 = "KEY_NEXTSONG"

Następnie edytujemy plik:

sudo nano /etc/rc_maps.cfg

Na jego końcu dopisujemy:

*       *                        moj_pilot.toml

Po zapisaniu wykonujemy polecenie:

sudo ir-keytable -s rc0 -c -w /etc/rc_keymaps/moj_pilot.toml

Następnie edytujemy plik:

sudo nano /etc/triggerhappy/triggers.d/media.conf

Dopisujemy linie:

KEY_PLAY         1 /usr/bin/mpc play
KEY_REWIND       1 /usr/bin/mpc seek -10
KEY_FASTFORWARD  1 /usr/bin/mpc seek +10
KEY_STOP         1 /usr/bin/mpc stop
KEY_MEDIA        1 /usr/local/bin/next_playlist.sh
KEY_PAUSE        1 /usr/bin/mpc pause
KEY_PREVIOUSSONG 1 /usr/bin/mpc prev
KEY_NEXTSONG     1 /usr/bin/mpc next

Aby zaczęło działać w interfejsie moode audio w zakładce Configure –> Pherypherials zaznaczamy opcję Triggerhappy.

Dla pewności możemy wykonać polecenie:

sudo systemctl restart triggerhappy

Od tego momentu pilot powinien sterować mpc.

Przycisk MEDIA

W moim przypadku przycisk MEDIA służy do żaglowania playlistami Rano, Poludnie, Wieczor i Muzyczka. Aby to działało tworzymy plik:

sudo nano /usr/local/bin/next_playlist.sh

Wpisujemy zawartość:

#!/bin/bash
 
if [ -f /tmp/current_playlist.txt ]; then
    CURRENT=$(cat /tmp/current_playlist.txt)
else
    CURRENT="Muzyczka"
fi
 
# Określenie następnej playlisty w kolejce
case "$CURRENT" in
    "Rano")       NEXT="Popoludnie" ;;
    "Popoludnie") NEXT="Wieczor" ;;
    "Wieczor")    NEXT="Muzyczka" ;;
    *)            NEXT="Rano" ;;
esac
 
# Sprawdzenie czy nowa playlista istnieje w MPD. 
# Jeśli nie istnieje, wraca do zapasowej "Muzyczka".
mpc clear
if mpc load "$NEXT" > /dev/null 2>&1; then
    TARGET="$NEXT"
else
    mpc load "Muzyczka"
    TARGET="Muzyczka"
fi
 
# Zapisanie faktycznie załadowanej playlisty i uruchomienie
echo "$TARGET" > /tmp/current_playlist.txt
chmod 666 /tmp/current_playlist.txt
mpc shuffle
mpc consume on
mpc play

Nadajemy odpowiednie atrybuty dla pliku:

sudo chmod 755 /usr/local/bin/next_playlist.sh