【问题标题】:Who knows Midi hex strings?谁知道 Midi 十六进制字符串?
【发布时间】:2014-07-07 09:03:41
【问题描述】:

我正在尝试在通道 1 上发送带有数据 C0 127 的 midi Note On 消息

我可以从 midi 监视器看到此信息,但需要帮助弄清楚如何将其转换为十六进制字符串。

“stop”的正确字符串如下所示: 字节 midiDataToSend[] = {0xF0, 0x7F, 0x7F, 0x06, 0x01, 0xF7};

有人可以提供 Note On、Channel 1、Data C0 127 的示例,以便我了解如何构建 note on 和音高轮消息吗?

【问题讨论】:

  • 您是说要发送消息:注意:'C0' 速度:通道 1 上的 127 -- 是吗?
  • 看看上面写着 note-on examples 的地方,看看你能不能解决这个问题:tonalsoft.com/pub/pitch-bend/pitch.2005-08-31.17-00.aspx
  • 嗯——您的“停止”示例似乎是 system exclusive code,而不是一般的 MIDI 命令。
  • 是的,停止消息是使用 F0 状态类型的 MMC 命令,我正在尝试弄清楚如何发送常规的音符开/关消息,如果有一个示例来帮助工作。

标签: hex midi coremidi


【解决方案1】:

更新更正了 cmets 的字节值

note-on 消息是三个字节:

  • 迷笛频道
  • 钥匙号码
  • 速度

Midi 通道在“1001”的第一个半字节或十六进制数字 9 中具有固定值。第二个半字节是通道号,在您的情况下是一个,因此第一个十六进制字节应该是 90

“C0”的键或注释编号恰好是十六进制 0c Hex-to-Midi Note Chart

更新: 八度音阶编号未标准化。因此,一台设备上的“C4”可能对应另一台设备上的“C5”。 OP 是十六进制 18

速度是 127 是十六进制 7f

您可能还希望准备好发送一个 NOTE OFF —— 消息上的 note 有无限的持续时间。 ;)

【讨论】:

  • 谢谢大卫,这对吗?只有三个十六进制字节?还是我必须用其他东西作为前缀,似乎对我不起作用? {0x91, 0x0c, 0x7f }
  • 我没有可以测试的设置。那应该这样做。你能描述一下你的硬件设置吗?我很久没有做任何 MIDI,但您可能需要在开始发送之前初始化与硬件的连接。那部分可能不是标准的。过去,我倾向于使用库来帮助完成繁重的工作。
  • 我想我刚刚引起了off-by-one 错误。您能否尝试使用十六进制 90 作为第一个字节而不是 91 ???
  • 谢谢,我正在使用 coreMidi。我已经通过 bonjour 连接发送 MMC 命令,所以我知道该连接正在工作。当我监视输出时,{0x91, 0x0c, 0x7f } 甚至没有出现在 midi 显示器上,所以我想它可能需要在它前面添加一个状态字节。
  • 这行得通,谢谢!它在通道 1 上发送 C-1 127。
猜你喜欢
  • 2012-10-24
  • 2010-10-04
  • 2014-03-07
  • 2019-07-27
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多