[LinuxFocus-icon]
Ev  |  Eriþimdüzeni  |  Ýçindekiler  |  Arama

Duyumlar | Belgelikler | Baðlantýlar | LF Nedir
[an error occurred while processing this directive]
convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
tarafýndan Guido Socher (homepage)

Yazar hakkýnda:

Guido linuxu sadece büyük imkanlarýný keþfetmesi eðlenceli olduðundan deðil tasarýmýnda yeralan insanlardan dolayý da seviyor.



Türkçe'ye çeviri:
Ýlyas Yýlmaz <//ilyasy(at)be.itu.edu.tr>

Ýçerik:

 

Midi with alsa

[Illustration]

Özet:

Midi, örnek dijital sesler bulundurmayan ancak bunlarýn nasýl yapýlacaðý hakkýnda tanýmlama içeren bir dosya formatýdýr. Bu durum üzerinde sesleri sembolik olarak temsil eden notalarý üzerinde bulunduran bir sayfa ile ayný þeydir. Midi dosyalarý bu sebeple, diðer dosyalara oranla (örn. wav gibi) çok küçüktürler.

Midi dosyalarýný gerçek bir sese dönüþtürmek için bir midi synthesizer'a ihtiyaç duyarsýnýz. Bu bir yazýlým ya da bir donaným parçasýdýr. Ses oluþturmak için bir enstrumandan alýnmýþ çok sayýda ses örnekleri kullanýr. Bunlar "ses fontlarý" olarak bilinir.

Bu makale Alsa(geliþmiþ linux ses mimarisi)'nýn bir midi synthesizer arayüzü olarak nasýl kullanýlacaðýný açýklayacaktýr.

_________________ _________________ _________________

 

Giriþ

Henüz birkaç yýl önce, "Gravis Ultrasound" ya da "SoundBlaster Gold" gibi ünlü ses kartlarýný herhangi bir bilgisayar maðazasýnda bulabilirdiniz. Her ikisi de dahili bir midi synthesizer'a sahipti. Ne yazýkki artýk onlarý satýn alamazsýnýz. Eðer yapabilseydiniz bile, modern bilgisayarlarýn içerisine uymazlardý. Çünkü onlar ISA veri yolu kullanýrlar. Günümüz bilgisayarlarý ise PCI veri yolu kullanýrlar ve çoðunlukla anakartlar üzerinde bir ses çipine sahiptirler. Hemen hemen hiçbir çipseti midi sentezini desteklemez. Alsa destekleyen ses kartlarýnýn bir listesine bakacak olursanýz, list of alsa supported soundcards olasýlýkla hangisini satýn almanýzýn iyi olacaðýný merak edeceksiniz. Seçim göründüðünden daha basittir. Bugünlerde bir bilgisayar maðazasýndan satýn alabileceðiniz ve midi sentezini destekleyen yalnýzca bir tek ses kartý vardýr: Soundblaster live.

Eðer kendinize ait bir Soundblaster live kartýnýz yoksa, yazýlýmla bunun daha iyisini yapmaya çalýþabilirsiniz ve ben bunun nasýl yapýldýðýný açýklayacaðým.  

Neye gereksinimiz var?

Alsa hali hazýrda bir geçiþ sürecindedir. Kararlý sürümü olan 0.5 giderek ilerlemekte ve þu anda 0.9 geliþtirilmektedir. Eðer gerçekten midi uygulamalarýný alsa ile birlikte kullanmak istiyorsanýz, 0.5 sürümüne gereksinim duyarsýnýz. Çünkü 0.9 için neredeyse hiçbir uygulama yoktur ve 0.5 ile 0.9 arasýndaki arayüzler de uyumsuzdur (not: bu açýklamalarýn sadece midi formatý için geçerli olduðunu hatýrlatýrým).
0.5 için gerekli paketler þunlardýr: Alsanýn nasýl derleneceði hakkýnda bilgi alsa how to dan bulunabilir (bkz referanslar). Sürücü için esas olarak þunlarýn çalýþtýrýlmasýna gerek vardýr:

tar jxvf alsa-driver-0.5.12a.tar.bz2
cd alsa-driver-0.5.12a
./configure --with-sequencer=yes --with-oss=yes --with-isapnp=no
make
make install
./snddevices

ve geri kalan kýsmý için de " ./configure;make;make install " .

Kurulumda sonra modülleri kendi çekirdeðinize yükleyebilirsiniz. Soundblaster live (emu10k1 chip) için bu iþlem þöyledir:

modprobe snd-card-emu10k1
modprobe snd-synth-emu10k1
modprobe snd-seq-midi
modprobe snd-pcm-oss
modprobe snd-mixer-oss
modprobe snd-seq-oss

Diðer kartlar için ise, sadece ilk iki satýrý kendi kartýnýzýn modülü ile yerdeðiþtirin (örneðin via çipsetli bir dahili ses kartý için snd-card-via686a þeklinde). Mandrake ve Suse alsayý destekler ve donaným saptama ve ayarlama programlarý ( harddrake ve yast2 ) bu amaçla kullanýlabilir. Ne tür bir çipsetine sahip olduðunuz hakkýnda kesinlikle hiçbir fikriniz yoksa, þu komutu çalýþtýrýn" lspci -v "(bu komut "pciutils" paketine aittir).

Artýk sesin çalýþýp çalýþmadýðýný test etme zamaný.
alsamixer
programýný çalýþtýrýn ve master ve pcm seslerini açmak için "m" tuþlayýn sonra sesi yükseltip düþürmek için ok tuþlarýný kullanýn. Alsamixerden çýkmak için Esc tuþuna basýn.

[alsamixer]

Ayarlarý /etc/asound.conf dosyasýna kaydetmek için þu komutu çalýþtýrýn:

/usr/sbin/alsactl store

ve þimdi de þunu çalýþtýrýn

play flute.wav

bazý sesler duyuyor olmalýsýnýz. Duymuyorsanýz ,/proc/asound'a gidin ve /proc/asound/devices and /proc/asound/oss-devices'ý kontrol edin."mixer" ve "digital audio" olmalý(benim dosyalarým).

Bu pcm oss emülasyonu ve ses için genel bir testti. Ýlerleyen bölümlerde , herþeyi otomatik yapmak için /etc/modules.conf dosyasýnýn içine ne ilave edileceðini açýklayacaðým ama bir sonraki aþama çalýþmak için midi elde etmek.

 

midi

Dahili midi synthesizerý olan bir ses katrýnýz varsa (sb live), ses kartýnýn çipine ses fontlarýný (ses örnekleri) yüklemelisiniz. Yoksa, "timidity"i kurabilir (referanslarda indirmek için adres yeralmaktadýr) ve onu alsa midi synthesizerý olarak alsa ile birlikte kullanabilirsiniz. Alsanýn üzerinde çalýþan programlar farký ayýrtetmeyeceklerdir.

Ses fontlarýnýn yüklenmesi

Sfxload (/bin/sfxload) programýnýn yüklü olup olmadýðýný kontrol edin, deðilse kurun. Program, awesfx isimli paketin içerisinde gelir(kendi linux daðýtým CDlerinde ya dahttp://mitglied.lycos.de/iwai/awedrv.html)adresinde bulunabilir). Sonra, 8MBGMSFX.SF2 dosyasýný kendi SB Live CD'dinizden (/mnt/cdrom/AUDIO/Common/SFBANK/8MBGMSFX.SF2) sisteminize (/etc/midi/8MBGMSFX.SF2) kopyalayýn. ). Ses fontlarýný yüklemek için þu komutu çalýþtýrýn:

/bin/sfxload /etc/midi/8MBGMSFX.SF2

Pmidi iyi bir test programýdýr (bkz. ref.).
pmidi -l
ile çalýþtýrýn Þu þekilde bir çýktý vermelidir:

Port Client name Port name
64:0 External MIDI 0 MIDI 0-0
65:0 Emu10k1 WaveTable Emu10k1 Port 0
65:1 Emu10k1 WaveTable Emu10k1 Port 1
65:2 Emu10k1 WaveTable Emu10k1 Port 2
65:3 Emu10k1 WaveTable Emu10k1 Port 3

þimdi

pmidi -p 65:0 test.mid

ve midi sesini duymalýsýn. Çok iyi!

Bir yazýlým synthesizer olarak TiMidity'nin kullanýlmasý

TiMidity++-2.11.3.tar.gz'yi indirin (bkz. ref), açýn (tar zxvf TiMidity++-2.11.3.tar.gz) ve common.makefile.in dosyasýný iþleyin. Ýþte pentium gcc için CFLAGS satýrý:

CFLAGS = -O3 -mpentium -march=pentium -fomit-frame-pointer \
-funroll-all-loops -malign-double -ffast-math

Artýk birçok güzel grafik arayüze sahip TiMidity'i ayarlayabilirsiniz. Fakat biz ilk olarak "-enable-alsaeq" seçeneði ile ilgileniyoruz. Hala, bazý GUI özelliklerine eriþmi engellemez:

./configure --enable-ncurses --enable-xaw --enable-spectrogram --enable-xaw=dynamic --enable-audio=oss,alsa --enable-alsaseq --prefix=/usr/local/timidity-2.11.3
make
make install

Böylece timidity hali hazýrda linux daðýtýmýnýzda varolan timidity kurulumunun üzerine yazýlmadan, /usr/local/timidity-2.11.3/bin'e kurulmuþ olur.Timidity'i kurduk çünkü alsaeq arayüzünün eriþilebilir olduðu tek bir linux daðýtýmý görmedik
Timidity için ses fontlarýna da gereksinim vardýr. Bu sefer enstrüman dosyalarý olarak adlandýrýlýrlar. Ýyi ve bütün bir set oldukça büyüktür (10 Mb civarýnda). Onlarý elde etmenin en hýzlý yolu, timidity++'yý kendi linux daðýtýmýnýzdan kurmak ( timidity++-2.11.3-1.i386.rpm redhat 7.3 için ) ve dosyalarý buradan kopyalamaktýr. Dosyalarý /usr/share/timidity/instruments'den /usr/local/timidity-2.11.3/share/timidity/instruments kopyalamak için þunlarý yapýn:

cd /usr
find share/timidity -print | cpio -dump /usr/local/timidity-2.11.3

Artýk kurulumumuzu test etmek ve root olarak timidity'i baþlatmak için hazýrýz :

/usr/local/timidity-2.11.3/bin/timidity -iA -B2,8 -Os -EFreverb=0
TiMidity starting in ALSA server mode
set SCHED_FIFO
Opening sequencer port: 128:0 128:1

sonra pmidi -l:

Port Client name Port name
128:0 Client-128 TiMidity port 0
128:1 Client-128 TiMidity port 1

Ýþte timidity synthesizer'lý iki porta sahibiz ve þu komuttan sonra midi sesini duymalýsýnýz.

pmidi -p 128:0 test.mid

 

/etc/modules.conf

Eðer bir sb live kartýnýz varsa, otomatik konfigürasyon ve modul yükleme için /etc/modules.conf 'un içerisine þunlarý eklemelisiniz:

alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-card-emu10k1
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
alias midi snd-synth-emu10k1
below snd-seq-oss snd-synth-emu10k1
post-install snd-synth-emu10k1 /bin/sfxload /etc/midi/8MBGMSFX.SF2 ; alsactl restore
# uncomment to save volume settings at shutdown:
#pre-remove snd-synth-emu10k1 alsactl store

Midi synthesizer'ý olmayan baþka bir kart içinse (via686 gibi):

alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-card-via686a
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-12 snd-pcm-oss
# restore original mixer:
post-install snd-card-via686a alsactl restore
# uncomment to save volume settings at shutdown:
#pre-remove snd-synth-emu10k1 alsactl store

Timidity 'i açýlýþta otomatik olarak baþlatmak için benim önerim, aþaðýdaki satýrý /etc/init.d/alsasound'a eklemeniz (bu betik, sürücü ile birlikte kurulur ama aktif deðildir, aktif hale getirmek için chkconfig komutunu kullanýn).

echo "starting timidity"
timidiy=/usr/local/timidity-2.11.3/bin/timidity # unutma"&" bir sonraki satýrda:
$timidity -iA -B2,8 -Os -EFreverb=0 > /dev/null &

 

Midi ve alsayý kullanmak

[kmid] Yukarýda, midi dosyalarýný çalmak için pmidi programýný kullandýk. KDE, bunun için kmid olarak adlandýrýlan oldukça hoþ bir çalýcý içerir. Kmid alsa desteði ile veya olmaksýzýn derlenebilir. Redhat OSS için derlenmiþine sahiptir. Mandrake ve Suse alsa kullanýr. Mandrake binaryleri Redhat ile kullanýlabilir.
Bu makale, ilerideki makalelerde ele alýnacak diðer programlar için gerekli olan alsa kurulumununun açýklamasý anlamýna da gelmektedir. Jazz bunlardan biridir. Jazz bir midi sequencer ve bir midi dosya editörüdür. Bu makalenin sonunda diðer uygulamalarýn referanslarýný da bulabilirsiniz.

Midi synthesizer yazýlýmý içeren timidity (timidity -ig komutu gtk GUI'yi baþlatacaktýr) ya da kmidi (kmid deðil) benzeri diðer programlar da vardýr. Bu durumlarda kernelin dahili midi yeteneklerinin, donaným ya da timidity yazýlýmý tarafýndan desteklenip desteklenmemesi önemli deðildir. Genel olarak yine de, bilinen bir midi apiye sahip olmak her yazýlýmda yeniden tamamlamaktan iyidir.

Alsa halen büyük deðiþiklikler geçirmekteye devam etmektedir. Dediðim gibi 0.9 versiyonu pek çok uygulama birlikte çalýþmaz. Ancak 0.5 versiyonunun da ele aldýðýmýz gibi kendi problemleri vardýr. OSS sequencer emulation (/dev/sequencer) çalýþmaz (sadece artýk satýn alamayacaðýnýz eski soundblaster awe kartlarla çalýþýr). Bunun anlamý alsayý tanýyan midi programlarý çalýþýr. Bu durum umarým 0.9 versiyounu ile deðiþecektir. Bunun yaný sýra bu makale, sadece modül isimleri gibi küçük þeylerin deðiþtirilmesiyle daha çok desteðe sahip olacak olan 0.9 versiyounu için de kullanýþlýdýr. Temel prensipler hala ayný olacaktýr.  

Referanslar

 

Bu yazý için görüþ bildiriminde bulunabilirsiniz

Her yazý kendi görüþ bildirim sayfasýna sahiptir. Bu sayfaya yorumlarýnýzý yazabilir ve diðer okuyucularýn yorumlarýna bakabilirsiniz.
 talkback page 

Görselyöre sayfalarýnýn bakýmý, LinuxFocus Editörleri tarafýndan yapýlmaktadýr
© Guido Socher, FDL
LinuxFocus.org
Çeviri bilgisi:
en --> -- : Guido Socher (homepage)
en --> tr: Ýlyas Yýlmaz <//ilyasy(at)be.itu.edu.tr>

2002-09-23, generated by lfparser version 2.31