#firewire #protocols #alsa

firewire-motu-protocols

实现了马可尼公司为其FireWire系列定义的协议

3个版本 (破坏性)

0.3.0 2024年2月25日
0.2.0 2023年4月18日
0.1.1 2022年8月5日

197硬件支持

每月36次下载

LGPL-3.0-or-later

410KB
10K SLoC

该库包含对MOTU FireWire系列型号协议的实现,该系列针对IEEE 1394总线上的音频和音乐单元。

MOTU FireWire系列

马可尼(MOTU)于2001年推出了828型作为其FireWire系列的第一款产品。828型和2002年推出的896型是第一代系列,其中硬件设计和协议相同。第二代的第一款产品828 mkII于2004年推出。第三代的第一款产品828 mk3于2008年推出。

MOTU FireWire系列中的一些型号是为了视频处理目的而推出的,但由于协议不明确,它们尚未得到支持。

注册DSP模型和命令DSP模型

所有型号都支持通过异步事务和四元组消息到注册地址的通知。消息包括一些目的的位标志;脚踏板事件等。对于其他功能,第二代和第三代的产品还有两种配置内部功能的方式。在库中,它们被称为“注册DSP”和“命令DSP”。

注册DSP模型使用异步写事务对目标节点的地址空间进行对应功能的操作。当用户手动操作板载功能时,通过与PCM帧和MIDI消息混合的等时包通知更改状态。硬件计量信息也以相同的方式传递。

命令DSP模型使用命令来配置功能和通知状态变化。命令帧表示当前配置。当用户手动操作板载功能时,命令帧通过异步事务发送到注册地址。其他节点通过带有命令帧的异步事务来配置功能。硬件计量信息以与注册DSP模型相同的方式传递。

ALSA firewire-motu驱动程序

Linux声音子系统,也称为ALSA,提供可加载的内核模块(snd-firewire-motu)作为设备的驱动程序。该驱动程序维护音频帧和MIDI消息的同步数据包流,以及通过异步事务的通告机制,因为其他内部功能(如数字信号处理)可以直接由用户空间应用程序操作。对于寄存器DSP模型和命令DSP模型,驱动程序缓存了在同步数据包流中用四元组消息序列表示的设备状态。

驱动程序允许应用程序通过执行系统调用来读取通告消息和状态缓存。hitaki库为此目的提供了SndMotu GObject类。然而,该库对SndMotuRegisterDspParameter结构的hitaki库有轻微的依赖。对SndMotu类的操作委托给运行时程序。

该库是运行时程序操作内部函数(除了同步数据包流之外)的辅助实现。

依赖

这是依赖项列表。

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

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

支持的型号

这是目前支持的型号列表。

  • MOTU 828
  • MOTU 896
  • MOTU Traveler
  • MOTU 828mkII
  • MOTU 896HD
  • MOTU UltraLite
  • MOTU 8pre
  • MOTU 4pre
  • MOTU AudioExpress
  • MOTU 828mk3(仅FireWire)
  • MOTU 828mk3(混合)
  • MOTU 896mk3(仅FireWire)
  • MOTU 896mk3(混合)
  • MOTU UltraLite mk3(仅FireWire)
  • MOTU UltraLite mk3(混合)
  • MOTU Traveler mk3
  • MOTU Track 16
  • MOTU 896 mk3(仅FireWire)
  • MOTU 896 mk3(混合)

库的状态

该库由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总线,以及分析硬件供应商提供的设备与驱动程序之间的通信。由于开发者以黑盒方式工作,因此自然不与您的设备协同工作。

依赖

~7.5MB
~157K SLoC