jass.generators
Class LoopBuffer

java.lang.Object
  extended by jass.engine.Out
      extended by jass.generators.LoopBuffer
All Implemented Interfaces:
Source
Direct Known Subclasses:
ErraticLoopBuffer, OneShotBuffer

public class LoopBuffer
extends Out

A force model based on looping through a buffer, loaded from an audio file/url or provided by caller.

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

Field Summary
protected  int dix
          Current integer speed of pointer in buffer per sample.
protected  float dx
          Current fractional speed [0 1] of pointer in buffer per sample.
protected  int ix
          Current integer position of pointer in buffer.
protected  float[] loopBuffer
          Buffer to loop
protected  int loopBufferLength
          Buffer length
protected  float speed
          Loop speed through buffer in seconds per second.
 float srate
          Sampling rate in Hertz of Out.
 float srateLoopBuffer
          Sampling rate in Hertz of loaded buffer.
protected  float volume
          Playback volume.
protected  float x
          Current fractional position [0 1] of pointer in buffer.
 
Fields inherited from class jass.engine.Out
buf, bufferSize, bufOld, lock
 
Constructor Summary
LoopBuffer(float srate, int bufferSize, float[] loopBuffer)
          Construct loop force and provide buffer at same sampling rate.
LoopBuffer(float srate, int bufferSize, java.lang.String fn)
          Construct loop force from named file.
LoopBuffer(float srate, int bufferSize, java.net.URL url)
          Construct loop force from named URL.
LoopBuffer(int bufferSize)
          For derived classes
 
Method Summary
 void computeBuffer()
          Compute the next buffer.
 float[] getLoopBuffer()
          Get the loopbuffer as array.
protected  float getNextSample()
          Get next sample value, interpolating in between sample points.
 void setSpeed(float speed)
          Set loopspeed.
 void setVolume(float val)
          Set force magnitude.
 
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

loopBuffer

protected float[] loopBuffer
Buffer to loop


loopBufferLength

protected int loopBufferLength
Buffer length


volume

protected float volume
Playback volume.


speed

protected float speed
Loop speed through buffer in seconds per second.


x

protected float x
Current fractional position [0 1] of pointer in buffer.


ix

protected int ix
Current integer position of pointer in buffer.


dx

protected float dx
Current fractional speed [0 1] of pointer in buffer per sample.


dix

protected int dix
Current integer speed of pointer in buffer per sample.


srate

public float srate
Sampling rate in Hertz of Out.


srateLoopBuffer

public float srateLoopBuffer
Sampling rate in Hertz of loaded buffer.

Constructor Detail

LoopBuffer

public LoopBuffer(int bufferSize)
For derived classes

Parameters:
bufferSize - biffer size

LoopBuffer

public LoopBuffer(float srate,
                  int bufferSize,
                  java.lang.String fn)
Construct loop force from named file.

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

LoopBuffer

public LoopBuffer(float srate,
                  int bufferSize,
                  java.net.URL url)
Construct loop force from named URL.

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

LoopBuffer

public LoopBuffer(float srate,
                  int bufferSize,
                  float[] loopBuffer)
Construct loop force and provide buffer at same sampling rate.

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

getLoopBuffer

public float[] getLoopBuffer()
Get the loopbuffer as array.

Returns:
The containing loopbuffer

setVolume

public void setVolume(float val)
Set force magnitude.

Parameters:
val - Volume.

setSpeed

public void setSpeed(float speed)
Set loopspeed.

Parameters:
speed - Loop speed., 1 corresponding to original recorded speed.

getNextSample

protected float getNextSample()
Get next sample value, interpolating in between sample points.


computeBuffer

public void computeBuffer()
Compute the next buffer.

Specified by:
computeBuffer in class Out