Added parameters to Channel::setDelay/getDelay and added
FMOD_DELAYTYPE_END_MS
FMOD_DELAYTYPE_DSPCLOCK_PCM
as the delay types. Sounds can not be started on a global DSP timeline
with sample accurate precision! Great for interactive music.

Added System::getDSPClock, can use this value with the above
Channel::setDelay command.

Added support for multiple software based reverbs.
EventSystem::setReverbProperties, System::setReverbProperties,
can be used to specify the ‘Instance’ of reverb you want to use.
Channel::setReverbProperties can also be used to change wet/dry mix for
a channel for different reverb instances.

Added FMOD_OPENSTATE_STREAMING to replace FMOD_OPENSTATE_READY while
the streamer has a lock on a sound. This way you can test for
FMOD_OPENSTATE_READY to make sure it is safe to release a sound without
it blocking the main thread.

PS3 – Added support for custom DSP units.

Win64 – Added support for WASAPI and OpenAL output modes.

Xbox 360 – Sped up mp2/mp3 decoding by about 1.5-1.6x.

PS3 – Enabled getSpectrum support.

PS3 – Added support for FMOD_DSP_OSCILLATOR.

Event API – All channels used by the event system now have their userdata
field set to the event instance handle that spawned them.

Event API – Sound::setUserData can now be used with "programmer" sounds

Fixed setting the volume of a channel to 0 then back to something non 0 while
it was being played ‘paused’, causing start of sound to be chopped off, but
only when using FMOD_INIT_VOL0_BECOMES_VIRTUAL

Fixed Channel::getPosition on a stream getting confused to whether it was
looping or not if Sound::setMode was called after System::playSound.

Fixed 3d reverb not updating environment when a Reverb3D::release was called.

Fixed FSB subsound streams not ending when being played.

Fixed a memory leak in MIDI codec.

Fixed crash when using DSound output mode with FMOD_CREATECOMPRESSEDSAMPLE
and FMOD_NONBLOCKING without specifing either FMOD_HARDWARE or FMOD_SOFTWARE.

Fixed MIDI playback timing calculation so it doesn’t drift when a file has
tempo changes.

Stop user being able to release a sound that was already in the middle of
being released from a channel callback (Sound::release calls channel callback)

Fixed FMOD_REVERB_CHANNELPROPERTIES::Room being ignored if
System::setReverbProperties was called -after- Channel::setReverbProperties.

Fixed a memory leak when recording.

Fixed uninstaller leaving files behind.

Fixed various issues with example programs.

Removed memory fragmentation every time a stream was opened and removed
call to realloc.

Fixed syncpoints in streamed FSBs calling no matter what subsound was playing,
as well as Sound::getNumSyncPoints/getSyncPoint returning incorrect values.

Fixed sounds with 1 syncpoint, or a syncpoint on position 0 only triggering
once, or a looping sound with a syncpoint right at the end not triggering.

Removed the following functions in favour of the DSPConnection class.
DSPConnection handles are faster as they don’t rely on indicies which need
to serialize and block the main thread against the mixer thread to be correct.
DSP::setInputMix
DSP::getInputMix
DSP::setInputLevels
DSP::getInputLevels
DSP::setOutputMix
DSP::getOutputMix
DSP::setOutputLevels
DSP::getOutputLevels

PS3 – Fixed all sounds dropping out for a small moment when a virtual voice
is swapped in.

Fixed rare crash when playing it/mod/s3m/xm files.

When using FMOD_NONBLOCKING, if neither FMOD_HARDWARE nor FMOD_SOFTWARE is
specified, then FMOD will default to FMOD_HARDWARE which may cause an error
if hardware is not available.

Changed FMOD_DSP_SFXREVERB_DRYLEVEL to have default level of 0db instead of
-10,000, to match what the docs were saying. (caused some confusion of stuff
going silent if it was added with the default values).

Changed virtual voice behaviour. Now the first time a sound plays, if it
immediately steals a voice, the start of the sound will never be cut off,
it will just delay the start of playback until the other voice has stopped.
FMOD_VIRTUAL_PLAYFROMSTART only affects sounds that swap in later because
their audibility/priority changed at a later date in relation to other voices.

Changed System::addDSP, Channel::addDSP, ChannelGroup::addDSP, DSP::addInput,
DSP::getInput, DSP::getOutput to now also return a DSPConnection handle.
Optional, can be 0.

Changed EventSystem::getReverbProperties, System::getReverbProperties,
Channel::getReverbProperties to require the instance you are talking about to
be set! Otherwise you will get incorrect values or FMOD_ERR_REVERB_INSTANCE.

FSBankEx – Change optimize samplerate from ‘Further reduce rate by’ to
‘Percentage of optimized rate’ so 10 would now become 90 for example.

FSBankEx – Change samplerate optimization to allow scaling up to 1000%
instead of 100% (in case it scales too low for some wavs).

!* PS3 – SPU elfs are now embedded into the FMOD library. You no longer need to
load the elfs yourself. Use fmodex.a for SPU Threads and fmodex_SPURS.a
for SPURS.
!* PS3 – spu_mixer_elfname_or_spursdata, spu_streamer_elfname_or_spursdata,
spu_load_from_memory, force5point1 and attenuateDDLFE members removed
from FMOD_PS3_EXTRADRIVERDATA.

Event API – EventSystem::setMediaPath has been changed to expect a path that
contains a trailing slash/backslash as appropriate. Failure to
include this trailing seperator char will result in numerous
FMOD_ERR_FILE_NOTFOUND errors!