To jest stara wersja strony!
Spis treści
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
- 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
- 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
- asound.conf
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
- 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:
- snd-usb-audio.conf
# 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
- mpd.conf
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
- mpd.conf
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 44100 i 16bit skoro DAC jest w stanie otworzyć pliki z parametrami 96000 i 24bit? Standardowa płyta AUDIO-CD (Red Book) jest zapisywana w formacie 44100 i 16bit. Aby uniknąć przekłamań pliki flac powinny być tworzone w takim samym formacie. Tym samym odtwarzanie również aby uniknąć przekłamań.