Changelog!

Version 2.2.2

Fixes:

+ Issue #35: fixed getLineIn failing if there isn't an available output channel
+ Issue #39: fixed FilePlayer.loop(numLoops) always resulting in continuous looping 
+ Issue #45: return null when we can't load an AudioPlayer because Javasound cannot provide an output for it

Version 2.2.1

Features:

+ support for the MP3 lyrics tag (USLT)

Improvements:

+ better handling of unsupported mp3 files
+ cleaned up many of the examples and removed many redundant ones

Fixes:

+ avoid index out of bounds in Summer when modifying the list of UGens
+ fix for parsing MP3 comment tags
+ fixed AudioInput not closing input stream when closed
+ fixed Sampler not picking up correct input values when triggered
+ fixed loadFileIntoBuffer failing on mp3 files

Version 2.2.0

Fixed Bugs: 

+ probably some bugs were fixed, but most tracked bugs are slated to be tackled in 2.2.1

New Features:

+ most notably the UGen Framework, which provided UGens for doing real-time synthesis and and a new interface on AudioOuput for hearing those sounds. Includes sequencing capabilities through the use of the playNote methods of AudioOutput.

Version 2.0.2

Fixed Bugs:

+ filenames were being parsed incorrectly by createRecorder.
+ fixed audio processing routines for AudioPlayer and AudioSnippet so that they don't spend cycles doing nothing while not in the "play" state.
+ fixed the zombie thread bug, which kept audio processing Threads from exiting when close() was called.
+ fixed out-of-memory problems that could occur when large files were played. This does come at the cost of slower seek times.
+ fixed the isEnabled(AudioEffect) function, which, uh, wasn't working.
+ fixed the pan() function, which was returning the BALANCE control.

New Features:

+ added functions to FFT for doing forward transforms with an offset:
 forward(float[] samples, offset) and forward(AudioBuffer samples, offset)
+ added a freqToIndex(float freq) method to FFT for finding out the index of the spectrum band that contains the passed in frequency.
+ added a stop() method to AudioSample, so that playing samples can be 
immediately silenced.
+ added setPanNoGlide(float pan) to Controller, which will snap the panning
  setting of a sound to the provided value.
+ added setInputMixer(Mixer) and setOutputMixer(Mixer), which allow you to specify which Java Mixer object should be used when obtaining inputs (AudioInput) and outputs (AudioOuput, AudioPlayer, AudioSnippet, AudioSample).



