====== 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 [[fedora:aplikacje:rsgain|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