我是JAVA MIDI的新手,我遇到了一个问题。我想加载一个 MIDI 文件,然后为每个轨道使用的每个乐器的名称设置几个标签。例如,如果 MIDI 文件有 5 个轨道(每首曲目只有一种乐器)然后我会得到 5 个标签,每个标签都有每首曲目使用的乐器的名称。
有什么方法可以查看 MIDI 文件中每个音轨使用的乐器(函数、方法...)?
我是JAVA MIDI的新手,我遇到了一个问题。我想加载一个 MIDI 文件,然后为每个轨道使用的每个乐器的名称设置几个标签。例如,如果 MIDI 文件有 5 个轨道(每首曲目只有一种乐器)然后我会得到 5 个标签,每个标签都有每首曲目使用的乐器的名称。
有什么方法可以查看 MIDI 文件中每个音轨使用的乐器(函数、方法...)?
Sequence
MIDI 文件。Track
序列的对象。MidiEvent
轨道的对象。MidiMessage
事件的。这将包含有关(除其他外)仪器更改的信息。一旦你分离了编曲中的每个轨道,有两种不同的方法来确定应该演奏它的乐器。
一种是带有 ID 的 MIDI 元消息0x04
将出现,其中乐器名称作为字符串出现。有关详细信息,请参阅详细介绍 MIDI 文件格式的精彩页面。
第二种方式是 MIDI 程序更改消息将出现在轨道的开头。假设 MIDI 文件设置为使用 GM(通用 MIDI)乐器,您可以将程序更改消息的数据与GM 乐器相关联。
请注意,程序更改可以出现在 MIDI 轨道的任何位置,并且音序器应该相应地处理它们。尽管您在野外看到的大多数 MIDI 文件不会在轨道中间使用程序更改,但请记住,这是标准允许的,并且可能会发生。