所以,我正在为开发中的 2-d java 游戏制作一个 midi 系统,到目前为止,我能够制作一个简单的 midi 文件来播放 + 停止,但我一直在尝试玩音量和淡入淡出,但它似乎不想正常工作。
这是我的类文件:
package sign;
import java.io.*;
import javax.sound.midi.*;
public class Midi {
private static Sequencer sequencer = null;
public void play(String filename) {
play(filename,false);
}
public static void play(String filename, boolean loop) {
try {
stop();
sequencer = MidiSystem.getSequencer();
File midiFile = new File(filename);
sequencer.setSequence(MidiSystem.getSequence(midiFile));
if (loop)
sequencer.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
sequencer.open();
sequencer.start();
} catch (Exception e) {
System.err.println("MidiPlayer: " + e);
sequencer = null;
}
}
public static Sequencer getSequencer() {
return sequencer;
}
public static void stop() {
try {
if ((sequencer == null) || (!sequencer.isRunning())) return;
sequencer.stop();
sequencer.close();
}
catch (Exception e) {
System.err.println("MidiPlayer: " + e);
}
sequencer = null;
}
}
我要问的是,谁能给我解释一下如何用这个文件实现音量+淡入淡出?
我尝试过一些淡入淡出+音量控制的方法,但它们总是让我的游戏崩溃,因为它们需要一些老得离谱的 midi 设备才能工作。
最佳答案
如何更改音序器的音量已在此处得到解答: What's the method to control volume in an MIDI sequencer?
对于淡入淡出,您必须自己实现(即定期降低音序器的音量)。
关于java - Midi 淡入淡出和音量控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18817314/