1

我有几个音符,每个音符都有一个 midi 数字、持续时间和速度。

我目前正在使用 Synthesizer 播放音符:

Synthesizer synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();

MidiChannel[] channels = synthesizer.getChannels();

for(Note n: song)
{
    n.playNote(channels[0]);
}

synthesizer.close();

Note.playNote()

public void playNote(MidiChannel c) throws InterruptedException
{
    if (type == 'n')
    c.noteOn(noteNumber, 60);
    Thread.sleep(getLength());
    if (type == 'n')
    c.noteOff(noteNumber);
}

但是,现在我想将它保存到一个 MIDI 文件中。最简单的方法是什么?

4

1 回答 1

2

一个简单的过程基本上如下:

  • 创建一个序列对象;
  • 创建一个或多个轨道 (sequence.createTrack())
  • 对于每个音符,创建相关的 MidiMessages 代表音符打开和音符关闭消息并将它们添加到轨道
  • 调用 MidiSystem.write() 将填充的序列写入文件。
于 2012-12-06T04:45:35.613 回答