カテゴリー
Android Java

Soundfontのbankとprogram情報を入手し、SoftSynthesizerに設定する

import cn.sherlock.com.sun.media.sound.SF2Soundbank;
import cn.sherlock.com.sun.media.sound.SoftSynthesizer;
import jp.kshoji.javax.sound.midi.Instrument;
import jp.kshoji.javax.sound.midi.InvalidMidiDataException;
import jp.kshoji.javax.sound.midi.MidiUnavailableException;

SF2Soundbank drumsSF = new SF2Soundbank(mContext.getAssets().open("drums.sf2"));
SoftSynthesizer drums = new SoftSynthesizer();
metronome.loadAllInstruments(drumsSF);
for (int i = 0; i < drumsSF.getInstruments().length; i++) {
  Instrument inst = drumsSF.getInstruments()[i];
  Log.d("MyTest", "name" + inst.getName());
  Log.d("MyTest", "bank" + inst.getPatch().getBank());
  Log.d("MyTest", "program" + inst.getPatch().getProgram());
  Log.d("MyTest", "==========");
}
// programChange(bank, program)
drums.getChannels()[0].programChange(0, 115);