我有一些笔记,每个笔记都有一个中音数字,持续时间和力度。

我目前正在使用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文件中。最简单的方法是什么?

最佳答案

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


创建一个Sequence对象;
创建一个或多个轨道(sequence.createTrack())
对于每个音符,创建代表音符打开和音符关闭消息的相关MidiMessages并将它们添加到音轨
调用MidiSystem.write()将填充的Sequence写入文件。

10-04 18:30