找回密码
 注册
查看: 1944|回复: 6

在Linux下使用MIDI软波表

[复制链接]
发表于 2005-2-24 20:48:09 | 显示全部楼层 |阅读模式
在Linux下使用MIDI软波表
作者: ferlyworld 周伯河
Email:   [email protected]
版本: 0.9
这是我在FC3下安装rosegarden的一点心得,希望能给想在Linux下使用Midi的人一点帮助。其它的Linux系统可以参照实现。写得比较杂乱,请完整阅读后再开始动手。有问题可以与我联系,相互讨论学习。

转载请保持完整文件,并注明出处。

1.给内核打补丁
    一般安装的FC3 是不带内核源代码的,所以首先从网上下载内核源代码包kernel-2.6.9-1.667.src.rpm,以root用户安装:
    #rpm -ivh kernel-2.6.9-1.667.src.rpm
    安装后的源代码位于/usr/src/redhat目录中,进入/usr/src/redhat/SPECS目录中同样用root
用户运行:
    #rpmbuild -bp  --target i686 kernel-2.6.spec
    解开源代码(不编译),进入/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9目录,运行以下命令创建链接:
    #ln -s /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9 /usr/src/linux
    #ln -s /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9 /usr/src/linux-2.6.9
    进入/usr/src/linux目录,运行命令:
    #make oldconfig
    导入目前的内核配置,然后再运行,
    #make gconfig
    配置过程注意下面的配置要求:
    CONFIG_MODULES=y
    CONFIG_MODULE_UNLOAD=y
    CONFIG_SECURITY=y
    CONFIG_SECURITY_CAPABILITIES=m
    CONFIG_SECURITY_SELINUX=y
    其中 CONFIG_SECURITY_CAPABILITIES必须配置为m
    并同时配置好你的声卡
    生成并安装内核
    #make all
    #make modules_install
    #make install
    重新引导进入新内核,测试好你的内核所有部分正常工作后再进行下一步,重要是测试声卡是否正常工作了。
    进入下一步。
    下载软件包realtime-lsm-0.1.1.tar.gz 解压
    #tar xzvf realtime-lsm-0.1.1.tar.gz
    #cd realtime-lsm-0.1.1
    修改目录下的Makefile文件其中的一行改为
        KERNEL_DIR := /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9
    运行命令(用root方便一些)

   #make
   #make install
   进入/usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9目录安装
   #make modules_install
   这样就安装好了内核的realtime-lsm补丁

2.安装软波表qsynth、jack和音效文件
   我先给出我所下载RPM文件列表,安装时有依赖问题基本就是这些文件:
fluidsynth-1.0.5-1.rhfc2.ccrma.i386.rpm
givertcap-1.0-1.rhfc3.ccrma.i386.rpm
Hubbe64MB.zip
jack-audio-connection-kit-0.99.36-0.1.cvs.rhfc3.ccrma.i386.rpm
jack-audio-connection-kit-devel-0.99.36-0.1.cvs.rhfc3.ccrma.i386.rpm
jack-audio-connection-kit-example-clients-0.99.36-0.1.cvs.rhfc3.ccrma.i386.rpm
jackeq-0.4.0-1.rhfc2.ccrma.i386.rpm
jackmix-0.0.3-1.rhfc2.ccrma.i386.rpm
ladcca-0.4.0-2.rhfc2.ccrma.i386.rpm
ladcca-devel-0.4.0-2.rhfc2.ccrma.i386.rpm
libfluidsynth-1.0.5-1.rhfc2.ccrma.i386.rpm
libfluidsynth-devel-1.0.5-1.rhfc2.ccrma.i386.rpm
liblo-0.16-1.rhfc3.ccrma.i386.rpm
liblo-devel-0.16-1.rhfc3.ccrma.i386.rpm
liblrdf-0.4.0-1.rhfc3.ccrma.i386.rpm
liblrdf-0.4.0.tar.gz
liblrdf-devel-0.4.0-1.rhfc3.ccrma.i386.rpm
libquicktime-0.9.2-1.rhfc2.ccrma.i586.rpm
libquicktime-devel-0.9.2-1.rhfc2.ccrma.i586.rpm
muse-0.7.1-1.rhfc3.ccrma.i386.rpm
qjackconnect-0.0.3b-4.rhfc2.ccrma.i386.rpm
qjackctl-0.2.15-2.rhfc3.ccrma.i386.rpm
qsynth-0.2.2-1.rhfc2.ccrma.i386.rpm
qsynth-0.2.2.tar.gz
raptor-1.0.0-1.rhfc2.ccrma.i386.rpm
raptor-devel-1.0.0-1.rhfc2.ccrma.i386.rpm
realtime-lsm-0.1.1.tar.gz
rosegarden4-1.0-1.rhfc3.ccrma.i386.rpm

    先安装jack,包括:
jack-audio-connection-kit-0.99.36-0.1.cvs.rhfc3.ccrma.i386.rpm
jack-audio-connection-kit-devel-0.99.36-0.1.cvs.rhfc3.ccrma.i386.rpm
jack-audio-connection-kit-example-clients-0.99.36-0.1.cvs.rhfc3.ccrma.i386.rpm
qjackctl-0.2.15-2.rhfc3.ccrma.i386.rpm
   
    再安装软波表软件qsynth
    qsynth-0.2.2-1.rhfc2.ccrma.i386.rpm
    libfluidsynth-1.0.5-1.rhfc2.ccrma.i386.rpm
    libfluidsynth-devel-1.0.5-1.rhfc2.ccrma.i386.rpm
   
    再安装音效文件Hubbe64MB.zip,先解压生成Hubbe64MB.SFArk,再用SFArk软件解压为
文件Hubbe64MB.sf2(一定要该格式),放到一定目录,我就把它扔到了/tmp

    安装rosegarden
    rosegarden4-1.0-1.rhfc3.ccrma.i386.rpm
    因为都是RPM文件,我就不多说了。

3.运行软件
    以下操作全部使用root用户
   
    前面的安装都完成的话,激动的时后来了。
   
    先加载内核模块,如果不做你肯定会失败的

    #modprobe realtime allcaps=1
    #modprobe snd-seq-midi snd-seq-virmidi snd-seq-midi-event snd-seq

    运行jack
    #qjackctl &
    点击start按钮,应不该出现任何问题

    运行qsynth
    #qsynth&
    点击setup按钮,在soundfonts选卡中加入音效文件Hubbe64MB.sf2,restart一下。
    在qjackctl中点击connects按钮,可以看到qsynth出现了,并建立了联接。
   
    运行rosegarden
    #rosegarden
    在qjackctl中点击connects按钮,可以看到rosegarden出现了,并建立了联接。
   
    好了,现在你可以进行midi创作和编辑了,我选了一首仙剑的蝶念,美美的爽了一把。
发表于 2005-2-24 22:12:02 | 显示全部楼层
我一般用timidity放midi
回复

使用道具 举报

 楼主| 发表于 2005-2-25 09:11:13 | 显示全部楼层
发一张效果图

http://www.linuxsir.org/bbs/attachment.php?attachmentid=22000
回复

使用道具 举报

发表于 2005-2-26 20:28:46 | 显示全部楼层
好麻烦啊……… :neutral:
回复

使用道具 举报

发表于 2005-2-26 22:40:27 | 显示全部楼层
timidity也可当软波表
1. 装好alsa驱动
2. 安装 timidity
CFLAGS='-O3 -Wall -funroll-all-loops -march=i686 -pipe -ffast-math -fomit-frame-pointer' ./configure --enable-ncurses --enable-slang --enable-motif --enable-tcltk --enable-emacs --enable-vt100 --enable-xaw --enable-xskin --enable-gtk --enable-network --enable-spectrogram --enable-wrd --enable-alsaseq --enable-audio=oss,alsa,esd --enable-server
make
make install

3. 增加 timidity 的实时响应
chown root /usr/local/bin/timidity
chmod 4755 /usr/local/bin/timidity

4. 编辑 timidity 配置文件
# vi /usr/local/share/timidity/timidity.cfg
soundfont /home/programs/timidity/MagicSFver2.sf2

5. 用 timidity 当软波表
// 启动 timidity server
$ timidity -iA -B4,8 -Os &
Requested buffer size 4096, fragment size 1024
ALSA pcm 'default' set buffer size 4096, period size 1024 bytes
TiMidity starting in ALSA server mode
set SCHED_FIFO
Opening sequencer port: 128:0 128:1

// 查询可用 midi 端口
$ aconnect -lo
client 64: 'ESS ES1938 (Solo-1) MIDI' [type=kernel]
    0 'ESS ES1938 (Solo-1) MIDI'  (我的第一块声卡)
client 65: 'OPL3 FM synth' [type=kernel]
    0 'OPL3 FM Port    '
client 72: 'ES1371' [type=kernel]
    0 'ES1371          '                   (我的第二块声卡, 以下的是虚拟端口)
client 80: 'Virtual Raw MIDI 2-0' [type=kernel]  (/dev/snd/midiC2D0)
    0 'VirMIDI 2-0     '
client 81: 'Virtual Raw MIDI 2-1' [type=kernel]  (/dev/snd/midiC2D1)
    0 'VirMIDI 2-1     '
client 82: 'Virtual Raw MIDI 2-2' [type=kernel]  (/dev/snd/midiC2D2)
    0 'VirMIDI 2-2     '
client 83: 'Virtual Raw MIDI 2-3' [type=kernel]  (/dev/snd/midiC2D3)
    0 'VirMIDI 2-3     '
client 128: 'Client-128' [type=user]
    0 'TiMidity port 0 '       (timidity alsa server)
    1 'TiMidity port 1 '

// 虚拟 midi 端口(client 83)重定向到 timidity server
$ aconnect 83:0 128:1
Requested buffer size 4096, fragment size 1024
ALSA pcm 'default' set buffer size 4096, period size 1024 bytes

// 查看连接
$ aconnect -lo
client 64: 'ESS ES1938 (Solo-1) MIDI' [type=kernel]
    0 'ESS ES1938 (Solo-1) MIDI'
client 65: 'OPL3 FM synth' [type=kernel]
    0 'OPL3 FM Port    '
client 72: 'ES1371' [type=kernel]
    0 'ES1371          '
client 80: 'Virtual Raw MIDI 2-0' [type=kernel]
    0 'VirMIDI 2-0     '
client 81: 'Virtual Raw MIDI 2-1' [type=kernel]
    0 'VirMIDI 2-1     '
client 82: 'Virtual Raw MIDI 2-2' [type=kernel]
    0 'VirMIDI 2-2     '
client 83: 'Virtual Raw MIDI 2-3' [type=kernel]
    0 'VirMIDI 2-3     '
        Connecting To: 128:1   (连接成功)
client 128: 'Client-128' [type=user]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
        Connected From: 83:0

这时得到一个 midi 设备 /dev/snd/midiC2D3

// 断开连接
aconnect -x
回复

使用道具 举报

 楼主| 发表于 2005-2-27 13:35:15 | 显示全部楼层
好!!!!!!!!!!!!!
回复

使用道具 举报

 楼主| 发表于 2005-2-27 13:47:26 | 显示全部楼层
给两个补充网址:
一个是我下载软件的:
http://ccrma.stanford.edu/planetccrma/software/soundapps.html#SECTION000424300000000000000
一个是关于MIDI 和Rosegarden的:
http://rosegarden.sourceforge.net/tutorial/using-rosegarden/en/chapter-2.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-5-17 07:05 , Processed in 0.026411 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表