Swing/MidiSystem のバックアップ(No.15)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/MidiSystem へ行く。
- 1 (2006-02-27 (月) 16:12:26)
- 2 (2007-03-28 (水) 19:24:33)
- 3 (2008-11-21 (金) 11:57:22)
- 4 (2013-03-15 (金) 16:53:52)
- 5 (2013-10-12 (土) 20:10:06)
- 6 (2014-12-28 (日) 15:04:28)
- 7 (2016-04-15 (金) 12:42:09)
- 8 (2016-09-20 (火) 05:00:21)
- 9 (2017-10-27 (金) 13:37:15)
- 10 (2018-09-12 (水) 20:00:51)
- 11 (2020-09-09 (水) 11:26:07)
- 12 (2022-03-24 (木) 15:56:43)
- 13 (2025-01-03 (金) 08:57:02)
- 14 (2025-01-03 (金) 09:01:23)
- 15 (2025-01-03 (金) 09:02:38)
- 16 (2025-01-03 (金) 09:03:21)
- 17 (2025-01-03 (金) 09:04:02)
- category: swing
folder: MidiSystem
title: MIDIファイルの演奏
tags: [Sound, MidiSystem]
author: aterai
pubdate: 2006-01-09T18:08:23+09:00
description: MidiSystemからSequencerを作成取得し、MIDIファイルを演奏します。
image:
Summary
MidiSystem
からSequencer
を作成取得し、MIDI
ファイルを演奏します。
Screenshot

Advertisement
Source Code Examples
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でイベント音を設定する