我正在尝试将midi文件添加到我的JFrame中,这样当它启动时,音乐将永远循环播放。其他教程对我没用。
public void LoopSound() throws LineUnavailableException{
Clip clip = AudioSystem.getClip(getClass().getResource("/pokemontrivia/VioletCity.mid"));
}
答案 0 :(得分:0)
以下示例显示Swing JFrame,然后加载并播放MIDI文件。
让MIDI循环“永远”的技巧是调用sequencer.setLoopCount(Integer.MAX_VALUE);
package com.stackoverflow.questions;
import java.awt.Dimension;
import java.awt.Point;
import java.net.URL;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MidiJFrame extends JFrame {
public MidiJFrame()
{
super("Window Title");
startMidi();
add( new JLabel("Midi JFrame", JLabel.CENTER) );
setSize( new Dimension(300, 100) );
setLocation( new Point(100, 200) );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String [] args)
{
MidiJFrame app = new MidiJFrame();
}
private void startMidi()
{
try
{
URL url = getClass().getResource("/samples/avicii-wake_me_up.mid");
Sequence sequence = MidiSystem.getSequence(url);
// the sequence can also be obtained from the local filesystem
// Sequence sequence = MidiSystem.getSequence(new File("path/to/midi/file.mid"));
// Create a sequencer for the sequence
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
sequencer.setSequence(sequence);
// play the midi a semi-infinate loop
sequencer.start();
sequencer.setLoopCount(Integer.MAX_VALUE);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}