Search in sources :

Example 1 with SF2Soundbank

use of com.sun.media.sound.SF2Soundbank in project jdk8u_jdk by JetBrains.

the class TestPreciseTimestampRendering method createTestSoundbank.

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;
}
Also used : SF2Soundbank(com.sun.media.sound.SF2Soundbank) SF2Layer(com.sun.media.sound.SF2Layer) SF2LayerRegion(com.sun.media.sound.SF2LayerRegion) SF2InstrumentRegion(com.sun.media.sound.SF2InstrumentRegion) SF2Instrument(com.sun.media.sound.SF2Instrument) SF2Sample(com.sun.media.sound.SF2Sample)

Example 2 with SF2Soundbank

use of com.sun.media.sound.SF2Soundbank in project jdk8u_jdk by JetBrains.

the class TestPreciseTimestampRendering method createTestSoundbankWithChannelMixer.

public static Soundbank createTestSoundbankWithChannelMixer() {
    SF2Soundbank soundbank = createTestSoundbank();
    SimpleSoundbank simplesoundbank = new SimpleSoundbank();
    SimpleInstrument simpleinstrument = new SimpleInstrument() {

        public ModelChannelMixer getChannelMixer(MidiChannel channel, AudioFormat format) {
            return new ModelAbstractChannelMixer() {

                boolean active = true;

                public boolean process(float[][] buffer, int offset, int len) {
                    for (int i = 0; i < buffer.length; i++) {
                        float[] cbuffer = buffer[i];
                        for (int j = 0; j < cbuffer.length; j++) {
                            cbuffer[j] = -cbuffer[j];
                        }
                    }
                    return active;
                }

                public void stop() {
                    active = false;
                }
            };
        }
    };
    simpleinstrument.add(soundbank.getInstruments()[0]);
    simplesoundbank.addInstrument(simpleinstrument);
    return simplesoundbank;
}
Also used : SF2Soundbank(com.sun.media.sound.SF2Soundbank) MidiChannel(javax.sound.midi.MidiChannel) SimpleSoundbank(com.sun.media.sound.SimpleSoundbank) AudioFormat(javax.sound.sampled.AudioFormat) ModelAbstractChannelMixer(com.sun.media.sound.ModelAbstractChannelMixer) SimpleInstrument(com.sun.media.sound.SimpleInstrument)

Example 3 with SF2Soundbank

use of com.sun.media.sound.SF2Soundbank in project jdk8u_jdk by JetBrains.

the class NoteOverFlowTest2 method main.

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();
}
Also used : HashMap(java.util.HashMap) SF2Soundbank(com.sun.media.sound.SF2Soundbank) MidiChannel(javax.sound.midi.MidiChannel) SoftSynthesizer(com.sun.media.sound.SoftSynthesizer) SF2LayerRegion(com.sun.media.sound.SF2LayerRegion) SF2InstrumentRegion(com.sun.media.sound.SF2InstrumentRegion) SF2Sample(com.sun.media.sound.SF2Sample) AudioInputStream(javax.sound.sampled.AudioInputStream) SF2Layer(com.sun.media.sound.SF2Layer) AudioFormat(javax.sound.sampled.AudioFormat) Patch(javax.sound.midi.Patch) AudioSynthesizer(com.sun.media.sound.AudioSynthesizer) SF2Instrument(com.sun.media.sound.SF2Instrument)

Aggregations

SF2Soundbank (com.sun.media.sound.SF2Soundbank)3 SF2Instrument (com.sun.media.sound.SF2Instrument)2 SF2InstrumentRegion (com.sun.media.sound.SF2InstrumentRegion)2 SF2Layer (com.sun.media.sound.SF2Layer)2 SF2LayerRegion (com.sun.media.sound.SF2LayerRegion)2 SF2Sample (com.sun.media.sound.SF2Sample)2 MidiChannel (javax.sound.midi.MidiChannel)2 AudioFormat (javax.sound.sampled.AudioFormat)2 AudioSynthesizer (com.sun.media.sound.AudioSynthesizer)1 ModelAbstractChannelMixer (com.sun.media.sound.ModelAbstractChannelMixer)1 SimpleInstrument (com.sun.media.sound.SimpleInstrument)1 SimpleSoundbank (com.sun.media.sound.SimpleSoundbank)1 SoftSynthesizer (com.sun.media.sound.SoftSynthesizer)1 HashMap (java.util.HashMap)1 Patch (javax.sound.midi.Patch)1 AudioInputStream (javax.sound.sampled.AudioInputStream)1