装载仪器

时间:2013-09-22 21:01:50

标签: java instruments midi javasound

我是 JAVA MIDI 的新手,我遇到了一个问题。我想加载一个MIDI文件,然后设置几个标签,其中包含每个轨道使用的每个乐器的名称例如,如果MIDI文件有5个音轨( 每个音轨只有一个乐器 ),那么我将得到5个标签,每个标签都有每个音轨上使用的乐器名称。

有没有办法查看MIDI文件中每首曲目使用的乐器(功能,方法......)?

2 个答案:

答案 0 :(得分:1)

  1. 获取MIDI文件的Sequence
  2. 获取序列的Track个对象。
  3. 获取该曲目的MidiEvent个对象。
  4. 获取活动的MidiMessage。这将包含(除其他事项外)工具变更的信息。

答案 1 :(得分:1)

一旦你在安排中隔离了每个轨道,有两种不同的方法可以确定应该播放它的乐器。

一个是带有ID 0x04的MIDI元消息将以乐器名称作为字符串出现。有关详细信息,请参阅此great page detailing the MIDI file format

第二种方式是MIDI程序更改消息将出现在曲目的开头。假设MIDI文件设置为使用GM(通用MIDI)乐器,您可以将程序更改消息的数据与GM instrument相关联。

请注意,程序更改允许出现在MIDI轨道的任何位置,并且音序器应相应地处理它们。虽然您在野外看到的大多数MIDI文件都不会在曲目中间使用程序更改,但请记住,标准允许这样做,并且可能会发生。