public final class AudioDispatcher
extends java.lang.Object
implements java.lang.Runnable
Constructor and Description |
---|
AudioDispatcher(javax.sound.sampled.AudioInputStream stream,
int audioBufferSize,
int bufferOverlap)
Create a new dispatcher from a stream.
|
AudioDispatcher(int audioBufferSize) |
Modifier and Type | Method and Description |
---|---|
void |
addAudioProcessor(AudioProcessor audioProcessor)
Adds an AudioProcessor to the chain of processors.
|
static double |
determineDuration(java.io.File audioFile) |
long |
durationInFrames()
Returns the length of the stream, expressed in sample frames rather than bytes.
|
double |
durationInSeconds()
Returns the duration of the stream in seconds.
|
static AudioDispatcher |
fromByteArray(byte[] byteArray,
javax.sound.sampled.AudioFormat audioFormat,
int audioBufferSize,
int bufferOverlap)
Create a stream from an array of bytes and use that to create a new
AudioDispatcher.
|
static AudioDispatcher |
fromDefaultMicrophone(int audioBufferSize,
int bufferOverlap)
Create a new AudioDispatcher connected to the default microphone.
|
static AudioDispatcher |
fromFile(java.io.File audioFile,
int size,
int overlap)
Create a stream from a file and use that to create a new AudioDispatcher
|
static AudioDispatcher |
fromFloatArray(float[] floatArray,
int sampleRate,
int audioBufferSize,
int bufferOverlap)
Create a stream from an array of floats and use that to create a new
AudioDispatcher.
|
static AudioDispatcher |
fromURL(java.net.URL audioStream,
int size,
int overlap)
Create a stream from an URL and use that to create a new AudioDispatcher
|
javax.sound.sampled.AudioFormat |
getFormat() |
void |
removeAudioProcessor(AudioProcessor audioProcessor)
Removes an AudioProcessor to the chain of processors and calls processingFinished.
|
void |
run() |
float |
secondsProcessed() |
void |
setStepSizeAndOverlap(int audioBufferSize,
int bufferOverlap)
Set a new step size and overlap size.
|
void |
setZeroPad(boolean zeroPad)
if zero pad is true then the first buffer is only filled up to buffer size - hop size
E.g.
|
void |
skip(double seconds)
Skip a number of seconds before processing the stream.
|
void |
stop()
Stops dispatching audio data.
|
public AudioDispatcher(javax.sound.sampled.AudioInputStream stream, int audioBufferSize, int bufferOverlap) throws javax.sound.sampled.UnsupportedAudioFileException
stream
- The stream to read data from.audioBufferSize
- The size of the buffer defines how much samples are processed
in one step. Common values are 1024,2048.bufferOverlap
- How much consecutive buffers overlap (in samples). Half of the
AudioBufferSize is common (512, 1024) for an FFT.javax.sound.sampled.UnsupportedAudioFileException
- If an unsupported format is used.public AudioDispatcher(int audioBufferSize)
public double durationInSeconds()
public long durationInFrames()
public static double determineDuration(java.io.File audioFile)
public void skip(double seconds)
seconds
- public void setStepSizeAndOverlap(int audioBufferSize, int bufferOverlap)
audioBufferSize
- The size of the buffer defines how much samples are processed
in one step. Common values are 1024,2048.bufferOverlap
- How much consecutive buffers overlap (in samples). Half of the
AudioBufferSize is common (512, 1024) for an FFT.public void setZeroPad(boolean zeroPad)
zeroPad
- true if the buffer should be zeropadded, false otherwise.public void addAudioProcessor(AudioProcessor audioProcessor)
audioProcessor
- The AudioProcessor to add.public void removeAudioProcessor(AudioProcessor audioProcessor)
audioProcessor
- The AudioProcessor to add.public void run()
run
in interface java.lang.Runnable
public void stop()
public javax.sound.sampled.AudioFormat getFormat()
public static AudioDispatcher fromFile(java.io.File audioFile, int size, int overlap) throws javax.sound.sampled.UnsupportedAudioFileException, java.io.IOException
audioFile
- The file.size
- The number of samples used in the buffer.overlap
- javax.sound.sampled.UnsupportedAudioFileException
- If the audio file is not supported.java.io.IOException
- When an error occurs reading the file.public static AudioDispatcher fromURL(java.net.URL audioStream, int size, int overlap) throws javax.sound.sampled.UnsupportedAudioFileException, java.io.IOException
audioStream
- The URL describing the stream..size
- The number of samples used in the buffer.overlap
- javax.sound.sampled.UnsupportedAudioFileException
- If the audio file is not supported.java.io.IOException
- When an error occurs reading the file.public static AudioDispatcher fromByteArray(byte[] byteArray, javax.sound.sampled.AudioFormat audioFormat, int audioBufferSize, int bufferOverlap) throws javax.sound.sampled.UnsupportedAudioFileException
byteArray
- An array of bytes, containing audio information.audioFormat
- The format of the audio represented using the bytes.audioBufferSize
- The size of the buffer defines how much samples are processed
in one step. Common values are 1024,2048.bufferOverlap
- How much consecutive buffers overlap (in samples). Half of the
AudioBufferSize is common.javax.sound.sampled.UnsupportedAudioFileException
- If the audio format is not supported.public static AudioDispatcher fromDefaultMicrophone(int audioBufferSize, int bufferOverlap) throws javax.sound.sampled.UnsupportedAudioFileException, javax.sound.sampled.LineUnavailableException
AudioSystem.getTargetDataLine(format). The microphone must support the format: 44100Hz sample rate, 16bits mono, signed big endian.
audioBufferSize
- The size of the buffer defines how much samples are processed
in one step. Common values are 1024,2048.bufferOverlap
- How much consecutive buffers overlap (in samples). Half of the
AudioBufferSize is common.javax.sound.sampled.UnsupportedAudioFileException
javax.sound.sampled.LineUnavailableException
public static AudioDispatcher fromFloatArray(float[] floatArray, int sampleRate, int audioBufferSize, int bufferOverlap) throws javax.sound.sampled.UnsupportedAudioFileException
floatArray
- An array of floats, containing audio information.sampleRate
- The sample rate of the audio information contained in the buffer.audioBufferSize
- The size of the buffer defines how much samples are processed
in one step. Common values are 1024,2048.bufferOverlap
- How much consecutive buffers overlap (in samples). Half of the
AudioBufferSize is common.javax.sound.sampled.UnsupportedAudioFileException
- If the audio format is not supported.public float secondsProcessed()