use of javax.sound.midi.Patch in project jdk8u_jdk by JetBrains.
the class DLSSoundbank method getInstrument.
public Instrument getInstrument(Patch patch) {
int program = patch.getProgram();
int bank = patch.getBank();
boolean percussion = false;
if (patch instanceof ModelPatch)
percussion = ((ModelPatch) patch).isPercussion();
for (Instrument instrument : instruments) {
Patch patch2 = instrument.getPatch();
int program2 = patch2.getProgram();
int bank2 = patch2.getBank();
if (program == program2 && bank == bank2) {
boolean percussion2 = false;
if (patch2 instanceof ModelPatch)
percussion2 = ((ModelPatch) patch2).isPercussion();
if (percussion == percussion2)
return instrument;
}
}
return null;
}
use of javax.sound.midi.Patch in project tika by apache.
the class MidiParser method parse.
public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException {
metadata.set(Metadata.CONTENT_TYPE, "audio/midi");
XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
xhtml.startDocument();
// MidiSystem expects the stream to support the mark feature
if (!stream.markSupported()) {
stream = new BufferedInputStream(stream);
}
try {
Sequence sequence = MidiSystem.getSequence(stream);
Track[] tracks = sequence.getTracks();
metadata.set("tracks", String.valueOf(tracks.length));
// TODO: Use XMPDM.TRACKS?
Patch[] patches = sequence.getPatchList();
metadata.set("patches", String.valueOf(patches.length));
float type = sequence.getDivisionType();
if (type == Sequence.PPQ) {
metadata.set("divisionType", "PPQ");
} else if (type == Sequence.SMPTE_24) {
metadata.set("divisionType", "SMPTE_24");
} else if (type == Sequence.SMPTE_25) {
metadata.set("divisionType", "SMPTE_25");
} else if (type == Sequence.SMPTE_30) {
metadata.set("divisionType", "SMPTE_30");
} else if (type == Sequence.SMPTE_30DROP) {
metadata.set("divisionType", "SMPTE_30DROP");
} else if (type == Sequence.SMPTE_24) {
metadata.set("divisionType", String.valueOf(type));
}
for (Track track : tracks) {
xhtml.startElement("p");
for (int i = 0; i < track.size(); i++) {
MidiMessage message = track.get(i).getMessage();
if (message instanceof MetaMessage) {
MetaMessage meta = (MetaMessage) message;
// Types 1-15 are reserved for text events
if (meta.getType() >= 1 && meta.getType() <= 15) {
// FIXME: What's the encoding?
xhtml.characters(new String(meta.getData(), ISO_8859_1));
}
}
}
xhtml.endElement("p");
}
} catch (InvalidMidiDataException ignore) {
// There is no way to know whether this exception was
// caused by the document being corrupted or by the format
// just being unsupported. So we do nothing.
}
xhtml.endDocument();
}
use of javax.sound.midi.Patch in project jdk8u_jdk by JetBrains.
the class TestGetSoundbankFile method main.
public static void main(String[] args) throws Exception {
File file = new File(System.getProperty("test.src", "."), "ding.sf2");
Soundbank sf2 = new SF2SoundbankReader().getSoundbank(file);
assertTrue(sf2.getInstruments().length == 1);
Patch patch = sf2.getInstruments()[0].getPatch();
assertTrue(patch.getProgram() == 0);
assertTrue(patch.getBank() == 0);
}
use of javax.sound.midi.Patch in project jdk8u_jdk by JetBrains.
the class TestGetSoundbankInputStream method main.
public static void main(String[] args) throws Exception {
File file = new File(System.getProperty("test.src", "."), "ding.sf2");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
try {
Soundbank sf2 = new SF2SoundbankReader().getSoundbank(bis);
assertTrue(sf2.getInstruments().length == 1);
Patch patch = sf2.getInstruments()[0].getPatch();
assertTrue(patch.getProgram() == 0);
assertTrue(patch.getBank() == 0);
} finally {
bis.close();
}
}
use of javax.sound.midi.Patch in project jdk8u_jdk by JetBrains.
the class SetPatch method main.
public static void main(String[] args) throws Exception {
SimpleInstrument instrument = new SimpleInstrument();
ModelPerformer[] performers = new ModelPerformer[2];
performers[0] = new ModelPerformer();
performers[0].setExclusiveClass(1);
performers[0].setKeyFrom(36);
performers[0].setKeyTo(48);
performers[0].setVelFrom(16);
performers[0].setVelTo(80);
performers[0].setSelfNonExclusive(true);
performers[0].setDefaultConnectionsEnabled(false);
performers[0].getConnectionBlocks().add(new ModelConnectionBlock());
performers[0].getOscillators().add(new ModelByteBufferWavetable(new ModelByteBuffer(new byte[] { 1, 2, 3 })));
performers[1] = new ModelPerformer();
performers[1].setExclusiveClass(0);
performers[1].setKeyFrom(12);
performers[1].setKeyTo(24);
performers[1].setVelFrom(20);
performers[1].setVelTo(90);
performers[1].setSelfNonExclusive(false);
performers[0].setDefaultConnectionsEnabled(true);
performers[1].getConnectionBlocks().add(new ModelConnectionBlock());
performers[1].getOscillators().add(new ModelByteBufferWavetable(new ModelByteBuffer(new byte[] { 1, 2, 3 })));
Patch patch = new Patch(0, 36);
instrument.setPatch(patch);
assertEquals(instrument.getPatch().getProgram(), patch.getProgram());
assertEquals(instrument.getPatch().getBank(), patch.getBank());
}
Aggregations