#firewire #protocols #alsa

firewire-fireworks-protocols

实现Echo Digital Audio Corporation为Fireworks板模块定义的协议

2个不稳定版本

0.2.0 2023年4月18日
0.1.1 2022年8月5日
0.1.0 2022年8月5日

#386 in 多媒体

22 每月下载次数

LGPL-3.0-or-later

135KB
3K SLoC

该库包含Fireworks板模块和连接到IEEE 1394总线的应用设备的协议实现。

Fireworks板模块

Echo Digital Audio公司于2004年配备了Fireworks板模块。模块的主要功能依赖于两个IC;德州仪器的TSB43CB43A(icelynx-Micro)和TMS320C67 DSP。前者IC包含IEEE 1394和IEC 61883-1/6所需的所有功能,并带有定制固件。后者IC负责数字信号处理。Mackie Onyx 1200F和400F、Echo Audio AudioFire 12和8是第一代。

第二代用Xilinx Spartan XC35250E FPGA替换了DSP。Echo Audio AudioFire 12和8(2009年或以后)、AudioFire 2、AudioFire 4、AudioFirePre8以及Gibson Robot Guitar系列的Robot Interface Pack(RIP)属于下一代。

板模块支持一对异步事务,用于命令和响应,帧内容独特。命令分为几个类别。帧可以通过普通的异步事务发送到特定地址,也可以通过AV/C控制操作进行发送。该包仅实现了前者事务。

Echo Digital Audio公司拥有美国专利(US7599388B2),描述了两个处理器之间使用两个银行共享内存来在内部数据总线和串行数据总线之间同时交换数据的方法。它可能解释了iceLynx-micro和DSP/FPGA之间音频帧通信的方式。

ALSA fireworks驱动程序

Linux声音子系统,即ALSA,提供可加载的内核模块(snd-fireworks)作为设备驱动程序。驱动程序通过一对异步事务维护音频帧和MIDI消息的等时包流以及命令响应机制,因为其他内部功能,如数字信号处理,可以直接由用户空间应用程序操作。

驱动程序允许应用程序通过执行系统调用来利用命令和响应机制。hitaki库为此提供了SndEfw GObject类。命令和响应机制是操作内部功能(如数字信号处理)所必需的。

该包依赖于 hitaki 库,因此运行时程序可以操作内部函数,除了等时数据包流。

依赖

以下是依赖包的列表。

glib 和 hinawa 包需要一些底层系统库。

Linux FireWire 和 Sound 子系统的功能是通过 hinawa 和 hitaki 包和库调用的,以与 IEEE 1394 总线上的节点通信,因此该包不是可移植的。

支持型号

以下是当前支持的型号列表。

  • Mackie (Loud) Onyx 1200F
  • Mackie (Loud) Onyx 400F
  • Echo Audio Audiofire 12 (截至2009年7月)
  • Echo Audio Audiofire 8 (截至2009年7月)
  • Echo Audio Audiofire 12 (自2009年7月起)
  • Echo Audio Audiofire 8 (自2009年7月起)
  • Echo Audio Audiofire 2
  • Echo Audio Audiofire 4
  • Echo Audio Audiofire Pre8
  • Gibson Robot Interface Pack (RIP) 用于机器人吉他系列

包的状态

该包由 ALSA GObject Introspection 团队snd-firewire-ctl-services 项目开发和维护,目前尚不稳定。包含的 Rust 元素可能在没有向后兼容性的情况下更改。

许可证

该包在考虑反向工程条款的情况下,根据 GNU Lesser General Public License v3.0 或更高版本 发布。

支持

如果发现问题,请在 https://github.com/alsa-project/snd-firewire-ctl-services/ 中提交。

免责声明

协议的实现是通过逆向工程的方式进行的;嗅探连接到目标设备的 IEEE 1394 总线,以及分析硬件供应商提供的设备与驱动程序之间的通信。幸运的是,开发者获得了 Echo Digital Audio 公司提供的命令和响应机制的源代码,并获得将其重新实现为开源软件的许可。然而,由于开发者使用的是黑盒,因此与您的设备不兼容是自然的。

依赖

~7.5MB
~156K SLoC