示例#1
0
  /** Plays sequence */
  public void playSequence(float speed) {
    try {
      fSequencer.open();
      fSynthesizer.open();
      // fSynthesizer.loadAllInstruments(fSynthesizer.getDefaultSoundbank());
      Instrument[] instruments = fSynthesizer.getAvailableInstruments();
      /*
      System.out.println("Instruments: "+fSynthesizer.getLoadedInstruments().length+", "+fSynthesizer.getAvailableInstruments().length);
      for (int i=0; i<instruments.length; i++)
      	System.out.println("Instrument "+i+": "+instruments[i].getName()+", "+instruments[i].getPatch().getBank()+", "+instruments[i].getPatch().getProgram());
      */
      if (instruments.length > 180) {
        // System.out.println("Remap: "+fSynthesizer.remapInstrument(instruments[14],
        // instruments[157]));
        // fSynthesizer.unloadInstrument(instruments[14]);
      }
    } catch (MidiUnavailableException e) {
      System.out.println("Error opening sequencer: " + e);
      return;
    }

    try {
      fSequencer.setSequence(fSequence);
      setPlaybackSpeed(speed);
      fSequencer.start();
    } catch (InvalidMidiDataException e) {
      System.out.println("Error playing sequence: " + e);
    }
  }