Package at.ofai.music.worm
Class AudioWorm
- java.lang.Object
-
- at.ofai.music.worm.AudioWorm
-
public class AudioWorm extends java.lang.ObjectAudioWorm is the class that does the hard work. The constructor initialises the audio objects which process the data. Each call to nextBlock() reads in a new block of data and sends it to the output device, as well as processing it and sending a new tempo estimate to the Worm object. If the output buffer is not too low, the the Worm object is asked to update its display and the audio processing sleeps for 75ms to allow this to happen.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method and Description static doublecheckAudioFormats(javax.sound.sampled.AudioFormat out, javax.sound.sampled.AudioFormat in)Returns the relative difference |a-b| / ((a+b)/2) in sample rates, or 2.0 if the formats do not match in some other characteristic, or -1 if AudioFormat `out' allows all sampling rates; normal return value is in [0,2).protected voidinit(Worm w)Normal initialisation of AudioWorm for reading from a PCM file or for reading compressed data which is uncompressed by AudioSystem.protected voidinitSoundCardInput(Worm w)booleannextBlock()voidpause()protected doubleprocessWindow()Reads a block of audio data, summing the channels and returning the normalised (in the range 0.0-1.0) RMS average of the sample values.protected voidresetAudioFile()static doublerms(double[] data)Returns the RMS average of an array of double.protected voidskipAudio()For input from an audio file, performs repositioning within the file, after a call to the public method skipTo().voidskipTo(double time)Reposition the audio file input to a new point in seconds.voidskipTo(int thousandths)Reposition the audio file input (from Scrollbar) on a scale of 0 (beginning of file) to 1000 (end of file).voidstart()voidstop()
-
-
-
Constructor Detail
-
AudioWorm
public AudioWorm(Worm w)
-
-
Method Detail
-
resetAudioFile
protected void resetAudioFile()
-
initSoundCardInput
protected void initSoundCardInput(Worm w)
-
init
protected void init(Worm w)
Normal initialisation of AudioWorm for reading from a PCM file or for reading compressed data which is uncompressed by AudioSystem.
-
start
public void start()
-
pause
public void pause()
-
stop
public void stop()
-
nextBlock
public boolean nextBlock() throws java.io.IOException- Throws:
java.io.IOException
-
processWindow
protected double processWindow() throws java.io.IOExceptionReads a block of audio data, summing the channels and returning the normalised (in the range 0.0-1.0) RMS average of the sample values. Assumes sufficient data is queued, or else blocks while it waits for the buffer to fill sufficiently.- Throws:
java.io.IOException
-
checkAudioFormats
public static double checkAudioFormats(javax.sound.sampled.AudioFormat out, javax.sound.sampled.AudioFormat in)Returns the relative difference |a-b| / ((a+b)/2) in sample rates, or 2.0 if the formats do not match in some other characteristic, or -1 if AudioFormat `out' allows all sampling rates; normal return value is in [0,2).
-
rms
public static double rms(double[] data)
Returns the RMS average of an array of double.
-
skipTo
public void skipTo(double time)
Reposition the audio file input to a new point in seconds.
-
skipTo
public void skipTo(int thousandths)
Reposition the audio file input (from Scrollbar) on a scale of 0 (beginning of file) to 1000 (end of file).
-
skipAudio
protected void skipAudio()
For input from an audio file, performs repositioning within the file, after a call to the public method skipTo().
-
-