java - Midi 淡入淡出和音量控制

标签 java midi

所以,我正在为开发中的 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/

相关文章:

java - 如何重新创建这个基于 JFrame 的进度条?

java - 没有每个单独文件的新扩展类

java - JPanel 不更新,无论我尝试什么

c# - .NET 中的精确计时

java - 如何使用 ExecutorService Java 减少到达 Runnable 类的运行方法的时间延迟

Java限制随机 double

java - 一段时间后重置变量

python-3.x - 多轨 MIDI 文件如何工作?

javascript - 从 Base64 编码的 midi 进行 MidiConvert

android - Android 中的流式 MIDI API