Package stdlib

Class StdAudio

java.lang.Object
stdlib.StdAudio

public final class StdAudio extends Object
This class provides a basic capability for creating, reading, and saving audio.

The audio format uses a sampling rate of 44,100 Hz, 16-bit, monaural.

For additional documentation, see Section 1.5 of Computer Science: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne.

Author:
Robert Sedgewick, Kevin Wayne
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    The sample rate: 44,100 Hz for CD quality audio.
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    Closes standard audio.
    static void
    loop(String filename)
    Loops an audio file (in .wav, .mid, or .au format) in a background thread.
    static void
    main(String[] args)
    Test client - play an A major scale to standard audio.
    static void
    play(double sample)
    Writes one sample (between -1.0 and +1.0) to standard audio.
    static void
    play(double[] samples)
    Writes the array of samples (between -1.0 and +1.0) to standard audio.
    static void
    play(String filename)
    Plays an audio file (in .wav, .mid, or .au format) in a background thread.
    static double[]
    read(String filename)
    Reads audio samples from a file (in .wav or .au format) and returns them as a double array with values between -1.0 and +1.0.
    static void
    save(String filename, double[] samples)
    Saves the double array as an audio file (using .wav or .au format).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • SAMPLE_RATE

      public static final int SAMPLE_RATE
      The sample rate: 44,100 Hz for CD quality audio.
      See Also:
  • Method Details

    • close

      public static void close()
      Closes standard audio.
    • play

      public static void play(double sample)
      Writes one sample (between -1.0 and +1.0) to standard audio. If the sample is outside the range, it will be clipped.
      Parameters:
      sample - the sample to play
      Throws:
      IllegalArgumentException - if the sample is Double.NaN
    • play

      public static void play(double[] samples)
      Writes the array of samples (between -1.0 and +1.0) to standard audio. If a sample is outside the range, it will be clipped.
      Parameters:
      samples - the array of samples to play
      Throws:
      IllegalArgumentException - if any sample is Double.NaN
      IllegalArgumentException - if samples is null
    • read

      public static double[] read(String filename)
      Reads audio samples from a file (in .wav or .au format) and returns them as a double array with values between -1.0 and +1.0. The audio file must be 16-bit with a sampling rate of 44,100. It can be mono or stereo.
      Parameters:
      filename - the name of the audio file
      Returns:
      the array of samples
    • save

      public static void save(String filename, double[] samples)
      Saves the double array as an audio file (using .wav or .au format).
      Parameters:
      filename - the name of the audio file
      samples - the array of samples
      Throws:
      IllegalArgumentException - if unable to save filename
      IllegalArgumentException - if samples is null
      IllegalArgumentException - if filename is null
      IllegalArgumentException - if filename extension is not .wav or .au
    • play

      public static void play(String filename)
      Plays an audio file (in .wav, .mid, or .au format) in a background thread.
      Parameters:
      filename - the name of the audio file
      Throws:
      IllegalArgumentException - if unable to play filename
      IllegalArgumentException - if filename is null
    • loop

      public static void loop(String filename)
      Loops an audio file (in .wav, .mid, or .au format) in a background thread.
      Parameters:
      filename - the name of the audio file
      Throws:
      IllegalArgumentException - if filename is null
    • main

      public static void main(String[] args)
      Test client - play an A major scale to standard audio.
      Parameters:
      args - the command-line arguments