串行 UART 16450/16550 MIDI 驱动程序

适配器模块参数允许您选择以下选项之一:

  • 0 - Roland Soundcanvas 支持(默认)

  • 1 - Midiator MS-124T 支持 (1)

  • 2 - Midiator MS-124W S/A 模式 (2)

  • 3 - MS-124W M/B 模式支持 (3)

  • 4 - 支持多个输入的通用设备 (4)

对于 Midiator MS-124W,您必须设置 Midiator 上的物理 M-S 和 A-B 开关,以匹配您选择的驱动程序模式。

在 Roland Soundcanvas 模式下,支持多个 ALSA 原始 MIDI 子流(midiCnD0-midiCnD15)。每当您写入不同的子流时,驱动程序都会发送非标准的 MIDI 命令序列 F5 NN,其中 NN 是子流编号加 1。 Roland 模块使用此命令在不同的“部分”之间切换,因此此功能允许您将每个部分视为一个单独的原始 MIDI 子流。驱动程序不提供发送 F5 00 (不选择) 或完全不发送 F5 NN 命令序列的方法;也许应该这样做。

简单串行转换器的用法示例

/sbin/setserial /dev/ttyS0 uart none
/sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 speed=115200

带有 4 个 MIDI 端口的 Roland SoundCanvas 的用法示例

/sbin/setserial /dev/ttyS0 uart none
/sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 outs=4

在 MS-124T 模式下,支持一个原始 MIDI 子流 (midiCnD0);outs 模块参数会自动设置为 1。驱动程序将相同的数据发送到所有四个 MIDI 输出连接器。设置 A-B 开关和 speed 模块参数以匹配 (A=19200, B=9600)。

MS-124T 的用法示例,A-B 开关位于 A 位置

/sbin/setserial /dev/ttyS0 uart none
/sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 adaptor=1 \
                speed=19200

在 MS-124W S/A 模式下,支持一个原始 MIDI 子流 (midiCnD0);outs 模块参数会自动设置为 1。驱动程序以全 MIDI 速度将相同的数据发送到所有四个 MIDI 输出连接器。

S/A 模式的用法示例

/sbin/setserial /dev/ttyS0 uart none
/sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 adaptor=2

在 MS-124W M/B 模式下,驱动程序支持 16 个 ALSA 原始 MIDI 子流;outs 模块参数会自动设置为 16。子流编号给出了数据应发送到的 MIDI 输出连接器的位掩码,其中 midiCnD1 发送到输出 1,midiCnD2 发送到输出 2,midiCnD4 发送到输出 3,midiCnD8 发送到输出 4。因此 midiCnD15 将数据发送到所有 4 个端口。作为特殊情况,midiCnD0 也发送到所有端口,因为将数据发送到没有端口是无用的。M/B 模式为每个字节选择 MIDI 输出有额外的开销,因此所有四个 MIDI 输出的聚合数据速率最多为每 520 微秒一个字节,而每个端口的完整 MIDI 数据速率为每 320 微秒一个字节。

M/B 模式的用法示例

/sbin/setserial /dev/ttyS0 uart none
/sbin/modprobe snd-serial-u16550 port=0x3f8 irq=4 adaptor=3

目前不支持 MS-124W 硬件的 M/A 模式。此模式允许 MIDI 输出以 M/B 两倍的聚合吞吐量独立运行,但不允许将相同的字节同时发送到多个 MIDI 输出。M/A 协议要求驱动程序在时序约束下调整调制解调器控制线,因此它比其他模式的实现要复杂一些。

目前不支持 MS-124W 和 MS-124T 以外的 Midiator 型号。请注意,后缀字母很重要;MS-124 和 MS-124B 不兼容,其他已知型号 MS-101、MS-101B、MS-103 和 MS-114 也不兼容。我确实有部分涵盖这些型号的文档(tim.mann@compaq.com),但没有可供实验的设备。MS-124W 支持已使用真实设备进行测试。MS-124T 支持未经测试,但应该可以工作。

通用驱动程序支持通过单个串行端口进行多个输入和输出子流。与 Roland Soundcanvas 模式类似,F5 NN 用于选择适当的输入或输出流(取决于数据方向)。此外,CTS 信号用于调节数据流。输入的数量由 ins 参数指定。