Re: ALSA
On Thu, 17 Apr 2003 14:15:17 +0400
"Karandashev M.A." <main@salut-t.ru> wrote:
>
> Здравствуйте, Алексей.
>
> Вы писали 3 апреля 2003 г., 21:35:57:
>
>
> Госсен Алексей> зы
> Госсен Алексей> кстати, если хочешь поиграться, расскажу, как для alsa 0.9 и sblive
> Госсен Алексей> поставить hardware midi игралку. круто и мало у кого есть
>
> Нельзя ли поподробнее...
Ну что же, можно. Рассказ только длинный будет.
1) Нужно собрать alsa09 c sequenser'ом и с oss (те кто использует alsa дрова с CD или собирал их сам программой make-kpkg modules_image, могут не беспокоиться, sequencer и oss там по дефолту. Кто не уверен, может попробовать modprobe snd-emu10k1-synth, если modprobe не матерится - всё в порядке)
Для этого в alsa source дериктории производитcя
#./configure --with-sequencer=yes --with-oss=yes && make && make install && ./snddevices
2) Берётся soundblaster live driver cd для виндов и из
/cdrom/AUDIO/Common/SFBANK/ копируется файл 8MBGMSFX.SF2 в, скажем /etc/midi.
кто хочет, может посадить этот файл в нижний регистр и убрать exec флаг
#mv /etc/midi/8MBGMSFX.SF2 /etc/midi/8mbgmsfx.sf2 && chmod 644 8mbgmsfx.sf2
3)# apt-get install awe-drv, там находится такая хорошая программа sfxload, она нам и нужна
4) Исхожу из того, что alsa с oss эмуляцией до этого нормально работает.
#modprobe snd-emu10k1-synth
если всё нормально, то это всё добро выдаёт lsmod
snd-seq-midi 3232 0 (autoclean)
snd-emu10k1-synth 3840 1 (autoclean)
snd-emux-synth 24544 1 (autoclean) [snd-emu10k1-synth]
snd-seq-midi-emul 4736 0 (autoclean) [snd-emux-synth]
snd-seq-virmidi 2680 0 (autoclean) [snd-emux-synth]
snd-seq-oss 23712 1
snd-seq-midi-event 2944 0 [snd-seq-midi snd-seq-virmidi snd-seq-oss]
snd-seq 34572 2 [snd-seq-midi snd-emux-synth snd-seq-midi-emul snd-seq-virmidi snd-seq-oss snd-seq-midi-event]
snd-pcm-oss 36736 0 (unused)
snd-mixer-oss 8960 1 [snd-pcm-oss]
snd-emu10k1 55424 2 [snd-emu10k1-synth]
snd-hwdep 3520 0 [snd-emu10k1]
snd-pcm 49056 0 [snd-pcm-oss snd-emu10k1]
snd-timer 10048 0 [snd-seq snd-pcm]
snd-util-mem 1312 0 [snd-emux-synth snd-emu10k1]
snd-ac97-codec 22496 0 [snd-emu10k1]
snd-rawmidi 12512 0 [snd-seq-midi snd-seq-virmidi snd-emu10k1]
snd-seq-device 3948 0 [snd-seq-midi snd-emu10k1-synth snd-emux-synth snd-seq-oss snd-seq snd-emu10k1 snd-rawmidi]
snd 25064 0 [snd-seq-midi snd-emux-synth snd-seq-virmidi snd-seq-oss snd-seq-midi-event snd-seq snd-pcm-oss snd-mixer-oss snd-emu10k1 snd-hwdep snd-pcm snd-timer snd-util-mem snd-ac97-codec snd-rawmidi snd-seq-device]
надо ещё только загрузить soundfonts в память
#sfxload /etc/midi/8mbgmsfx.sf2
Готово.
проверяем это дело всё так:
#aconnect -o
client 64: 'External MIDI 0' [type=kernel]
0 'MIDI 0-0 '
client 65: 'Emu10k1 WaveTable' [type=kernel]
0 'Emu10k1 Port 0 '
1 'Emu10k1 Port 1 '
2 'Emu10k1 Port 2 '
3 'Emu10k1 Port 3 '
или
#pmidi -l
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
и проигрываем:
#pmidi -p 65:0 файл.mid
так вот, работают четыре(!) порта параллельно - 65:0 65:1 и т. д. и можно четыре midi файла проигрывать одновременно. Или один в четыре канала. Вот нужно ли?
Кстати, здесь грабли. pmidi на woody cdшках скомпилирован для alsa05. Придется слазить на http://packages.debian.org и скачать версию для alsa09. Вроде бы как есть даже для stable. Или пересобрать pmidi самому. Почему pmidi? Имхо само качественно играет.
Ещё программы для проигрования midi файлов
playmidi -a файл.mid // из пакета playmidi
или GUI
tkmidi // из пакета awe-midi
5) Осталось посадить это в какой нибудь стартовый скрипт и готово. Мой скрипт проверяет заодно, загружены ли alsa дрова или нет, если да, то инсталлируется sequencer. У моего запасного ядра никаких alsa дров не поставлено и при его загрузке не пытается этот самый sequencer инсталлироваться.
==================================================================
#!/bin/sh
# находится в /etc/init.d/sfxload.sh
soundcard=emu10k1
if [ "$(lsmod | $soundcard | sed 's/\([[:graph:]]*\).*/\1/')" ]
then
modprobe snd-emu10k1-synth
echo sequencer installed!
/usr/bin/sfxload /etc/midi/8mbgmsfx.sf2
echo soundfonts loadet!
else
echo no alsa driver for sequencer found, aborting...
fi
exit 0
==================================================================
и кому как нравится, а я забиваю гвозди микроскопом :-)
#ln -s /etc/init.d/sfxload.sh /etc/rc2.d/S98sfxload.sh
p.s. Ходил слух, не знаю, можно этому верить или нет, но якобы всё вышеопианое не работает с sblive карточками последних ревизий.
У меня, как говорит lspci - rev 6.
--
Guten Tag, Alexey
Reply to:
- References:
- ALSA
- Re: ALSA
- From: Госсен Алексей <swar0g@gmx.net>
- Re: ALSA
- From: "Karandashev M.A." <main@salut-t.ru>