public SF2Instrument newInstrument(SF2Soundbank sf2, String name, Patch patch, SF2Layer... layers) { /* * Create SoundFont2 instrument. */ SF2Instrument ins = new SF2Instrument(sf2); ins.setPatch(patch); ins.setName(name); sf2.addInstrument(ins); /* * Create region for instrument. */ for (int i = 0; i < layers.length; i++) { SF2InstrumentRegion insregion = new SF2InstrumentRegion(); insregion.setLayer(layers[i]); ins.getRegions().add(insregion); } return ins; }
public static SF2Soundbank createTestSoundbank() { // Create impulse instrument // used to measure timing of note-on playback SF2Soundbank soundbank = new SF2Soundbank(); float[] data = new float[100]; Arrays.fill(data, 0); data[0] = 1.0f; byte[] bdata = new byte[data.length * format.getFrameSize()]; AudioFloatConverter.getConverter(format).toByteArray(data, bdata); SF2Sample sample = new SF2Sample(soundbank); sample.setName("Test Sample"); sample.setData(bdata); sample.setSampleRate((long) format.getSampleRate()); sample.setOriginalPitch(69); soundbank.addResource(sample); SF2Layer layer = new SF2Layer(soundbank); layer.setName("Test Layer"); soundbank.addResource(layer); SF2LayerRegion region = new SF2LayerRegion(); region.setSample(sample); layer.getRegions().add(region); SF2Instrument ins = new SF2Instrument(soundbank); ins.setName("Test Instrument"); soundbank.addInstrument(ins); SF2InstrumentRegion insregion = new SF2InstrumentRegion(); insregion.setLayer(layer); ins.getRegions().add(insregion); return soundbank; }
public void addResource(SoundbankResource resource) { if (resource instanceof SF2Instrument) instruments.add((SF2Instrument)resource); if (resource instanceof SF2Layer) layers.add((SF2Layer)resource); if (resource instanceof SF2Sample) samples.add((SF2Sample)resource); }
public void removeResource(SoundbankResource resource) { if (resource instanceof SF2Instrument) instruments.remove((SF2Instrument)resource); if (resource instanceof SF2Layer) layers.remove((SF2Layer)resource); if (resource instanceof SF2Sample) samples.remove((SF2Sample)resource); }
private void setInstrumentPatch(Instrument instrument, Patch patch) { if( instrument instanceof SF2Instrument ) { ((SF2Instrument) instrument).setPatch(this.toModelPatch(patch)); } }
public static void main(String[] args) throws Exception { // Create instance of the synthesizer with very low polyphony AudioSynthesizer synth = new SoftSynthesizer(); AudioFormat format = new AudioFormat(44100, 16, 2, true, false); Map<String, Object> p = new HashMap<String, Object>(); p.put("max polyphony", new Integer(5)); AudioInputStream stream = synth.openStream(format, p); // Create instrument with too many regions (more than max polyphony) SF2Soundbank sf2 = new SF2Soundbank(); SF2Sample sample = new SF2Sample(sf2); sample.setName("test sample"); sample.setData(new byte[100]); sample.setSampleRate(44100); sample.setOriginalPitch(20); sf2.addResource(sample); SF2Layer layer = new SF2Layer(sf2); layer.setName("test layer"); sf2.addResource(layer); for (int i = 0; i < 100; i++) { SF2LayerRegion region = new SF2LayerRegion(); region.setSample(sample); layer.getRegions().add(region); } SF2Instrument ins = new SF2Instrument(sf2); ins.setPatch(new Patch(0,0)); ins.setName("test instrument"); sf2.addInstrument(ins); SF2InstrumentRegion insregion = new SF2InstrumentRegion(); insregion.setLayer(layer); ins.getRegions().add(insregion); // Load the test soundbank into the synthesizer synth.unloadAllInstruments(synth.getDefaultSoundbank()); synth.loadAllInstruments(sf2); // Send out one midi on message MidiChannel ch1 = synth.getChannels()[0]; ch1.programChange(0); ch1.noteOn(64, 64); // Read 1 sec from stream stream.skip(format.getFrameSize() * ((int)(format.getFrameRate() * 2))); // Close the synthesizer after use synth.close(); }
public SF2Instrument[] getInstruments() { SF2Instrument[] inslist_array = instruments.toArray(new SF2Instrument[instruments.size()]); Arrays.sort(inslist_array, new ModelInstrumentComparator()); return inslist_array; }
public void addInstrument(SF2Instrument resource) { instruments.add(resource); }
public void removeInstrument(SF2Instrument resource) { instruments.remove(resource); }