SourceFiles.org - Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Related Sites

Latest News
  General News
  Reviews
  Press Releases
  Software
  Hardware
  Security
  Tutorials
  Off Topic


Back to files
                           REVISION HISTORY : FMOD Ex
             Copyright (c) Firelight Technologies, Pty, Ltd, 2004-2007
                              http://www.fmod.org
===============================================================================
              + Added feature or noticable improvement
              - Bug fix or something removed
              * Changed or Information
          ! Important - Take note!

22/03/07 4.07.10 - Dev release update

+ Event API - Added EVENTPROPERTY_TIMEOFFSET for adjusting start offset for all sounds in the event
+ Added "Reverb notes" to documentation

  • Fixed bad subchannel locations when using 3D speaker spread for multichannel sources
  • Fixed sounds not starting when FMOD_SUPPORT_MULTIREVERB not defined.
  • FSBank - Added -n command line option to turn off C header file generation
  • PS2 / Wii / PSP / GC. Fix stereo sounds coming out mono if Channel::setSpeakerMix was used, or the Event API was used (which calls Channel::setSpeakerMix internally).
  • PS2 / Wii / PSP / GC. Fix linker error on 'reduced' versions of the libraries.
  • Fixed crash when alternating between recordStart and recordStop.
  • Wii - Fixed crash when passing invalid values to channel::setReverbProperties.
  • XBox360 - Fixed XMA2 support for .xma files.
  • Fixed truncated network file reads.
  • Event API - Fixed issue with EVENT_NONBLOCKING and streamed wavebanks.
  • Event API - Fixed crash when unloading events that are still loading asynchronously.
  • Event API - Fixed pitch envelope disabled by autopitch. Their effect is now cumulative.
  • PS3 - Fixed rare hang when trying to stop a sound.
  • PS2 - Fixed various memory/alignment issues.
  • PS2 - Fixed leaking voices.
  • Fixed crash when playing oscillators after normal sounds.
  • Event API - Fixed crash on freeEventData when same wavebank referenced by events in multiple eventgroups.
  • FSBank - Fixed waveform compression quality not having any effect
    • EVENT_WAVEBANKINFO::samplerefcnt is now per subsound reference so it will appear larger than in previous versions

1/03/07 4.07.09 - Dev release update

+ Event API - Sound definitions : simplified spawn intensity parameter (replaces spawn min/max repeat time)
+ Event API - Added Spawn Intensity effect, a multiplier for a sound definition's spawn intensity parameter.

  • Re-fix system reverb getting only one channel
  • PS2 - Fix crash on file close when using file callbacks.
  • Fix thread memory leak on stream free.
  • Removed spawn min/max repeat time parameters of sound definitions
  • Event API - Fixed event fadein/out fighting with Event::setVolume
  • Event API - Fixed "Reverb Dry/Wet Level" not working correctly for 2D events
  • Event API - Fixed EVENT_INFO positionms sometimes giving incorrect values
  • Wii - Fixed possible noise when playing some sub-streams.

23/02/07 4.07.08 - Dev release update

+ Added support for FMOD_OPENRAW + FMOD_CREATECOMPRESSEDSAMPLE + FMOD_SOUND_FORMAT_IMAADPCM.
+ Mac - Can now record in other formats besides FMOD_SOUND_FORMAT_PCMFLOAT with

CoreAudio output (default).

!- Fix voices 'leaking' or dropping out, when using FMOD_CREATECOMPRESSEDAMPLE.

Most likely last fix.
- Fixed speaker levels not being set properly when voices go from virtual to real again.
- Win32 - Fix EAX with FMOD_HARDWARE not working (accidently disabled it during testing).
- Fix mp2/mp3 setposition/looping not seeking to the right place. - Linux - Fixed link error in plugins version of library. - Mac - Fixed error when trying to initialize certain audio devices

(PreSonus Firebox and possibly other devices). - Fix DSP effects added with Channel::addDSP not staying when the channel is swapped to be virtual and then becomes real/audible again. - Event API - Fixed oneshot events sometimes not triggering with EVENT_NONBLOCKING - Fix System reverb defaulting to one-channel mode with only one voice

20/02/07 4.07.07 - Dev release update

+ Add gapless mp2/mp3 looping. Use FSBank or FMOD designer to get this through .fsb. Will not work with normal .mp2/.mp3 files unless they have been preencoded properly to loop.
+ Add 5.1 XMA support. This only works for .XMA files at the moment not FSB.

  • Fixed seeking with FMOD_CREATECOMPRESSEDSAMPLE sounds not seeking to the right place.
  • Fixed multichannel sounds not playing properly when maxinputchannels is set to anything other than 6.
  • Fixed channel->reverb gain initialisation for 2D events whose channel count matches output channel count.
  • Fixed reverb balance dry gain control for 2D events.
  • Fix mapping of 4.0 sound sources.
  • Fix Channel::setDelay causing channel to not stop / crash in System::update.
  • Wii - Fixed reduced release library printing debug messages.
  • XBox360 - Fixed "music" category not being paused properly in some cases if

    dashboard music is playing before "music" has started playing.

  • PS3 - Fixed channels dropping sometimes when there are a lot of virtual voices.
  • Event API - Fixed EventSystem::load problem when loading events based on templates with no parameters.
  • Event API - Fix wait-for-previous mode in layer for play-to-end sounds
  • Event API - Fixed main thread blocking when using streamed wavebanks
    • Event API - Changed EVENT_LOADINFO field "sounddefentrylimit" from a set number to a 0 -> 1 multiplier e.g. 0.5 = half the number of sounddef entries.
    • Sound::GetSubSound with FMOD_NONBLOCKING streams will now go into seeking mode if you call it on the same subsound index 2 times in a row, the second and further times returning FMOD_ERR_NOTREADY just as it would if you specified a different index than the one currently active.

13/02/07 4.07.06 - Dev release update

!- FSBank - Fixed bad FSB data being written out which could cause hang with XMA and garbled sound on other formats. This bug is present from 4.07.02 to 4.07.05 inclusive.
- Fixed very small memory leak in user created streams with multiple subsounds. - Fix doppler by defaulting Channel::set3DDopplerLevel to 1.0 like it should. - Event API - Fixed rare syncpoint callback crash - Event API - Fixed eventcategory problems when loading multiple projects. - Event API - Fixed crash when repeatedly calling Event::start() on an event. - Event API - Fixed encryption key support. - Fixed channel speakermix not being reset on FMOD_HARDWARE sounds.

8/02/07 4.07.05 - Dev release update

+ Added EventGroup::getState() interface.

!- Fix hang bug introduced in 4.07.04.
- Fix System::setStreamBufferSize and FMOD_TIMEUNIT_MS with FSB files. - Event API - Fix wait-for-previous mode in layer for play-to-end sounds - Event API - Fixed "Max playbacks behaviour" "Steal oldest" - Event API - Fixed "Max playbacks behaviour" "Steal quietest" - Event API - Fixed sound definition "Play mode" "RandomNoRepeat" - Event API - Fixed EventSystem::update scaling cpu cost with project size - Event API - Fixed event volume randomisation - Fix Channel::set3DOcclusion/get3DOcclusion documentation. - Fixed DSP played with System::playDSP not being 3d if Channel::setMode(FMOD_3D) was called. (Channel::set3DPanLevel(1.0f) would have also fixed it.)

02/02/07 4.07.04 - Dev release update

[**** This version is now banned for use in release titles due to critical bug ***]

+ PS3 - getWaveData() now functional.
+ PS3 - Added FMOD_DSP_TYPE_FLANGE effect.

  • Wii - Fixed hardware reverb issues.
  • Filled out documentation for DSP::setOutput/setOutput type functions.
  • Fixed channel leak issue with virtual voices.
  • Fix channels defaulting reverb to dry.
  • Event API - Fixed EventSystem::getGroup/getEvent to be case insensitive
  • Event API - Fix reverb balance effect not setting correct gain levels.
  • Event API - Fixed Vista networking issue
  • Event API - Fixed Loop count bug
    • Sound::getUserData now works while sound is still loading nonblocking
    • Xbox 360 - FMOD_HARDWARE support removed. FMOD_HARDWARE will just re-route to FMOD_SOFTWARE now to save confusion. (360 has no mixing hardware, FMOD_HARDWARE was wrapping XAudio voice support).
    • Event API - Sound Definitions - RandomNoRepeat play mode universal across all events.
    • Wii - Changed "remotespeakeroffifnosound" member in FMOD_WII_INFO to

      'muteremotespeakerifnosound'. If this member is set, the remote speaker will now be muted when no sounds are playing rather than switched off.

29/01/07 4.07.03 - Dev release update

+ Added 'Loop count' parameter to event sound instances

  • Event API - Fixed leaking channels
  • Mac - Fixed hang when using certain multi-channel FireWire devices.

25/01/07 4.07.02 - Dev release update

+ Added head-related transfer function to software channels. + Added fields to FMOD_ADVANCEDSETTINGS structure (min/maxHRTFAngle, min/maxHRTFFreq) to control HRTF behaviour. + FSBank - FSBank now pads data to 16 bytes to allow for better FMOD_OPENMEMORY_POINT support.
+ Xbox 360 - Added 'xaudio' field to FMOD_THREAD_PROCESSOR_ASSIGNMENTS.

  • Event API - Fixed problems with template events.
  • Event API - Fixed possible click when sounds stop in an event.
  • FSBank - Fixed interleaved FSBs not being built correctly when syncpoints are present.
  • Stopped FMOD_OPENUSER returning error if FMOD_CREATESOUNDEXINFO 'suggestedsoundtype' field was used.

23/01/07 4.07.01 - Dev release update

+ Wii - Added support for FMOD_OPENMEMORY_POINT for hardware samples. Due to memory alignment requirements, currently only works with .dsp files. - Fixed up <1 "Max playbacks" on fev load - Fix oscillators not going virtual and maybe causing crash when virtual voices being used.

05/01/07 4.07.00 - Official dev branch release.

+ Added 3D virtual reverbs. Added System::create3DReverb / System::set3DReverbAmbientProperties / System::get3DReverbAmbientProperties and Reverb class.
+ SFX reverb has two new parameters : "Room LF" and "LF Reference". + Event API - Added EventCategory::getEventByIndex and EventCategory::getNumEvents. + Event API - Event system memory/speed optimisations. + Event API - Added EventSystem::create3DReverb. + Event API - Added EventSystem::set3DReverbAmbientProperties. + Event API - Added EventSystem::get3DReverbAmbientProperties. + Event API - Added Event3DReverb class. + Event API - Added Event::setProperty and Event::setPropertyByIndex. + FSBank - Added fsbankexcl -i command line option to ignore compilation errors + Optimize virtual voices, so that System::update is faster. + Event API - Sped up loading time. Reduced memory usage.

  • Fix PS3 dissapearing voices bug.
  • Fix C# header errors.
  • Fix netstream example ignoring tags. Fixed certain mp3 netstreams with tags not opening correctly.
  • Fix Channel::setChannelGroup wiping out Channel::set3DAttributes for 1 frame.
  • Fix 3d Pan Level still 3d volume attenuating even when 0.0f or '2d'.
  • Event API - Fix small audible click in FMOD software mixer when playing

    more than 1 event.

  • Event API - Fix 'FMOD_ERR_INVALID_HANDLE' error when loading multiple .FEV files when FEV have nested categories under the "music" category.
  • FSBank - Removed fsbankexcl -a command line option (use -i)
  • Fix fev's with 0 or negative 'max playbacks' causing crash at runtime. Tool shouldn't have let this happen but this is a safety check.
    • Make Sound::lock return FMOD_ERR_SUBSOUNDS instead of FMOD_ERR_INTERNAL when trying to lock a parent sound which has no data and just contains sub sounds.
    • Increased file thread stack size to 8k on non Nintendo platforms (Nintendo stack = 16k)

14/12/06 4.06.00 - Official stable branch release

+ Event API - Added EventGroup::getParentProject + Event API - Added "programmer_sound" example + Add FMOD_3D_IGNOREGEOMETRY flag.
!+ Event API - Large memory optimization for large projects. !+ Added MP2 (MPEG Audio Layer 2) support to FSBank and FMOD Designer.

  • Removed randomly occuring 10ms stall in stream play/seek/close.
  • FSbank / FMOD Designer - stop multichannel wavs from encoding to mp3, now returns an error instead.
  • Fixed ChannelGroup::getChannel to return FMOD_ERR_INVALID_PARAM for out of range values of "index" instead of FMOD_ERR_INTERNAL.
  • Fixed syncpoints/looppoints for riff-wrapped mp3 files.
  • XBox 360 fixed TRC dashboard music issue with FMOD music not unpausing.
  • Event API - Fixed Event::set3dAttributes to update "(distance)" parameters immediately.
  • Event API - Fixed EventCategory::getInfo sometimes returning wrong index.
    • Added FMOD_MEMORY_XBOX360_PHYSICAL flag to streamed XMA codec allocations.

5/12/06 4.04.53 - Dev release update

!+ Event API - Optimized idle non playing events from being active in the software DSP network and using up a lot of CPU. + Added EVENT_LOADINFO structure for EventSystem::load + Event API - Added "sounddefentrylimit" member in EVENT_LOADINFO. Use it to limit the number of sound definition entries loaded at runtime. + Added DSP::disconnectAll(bool inputs, bool outputs). This is just a helper function but it is optimized so that it doesnt block, whereas getNumInputs/getNumOuputs blocks.
+ Added FMOD::File_SetDiskBusy/FMOD::File_GetDiskBusy. This is basically a mutex/info for disk access. When you set it and fmod is using the disk, fmod's disk access blocks. If FMOD has set it internally while you call this function, your app will block until fmod has finished reading. + FMOD thread names now appear in Visual Studio debugger. + PSP - Added support for hardware reverb effects. Use the same presets as for

PS2.
+ PSP - Added support for VAG streaming.

  • Fixed FMOD_CREATECOMPRESSEDSAMPLE and vbr mp3 files ending early.
  • Fixed crash when System::init was called with maxchannels == 0.
  • Fixed loop points in ADPCM compressed FSB files.
  • Event API - Improved accuracy of "positionms" in EVENT_INFO over time.
  • Event API - Fixed dependency on fmodps3.h in fmod_event_net.
  • Event API - Fixed wavebank memory usage reporting in EVENT_INFO.
  • Event API - Fixed problem when combining getEvent and loadEventData.
  • Event API - Fixed getEvent* returning FMOD_ERR_CHANNEL_ALLOC instead of FMOD_ERR_EVENT_FAIL like it was supposed to.

24/11/06 4.04.51 - Dev release update

[**** This version is now banned for use in release titles due to critical bug ***]

+ PS3 - Added fmod_event_net.
+ PS3 - Added simple network audition client. + Added FMOD::Debug_SetLevel / FMOD::Debug_GetLevel. + Added 'type' parameter to memory allocation callbacks.

!- Fix timing related crash/hang introduced in 4.04.49. - Fix Channel::setOcclusion not working. - PSP - Fixed crash in Codewarrior build when streaming hardware mp3/at3 files.

  • Event API - Fixed EVENT_INFO_ONLY events being reference counted
    • If a channelgroup has had overridePaused or overrideMute set to true, moving a channel from one group to that group will now pause/mute automatically. If overridePaused/overrideMute was set to false, then the channel will not do anything to its pause/mute status if moved to that group.

16/11/06 4.04.49 - Dev release update

[**** This version is now banned for use in release titles due to critical bug ***]

+ Added Channel::set3DDopplerLevel / get3DDopplerLevel. Set doppler shift scale per voice.
+ Event API - Sped up EventSystem::update considerably. + Huge speedup in playing/stoping sounds, connecting channelgroups in FMOD_SOFTWARE mode. Most noticable in event system. + Added FMOD_INIT_360_MUSICMUTENOTPAUSE for Xbox 360. If dashboard music is played, FMOD based music tracks can now mute but keep playing, instead of pausing.

!- PS3 - Fixed virtual voices crash.
- Fixed output plugins from crashing upon init in plugin mode. - Fixed FMOD_INIT_DISABLESOFTWARE making System::init return FMOD_ERR_NEEDSSOFTWARE if System::setAdvancedSettings was called to enable createcompressed codecs to be allocated. - Xbox360 - improved support for nested channelgroups under the "music" channelgroup when dashboard music is turned on and off. - Fix geometry engine not updating, if geometry moved faster than the occlusion fade in/out speed.
- Fixed issue with dsp unit added with addDSP being added(moved) to a different channel and breaking the old channel (stopping it from playing). - Fixed virtual voices causing FMOD_ERR_NEEDS3D error and generally making things go wrong between 2d/3d voices.

  • Event API - Fixed rare crash in EventGroup::freeEventData
  • Event API - Fixed problem with various EventCategory functions
  • Event API - Fixed problem with crossfade curves

9/11/06 4.04.47 - Dev release update

[**** This version is now banned for use in release titles due to critical bug ***]

+ Added codewarrior libs to PSP build.
+ Added event specific error codes. FMOD_ERR_EVENT_FAILED, FMOD_ERR_EVENT_INTERNAL, FMOD_ERR_EVENT_NAMECONFLICT, FMOD_ERR_EVENT_NOTFOUND.
+ Wii - Added FMOD_Channel_SetControllerSpeaker/FMOD_Channel_GetControllerSpeaker

        Wii specific functions. Use these functions to set channel to play out
        of Wii controller speaker(s).
  • Wii - Removed FMOD_System_Controller_PlaySound Wii specific function.
  • Fixed FMOD_ERR_DSP_NOTFOUND returning from Event::start and Channel::setChannelGroup.
  • Fixed 'sowt' compressed AIFFs not playing properly on little endian platforms. This also fixes problems with playing audio cds on x86 Mac.
  • Removed warnings from PSP examples.
    • Changed fmodD to fmodL to remove confusion about debug vs logging. FmodD was always 'release with logging' it was never a true debug lib as some people thought.

2/11/06 4.04.45 - Dev release update

+ PSP - Added mp3 support using the PSP hardware mp3 decoder. + Added Event "Mode", "3D Rolloff", "3D Min Distance", "3D Max Distance", "3D Position", "3D Cone Inside Angle", "3D Cone Outside Angle" and "3D Cone Outside Volume" to be updated in realtime network auditioning. + PS3 - Added 'force5point1' and 'attenuateDDLFE' to FMOD_PS3_EXTRADRIVERDATA.

        These address current issues with Sony audio libraries and should
        always be set to 1 until the issues are resolved by Sony.
  • PS3 - Fix bug with crackly sound if a lot of categories or channelgroups were used.
  • Fix crash if Sound::release was called on a streaming subsound, then the parent sound was released.
  • Geometry engine. Fixed sounds starting paused, not being immediately occluded if they started behind a polygon occluder.
  • Fixed trying to play an oscillator dsp returning FMOD_ERR_DSP_CONNECTION.
  • Event API - Remove rare chance that FMOD_ERR_INVALID_HANDLE could be returned

    from some event api calls if sound stopped before EventSystem::update was called.

  • Event API - Fix Event::set3DOcclusion.

26/10/06 4.04.43 - Dev release update

+ Memory optimizations with FMOD_CREATECOMPRESSEDSAMPLE.

  • Fixed support for Channel::addDSP with virtual voices. Sounds that go virtual and come back as real will resume their previously added DSP effects as well now.
  • Fixed Channel::setSpeakerLevels crash on virtual voices.
  • PSP - Fixed threads not being destroyed properly on shutdown.
  • Linux - Fixed stream creation failing with FMOD_ERR_MEMORY sometimes.
  • Fixed crash when using the combination of stereo speaker mode, reverb, and 6 channel / multichannel wave files.
  • Memory leak from setReverbProperties fixed.
  • Fixed memory leak whn using OutputNoSound_NRT
  • Event API - Fixed Event::setVolume not working in some cases.
  • Event API - Fixed Event::getInfo to return -1 for lengthms if any sound in the event is looping
  • Event API - Fixed category case sensitivity issue
    • Change FMOD_ADVANCEDSETTINGS to make System::init allocate the FMOD_CREATECOMPRESSEDSAMPLE codec pools up front, instead of 'on demand' when sounds are loaded. If values are 0 or FMOD_ADVANCEDSETTINGS is not used, codec pools will be allocated on demand as usual.

19/10/06 4.04.41 - Dev release update

+ PS3 - Added FMOD_DSP_TYPE_DISTORTION and FMOD_DSP_TYPE_NORMALIZE effects. + Wii - Added 'remotespeakeroffifnosound' to FMOD_WII_INFO structure to allow

remote speaker to turn on/off depending on whether a sound is playing. + Added FMOD_ERR_INVALID_VECTOR to detect non unit length orientation vectors and non perpendicular orientation vectors. + Added useropen, userclose, userread, userseek file callbacks to FMOD_CREATESOUNDEXINFO so you can override the file system per sound, instead of globally.

  • Fix issues with virtual voices and channelgroups.
  • Fix passing 0 or null into playsound as channel handle address crashing.
  • Fix reverb crash if System::setDSPBufferSize was set to larger than 1024.
  • Fix FMOD_CREATECOMPRESSEDSAMPLE and IMA ADPCM FSB if a mono sound was created first, played then a stereo sound was created later.
  • Fix audio cutting out if Reverb and virtual voices were used.
  • Wii/GC - Fixed crash when loading files using FMOD_OPENMEMORY.
  • Wii/GC - Fixed lowpass filter not being reset when new sounds are played.
  • Event API - Fixed problem with loadEventData returning FMOD_ERR_INVALID_PARAM.
    • Added "Win32" to Win32 build name to make it consistent with other platforms
    • FMOD_INIT_OCCLUSION_LOWPASS switched from ITLOWPASS to LOWPASS_SIMPLE to provide clearer sound.
    • Wii - Renamed FMOD_Wii_Controller_Connect function to FMOD_Wii_Controller_Command,

      this function can now be used to manually turn on/off the remote speaker.

13/10/06 4.04.39 - Dev release update

  • Xbox 360 - Fixed FMOD_THREAD_PROCESSOR_ASSIGNMENTS ignoring 'mixer' value.
  • Event API - Fix FMOD_ERR_INVALID_PARAM from getEvent related to previous

    change.

  • Event API - Fix user file callbacks not being called with EventSystem::load.
  • Event API - Event::setVolume and network auditioning fix.
    • Event API - Made getGroup, getEvent, getParameter, getCategory, getReverb

      getProject, getProperty, case insensitive.

12/10/06 4.04.37 - Dev release update

+ Added DSP::getType
+ Added compression caching for FSBank and FMOD Designer bank building. As an example, speedups for XMA bank compilation in one test was from 27 seconds down to 3 seconds.

  • Fix 'file not found' errors on xbox360 event system introduced in 4.04.35.
  • Fixed stream related crash upon Sound::release when virtual voices were involved.
  • Fixed some very small memory leaks.
  • Fixed stereo pan not working
  • Fixed silent zones in 2D surround pan fold-down to stereo

+ Event API - Increased event instance limit from 63 to 255 - Event API - Fixed FMOD_ERR_INVALID_PARAM on Event::start - Event API - Fixed file close callback being called when file open failed - Event API - Fixed EventGroup::freeEventData - Event API - Fixed getEvent functions to only allocate instances for the specified event not the whole group (use loadEventData if you want that) - Event API - Fixed memory leaks on EventProject::release - Event API - Fixed wavebank mismatch when wavebanks have same name

  • Event API - Event::setVolume now scales volume rather than overriding it.

5/10/06 4.04.35 - Dev release update

+ PS3 spu - Added FMOD_LOADSECONDARYRAM flag. This allows sounds to be loaded into into VRAM/RSX memory on PS3.

  • Event API - Fix crash with null media path when using new EventSystem::registerMemoryFSB / unregisterMemoryFSB functions.
  • Actually fixed v33 rare Sound::release crash if FMOD_NONBLOCKING is used, the last version didn't do it properly.
  • Fixed noise in FSB bank compilation for 8bit wav files compressed with ADPCM as target format.

4/10/06 4.04.33 - Dev release update

+ PS3 spu - Added SPURS mixer support. PS3 SPU version now non-beta! + PS3 spu - Added FMOD_DSP_TYPE_LOWPASS, FMOD_DSP_TYPE_ITLOWPASS,

            FMOD_DSP_TYPE_LOWPASS_SIMPLE, FMOD_DSP_TYPE_PARAMEQ, 
            FMOD_DSP_TYPE_HIGHPASS effects.

+ Added - FMOD_ERR_MEMORY_CANTPOINT.
+ Event API - Added EventSystem::registerMemoryFSB / unregisterMemoryFSB. + Event API - Added EventProject::getNumEvents. + Event API - Added EventGroup::getParentGroup.

  • Fixed virtual voices swapping back to real and looping when they were supposed to be one shot.
  • Fix rare Sound::release crash if FMOD_NONBLOCKING is used.
  • PS3 spu beta - Fixed channelgroup volume level issue again.
  • Event API - Fixed loading crash introduced in v31.
  • Event API - Changed EventCategory::getInfo to return a global index

    if more than one project is loaded, instead of a local 0 based index.

  • Event API - Stopped EventSystem::getReverb crashing instead of returning

    FMOD_ERR_MEMORY if out of memory.

  • Event API - EventSystem::getEventBySystemID wasn't respecting EVENT_INFOONLY,

    fixed.

  • Event API - Fixed projects not loading in v31 if max playbacks on events was

    > 63

  • Mac - Fix possible issue with loading plugins in OS X 10.3
    • FMOD_CREATECOMPRESSEDMEMSAMPLE flag changed to a more generic FMOD_OPENMEMORY_POINT, which supports .WAV and .FSB based PCM data now as well. To get the same behaviour as FMOD_CREATECOMPRESSEDMEMSAMPLE, (FMOD_CREATECOMPRESSEDSAMPLE | FMOD_OPENMEMORY_POINT) must be used.

29/9/06 4.04.31 - Dev release update

+ Wii - Added controller speaker support. + Event API : Added EventSystem::release to docs. + Event API : Implemented EventCategory::setPaused / getPaused. + Event API : Implemented EventCategory::setMute / getMute. + Event API : Added EventCategory::stopAllEvents. + Event API : Added positionms to FMOD::EVENT_INFO to get event play time. + Event API : Added EventReverbI::getInfo. + Event API : Added EventSystem::getNumEvents + Event API : Added EventSystem::getEventBySystemID + Event API : Added 'systemid' and 'projectid' to EVENT_INFO structure.

  • Fix rare System::stopSound crash.
  • Fix rare stream crash.
  • Fix possible instability when using FMOD_CREATECOMPRESSEDMEMSAMPLE
  • PS3 spu beta - Fix SPU hang with EventSystem.
  • PS3 spu beta - Fix distortion in SFX reverb.
  • PS3 spu beta - Fix remaining random audio distortion in mixer.
  • PS3 spu beta - Fix memory leak when loading MPEGs with FMOD_ACCURATETIME.
  • PS3 spu beta - Fix memory leak when loading raw pcm data.
  • PS3 spu beta - Fix channelgroup volume level issue.
  • Xbox 360 - Fix XMA related hang when using virtual voices.
  • Wii/GC - Fixed distorted audio when using the EventSystem.
  • Made Channel::setLoopCount respect a count of 0 for FMOD_HARDWARE even though FMOD_HARDWARE doesnt support loop counts.
  • Fix memory leak in MPEG codec when failing to load as MPEG.
  • Fix support for 24-bit AIFF files
  • Fix click on oneshot sounds containing loop points
  • Event API : Max playbacks on events hard limited to 63
  • Event API : Fixed 'just fail' from not just failing in some cases.
  • Event API : Fixed multiple FEVs being loaded and wrong sound definitions

    playing.

    • Event API : renamed EventProject::getEventById to

      EventProject::getEventByProjectId to remove any confusion between event group index and project id terminology.

    • PS3 - When downmix to stereo is required, FMOD's own downmixer is used rather

      than Sony's downmixer.

8/9/06 4.04.29 - Dev release update

+ Added FMOD_DSP_LOWPASS_SIMPLE. No resonance lowpass filter, which is a lot faster than FMOD_DSP_LOWPASS, but allows cutoff frequency from 0 to 22khz, unlike FMOD_DSP_ITLOWPASS which is fast, but has limited cutoff range. + Roughly 30% speedup on FMOD_DSP_LOWPASS. Still about 2-4x slower than the new FMOD_DSP_LOWPASS_SIMPLE though.
+ Added FMOD_ERR_INVALID_FLOAT. Channel::set3DAttributes and System::set3DListenerAttributes now check for NaN, Inf, Denormals being passed in, only in the debug build of FMOD. (ie fmodD library or dll). + Optimized pitch shift filter to ignore silent channels. A 6 channel pitch shift with a sound that is only coming out of 1 speaker will now be about 6x faster! Make sure to use hard panning to get best performance.

+ PS3 - Added AT3 codec support.
+ PS3 - Added fmodps3.h, which contains a FMOD_PS3_EXTRADRIVERDATA structure

to be passed into System::init. Please see header for more information. + PS3 - Added reverb support.
+ PS3 - Added echo support.
+ PS3 - Added spu based mp3 streaming.
+ PS3 - Added custom 8ch to stereo downmixer to bypass sony's currently low

quality version.

  • Fix possible stutter when starting FSB streams.
  • Fix possible glitch on first time playing FSB streams.
  • Fix reverb not being active the first time a channel is played.
  • Fix unwanted memory allocs when using FMOD_CREATECOMPRESSEDSAMPLE.
  • Fix crash in ogg codec if running out of memory.
  • Fix crash if out of memory when using FMOD_NONBLOCKING.
  • Fix createSound returning FMOD_ERR_INVALID_PARAM instead of FMOD_ERR_MEMORY in some cases when running out of memory.
  • Fix memory leak with FMOD_ACCURATETIME, mp3 and FMOD_CREATECOMPRESSEDSAMPLE.

+ Event API : Added new EventProject class + Event API : EventProject::release replaces EventSystem::unload(fevhandle) + Event API : Added EventProject::getEventById which takes a project-unique event id (which is written out in programmer report and header file) + Event API : Added EventSystem::getProject/getProjectByIndex/getNumProjects + Event API : Added EventSystem::getNumReverbs + Event API : Added EventSystem::getGroup + Event API : Added EventSystem::getEvent + Event API : Added EVENT_CALLBACKTYPE_SOUNDDEF_INFO event callback type + Event API : Added "eventflags" parameter to EventSystem::init + Event API : Added EVENT_INIT_USER_ASSETMANAGER init flag - Event API : Fixed possible EventGroup index mismatch issue.

31/8/06 4.04.28 - Stable release update

  • Fix crash if out of memory when using FMOD_NONBLOCKING.
  • Fix createSound returning FMOD_ERR_INVALID_PARAM instead of FMOD_ERR_MEMORY in some cases when running out of memory.
    • PS3 - Update to PS3 SDK 091 build.

22/8/06 4.04.27 - Dev release update

+ Optimizations for FMOD_DSP_ITLOWPASS, FMOD_DSP_PARAMEQ. + Optimization for System::setReverbProperties with software voices.

  • Fixed System::setReverbProperties causing channels to appear twice as loud when set to FMOD_PRESET_OFF.
  • Fixed rare random time based crackling noises for FMOD_CREATECOMPRESSEDSAMPLE based sounds.
  • Fixed FMOD_3D_LINEARROLLOFF for non-default values of "distancefactor".
  • Fixed XMA looping gap introduced in previous version.
  • Fixed Sound::getSubSound causing 'seeking forever' bug if the function was called again while previous non blocking getSubSound was still happening.
  • Win32 - Fixed linear rolloff panning mode for FMOD_HARDWARE based sounds.
  • Mac - Fixed recording devices being enumerated as output devices.
  • Mac - Fixed output not working with iMic and possibly other output

    devices. + Event API : Updated header file and programmer report written out by FMOD Designer to include reverbs, categories and event parameters. Full paths used now as well.

  • Event API : Fixed "(distance)" parameter range.
  • Event API : Fixed handling of '&' in .fdp files.
  • PS3 (spu beta) - Fixed crackling when pitch bending.
  • PS3 (spu beta) - Improved general stability.

22/8/06 4.04.26 - Stable release update

  • Fixed rare random time based crackling noises for FMOD_CREATECOMPRESSEDSAMPLE based sounds.
  • Fixed XMA looping gap introduced in previous version.
  • Fixed Sound::getSubSound causing 'seeking forever' bug if the function was called again while previous non blocking getSubSound was still happening.
  • Event API : Fixed "(distance)" parameter range.
  • Mac - Fixed recording devices being enumerated as output devices.
  • Mac - Fixed output not working with iMic and possibly other output

    devices.

10/8/06 4.04.25 - Dev release update

+ Add support for Channel::setSpeakerLevels for sounds on platforms that don't support multichannel sound formats. For example on PS2, PSP, GC, Wii that only have mono hardware voices and stereo output, you can now locate subchannels of a multichannel stream in left/right speaker.

  • Fix shut down crash introduced in v4.04.21/4.04.23.
  • Fix crash in mod/s3m/xm/it/midi Sound::release.
  • Fix software reverb mixing dry mix in twice, making sound too loud.
  • Fix 3D panning on hardware voice platforms such as xbox/ps2/psp/gamecube/wii.
  • PS3 (spu beta) - Fixed noise issue if sounds were played at 48khz.
  • PS3 (spu beta) - Fixed stream crash (or sounds at 48khz in general).

+ Event API : Added EVENT_STATE_INFOONLY return from Event::getState. - Event API : Removed 32 bank limit from EventSystem::getInfo. - Event API : Fixed problem w/freeEventData causing events to never play again. * Event API : Event parameters now automatically reset back to 0 on Event::start if they have non-null velocity and setValue hasn't been called on them.

10/8/06 4.04.24 - Stable release update

  • Fixed Channel::setMode stopping streams from playing on certain platforms if loop mode was not specified.
  • Fixed extremely rare hang with FMOD_CREATECOMPRESSEDSAMPLE.
  • Fixed SoundI::getSyncPointInfo always requiring "offset" parameter.
  • Fixed problem channel-swapping when using DSPs and Sounds together.
    • PS3 - Update to PS3 SDK 090 build. Note: PRX modules now need to be loaded before initializing FMOD, please refer

      to documentation and/or examples for details.

  • Event API : Fixed "(distance)" parameters not updating properly.
  • Event API : Fixed problem with rolloff settings.

4/8/06 4.04.23 - Dev release update

+ Added DSP::setOutputMix/getOutputMix, and DSP::setOutputLevels/getOutputLevels to compliment setting input levels.

  • Removed blocking criticalsection call in DSP::setParameter for most filters, which means performance increase.
  • Fixed crash if running out of memory with FSB.
  • Fixed Channel::setMute not unmuting software voices properly.
  • Fixed rare crash with new Channel::stop stream optimization, when a stream was released immediately after being played then stopped with Channel::stop. (take 2).
  • Fixed rare stream play hang.
  • PS3 (spu beta) - Fixed streaming.
  • PS3 (spu beta) - PCM support back in mixer, now user streams and wav files work, 16bit PCM only at this time.
  • PS3 (spu beta) - IMA ADPCM support back in the mixer, only through FSB files, because wav uses an inneficient block size.
  • PS3 (spu beta) - Potential noise bug fixed.
    • Xbox360 - Memory::Initialize and createSound with now check memory address passed in to make sure it is valid and returns new FMOD_ERR_INVALID_ADDRESS error code if not. (Memory must be physical, ie allocated with XPhysicalAlloc).

+ Event API : Added selective EventSystem::unload. Can now unload a specific fev. * Event API : NOTE: EventSystem info functions may not report correct memory usage. This is temporary and will be rectified in a future version.

31/7/06 4.04.21 - Dev release update

  • Fixed linking issues on ps2/psp/gc/wii.
  • PS3 (spu beta) - Fixed memory leaks.
  • PS3 (spu beta) - Fixed hang when playing multiple FSB MP3 streams.
  • PS3 (spu beta) - Fixed crash when releasing FMOD_CREATECOMPRESSEDSOUND.
  • PS3 (spu beta) - Fixed crash when releasing streams that are still playing.
    • Sound::release now blocks if it is non blocking and hasn't finished opening yet.

4/8/06 4.04.20 - Stable release update

  • PS2 - fix issue with System::getSubSound and FMOD_NONBLOCKING causing lock up.
  • Xbox 360 - Fix XMA hang.

27/7/06 4.04.19 - Dev release update

+ Add supper for per channel reverb mix in Channel::setReverbProperties and FMOD software based I3DL2 (SFX) reverb. + PS3 - SPU beta released! Now mixing and decoding takes 0% of cpu time.

  • PS2 - Fixed thread shutdown code.
  • Fixed rare crash with new Channel::stop stream optimization, when a stream was released immediately after being played then stopped with Channel::stop.
  • Fixed ADPCM support on FSB files with FMOD_CREATECOMPRESSEDSAMPLE when mono and stereo sounds were mixed into the same FSB.

+ Event API : Added "event" parameter to EventGroup::freeEventData to allow data for a particular event to be freed. - Event API : Fixed streams sometimes not being freed properly. - Event API : Fixed samplerefcnt in EVENT_WAVEBANKINFO being off by one. - Event API : Fixed problem loading multiple projects with empty eventgroups.

27/7/06 4.04.18 - Stable release update

  • Fixed memory leak when using a lot of dsp connections.
  • Fixed panning issue, especially noticable with 3d sounds (stable branch bug only).
  • PS2 / PSP - Fixed various close/init issues, thanks to Matt from Vicarious Visions for most of these!
  • Fixed wav fact chunk error on big endian machines.
  • Event API : Fixed memory leak when wavebanks not found.
  • Event API : Fixed problem with categories across multiple projects.
    • Changed PSP message and error code when returning 'out of atrac instances' type error.

21/7/06 4.04.17 - Dev release update

+ Wii - Added access to extra reverb slot for DPL2 High Quality reverb. + Wii/GameCube - Added FMOD_Channel_SetLowPassFilter/FMOD_Channel_GetLowPassFilter

        functions (in fmodwii.h and fmodgc.h) for hardware per channel low pass
        filtering.
  • Fixed Prologic 2 encoding on software mixer for 3d sound and setSpeakerMix.
  • Fixed stall on Channel::stop when stopping a streamed sound while others were playing.
  • GameCube/Wii/PSP - Fixed Sound::release() not releasing hardware sounds properly.
  • Fixed click on end of one shot sounds with FMOD_CREATECOMPRESSEDSAMPLE.
  • Event API : Fixed EventI::getNumProperties not always returning correct value.
  • Event API : Fixed eventsystem plugin loading to occur in EventSystem::init. * Event API : EventSystem::setPluginPath can now be passed NULL to tell FMOD not to load any plugins.

17/7/06 4.04.16 - Stable release update

+ Software mixer speedup.

  • Increased thread stack sizes to 32kb to properly fix mp3 stack overflow issue when playing mp3 on non PC platforms.
  • Divide by zero fix in FMOD_DSP_PITCHSHIFT filter.
  • Fixed setSpeakerMix making sound audible when > 0 values were sent to non existant speakers.
  • Fixed certain hardware FSB streams not playing correctly
  • Fixed WAVEFORMATEXTENSIBLE wav files not loading on big endian machines.
  • PS2 - Fixed hang in file close if file wasnt found.
  • PS3 - Fixed Ogg Vorbis support.
  • Xbox 360 - fixed small 1 frame XMA files not triggering sometimes.
  • Xbox 360 - fixed "music" channelgroup causing crash when starting dashboard music.
  • Xbox - Fixed linker error.
  • Event API : Fixed crash related to sound definition pitch randomisation.
  • Event API : Fixed problem loading FEVs created by newer version of FMOD Designer.
  • Event API : Fixed problem when calling EventSystem::load with a path instead of a filename while media path is NULL.

14/7/06 4.04.15 - Dev release update

  • Fix FMOD_OPENRAW and FMOD_OPENUSER based sounds failing when played.
  • Fix FSBank and FMOD Designer encoding bad ADPCM files making ADPCM based banks fail to load.
  • Event API : Fixed EventGroup::freeEventData not freeing streams.
  • Event API : Fixed 2d speaker levels not being set for 3d sounds even when 3dpanlevel is used.

14/7/06 4.04.14 - Stable release update

  • Fixed FMOD::System_Create being called 16 times causing a hang.
  • Fixed stack overflow issue in FMOD_NONBLOCKING thread.
  • Fixed ADPCM based FSB files and FMOD_CREATECOMPRESSEDSAMPLE causing crash.
  • PS2 fixed shutdown issue.
  • Fixed 7.1 software mixer quality / static issue.
  • PSP fixed sounds not triggering sometimes.
  • Fixed playlist (m3u/wax/pls etc) support from crashing / failing.
  • Xbox 360 fixed small 1 frame XMA files not triggering sometimes.
  • Event API : Fixed crash in EventSystem::load in low memory situation.

7/7/06 4.04.13 - Dev release update

+ FMOD_CREATECOMPRESSEDMEMSAMPLE flag added to differentiate itself from "FMOD_OPENMEMORY with FMOD_CREATECOMPRESSEDSAMPLE" which will again duplicate memory internally. FMOD_CREATECOMPRESSEDMEMSAMPLE simply points to the user's memory instead of duplicating it. + FMOD_CODEC_GETWAVEFORMAT added to FMOD_CODEC_DESCRIPTION. This is an optional way to return data normally contained in the memory wasteful waveformat member of FMOD_CODEC_STATE. This means waveformat of FMOD_CODEC_STATE is now optional and can be null, as long as FMOD_CODEC_GETWAVEFORMAT is specified. + Added release dll's with debug logging and .pdb debug info for win32 (fmodD.dll and fmodD.pdb)

  • Fix stream stitching support.
  • Huge memory optimization on FSB streams with thousands of subsounds.
  • Fix syncpoints not triggering if sync points are added after playing the sound.
  • Fix new 3d pan level setting not being reset to 1.0 on voices.
  • Fix midi length calculation on some midi files.
    • FMOD_OPENMEMORY with FMOD_CREATECOMPRESSEDSAMPLE is now put back to the way it used to be, and duplicates memory. New flag FMOD_CREATECOMPRESSEDMEMSAMPLE handles the new behaviour.
    • FMOD_LOWMEM now excludes default sentence creation for multi-subsound streams. Sound::setSubSoundSentence can still be used as normal, System::playSound just wont play through the whole set of subsounds by default any more if this flag is used.

+ Event API : Added Event::getChannelGroup(). + Event API : Extended Event::getInfo(). Note: Function signature has changed! + Event API : Added EVENT_INFO structure. + Event API : Added EventSystem::getInfo(). + Event API : Added EVENT_WAVEBANKINFO structure. + Event API : Added EVENT_SYSTEMINFO structure.

7/7/06 4.04.12 - Stable release update

  • Fixed streams with small decodebuffersizes on certain formats with big block alignment that stuttered.
  • Fixed bug in reallocator making memory run out sooner than it should when using a memory block with FMOD::Memory_Initialize.
  • Fix delphi FMOD_SOUND_TYPE list.

29/6/06 4.04.11 - Dev release update

+ Added FMOD_INIT_OCCLUSION_LOWPASS. Now software voices will enable a lowpass filter if they are occluded! Great for Channel::set3DOcclusion and the FMOD polygon based geometry engine. + FMOD_SPEAKERMODE_PROLOGIC and software mixed 3D sound now works correctly. + Added Channel::set3DPanLevel. 3D / 2D sound morphing! Now a 3d sound can morph into a '2d' sound by setting the amount it takes note of 3d pan calculations or 2d Channel::setSpeakerMix. Great for volumetric sounds!

  • Removed OpenAL output mode.
  • Reduced memory usage by several hundred k using FMOD_CREATECOMPRESSEDSAMPLE with software mixed voices.
  • 10k Memory reduction at init, and less small memory allocations upon init to reduce memory block overhead and init time.
  • Xbox360 - stopped DrWatson complaining about an intentional exception that was thrown, if the debugger is not used.
    • FMOD_OPENMEMORY with FMOD_CREATECOMPRESSEDSAMPLE, now POINTS to the memory passed in rather than duplicating it. This means memory must not be freed when passed in this way until AFTER Sound::release has been called!

+ Event API : Added EventReverb class, EventSystem::getReverb and EventSystem::getReverbByIndex

  • Event API : Fixed getEvent getting the eventgroup wrong if it was called with a long path
  • Event API : Fixed problem with getEvent modifying const data

29/6/06 4.04.10 - Stable release update

  • Fixed ChannelGroup::getChannel returning the wrong handle values back.
  • Mac - Fixed System::getNumCDROMDrives and System::getCDROMDriveName not returning updated information when drives are mounted and unmounted.
  • Clean up metadata leak in certain .ogg files.
  • Fix nested channelgroups that are not freed causing crash in System::release.

19/6/06 4.04.08 - Stable release update

  • FMOD Memory manager sped up noticably = faster loading times.
  • Fixed FMOD_CREATECOMPRESSEDSAMPLE sounds not ending properly sometimes.
  • Linux - Fixed bug in FMOD_OUTPUTTYPE_OSS causing some linux distributions to hang when shutting down FMOD.
  • Fixed System::getAdvancedSettings not returning anything.
  • Fixed multi-stream ogg vorbis files not playing all the way to the end.
  • Worked around xbox360 issue of calling System::update more than once a frame. Result was an internal microsoft semaphore function was throwing exceptions. Now fixed.

9/6/06 4.04.06 - Stable release update

  • Fixed FMOD_CREATECOMPRESSEDSAMPLE timing issue causing crash.
  • Fixed FMOD_OPENUSER and FMOD_OPENRAW causing hang. These flags are not compatible and if detected, it will now ignore the FMOD_OPENRAW flag.
  • Changed thread creation code to force certain stack sizes to avoid XDK CreateThread bug.
  • Fixed memory leak when sound failed to load due to lack of available memory.
  • Fixed Sfx Reverb problems
  • Fixed channelgroups not setting volume/pitch correctly if nested groups were a certain number of levels deep.
  • Fixed loading of FSB files with multichannel sounds mixed in with mono/stereo sounds.
  • Fixed multichannel sounds not locating themselves according to their specified speakers in a multi-speaker setup.
  • Fixed ADPCM .wav files and FMOD_CREATECOMPRESSEDSAMPLE silent playback issue.
  • Fixed FSBank not return an error when trying to encode greater than stereo XMA, rather than generating bad files.
  • PS3 - Fixed crash when streaming mp3s.
  • Fix crash when freeing and loading ADPCM encoded FSB files that were opened for realtime playback (ie FMOD_CREATECOMPRESSEDSAMPLE).
  • Linux - Fixed crash when initialising and closing FMOD repeatedly.
  • Xbox 360 - Fixed XMA decoder hang issue with virtual voices.
  • Fixed bug in FMOD memory manager with reallocation which is used in streams, causing strange memory failures later on down the track.
  • Fixed length with MP3 files and Sound::getLength with FMOD_ACCURATETIME and FMOD_CREATECOMPRESSEDSAMPLE.
  • Fixed FSBank creating bad FSB files if build mode was interleaved.
  • Event API : Fixed problem with volumes reverting to previous setting in network audition mode
  • Event API : Fixed memory leak when EventSystem::load returns an error.
    • Switch multichannel sounds to use Directsound software mixing if FMOD_HARDWARE is specified to avoid FMOD_ERR_OUTPUT_DRIVERCALL errors.

30/5/06 4.04.04 - Stable release update

  • Fixed multichannel ADPCM streaming static noise.
  • Fixed multichannel sound related crash.
  • Fixed Sound::getName not working on multichannel sounds on ps2 and other platforms that only support mono hardware voices (gamecube/psp).

25/5/06 4.04.02 - Stable release update

  • Fixed channelgroup related System::close crash.
  • Fixed fsb memory leak.
  • Fixed SyncPoint crash.
  • Fixed MP3 seek issue.

23/5/06 4.04.00 - Official release

+ Channel::setSpeakerLevels now allow speaker levels to go above 1.0 for amplification. Turn the dial up to 11! Good for LFE boosting. + Added Channel::set3DSpread / Channel::get3DSpread! This is an easy way to make stereo 3D sounds go from summed mono point sources to having a better stereo spread. Ie facing a sound with a 90 degree spread puts the left part in the front left speaker and the right part in the front right speaker, where before it would have just summed the 2 into the center speaker. + Added FMOD_DSP_TYPE_SFXREVERB. This is a custom I3DL2 reverb that is far better quality and more configurable than FMOD_DSP_TYPE_REVERB which was based on Freeverb. System::setReverbProperties now enables this reverb for software based voices.

  • PSP - Increased SAS thread priority to fix stuttering.
  • Improved support for certain corrupted wav and mp3 files so that they don't crash the decoder.
  • Fixed very short .XMA files 'not ending'.
  • PS2 - Fixed stream hangs.
  • Fixed loop mode being parsed from FSB files.
  • Fixed FMOD_ACCURATETIME flag with mp3 files causing crash.
  • FSBank Fixed MPEG encoder and added quality setting.
  • FSBank Fixed interleaved FSB IMAADPCM encoder mode.
  • Fixed SyncPoints and setPosition causing multiple callbacks to fire.
  • Removed Channel::set3DSubChannelOffset/Channel::get3DSubChannelOffset in favor of the much simpler Channel::set3DSpread.
  • Event API : Fixed problem with getEvent when hierarchy contains events/groups wit similar names i.e. 'c', 'car', 'ca'.
  • Event API : Event::getParameterByIndex now accepts index -1 to specify the event's primary parameter.
  • Event API : Fixed bug where exported events had very low volume.
  • Event API : Fixed fmod_event_static.dsp issues.

16/5/06 4.03.10

+ Added System::createCodec so user codecs can be added from within app code rather than needing external DLL's (good for non dll platforms). + Virtual voice swapping in System::update now faster. Good when using many virtual voices.
+ Wii - Added FMOD_WII_INFO structure to fmodwii.h in order to set dvd

read priority.
+ GameCube/Wii - Added reverb flag FMOD_REVERB_FLAGS_HIGHQUALITYDPL2REVERB to

        access DPL2 reverb. This allows the use of non-DPL2 reverb when speakermode
        is set to FMOD_SPEAKERMODE_PROLOGIC.

+ Added MPEG encoding to FSBank and support for MPEG compressed FSB files. + Added cross platform .VAG (Playstation ADPCM variant) codec. Play .VAG on any platform!

  • Fixed virtual voices losing their channelgroup when swapping in/out.
  • Fixed virtual voices forgetting speaker level settings.
  • Fixed last (hopefully) rare crash on sounds with FMOD_CREATECOMPRESSEDSAMPLE.
  • Fixed FSB with mixed mono/stereo sounds for XMA.
  • Fixed streamer reading too far in a subsound of a multi XMA FSB files.
  • Fixed FSB default values (vol/freq/pan/pri/mindistance/maxdistance).
  • Fixed FMOD_CREATECOMPRESSEDSAMPLE and loop count usage with VBR based formats causing a premature termination of a sound before the final loop had finished.
  • Fixed a stream being played after a channel with a loop count making the stream only play the first part of the sound.
  • Reduced memory usage.
  • Event API : Fixed problem where old event callback/userdata was being called after event went invalid
  • Event API : Event system now uses FMOD_LOWMEM for all sounds

1/5/06 4.03.09

  • Fixed OpenAL hardware channels continuing to loop even after they have been set not to.
  • Fixed volume calculation on channels with FMOD_3D_CUSTOMROLLOFF but no rolloff curve
  • Fixed DirectSound error causing FMOD_ERR_DRIVERCALL errors.
  • Fixed crash in ChannelGroupI::stop.
  • Fixed FMOD_LOWMEM flag accidently re-using
  • Fixed mod/s3m/xm/it/midi crash from 4.03.08.
  • Removed software reverb emulation on SystemI::setReverbProperties until proper I3DL2 reverb is implemented.
    • GameCube - FMOD_ARAMBLOCK_INFO structure renamed to FMOD_GC_INFO in fmodgc.h, "dvdreadpriority" member added to structure in order to set read priority.

26/4/06 4.03.08

+ Improved quality on pitch shifting filter. + Added FMOD_LOWMEM flag to FMOD_MODE flags to allow memory cutbacks on sample instances for features that aren't needed. To start with, name storage is disabled if this flag is set so Sound::getName returns "(null)". This will be expanded in future to reduce Sound instance memory usage further. + Added memory usage tutorial.
+ Added support for GameCube GCADPCM DSP file format. + Added support for Nintendo Revolution.

  • Fixed FSB + IMAADPCM sounds using "FMOD_CREATECOMPRESSEDSAMPLE" flag, stopping as soon as they started.
  • Fixed FSB + IMAADPCM sounds using "FMOD_CREATECOMPRESSEDSAMPLE" flag, causing a crash on System::close.
  • Reduced memory overhead on IMAADPCM "FMOD_CREATECOMPRESSEDSAMPLE" based sounds.
  • Reduced memory overhead on XMA "FMOD_CREATECOMPRESSEDSAMPLE" based sounds (about 19k per sound)
  • Fixed channels not going back to the Master channel group when finished.
  • Fixed various obscure bugs to do with multichannel wavs, createcompressed sample and fsb ADPCM etc.
  • Fixed problem with FSB + MIDI
  • Multichannel FMOD_HARDWARE sound fix in directsound.
  • Fixed memory leak when using OpenAL output mode
  • Event API : Fixed EventGroup::getEventByIndex() not honouring EVENT_INFOONLY
  • Event API : Fixed bug with events in different groups sharing sound definitions
  • GameCube : Fixed hang shutting down when non-blocking streams are used.
  • PSP : Fixed SN libraries crashing.
    • Event API : Changed maximum number of events per eventsystem to 8192

18/4/06 4.03.07

+ Added FMOD_DSP_COMPRESSOR - This will be worked on and improved in future releases.
+ Optimized geometry occlusion engine to early out sooner giving significant speed increases for larger scenes.

  • Fixed loop point handling of badly saved adobe audition wav files.
  • Fixed multiple FMOD_NONBLOCKING loads not working properly.
  • Handle badly saved/corrupted WMAs better.
  • Xbox360 - Fixed atgscene paths in examples
  • Fix dsppluginviewer example, recording issue with ASIO input/output.

+ Event API : FSBs are now loaded from mediapath first and then from the same directory as the FEV
+ Event API : For events with custom 3d rolloff curve, 3d min/max distance properties will be set to the min/max range of parameter called "distance" or "(distance)"
- Event API : Fixed crash related to "oneshot and stop event" parameters - Event API : Fixed problem with sustain points on parameters with range outside of 0 -> 1
- Event API : Fixed problem with encryption keys and multiple FEVs * Event API : Removed some fmod_event_net debug log spam. Added LOG_NET to debug level enum

10/4/06 4.03.06

+ Added dsp_custom example for c#

  • Fix FMOD_OUTPUTTYPE enum list so it didnt break backwards compatibility.
  • Fix OpenAL output not hanging on System::close/System::release if OpenAL wasn't supported on that machine.
  • Fix alignment issues causing crash on mod/s3m/xm/it/midi under new SSE mixer.
  • Fixed errors in fmod_dsp.cs for c# interface

7/4/06 4.03.05

+ Optimized FMOD_DSP_TYPE_LOWPASS. Now about 2x faster. + Optimized SSE based stereo output mixers, about 10% faster for win32/linux/xbox.
+ Optimized 5.1 and 7.1 output mixers in SSE for win32/linux/xbox. + Added OpenAL output mode.
Note: this requires version 1.1 or greater. An implementation of this is available at http://www.openal.org/downloads.html

  • Mac - Fixed CDDA support
  • Fixed FMOD_DSP_LOWPASS crack/click noise when going to very low cutoff frequencies such as 1hz.

+ Event API : Added EventParameter::keyOff for keying off sustain points

  • Event API : Fixed crash in EventGroup::getNumGroups when there are no child groups

31/3/06 4.03.04

  • Fixed small memory leak in ogg vorbis and xma codecs.
  • Linux - Fixed bug in threading code causing problems in some distributions.
  • Memory reduction from 238k to 184k after System::init using 100 voices.
  • Fixed audio output on soundcards with >8 channels.
  • Made sync point system more robust so it won't miss points.
  • PS3 - added support again for FMOD_SPEAKERMODE_STEREO for stereo only output.
  • Fixed crash when mixing different types of adpcm files that were encoded with different block sizes, and FMOD_CREATECOMPRESSEDSAMPLE.
    • Maximum channel count on a sound (ie stereo wav = 2) lowered from 8 to 6 to save memory. This allows 6 channel sounds to be played, and it can be increased by using System::setSoftwareFormat and setting numinputchannels if needed (unlikely).

+ Event API : Added EventSystem::getNumGroups, EventSystem::getNumCategories, EventGroup::getNumGroups, EventGroup::getNumEvents, EventCategory::getNumCategories, EventCategory::getNumParameters, Event::getNumParameters, Event::getNumProperties, Event::getNumCategories. + Event API : Added EVENTPROPERTY_MAX_PLAYBACKS_BEHAVIOR to proprty enum list. + Event API : Added Event::set3DOcclusion/get3DOcclusion + Event API : Added Event::setReverbProperties/getReverbProperties + Event API : Added EVENT_INFOONLY flag to be used with EventGroup::getEvent and Event::getEventByIndex. Good for just getting information from an event without loading its data or allocating its instances. No allocs or disk access is done, but you can still read the event's information.

  • Event API : Fixed crash when loading multiple FEV files.
  • Event API : Fixed EVENT_STATE_CHANNELSACTIVE being the same value as EVENT_STATE_PLAYING.
  • Event API : Fixed eventsystem release crash
  • Event API : Fixed problems related to multiple sounddefs with the same name
  • Event API : Fixed event nonblocking loads
  • Event API : Fixed problem where incomplete nonblocking loads would accumulate over time
    • Event API : renamed EVENTPROPERTY_SPEAKER_MUSIC to EVENTPROPERTY_MUSIC (oops!)

17/3/06 4.03.03

+ Added sample names from mod/s3m/xm/it files as tags accessable through Sound::getTag.
+ Added FMOD_OPENSTATE_SEEKING and the ability for Sound::getSubSound to do a non blocking seek for multi-sub sound streams. + Added FMOD_NONBLOCKING tutorial to the documentation. + Event API : Added setVelocity / getVelocity to EventParameter class so programmer can slow down or speed up a parameter.
+ Event API : Added new function Event::getState. Replaces Event::isPlaying and provides more information on the state of an event. + Event API : Added EVENT_MODE parameter to getEvent/loadEventData functions. + Event API : Added nonblocking event loading. Pass EVENT_NONBLOCKING to getEvent/getGroup.
+ Event API : Improved event loading speed. + Event API : Added EVENT_ERROR_ON_DISKACCESS for users that want to trap when fmod does disk access in getEvent.
+ Event API : Added EVENT_CALLBACKTYPE_NET_MODIFIED event callback. This callback is called when someone changes an event property over the network. + Added FMOD_ERR_FILE_UNWANTED error code for use by event api.

  • Fixed IMA ADPCM and FMOD_CREATECOMPRESSEDSAMPLE issues and crash.
  • Added Codewarrior libraries and example projects for PS2.
  • GameCube - Fixed crash when shutting down then re-initialising library.
  • GameCube - Fixed bug in Channel::SetPosition that was causing problems with virtual voices.
  • GameCube - Fixed clicking sound occuring sometimes when un-pausing a channel.
  • GameCube - Fixed looped sounds playing from loop point rather than the start of the sound.
  • GameCube - Fixed bug in Channel::isPlaying that was returning true sometimes even when a channel has been stopped.
  • Xbox360 - Fixed XMA related crash when .XMA files were freed then new ones per played.
  • Xbox360 - Fixed XMA related crash when loading more than 288 xma files.
  • Fixed oscillators being played as 3D causing a crash.
  • Fixed FMOD_NONBLOCKING on PS2.
  • Fixed initialsubsound member of FMOD_CREATESOUNDEXINFO structure not being parsed.
  • Fixed obscure click / quality issue with FMOD_SOFTWARE + streams.
  • Fixed cone behaviour again.
  • Event API : Added all event properties to event property enum list.
  • Event API : Fixed problem when loading projects that had the same EventGroup names.
  • Event API : Fixed memory leak when loading multiple projects.
  • Linux - Fixed memory overwrite bug in System::getNumDrivers that was causing crashes in some cases.
  • Fixed click/glitch at end of FMOD_CREATECOMPRESSEDSAMPLE based samples.

24/2/06 4.03.02

  • Event API : Fixed Memory::Initialize issue.
  • Fixed XMA problem with FMOD_HARDWARE, ignore previous comment in 4.03.01.
  • Fixed FMOD Event api to not fail loading event groups with no events in them.
  • Gamecube - fixed multichannel GCADPCM playback issue.
  • Fixed cone support. DirectSound's native cone support is removed because it sucks, and instead FMOD emulates cone support in Directsound mode by using its own algorithm and just adjusting the volume of the voice manually.

22/2/06 4.03.01 - Official release

+ PS2 added fmodps2.h and FMOD_PS2_EXTRADRIVERDATA to allow users to set sifcmd info if they or other middleware is using the sifmcmd interface.

  • Fixed stutter issue with IMA ADPCM sample data and FMOD_CREATECOMPRESSEDSAMPLE.
  • Fixed sounds specified as FMOD_HARDWARE falling back to software mode when no hardware is available.
  • Fixed badly encoded XMA files not stopping using FMOD_SOFTWARE. With FMOD_HARDWARE there is a problem in microsoft's XAudio library so please contact them (as we have) or re-encode xma files with extra silence or different quality settings to try and work around bug in the encoder. Otherwise use FMOD_SOFTWARE.
  • Fixed crash in Sound::release in certain cases.
  • Fixed GameCube Channel::setPosition causing sounds to stop playing.
  • Fixed GameCube crashing when loading multichannel fsb files.
  • Updated docs for PSP tutorial to tell user to link to correct sas library.
  • Removed System::updateFinished for now as it is not used anywhere.
  • Fixed 3D XMA or MPEG stereo FMOD_CREATECOMPRESSEDSAMPLE voices crashing.
  • Fixed stereo 3d sounds causing voice dropouts sometimes.
  • Stereo 3D sounds in FMOD_SOFTWARE now only 1 physical voice instead of 2 mono voices.
  • Stereo 3D sounds in FMOD_HARDWARE on Xbox 360 now use 1 physical voice instead of 2 mono voices.

11/2/06 4.03.00

+ Added ChannelGroup::overrideSpeakerMix

  • Fixed rare timing crash with FMOD_CREATECOMPRESSEDSAMPLE support.
  • Fixed Channel::setReverbProperties/getReverbProperties on streams.
  • Fixed performance issue with Channel::setVolume on EAX based souncards.
  • Fix PS2 semaphore kernel message causing problems with ProDG debugger.
  • Stopped wav files with loop points automatically looping if their loop count was 0.
  • Fixed crash when using custom rolloff curves.

2/2/06 4.02.10

+ Added IMA ADPCM to FMOD_CREATECOMPRESSEDSAMPLE support. Now FMOD Ex can play ADPCM samples as if they were a native sample format without decompressing the whole thing or needing to stream it. Try it out! Now for a small increase in CPU usage, samples can stay compressed as ADPCM (and also MP2, MP3 and XMA now), saving huge amounts of memory!

  • Fixed crash with sounds being released that were 3d and streamed and stereo, with other streams playing.
  • Fixed crash in new XMA FMOD_CREATECOMPRESSEDSAMPLE support on xbox360 when channels were going virtual then coming back again.
  • Fixed virtual voices crash with streams that were 3d and stereo.
  • Fixed .mod file loading problem.
  • Fixed Channel::setMute being ignored on 3d sounds.
  • Fixed Sound::getSubSound/Sound::release issue.
  • Fixed streaming FSB and FMOD_NONBLOCKING issue.
  • Stopped resetting the length of a FMOD_CREATECOMPRESSEDSAMPLE based sound if it was VBR after seeking, as the next time it played it was possibly truncating the sound due to the miscalculated length. This does mean that Sound::getTime will be innacurate when the sound loops though for VBR sounds. FMOD_ACCURATETIME would fix it.
  • Fix xbox360 isplaying bug with FMOD_HARDWARE based sounds.
  • Fixed support for .XMA files that only had 1 frame in them.

27/1/06 4.02.09

  • Fixed bug with multichannel 24 bit samples being 3D.
  • Fixed multichannel 3D samples and getSpectrum / getWaveData.
  • GameCube - Lowered hardware channel count to prevent voices from dropping.
  • Linux - Fixed crash when calling System::close() on some machines.
  • Fixed WAV loader for wavs with nested chunks.
  • Fixed FMOD_NONBLOCKING memory leak and loading errors.
  • Fixed FSB 'basicheaders' support especially with XMA (crash).
  • Fixed FMOD_DSP_CREATECALLBACK not passing in instance parameter.

23/1/06 4.02.08

+ Update FMOD designer programmers tutorial. + Added XMA support (xbox360 only) to FMOD_CREATECOMPRESSEDSAMPLE support. Now fmod software mixer can play compressed XMA samples which means no more reliance on XAudio. Now effects can be used with compressed samples! + GameCube - Added virtual voices example. + Added sync point support to ASF/WMA codec. Now markers can be synced to from these types of files as well.

  • Reduced memory usage on init by 9k.
  • Fixed FMOD_ERR_OUTPUT_CREATEBUFFER error in multichannel 3d sounds coming from System::createSound.
  • GameCube - Fixed problems with virtual voices.
  • Fixed FMOD_3D_HEADRELATIVE not keeping orientation relative in FMOD_SOFTWARE mode.

12/1/06 4.02.07

  • Fixed pitch abnormality in 3D sound.
  • Fixed volume level of channel when it is at the same position as the listener, in 5.1 mode. Now instead of being placed in all speakers at full volume, the sound is placed at all speakers but at a correct (lower) volume.
  • Fix bug with multichannel sounds (ie stereo and above) loaded as 3D failing.

11/1/06 4.02.06

+ Added FMOD_CREATECOMPRESSEDSAMPLE. Compressed sample playback support! FMOD Ex can now load MP2 and MP3 data into memory, and play it back without any of the restrictions of streams may have. Save megabytes of memory by storing and playing back samples in their native compressed format! Streams should be still used if you don't want to store any sample data in memory and would prefer to play it from disk. ADPCM and XMA support coming soon.
+ Added 'suggestedsoundtype' to FMOD_CREATESOUNDEXINFO. As fmod has to scan every codec type when you open a file, this can be used to speed it up! + Added support for wav files with ogg encoded data without using windows codecs.
+ Added System::setAdvancedSettings / System::getAdvancedSettings to control cpu and memory usage of new FMOD_CREATECOMPRESSEDSAMPLE feature. Other advanced settings not related to this may be added in the future. + Added 'Room' room effect level support in FMOD_REVERB_CHANNELPROPERTIES for Xbox360.

  • Fixed midi playback on big endian machines. (xbox360, gc, ps3, mac etc).
  • ASIO recording now allows any sound channel count to be recorded to (instead of return FMOD_ERR_FORMAT). If ASIO is recording as mono and you pass a stereo sound in, then only the left channel will be recorded to. If ASIO is recording as stereo and you pass a mono sound in, only the left part of the recorded signal will be put into the mono sound.
  • Fix crash releasing a 2 subsounds from an fsb with Sound::release. Normally you would just release the parent FSB sound but you can do this as well now. (maybe the user wants to replace one subsound with another).
  • Fixed links in virtual voice tutorial docs.
  • Fixed playback on certain .it files that use extremely high pitched sounds because fmod's internal software mixer simply had a limit that was too low for it.
  • Fix memory leak in sound release.
  • Releasing a ChannelGroup with child groups now returns the children back to the master channel group. Before it didn't and releasing an orphan group would cause an exception.
  • Fixed 3D software sound not working properly in multichannel output modes.
  • Fixed 3D sound with multiple listeners.
  • GameCube - Fixed sounds not starting paused when requested to do so in playSound.
  • GameCube - Fixed poping when sound was started at low volume following a sound that was playing at a high volume.
  • Fixed WMA playback on Xbox cutting off before it reached the end.
    • Changed Sound::getLength to return 0xffffffff for FMOD_TIMEUNIT_MS and FMOD_TIMEUNIT_PCMBYTES when the stream was of unlimited length (ie a netstream)

21/12/05 4.02.05

+ Custom rolloff curve support added! See new Sound::set3DCustomRolloff / Channel::set3DCustomRolloff. Specify an array of points (distance vs volume) and FMOD will linearly interpolate between them.

  • Fixed small looping streams playback behaviour after Sound::setMode was called.
  • Fixed crash on mod/s3m/xm/it/mid.
  • FMOD_INIT_DSOUND_DEFERRED removed. All 3d calcs are now deferred (makes it more like software mode which is 'deferred' anyway). May improve 3d performance in dsound on win32.
  • Removed redundant 3d calculations which should improve performance.
    • Changed win32 hardware 'linear rolloff' emulation (because dsound3d only supports log) to match the software based rolloff better.
    • Sound::setMode and Channel::setMode can now switch between FMOD_3D_LINEARROLLOFF, FMOD_3D_CUSTOMROLLOFF & FMOD_3D_LOGROLLOFF.

19/12/05 4.02.04

+ Added FMOD_SPEAKERMODE_SURROUND.
+ Added FMOD_SPEAKER_MONO as an alias to use when in FMOD_SPEAKERMODE_MONO mode (instead of having to use 0, or FMOD_SPEAKER_FRONT_LEFT). + Added error codes FMOD_ERR_NEEDS2D and FMOD_ERR_NEEDS3D so that 3d functions that are called on 2d channels/sounds return an error (ie set3D/ get3D type functions), and vice versa (ie a 3D sound calling setPan). + Added FMOD_SOUND_FORMAT_MPEG.
+ Added lengthbytes to FMOD_CODEC_WAVEFORMAT structure. Note! Plugins should be recompiled with this structure to ensure compatibility.

  • Memory reduction by about 150k at init with 100 channels.
  • Fixed 3D panning issue in multispeaker output modes.
  • Fixed 3D volume issue in multispeaker output modes.
  • Fixed Channel::getAudiblity not reflecting channel group volume.
  • Fixed adding an effect to a channel played with System::playDSP not working.
  • Fixed attachFileSystem being global instead of per system object as it should have been.
  • Win32 mixer accidently reverted back to C version. Put back to SSE as it was supposed to be. (performance improvement again)
  • Fixed ChannelGroup::stop not recursively stopping channel groups.
  • Fixed channels not resetting themselves to the master channelgroup once they were finished, which could lead to unpredictable behaviour.
  • Allowed some corrupted midi files to play.
  • Fixed FMOD_OUTPUT_WAVWRITER_NRT not loading automatically properly when using fmodexp.dll.
  • Fixed 'virtual voice leak' which caused FMOD_ERR_CHANNEL_ALLOC sometimes.
  • Fixed glitch seeking an mp3 near the start.
  • Improved error detection when seeking randomly into an mp3.
  • Xbox360 dashboard music detection improved so music in a music channelgroup doesn't play while dashboard music is playing.
    • Changed System::setSoftwareFormat to set speakermode to FMOD_SPEAKERMODE_RAW if anything besides 0 is specified for numoutputchannels. 0 retains the previously set speaker mode.
    • Changed Channel::setSpeakerLevels to give an error if a speaker is specified that shouldn't work on the current speaker mode.
    • Changed FMOD_SPEAKERMODE_4POINT1 to FMOD_SPEAKERMODE_QUAD.
    • Renamed FMOD_SOUND_FORMAT_XADPCM to FMOD_SOUND_FORMAT_IMAADPCM.

25/11/05 4.02.03

+ Added PlayStation 2 port.
+ Added Channel::getIndex.

  • Fixed lowpass and reverb filter when processing channels greater than stereo.
  • Fixed mixed mono/stereo sounds in FSB file playing at half speed, when sound was loaded as sample and not stream.
  • Stopped codec_raw.dll from being loaded which was never an fmod dll anyway and just put raw file loading back into the main dll (as it is small anyway).

17/11/05 4.02.02

+ Added support for another type of floating point wav file (the type that adobe audition outputs is different to that of soundforge for example). + Added Prologic II dowmix matrix for 5.1 and 7.1 sounds playing on stereo output.
+ Documentation updates. Added "Getting started" tutorial to explain the key points of using FMOD Ex, and explains the main concepts and gives examples to help the user get up and running. + System::setReverbProperties now enables reverb on FMOD_SOFTWARE based sounds! The reverb parameters are going to be matched and improved to sound as close to EAX as possible. It is currently fairly rough, but will be better in future releases.
+ Added C# 'spectrum' example.

  • Fixed memory leak with getWaveData.
  • Fixed FSB mixed format issue.
  • Fixed mixer bug where stereo sounds played through 5.1 output and using non front left / front right panning were causing corrupted noise.
  • Fixed WMA seeking returning an error sometimes on some files.
  • Fixed parsing issue with M3U files.
    • Changed getWaveData to have a maximum numvalues limit of 16384. This saves a few 100k of ram.

10/11/05 4.02.01

+ Mono and stereo samples can now be mixed in an FSB stream (and even sentenced). In this case the stream is created using a stereo buffer, and mono sounds are upscaled to stereo in realtime. + Added Visual Basic 'spectrum' example.

  • Fixed ALSA not initializing in some distros.
  • Fixed midi playback error where pitch wheel bends were bending erronously.
  • Fixed FSB adpcm seeking support.
  • Fixed playlist files being opened using FMOD_NONBLOCKING flag. (relevant to netstream redirects and asx's etc.)
  • Fixed glitch in some .it files using filters.

4/11/05 4.02.00 - Official release.

+ Optimized fmod_event api to remove any allocs from getEvent if cacheevents was specified. Significant performance increase. + Xbox360 - more optimizations regarding System::update. + Linux - Add support for multichannel output in ALSA. + Custom memory system increased in speed meaning performance boost while loading.
+ Optimized 5.1 path for software mixer on all platforms (except for xbox360 which is already optimized). Speed increase of about 400%. More optimization to 5.1 path to come. (win32/linux/xbox is not sse yet).

  • Xbox360 - Fixed TRC requirement logic where FMOD "music" would resume if the user pressed pause in the Xbox360 dashboard. FMOD "music" now stays paused until the user returns music control to the game.
  • Xbox360 - XMA support fixes.
  • Linux - ALSA output now cooperates with other applications better.
  • Mac - Coreaudio support not returning sample rate to system preference rate fixed.
  • Fixed FSB files containing wavs with syncpoints/markers in them from crashing when loading.
  • .IT codec - fixed porta command in volume column not sliding fast enough.
  • Fixed seeking to the near the end of some mp3 files incorrectly causing FMOD_ERR_FILE_EOF.

21/10/05 4.01.07

+ Xbox 360 - optimized 5.1 mixers.
+ Optimize mixer to not mix idle dsp units. Good for channelgroups that only have hardware channels assigned to them. + X86 Mac version library added. Not tested. Give us feedback!

  • Fixed crash on non SSE machines.
  • Removed clicks from DirectSound software buffers by lowering their mixing quality :| Sounds a lot better now.
  • Huge memory saving on software mixing engine implemented.
  • Windows - Fixed issue with VST plugins.
  • Linux - Fixed cdrom TOC information error.
  • Xbox360 - Fixed quality issue in stereo sample resampler.
  • Xbox360 - Fixed clicks in optimized resamplers.

14/10/05 4.01.06

+ Added support for 3D stereo/multichannel sounds! Now stereo (and above) sounds can have EAX reverb and can be 3d positioned! The left and right part of a sound can even be positioned in different places in 3D space.
+ Added Channel::set3DSubChannelOffset / get3DSubChannelOffset so that a multichannel sound can have each part of its signal positioned in 3d seperately. + Added 'OfflineDecoding' example.
+ FSB files now store markers out of wav files so that the syncpoint callback api automatically works with FSB files as they do with .wav. + Added FMOD_DSP pointer inside the FMOD_DSP_STATE structure, so the callback writer can get a handle to the actual instance of the DSP unit that was created by the user. (oops should have been there in the first place!) + Linux now using SSE version of mixers and distortion filter. Significant speedup. + Linux OSS output possibly more stable. + GameCube - Stereo GCADPCM compessed FSB files now supported.

  • Xbox360 - 5.1 output not working fixed.
  • Xbox360 - Fixed various XMA streaming issues.
  • Windows - Fixed ASIO support.
  • Windows - Fixed wav file ACM windows codec support for non natively decoded file types.
  • Added support for MIDI pitch bend sensitivity message, so MIDI files with non default settings sound correct!

04/10/05 4.01.05

+ Win32, Xbox. Linear interpolation resampler, mixer, and distortion filter optimized using SSE. Significant speed improvements. + XMA support on Xbox 360 improved.

  • Fixed Channel::setPan not working on streams.
  • Fixed build issues with Xbox 360 libraries.
  • Fixed fsbankex command line parser.
  • Fixed Channel::setLoopPoints not working correctly on streams.
  • Fixed Memory_Initialize crash when calling it multiple times in a row.
  • Fixed Channel::setMode not recoginizing FMOD_3D_LOGROLLOFF / FMOD_3D_LINEARROLLOFF. fmod_designer log/linear event changes now work.
  • Fixed loop points not from .wav files that were exported to .FSB files not being recognized when loaded.

29/09/05 4.01.04

+ Huge optimizations on Xbox 360. Commonly used mixers formats and effects converted to use vmx128. Now only taking a fraction of what it used to. Distortion is the only effect currently optimized. The rest will come soon. + Added support for Channel::SetSpeakerMix for gamecube, also 3d sound will support prologic 2 now.

  • !! Fixed skipping/'fastforward sound' bug. This will improve peformance as well. NOTE: UPGRADE NOW FROM VERSION 4.01.01, 4.01.02 OR 4.01.03 TO AVOID THIS BUG.
  • Fixed fmod.pas inconsistancies.
  • Fixed stream stopping when encountering corrupted mpeg frames in mpeg codec.
  • Fixed FLAC looping again? It looks like there is a bug in libflac which corrupts the stack when seeking. Worked around it for now.

23/09/05 4.01.03

+ Upgraded to libflac 1.1.2. Looping .FLAC files work better now, also decoding speedup.
+ Event API updated to allow retrieval of user properties in FMOD designer.

  • Fixed .OXM files making white noise or crashing in some cases but only on big endian machines such as Mac, XBox 360, Gamecube.
    • NOTE! - FMOD Ex binaries will not be backward compatible until the API design has settled down, which should be very soon. (probably 4.02.00)

19/09/05 4.01.02

+ Added documentation for platform specific information for Xbox and Xbox 360. More to come for the other platforms.

  • Fixed System:setMaxHardwareChannels when using 0 to force software mode causing loading errors.
  • Fixed ogg crash and possibly other file format crashes.
  • Fixed delphi header issue.
    • NOTE! - FMOD Ex binaries will not be backward compatible until the API design has settled down, which should be very soon. (probably 4.02.00)

16/09/05 4.01.01

+ Added FMOD_OUTPUTTYPE_NOSOUND_NRT / FMOD_OUTPUTTYPE_WAVWRITER_NRT. Non-realtime versions of FMOD_OUTPUTTYPE_NOSOUND / FMOD_OUTPUTTYPE_WAVWRITER. User can drive the FMOD mixer with System::update at a faster than realtime update if they want.
+ Added FMOD_INIT_STREAM_FROM_UPDATE. This allows the user to update the streamer synchronously from System::update instead of asynchronously from the FMOD thread. Useful in conjunction with the FMOD_OUTPUTTYPE_NOSOUND_NRT / FMOD_OUTPUTTYPE_WAVWRITER_NRT modes.
+ Added FMOD_DSP_STATE structure for plugin writers. This is so plugin writers can now attach their own data to a plugin. Now all 3 types of plugins have this functionality.
+ Upgraded Xbox 360 build to final kits only now, and added XMA sample support.

  • Removed FMOD_INIT_NONREALTIME (it didnt do anything anyway). See new FMOD_OUTPUTTYPE_NOSOUND_NRT and FMOD_OUTPUTTYPE_WAVWRITER_NRT modes.
  • Fixed getSoftwareFormat not setting the resamplemethod variable.
  • Fixed System::setHardwareChannels not switching to software mixing if max was set to 0 or min was set higher than what the hardware had.
  • Fixed ParamEQ filter causing divide by 0 exception in delphi / VB.
    • Output indicies have been shifted to allow insertion of new output modes.
    • Renamed FMOD_CODEC to FMOD_CODEC_STATE for plugin callbacks.
    • Renamed FMOD_OUTPUT to FMOD_OUTPUT_STATE for plugin callbacks.
    • Renamed FMOD_DSP * parameters in DSP plugin callbacks to FMOD_DSP_STATE *.
    • FMOD_OUTPUTTYPE_WAVWRITER behaviour now changed to be 'realtime'. This means the user does not update the wav writer with System::update at all, but it writes out to the wav in realtime using the clock as a timer. Use FMOD_OUTPUTTYPE_WAVWRITER_NRT for the old System::update style behaviour.
    • NOTE! - FMOD Ex binaries will not be backward compatible until the API design has settled down, which should be very soon. (probably 4.02.00)

9/09/05 4.01.00 - Official release.

+ Added ability to change resample method. Added FMOD_DSP_RESAMPLER. Contains

FMOD_DSP_RESAMPLER_NOINTERP, FMOD_DSP_RESAMPLER_LINEAR, FMOD_DSP_RESAMPLER_CUBIC, FMOD_DSP_RESAMPLER_SPLINE. + Added more VB and C# examples.

  • Fixed FMOD_NONBLOCKING crash with hardware samples.
  • Fixed midi crash on win98.
  • Fixed bad ogg internet stream crashing fmod.
  • Fixed releasing and creating system objects more than 15 times causing channel based errors.
    • Changed System::setSoftwareFormat and System::getSoftwareFormat to include interpolation type parameter.

25/08/05 4.00.37

+ Added "Number of channels" tag to midi. + Added ChannelGroup::setPitch and ChannelGroup::getPitch + Added ChannelGroup::addGroup which allows nested channel groups. + Added ChannelGroup::getNumGroups and ChannelGroup::getGroup. + Added 'filecallbacks' example.
+ Added 'recordtodisk' example.

  • Fixed user streams.
  • Fixed .it file crash with new echo filter code.
  • Fixed crash if buffersize was set to 0 in System::setFileSystem. * Renamed ChannelGroup functions from 'set' to 'override' for those functions that dont scale, but go through and overwrite the channel attributes with the specified value.

23/08/05 4.00.36

+ Added XBox 360 build for beta devkits! + Added .IT song message as a tag "Song message". + Added .MOD / .S3M / .XM / .IT channel count as a tag "Number of channels" for information purposes. This number does not affect fmod's channel allocation in any way!
+ Improved 'percentbuffered' value from Sound::getOpenState so that it accurately reflects how much of fmod's buffer is filled at the time instead of just the 'read progress' as it was before (not that useful). + Added support for 'chunked' http streams. + Added FMOD_DSP_TYPE_ITECHO.
+ Added cross platform support for .IT files that use the DirectX Media echo effect! This is from .IT files written with Modplug Tracker. FMOD emulates the DirectX echo filter so that songs with this effect will play on ANY platform! No other .IT player can claim this!

  • Fix paused flag being ignored in System::playDSP.
  • Fixed ogg vorbis netstream stutter on startup.
  • Fixed oscillators and setFrequency with a negative value causing crash.
  • Fixed winamp plugins in ASIO mode.
  • Fixed netstreams stalling that used FMOD_ACCURATETIME.
  • Fixed ASF/WMA tags not returning certain entries as FMOD_TAGDATATYPE_INT or FMOD_TAGDATATYPE_BINARY
  • Fixed MIDI format detection so more midi files now load. (Thanks Mike Ulik and his 200,000 midi files :| )
  • Fixed icecast streams not updating their tags when switching songs.
  • Fixed loading crash on certain .IT files.
  • Fixed echo filter.
  • Fixed documentation on callbacks.
    • Renamed FMOD_DSP_TYPE_LOWPASS2 to FMOD_DSP_TYPE_ITLOWPASS.

12/08/05 4.00.35

+ Added 64bit Linux (AMD64) support.
+ More VB examples.
+ Added 3D listener functions to EventSystem class. + Gamecube version available.
+ XCode projects added to examples in Mac release. + Added FMOD_DSP_ECHO_DRYMIX and FMOD_DSP_ECHO_WETMIX parameters to echo filter.
+ Echo filter 20-30% faster.
+ Added support for special "3d distance" parameter in fmod_event library. Now you can specify envelopes in the fmod designer tool to react to 3d distance as the game runs! + Added http basic authentication support for icecast streams that have listener authentication.

  • Fixed Channel::setMode not updating loop mode on streams properly.
  • Fixed Channel::setMute on channels not working when using FMOD_3D and FMOD_SOFTWARE based sound.
  • FSB bugfixes, including basicheaders support and ADPCM support.
  • FMOD_INIT_DISABLESOFTWARE fixed.
  • Fixed issues with creating and releasing new FMOD_SYSTEM/System objects while streams were playing in an existing object.
  • Fixed support for FMOD_DSP_TYPE_MIXER.
  • Removed FMOD_DSP_ECHO_FEEDBACK. Just use FMOD_DSP_ECHO_DECAYRATIO which does the same thing.
  • Fixed System::close/release related hang if the user did not release all channel groups they had created.
    • Changed bitfield constants to #defines. In C you can't define global constants because the C compiler doesn't regard const ints as compile time constants. C++ does, but we have to support both C and C++ :(

1/8/05 4.00.34

+ Added support for S9F effect (backwards playback) in .IT format. + Added DSP::setInputLevels / DSP::getInputLevels. + Added ChannelGroup::set3DAttributes.
+ Added dsp_effectperspeaker example. This shows some DSP network manipulation. A different dsp effect is put on each output speaker and only one sound is playing!
+ Added loadfrommemory example. This just shows how to load a file from memory rather than from disk.
+ Added FMOD_IGNORETAGS. This enables the user to skip any redundant/extra disc access if loading from a slow medium such as CD.

  • Fixed VBR MP3s ending prematurely. (unless FMOD_ACCURATETIME was used).
  • Fixed playlist example not loading files with relative paths.
  • Fixed mac thread issue causing high cpu usage.
  • Fixed linux compile issue.
  • Fixed FMOD_OUTPUT_WAVWRITER on big endian platforms. (mac/xbox360/gc)
  • Fixed WinMM output initialization on Windows 98.
  • Fixed crash on XM files with bidi loops.
  • Fixed mod, s3m & xm with speed = 0 freezing the mod playback, it is now ignored.
  • Fixed MIDI issues, namely corrupted and badly written midi files!
  • Removed stack overflow issue in MPEG codec.
  • FMOD_NORMAL removed. Just use FMOD_DEFAULT.
  • Broken AAC libfaad support removed. We will have to work out a licensing agreement for the more improved libfaad2 before continuing support for this again.
    • FMOD Ex now has 27 examples!
    • Changed bitfield enums to const ints so casting back to enum type isn't needed when combining flags.

16/7/05 4.00.33 - Official release.

FMOD Ex is now NON BETA.

+ Windows 64bit AMD64 build added!
+ Added good quality software reverb! FMOD_DSP_TYPE_REVERB. Now FMOD_SOFTWARE mixed voices can have reverb, AND 5.1 output! + Added recording support to ESD output in linux. + Added ChannelGroup class. This allows channels to be grouped for parameter control or effect submixing! (ie add an effect to a channel group) + Added channelgroups example.
+ Added submixing example.

  • Fixed Sound::getName not working in v32 only.
  • Hopefully last speaker issue fix. WAVEFORMATEXTENSIBLE channelmask support is seriously broken on Creative and other sound cards. Reasons:
    1. Audigy NX bluescreens if you use WAVEFORMATEXTENSIBLE even for plain PCM, mono, 16bit data.
    2. SBLive value reported to go silent if dwChannelMask is 0, even though the Microsoft docs say 0 = direct out!
    3. Even if you specify SPEAKER_STEREO as is recommended by Microsoft in ksmedia.h, the panning biases towards the left on some cards. FMOD now only uses WAVEFORMATEXTENSIBLE for greater than stereo or 24/32bit audio data.
  • Fixed .S3M files with 16bit samples.
  • Fixed .S3M files with stereo samples.
  • Removed FMOD_CHANNEL_ALL. To affect all channels use the new System::getChannelGroup function which by default has all channels in its group.
  • Fixed MIDI playback with some bad files.
  • Removed System::setMasterVolume / System::getMasterVolume. To make master volume use a System::getMasterChannelGroup then call ChannelGroup::setVolume.
  • Removed Channel::setVolumeAbsolute. To do this just create a new ChannelGroup and add the channel to it that you don't want affected.
    • System::playSound and System::playDSP change 'channelindex' parameter from 'int' to encourage more people to use FMOD_CHANNEL_FREE instead of raw channel indices. To use a raw channel index you will have to cast the number to the FMOD_CHANNELINDEX type, making it an 'advanced' feature. If you are already using FMOD_CHANNEL_FREE you won't notice a difference.
    • Visual Basic only. FMOD_System_CreateSound now removes the exinfo param, and to pass it in a new function is created called FMOD_System_CreateSoundEx.
    • FMOD_OUTPUT_GETDRIVERCAPSCALLBACK parameter list changed.
    • Removed FMOD_OUTPUT_STARTCALLBACK.
    • Removed FMOD_OUTPUT_STOPCALLBACK.

8/7/05 4.00.32 BETA

+ Added winamp DSP plugin support.
+ Added WAVEFORMATEXTENSIBLE style 'channelmask' variable into FMOD_CODEC_WAVEFORMAT.
+ Playlist support added. ASX, PLS. M3U and WAX. Added FMOD_SOUND_TYPE_PLAYLIST, FMOD_TAGTYPE_PLAYLIST. + Added Synchronization point API. These points can come from markers embedded in wav files, and can also generate channel callbacks. Sound::getNumSyncPoints
Sound::getSyncPoint
Sound::getSyncPointInfo
Sound::addSyncPoint
Sound::deleteSyncPoint
+ Added support for FMOD_CHANNEL_CALLBACKTYPE_SYNCPOINT. + Added FMOD_3D_LOGROLLOFF and FMOD_3D_LINEARROLLOFF. Now you can treat min/max distance as volume = full and volume = 0 and FMOD will linearly fade between them if you choose FMOD_3D_LINEARROLLOFF.

+ Multichannel WAV files with alternate/non default speaker mappings now map the speaker output correctly into a sound created with FMOD_HARDWARE under directsound. FMOD_SOFTWARE based wavs are not affected at this time.

  • Fixed 3rd party plugin support not seeking properly.
  • Fixed createSound with no loop flags setting sound to loop instead of oneshot which should have been the default.
  • Fixed playing a sample from an end callback crash.
  • Speaker assignment fixes.
  • Soundcreate callback in a codec being called properly now for a stream that doesn't contain subsounds.
  • Removed FMOD_MPEGHALFRATE.
    • Renamed Channel::setOcclusion / getOcclusion to set3DOcclusion / set3DOcclusion so that it groups better with the other functions.
    • Shuffled channel and sound class functions around a bit to be more logical.

24/6/05 4.00.31 BETA

+ Added FMOD_ERR_MEMORY_IOP, FMOD_ERR_MEMORY_SRAM. + Better AIFF support including AIFC (non compressed). + More documentation. API reference now 'complete'. More refining and additions most likely need to be made!

  • Fixed pcmreadcallback in user streams not passing in the right sound pointer.
  • Fixed ogg vorbis not playing as a netstream.
  • Removed 'subsound' from FMOD_CODEC_GETPOSITIONCALLBACK.
  • Fixed Channel::setPosition inconsitancy when calling this function 2 times very quickly next to each other
  • Error checked getWaveData and getSpectrum for channeloffset being larger than number of channels.

9/6/05 4.00.30 BETA

+ Added FMOD_TIMEUNIT_MODPATTERN.
+ Added API documentation to Geometry class.

  • Fixed mod/s3m/xm/it/midi crash.
  • Fixed C# dsp effect enum list.
  • Fixed FMOD_CHANNEL_REUSE bug. (and therefore the generatetone example)
  • Fixed stream flushing its buffer twice sometimes.
  • Fixed some strange cases of stream playback causing new streams to play silent.
  • Removed FMOD_DSP_TYPE_FFT that didn't actually do anything? Maybe later.

6/6/05 4.00.29 BETA

+ GameCube support added.
+ XBox 360 support added.
+ Tags embedded in http based streams now work! (As long as they are at the start of the file)
+ Sound::getName now returns name of sound by using tags or embedded song name. + Added name field to FMOD_CODEC_WAVEFORMAT. + Added Sound::setSubSoundSentence. Gapless stream playback is now available! + Added FMOD_ERR_ALREADYLOCKED.
+ Added DirectX 3 support for FMOD software mixing only, so that pre-dx8 stuff like VirtualPC don't fail.
+ Added 'decodebuffersize' to FMOD_CREATESOUNDEXINFO. + Increased code name size from 32 bytes to 256 bytes. + Added "Real-time stitching" example.
+ Added ability to create user sounds with subsounds. + More documentation.
+ .it loader several times faster on songs with stereo samples in them. + Added FMOD_TIMEUNIT_SENTENCE_MS, FMOD_TIMEUNIT_SENTENCE_PCM, FMOD_TIMEUNIT_SENTENCE_PCMBYTES, FMOD_TIMEUNIT_SENTENCE, FMOD_TIMEUNIT_SENTENCE_SUBSOUND and FMOD_TIMEUNIT_BUFFERED. + Added System::setSoftwareChannels / System::getSoftwareChannels instead of setting it in System::init.

  • Fixed memory leak in createsound/stream if 'file not found'.
  • Fixed memory leak in createsound/stream if 'format not recognized'.
  • Fixed sub-sounds (ie CDDA, DLS or FSB) not displaying their names.
  • Fixed crash on certain .IT files.
  • Fixed silent samples on .S3M files.
  • Fixed bpm issue on .S3M files.
  • Fixed file offset bug.
  • Fixed Channel::getWaveData not working for streams.
  • Fixed certain mp3 netstreams with large amounts of redundant crap at the start.
  • Fixed Channel::setMode not taking effect on software based channels.
  • Fixed Channel::getPosition flickering on userstreams and maybe rare cases on normal streams.
  • Fixed System::setFileSystem.
  • Fixed FMOD_CHANNEL_REUSE now returns same handle value instead of reference counting it.
  • Fixed (XBOX only) pausing related bug.
  • Fixed Streams hanging/crashing after 24 hours of playback.
  • Removed 'levels' from Sound::setDefaults.
  • Removed 'levels' from DSP::setDefaults.
  • Removed Channel::getLevels. Just use Channel::getWaveData(level, 1, 0) instead. Also you could use larger values than 1 and scan the array for the largest value, or maybe average them out.
  • Removed Channel::setNextSound / getNextSound.
  • Removed FMOD_OPENSTATE_LOADINGSUBSOUND.
  • Removed numsoftwarechannels from System::init.
  • Removed System::setMaxInputChannels / System::getMaxInputChannels. This is now a paramater to System::setSoftwareFormat / System::getSoftwareFormat.
    • Sounds with multiple subsounds (CDDA/FSB/DLS etc) when opened as streams now play as one long sentence containing every subsound, if the parent sound is played. To play just the first subsound, the user can call parentsound->getSubSound(0, &subsound); and play the subsound.
    • Changed end callback behaviour to callback only when a sound ends, and not when stopped by the user.
    • If FMOD_CREATESAMPLE is used with mod/s3m/xm/it, and FMOD_ACCURATETIME is not, accurate time is forced so that it doesn't just fail with FMOD_ERR_MEMORY.
    • Changed FMOD_FILE_SEEKCALLBACK to only support offset. SEEK_CUR and SEEK_END are pointless, FMOD works it out and always gives an absolute offset to the user.
    • Changed System::setStreamBufferSize / System::getStreamBufferSize parameters. Removed 'decodebuffersize'. (now in FMOD_CREATESOUNDEXINFO)
    • Changed FMOD_TIMEUNIT_ORDER to FMOD_TIMEUNIT_MODORDER.
    • Changed FMOD_TIMEUNIT_ROW to FMOD_TIMEUNIT_MODROW.
    • Renamed CDDA example to cdplayer. Updated some of the code and comments inside.
    • Changed System::setMinMaxHWChannels to System::setHardwareChannels.
    • Changed System::getNumHWChannels to System::getHardwareChannels. Note! num2d and num3d parameters have been swapped around.
    • Changed System::setOutputPlugin / System::getOutputPlugin to

      System::setOutputByPlugin / System::getOutputByPlugin

    • Changed System::setOutputFormat / System::getOutputFormat to

      System::setSoftwareFormat / System::getSoftwareFormat and added a maxinputchannels parameter.

    • Changed FMOD_OUTPUT_INITCALLBACK to use void *extradriverdata instead of const void *hwnd.

9/5/05 4.00.28 BETA

+ Added 'userdata' member to FMOD_DSP_DESCRIPTION structure.

  • Fixed FMOD_OPENMEMORY not working after beta 27 file offset change.
  • Removed FMOD_DSP structure.
  • Fixed pointer in DSP callbacks not being the same as the one created with.

6/5/05 4.00.27 BETA

+ Added 'controlpanelspeakermode' to System::getDriverCaps. + Added C# and VB versions of the 'effects' example.

  • Fixed sounds returning invalid handle if a system object was released then re-created.
  • Fixed Sound::seekData giving wrong results.
  • Fixed file offset / length bug in System::createSound.
  • Fixed sounds with no FMOD_SOFTWARE or FMOD_HARDWARE specified crashing when being swapped out in a virtual channel.
    • Changed System::getDriverCaps to add an extra parameter.
    • Changed FMOD_SPEAKERMODE_NONE to FMOD_SPEAKERMODE_RAW.
    • Changed FMOD_OUTPUT_GETDRIVERCAPSCALLBACK to return the platform specific speaker setting based on the control panel or operating system.

3/5/05 4.00.26 BETA

+ Implemented Sound::setLoopCount / Sound::getLoopCount and Channel::setLoopCount / Channel::getLoopCount. Works on static samples as well as streams!
+ Added FSBankEXlib. Available in Multithreaded, and Multithreaded DLL builds. + Added a few more docs.

  • Fixed DSP crash on DSP units played with System::playDSP.
  • Fixed handling of wav files with bad and corrupted loop points stored within them.

2/5/05 4.00.25 BETA

+ Added FSBankEx. FSBankEx uses the FMOD Ex engine for loading, so it could support file format plugins. It also supports multichannel wavs when encoding multichannel interleaved FSB files! (no more needing 6 mono wavs or 3 stereo wavs for a 5.1 fsb. Just one 6 channel wav/ogg etc will work). + Added FSB encryption. Now sound designers can 'mangle' their data files and only with the correct key on the application side will the correct data be playable.
+ Sound::setLoopPoints / getLoopPoints and Channel::setLoopPoints / getLoopPoints fully implmented for samples and streams. FMOD_HARDWARE sounds that are samples do not support this. + Added makefile to linux release, to allow for "make install".

  • Fixed Channel functions returning invalid handle error from channel end callbacks.
  • Fixed close crash when reusing a channel that was playing a DSP unit.
  • Fixed handling of truncated wav files.
  • Fixed delphi headers.
    • Documentation cleanups, mainly in the 'get' functions.

28/4/05 4.00.24 BETA

+ Added Channel::setNextSound. This allows a channel to switch from one sound to another mid playback without gaps. Currently disabled. + FMOD_CREATESAMPLE added to FMOD_FLAGS to force codecs that open as a stream by default now (mod/s3m/xm/it/midi) to load as a sample.

  • Fixed streams smaller than the file buffer size playback bug.
  • Fixed Channel::setOcclusion.
  • Fixed Channel::setVolumeAbsolute.
  • Changed VB header's boolean types to Int to be more binary compatible with the FMOD dll.
    • Changed mod/s3m/xm/it/midi to load as a stream by default even when you call createSound. To many people are trying to decode whole mod files into memory and wondering why they run out of memory. To force the 'decode into memory' behaviour, the new FMOD_CREATESAMPLE can be used.
    • Changed channel handle passed into channel callbacks from being different from channel handle returned from playsound, to be the same.

21/4/05 4.00.23 BETA

  • Fixed file system bug.
  • Fixed crash when calling play or setposition when a stream was playing.

20/4/05 4.00.22 BETA

  • Fixed virtual voice swap callback. Voices that are real now also get a callback when you first set the callback so you can accurately track which start off real and which start off virtual, then what happens after that.
  • Fixed channel end callback. Voices that were stolen/reused before System::update was called weren't getting their callback.
  • Improved channel selector to stop it stealing playing channels if other channels had just stopped (and System::update hadn't been called yet).

19/4/05 4.00.21 BETA

+ Added backwards playback support. Negative setfrequency is accepted with FMOD_SOFTWARE sounds only, and samples (not streams) only. + Added FMOD_SOUND_NONBLOCKCALLBACK callback to FMOD_CREATESOUNDEXINFO to allow a user to get a callback when a sound has finished loading. Used with FMOD_NONBLOCKING flag. Error code is passed in as a parameter. + Added DSP::setBypass / DSP::getBypass. This allows the user to disable the effect of a dsp unit, without stopping all of its inputs, like DSP::setActive would.

  • Macintosh thread usage changed from Carbon to Posix for mach-o build. Now streams wont stutter when using the OSX gui!
  • Fixed a lot of crashes to do with virtual voices and streams. (not nescessarily combined). This should be a LOT more stable now.
  • Fixed squelching/chirping on mp3s and file errors on other formats.
  • Fixed stream stuttering on certain machines/file formats by increasing stream decode buffersize default from 200ms to 400ms.
  • System::createSound now correctly returns FMOD_ERR_FILENOTFOUND instead of FMOD_ERR_FORMAT when failing to open the file.
  • Fixed FMOD_NONBLOCKING causing a memory leak and not working if the sound was a static sample.
    • Changed System::setStreamBufferSize / System::getStreamBufferSize so user can now specify the decode buffer size and file buffer size separately.
    • Stream default file buffersize reduced from 64k to 16k to save memory. For net streams/cdda, 64k or so would be recommended.

13/4/05 4.00.20 BETA

+ Added Sound::set3DConeSettings / Sound::get3DConeSettings

        Channel::set3DConeSettings / Channel::get3DConeSettings
        Channel::set3DConeOrientation / Channel::get3DConeOrientation.

+ Increased speed of virtual voice swapping when going from emulated<->real.

  • Fixed FMOD_SOFTWARE + FMOD_3D and streams not working.
  • Fixed crash in System::update if virtual channels were being swapped that were streams.
  • Fixed FMOD_OPENONLY crash if stream was started with no seek.
  • Fixed bug in System::getNumDrivers if it was called after System::init without having called System::getNumDrivers or System::getDriverName before System::init first. (FMOD
  • Removed Geometry::flush. Use System::update.
  • Fixed glitch in filesytem causing WMA to fail opening and WAV to click.
  • Added protection for if a user reads all of a file with Sound::readData then mistakenly starts the stream looping, causing a hang.
  • Fixed crash when releasing a stream while it was playing.
  • Fixed delphi header mistakes.

8/4/05 4.00.19 BETA

+ Added buffer underrun detection! No more stream stuttering! You can now detect when underrun occurs and mute the stream or do whatever you want with it. Netstream example has been updated to reflect this. + Added Geometry::save to save out an object to a binary format. + Added System::loadGeometry to load an object from a binary format. + Added recording support for FMOD_OUTPUTTYPE_COREAUDIO on mac. + Added some documentation.

  • Fixed stream crash.
    • Changed Sound::getOpenState to also have 'percentbuffered' and 'starving' parameters. This is good for watching network streams buffer and also for error handling when a stream is starved.
    • Changed System::setStreamBufferSize to pass unsigned int instead of int.
    • Changed System::getStreamBufferSize to pass unsigned int * instead of int * and now the sizetype is a pointer.
    • Changed FMOD_DSP_SEEKCALLBACK to FMOD_DSP_SETPOSITIONCALLBACK.

5/4/05 4.00.18 BETA

+ New streaming code to hugely reduce memory usage compared to FMOD 3, and also remove cpu 'spikes'. FMOD now has a smooth consistant cpu usage while streaming, and uses a fraction of the memory that it used to for compressed formats.
+ Sound::getOpenState now returns an error code that reflects what went wrong in the async open thread (FMOD_NONBLOCKING) if there was an error. + Updated netstream example to show new openstate functionality. + Added 'userdata' member to FMOD_CREATESOUNDEXINFO. This allows the use of Sound::getUserData when getting pcmreadcallback and pcmsetposcallback during System::createSound.
+ Added overloaded System::createSound to C# so FMOD_CREATESOUNDEXINFO isn't needed if not wanted.
+ Added recording support for FMOD_OUTPUTTYPE_SOUNDMANAGER on mac.

  • Fixed Sound::getOpenState not returning FMOD_OPENSTATE_CONNECTING or FMOD_OPENSTATE_BUFFERING.
  • Fixed crash in System::close if user tried to released a sound that was still in the middle of opening with FMOD_NONBLOCKING.
  • Stopped denormalized floats getting into the lowpass/highpass/eq filters causing huge cpu usage or exceptions.
  • Removed FMOD_FILE_TELLCALLBACK.
  • Fixed MP3 codec so that it doesnt skip the first frame or take extra time than it needs to.
  • Fixed speaker levels not working because 3D code was resetting the levels on 2D sounds.
  • Fixed FMOD_CREATESOUNDEXINFO not being used in FMOD_NONBLOCKING created sounds, making things like non-blocking memory load calls fail.
  • Fixed MinGW and CygWin linking errors on windows.
    • Changed FMOD_FILE_OPENCALLBACK to add filesize parameter. This is better than having FMOD do a seek end, tell, then seek 0, because the length might already be present in a TOC or other filesystem structure.
    • Changed System::setFileSystem to remove FMOD_FILE_TELLCALLBACK.
    • Changed 'filelength' to 'length' in FMOD_CREATESOUNDEXINFO.
    • Changed FMOD_CODEC to remove FMOD_FILE_TELLCALLBACK filetell.
    • Changed FMOD_CODEC to provide filesize.

1/4/05 4.00.17 BETA

+ Added "FMOD Designer" sound tool.
+ Added multichannel output support to Mac build for surround sound. (FMOD_OUTPUTTYPE_COREAUDIO only).
+ Added recording support to ALSA and OSS modes on linux. + Added VBR Xing header support. Now Xing encoded MP3's won't need FMOD_ACCURATETIME to get accurate seeking and length of VBR mp3's. + Added fmodex_bc.lib import library for borland C. C++ linking not supported. + Added libfmodex.a import library for MinGW/CygWin. C++ linking not supported. + Implemented setMinMaxHWChannels.
+ Added Channel::getAudiblity. This is just the audible volume of the channel by multiplying 3d volume, volume, master volume and geometry occlusion together.
+ Added FMOD_TIMEUNIT_RAWBYTES for Sound::getLength and Channel::getPosition only.
+ More functions documented, still not there yet!

  • Fixed Virtual voice support for static sounds and streams.
  • Fixed race condition on Channel::setPan which causes NaN's and sound dropping out. (FMOD_SOFTWARE only).
  • Removed Channel::setTime / getTime. Use Channel::setPosition / getPosition with FMOD_TIMEUNIT_MS instead.
  • Tremor fixed point ogg vorbis codec removed.
  • Fixed linux build not running in anything but root mode.
  • Fixed crash on bidi/pingpong music loops in samples.
  • Fixed stereo sounds not loading as FMOD_3D like they used to. (they automatically downmix to mono as they stream or load.)
  • VirtualVoices example memory GDI memory leak fixed.
  • Fixed divide by 0 in highpass and bandpass and possibly lowpass filters.
  • Removed FMOD_INIT_DSOUND_GLOBALFOCUS. Now it is global by default, and you specify a hwnd if you don't want it global.
  • Fixed sounds with subsounds and Sound::seekData seeking to entry 0 each time instead of the entry they are supposed to be associated with.
  • 8bit PCM wav streams/sound loading - huge speedup.
    • Changed pan from 0.0 -> 1.0 to -1.0 -> +1.0.
    • Changed distance factor to reflect documentation. Currently it was taking 1/3.28 for feet instead of 3.28 as it should have.
    • Min and Max distance now defaults to distance factor when a sound is created.
    • Changed setMinMaxHWChannels changed from int min, int max to int min2d, int max2d, int min3d, int max3d.
    • Changed FMOD_VBRACCURATE to FMOD_ACCURATETIME. Now MOD/S3M/XM/IT can share this flag. FMOD will quickly and quitely play the mod until it finds the same point in the song again (a where the song loops) and count that as the length of the song.
    • Changed Sound::getLength to use position and FMOD_TIMEUNIT parameter instead of 3 hardcoded ms, pcm, pcmbytes values. This now allows things like number of mod/s3m/xm/ut orders in a song to be reported for example.
    • Changed 3D example to have changable distance factor.

3/3/05 4.00.16 ALPHA

+ Added more tutorials to documentation. + Added WinMM recording to FMOD_OUTPUT_WINMM output mode. + Added VST plugin support.
+ Added System::lockDSP and System::unlockDSP in case the user wants to stop FMOD's dsp engine while doing a complex dsp network adjustment (ie moving multiple units around and disconnecting / connecting). + Implemented System::getHandle for all platforms. + Added System::createDSPByIndex.
+ Added DSP::setParameter / getParameter. + Added DSP::getNumParameters.
+ Added DSP::getParameterInfo.
+ Added DSP::showConfigDialog.
+ Added DSP::getInfo.
+ Added dsp_gain example to show how to write a simple DSP plugin. + Added effect example to show how to use FMOD's built in effects. + Added dspviewer example to show how to use dynamic plugins, and also draw a spectrum and waveform using System::getSpectrum, System::getWaveData. + Added System::getWaveData / Channel::getWaveData for plotting the waveform of the playing audio. Much simpler than creating a dsp unit etc.

  • Fixed ParamEQ filter and also fixed a heap of other filters to be more tolerant of extreme parameters.
  • Removed Channel::setWeight / getWeight.
  • Removed 'weight' from DSP::setDefaults / getDefaults.
  • Removed 'weight' from Sound::setDefaults / getDefaults.
  • Removed DSP::setParameters / getParameters.
  • Removed System::getDSP.
  • Removed DSP::getName
  • Removed DSP::getFormat
  • Removed reverb unit from header for now as it was disabled anyway.
  • Fixed crash in System::close.
  • Fixed crash playing .it files.
  • Fixed .it loader.
  • Fixed crash when using fmodexp.dll
  • Fixed crash on some stream files.
  • Fixed sounds stopping if DSP::release was called during playback.
  • Fixed hang in MIDI loader on some files.
  • Fixed mistake in XM loader so stereo and 16bit samples sound ok now.
  • Fixed stream thread shutting down if second System object was created then closed.
  • Fixed record system getting out of sync if recordStop then recordStart were called.
    • DSP parameters are now dynamic, meaning unknown DSP plugins can be added and their parameter lists can be enumerated.
    • Changed System::setMasterVolume / getMasterVolume from int 0-1024 to float 0 to 1.
    • Changed Sound::setDefaults / getDefaults parameters from int 0-1024 to float 0 to 1.
    • Changed Sound::setVariations / getVariations parameters from int 0-1024 to float 0 to 1.
    • Changed Channel::setVolume / getVolume from int 0-1024 to float 0 to 1.
    • Changed Channel::setFrequency / getFrequency from int to float.
    • Changed Channel::setPan / getPan from int 0-1024 to float 0 to 1.
    • Changed Channel::setSpeakerMix / getSpeakerMix from int 0-1024 to float 0 to 1.
    • Changed Channel::setSpeakerLevels / getSpeakerLevels from int 0-1024 to float 0 to 1.
    • Changed Channel::setVolumeAbsolute from int 0-1024 to float 0 to 1.
    • Changed Channel::getLevels parameters from int 0-1024 to float 0 to 1.
    • Changed FMOD_OUTPUT_TYPE to FMOD_OUTPUTTYPE and all the types inside renamed.
    • Changed DSP::setInputMix / getInputMix parameters from int 0-1024 to float 0 to 1.
    • Changed DSP::setDefaults / getDefaults parameters from int 0-1024 to float 0 to 1.
    • Changed System::getSpectrum / Channel::getSpectrum to take number of floats being written rather than number of samples being analyzed. (which is always 2x the data written to the buffer)

27/1/05 4.00 alpha 15

+ Added Geometry API.
+ Added IASIG I3DL2 Reverb support. Now some non EAX compatible cards can get hardware reverb with the same fmod interface!. + Added Echo effect. (FMOD_DSP_TYPE_ECHO, FMOD_DSP_PARAM_ECHO) + Added Flange effect. (FMOD_DSP_TYPE_FLANGE, FMOD_DSP_PARAM_FLANGE) + Added Distortion effect. (FMOD_DSP_TYPE_DISTORTION, FMOD_DSP_PARAM_DISTORTION) + Added Normalization filter. (FMOD_DSP_TYPE_NORMALIZE, FMOD_DSP_PARAM_NORMALIZE) + Added ParamEQ filter. (FMOD_DSP_TYPE_PARAMEQ, FMOD_DSP_PARAM_PARAMEQ) + Added Pitch shifting filter. (FMOD_DSP_TYPE_PITCHSHIFT, FMOD_DSP_PARAM_PITCHSHIFT) + Added Chorus effect. (FMOD_DSP_TYPE_CHORUS, FMOD_DSP_PARAM_CHORUS) + Added virtual voices example.
+ Added geometry example.
+ Added System::createStream. This is identical to System::createSound but just with the FMOD_CREATESTREAM flag added in. It is to make it more obvious so people don't go loading huge files into memory when they should be streamed by accident.
+ Added System::createStream which is exactly the same as System::createSound but with the FMOD_CREATESTREAM mode bit added in, because I know people are going to forget to add the flag unless it is right in front of them! + Added Visual Basic interface.

  • Fixed DSP related issues with units having multiple outputs.
  • Removed "outputfrequency" from FMOD_DSP_PARAM_LOWPASS
  • Removed "outputfrequency" from FMOD_DSP_PARAM_LOWPASS2
  • Removed "outputfrequency" from FMOD_DSP_PARAM_OSCILLATOR
  • Priority and weight now work.
  • Voices are now swapped based on volume and 3d volume.
  • Fixed FMOD_SOFTWARE based 3d sounds appearing loud between System::playSound when paused and System::update if the sound was positioned far away.
    • Renamed "wetness" parameter in DSP::setInputMix to "volume".

6/1/05 4.00.14 ALPHA

+ Added EAX2, EAX3 and EAX4 support. If the card supports EAX4, multiple reverb environments at once are possible. + Added 2 lowpass resonance filters. (FMOD_DSP_TYPE_LOWPASS, FMOD_DSP_TYPE_LOWPASS2) + .IT music support now supports resonant lowpass filtering. + Added FMOD_INIT_DISABLESOFTWARE to save memory if software mixing isn't needed.
+ Added FMOD_ERR_NEEDSSOFTWARE if a codec or feature is used that requires software mixing.
+ Added missing codec_dls.dll to make the plugin version of codec_midi.dll work. DLS files can also be loaded without MIDI as well like a multi-sound bank and Sound::getSubSound can be used to play or get information on each sound. + Added System::addDSP.
+ Added Channel::addDSP.
+ Added FMOD_ERR_DSP_TOOMANYCONNECTIONS. + Added DSP::remove to unli