[LinuxFocus-icon]
��ҳ  |  վ���ͼ  |  ����  |  ����

���� | �����ڿ� | ���� | ����LF
This article is available in: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  

[Photo of the Author]
by Guido Socher (homepage)

��������:

Guido ϲ��Linux����������Ϊ�˽����ϵͳ��ι�����һ����Ȥ���£� ������Щ�ܽ�����������������е��ˡ�


Ŀ¼:

 

Midi with alsa

[Illustration]

ժҪ:

Midi��һ�������ļ���ʽ�����������������������������������������������������Ϣ�����һ������˵���ı������ƣ�ÿһ��˵����ʾһ����������ˣ����������������ʽ���ļ������磺Wav��ʽ���ļ���midi�ļ����Ե�С�öࡣ

Ϊ�˽�Midi ת��Ϊʵ�ʵ�����������Ҫһ��Midi�ϳ�����Midi�ϳ�����һ��Ӳ������������������һ��������������٣������ֲ���Ƶ����������������Щ������������Ϊ"��������"��

��ƪ���½��������ʹ��ALSA��Advanced Linux Sound Architecture���Ľӿ���ʵ��һ��Midi�ϳ�����



 

����

����ǰ��������κμ�����̵����ҵ���"Gravis UltraSound"��"SoundBlaster Gold" ���������������������������������õ�Midi�ϳ��������ҵ��ǣ��������Ѿ��򲻵����ˡ���ʹ���ܹ��򵽣�Ҳ�޷���װ�������ڵĻ����ˣ���Ϊ������ISA���ߡ�����ļ������������PCI���ߣ�ͨ�����������Ѿ���һ����������оƬ�ˡ�����ЩоƬ��������֧��Midi�ϳɡ� �������֪��Ӧ����ʲô��������������Բ鿴ALSA֧�ֵ������б� �������������������������ʵ�ϣ�����Ϊֹ��ֻ��һ������֧��Midi�ϳɣ������������ļ�����̵����򵽣��Ǿ���:Soundblaster live��

��ʹ��û��Soundblaster live����������Ҳ����ͨ��������ģ��Midi�ĺϳɡ�����ƪ������ҽ��������������  

׼������

Ŀǰ��ALSA ����һ�ַ�չ�׶Ρ��ȶ��İ汾��0.5, ��0.9 �����ڿ���״̬�������ȷʵ��Ҫ��ALSA������Midi��Ӧ�ó��������ʹ��0.5 �汾����Ϊ��0.9 �汾���㼸���Ҳ���Ӧ�ó��򣬶���0.5 �� 0.9 �������ݣ�ע�⣺pcm����������wav�ļ����Լ����ڲ���������Ӧ�ó�����0.9 �²�û�����⡣������ҽ�������Midi����
0.5 ������������£� �������ALSA HOWTO �в鵽��α���ALSA�����μ��ο�վ�㣩������������Ҫ��dirverĿ¼��������������:

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

���������������"./configise;make;make install"��

�ڰ�װ�ú�����Ҫ��ģ��ӵ��ں��С� ��Soundblaster live (emu'look' оƬ)���������£�

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

�����������͵�������ֻ�轫����������ǰ�����滻�����ɣ����磺����VIA686оƬ����������������snd-cond-via686aģ�顣Mandrake ��Suse��֧��ALSA����Ϊ��Ҳ����ʹ�ð�����Linux���а棨harddrake��yast2���е�Ӳ����⹤�ߺ����ó����������������оƬ����һ����֪��������"lspci- v"�������鿴��lspci���������pciutus���У���

���ڣ�����Բ��������Ƿ��ܹ����������г���
alsamixer
���û�"M"������"Master"��"PCM"������Ȼ��ʹ�ü�ͷ�����ı������������úú���"ESC"�˳���

[alsamixer]

Ϊ�˽����ñ�����/etc/asound.conf�ļ��У����У�

/usr/sbin/alsactl store

���ˣ���������

play flute.wav

��Ӧ���ܹ�����һЩ�����ˡ����û������������/proc/asoundĿ¼�����/proc/asound/devices��/proc/asound/oss-devices��Ӧ�ô���"mixer"�� "digital audio" (���ҵļ����)��

�����������"PCM OSS"ģ��������ܹ��������Ժ��ҽ���������޸�/etc/modules.conf.��ʹ��ģ���ܹ��Զ����� ������һ��ҪʹMidi��ʼ������

 

midi

�������һ������Midi�ϳ��������������磺Soundblaster live��,����뽫"��������"���������������뵽������оƬ�С������û������������������԰�װtimidity���������μ���¼�IJο�վ�㣩�������䵱��ALSA Midi�ϳ�����������ALSA֮�ϵ�Ӧ�ó��򲢲��ֱܷ�����ߵIJ��졣

������������

������Ƿ��Ѱ�װ��sfxload ����/bin/sfxload��,���û���밲װ��������awesfx��������һ���֡�(����������Linux CD���ҵ���http://mitglied.lycos.de/iwai/awedrv.html).��һ������Soundblaster Live CD �е�8MBGMSFX.SF2(/mnt/cdrom/AUDIO/Common/SFBANK/8MBGMSFX.SF2)������/etc/midi/8MBGMSFX.SF2.����������������������壺

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

һ���ȽϺõIJ��Գ�����pmidi���μ���¼��������
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 test.mid

��Ӧ���ܹ�����Midi �������ˡ���ᣡ

����TiMidity��Ϊ�����ϳ���

����TiMidity++-2.11.3.tar.gz������(���ο�վ��)����ѹ(tar zxvf TiMidity++-2.11.3.tar.gz)���༭common.makefile.in�����й�pentium��CFLAGS�е�ע��ȥ����

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

���������ʹ��timidityƯ����ͼ�����ý������������ˣ������Ǹ���Ȥ����"-enable-alsaseq"ѡ���ѡ�������һЩ��ͼ��������������޹صģ�

./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

����timidity��װ����/usr/local/timidity-2.11.3/bin Ŀ¼�£���������Linux���а汾���Ѱ�װ��timidity���ǵ����������°�װtimidity����Ϊ���κ�һ��������Linux���а汾��timidity��alsaseq��������Ч�ġ�
Ϊ��ʹ��timidity����Ҳ��Ҫ�������塣�������ڱ���Ϊ�����ļ��� һ���õġ������������ļ��Ƿdz���ģ���Լ10Mb���� ���ķ����ǵ����ڴӷ��а�CD�а�װtimidity++ʱ�� ˳�㽫��Щ�ļ��������������磬 ����Redhat 7.3 �汾��timidity++-2.11.3-1.i386.rpm)�� ����Щ�ļ���/usr/share/timidity/instrumentsĿ¼������ /usr/local/timidity-2.11.3/share/timidity/instruments Ŀ¼�£����У�

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

�������ǿ��Կ�ʼ�����ˣ���root�û�����timidity��

/usr/local/timidity-2.11.3/bin/timidity -iA -B2,8 -Os -EFreverb=0
��ALSA������ģʽ����TiMidity
set SCHED_FIFO
�򿪺ϳ����˿ڣ�128:0 128:1

Ȼ������ pmidi -l:

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

�ƣ�����������������TiMidity�ϳ����˿��ˡ�
��������

pmidi -p 128:0 test.mid

��Ӧ���ܹ���Midi�������ˡ�  

/etc/modules.conf

Ϊ���Զ����úͼ���ģ�鵽�ں��У�����Ҫ��/etc/modules.conf���������¼��У�����������Ϊsoundblaster live��

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�ϳ������������������õ�via686��

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���ҽ�����/etc/init.d/alsasound����Щ�ű��ļ��ڰ�װ��������ʱ�Ѿ���װ����δ���������������chkconfig��������������¼��У�

echo "starting timidity"
timidiy=/usr/local/timidity-2.11.3/bin/timidity # do not forget the "&" in the next line:
$timidity -iA -B2,8 -Os -EFreverb=0 > /dev/null &

 

ʹ��ALSA ��Midi

[kmid] ���Ѿ��ܹ�ʹ�����Ľ��ܵ�pmidiӦ�ó���������midi�ļ��ˡ� ��ʵ��KDE������һ���dz�Ư����Midi�������� kmid����Ҫ��kmidi�������� Kmid���Ա������֧�ֻ�֧��ALSA�� Redhat��������֧��OSS�� Mandrake��Suseʹ����Alsa���������Redhat��ֱ������Mandrake�Ķ������ļ���
����ƪ�����н�������ΰ�װALSA���������Ӧ��������˵�DZ���ģ���ЩӦ����������δ���ļ�ƪ��������ܡ��������ǽ�����һƪ�й�Jazz�����¡�Jazz��һ��Mide ����������Midi�ļ��༭��������ƪ���µ������Ҳ����������Ӧ�ó���IJο�վ�㡣

��Midi�ϳ����������У�Ҳ������timidity��timidity -ig���� gtk���棩��kmidi������kmid����Ӧ�ó�������������£���Ͳ�����Ҫ�ں�֧��Midi�ˣ������Ǵ�Ӳ���ϻ���ͨ��timidity������ģ�⡣һ����˵������ṩһ��ͨ�õ�MidiӦ�ó���ӿڣ�������ÿ��������������ʵ��midi �ϳ�����

ALSAĿǰ���ڽ��бȽϴ�ĸĶ�������ǰ����˵��0.9�治�����б��������۵Ļ���0.5�������Ӧ�ó������⣬OSS����ģ������/dev/sequencer��Ҳ���ܹ����������ܹ������ϵ�Soundblaster awe�������������Ѿ��򲻵��ˣ�������ζ��ֻ�� ALSA֧�ֵ�MidiӦ�ó����ܹ���������0.9���н����ֺܶ���ϣ���ĸĽ�����ƪ������δ��Ҳ�����õģ���ʹ��0.9�����ṩ���˸���Ĺ��ܣ�Ҳ������һЩС�ĸĶ����������0.5��0.9��ģ������������ԭ������һ���ġ�  

�ο�վ��

 

����ƪ���·�������

ÿƪ���¶��и��Եķ���ҳ�档�����ҳ����������ύ���ۣ�Ҳ���Բ鿴�������ߵ����ۣ�
 ����ҳ�� 

��ҳ��LinuxFocus�༭��ά��
© Guido Socher, FDL
LinuxFocus.org

���������LinuxFocus��������������
������Ϣ:
en --> -- : Guido Socher (homepage)
en --> zh: Gcc <gnucplus2(at)yahoo.com>

2002-10-31, generated by lfparser version 2.25