Package stdlib
Class StdAudio
java.lang.Object
stdlib.StdAudio
Standard audio. 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
FieldsModifier and TypeFieldDescriptionprivate static final booleanprivate static final intprivate static byte[]private static intprivate static final intprivate static SourceDataLineprivate static final booleanprivate static final intprivate static final intprivate static final intstatic final intThe sample rate: 44,100 Hz for CD quality audio.private static final booleanprivate static final intprivate static final boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidclose()Closes standard audio.private static AudioInputStreamgetAudioInputStreamFromFile(String filename) private static voidinit()static voidDeprecated.static voidloopInBackground(String filename) Loops an audio file (in .wav, .mid, or .au format) in a background thread.static voidTest client - play an A major scale to standard audio.private static double[]note(double hz, double duration, double amplitude) Unit testsStdAudio.static voidplay(double sample) Writes one sample (between -1.0 and +1.0) to standard audio.static voidplay(double[] samples) Writes the array of samples (between -1.0 and +1.0) to standard audio.static voidDeprecated.replaced byplayInBackground(String filename)static voidplayInBackground(String filename) Plays an audio file (in .wav, .mid, or .au format) in a background thread.static double[]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 voidSaves the double array as an audio file (using .wav or .au format).private static voidstream(AudioInputStream ais)
-
Field Details
-
SAMPLE_RATE
The sample rate: 44,100 Hz for CD quality audio.- See Also:
-
BYTES_PER_SAMPLE
- See Also:
-
BITS_PER_SAMPLE
- See Also:
-
MAX_16_BIT
- See Also:
-
SAMPLE_BUFFER_SIZE
- See Also:
-
MONO
- See Also:
-
STEREO
- See Also:
-
LITTLE_ENDIAN
- See Also:
-
BIG_ENDIAN
- See Also:
-
SIGNED
- See Also:
-
UNSIGNED
- See Also:
-
line
-
buffer
-
bufferSize
-
-
Constructor Details
-
StdAudio
private StdAudio()
-
-
Method Details
-
init
-
getAudioInputStreamFromFile
-
close
Closes standard audio. -
play
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 isDouble.NaN
-
play
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 isDouble.NaNIllegalArgumentException- ifsamplesisnull
-
read
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
Saves the double array as an audio file (using .wav or .au format).- Parameters:
filename- the name of the audio filesamples- the array of samples- Throws:
IllegalArgumentException- if unable to savefilenameIllegalArgumentException- ifsamplesisnullIllegalArgumentException- iffilenameisnullIllegalArgumentException- iffilenameextension is not.wavor.au
-
play
Deprecated.replaced byplayInBackground(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 playfilenameIllegalArgumentException- iffilenameisnull
-
playInBackground
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 playfilenameIllegalArgumentException- iffilenameisnull
-
stream
-
loop
Deprecated.replaced byloopInBackground(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- iffilenameisnull
-
loopInBackground
Loops an audio file (in .wav, .mid, or .au format) in a background thread.- Parameters:
filename- the name of the audio file- Throws:
IllegalArgumentException- iffilenameisnull
-
note
Unit testsStdAudio. -
main
Test client - play an A major scale to standard audio.- Parameters:
args- the command-line arguments
-
loopInBackground(String filename)