Kısa kısa Linux ses sistemleri
- (Bu -not- ayrıntıya girmeden ses sitemleri ve alakalı bazı sorunlardan bahseder gibi yapsada, bütünlük teşkil etmez, donanımdan hiç mi hiç bahsetmez. Yazar herhangi bir zarar durumunda sorumluluk kabul etmez.)
- Sürüm: 0.0005-taslak (ve belkide hep böyle kalacak)
- Son Güncellenme: Dün
- Lisans: AKL (Arakla Kullan Lisansı)
- (c) 2004 Ali Alphan Bayazıt
Kısaca
Çeşitten bol bişey olmayan Linux’te ne yazıkki ses uygulaması yazacak olanları zor günler beklemektedir. Ama bu karar verme zorluğu, yeni başlayan son kullanıcınınkinin yanında çoçuk oyuncağı gibi kalmaktadır.
Gnome ESD, KDE ARTs kullanmakta, bir de ALSA, OSS, JACK gibi geyikler vardır. (Bu notta, SDL gibi daha yüksek seviyeli ses kütüphanelerinden bahsedileceğini umanlara google yolu görünmektedir.)
ALSA ve OSS çekirdek seviyesinde, ESD, ARTS ve JACK ise kullanıcı seviyesinde sunucu olarak çalışır. Sunucu olanlarda temelde çaktırmadan çekirdek seviyesindekilerden birini kullanır. SDL gibi saf kütüphaneler ise, olayı daha da abartarak programcıya şeffaf bir şekilde, diğer adı geçen yöntemlerden birini kullanır.
OSS
Linux çekirdeği, Unixlerden gelen bir alışkanlıkla OSS’a bir şekilde destek vermiştir. Netekim konusu geçecek sistemler içersinde en eskisi de OSS’dur. En büyük sorunu ses kartı desteklese bile çoğu zaman sesi birden fazla uygulamanın kullanmasına izin vermemesidir. Çevresel ses gibi lüxe kaçabilecek konulardaki eksikleri sıkça dile getirilen eksikler arasındadır. (Bu durumlar tiraci OSS sürücülerinde farklıdır, hatta ALSA’dan iyi çalışması bile az raslanan bir durum değildir.)
Bu kısıtlamalarının yanı sıra eskiliğinden gelen bir yaygınlığı söz konusudur. Bu da muhtelemel sorunlarınız felsefik sebebi olarak dikkate alınmalıdır. Kullanıcı açısından yazarın aklına gelebilen tek artısı bazı ses kartlarıyla arasının daha iyi olmasıdır.
OSS kullananların en çok karşılaşacağı sorun paylaşımcı olmayan OSS’un genelde bir uygulama tarafından kilitlenmesidir. Örneğin yeni başlayan kullanıcı farkında olmadan, Gnome da “Evet ses istiyorum” demiş olup, esd kullanmayan uygulamaların yolunu tıkamış olabilir. Çoğu zaman çalıştırılılmak istenen uygulama az çok mantıklı “Aleti kullanamıyorum” gibi bir hata mesajı ile kullanıcıya yol göstermeye çalışır.
OSS kullanılıyorsa ve alette tık yoksa kontrol edilmesi gereken ilk şey kimin sesi gaspettiğini bulmaya çalışmak olmalıdır.
OSS kullanan uygulama tamamen dosya mantığıyla sese ulaştığı için,
$fuser /dev/dsp*
gibi basit bi komut çok işe yarayacaktır*.
Bunun çıktısı 1534c filan gibi plakaya bile benzetetilebilecek bi sayı ve muhtemelen ona eşlik eden bir harf olacaktır.
Bu sayıya anlam katmak için:
$ps aux | grep 1534 | grep -v grep
diyerek gaspçı uygulama bulunabilir.
Muhtemelen eski açık kalmış mplayer, esd, arts ya da benzer başka bir uygulama çıkıcaktır.
Yapılması gereken insan gibi kapatmaya çalışmak, bir iletişim ortamı sağlamıyorsa bu uygulama:
$killall -TERM esd
şeklinden kibarca kapanın demek, o da işe yaramazsa
$killall -9 esd
gibisinden sertleşmek olmalıdır. Daha kısa bir yöntem “fuser -k /dev/dsp*” kullanmak olabilir, ama hangi uygulamanın sorumlu olduğunu bilmek önemli olduğu gibi -k parametresiyle bütün kullanan uygulamaları sonlandırmak, istenmeyen sonuçlar doğurabilir.
Muhtemelen, bu işlem sonucunda, gönül rahatlığıyla OSS bağımlısı diğer uygulama çalıştırılabilir.
ALSA
Yazar tarafından “Gelişmiş Linux Ses Yapısı” şeklinde çevirilen ALSA, adı üzerinde gelişmiştir. “Tanıdık kart” kütüphanesi daha büyük olduğundan, kullanıcının şansının daha yüksek olduğu bir sistemdir. Zaten 2.5+ çekirdeklerle ön tanımlı gelmektedir.
ALSA’nın herşeyin yanısıra, daha yaygın olan OSS’u taklit etme yeteneği vardır. O kadar iyi taklit etmektedir ki, OSS kullanan uygulamalar ne olursa olsun ALSA’yı kilitleyebilmektedir. Bu durumlarda yukarda bahsedilen sorun giderme yöntemlerine başvurulabilir.
ALSA’da da OSS gibi ses kitleme durumları sıkça raslanabilir. Bahsi geçen OSS taklit kipinin yanısıra, ses kartı çoklu girişi desteklemediği durumlarda da yaşanabilir. OSS’daki gibi,
$fuser /dev/snd/pcm*
tarzı bir yaklaşım ALSA-dostu uygulamayı bulmanıza yarayabilir.
İkinci durumun kullanıcı tarafında, dmix eklentisi adında oldukça şık bir çözümü vardır. Temel olarak bu biş “yazılımsal karıştırma” olarak Türkçe’ye çevirilebilir. Aynı anda birden fazla ALSA uygulamasının çalıştırılabilmesini sağlar.
ALSA ile gelen dmix eklentisini kullanabilmek için pek bilinmeyen ~/.asoundrc dosyasını yaratılması ya da değiştirilmesi gerekmektedir. Yazarın dosyası bu yazının sonunda (Ek2′de) bulunabilir. Gstreamer, JACK gibi bazı uygulamalarda ALSA’nın sorun olmaya başlaması durumunda, .asoundrc dosyasının ismini değiştirmek yeterli olmalıdır.
Her ne kadar hem ALSA hem de dmix çok olgunlaşmamış da olsa, yazarın kişisel fikri masaüstünde rahatlığın ALSA/dmix ikilisinden geçtiği yönündedir.
ES, ARTS, JACK Sunucuları
OSS’un az gelişmişliği ve birden fazla uygulamaya sese erişim izni vermemesi insanlarda yazılımsal çözüm arama ihtiyacı doğurmuştur. esd, arts, jack bu işleri yapan sunuculardır. En az bilinen JACK’in aynı zamanda en gelişmiş olduğu söylenmektedir.
Sunucu çalıştırma işlemi, jackd, artsd. esd gibi aynı aileden gelmiş gibi görünen komutlarla yapılabilir.
Üçü de ALSA üzerinde çalışabilirken, dmix eklentisi ekteki ayarlar ile JACK ile çalışmaz (en azından bu yazı yazıldığı sırada JACK alete doğrudan ulaşma kaprisi yapmaktadır.)
Masüstü ortamının cak cuk sesleri çıkarmasından rahatsız olanlar masaüstü ortamınızın ayarlarından ses sistemini kapatatıp gelecekteki muhtemel başağrılarını en aza indirebilirler.
Son olarak ALSA, ESD veya ARTS kullananlar, bazı OSS uygulamalarını sistemlerine uygun bir şekilde çalıştırabilir
Örnek:
$aoss oss_uygulamasi [uygulamanin parametreleri]
$esddsp oss_uygulamasi [uygulamanin parametreleri]
$artsdsp oss_uygulamasi [uygulamanin parametreleri]
Yasal uyarı: Adı geçen herşey varsa saygıdeğer sahiplerinin ticari ismi olabilir. Burdan duyulup aşırılmamalıdır.
Ek1: Sık kullanılan programların ALSA/dmix ayarları
(Verilen bilgiler uygulamanın sürümleri arasında farklılık gösterebileceği gibi, dağıtımlar arasında da farklı olabilir. Armut piş ağzıma düş mantığı uygun değildir, ağırlıklı olarak denenen dağıtım Debian Sarge’dir.)
mplayer (sürüm 1):
1) $mplayer -ao alsa
2) ya da ~/.mplayer/config içersine;
ao=alsa,oss,esd,arts
yazılmalı.
(eski sürümler için alsa yerine alsa9 ya da alsa1x olmalı.)
xmms:
ayarlardan ALSA çıktı eklentisi seçilmeli, gerekirse alet default olarak ayarlanmalı
(işlemcinin yoğun olduğu durumlardaki xmms-alsa kitlenmesi, yazarın xmms kullanımını en aza indirmesine sebep oldu)
esd (libesd-alsa ya da benzeri paketler kuruluysa):
1) $esd -d default [diğer parametreler]
2) ya da /etc/esound/esd.conf dosyasına gerekli ayarlar yazılmalı
( esd de yer yer alsa’yı anlamsızca kitleyebilmektedir)
jackd:
$jackd -d alsa
artsd:
$artsd -a alsa
gstreamer:
gstreamer-properties de Audio’da,
Output: Custom
pipeline:alsasink device=ossmix
dmix harici alsa icin, output=alsa
firefox/flash:
firefox kullanıcı dizinindeki rc dosyası içersine
FIREFOX_DSP=aoss
yazılmalıdır.
Ek2: ~/.asoundrc
#### Ali Alphan Bayazit'in asoundrc dosyasinin basi ####
## sorarsa alsa kullanan uygulama, aletin adi default ya da ossmix...
## guncel alsa uygulamalari default'i otomatik olarak kullanabilir
## dosyanin asli ve gerekli aciklamalar [ing]:
## http://alsa.opensrc.org/index.php?page=DmixPlugin
## ses kartina bagli olarak aygitsal ayrintilara gerek olmayabilir.
pcm.!default {
type plug
slave.pcm "ossmix"
}
pcm.ossmix {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 8192
rate 48000 # ses ornekleme sikligi
# rate 44000
}
bindings {
0 0 # 0 => to 0
1 1 # 1 => to 1
}
}
pcm.dsp0 {
type plug
slave.pcm "ossmix"
}
ctl.mixer0 {
type hw
card 0
}
#### Ali Alphan Bayazit'in asoundrc dosyasinin sonu ####
Alphan kardeşim ne güzel yazmışsın eline sağlık.
(Gerçi ben alsa yerine oss kullanmaya çalışıyordum ama o da oldu gibi
)
benim bilgisaayarıma yeni format atıldı bilgisayarcı tarafından ve srunlar öle başladı kolonlar bi anda ses kesiyo ve resetlemeden düzelmiyo ne yapmalıyım cvp larınızı ve yardımlarınızı bekliyorumm…inanaın artık param kalmadı 40 milyon ödedimm
Alphan’cim, once bir e-mail atip hatirini sorayim dedim. Sonra dusundum ki hatirladigim bi tek princeton adresin var, o da eger mezun olduysan kapanmis olabilir. Google’da arattim adini, bu site cikti.. Su ara en cok kullandigin adres hangisiyse ordan bir posta sallayabilir misin?
Burcu
(Bu arada yazim denetle tusu calismiyor mu ne? Bastim ama bi cevap gelmedi.)