Narzędzia użytkownika

Narzędzia witryny


pl:audio:moode

moode Audio Player

Dlaczego zamiast odtwarzacza CD?

  • Mniejsze fizycznie zajmowanie miejsca zamiast nośników CD.
  • Jeżeli mamy w domu centralny serwer NAS z plikami flac każdy z odtwarzaczy moode audio ma dostęp do zbiorów flac i może je odtwarzać.
  • Jeżeli zależmy nam na lepszej jakości zmieniamy tylko moduł DAC.

Configure

Library

Audio

  • Output device: 1:HiFiBerry DAC+
  • Volume type: Fixed (0db)
  • Device ready wait: 1 min (default)
  • Named I2S device: HiFiBerry DAC+
  • or DT overlay: None
  • Driver options: None available
  • Integrated audio: Kernel mode (default)
  • ReplayGain: Auto przy czym warunkiem działania opcji są odpowiednie tagi w plikach audio. Patrz rsgain.

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ć?

  • Nazwy playlist: Upewnij się, że masz w moOde stworzone i zapisane dokładnie takie playlisty, jakich nazwy wpiszesz w skrypcie (np. Rano, Popoludnie, Wieczor – uważaj na wielkość liter).
  • Poprawny czas na Raspberry Pi: Aby ten skrypt działał prawidłowo, malinka musi znać aktualną godzinę. Jeśli jest podłączona do sieci/Internetu, czas ustawi się automatycznie przez NTP po uruchomieniu. Stąd opóźnienie sleep 10 jest bardzo ważne, by pobrać prawidłową godzinę przed wykonaniem skryptu.

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
pl/audio/moode.txt · ostatnio zmienione: przez sindap

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki