From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/examples/Listing4901.java | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/examples/Listing4901.java (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/Listing4901.java') diff --git a/Master/Reference Architectures and Patterns/hjp5/examples/Listing4901.java b/Master/Reference Architectures and Patterns/hjp5/examples/Listing4901.java new file mode 100644 index 0000000..59c0cdd --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/examples/Listing4901.java @@ -0,0 +1,80 @@ +/* Listing4901.java */ + +import java.io.*; +import javax.sound.sampled.*; + +public class Listing4901 +{ + private static void playSampleFile(String name, float pan, float gain) + throws Exception + { + //AudioInputStream öffnen + AudioInputStream ais = AudioSystem.getAudioInputStream( + new File(name) + ); + AudioFormat format = ais.getFormat(); + //ALAW/ULAW samples in PCM konvertieren + if ((format.getEncoding() == AudioFormat.Encoding.ULAW) || + (format.getEncoding() == AudioFormat.Encoding.ALAW)) + { + AudioFormat tmp = new AudioFormat( + AudioFormat.Encoding.PCM_SIGNED, + format.getSampleRate(), + format.getSampleSizeInBits() * 2, + format.getChannels(), + format.getFrameSize() * 2, + format.getFrameRate(), + true + ); + ais = AudioSystem.getAudioInputStream(tmp, ais); + format = tmp; + } + //Clip erzeugen und öffnen + DataLine.Info info = new DataLine.Info( + Clip.class, + format, + ((int) ais.getFrameLength() * format.getFrameSize()) + ); + Clip clip = (Clip)AudioSystem.getLine(info); + clip.open(ais); + //PAN einstellen + FloatControl panControl = (FloatControl)clip.getControl( + FloatControl.Type.PAN + ); + panControl.setValue(pan); + //MASTER_GAIN einstellen + FloatControl gainControl = (FloatControl)clip.getControl( + FloatControl.Type.MASTER_GAIN + ); + gainControl.setValue(gain); + //Clip abspielen + clip.start(); + while (true) { + try { + Thread.sleep(100); + } catch (Exception e) { + //nothing + } + if (!clip.isRunning()) { + break; + } + } + clip.stop(); + clip.close(); + } + + public static void main(String[] args) + { + try { + playSampleFile( + args[0], + Float.parseFloat(args[1]), + Float.parseFloat(args[2]) + ); + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + System.exit(0); + } +} \ No newline at end of file -- cgit v1.2.3