2016-08-23 95 views
0

我正在寻找一种方式来表示MIDI文件中的和弦。MIDI中的和弦?

请注意,我不想表示和弦voicings。这可以通过多个音符开消息来完成。但是如果我这样做了,那么每次我读取MIDI文件时都必须对和弦进行一些注解,这是一个主要的麻烦,特别是因为我在编写文件时已经知道和弦结构。

相反,我正在寻找更类似于吉他琴谱或假书的东西。也就是说,我要在特定时间点记录“C”或“CM”或“我”或“我”或“III7" 。

所以我的问题......

是否有标准的方式来做到这一点?(我没有找到一个,但我不完全了解目前的规格)

是否有这样做的一个非标准的方式?

我使用的考虑歌词/显示元事件的“标签”功能,似乎我可以发明{@chord = Cm},对任何不了解此用法的读者,过去,现在或将来都应该是透明的。我正在阅读标准吗? rd对不对?这是否是一个合理的,基本上是私人的,非标准的扩展?

回答

0

MIDI规范规定了诸如“音符开”和“音高值”(as seen here)等值,这些值仅以整数表示。

根据MIDI类型(有3个),您应该能够按照您建议的方式保存和弦值。卡拉OK文件以这种方式创建。

如果您使用的是Windows,您可以尝试类似Noteworthy Composer的东西。该链接还包含回放建议。

0

您是绝对正确的,您可以实施自定义元事件并将这些事件放置在代表和弦的NoteOn/NoteOff组之前。我不知道你使用什么编程语言,但对于C#,你可以看看DryWetMIDI。它允许创建自定义元事件,读取和写入它们。图书馆的Wiki页面describes如何做到这一点。