2013-09-24 3 views
3

Может ли кто-нибудь показать мне, как управлять громкостью 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; 

      } 
+0

возможно дубликат [Как проверочные громкость канала MIDI в] (http://stackoverflow.com/questions/8008286/how-to-controll-the-midi-channels-volume) –

+0

@OliCharlesworth этот вопрос имеет синтезатор и звуковые банки, которые я не использую. – Ravekitty

+0

@DiegoCNascimento Как бы я это сделал? Могу ли я получить фрагмент/пример использования. – Ravekitty

ответ

4
  1. Вызов getSequence получить Sequence;
  2. позвонить getTracks, чтобы получить список треков;
  3. в каждой дорожки для каждого канала, используемого в колее, вызовите add добавить несколько событий в соответствующих временных позиций:

    track.add(new MidiEvent(
        new ShortMessage(ShortMessage.CONTROL_CHANGE, channel, 7, volume), 
        tick)); 
    
  4. возможно удалить другие события изменения объема (которые будут мешать вашей FADEOUT) из трек;
  5. Подождите немного, чтобы произошла ошибка.
Смежные вопросы