停止 aplaymidi 留下卡住的音符

Posted

技术标签:

【中文标题】停止 aplaymidi 留下卡住的音符【英文标题】:Stopping aplaymidi leaves stuck notes 【发布时间】:2016-07-31 19:42:29 【问题描述】:

我正在使用aplaymidi 命令通过 USB MIDI 适配器运行硬件设备。在大多数情况下,它可以正常工作,但是使用 control-c 停止播放会留下卡住的音符。到目前为止,我能够释放卡住音符的唯一方法是播放 127 音符半音阶的 MIDI 文件。这很慢,而且听音阶是不可取的。

是否有简单的方法在取消文件播放时输出每个"note off" 命令?

【问题讨论】:

【参考方案1】:

aplaymidi包装成一个脚本,检查退出状态以检测Ctrl+C:

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

“所有音符关闭”消息是控制器 123;只需同时在所有频道上发送即可。

或者,使用amidi 发送重置消息:

... && amidi -p hw:X -S F07E7F0901F7

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

【讨论】:

在哪里可以找到或如何制作发送此命令的 MIDI 文件? 任何定序器都可以创建这样的文件。 我还没有找到可以做到这一点的音序器。另外,你能解释一下原始的十六进制 MIDI 命令吗?除了“系统专有”之外,我找不到关于 0xF0 的好文档。 P. MIDI specification中的 52 个。

以上是关于停止 aplaymidi 留下卡住的音符的主要内容,如果未能解决你的问题,请参考以下文章

LibreOffice 段落光标在空行时卡住

子python进程卡住了

MongoDB诡异问题:sh.stopBalancer卡住

Rails 应用程序在卡住发布表单时向同一地址发送多封电子邮件

卸载 Visual Studio 2013 Update 3 时卡住

函数调用另一个函数但被“卡住”