我是 JAVA MIDI 的新手,我遇到了一个问题。我想加载一个MIDI文件,然后设置几个标签,其中包含每个轨道使用的每个乐器的名称例如,如果MIDI文件有5个音轨( 每个音轨只有一个乐器 ),那么我将得到5个标签,每个标签都有每个音轨上使用的乐器名称。
有没有办法查看MIDI文件中每首曲目使用的乐器(功能,方法......)?
答案 0 :(得分:1)
Sequence
。Track
个对象。MidiEvent
个对象。MidiMessage
。这将包含(除其他事项外)工具变更的信息。答案 1 :(得分:1)
一旦你在安排中隔离了每个轨道,有两种不同的方法可以确定应该播放它的乐器。
一个是带有ID 0x04
的MIDI元消息将以乐器名称作为字符串出现。有关详细信息,请参阅此great page detailing the MIDI file format。
第二种方式是MIDI程序更改消息将出现在曲目的开头。假设MIDI文件设置为使用GM(通用MIDI)乐器,您可以将程序更改消息的数据与GM instrument相关联。
请注意,程序更改允许出现在MIDI轨道的任何位置,并且音序器应相应地处理它们。虽然您在野外看到的大多数MIDI文件都不会在曲目中间使用程序更改,但请记住,标准允许这样做,并且可能会发生。