在MIDI音序器中控制音量的方法是什么?

有人能告诉我如何在使用音库或合成器的情况下控制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; } 

  1. 调用getSequence来获取Sequence ;
  2. 调用getTracks来获取曲目列表;
  3. 在每个轨道中,对于轨道中使用的每个通道,调用add以在适当的时间位置添加多个事件:

     track.add(new MidiEvent( new ShortMessage(ShortMessage.CONTROL_CHANGE, channel, 7, volume), tick)); 
  4. 也许会从赛道中移除其他音量变化事件(会干扰你的淡出);
  5. 等待一点时间让淡出发生。