MIDIファイルの演奏
Total: 12240
, Today: 2
, Yesterday: 6
Posted by aterai at
Last-modified:
概要
MidiSystem
からSequencer
を作成取得し、MIDI
ファイルを演奏します。
Screenshot
Advertisement
サンプルコード
URL url = getClass().getResource("Mozart_toruko_k.mid");
URL url = getClass().getResource("Mozart_toruko_k.mid");
SwingWorker<Void, Long> worker = new SwingWorker<Void, Long>() {
private long tickPos;
@Override protected Void doInBackground() throws InterruptedException {
try (Sequencer sequencer = MidiSystem.getSequencer()) {
sequencer.open();
sequencer.setSequence(MidiSystem.getSequence(url));
sequencer.addMetaEventListener(e -> {
if (e.getType() == END_OF_TRACK) {
publish(0L);
}
});
EventQueue.invokeLater(() -> addListener(sequencer));
while (sequencer.isOpen()) {
updateTickPosition(sequencer);
}
} catch (InvalidMidiDataException | MidiUnavailableException | IOException ex) {
ex.printStackTrace();
publish(0L);
} finally {
System.out.println("try-with-resources: AutoCloseable");
}
return null;
}
// ...
JButton start = new JButton("start");
start.addActionListener(e -> {
sequencer.setTickPosition(tickPos);
sequencer.start();
initButtons(false);
});
View in GitHub: Java, Kotlin解説
MidiSystem.getSequencer
メソッドでSequencer
を取得し、これにMidiSystem.getSequence
メソッドでMIDI
ファイルから生成したSequence
を設定します。
Sequencer#start()
メソッドで演奏を開始できます。
参考リンク
- MidiSystem (Java Platform SE 8)
- Javaでゲーム - サウンドメモ
- クラシックMIDI ラインムジーク
- Wavファイルの演奏
- Beep音を鳴らす
- AuditoryCuesでイベント音を設定する