Thursday, June 4, 2009

Linux下的媒体録音解决方案(Ardour+ALSA+JACK)



G2.1u

之前买了个新玩具 ZOOM G2.1u, 附送了一张Cubase 4 的光盘, 是拿来録音的.
据说听自己的録音能很好地改进自己的技术,于是便装上了去玩玩.
这软件其实做得不错, 问题是只有for windows 和 for mac的.
并且要装上去麻烦事也挺多, 还要先装个ASIO的driver.
本着linuxer 勇于创新的精神(其实根本不是什么创新, 但是我想在国内玩linux又搞録音的真的不多...)
我去google了一下,先搜到的是 rosegarden 和 ardour.
但装上去后发觉 rosegarden似乎跟MIDI关系比较大, 而不能做类似的媒体録音.
而ardour则完完全全是山寨版的cubase(其实谁山寨谁或者都是山寨还真说不准).

装上后我快被那复杂的界面搞晕了, 而且涉及到linux里我最不熟的声音系统一part.
好在ubuntu的repo里面都有, 简单的几个apt-get把 ardour以及所必须使用的JACK( jackd这个包)
以及其它依赖都弄好了. 另外顺便也装上了推荐的qjackctl.

个中原理我其实不大懂, 不过我也不想花太多时间去啃这个硬骨头, 随便弄了一下,竟然还真的搞好了 -v-
重点如下:

1. 使用ALSA+JACK.其中ALSA就不用说了, 应该是linux下最好的声音系统了吧. 其它如OSS,GStreamer之类的一概没用过.
而JACK是ardour所必须的.

2. 要使得JACK能产生低延迟的高质量效果, 必须对其进行一定配置. 其中最重要的一步莫过于使其能成为real time的进程.
而real time的进程必须由root来执行. 根据官方的指南, 可以使用现代linux的PAM机制来完成.具体如下:
在/etc/security/limits.conf 加入
@audio   -  rtprio     99
@audio - memlock unlimited
@audio - nice -19
几行,以使得audio组用户有权限获得使JACK以real time process运行的previliege.
然后把自己加入audio组. log out/in , 就可以了.

3. 打开ardour,出来的是一个配置界面. 在Audio setup->Device的选项里 Interface 选择USB Audio(我的效果器通过USB cable与PC相连)
Options里勾上 real time, 最后在New Sesson输入工程名进入主程序.
进入后主界面JACK->latency尽量选小一点, 默认的1024其实差不多了, 不过我觉得512更小一点.
注意这里如果没有开real time的话, 我的机器已经会有 drop out现象了, 録音过程中经常会一卡一卡的, 非常不爽.
而打开了real time后, 选择512的latency也可以尽情玩.

4. 左边的工具栏里右键点击, 新建一个track, 把红色的圈圈点上表示使用这个track録音.
定好tempo与meter.然后同时按下上面工具栏的録音与播放按钮开始録音.
(这个操作有点怪怪的,为虾米不是直接按下録音就録音捏...而且我没有找到precount的选项 -.-
好在强大的音频编辑功能可以把之前的无用小结删掉.)
then ... let's Rock!!

附上靓图一张. 以及随便弄的一点噪声...( 技术好烂阿 /_\ )
链接在这里:
http://www.box.net/index.php?rm=box_mp3_player_run&id=f_294398994&name=export.mp3&myfiles=1

No comments: