Search in sources :

Example 6 with Patch

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;
}
Also used : Instrument(javax.sound.midi.Instrument) Patch(javax.sound.midi.Patch)

Example 7 with Patch

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();
}
Also used : InvalidMidiDataException(javax.sound.midi.InvalidMidiDataException) MidiMessage(javax.sound.midi.MidiMessage) Sequence(javax.sound.midi.Sequence) XHTMLContentHandler(org.apache.tika.sax.XHTMLContentHandler) BufferedInputStream(java.io.BufferedInputStream) MetaMessage(javax.sound.midi.MetaMessage) Patch(javax.sound.midi.Patch) Track(javax.sound.midi.Track)

Example 8 with Patch

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);
}
Also used : Soundbank(javax.sound.midi.Soundbank) SF2SoundbankReader(com.sun.media.sound.SF2SoundbankReader) File(java.io.File) Patch(javax.sound.midi.Patch)

Example 9 with Patch

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();
    }
}
Also used : Soundbank(javax.sound.midi.Soundbank) BufferedInputStream(java.io.BufferedInputStream) SF2SoundbankReader(com.sun.media.sound.SF2SoundbankReader) File(java.io.File) Patch(javax.sound.midi.Patch) FileInputStream(java.io.FileInputStream)

Example 10 with Patch

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());
}
Also used : Patch(javax.sound.midi.Patch)

Aggregations

Patch (javax.sound.midi.Patch)28 Soundbank (javax.sound.midi.Soundbank)12 Instrument (javax.sound.midi.Instrument)7 SF2SoundbankReader (com.sun.media.sound.SF2SoundbankReader)4 File (java.io.File)4 BufferedInputStream (java.io.BufferedInputStream)3 FileInputStream (java.io.FileInputStream)2 AudioSynthesizer (com.sun.media.sound.AudioSynthesizer)1 EmergencySoundbank (com.sun.media.sound.EmergencySoundbank)1 ModelInstrument (com.sun.media.sound.ModelInstrument)1 ModelPatch (com.sun.media.sound.ModelPatch)1 SF2Instrument (com.sun.media.sound.SF2Instrument)1 SF2InstrumentRegion (com.sun.media.sound.SF2InstrumentRegion)1 SF2Layer (com.sun.media.sound.SF2Layer)1 SF2LayerRegion (com.sun.media.sound.SF2LayerRegion)1 SF2Sample (com.sun.media.sound.SF2Sample)1 SF2Soundbank (com.sun.media.sound.SF2Soundbank)1 SoftSynthesizer (com.sun.media.sound.SoftSynthesizer)1 InputStream (java.io.InputStream)1 URL (java.net.URL)1