为了要在移动设备上进行mixing/editing,我最近买了一个Digidesign Mbox 2,但是我沮丧地发现linux下没有兼容这个设备的usb音频驱动。我向写linux usb音频驱动的那个家伙发了e-mail,并且提供了(mbox 2的)技术规范(specs),但他告诉我,要支持这个设备,现有的驱动必须重写,而对一个不用这种设备的人来说,编写驱动显然不是当务之急。所以我决定自己写驱动!
我花了一周时间,通过记录关于pro tools和mbox 2通信内容日志的方法,逆向了mbox 2。通过分析,我得到了启用(activate)该设备并且把指示灯都点亮的神奇的(magic,不知道准确不,软件开发相关的意思大概是指不确定含义的一个数字,比如magic number)16进制代码命令。还搞清楚了传输到usb端口的数字音频采样的格式。mbox 2使用以下这种格式传输音频数据,带符号的24位big-endian(参考
http://www.21eic.com/bbs/view_35_3395.html),3字节为一个采样点(block)。同样,传输midi数据时,mbox 2也不是将原始的数据传输到usb端口,这个过程使用了一种叫MIDIMAN的协议,4对16进制数为一组(in a row),最后1对表示前3对中哪些实际上是有效的数据。这样,我给最新的"snd-usn-audio" linux内核模块写了一个补丁,可以让任何人把mbox 2当成一个普通的声卡在linux下使用。
如果你熟悉构建自己的linux内核,你可以从这里下载我的补丁,保存到文件例如mbox2.patch,然后给alsa-kernel的git tree打补丁(这句没太明白,查了一下,git是一种版本控制工具)。用下边的命令来让你的mbox 2工作:
git clone git://git.alsa-project.org/alsa-kernel.git alsa-kernel
cd alsa-kernel
git apply ../mbox2.patch
make menuconfig
....
在内核配置中要选择usb音频驱动,编译内核!
最后一段大概是说,他自己用mbox 2录了一段东西,但是没用pro tools。
水平有限
不太确定的地方都标有原文
这里边设计到好些软件开发、构建linux、linux命令什么的……