Search in sources :

Example 61 with AudioFormat

use of javax.sound.sampled.AudioFormat in project ACS by ACS-Community.

the class AlarmSound method play.

/**
	 * Play the sound for the given priority
	 * 
	 * @param priority The priority of the alarm
	 */
private void play(int priority) throws Exception {
    if (priority < 0 || priority > 3) {
        throw new IllegalStateException("Invalid alarm priority " + priority);
    }
    URL url = soundURLs[priority];
    AudioInputStream audioInputStream = null;
    try {
        audioInputStream = AudioSystem.getAudioInputStream(url);
    } catch (Throwable t) {
        // If there is an error then the panel does nothing
        // It might happen for example if another application
        // is locking the audio.
        System.err.println(t.getMessage());
        t.printStackTrace();
        return;
    }
    // Obtain the information about the AudioInputStream
    AudioFormat audioFormat = audioInputStream.getFormat();
    SourceDataLine line = null;
    DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
    // Get the list of available mixers
    Mixer.Info[] mixersInfo = AudioSystem.getMixerInfo();
    // one is available is found
    for (int i = 0; i < mixersInfo.length && line == null; i++) {
        Mixer.Info mi = mixersInfo[i];
        try {
            Mixer mixer = AudioSystem.getMixer(mi);
            line = (SourceDataLine) mixer.getLine(info);
        } catch (LineUnavailableException lue) {
            System.err.println("Line unavailable " + lue.getMessage());
            line = null;
            continue;
        } catch (Throwable t) {
            System.err.println("Exception getting the line " + t.getMessage());
            line = null;
            continue;
        }
        try {
            line.open(audioFormat, EXTERNAL_BUFFER_SIZE);
        } catch (Throwable t) {
            System.err.println("Error opeining the line: " + t.getMessage());
            line = null;
            continue;
        }
        try {
            line.start();
        } catch (Throwable t) {
            System.err.println("Error starting the line: " + t.getMessage());
            line = null;
            continue;
        }
        try {
            playOnLine(line, audioInputStream);
        } catch (Throwable t) {
            System.err.println("Error playing: " + t.getMessage());
            line = null;
            continue;
        }
        // plays what's left and and closes the audioChannel
        line.drain();
        line.close();
    }
}
Also used : DataLine(javax.sound.sampled.DataLine) SourceDataLine(javax.sound.sampled.SourceDataLine) Mixer(javax.sound.sampled.Mixer) LineUnavailableException(javax.sound.sampled.LineUnavailableException) URL(java.net.URL) AudioInputStream(javax.sound.sampled.AudioInputStream) SourceDataLine(javax.sound.sampled.SourceDataLine) AudioFormat(javax.sound.sampled.AudioFormat)

Example 62 with AudioFormat

use of javax.sound.sampled.AudioFormat 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)

Example 63 with AudioFormat

use of javax.sound.sampled.AudioFormat in project jdk8u_jdk by JetBrains.

the class AlawCodec method getConvertedStream.

// OLD CODE
/**
     * Opens the codec with the specified parameters.
     * @param stream stream from which data to be processed should be read
     * @param outputFormat desired data format of the stream after processing
     * @return stream from which processed data may be read
     * @throws IllegalArgumentException if the format combination supplied is
     * not supported.
     */
/*  public AudioInputStream getConvertedStream(AudioFormat outputFormat, AudioInputStream stream) { */
private AudioInputStream getConvertedStream(AudioFormat outputFormat, AudioInputStream stream) {
    AudioInputStream cs = null;
    AudioFormat inputFormat = stream.getFormat();
    if (inputFormat.matches(outputFormat)) {
        cs = stream;
    } else {
        cs = (AudioInputStream) (new AlawCodecStream(stream, outputFormat));
    }
    return cs;
}
Also used : AudioInputStream(javax.sound.sampled.AudioInputStream) AudioFormat(javax.sound.sampled.AudioFormat)

Example 64 with AudioFormat

use of javax.sound.sampled.AudioFormat in project jdk8u_jdk by JetBrains.

the class AlawCodec method getAudioInputStream.

/**
     */
public AudioInputStream getAudioInputStream(AudioFormat.Encoding targetEncoding, AudioInputStream sourceStream) {
    AudioFormat sourceFormat = sourceStream.getFormat();
    AudioFormat.Encoding sourceEncoding = sourceFormat.getEncoding();
    if (sourceEncoding.equals(targetEncoding)) {
        return sourceStream;
    } else {
        AudioFormat targetFormat = null;
        if (!isConversionSupported(targetEncoding, sourceStream.getFormat())) {
            throw new IllegalArgumentException("Unsupported conversion: " + sourceStream.getFormat().toString() + " to " + targetEncoding.toString());
        }
        if (sourceEncoding.equals(AudioFormat.Encoding.ALAW) && targetEncoding.equals(AudioFormat.Encoding.PCM_SIGNED)) {
            targetFormat = new AudioFormat(targetEncoding, sourceFormat.getSampleRate(), 16, sourceFormat.getChannels(), 2 * sourceFormat.getChannels(), sourceFormat.getSampleRate(), sourceFormat.isBigEndian());
        } else if (sourceEncoding.equals(AudioFormat.Encoding.PCM_SIGNED) && targetEncoding.equals(AudioFormat.Encoding.ALAW)) {
            targetFormat = new AudioFormat(targetEncoding, sourceFormat.getSampleRate(), 8, sourceFormat.getChannels(), sourceFormat.getChannels(), sourceFormat.getSampleRate(), false);
        } else {
            throw new IllegalArgumentException("Unsupported conversion: " + sourceStream.getFormat().toString() + " to " + targetEncoding.toString());
        }
        return getAudioInputStream(targetFormat, sourceStream);
    }
}
Also used : AudioFormat(javax.sound.sampled.AudioFormat)

Example 65 with AudioFormat

use of javax.sound.sampled.AudioFormat in project jdk8u_jdk by JetBrains.

the class AlawCodec method getOutputFormats.

/**
     * Obtains the set of output formats supported by the codec
     * given a particular input format.
     * If no output formats are supported for this input format,
     * returns an array of length 0.
     * @return array of supported output formats.
     */
/*  public AudioFormat[] getOutputFormats(AudioFormat inputFormat) { */
private AudioFormat[] getOutputFormats(AudioFormat inputFormat) {
    Vector formats = new Vector();
    AudioFormat format;
    if (AudioFormat.Encoding.PCM_SIGNED.equals(inputFormat.getEncoding())) {
        format = new AudioFormat(AudioFormat.Encoding.ALAW, inputFormat.getSampleRate(), 8, inputFormat.getChannels(), inputFormat.getChannels(), inputFormat.getSampleRate(), false);
        formats.addElement(format);
    }
    if (AudioFormat.Encoding.ALAW.equals(inputFormat.getEncoding())) {
        format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, inputFormat.getSampleRate(), 16, inputFormat.getChannels(), inputFormat.getChannels() * 2, inputFormat.getSampleRate(), false);
        formats.addElement(format);
        format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, inputFormat.getSampleRate(), 16, inputFormat.getChannels(), inputFormat.getChannels() * 2, inputFormat.getSampleRate(), true);
        formats.addElement(format);
    }
    AudioFormat[] formatArray = new AudioFormat[formats.size()];
    for (int i = 0; i < formatArray.length; i++) {
        formatArray[i] = (AudioFormat) (formats.elementAt(i));
    }
    return formatArray;
}
Also used : AudioFormat(javax.sound.sampled.AudioFormat) Vector(java.util.Vector)

Aggregations

AudioFormat (javax.sound.sampled.AudioFormat)112 AudioInputStream (javax.sound.sampled.AudioInputStream)43 IOException (java.io.IOException)24 DataLine (javax.sound.sampled.DataLine)21 SourceDataLine (javax.sound.sampled.SourceDataLine)21 AudioFileFormat (javax.sound.sampled.AudioFileFormat)18 UnsupportedAudioFileException (javax.sound.sampled.UnsupportedAudioFileException)18 LineUnavailableException (javax.sound.sampled.LineUnavailableException)17 File (java.io.File)15 InputStream (java.io.InputStream)14 ByteArrayInputStream (java.io.ByteArrayInputStream)13 TargetDataLine (javax.sound.sampled.TargetDataLine)7 MpegAudioFormat (javazoom.spi.mpeg.sampled.file.MpegAudioFormat)7 BufferedInputStream (java.io.BufferedInputStream)6 FileInputStream (java.io.FileInputStream)6 ByteArrayOutputStream (java.io.ByteArrayOutputStream)5 DataInputStream (java.io.DataInputStream)5 Vector (java.util.Vector)5 SequenceInputStream (java.io.SequenceInputStream)4 Clip (javax.sound.sampled.Clip)4