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
Ö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.
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
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.
2002-09-23, generated by lfparser version 2.31