Search in sources :

Example 1 with Patch

use of javax.sound.midi.Patch in project jdk8u_jdk by JetBrains.

the class LoadAllInstruments method main.

public static void main(String[] args) throws Exception {
    AudioSynthesizer synth = new SoftSynthesizer();
    synth.openStream(null, null);
    Soundbank defsbk = synth.getDefaultSoundbank();
    if (defsbk != null) {
        synth.unloadAllInstruments(defsbk);
        SimpleSoundbank sbk = new SimpleSoundbank();
        SimpleInstrument ins = new SimpleInstrument();
        ins.setPatch(new Patch(0, 1));
        sbk.addInstrument(ins);
        SimpleInstrument ins2 = new SimpleInstrument();
        ins2.setPatch(new Patch(0, 2));
        sbk.addInstrument(ins2);
        synth.loadAllInstruments(sbk);
        assertTrue(synth.getLoadedInstruments().length == 2);
    }
    synth.close();
}
Also used : Soundbank(javax.sound.midi.Soundbank) Patch(javax.sound.midi.Patch)

Example 2 with Patch

use of javax.sound.midi.Patch in project jdk8u_jdk by JetBrains.

the class LoadInstruments method main.

public static void main(String[] args) throws Exception {
    AudioSynthesizer synth = new SoftSynthesizer();
    synth.openStream(null, null);
    Soundbank defsbk = synth.getDefaultSoundbank();
    if (defsbk != null) {
        synth.unloadAllInstruments(defsbk);
        SimpleSoundbank sbk = new SimpleSoundbank();
        SimpleInstrument ins = new SimpleInstrument();
        ins.setPatch(new Patch(0, 1));
        sbk.addInstrument(ins);
        SimpleInstrument ins2 = new SimpleInstrument();
        ins2.setPatch(new Patch(0, 2));
        sbk.addInstrument(ins2);
        synth.loadInstruments(sbk, new Patch[] { ins2.getPatch() });
        assertTrue(synth.getLoadedInstruments().length == 1);
    }
    synth.close();
}
Also used : Soundbank(javax.sound.midi.Soundbank) Patch(javax.sound.midi.Patch)

Example 3 with Patch

use of javax.sound.midi.Patch in project jdk8u_jdk by JetBrains.

the class NewSoftTuningPatchByteArray method main.

public static void main(String[] args) throws Exception {
    // RealTime: Scale/Octave tuning in 1-byte format
    int[] msg = { 0xf0, 0x7f, 0x7f, 0x08, 0x08, 0x03, 0x7f, 0x7f, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 51, 52, 0xf7 };
    int[] oct = { 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 51, 52 };
    byte[] bmsg = new byte[msg.length];
    for (int i = 0; i < bmsg.length; i++) bmsg[i] = (byte) msg[i];
    SoftTuning tuning = new SoftTuning(new Patch(8, 32), bmsg);
    double[] tunings = tuning.getTuning();
    for (int i = 0; i < tunings.length; i++) assertTrue(Math.abs(tunings[i] - (i * 100 + (oct[i % 12] - 64))) < 0.00001);
    assertEquals(tuning.getPatch().getProgram(), 32);
    assertEquals(tuning.getPatch().getBank(), 8);
}
Also used : Patch(javax.sound.midi.Patch)

Example 4 with Patch

use of javax.sound.midi.Patch in project jdk8u_jdk by JetBrains.

the class SimpleSoundbank 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 5 with Patch

use of javax.sound.midi.Patch in project jdk8u_jdk by JetBrains.

the class EmergencySoundbank method createSoundbank.

public static SF2Soundbank createSoundbank() throws Exception {
    SF2Soundbank sf2 = new SF2Soundbank();
    sf2.setName("Emergency GM sound set");
    sf2.setVendor("Generated");
    sf2.setDescription("Emergency generated soundbank");
    /*
         *  percussion instruments
         */
    SF2Layer bass_drum = new_bass_drum(sf2);
    SF2Layer snare_drum = new_snare_drum(sf2);
    SF2Layer tom = new_tom(sf2);
    SF2Layer open_hihat = new_open_hihat(sf2);
    SF2Layer closed_hihat = new_closed_hihat(sf2);
    SF2Layer crash_cymbal = new_crash_cymbal(sf2);
    SF2Layer side_stick = new_side_stick(sf2);
    SF2Layer[] drums = new SF2Layer[128];
    drums[35] = bass_drum;
    drums[36] = bass_drum;
    drums[38] = snare_drum;
    drums[40] = snare_drum;
    drums[41] = tom;
    drums[43] = tom;
    drums[45] = tom;
    drums[47] = tom;
    drums[48] = tom;
    drums[50] = tom;
    drums[42] = closed_hihat;
    drums[44] = closed_hihat;
    drums[46] = open_hihat;
    drums[49] = crash_cymbal;
    drums[51] = crash_cymbal;
    drums[52] = crash_cymbal;
    drums[55] = crash_cymbal;
    drums[57] = crash_cymbal;
    drums[59] = crash_cymbal;
    // Use side_stick for missing drums:
    drums[37] = side_stick;
    drums[39] = side_stick;
    drums[53] = side_stick;
    drums[54] = side_stick;
    drums[56] = side_stick;
    drums[58] = side_stick;
    drums[69] = side_stick;
    drums[70] = side_stick;
    drums[75] = side_stick;
    drums[60] = side_stick;
    drums[61] = side_stick;
    drums[62] = side_stick;
    drums[63] = side_stick;
    drums[64] = side_stick;
    drums[65] = side_stick;
    drums[66] = side_stick;
    drums[67] = side_stick;
    drums[68] = side_stick;
    drums[71] = side_stick;
    drums[72] = side_stick;
    drums[73] = side_stick;
    drums[74] = side_stick;
    drums[76] = side_stick;
    drums[77] = side_stick;
    drums[78] = side_stick;
    drums[79] = side_stick;
    drums[80] = side_stick;
    drums[81] = side_stick;
    SF2Instrument drum_instrument = new SF2Instrument(sf2);
    drum_instrument.setName("Standard Kit");
    drum_instrument.setPatch(new ModelPatch(0, 0, true));
    sf2.addInstrument(drum_instrument);
    for (int i = 0; i < drums.length; i++) {
        if (drums[i] != null) {
            SF2InstrumentRegion region = new SF2InstrumentRegion();
            region.setLayer(drums[i]);
            region.putBytes(SF2InstrumentRegion.GENERATOR_KEYRANGE, new byte[] { (byte) i, (byte) i });
            drum_instrument.getRegions().add(region);
        }
    }
    /*
         *  melodic instruments
         */
    SF2Layer gpiano = new_gpiano(sf2);
    SF2Layer gpiano2 = new_gpiano2(sf2);
    SF2Layer gpiano_hammer = new_piano_hammer(sf2);
    SF2Layer piano1 = new_piano1(sf2);
    SF2Layer epiano1 = new_epiano1(sf2);
    SF2Layer epiano2 = new_epiano2(sf2);
    SF2Layer guitar = new_guitar1(sf2);
    SF2Layer guitar_pick = new_guitar_pick(sf2);
    SF2Layer guitar_dist = new_guitar_dist(sf2);
    SF2Layer bass1 = new_bass1(sf2);
    SF2Layer bass2 = new_bass2(sf2);
    SF2Layer synthbass = new_synthbass(sf2);
    SF2Layer string2 = new_string2(sf2);
    SF2Layer orchhit = new_orchhit(sf2);
    SF2Layer choir = new_choir(sf2);
    SF2Layer solostring = new_solostring(sf2);
    SF2Layer organ = new_organ(sf2);
    SF2Layer ch_organ = new_ch_organ(sf2);
    SF2Layer bell = new_bell(sf2);
    SF2Layer flute = new_flute(sf2);
    SF2Layer timpani = new_timpani(sf2);
    SF2Layer melodic_toms = new_melodic_toms(sf2);
    SF2Layer trumpet = new_trumpet(sf2);
    SF2Layer trombone = new_trombone(sf2);
    SF2Layer brass_section = new_brass_section(sf2);
    SF2Layer horn = new_horn(sf2);
    SF2Layer sax = new_sax(sf2);
    SF2Layer oboe = new_oboe(sf2);
    SF2Layer bassoon = new_bassoon(sf2);
    SF2Layer clarinet = new_clarinet(sf2);
    SF2Layer reverse_cymbal = new_reverse_cymbal(sf2);
    SF2Layer defaultsound = piano1;
    newInstrument(sf2, "Piano", new Patch(0, 0), gpiano, gpiano_hammer);
    newInstrument(sf2, "Piano", new Patch(0, 1), gpiano2, gpiano_hammer);
    newInstrument(sf2, "Piano", new Patch(0, 2), piano1);
    {
        SF2Instrument ins = newInstrument(sf2, "Honky-tonk Piano", new Patch(0, 3), piano1, piano1);
        SF2InstrumentRegion region = ins.getRegions().get(0);
        region.putInteger(SF2Region.GENERATOR_INITIALFILTERFC, 80);
        region.putInteger(SF2Region.GENERATOR_FINETUNE, 30);
        region = ins.getRegions().get(1);
        region.putInteger(SF2Region.GENERATOR_INITIALFILTERFC, 30);
    }
    newInstrument(sf2, "Rhodes", new Patch(0, 4), epiano2);
    newInstrument(sf2, "Rhodes", new Patch(0, 5), epiano2);
    newInstrument(sf2, "Clavinet", new Patch(0, 6), epiano1);
    newInstrument(sf2, "Clavinet", new Patch(0, 7), epiano1);
    newInstrument(sf2, "Rhodes", new Patch(0, 8), epiano2);
    newInstrument(sf2, "Bell", new Patch(0, 9), bell);
    newInstrument(sf2, "Bell", new Patch(0, 10), bell);
    newInstrument(sf2, "Vibraphone", new Patch(0, 11), bell);
    newInstrument(sf2, "Marimba", new Patch(0, 12), bell);
    newInstrument(sf2, "Marimba", new Patch(0, 13), bell);
    newInstrument(sf2, "Bell", new Patch(0, 14), bell);
    newInstrument(sf2, "Rock Organ", new Patch(0, 15), organ);
    newInstrument(sf2, "Rock Organ", new Patch(0, 16), organ);
    newInstrument(sf2, "Perc Organ", new Patch(0, 17), organ);
    newInstrument(sf2, "Rock Organ", new Patch(0, 18), organ);
    newInstrument(sf2, "Church Organ", new Patch(0, 19), ch_organ);
    newInstrument(sf2, "Accordion", new Patch(0, 20), organ);
    newInstrument(sf2, "Accordion", new Patch(0, 21), organ);
    newInstrument(sf2, "Accordion", new Patch(0, 22), organ);
    newInstrument(sf2, "Accordion", new Patch(0, 23), organ);
    newInstrument(sf2, "Guitar", new Patch(0, 24), guitar, guitar_pick);
    newInstrument(sf2, "Guitar", new Patch(0, 25), guitar, guitar_pick);
    newInstrument(sf2, "Guitar", new Patch(0, 26), guitar, guitar_pick);
    newInstrument(sf2, "Guitar", new Patch(0, 27), guitar, guitar_pick);
    newInstrument(sf2, "Guitar", new Patch(0, 28), guitar, guitar_pick);
    newInstrument(sf2, "Distorted Guitar", new Patch(0, 29), guitar_dist);
    newInstrument(sf2, "Distorted Guitar", new Patch(0, 30), guitar_dist);
    newInstrument(sf2, "Guitar", new Patch(0, 31), guitar, guitar_pick);
    newInstrument(sf2, "Finger Bass", new Patch(0, 32), bass1);
    newInstrument(sf2, "Finger Bass", new Patch(0, 33), bass1);
    newInstrument(sf2, "Finger Bass", new Patch(0, 34), bass1);
    newInstrument(sf2, "Frettless Bass", new Patch(0, 35), bass2);
    newInstrument(sf2, "Frettless Bass", new Patch(0, 36), bass2);
    newInstrument(sf2, "Frettless Bass", new Patch(0, 37), bass2);
    newInstrument(sf2, "Synth Bass1", new Patch(0, 38), synthbass);
    newInstrument(sf2, "Synth Bass2", new Patch(0, 39), synthbass);
    newInstrument(sf2, "Solo String", new Patch(0, 40), string2, solostring);
    newInstrument(sf2, "Solo String", new Patch(0, 41), string2, solostring);
    newInstrument(sf2, "Solo String", new Patch(0, 42), string2, solostring);
    newInstrument(sf2, "Solo String", new Patch(0, 43), string2, solostring);
    newInstrument(sf2, "Solo String", new Patch(0, 44), string2, solostring);
    newInstrument(sf2, "Def", new Patch(0, 45), defaultsound);
    newInstrument(sf2, "Harp", new Patch(0, 46), bell);
    newInstrument(sf2, "Timpani", new Patch(0, 47), timpani);
    newInstrument(sf2, "Strings", new Patch(0, 48), string2);
    SF2Instrument slow_strings = newInstrument(sf2, "Slow Strings", new Patch(0, 49), string2);
    SF2InstrumentRegion region = slow_strings.getRegions().get(0);
    region.putInteger(SF2Region.GENERATOR_ATTACKVOLENV, 2500);
    region.putInteger(SF2Region.GENERATOR_RELEASEVOLENV, 2000);
    newInstrument(sf2, "Synth Strings", new Patch(0, 50), string2);
    newInstrument(sf2, "Synth Strings", new Patch(0, 51), string2);
    newInstrument(sf2, "Choir", new Patch(0, 52), choir);
    newInstrument(sf2, "Choir", new Patch(0, 53), choir);
    newInstrument(sf2, "Choir", new Patch(0, 54), choir);
    {
        SF2Instrument ins = newInstrument(sf2, "Orch Hit", new Patch(0, 55), orchhit, orchhit, timpani);
        region = ins.getRegions().get(0);
        region.putInteger(SF2Region.GENERATOR_COARSETUNE, -12);
        region.putInteger(SF2Region.GENERATOR_INITIALATTENUATION, -100);
    }
    newInstrument(sf2, "Trumpet", new Patch(0, 56), trumpet);
    newInstrument(sf2, "Trombone", new Patch(0, 57), trombone);
    newInstrument(sf2, "Trombone", new Patch(0, 58), trombone);
    newInstrument(sf2, "Trumpet", new Patch(0, 59), trumpet);
    newInstrument(sf2, "Horn", new Patch(0, 60), horn);
    newInstrument(sf2, "Brass Section", new Patch(0, 61), brass_section);
    newInstrument(sf2, "Brass Section", new Patch(0, 62), brass_section);
    newInstrument(sf2, "Brass Section", new Patch(0, 63), brass_section);
    newInstrument(sf2, "Sax", new Patch(0, 64), sax);
    newInstrument(sf2, "Sax", new Patch(0, 65), sax);
    newInstrument(sf2, "Sax", new Patch(0, 66), sax);
    newInstrument(sf2, "Sax", new Patch(0, 67), sax);
    newInstrument(sf2, "Oboe", new Patch(0, 68), oboe);
    newInstrument(sf2, "Horn", new Patch(0, 69), horn);
    newInstrument(sf2, "Bassoon", new Patch(0, 70), bassoon);
    newInstrument(sf2, "Clarinet", new Patch(0, 71), clarinet);
    newInstrument(sf2, "Flute", new Patch(0, 72), flute);
    newInstrument(sf2, "Flute", new Patch(0, 73), flute);
    newInstrument(sf2, "Flute", new Patch(0, 74), flute);
    newInstrument(sf2, "Flute", new Patch(0, 75), flute);
    newInstrument(sf2, "Flute", new Patch(0, 76), flute);
    newInstrument(sf2, "Flute", new Patch(0, 77), flute);
    newInstrument(sf2, "Flute", new Patch(0, 78), flute);
    newInstrument(sf2, "Flute", new Patch(0, 79), flute);
    newInstrument(sf2, "Organ", new Patch(0, 80), organ);
    newInstrument(sf2, "Organ", new Patch(0, 81), organ);
    newInstrument(sf2, "Flute", new Patch(0, 82), flute);
    newInstrument(sf2, "Organ", new Patch(0, 83), organ);
    newInstrument(sf2, "Organ", new Patch(0, 84), organ);
    newInstrument(sf2, "Choir", new Patch(0, 85), choir);
    newInstrument(sf2, "Organ", new Patch(0, 86), organ);
    newInstrument(sf2, "Organ", new Patch(0, 87), organ);
    newInstrument(sf2, "Synth Strings", new Patch(0, 88), string2);
    newInstrument(sf2, "Organ", new Patch(0, 89), organ);
    newInstrument(sf2, "Def", new Patch(0, 90), defaultsound);
    newInstrument(sf2, "Choir", new Patch(0, 91), choir);
    newInstrument(sf2, "Organ", new Patch(0, 92), organ);
    newInstrument(sf2, "Organ", new Patch(0, 93), organ);
    newInstrument(sf2, "Organ", new Patch(0, 94), organ);
    newInstrument(sf2, "Organ", new Patch(0, 95), organ);
    newInstrument(sf2, "Organ", new Patch(0, 96), organ);
    newInstrument(sf2, "Organ", new Patch(0, 97), organ);
    newInstrument(sf2, "Bell", new Patch(0, 98), bell);
    newInstrument(sf2, "Organ", new Patch(0, 99), organ);
    newInstrument(sf2, "Organ", new Patch(0, 100), organ);
    newInstrument(sf2, "Organ", new Patch(0, 101), organ);
    newInstrument(sf2, "Def", new Patch(0, 102), defaultsound);
    newInstrument(sf2, "Synth Strings", new Patch(0, 103), string2);
    newInstrument(sf2, "Def", new Patch(0, 104), defaultsound);
    newInstrument(sf2, "Def", new Patch(0, 105), defaultsound);
    newInstrument(sf2, "Def", new Patch(0, 106), defaultsound);
    newInstrument(sf2, "Def", new Patch(0, 107), defaultsound);
    newInstrument(sf2, "Marimba", new Patch(0, 108), bell);
    newInstrument(sf2, "Sax", new Patch(0, 109), sax);
    newInstrument(sf2, "Solo String", new Patch(0, 110), string2, solostring);
    newInstrument(sf2, "Oboe", new Patch(0, 111), oboe);
    newInstrument(sf2, "Bell", new Patch(0, 112), bell);
    newInstrument(sf2, "Melodic Toms", new Patch(0, 113), melodic_toms);
    newInstrument(sf2, "Marimba", new Patch(0, 114), bell);
    newInstrument(sf2, "Melodic Toms", new Patch(0, 115), melodic_toms);
    newInstrument(sf2, "Melodic Toms", new Patch(0, 116), melodic_toms);
    newInstrument(sf2, "Melodic Toms", new Patch(0, 117), melodic_toms);
    newInstrument(sf2, "Reverse Cymbal", new Patch(0, 118), reverse_cymbal);
    newInstrument(sf2, "Reverse Cymbal", new Patch(0, 119), reverse_cymbal);
    newInstrument(sf2, "Guitar", new Patch(0, 120), guitar);
    newInstrument(sf2, "Def", new Patch(0, 121), defaultsound);
    {
        SF2Instrument ins = newInstrument(sf2, "Seashore/Reverse Cymbal", new Patch(0, 122), reverse_cymbal);
        region = ins.getRegions().get(0);
        region.putInteger(SF2Region.GENERATOR_SUSTAINVOLENV, 1000);
        region.putInteger(SF2Region.GENERATOR_DECAYVOLENV, 18500);
        region.putInteger(SF2Region.GENERATOR_RELEASEVOLENV, 4500);
        region.putInteger(SF2Region.GENERATOR_INITIALFILTERFC, -4500);
    }
    {
        SF2Instrument ins = newInstrument(sf2, "Bird/Flute", new Patch(0, 123), flute);
        region = ins.getRegions().get(0);
        region.putInteger(SF2Region.GENERATOR_COARSETUNE, 24);
        region.putInteger(SF2Region.GENERATOR_DECAYVOLENV, -3000);
        region.putInteger(SF2Region.GENERATOR_SUSTAINVOLENV, 1000);
    }
    newInstrument(sf2, "Def", new Patch(0, 124), side_stick);
    {
        SF2Instrument ins = newInstrument(sf2, "Seashore/Reverse Cymbal", new Patch(0, 125), reverse_cymbal);
        region = ins.getRegions().get(0);
        region.putInteger(SF2Region.GENERATOR_SUSTAINVOLENV, 1000);
        region.putInteger(SF2Region.GENERATOR_DECAYVOLENV, 18500);
        region.putInteger(SF2Region.GENERATOR_RELEASEVOLENV, 4500);
        region.putInteger(SF2Region.GENERATOR_INITIALFILTERFC, -4500);
    }
    newInstrument(sf2, "Applause/crash_cymbal", new Patch(0, 126), crash_cymbal);
    newInstrument(sf2, "Gunshot/side_stick", new Patch(0, 127), side_stick);
    for (SF2Instrument instrument : sf2.getInstruments()) {
        Patch patch = instrument.getPatch();
        if (patch instanceof ModelPatch) {
            if (((ModelPatch) patch).isPercussion())
                continue;
        }
        instrument.setName(general_midi_instruments[patch.getProgram()]);
    }
    return sf2;
}
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