Music Player Daemon

Arch Linux Türkiye Belgeleri sitesinden
Atla: kullan, ara


Konu başlıkları

mpd nedir?

mpd (Music Player Daemon) sunucu-istemci tarzı çalışan bir müzik oynatıcısıdır. mpd sistem servisi olarak arka planda çalışmakla birlikte, çalma listelerini müzik veritabanını çok az sistem kaynağı tüketerek yönetmektedir. mpd'yi kontrol için ayrı bir istemciye gereksinim duyulmaktadır. Daha detaylı bilgiye mpd web sitesinden ulaşabilirsiniz.

Kurulum

pacman kullanarak mpd'yi kurabilirsiniz:

# pacman -S mpd

mpd'yi yapılandırmak

Yapılandırma konusunda spesifik detaylara http://mpd.wikia.com/wiki/Configuration adresinden ulaşabilirsiniz.

Mpd'nin işleyiş prosedürü

  • mpd /etc/rc.conf dosyasında DAEMONS kısmında tanımlanarak çalıştırılabilir. (Açılışta çalıştırmak istemiyorsanız /etc/rc.d/mpd start komutu ile çalıştırabilirsiniz.)
  • Açılışta sistem servisleri root kullanıcı tarafından çalıştırıldığı için, mpd ilk olarak /etc/mpd.conf dosyasını okumaya çalışır.
  • mpd /etc/mpd.conf dosyasında user değişkenini okur ve root kullanıcısından bu kullanıcıya geçiş yapar.
  • Daha sonra /etc/mpd.conf dosyasında tanımlanan ayarları okur ve işleme koyar.

mpd.conf'da user değişkeni root dışında bir kullanıcıyı tanımlıyorsa, gerekli dizinler için yol (path) değerlerini "~" olarak kullanabilirsiniz. Yani /home/kullanıcıadı şeklinde uzunca yazmanıza gerek kalmamaktadır.

Tek kullanıcılı sistem için kurulum

  • Yetkili kullanıcı olarak (root), öncelikle /etc/mpd.conf dosyasının olup olmadığına bakın. Eğer var ise silin; öntanımlı mpd kurulumunda mpd yapılandırma dosyası mpd.conf.example ismiyle gelmektedir.
  • Örnek yapılandırma dosyasını /etc/mpd.conf olarak kopyalayın:
cp /etc/mpd.conf.example /etc/mpd.conf

Bazı dokümanlarda belirtildiğinin aksine, ev dizininizde mpd için yapılandırma dosyası bulundurmayın. Bu tür bir kullanım sorunlara yol açmaktadır. Eğer daha önce ev dizininizde .mpdconf dosyası oluşturmuşsanız silin. Bu işlem olası çakışmaları önlemek amacıyla yapılmaktadır. mpd'yi sistem servisi (DAEMON) olarak çalıştırdığınızda öncelikle /etc/mpd.conf'u okuyacaktır. Farklı bir yapılandırma dosyası kullanmak, mpd servis betiğini ya da herhangi bir açılış betiğini değiştirmenize neden olabileceği için zaman kaybından öteye gitmeyecektir. Ayrıca sistem servisi olarak çalıştırdığınızda, birden çok kullanıcılı bir sistemde merkezi bir yapı oluşturarak olası sorunları daha hızlıca giderebilirsiniz. Ayrıca mpd'nin root kullanıcısı tarafından çalıştırılmasından çekinmeyin, çünkü çalıştırıldıktan sonra tüm yetkileri, yapılandırma dosyasında tanımlanan kullanıcıya devredecektir.

Ses çıktısının düzgün çalışması için ses altyapısının ve ses seviyelerinin düzgün ayarlandığından emin olmalısınız. Sistemde ses açık olmasına rağmen ses alamıyorsanız, ~/.mpd/error dosyasını gözden geçirmenizde fayda vardır.

Ön bilgilerden sonra, yapılandırmayı şu şekilde gerçekleştirebilirsiniz. Yetkili kullanıcı (root) olarak /etc/mpd.conf dosyasını açın:

  • /etc/mpd.conf dosyasında, şu seçenekleri bulun ve aşağıdaki gibi değiştirin:
music_directory       "~/Music" # Bu dizin müzik dosyalarının durduğu dizini ifade eder
playlist_directory    "~/Playlists"
db_file               "~/.mpd/db"
log_file              "~/.mpd/log"
error_file            "~/.mpd/error"
pid_file              "~/.mpd/mpd.pid"
state_file            "~/.mpd/mpdstate"
user                  "mpd" (bu kullanıcıyı kendi kullanıcı adınız ile değiştirin)
bind_to_address       "127.0.0.1"
port                  "6600"
#connection_timeout   "60"
#max_playlist_length  "16384"
#filesystem_charset   "ISO-8859-1"
#id3v1_encoding       "ISO-8859-1"

Bu seçenekler genel ayarlardır. mpd bu ayarlarla sorunsuz çalışmaktadır. Ancak ekstra ve spesifik ayarları kullanmak/öğrenmek için mpd.conf.example dosyasını inceleyebilirsiniz.

  • Tanımladığınız kullanıcı adı ile sisteme giriş yaparak şu komutları verin:
  • Gerekli dizinleri oluşturun
$ mkdir ~/Playlists
$ mkdir ~/.mpd
  • pid dosyasını oluşturun
$ touch ~/.mpd/mpd.pid
  • mpd veritabanını oluşturun (Bu işlem arşivin genişliğine göre biraz zaman alabilir.):
$ mpd --create-db
  • İşlemleri tamamladıktan sonra mpd'yi çalıştırın:
$ /etc/rc.d/mpd start
  • /etc/rc.conf dosyasını açıp DAEMONS satırına mpd servisini ekleyin (Açılışta çalıştırmak istiyorsanız).
  • Denemek için, basit bir istemci (mesela mpc) kurup çalıştırın:
# pacman -S mpc        (yetkili kullanıcı olarak)
$ mpc ls |  mpc  add   (normal kullanıcı olarak)
$ mpc play



Kalem.png
ÖNEMLİ:
Ses alamıyor musunuz? mpd'nin otomatik tanıma sistemi düzgün çalışmıyor olabilir, aşağıdaki Sorun Giderme kısmını okuyabilirsiniz.

Sorun Giderme

Otomatik tanıma başarısız oldu ise

mpd çalıştırılırken, ses sistemini ve ses seviyesini otomatik olarak tanımaya çalışır. Çoğu sistemde düzgün çalışmasına rağmen bazı sistemlerde çalışmayabilir. Böyle bir durumda, mpd'ye ses sistemini ve ses seviyesini elle tanıtmak gerekebilir (/etc/mpd.conf'a yazmanız gerekebilir).

Mesela, alsa ses sistemi için şunları ekleyebilirsiniz:

audio_output {
    type            "alsa"
    name            "My ALSA Device"
    device            "hw:0,0"    # optional
    format            "44100:16:2"    # optional
}

ALSA ses sistemi için ses seviyesini ayarlayabilmek için ise şu satırları ekleyebilirsiniz.

mixer_type            "alsa"
mixer_device            "default"
mixer_control            "PCM"

Not: ESD ve mpd kullanırken izin problemleri ile karşılaşıyorsanız şu komutu verebilirsiniz:

# chsh -s /bin/true mpd

İpuçları

Tango-dialog-warning.png Bu yazı güncelliğini yitirmiştir.
Lütfen yazıdaki eski bölümleri çıkartarak, güncel bilgiler ile yenileyerek bu yazıyı yeniden yardımcı olabilecek seviyeye getirmeye katkıda bulunun.
Sebep: lütfen ayrıntılı bir açıklama sunmak için şablonun ilk argümanını kullanın. (Tartışın)
Tango-dialog-warning.png

Zamanaşımını engellemek için (mesela, uzun süre durdurmuşsanız) mpd.conf dosyasında connection_timeout ayarını etkin kılıp (önündeki # işaretini kaldırın) değerini yükseltin.

Eğer şarkı isimleri ve/veya dosya isimleri düzgün görüntülenmiyorsa filesystem_charset ve id3v1_encoding değerlerini değiştirin. ID3 v2 etiketleri için kodlama kullanamazsınız. Bunun için harici etiket okuyucular kullanabilirsiniz.

Eğer ağ üzerinden başka bir bilgisayar ile mpd'yi kontrol etmek istiyorsanız, mpd.conf dosyasında bind_to_address ayarında IP adresi tanımlayabilirsiniz veya çok sık IP değiştiriyorsanız, IP kısmına any yazabilirsiniz. Ayrıca /etc/hosts.allow dosyasına mpd'yi eklemeyi unutmayın.

İstemci Kurulumu

mpd'yi kurup yapılandırıp çalıştırdıktan sonra, mpd'ye ulaşacak bir istemciye ihtiyaç duyabilirsiniz. Popüler mpd istemcilerine aşağıda yer verilmiştir:

  • mpd - Komut satırında, en basit mpc istemcisidir.
  • ncmpc - NCurses kullanan bir istemcidir. Konsolda çalışıyorsanız, faydalı bir istemcidir. ncmpc web sitesi
  • sonata - Python GTK+ istemcisi Sonata Web Sitesi
  • gmpc' - Gnome İstemcisi Resmi web sitesi


Kurmak için:

# pacman -S mpc
# pacman -S ncmpc
# pacman -S sonata
# pacman -S gmpc

Ekstra araçlar

Last.fm bilgi paylaşımı

MPD'de şarkı bilgilerini Last.fm'e göndermek için çeşitli yöntemler bulunmaktadır.

mpdscribble

mpdscribble sadece AUR üzerinde bulunmaktadır. MPD projesi tarafından resmi olarak desteklenmektedir. Ayrıca /etc altında herhangi bir yapılandırmaya da ihtiyaç duymamaktadır. Web sitesinden detaylı bilgilere ulaşabilirsiniz.

mpdscribble'ı AUR'dan kurduktan sonra, aşağıdaki işlemleri uygulayın: (normal kullanıcı olarak)

  • mkdir ~/.mpdscribble
  • ~/.mpdscribble/mpdscribble.conf dosyasını oluşturup içerisine şu satırları ekleyin:
username = kullanıcıadınız
password = last_fm_şifrenizin_md5_biçimi # "echo -n password | md5sum" komutu ile oluşturabilirsiniz
host = mpd_host # öntanımlı olarak $MPD_HOST veya localhost
port = mpd_port # öntanımlı olarak $MPD_PORT veya 6600
log = ~/.mpdscribble/mpdscribble.log
cache = ~/.mpdscribble/mpdscribble.cache
verbose = 2
sleep = 1
musicdir = müzik_klasörünüz
  • ~/.xinitrc dosyanıza mpdscribble ekleyin.

Sonata

Last.fm ile bilgileri paylaşmanın en zahmetsiz yöntemi Sonata uygulamasını kullanmaktır. Sonata'nın tercihler menüsünde Last.fm bilgilerinizi girmeniz yeterlidir. Ancak internet bağlantınız yoksa, internet bağlantınız olmadığı zaman çaldığınız şarkı bilgisini last.fm'e gönderememektedir.

lastfmsubmitd

lastfmsubmitd community deposunda bulunan bir sistem servisidir. Yapılandırmak için /etc/lastfmsubmitd.conf dosyasını düzenlemeniz gerekmektedir. Yapılandırdıktan sonra lastfmsubmitd ve lastmp servislerini /etc/rc.conf dosyasında DAEMONS satırına eklemeniz gerekmektedir.

lastfmproxy ile last.fm playback kullanımı

lastfmproxy last.fm'de çalan yayını başka bir müzik çalarda oynatmaya yönelik bir python betiğidir. AUR üzerinden inşa dosyalarını alıp, paket haline getirip kurabilirsiniz. Kurduktan sonra /usr/share/lastfmproxy/config.py dosyasından yapılandırılabilir. mpd'ye yayın almak için sadece giriş bilgisini düzenleyin.

lastfmproxy'i lastfmproxy komutuyla çalıştırdıktan sonra http://localhost:1881/ adresine gidin. last.fm radyosu eklemek için http://localhost:1881/lastfm:// şeklinde last.fm tarzı adres girin. (Mesela, http://localhost:1881/lastfm://globaltags/punk}}). Daha sonra http://localhost:1881/ adresine tekrar gidin ve Start Listening bağlantısına tıklayarak m3u dosyasını indirin. Daha sonra o dosyayı mpd'nin müzik kütüphanesine ekleyin.

Açılışta oynatmamak için

mpd'nin sistem çalıştırıldığı zaman müzik oynatmasından rahatsız oluyorsanız, /etc/rc.d/mpd dosyasında aşağıdaki gibi bir düzenlemeye gidin.

   ...
   stat_busy "Starting Music Player Daemon"
   # always start in paused state
   awk '/^state_file[ \t]+"[^"]+"$/ {
       match($0, "\".+\"")
       sfile = substr($0, RSTART + 1, RLENGTH - 2)
   } /^user[ \t]+"[^"]+"$/ {
       match($0, "\".+\"")
       user = substr($0, RSTART + 1, RLENGTH - 2)
   } END {
       if (sfile == "")
               exit;
       if (user != "")
               sub(/^~/, "/home/" user, sfile)
       system("sed -i \x27s|^\\(state:[ \\t]\\{1,\\}\\)play$|\\1pause|\x27 \x27" sfile "\x27")
   }' /etc/mpd.conf
   /usr/bin/mpd /etc/mpd.conf &> /dev/null
   ...

Bu ayarların mpd'nin yeni bir sürümünde kaybolmasını istemiyorsanız, /etc/pacman.conf dosyasında NoUpgrade satırını şu şekilde düzenleyin:

NoUpgrade = etc/rc.d/mpd

MPD ve Alsa

Bazı durumlarda ses çıktıları karışabildiği için aygıt kullanımda tarzı hatalar alabilirsiniz (mpd'nin log dosyasında). Mesela:

Error opening alsa device "hw:0,0": Device or resource busy

Bu sorunu çözmek için mpd.conf dosyasına şu satırları ekleyebilirsiniz:

audio_output {
        type                    "alsa"
        name                    "Sound Card"
        options                 "dev=dmixer"
        device                  "plug:dmix"
}

ve mpd'yi tekrar başlatabilirsiniz:

/etc/rc.d/mpd restart

Bu sorun şu nedenlerden kaynaklanmaktadır:

  • Ses kartı donanım karıştırması (mixing) desteklemiyorsa
  • Uygulama ALSA'nın öntanımlı ayarlarıyla çalışamıyorsa

lirc kullanarak MPD kontrolü

lircd ve mpd'yi beraber destekleyen bir çok istemci bulunmasına rağmen, kısıtlı destekleri yüzünden verimli olamamaktadırlar.

mpc'nin irexec ile kullanılması tavsiye edilmektedir. mpc komut satırı uygulaması olmasına rağmen, irexec ile kullanıldığında mpd'nin tüm özelliklerini kullanabilecek şekilde bir kullanım kolaylığı sunmaktadır.

Öncelikle, uzaktan kumanda ile ilgili ayarları Lirc sayfasında anlatıldığı gibi yapın.

lirc yapılandırma dosyası, (yoksa oluşturun) ~/.lircrc dosyasını açıp içerisine şunları ekleyin:

begin
     prog = irexec
     button = <button_name>
     config = <command_to_run>
     repeat = <0 or 1>
end

Örnek:

## irexec
begin
     prog = irexec
     button = play_pause
     config = mpc toggle
     repeat = 0
end

begin
     prog = irexec
     button = stop
     config = mpc stop
     repeat = 0
end
begin
     prog = irexec
     button = previous
     config = mpc prev
     repeat = 0
end
begin
     prog = irexec
     button = next
     config = mpc next
     repeat = 0
end
begin
     prog = irexec
     button = volup
     config = mpc volume +2
     repeat = 1
end
begin
     prog = irexec
     button = voldown
     config = mpc volume -2
     repeat = 1
end
begin
     prog = irexec
     button = pbc
     config = mpc random
     repeat = 0
end
begin
     prog = irexec
     button = pdvd
     config = mpc update
     repeat = 0
end
begin
     prog = irexec
     button = right
     config = mpc seek +00:00:05
     repeat = 0
end
begin
     prog = irexec
     button = left
     config = mpc seek -00:00:05
     repeat = 0
end
begin
     prog = irexec
     button = up
     config = mpc seek +1%
     repeat = 0
end
begin
     prog = irexec
     button = down
     config = mpc seek -1%
     repeat = 0
end

mpc'nin tüm fonksiyonlarını, man mpc komutunu vererek kullanım kılavuzundan öğrenebilirsiniz.

Dış Bağlantılar

Kişisel araçlar
GOOGLE
Diğer dillerde