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
sudo dnf install mpd
sudo usermod -aG audio mpd
sudo gpasswd -d nazwa_użytkownika audio
# Ś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" }
sudo dnf remove pipewire sudo dnf remove pulseaudio
defaults.ctl.card 1 defaults.pcm.card 1
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
Po uruchomieniu systemu operacyjnego dumyślny poziom głośności ustawia usługa alsa-restore o ile została zainstalowana i odblokowana.
alsa-restore
amixer set Master 100% sudo alsactl store
sudo systemctl enabled mpd sudo systemctl start mpd sudo systemctl status mpd
sudo dnf install mpc
sudo dnf install ncmpcpp
Użycie
ncmpcpp -h adres_serwera -p 6600
Jeżeli serwer nie odtwarza plików .ogg instalujemy pakiet vorbis-tools poleceniem:
.ogg
vorbis-tools
sudo dnf install vorbis-tools
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:
sudo
su -
alsamixer
alsactl store
mkdir -p ~/.config/mpd nano ~/.config/mpd/mpd.conf
Przykład konfiguracji mpd.conf:
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
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:
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
aplay -l
**** 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
aplay -L
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
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.
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" }
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ę.
auto_format „yes”
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.