jass.generators
Class AudioGroove

java.lang.Object
  extended by jass.engine.Out
      extended by jass.generators.AudioGroove
All Implemented Interfaces:
Source
Direct Known Subclasses:
StreamingAudioGroove

public abstract class AudioGroove
extends Out

Position based playback of audio date (gramophone model). Wavfile (mono) is indexed with position of needle on record. Every call to getBuffer this UG polls for position of needle in seconds, and uses this with the previous saved value to index a wav file and compute an audio buffer for the corresponding segment. Method to obtain position of needle is abstract. Loads entire clip in memory.

Author:
Kees van den Doel (kvdoel@cs.ubc.ca)

Field Summary
protected  float[] grooveBuffer
          Buffer with music (groove)
protected  int grooveBufferLength
          Buffer length
protected  java.lang.String name
          Name of buffer
protected  double posNeedle
          Current needle position in seconds
protected  double posNeedlePast
          Past needle position in seconds
 float srate
          Sampling rate in Hertz of Out.
 float srateGrooveBuffer
          Sampling rate in Hertz of loaded buffer.
protected  float srateRatio
          Sampling rate ratio, srateLoopBuffer/srate
 
Fields inherited from class jass.engine.Out
buf, bufferSize, bufOld, lock
 
Constructor Summary
AudioGroove(float srate, int bufferSize, float[] grooveBuffer)
          Construct Groove and provide buffer at same sampling rate.
AudioGroove(float srate, int bufferSize, java.lang.String fn)
          Construct Groove from named file.
AudioGroove(float srate, int bufferSize, java.net.URL url)
          Construct Groove from named URL.
AudioGroove(int bufferSize)
          For derived classes
 
Method Summary
 void computeBuffer()
          Compute the next buffer.
 float[] getGrooveBuffer()
          Get the groove buffer as array.
abstract  double getPositionOfNeedle()
           
 
Methods inherited from class jass.engine.Out
clearBuffer, copyToOld, getBuffer, getBuffer, getBufferSize, getTime, peekAtBuffer, resetTime, setBufferSize, setTime, setTimeAndNotify
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

grooveBuffer

protected float[] grooveBuffer
Buffer with music (groove)


grooveBufferLength

protected int grooveBufferLength
Buffer length


srate

public float srate
Sampling rate in Hertz of Out.


srateRatio

protected float srateRatio
Sampling rate ratio, srateLoopBuffer/srate


srateGrooveBuffer

public float srateGrooveBuffer
Sampling rate in Hertz of loaded buffer.


name

protected java.lang.String name
Name of buffer


posNeedle

protected double posNeedle
Current needle position in seconds


posNeedlePast

protected double posNeedlePast
Past needle position in seconds

Constructor Detail

AudioGroove

public AudioGroove(int bufferSize)
For derived classes

Parameters:
bufferSize - buffer size

AudioGroove

public AudioGroove(float srate,
                   int bufferSize,
                   java.lang.String fn)
Construct Groove from named file.

Parameters:
srate - sampling rate in Hertz.
bufferSize - bufferSize of this Out
fn - Audio file name.

AudioGroove

public AudioGroove(float srate,
                   int bufferSize,
                   java.net.URL url)
Construct Groove from named URL.

Parameters:
srate - sampling rate in Hertz.
bufferSize - bufferSize of this Out
url - Audio file url name.

AudioGroove

public AudioGroove(float srate,
                   int bufferSize,
                   float[] grooveBuffer)
Construct Groove and provide buffer at same sampling rate.

Parameters:
srate - sampling rate in Hertz.
bufferSize - bufferSize of this Out.
grooveBuffer - groove buffer.
Method Detail

getGrooveBuffer

public float[] getGrooveBuffer()
Get the groove buffer as array.

Returns:
The containing loopbuffer

getPositionOfNeedle

public abstract double getPositionOfNeedle()
Returns:
the position (in seconds) of the needle into the audio data

computeBuffer

public void computeBuffer()
Compute the next buffer.

Specified by:
computeBuffer in class Out