我有一些笔记,每个笔记都有一个中音数字,持续时间和力度。
我目前正在使用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写入文件。