Search in sources :

Example 1 with AudioSynthesizer

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

the class GetMidiDevice method main.

public static void main(String[] args) throws Exception {
    AudioSynthesizer synth = new SoftSynthesizer();
    synth.openStream(null, null);
    Receiver recv = synth.getReceiver();
    if (((SoftReceiver) recv).getMidiDevice() != synth) {
        throw new Exception("SoftReceiver.getMidiDevice() doesn't return " + "instance of the synthesizer");
    }
    synth.close();
}
Also used : Receiver(javax.sound.midi.Receiver) SoftReceiver(com.sun.media.sound.SoftReceiver) SoftSynthesizer(com.sun.media.sound.SoftSynthesizer) AudioSynthesizer(com.sun.media.sound.AudioSynthesizer)

Example 2 with AudioSynthesizer

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

the class GetReceiver2 method main.

public static void main(String[] args) throws Exception {
    AudioSynthesizer synth = new SoftSynthesizer();
    Receiver recv = synth.getReceiver();
    assertTrue(recv != null);
    ShortMessage sm = new ShortMessage();
    sm.setMessage(ShortMessage.NOTE_OFF, 0, 64, 64);
    synth.open(new DummySourceDataLine(), null);
    recv.send(sm, -1);
    synth.close();
    try {
        recv.send(sm, -1);
        throw new RuntimeException("Exception not thrown!");
    } catch (Exception e) {
    // Just checking if exception is thrown
    }
}
Also used : ShortMessage(javax.sound.midi.ShortMessage) Receiver(javax.sound.midi.Receiver) SoftSynthesizer(com.sun.media.sound.SoftSynthesizer) AudioSynthesizer(com.sun.media.sound.AudioSynthesizer)

Example 3 with AudioSynthesizer

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

the class NoteOverFlowTest method main.

public static void main(String[] args) throws Exception {
    AudioSynthesizer synth = new SoftSynthesizer();
    AudioFormat format = new AudioFormat(44100, 16, 2, true, false);
    AudioInputStream stream = synth.openStream(format, null);
    // Make all voices busy, e.g.
    // send midi on and midi off on all available voices
    MidiChannel ch1 = synth.getChannels()[0];
    // Use contionus instrument like string ensemble
    ch1.programChange(48);
    for (int i = 0; i < synth.getMaxPolyphony(); i++) {
        ch1.noteOn(64, 64);
        ch1.noteOff(64);
    }
    // Now send single midi on, and midi off message
    ch1.noteOn(64, 64);
    ch1.noteOff(64);
    // Read 10 sec from stream, by this time all voices should be inactvie
    stream.skip(format.getFrameSize() * ((int) (format.getFrameRate() * 20)));
    // If no voice are active, then this test will pass
    VoiceStatus[] v = synth.getVoiceStatus();
    for (int i = 0; i < v.length; i++) {
        if (v[i].active) {
            throw new RuntimeException("Not all voices are inactive!");
        }
    }
    // Close the synthesizer after use
    synth.close();
}
Also used : AudioInputStream(javax.sound.sampled.AudioInputStream) MidiChannel(javax.sound.midi.MidiChannel) SoftSynthesizer(com.sun.media.sound.SoftSynthesizer) AudioFormat(javax.sound.sampled.AudioFormat) AudioSynthesizer(com.sun.media.sound.AudioSynthesizer) VoiceStatus(javax.sound.midi.VoiceStatus)

Example 4 with AudioSynthesizer

use of com.sun.media.sound.AudioSynthesizer in project Zong by Xenoage.

the class MidiToWaveRenderer method render.

/**
 * Render sequence using selected or default soundbank into wave audio file.
 * If activeTracks is not null, only the tracks with the given indices are rendered.
 */
public static void render(Soundbank soundbank, Sequence sequence, Set<Integer> activeTracks, OutputStream wavOutputStream) throws IOException, MidiUnavailableException {
    // Find available AudioSynthesizer.
    AudioSynthesizer synth = findAudioSynthesizer();
    if (synth == null) {
        System.out.println("No AudioSynhtesizer was found!");
        System.exit(1);
    }
    // Open AudioStream from AudioSynthesizer.
    AudioInputStream stream = synth.openStream(null, null);
    // Load user-selected Soundbank into AudioSynthesizer.
    if (soundbank != null) {
        Soundbank defsbk = synth.getDefaultSoundbank();
        if (defsbk != null)
            synth.unloadAllInstruments(defsbk);
        synth.loadAllInstruments(soundbank);
    }
    // Play Sequence into AudioSynthesizer Receiver.
    double total = send(sequence, activeTracks, synth.getReceiver());
    // Calculate how long the WAVE file needs to be.
    long len = (long) (stream.getFormat().getFrameRate() * (total + 4));
    stream = new AudioInputStream(stream, stream.getFormat(), len);
    // Write WAVE file to disk.
    AudioSystem.write(stream, AudioFileFormat.Type.WAVE, wavOutputStream);
    // We are finished, close synthesizer.
    synth.close();
}
Also used : AudioInputStream(javax.sound.sampled.AudioInputStream) AudioSynthesizer(com.sun.media.sound.AudioSynthesizer)

Example 5 with AudioSynthesizer

use of com.sun.media.sound.AudioSynthesizer in project Zong by Xenoage.

the class MidiToWaveRenderer method findAudioSynthesizer.

/*
	 * Find available AudioSynthesizer.
	 */
public static AudioSynthesizer findAudioSynthesizer() throws MidiUnavailableException {
    // First check if default synthesizer is AudioSynthesizer.
    Synthesizer synth = MidiSystem.getSynthesizer();
    if (synth instanceof AudioSynthesizer)
        return (AudioSynthesizer) synth;
    // If default synhtesizer is not AudioSynthesizer, check others.
    Info[] infos = MidiSystem.getMidiDeviceInfo();
    for (val info : infos) {
        MidiDevice dev = MidiSystem.getMidiDevice(info);
        if (dev instanceof AudioSynthesizer)
            return (AudioSynthesizer) dev;
    }
    // No AudioSynthesizer was found, return null.
    return null;
}
Also used : lombok.val(lombok.val) AudioSynthesizer(com.sun.media.sound.AudioSynthesizer) Info(javax.sound.midi.MidiDevice.Info) AudioSynthesizer(com.sun.media.sound.AudioSynthesizer)

Aggregations

AudioSynthesizer (com.sun.media.sound.AudioSynthesizer)9 SoftSynthesizer (com.sun.media.sound.SoftSynthesizer)5 AudioInputStream (javax.sound.sampled.AudioInputStream)4 Info (javax.sound.midi.MidiDevice.Info)3 Receiver (javax.sound.midi.Receiver)3 MidiChannel (javax.sound.midi.MidiChannel)2 ShortMessage (javax.sound.midi.ShortMessage)2 AudioFormat (javax.sound.sampled.AudioFormat)2 lombok.val (lombok.val)2 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 SoftReceiver (com.sun.media.sound.SoftReceiver)1 HashMap (java.util.HashMap)1 Random (java.util.Random)1 Patch (javax.sound.midi.Patch)1 VoiceStatus (javax.sound.midi.VoiceStatus)1