Qual è il metodo per controllare il volume in un sequencer MIDI?

Qualcuno può mostrarmi come controllare il volume di un sequencer MIDI senza utilizzare una banca sonora o un sintetizzatore?

Voglio far scomparire il MIDI prima di passare al prossimo MIDI in sequenza

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. Chiama getSequence per ottenere la sequenza ;
  2. chiama getTracks per ottenere l’elenco delle tracce;
  3. in ogni traccia, per ogni canale utilizzato nella traccia, chiama aggiungi per aggiungere più eventi nelle posizioni temporali appropriate:

     track.add(new MidiEvent( new ShortMessage(ShortMessage.CONTROL_CHANGE, channel, 7, volume), tick)); 
  4. magari rimuovere altri eventi di modifica del volume (che interferirebbero con il tuo fadeout) dalla traccia;
  5. aspetta un po ‘di tempo affinchè la dissolvenza avvenga.