我正在使用aplaymidi命令通过USB MIDI适配器运行硬件设备。在大多数情况下,它工作得很好,但是用control-c停止播放会留下卡住的音符。到目前为止,我唯一能释放卡住的音符的方法就是播放一个127音符的MIDI音阶文件。这是缓慢的,听音阶是不可取的。
在取消文件回放时,是否有一种简单的方法输出每个"note off"命令?

最佳答案

aplaymidi包装为一个脚本,该脚本检查退出状态以检测CTRL+C:

#!/bin/bash
aplaymidi "$*"
test $? == 130 && aplaymidi .../AllNotesOff.mid

“all notes off”消息是控制器123;只需同时在所有通道上发送它。
或者,使用amidi发送重置消息:
... && amidi -p hw:X -S F07E7F0901F7

其中X是卡号;有关端口列表,请参见amidi -l

08-17 11:09