有人可以告诉我如何在 不 使用声音库或合成器的 情况下 控制MIDI音序器的音量吗?
我想先使MIDI淡出,然后依次继续下一个MIDI
if(midiplay) { midi = s + savereq; try { //System.out.println("Play MIDI " + midi); if (musicSr != null) { /* This is where I want it to fade out*/ musicSr.stop(); //stop sequencer musicSr.close(); //close sequencer } musicSr = null; musicS = null; File music = new File(midi); if(music.exists()) { musicS = MidiSystem.getSequence(music); } // Create a sequencer for the sequence musicSr = MidiSystem.getSequencer(); musicSr.open(); musicSr.setSequence(musicS); musicSr.setLoopCount(musicSr.LOOP_CONTINUOUSLY); musicSr.start(); } catch (Exception ex) { ex.printStackTrace(); } midiplay = false; }
在每个轨道中,对于轨道中使用的每个频道,调用add在适当的时间位置添加多个事件:
track.add(new MidiEvent( new ShortMessage(ShortMessage.CONTROL_CHANGE, channel, 7, volume), tick));
也许从音轨中删除其他音量变化事件(这会干扰您的淡出效果);