我可以说服 Linux(内核/ALSA/Jack)使用任意 UART 或串行端口(通常/dev/ttyS*
或/dev/ttyUSB*
或/dev/ttyACM*
)来输出 MIDI 消息吗?
例如,这是在 Amiga 上实现 MIDI 的方式。如果电子侧设置正确,并且 UART 可以按照 MIDI 速率计时,则传输原则上应该可以正常工作。
我想知道的是,是否有现成的软件选项、配置、驱动程序或黑客可以做到这一点。
答案1
您可以使用蒂米迪在 uart 和 alsa 之间架起桥梁。
您应该能够使其与 RaspberryPi 项目一起工作,但您需要自己编译它。
答案2
这非常困难。串行端口可以编程为某些波特率,通常在 300 波特(左右)到 115200(较新的机器上为 230400 和 460800)之间变化。然而,大多数速度都是倍数:300、600、1200、2400、4800 等。然而,MIDI 是 31250 波特,这很难编程,因为没有“谐波”关系。由于这在 PC 中是固定的(与 Atari 不同),因此它代表了一个严重的问题。
另一个问题是 MIDI 是电流环路(带光耦合器),而 RS232 是电压环路。您必须制作一个外部接口才能兼容。
然后,最后的障碍是软件:管理 UART 相对容易,并且有很多示例(查找“串行编程方法”。这里的问题似乎是您可能希望向那里的 MIDI 管理音乐程序提供一些标准接口。因此,您的驱动程序必须管理 UART 端,并向软件提供正确的接口。
大多数现代 MIDI 接口还会向用户程序提供 MIDI 代码的定时,因此这是一个额外的问题。
因此,购买便宜的 USB 转 MIDI 接口要容易得多!