====== The Music Player Daemon ====== Jeżeli system będzie działać tylko jako serwer MPD to środowisko graficzne możemy wyłączyć. sudo systemctl set-default multi-user.target Sprawdzić możemy poleceniem: sudo systemctl get-default Powrócić do wersji graficznej możemy: sudo systemctl set-default graphical.target ===== Instalacja ===== ==== Instalacja serwisu mpd ==== sudo dnf install mpd ==== Dodanie użytkownika mpd do grupy audio ==== sudo usermod -aG audio mpd ==== Usunięcie użytkownika z grupy audio ==== sudo gpasswd -d nazwa_użytkownika audio ===== Uruchomienie serwera mpd jako usługi systemowej ===== ==== Edycja pliku /etc/mpd.conf ==== # Ścieżka do katalogu, w którym MPD przechowuje pliki muzyczne. music_directory "/var/lib/mpd/music" # Ścieżka do katalogu, w którym MPD przechowuje listy odtwarzania. playlist_directory "/var/lib/mpd/playlists" # Lokalizacja pliku bazy danych, który MPD używa do przechowywania informacji o dostępnych plikach muzycznych. db_file "/var/lib/mpd/mpd.db" # Ścieżka do pliku logów, w którym MPD zapisuje swoje komunikaty dotyczące błędów i działania. log_file "/var/l_g/mpd/mpd.log" # Ścieżka do pliku stanu, w którym MPD zapisuje informacje o aktualnym stanie odtwarzania. state_file "/var/lib/mpd/mpdstate" # Użytkownik systemowy, pod którym działa MPD. user "mpd" # Grupa systemowa, do której należy użytkownik MPD. group "audio" # Adres IP, na którym MPD nasłuchuje na połączenia z klientami. bind_to_address "0.0.0.0" # Port, na którym MPD nasłuchuje połączeń. port "6600" # Umożliwia automatyczne wykrywanie MPD w sieci przy użyciu zeroconf (np. Bonjour). zeroconf_enabled "yes" # Nazwa, pod którą MPD będzie wykrywany w sieci. zeroconf_name "Music Player @ %h" # Sekcja definiująca wtyczkę wejściową, która pozwala na odtwarzanie strumieni z internetu. input { plugin "curl" } # Kodowanie znaków, które MPD używa do obsługi plików w systemie. filesystem_charset "UTF-8" # Sekcja definiująca konfigurację wyjścia audio. audio_output { # Typ wyjścia audio (w tym przypadku ALSA, co jest standardowym systemem audio w Linuksie) type "alsa" # Nazwa wyjścia, która może być używana w klientach MPD. name "My ALSA Device" # Urządzenie audio, które MPD powinien używać (wskazuje na kartę dźwiękową i urządzenie) device "hw:1,0" # Ustawienie dotyczące rodzaju miksera (sprzętowy, który kontroluje rzeczywistą głośność na urządzeniu) mixer_type "hardware" # Jeżeli nie chcesz kontrolować głośności to mixer_type "none" # Nazwa kontrolera głośności, który MPD będzie używał do sterowania poziomem głośności mixer_control "Master" # Jeżeli podstawowymi plikami audio będą pliki flac, ogg i mp3 to dop "no" } ==== Pozbyć się pulseaudio i pipewire ==== sudo dnf remove pipewire sudo dnf remove pulseaudio ==== Konfiguracja domyślnej karty ALSA w /etc/asound.conf ==== defaults.ctl.card 1 defaults.pcm.card 1 * defaults.ctl.card 1 – Definiuje domyślną kartę dźwiękową używaną do kontroli miksera (czyli ustawienia głośności, wyciszania i innych parametrów dźwiękowych). Oznacza to, że gdy ALSA będzie musiała kontrolować ustawienia miksera dźwięku, będzie używać karty numer 1. * defaults.pcm.card 1 – Ustawia domyślną kartę dźwiękową używaną do odtwarzania i nagrywania dźwięku, zwaną PCM (Pulse Code Modulation). Oznacza to, że wszystkie programy korzystające z ALSA będą domyślnie wysyłać dźwięk do karty numer 1 (w systemie może być więcej niż jedna karta dźwiękowa). Można również użyć formatu zapisu jak poniżej pcm.!default { type hw card 1 } ctl.!default { type hw card 1 } Przydatne polecenia do uzyskania informacji o karcie lspci | grep -i audio sudo lspci -v | grep -A7 -i audio aplay -l lsmod | grep snd ==== Ustawienie domyślnego poziomu głośności ==== Po uruchomieniu systemu operacyjnego dumyślny poziom głośności ustawia usługa ''alsa-restore'' o ile została zainstalowana i odblokowana. amixer set Master 100% sudo alsactl store ==== Uruchomienie usługi ==== sudo systemctl enabled mpd sudo systemctl start mpd sudo systemctl status mpd ==== Instlalcja prostego klienta mpd ==== sudo dnf install mpc ==== Instalacja bardziej przyjaznego klienta mpd ==== sudo dnf install ncmpcpp Użycie ncmpcpp -h adres_serwera -p 6600 ==== Obsługa plików OGG ==== Jeżeli serwer nie odtwarza plików ''.ogg'' instalujemy pakiet ''vorbis-tools'' poleceniem: sudo dnf install vorbis-tools ===== Konfiguracja globalna ===== W systemie warto ustawić domyślny poziom głośności po starcie systemu. Logujemy się na konto root. Nie korzystamy z ''sudo'' czy ''su -''. Po zalogowaniu się ustawiamy poziom np w ''alsamixer''. Po ustawieniu żądanego poziomu zapisujemy poleceniem: alsactl store ===== Konfiguracja użytkownika ===== mkdir -p ~/.config/mpd nano ~/.config/mpd/mpd.conf Przykład konfiguracji ''mpd.conf'': # Muzyka - ustaw ścieżkę do twojej kolekcji muzycznej music_directory "~/Muzyka" # Katalog na pliki bazy danych MPD db_file "~/.config/mpd/mpd.db" # Katalog na plik playout socket log_file "~/.config/mpd/mpd.log" # Katalog na plik z kolejką odtwarzania state_file "~/.config/mpd/mpd.state" # Katalog na plik z informacją o głośności sticker_file "~/.config/mpd/sticker.sql" # Adres, na którym MPD będzie działał bind_to_address "0.0.0.0" port "6600" # Ustawienia dla katy dźwiękowej na płycie terminala WYSE audio_output { type "alsa" name "My ALSA Device" device "hw:1,0" # Numer kolejny karty mixer_type "hardware" # Typ miksera mixer_control "Master" # Który suwak } # Ustawienia dla wyjścia HDMI na płycie terminala WYSE audio_output { type "alsa" name "HDMI Audio" device "plughw:0,3" # Dopasuj numer karty i urządzenia mixer_type "none" # "hardware" lub możesz użyć "none", jeśli chcesz pełną kontrolę } Utwórz katalogi MPD mkdir -p ~/.config/mpd/playlists touch ~/.config/mpd/mpd.db ~/.config/mpd/mod.log ~/.config/mpd/mod.state ~/.config/mpd/sticker.sql Skonfiguruj autostart usługi MPD systemctl --user enable --now mpd Uruchom usługę MPD systemctl --user start mpd Sprawdź, czy MPD jest aktywny systemctl --user status mpd Do odtwarzania utworów mamy do dyspozycji klientów mpc, ncmpcpp lub graficzny Cantata. Jeżeli mamy problem z połączeniem sprawdź firewall: Sprawdzamy nazwy aktywnych stref: sudo firewall-cmd --get-active-zones Przykładowy wynik działania polecenia i w tym wypadku port usługi mpd musimy dodać do strefy ''home'': home interfaces: wlo1 public (default) Dodanie usługi do strefy home i restart firewall: sudo firewall-cmd --zone=home --permanent --add-service=mpd sudo firewall-cmd --reload Sprawdzenie reguł strefy ''home'': sudo firewall-cmd --zone=home --list-all W wyniku działania polecenia otrzymujemy: home (active) target: default ingress-priority: 0 egress-priority: 0 icmp-block-inversion: no interfaces: wlo1 sources: services: dhcpv6-client mdns mpd samba-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: ===== Inne ustawienia ===== ==== Sprawdzenie aktualnie używanych modułów audio ==== lsmod | grep snd Przykładowy wynik działania polecenia: snd_hda_codec_realtek 208896 1 snd_hda_codec_generic 131072 1 snd_hda_codec_realtek snd_hda_codec_hdmi 102400 1 snd_hda_scodec_component 20480 1 snd_hda_codec_realtek snd_hda_intel 69632 2 snd_intel_dspcfg 40960 1 snd_hda_intel snd_intel_sdw_acpi 16384 1 snd_intel_dspcfg snd_usb_audio 598016 1 snd_usbmidi_lib 57344 1 snd_usb_audio snd_hda_codec 225280 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek snd_ump 40960 1 snd_usb_audio snd_rawmidi 57344 2 snd_usbmidi_lib,snd_ump snd_hda_core 155648 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek mc 90112 1 snd_usb_audio snd_hwdep 20480 2 snd_usb_audio,snd_hda_codec snd_seq 135168 0 snd_seq_device 16384 3 snd_seq,snd_ump,snd_rawmidi snd_pcm 196608 5 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core snd_timer 53248 2 snd_seq,snd_pcm snd 163840 20 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_ump,snd_pcm,snd_rawmidi soundcore 16384 1 snd ==== Lista wykrytych urządzeń audio ==== aplay -l Przykładowy wynik działania polecenia: **** List of PLAYBACK Hardware Devices **** card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [Philips FTV] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: SB [HDA ATI SB], device 0: ALC269VB Analog [ALC269VB Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: U0x262a0x9023 [USB Device 0x262a:0x9023], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: U0x262a0x9023 [USB Device 0x262a:0x9023], device 1: USB Audio [USB Audio #1] Subdevices: 1/1 Subdevice #0: subdevice #0 ===== Wyświetlenie dostępnych wyjść urządzeń audio ===== aplay -L Przykładowy wynik działania polecenia: null Discard all samples (playback) or generate zero samples (capture) pipewire PipeWire Sound Server hdmi:CARD=Generic,DEV=0 HD-Audio Generic, Philips FTV HDMI Audio Output sysdefault:CARD=SB HDA ATI SB, ALC269VB Analog Default Audio Device front:CARD=SB,DEV=0 HDA ATI SB, ALC269VB Analog Front output / input surround21:CARD=SB,DEV=0 HDA ATI SB, ALC269VB Analog 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=SB,DEV=0 HDA ATI SB, ALC269VB Analog 4.0 Surround output to Front and Rear speakers surround41:CARD=SB,DEV=0 HDA ATI SB, ALC269VB Analog 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=SB,DEV=0 HDA ATI SB, ALC269VB Analog 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=SB,DEV=0 HDA ATI SB, ALC269VB Analog 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=SB,DEV=0 HDA ATI SB, ALC269VB Analog 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers sysdefault:CARD=U0x262a0x9023 USB Device 0x262a:0x9023, USB Audio Default Audio Device front:CARD=U0x262a0x9023,DEV=0 USB Device 0x262a:0x9023, USB Audio Front output / input surround21:CARD=U0x262a0x9023,DEV=0 USB Device 0x262a:0x9023, USB Audio 2.1 Surround output to Front and Subwoofer speakers surround40:CARD=U0x262a0x9023,DEV=0 USB Device 0x262a:0x9023, USB Audio 4.0 Surround output to Front and Rear speakers surround41:CARD=U0x262a0x9023,DEV=0 USB Device 0x262a:0x9023, USB Audio 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=U0x262a0x9023,DEV=0 USB Device 0x262a:0x9023, USB Audio 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=U0x262a0x9023,DEV=0 USB Device 0x262a:0x9023, USB Audio 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=U0x262a0x9023,DEV=0 USB Device 0x262a:0x9023, USB Audio 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=U0x262a0x9023,DEV=0 USB Device 0x262a:0x9023, USB Audio IEC958 (S/PDIF) Digital Audio Output iec958:CARD=U0x262a0x9023,DEV=1 USB Device 0x262a:0x9023, USB Audio #1 IEC958 (S/PDIF) Digital Audio Output ===== Ustawienie kolejnego numeru urządzenia audio za pomocą opcji ładowania modułu ===== ==== Edycja pliku /etc/modprobe.d/snd-usb-audio.conf ==== options snd-usb-audio index=2 Jeżeli pliku nie ma to go tworzymy. W powyższym urządzenie audio które korzysta z modułu snd-usb-audio zawsze powinno powinno mieć przydzielony numer 2. Jeżeli posiadamy więcej urządzeń audio podłączonych do portów USB konfiguracja może wyglądać następująco: # Texas Instruments PCM2704C stereo audio DAC 08bb:27c4 # SAVITECH Corp. SA9023 audio controller 262a:9023 options snd_usb_audio index=4,5 vid=0x08bb,0x262a pid=0x27c4,0x9023 Jak widać w zakomentowanych liniach pierwszy to DAC oparty o chipset PCM2704C a kolejny to SA9023. W tym przykładzie PCM2704C otrzyma numer 4 a SA9023 numer 5. Opcje te muszą być wprowadzone w jednej linii dla obu urządzeń ponieważ gdybyśmy zrobili to oddzielnie system przydzieli określone ustawienia tylko pierwszemu urządzeniu a kolejne otrzyma ustawienia domyślne. ===== Optymalne ustawienia dla DAC PCM2704 ===== audio_output { type "alsa" name "DAC PCM2704" device "hw:2,0" format "44100:16:2" mixer_type "none" auto_resample "no" auto_channels "no" auto_format "yes" } - **auto_resample "no"** * **Opis:** Wyłącza automatyczne resamplowanie (zmianę częstotliwości próbkowania) przez MPD. * **Efekt:** MPD przesyła dane w ich oryginalnej częstotliwości próbkowania. Jeśli plik audio ma 44.1 kHz, dane będą przesyłane z tą samą częstotliwością, bez dostosowania do specyfikacji urządzenia. * **Zastosowanie:** Ważne dla uzyskania bit-perfect, jeśli DAC obsługuje natywne próbkowanie. Wyłączenie resamplowania pozwala uniknąć potencjalnej degradacji jakości dźwięku. - **auto_channels "no"** * **Opis:** Wyłącza automatyczne dostosowanie liczby kanałów (mono/stereo). * **Efekt:** Jeśli plik audio jest mono (1 kanał), MPD nie będzie automatycznie przekształcać go w stereo (2 kanały) lub odwrotnie. Wysyłane dane zachowają oryginalną liczbę kanałów. * **Zastosowanie:** Ważne, jeśli chcesz uniknąć niepotrzebnych zmian w danych audio, które mogą wpłynąć na jakość odtwarzania. - **auto_format "no"** * **Opis:** Wyłącza automatyczne dostosowanie formatu danych (bit-depth i częstotliwości próbkowania) do urządzenia. * **Efekt:** MPD będzie wysyłać dane w oryginalnym formacie (np. 16-bit/44.1 kHz), bez konwersji do innego formatu akceptowanego przez DAC. * **Zastosowanie:** Przydatne w konfiguracjach, gdzie DAC wymaga danych w specyficznym formacie, aby uniknąć utraty jakości. ===== Optymalne ustawienia dla DAC SA9023 + ES9018K2M ===== audio_output { type "alsa" name "TILEAR D2-MINI" device "hw:5,0" format "44100:16:2" mixer_type "none" auto_resample "no" auto_channels "no" auto_format "yes" } Dlaczego ustawienia **44,1 kHz** i **16 bit** skoro DAC jest w stanie otworzyć pliki z parametrami **96 kHz** i **24 bit**? Standardowa płyta **Audio-CD** (Red Book) jest zapisywana w formacie **44,1 kHz** i **16 bit**. Aby uniknąć przekłamań pliki flac powinny być tworzone w takim samym formacie. Tym samym odtwarzanie również aby uniknąć przekłamań. Podnosząc sztucznie parametry wymusimy resampling nie uzyskując większej ilości danych. Zyskamy przekłamania informacji. Jeżeli jakimś cudem w naszej bibliotece z plikami flac znajdzie się plik o wyższych parametrach przykładowo **96 kHz** i **24 bit** co by wskazywało, że pochodzi z płyt danych np: **DVD-Audio, SACD, Blu-ray Audio** to w tym wypadku opcja ''auto_format "yes"'' załatwia sprawę. Tu też mamy odpowiedź czy jest sens podłączania DAC o lepszych parametrach niż **96 kHz** i **24 bit**? Nie. Nie mamy dostępu do źródła do lepszych parametrach. ===== Aplikacje klienckie na Android ===== * [[https://play.google.com/store/apps/details?id=org.gateshipone.malp&hl=pl|M.A.L.P.]] * [[https://play.google.com/store/apps/details?id=com.maximummpd&hl=pl|MaximumMPD]]