1

我是JAVA MIDI的新手,我遇到了一个问题。我想加载一个 MIDI 文件,然后为每个轨道使用的每个乐器的名称设置几个标签。例如,如果 MIDI 文件有 5 个轨道(每首曲目只有一种乐器)然后我会得到 5 个标签,每个标签都有每首曲目使用的乐器的名称。

有什么方法可以查看 MIDI 文件中每个音轨使用的乐器(函数、方法...)?

4

2 回答 2

1
  1. 获取SequenceMIDI 文件。
  2. 获取Track序列的对象。
  3. 获取MidiEvent轨道的对象。
  4. 获取MidiMessage事件的。这将包含有关(除其他外)仪器更改的信息。
于 2013-09-22T21:18:52.503 回答
1

一旦你分离了编曲中的每个轨道,有两种不同的方法来确定应该演奏它的乐器。

一种是带有 ID 的 MIDI 元消息0x04将出现,其中乐器名称作为字符串出现。有关详细信息,请参阅详细介绍 MIDI 文件格式的精彩页面

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

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

于 2013-09-23T08:42:23.747 回答