Gelişmiş ses mimarisi (ALSA)

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


Konu başlıkları

Genel Olarak

Gelişmiş Linux Ses Mimarisi (ALSA) ses kartları için donanım sürücüleri sağlayan bir Linux çekirdeği bileşenidir.

Alternatif arıyorsanız Açık Ses Sistemi (OSS) yazısına bakınız.

Bu belge 2.6 çekirdekleri ile ALSA' nın nasıl çalıştırılacağını anlatmaktadır. Ayrıca birden fazla uygulamanın sesi aynı anda kullanmasını sağlamak konusuna bakınız

Kurulum

Çekirdek Sürücüleri

ALSA 2.6 çekirdeklerinde ve tüm arch linu* paketlerinde bulunmaktadır. Kendi çekirdeğinizi derliyorsanız, doğru ALSA sürücüsünü etkinleştirmeyi unutmayın.

Bütün zorunlu modüller udev tarafından otomatikman algılanarak yüklenecektir. ISA kartları kullanmadığınız sürece özel bir yapılandırma gerekmeyecektir. Bir PCI ve ISAPNP ses kartınız varsa ASLA alsaconf kullanmayın; alsaconf' un modprobe.conf dosyasına ekleyeceği girdiler udev' in otomatik algılama işlemini bozabilir.

Kullanıcı Araçları

  • Doğal ALSA uygulamaları ve yönetimi için gereklidirler.
# pacman -S alsa-lib alsa-utils
  • Uygulamaları dmix kombinasyonunda OSS ses desteği ile kullanmak istiyorsanız önerilir.
# pacman -S alsa-oss

alsa-lib bütün ALSA uygulamaları genellikle bir bağımlılıktır.

Yapılandırma

snd_pcsp'nin en son yüklendiğinden emin olmak

Çekirdek öntanımlı olarak snd_pcsp modülü ile gelmektedir. Bu modül bazı durumlarda "etkin" ses kartının önüne geçmekte olduğu için kullanıcılar ses alamama problemi yaşamaktadır. snd_pcsp "varsa" bilgisayarınızdaki speaker için bir alsa modülüdür.

snd_pcsp'yi en son yüklemek için, /etc/modprobe.d/modprobe.conf dosyanıza şu satırı ekleyin:

options snd-pcsp index=2

snd_pcsp'yi tamamen kapatmak için /etc/rc.conf'da şu şekilde tanımlayın:

MODULES=(... !snd_pcsp)



Lamba.png
İpucu:
Bu işlemlerin etkin olmasını istiyorsanız ses modüllerini tekrar yüklemelisiniz. Bunun en kolay yolu sistemi yeniden başlatmaktır.


Ses modüllerinin yüklendiğinden emin olmak

Udev' in OSS bağdaşığı modülleri ile birlikte sesinizi doğru olarak algılayacağını varsayabilirsiniz. Bunu şu komutla denetleyebilirsiniz:

$ lsmod|grep '^snd'
snd_usb_audio          69696  0 
snd_usb_lib            13504  1 snd_usb_audio
snd_rawmidi            20064  1 snd_usb_lib
snd_hwdep               7044  1 snd_usb_audio
snd_seq_oss            29412  0 
snd_seq_midi_event      6080  1 snd_seq_oss
snd_seq                46220  4 snd_seq_oss,snd_seq_midi_event
snd_seq_device          6796  3 snd_rawmidi,snd_seq_oss,snd_seq
snd_pcm_oss            45216  0 
snd_mixer_oss          15232  1 snd_pcm_oss
snd_intel8x0           27932  0 
snd_ac97_codec         87648  1 snd_intel8x0
snd_ac97_bus            1792  1 snd_ac97_codec
snd_pcm                76296  4 snd_usb_audio,snd_pcm_oss,snd_intel8x0,snd_ac97_codec
snd_timer              19780  2 snd_seq,snd_pcm
snd                    43776  12 snd_usb_audio,snd_rawmidi,snd_hwdep,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer
snd_page_alloc          7944  2 snd_intel8x0,snd_pcm

Çıktı buna benzer görünüyorsa, ses sürücüleriniz başarıyla algılanmış demektir (Fark ettiyseniz bu durumda, snd_intel8x0 ve snd_usb_audio donanım aygıtları için sürücü olmaktadırlar.). Ayrıca, doğru aygıt dosyaları için /dev/snd dizinini denetlemek isteyebilirsiniz:

$ ls -l /dev/snd/
total 0
crw-rw----  1 root audio 116,  0 Apr  8 14:17 controlC0
crw-rw----  1 root audio 116, 32 Apr  8 14:17 controlC1
crw-rw----  1 root audio 116, 24 Apr  8 14:17 pcmC0D0c
crw-rw----  1 root audio 116, 16 Apr  8 14:17 pcmC0D0p
crw-rw----  1 root audio 116, 25 Apr  8 14:17 pcmC0D1c
crw-rw----  1 root audio 116, 56 Apr  8 14:17 pcmC1D0c
crw-rw----  1 root audio 116, 48 Apr  8 14:17 pcmC1D0p
crw-rw----  1 root audio 116,  1 Apr  8 14:17 seq
crw-rw----  1 root audio 116, 33 Apr  8 14:17 timer

En azından controlC0 ve pcmC0D0p veya benzer aygıtlara sahipseniz; ses modülleriniz doğru olarak algılanarak yüklenmiş demektir.


Böyle değilse ses modülleriniz doğru olarak algılanmamıştır. IRC üzerinden veya forumlardan yardım isteyecekseniz, lütfen yukarıdaki komut çıktılarını da gönderiniz. Bunu çözebilmek için modülleri elle yüklemek isteyebilirsiniz:

  • Ses kartını için modülü bulun: ALSA Ses Kartı Matrisi Modüllerin önünde 'snd-' ibaresi bulunur (örneğin: 'snd-via82xx').
  • Modülleri yükleyin:
 # modprobe snd-MODÜLÜN-TAM-ADI
 # modprobe snd-pcm-oss
  • /dev/snd (yukarıya bakın) içindeki aygıt dosyalarını ve/veya alsamixer ya da amixer komutlarının kabul edilebilir ses çıktısı verdiğini denetleyin
  • Bir daha ki sefere yüklendiklerinden emin olmak için snd-NAME-OF-MODULE ve snd-pcm-oss modüllerini /etc/rc.conf içindeki MODULES kısmındaki listeye ekleyin (snd-snd-MODÜLÜN-ADI 'nın snd-pcm-oss' tan önce geldiğine emin olun).

Kanalların sesini açmak ve denemek

Bu bölümde, kök kullanıcı olarak oturum açtığınızı varsayıyoruz. Bu adımları yetkisiz kullanıcı olarak uygulamak istiyorsanız, önce "İzinlerin Yapılandırılması" bölümünü uygulamanız gereklidir.

  • Ses Kartının Sesini Açmak

ALSA' nın şu anki sürümü, bütün kanallar "' ön tanımlı olarak sesi kapalı"' kurulmaktadır. Yani kurulum başarıyla gerçekleştirilse ve tüm aygıtlar başarıyla algılansa bile yine de ses duymazsınız. Kanalların sesini elle açmak durumundasınız. Bunu yapmak için 'alsamixer' kullanmanız önerilir. Alsamixer' in metin tabanlı arayüzünde kanalların altındaki "MM" kanalın sesinin kapalı olduğunu, "00" ise açık olduğunu gösterir. MM ve 00 seçenekleri arasında geçiş yapabilmek için 'm' tuşuna basın. Kanallar arasında seçim yapmak için sağ-sol yön tuşlarını, ses seviyelerini ayarlamak için yukarı-aşağı yön tuşlarını kullanın. Sesin çalışması için Master, PCM ve büyük ihtimalle Speaker kanallarının sesinin açık olması gereklidir.

DİKKAT: amixer kullanırken, "'sesin açık"' (unmute) ve kanalların sesinin belirli bir yüzde oranında açık olduğundan ( % işaretini kullanmanız gerekir. amixer rakamları değil yüzde işaretini anlar. Bir rakam; mesela 90, kullanırsanız amixer bunu 100% olarak algılar ve hoparlörlerinize zarar verebilir.) emin olun.

 # amixer set Master 90% unmute
 # amixer set PCM 85% unmute
  • Bir Wav dosyası çalmayı deneyin.
 # aplay /usr/share/sounds/alsa/Front_Center.wav

DİKKAT: Bazı kartlar (Soundblaster Audigy LS gibi.), analog çıktı verebilmek için dijital çıkışın sesinin/kendisinin kapalı olmasını gerektirir.

Yine de bir şey duyamıyorsanız, karıştırıcı ayarlarınızı iki kez denetleyin, PCM, MASTER ve SPEAKER (IBM Thinkpad gibi makinelerde) kanallarının sesinin kapalı olmadığından emin olun ve alsaconf aracını kök kullanıcı olarak çalıştırmayı deneyin:

# alsaconf

İzinlerin Yapılandırılması

Normal kullanıcı olarak ses kartınızı kullanmak istiyorsanız şu adımları takip edin:

  • Kullanıcınızı audio (ses) grubuna ekleyin:
# gpasswd -a KULLANICI_ADI audio
  • Kullanıcı oturumunuzdan çıkın ve yeniden girin. (audio 'ses' grubunun yüklendiğinden emin olmak için.)

Başlangıçta ALSA Karıştırıcı Ayarlarını Yeniden Yüklemek

  • 'alsactl' aracını bir kez çalıştırarak '/etc/asound.state' dosyasının oluşturulmasını sağlayın:
alsactl store
  • '/etc/rc.conf' dosyasını düzenleyin ve açılışta çalışabilmesi için 'alsa' ibaresini uygulamacık (daemon) listesine ekleyin. Bu sayede karıştırıcı ayarlarınız her kapanışta kaydedilecek ve her açılışta yüklenecektir.

SPDIF Çıktısı Almak

(Gentoo forumlarından gralves' in önerisi)

  • GNOME Ses Denetimi' nde, Seçenekler sekmesinin altındaki IEC958 ibaresini PCM olarak değiştirin. Bu seçenek ayarlardan etkinleştirilebilir.
  • GNOME Ses Denetimi sisteminizde kurulu değilse;
    • '/etc/asound.state' dosyasını düzenleyin. Bu dosya alsasound' un karıştırıcı ayarlarını sakladığı dosyadır.
    • 'IEC958 Playback Switch' ibaresini içeren satırı bulun. Yanındaki 'value:false' yazan satırı 'value:true' olarak değiştirin.
    • Şimdi, 'IEC958 Playback AC97-SPSA' yazılı satırı bularak değerini 0 yapın.
    • ALSA' yı yeniden başlatın.

SPDIF' in açılışta otomatik çalışması için diğer bir yol ( SoundBlaster Audigy üzerinde denenmiştir):

  • '/etc/rc.local' dosyasına şu satırları ekleyin:
 # Use COAX-digital output
 amixer set 'IEC958 Optical' 100 unmute
 amixer set 'Audigy Analog/Digital Output Jack' on

Kartınızın dijital çıktı adını şu komutla görebilirsiniz:

 amixer scontrols

KDE Ayarları

  • KDE' yi başlatın:
# startx
  • Oturumu açtığınız kullanıcı için ses ayarlamalarınız yapın (her kullanıcının kendi ayarları vardır.):
# alsamixer

Oturumdan çıkın ve tekrar girin.

  • KDE 3.3 K Menu' ye gidin > Çokluortam > KMix
    • Ayarlar > KMix Programını Yapılandır...
    • "Giriş yapınca ses ayarlarını yenile" ibaresinin yanındaki işareti kaldırın.
    • TAMAM' a basın. Artık komut satırındaki ayarlar ile KDE üzerinden yapılan ayarlar aynı olmalı...

Sistem Geneli Ekolayzır

Dikkat: Bu yöntem ladspa eklentisinin kullanılmasını gerektirir. Bu eklenti ses çalınırken işlemcinize bir miktar yük bindirebilir. Ayrıca bu işlem , stereofonik ses ile (örn: kulaklıklar) ile yapılır.

  • Daha önce belirtilen kullanıcı araçlarından başka ayrıca alsa-plugins paketine de gereksiniminiz olacaktır.:
pacman -S alsa-plugins
  • Daha önce kurmadıysanız ladspa ve swh-plugins paketlerini de kurun.:
pacman -S ladspa swh-plugins
  • Daha önceden ~/.asoundrc veya /etc/asound.conf dosyalarından birini oluşturmadıysanız, şimdi bunlardan birini oluşturun:
vim ~/.asoundrc
  • Aşağıdaki satırları alsa yapılandırma dosyasına ekleyin.(~/.asoundrc veya /etc/asound.conf):
pcm.eq {
 type ladspa
# The output from the EQ can either go direct to a hardware device # (if you have a hardware mixer, e.g. SBLive/Audigy) or it can go # to the software mixer shown here. #slave.pcm "plughw:0,0" slave.pcm "plug:dmix"
# Sometimes you may need to specify the path to the plugins, # especially if you've just installed them. Once you've logged # out/restarted this shouldn't be necessary, but if you get errors # about being unable to find plugins, try uncommenting this. #path "/usr/lib/ladspa"
plugins [ { label mbeq id 1197 input { #this setting is here by example, edit to your own taste #bands: 50hz, 100hz, 156hz, 220hz, 311hz, 440hz, 622hz, 880hz, 1250hz, 1750hz, 25000hz, #50000hz, 10000hz, 20000hz controls [ -5 -5 -5 -5 -5 -10 -20 -15 -10 -10 -10 -10 -10 -3 -2 ] } } ] }
# Redirect the default device to go via the EQ - you may want to do # this last, once you're sure everything is working. Otherwise all # your audio programs will break/crash if something has gone wrong.
pcm.!default { type plug slave.pcm "eq" }
# Redirect the OSS emulation through the EQ too (when programs are running through "aoss")
pcm.dsp0 { type plug slave.pcm "eq" }
  • Kök kullanıcı olarak ayarlarınızı yeniden yükleyin:
/etc/rc.d/alsa restart
  • Artık ses çalışır durumda olmalı, aksi halde forumda yardım arayabilirsiniz.

Sorun Giderme

Hala Ses Yok Mu?

Unutmayın, ALSA bütün kanalların "' ön tanımlı olarak sesi kapalı"' kurulur (önceki kısıma bakın: Kanalların sesini açmak ve denemek). Yine de hiç bir kanalın sesinin kapalı olmadığından eminseniz; sürücüleriniz doğru şekilde kurulmuşsa ve ses seviyesi ayarlarınız doğruysa ama hiç bir şey duyamıyorsanız; bu sorunu çözebilmek için aşağıdaki satırı /etc/modprobe.d/modprobe.conf dosyasına eklemeyi deneyin:

options snd-Modülünüzün-tam-adı ac97_quirk=0

Yukarıdaki çözümün via82xx ile başarılı olduğu gözlemlenmiştir.

options snd-Modülünüzün-tam-adı ac97_quirk=1

Yukarıdaki çözümün snd_intel8x0 ile başarılı olduğu gözlemlenmiştir.

Ana Kart Üzerindeki Intel Ses Kartında Ses Yok

Belki iki çakışan modül ( snd_intel8x0 ve snd_intel8x0m) yüklenmektedir. Bu durumda rc.conf dosyasını düzenleyerek MODULES kısmında bunlardan birini kara listeye alın. Bu işlemden sonra modül adı şu şekilde olmalıdır: !snd_intel8x0m

alsamixer veya amixer içindeki "External Amplifier" kanalının sesini kapatmak da bir çözüm olabilir. Bkz: ALSA wiki.

Kötü Ses Kalitesi?

Ses kalitesi kötü ise alsamixer içinden PCM ses düzeyini 0 konumuna getirin.

Oynatım Başlangıcı ve Bitiminde Küçük Patlama Sesleri Mi Var?

Bazı modüller kullanımda olmadıklarında ses kartınızın gücünü kapatabilirler. Bu ise ses kartı kapatılırken küçük patlama sesleri yapabilir. Bunu rahatsız edici buluyorsanız, "modinfo snd-MODÜLÜMÜN-TAM-ADI" komutunu deneyerek modülün bu özelliğini ayarlayan veya kapatan bir seçenek bulmaya çalışın.

Örneğin; snd-hda-intel modülünün bu özelliğini kapatmak için /etc/modprobe.d/modprobe.conf. dosyasına "options snd-hda-intel power_save=0" satırını ekleyin veya "modprobe snd-hda-intel power_save=0" komutunu deneyin.

Alsamixer Çalışmıyor

İşlemekte olan alsamixer çalışmıyorsa ve şu hatayı alıyorsanız:

alsamixer: function snd_ctl_open failed for default: No such device or directory

Öncelikle /etc/group dosyasını denetleyerek geçerli kullanıcının 'audio' (ses) grubuna dahil olduğundan emin olun..

Bundan sonra ise çekirdeği yeniden yüklemeniz gerekebilir. 'pacman -S linux' komutunu veya hangi çekirdeği kullanıyorsanız onu, uygulayın.

USB Ses Kartı

Alsa ile birlikte usb ses kartı kullanmak istiyorsak, cat /proc/asound/cards çıktısından kullanmak istediğiniz ses kartının numarasını öğrenip /usr/share/alsa/alsa.conf dosyasında:

 defaults.ctl.card 0
 defaults.pcm.card 0

0 olan değerleri istediğimiz kart numarasıyla değiştirip yeniden başlatıyoruz.


Müzik çalarken Flash uygulamalarından ses alamıyorum

Flash OSS emulasyonu kullandığı için aynı anda hem müzik hem de flash'tan ses almak mümkün olmamaktadır. Bu davranışı çözmek için, /etc/rc.conf'da MODULES=() satırına şunu ekleyin:

 MODULES=( ... !snd-pcm-oss ...)

Bilgisayarınızı tekrar başlattığınızda bu sorunun giderilmiş olduğunu fark edeceksiniz.

Dış Kaynaklar

Daha fazla bilgi şu kaynaklardan bulunabilir:

Kişisel araçlar
GOOGLE
Diğer dillerde