控制没有合成器的MIDI音量Java

时间:2014-09-12 12:34:30

标签: java midi

我有下面的代码,理论上应该将声音静音(只是为了测试音量控制是否有效)但它会以完整音量播放声音,好像通过音轨的循环不在那里。

File music = new File(midi);
Sequencer sequencer;
Sequence sequence;
try {
    sequence = MidiSystem.getSequence(music);
    sequencer = MidiSystem.getSequencer();
    sequencer.open();

    for (Track track : sequence.getTracks())
    {
        for (int c = 0; c < 16; c++)
            track.add(new MidiEvent(
                new ShortMessage(ShortMessage.CONTROL_CHANGE, c, 7, 0),
                    track.ticks()));
    }

    sequencer.setSequence(sequence);
    sequencer.start();
} catch (MidiUnavailableException | IOException | InvalidMidiDataException e) {
    e.printStackTrace();
}

1 个答案:

答案 0 :(得分:1)

如果只是命令添加到曲目,为什么会发生任何变化?我敢打赌,它们会添加到曲目的 end ;所以控制变化什么也没做。尝试将tick参数设置为0,至少。

此外,曲目可能已包含控制变更;根据需要改变音量。这种方法你如何控制音乐的音量。它是如何控制所选轨道相对于彼此的。