TITLE:MIDIファイルの演奏

MIDIファイルの演奏

編集者:Terai Atsuhiro~

作成日:2006-01-09
更新日:2022-03-24 (木) 15:56:43
  • category: swing folder: MidiSystem title: MIDIファイルの演奏 tags: [Sound, MidiSystem] author: aterai pubdate: 2006-01-09T18:08:23+09:00 description: MidiSystemからSequencerを作成取得し、MIDIファイルを演奏します。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTP2Xw5rXI/AAAAAAAAAeo/3v8-ggh9ZBE/s800/MidiSystem.png

概要

MidiSystemからSequencerを作成取得し、MIDIファイルを演奏します。

概要

MidiSystemからSequencerを作成取得し、MIDIファイルを演奏します。

サンプルコード

#spanend
#spanadd
URL url = getClass().getResource("Mozart_toruko_k.mid");
#spanend
#spanadd
URL url = getClass().getResource("Mozart_toruko_k.mid");
#spanend
#spanadd
SwingWorker<Void, Long> worker = new SwingWorker<Void, Long>() {
#spanend
  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;
  }
  // ...

#spandel
#screenshot
#spanend
#spandel

#spanend
#spandel
**サンプルコード [#s9901c5c]
#spanend
#spandel
#code{{
#spanend
 final Sequencer sequencer;
 try{
   sequencer = MidiSystem.getSequencer();
   sequencer.open();
   InputStream is = new BufferedInputStream(
     MainPanel.class.getResourceAsStream("Mozart_toruko_k.mid"));
   Sequence s = MidiSystem.getSequence(is);
   sequencer.setSequence(s);
 }catch(Exception e) {
   e.printStackTrace();
   return;
 }
 start = new JButton(new AbstractAction("start") {
   public void actionPerformed(ActionEvent ae) {
     sequencer.start();
   }
 });
#spanadd
JButton start = new JButton("start");
#spanend
#spanadd
start.addActionListener(e -> {
#spanend
  sequencer.setTickPosition(tickPos);
  sequencer.start();
  initButtons(false);
#spanadd
});
#spanend
View in GitHub: Java, Kotlin
  • &jnlp;
  • &jar;
  • &zip;

解説

MidiSystem.getSequencerメソッドでSequencerを取得し、これにMidiSystem.getSequenceメソッドでMIDIファイルから生成したSequenceを設定します。 Sequencer.startメソッドで演奏を開始することができます。

解説

MidiSystem.getSequencerメソッドでSequencerを取得し、これにMidiSystem.getSequenceメソッドでMIDIファイルから生成したSequenceを設定します。

参考リンク

コメント

参考リンク

コメント