On Thu, 17 Apr 2003 14:15:17 +0400
"Karandashev M.A." <[EMAIL PROTECTED]> 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

Ответить