MIDI 设备可以集成到声卡中,也可以是独立的设备。外部 MIDI 接口可以连接到串行端口或 USB 端口。
您应该做的第一件 *也是最重要* 的事情是检查您的声卡是否受支持!
http://www.alsa-project.org/soundcards.php3
http://www.4front-tech.com/osshw.html
配置 MIDI 设备因 Linux 发行版而异。良好支持的声卡可能会在您安装操作系统时进行配置。
Linux 内核包含 OSS 驱动程序,在 2.5 内核中包含 ALSA 驱动程序。大多数发行版都提供配置工具(主要用于声卡),但如果您使用的是声卡的 MIDI 端口,则应该对其进行配置。在 RedHat 下您可以使用 sndconfig,在 SuSE 下使用 yast,在 Mandrake 下使用 DrakConf。
如果以上工具都无法配置您的 MIDI 接口,或者您遇到问题,则应采取以下步骤
lsmod 是否显示任何与 MIDI 相关的模块?以下是基于 OSS 系统的典型输出。
[root@beatbox]# lsmod Module Size Used by lockd 32208 1 (autoclean) sunrpc 54640 1 (autoclean) [lockd] autofs 9456 2 (autoclean) usb-ohci 12624 0 (unused) usbcore 43632 1 [usb-ohci] hisax 470096 0 (autoclean) (unused) isdn 104208 0 (autoclean) [hisax] slhc 4544 0 (autoclean) [isdn] eepro100 16144 1 (autoclean) #---- Soundcard modules opl3 11376 2 mad16 7968 1 ad1848 16848 1 [mad16] sb 34752 1 [mad16] uart401 6384 1 [mad16 sb] sound 58368 0 [opl3 mad16 ad1848 sb uart401] soundlow 464 0 [sound] soundcore 2800 6 [sb sound] nls_cp437 3952 2 (autoclean) vfat 9408 1 (autoclean) fat 30432 1 (autoclean) [vfat] ide-scsi 7664 0
查找 mpu401、olp3、uart401 和 oss。
如果您使用的是 USB 设备,请不要忘记检查 USB 模块是否存在。
要检查配置,请 cat sndstat 文件
[root@beatbox]# cat /dev/sndstat OSS/Free:3.8s2++-971130 Load type: Driver loaded as a module Kernel: Linux mega 2.2.17-21mdk #1 Thu Oct 5 13:16:08 CEST 2000 i686 Config options: 0 Installed drivers: Card config: Audio devices: 0: MAD16 WSS (82C930) (DUPLEX) Synth devices: 0: Yamaha OPL3 Midi devices: 0: Mad16/Mozart Timers: 0: System clock Mixers: 0: MAD16 WSS (82C930)
我们在此处看到 MIDI 设备是 mad16,这在上面的 lsmod 输出中列出。
如果您没有看到任何与 MIDI 相关的内容,请检查您的 /etc/modules.conf 文件的内容。
[root@beatbox]# cat /etc/modules.conf alias net-pf-4 ipx pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start alias usb-interface usb-ohci alias parport_lowlevel parport_pc alias block-major-11 scsi_hostadapter pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq alias scsi_hostadapter ide-scsi alias eth0 eepro100 alias eth1 hisax #---- Soundcard alias sound-slot-0 mad16 options sound dmabuf=1 alias midi opl3 options opl3 io=0x388 options sb support=1 options mad16 io=0x530 irq=5 dma=0 dma16=1 mpu_io=0x300 mpu_irq=7 joystick=1
以下是 /proc/modules 的输出,用于检查 MIDI 模块是否已加载到内核中。
[root@mega /proc]# cat modules 0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0070-007f : rtc 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 01f0-01f7 : ide0 02f8-02ff : serial(auto) #---- MIDI device 0300-0303 : MPU-401 UART 0376-0376 : ide1 0388-038b : Yamaha OPL3 03c0-03df : vga+ 03f6-03f6 : ide0 03f8-03ff : serial(auto) 0530-0533 : MAD16 WSS config 0534-0537 : MAD16 WSS de00-de1f : Intel Speedo3 Ethernet f000-f007 : ide0 f008-f00f : ide1
您应该看到类似于上述内容。 如果没有,您需要安装 MIDI 驱动程序。
如果您要使用 ALSA 0.5x 驱动程序(您不应该这样做),我建议您好好阅读 Valentijn Sessink 的 Alsa-sound-mini-HOWTO,可以在以下链接找到
http://www.linuxdoc.org/HOWTO/mini/Alsa-sound.html
强烈建议您使用高于 0.9 版本的 ALSA。对于 0.9x 之后版本的 ALSA 驱动程序,您应该好好阅读 Madhu Maddy 的 ALSA-HOWTO。
http://www.alsa-project.org/alsa-doc/alsa-howto/
以下是安装 ALSA 0.9 驱动程序和库的非常快速的安装过程,这是大多数 MIDI 应用程序所需的配置。
[root@beatbox] # tar jxvf alsa-driver....tar.bz2 [root@beatbox] # cd alsa-driver..... [root@beatbox] # ./configure messages - no errors [root@beatbox] # make messages - no errors [root@beatbox] # make install messages - no errors [root@beatbox] # ./snddevices
现在您需要编辑 /etc/modules.conf,或者某些发行版上模块目录中的 ALSA 文件。 可能有其他非 MIDI 设备的条目,因此在编辑文件时要小心。
典型的系统可能在文件中具有旧的 ALSA 或 OSS 配置,您需要删除它们,或者最好将它们注释掉。
以下是一个典型的 modules.conf 文件,显示了带有 OSS 的 ALSA 配置。
alias char-major-116 snd alias char-major-14 soundcore alias snd-card-0 (MIDI/Sound card) 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-12 snd-pcm-oss
将(MIDI/声卡)条目更改为您声卡的条目。 此信息通常可以在 ALSA 网站上找到。
安装 ALSA 驱动程序后,现在您需要安装 ALSA based 程序所需的头文件库文件。 这包含在 alsa-libs 软件包中。
确保您有一对匹配的 alsa-drivers 和 alsa-libs!
[root@beatbox] # tar jxvf alsa-libs....tar.bz2 [root@beatbox] # cd alsa-libs..... [root@beatbox] # ./configure messages - no errors [root@beatbox] # make messages - no errors [root@beatbox] # make install
您的系统现在应该已配置完成 :)
您可以使用一个简单的 C 程序来检查这一点,如果它可以编译并执行,那么您的系统应该没问题。
// Compile this test program like so: gcc alsatest.c -o alsatest -lasound #include <stdio.h> #include <alsa/asoundlib.h> int main (int argc, char *argv[]) { snd_seq_t *seq_handle; if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) { fprintf(stderr, "Error opening ALSA sequencer.\n"); exit(1); } printf("The ALSA libraries are installed.\n"); return 0; }
MIDI 是一种实时协议,延迟问题是一个严重的问题。
现在有几位开发人员正在努力改进延迟时间,内核的改进使 Linux 成为 MIDI 的一个优秀的平台。
虽然标准的 Linux 发行版可能运行良好,但专业的设置应应用低延迟补丁。 更多信息可以在这里找到
http://www.gardena.net/benno/linux/audio/
http://www.linuxdj.com/audio/lad/resourceslatency.php3
低延迟迷你指南
http://www.boosthardware.com/LAU/guide/Low_latency-Mini-HOWTO.html