=============================================================================== REVISION HISTORY : FMOD Ex Copyright (c) Firelight Technologies, Pty, Ltd, 2004-2008 http://www.fmod.org =============================================================================== + Added feature or noticable improvement - Bug fix or something removed * Changed or Information ! Important - Take note! =============================================================================== 4/07/08 4.16.04 - Stable release update --------------------------------------- + FSBankEx - added -z option to make message logging dissapear. - Fix multichannel MP2/MP3 FSB (ie 4 channels and above) from swapping channels around when calling Channel::setPosition - Fixed floating point exception in 3D calculations on some platforms. - Fixed potential crash on system release when using channel end callbacks to play sounds. - Fixed channels not starting paused when played from a channel end callback. - Event API - Fixed spurious FMOD_ERR_CHANNEL_STOLEN return from some functions - Linux - fixed potential segmentation fault when calling System::close() when using the ESD output mode. - PS3 - Fixed slow allocation times when using a fixed memory pool passed in through FMOD::Memory_Initialize. This was causing long load times on certain .fev files and banks. - PS3 - Fixed rare bug where Channel::setMode will have no effect. - PS3 - Fixed possible SPU exception when too many FMOD DSP connections are created. - Wii - Fixed software reverb not working properly. - FSBankEx - fixed command line version not returning 1 to the shell when there was an error. 24/06/08 4.16.03 - Stable release update ---------------------------------------- - Fix Geometry::release not resetting occlusion values if it was the last object to be released. - Fix heavy stall in Channel::setPosition or FMOD_EVENTPROPERTY_TIMEOFFSET introduced in 4.16.02 due to change in mp2/mp3 chirp/crash fix. 20/06/08 4.16.02 - Stable release update ---------------------------------------- - Fixed a memory corruption when loading an FSB with named syncpoints. - MP2/Mp3 - Fixed extremely rare crash or 'chirp' based on combination of source data, and seeking, which made the mpeg decoder think a frame was mp2 when it was actually mp3, purely by chance on a random section of bits. - Fixed Channel::setSpeakerMix with FMOD_SPEAKERMODE_PROLOGIC, not positioning stereo sounds loaded in the rear speakers properly. - Fixed loop points point ignored in FSB streams. - Event API - Fixed freeEventData sometimes always returning FMOD_ERR_NOTREADY - Xbox360 - Fix file read error seeking in old multichannel XMA files. - PS3 - Fix audio stuttering when number of dsp buffers is set to a non-default value that doesn't divide into 8. 12/06/08 4.16.01 - Stable release update ---------------------------------------- - Fixed rare stall in System::playSound command. - Fix 2d sounds getting muffled by HRTF sometimes. - Fixed midi/mod/s3m/xm/it file playback crash introduced in previous release. ! FSBankEx - Fixed bad FSB files being written out, introduced in previous release. - FSBankEx - Fixed MP2 looping sometimes not working - FSBankEx - Fixed command line version not parsing encrypt key if platform was ps2/wii/gc/xbox360. - Event API - Fixed concurrent themes stopping prematurely 5/06/08 4.16.00 - Stable release -------------------------------- + Added FMOD_INIT_SOFTWARE_REVERB_ON_FX flag so reverbs will connect to the channel DSP head instead of the sound source, so reverb will apply after all other connected effects. + Wii - Improve loading time of sound banks by 200% (may need to rebuild fsbs). - Fix calling setMute on master channelgroup not muting newly played channels. - Removed a stall on a nonblocking stream when setting a subsound sentence. - FSBankEx - Fix -s (disable seektables), add -t (dont interleave), make gui remember quality setting. - FSBankEx - PCM data is now written out as big-endian format if platform selected is PS3. The allows FMOD_OPENMEMORY_POINT to be used properly. 30/05/08 4.15.06 - Development release update --------------------------------------------- + Add FMOD_SYSTEM_CALLBACKTYPE_BADDSPCONNECTION. This now triggers if System::setCallback is used and the user has created a circular DSP connection. This error check is now moved from DSP::addInput into the thread, to avoid a stall in the main thread. + Added "FMOD Event System - Best Practices For Programmers" document + PS2 - Add ability to call FMOD_File_SetDiskBusy from IOP. User IOP modules must link with fmodiop.ilb - Fix unnecessary file seek when mpeg decoder encounters a tag at the end of an mpeg. - Fix crash when looping certain mp3s created with FMOD_CREATECOMPRESSEDSAMPLE. - Fixed stall in DSP::addInput by moving circular connection error check into mixer thread. See new FMOD_SYSTEM_CALLBACKTYPE_BADDSPCONNECTION callback. - PS2 - Fix FMOD_INIT_PS2_SWAPDMACHANNELS from making software mixed output silent. - Event API - Fixed oneshot sounds not unpausing, therefore sounding like they never start. - Event API - Fixed problem with event property "3D Position Randomization" - FSBankEx - Fix seamless looping encoder for stereo/multichannel/low samplerate mp3 encoded FSB files * Changed System::setCallback to remove type parameter. This isnt needed, just switch on all types of callback from the callback itself, and filter out ones you don't care about. * PS3 - Now built with SDK 230.001 22/05/08 4.15.05 - Development release update --------------------------------------------- + FMOD_NONBLOCKING now applies to Channel::setPosition, and virtual voice swapping of streams, so that there is no main thread stall slowing the game down. - Fixed memory leaks when loading it/mod/s3m/xm files. - Fixed error returned when trying to perform DSP additions on a hardware channel, now it reports FMOD_ERR_NEEDSSOFTWARE. - Fixed crash with FMOD Echo DSP caused by setting echo parameters as the unit is being connected. - Fixed Channel::setDelay starting sounds earlier than it should. - Fixed FMOD_DELAYTYPE_DSPCLOCK_END time not being reset when a sound finishes playing. - Fixed rare click heard when playing one sound then starting a second. - Fix a stream starting virtual, causing a stall in System::update. - Fixed reverb wet mix being heard when starting a sound as paused, with reverb enabled. - FSBankEx - Stop cache files being generated if compression caching flag is not enabled. - FSBankEx - Stop mp3 encoder chopping end of sound off if disable loop encoding was specified. - PS3 - Fixed further noise when connecting an effect to a DSP unit as an extra output introduced in last release. - Wii - Fixed unaligned address crash when loading FSB. 16/05/08 4.15.04 - Development release update --------------------------------------------- + Optimized loading speed of FSB/WAV/MP2/MP3 files with markers/syncpoints. An example file with a thousand markers is now 400ms to load rather than 12 seconds. + PS3 - PS3 can now play up to 16 channel streams. + Wii - Added support for hardware Biquad filter. - Fixed incorrect sound cone direction when using FMOD_INIT_3D_RIGHTHANDED. - Fixed extremely rare crash in mixer that is usually observed in the callstack in FMOD_Resampler_Linear. - Fixed hang in mp2/mp3 decoder introduced in previous version thanks to new multichannel support. - Win - Fixed geometry attributes not updating when both listener and channel are stationary. - Win - Fixed memory leak when loading WMA files. - Wii - Now returns and FMOD_ERR_FORMAT instead of crashing when loading invalid format with FMOD_OPENRAW. - PS3 - Fix opencallback from attachFileSystem not being called on PS3 only. - PS3 - Fixed noise when connecting an effect to a DSP unit as an extra output. - Event API - Fixed crash when autopitch enabled but no parameters created - Event API - Fixed incorrect sound definition spawn behaviour when "Maximum spawned sounds" has been reached 2/05/08 4.15.03 - Development release update --------------------------------------------- + Added FMOD_MEMORY_SECONDARY FMOD_MEMORY_TYPE flag to indicate that memory should be allocated in secondary memory of the system (for example RSX on the PS3). + Added new argument, 'memtypeflags' to FMOD::Memory_Initialize function to specify which FMOD_MEMORY_TYPE flags will come through the memory callbacks. + FSBank - Added -e [encryptionkey] to commandline. + FSBank - Added joint stereo encoding to multichannel mp2/mp3 files. Multichannel sounds now 40% to 50% smaller! + FSBank - Added loop declicking support to IMA ADPCM encoding. - Fixed stream going mute if user set loop points that were behind the current stream playposition. - Fixed crash when attempting to play a parent stream when no subsound sentence has been specified. - Fixed potential crash when using setSubSoundSentence to change the sentence of a playing sound stream. - Fixed potential exception when calling release on multiple subsounds removed from one FSB. - Xbox 360 - Fixed hang when calling Sound::setSubSoundSentence on certain sized XMA subsounds. - Win - Fixed WMA stream seeking to near the end of the file causing a hang. - Win - Fixed memory leak when loading WMA files. - Event API - PSP - Fixed parameters with velocity not working properly. - FSBank - Fixed ps2 reverb cores not being remembered on close. - FSBank - Fixed C headers being generated even though c headers was turned off. * FMOD_MEMORY_PERSISTENT will no longer come through the memory callbacks unless it is explicitly specified in 'memtypeflags' of FMOD::Memory_Initialize. FMOD_MEMORY_XBOX360_PHYSICAL will continue to come through regardless of setting. * PS3 - RSX memory pool specified in FMOD_PS3_EXTRADRIVERDATA will be ignored if FMOD_MEMORY_SECONDARY is specified in 'memtypeflags' of FMOD::Memory_Initialize. 24/04/08 4.15.02 - Development release update --------------------------------------------- + Xbox 360 / PS3 - Improved performance of DSP Echo when used with DSP::setSpeakerActive. + FSBank - Added new 'low memory' mode for syncpoints with no names. - Prevent crash when attempting to detach a shared subsound from its parent stream, now an appropriate error is returned. - Fixed a rare freeze in playback of MIDI files. - Removed limit from sending large DSP networks to fmod_profiler. - Fixed parent sound playback with no sentence returning FMOD_ERR_INVALID_PARAM instead of FMOD_ERR_SUBSOUNDS. - Fix FMOD_SOUNDGROUP_BEHAVIOR_MUTE and fading not working with hardware voices. - Fixed tags so 16bit Unicode strings will have a proper 2 byte null terminator. - Wii - Fixed crash when shutting down. - PS3 - Fixed crash when using DSP Echo. * FSBank - update FSBankLib documentation. * If using single subsound FSB streams you can now detach the subsound them from the parent stream and add it to a user created sound stream for sentencing. 18/04/08 4.15.01 - Development release update --------------------------------------------- + Added DSP::set/getSpeakerActive. Allows the user to turn off processing for a DSP effect on a channel by channel basis to reduce CPU overhead. + Reduced memory used by DSP Flange. - Fixed HRTF not fading properly when pitching up-side-down. - Fixed uninitialized channelgroup DSP members causing crash on calling some DSP functions. - Fixed sample sentence crashing when mixing samples and streams or when trying to use a sentence of samples with FMOD_HARDWARE. - Fixed mod/s3m/xm/it/midi crash introduced in last version. - Fixed FMOD_SOUNDGROUP_BEHAVIOR_MUTE behavior. - Fixed FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST not invalidating/reference counting the old channel handle. - PS3 - Fixed extremely rare bug where a channelgroup will go silent. - FSBankEx - fix disable looping for mp2/mp3 so that it doesnt stretch sounds any more, it just pads them with silence. - Profiler - made screen capture feature more obvious and fixed a problem where the produced image was at the current zoom level, it should save at the default zoom level for readability. - Event API - Fixed leaking streams - Event API - Minor improvement to stream pool utilisation 11/04/08 4.15.00 - Development release update --------------------------------------------- + Added 'debugLogFilename' to FMOD_ADVANCEDSETTINGS to allow user to specify log path / name. + Added 'FMOD Profiler' application to Win32 and Mac to replace existing DSPNet Listener tool. The new tool provides existing functionality along with a real time CPU usage graph. + Add Sound::getMusicNumChannels, Sound::setMusicChannelVolume, Sound::getMusicChannelVolume, to allow mod/s3m/xm/it/midi volume manipulation of music channels. + Add multichannel support for FSB MP2 encoding. + Added a system callback for when a thread is created, this callback will report the name and the ID of the thread. + Added ability to specify which port FMOD listens on for connections from FMOD Profiler. This is exposed through FMOD_ADVANCEDSETTINGS. + Added support for FMOD Profiler to connect to applications on Mac, Linux, Linux64 and Solaris. + Added FMOD_DELAYTYPE_DSPCLOCK_END to Channel::setDelay/getDelay + Optimize DSP disconnection code, huge speed improvement. + Optimized playsound to not recalculate 3d position multiple times. + PS3 - Enabled DTS support. + PS3 - Added FMOD_INIT_PS3_PREFERDTS init flag to prefer DTS over Dolby Digital if both are supported. + PS3 - Added FMOD_INIT_PS3_FORCE2CHLPCM init flag to force output to stereo LPCM. + PS3 - Enable System::setDSPBufferSize for numbuffers only. + PS3 - SPU performance improvements due to new GCC Toolchain. + Reduce memory usage of DSP Echo filter. + Xbox 360 / PS3 - Speed optimized DSP Echo filter. + PS3 - Enable AIFF support. + PS3 - Remove stall when setting sfx reverb parameters. + Event API - Improved memory usage + Event API - Added "RoughSequence" event to example project + Event API - Added support for sound instance "Autopitch parameter" property - Reduce System::update / EventSystem::update overhead. - Fixed FMOD_OPENSTATE_STREAMING not being set for FSB subsounds. - Fix FMOD_REVERB_CHANNELPROPERTIES with a non existent reverb instance causing crash. Now returns FMOD_ERR_REVERB_INSTANCE. - Fixed stack overflow when playing 8ch mpeg FSB files. - Fixed config screen not updating on certain VST plugins. - Fix System::setReverbProperties sometimes returning an error. - Fix mp3 decoder seeking back to 0 if the seek or loop position was less than an mpeg frame size. - Fixed 64-bit pointer corruption - Fixed Unicode check on http/https urls being passed to System::createSound/Stream - Fixed crash when using plugins version of FMODEx with certain output modes. - Fixed certain codec plugins crashing on load. - Fixed hardware virtual voices not becoming real again. - Fixed occasional crash when playing multichannel mp3 fsbs. - Fixed threading issue with SoundGroups - Fixed memory corruption in DSPChorus when the number of input channels is greater than the number of channels being output by the system. - Fixed voices gradually going virtual over time. - Fixed unimportant virtual voices not ending at the right time and then starting later when they should in fact have stopped long before that time. - Fixed DSPConnection::getLevels from causing a bad memory write. - Fixed accuracy of Channel::getPosition with stream playback. - Fixed crackling when using System::playDSP and reverb. - Fix calling addDSP twice in a row with the same object/parameter causing infinite loop. - Fix Channel::getAudibility not taking SoundGroup mute volume into account. - Fix crash in second System::init call if first System::init call returned FMOD_ERR_OUTPUT_CREATEBUFFER. - Fixed SoundGroup with FMOD_SOUNDGROUP_BEHAVIOR_MUTE behaviour, and FMOD_INIT_VOL0_BECOMES_VIRTUAL used, not going virtual immediately, but only after moving the 3d source or listener. - Fixed MIDI notes sometimes getting suck on (sustain forever). - Fixed crash when using FMOD_INIT_ENABLE_PROFILE with large DSP networks. - Fixed System::setAmbientReverbProperties not enabling reverb before a createReverb call. - Fixed crash when releasing system object after a profiler initialization error. - Fixed setInputChannelMix not taking effect until the next System::update with 3d sounds. (2d worked ok). - Win32 - Fixed memory error being returned when enumerating a system with more input devices than output devices. - Mac - fixed useplugins example Makefile to correctly link with plugins dylib. - Mac - Fixed issues with applications using event loops. - Mac - Fixed init failure on certain recording devices such as the iSight camera. - PS2 - Fixed garbled noise when mixing mono and stereo sounds in an FSB vag stream. - PS3 - Fixed problems with distortion effect for high values of FMOD_DSP_DISTORTION_LEVEL. - PS3 - Fixed very rare pops when playing sounds. - PS3 - Fixed crash when inserting a DSP effect in a certain DSP tree configuration. - PS3 - Fixed occasional popping coming from mixer with a busy DSP tree. - PS3 - FIxed distortion when rapidly updating DSP SFX Reverb parameters. - PS3 - fix chirp noise when sound ends. - PS3 - Fixed occasional crackling in DSP Echo filter. - GC/Wii - Fixed file access alignment issue if user file callbacks were used. - PS3 - Fixed echo not working on 8 channels. - Wii - Fixed instance 0 system reverb properties being overwritten when setting instance 1 properties. - Linux - Tweaked ALSA output mode to better support requested DSP buffer sizes. - FSBankEx - Fixed caching sometimes not working - FSBankEx - fix .fsbcache directory from not working on unix style environments by changing '\' to '/'. - FSBankEx - Fixed FSBs built from cache being slightly different to original - FSBankEx - Fixed crash when using MP2/MP3 compression with small files - Event API - incorrect mute behaviour with getEvent and category mute fixed. - Event API - stopped releasing an event from a stop callback of the same event causing a recursive loop and crashing. - Event API - Fix memory corruption from logging system when releasing an event (fmodexL only). - Event API - Fixed MusicPrompt::begin to support theme start segments with cue conditions - Event API - Fixed EventProject::release to reset the music system before freeing music data (prevents crashes) - Event API - If the transition timer is running and the main theme ends, start the target theme immediately (don't wait for the timer) - Event API - Fixed event "Steal quietest" max playbacks behaviour sometimes erroneously falling back to "Steal oldest" - Event API - Fixed endian issues in music data loading which broke music playback on big-endian platforms - Event API - Fixed MusicSystem::setPaused logic to handle beat syncing correctly - Event API - Fixed music system applying tempo changes too early - Event API - Fixed memory leaks in music system - Event API - Fixed memory error due to sound definitions with no entries - Event API - Fixed music system crashing after restarting the event system - Event API - Fixed typos in FMOD_EVENT_PROPERTY speaker enumeration docs - Event API - Fixed music system handling of empty segments - Event API - Fixed network tweaking of category volume/pitch - Event API - Fixed rare silent sounds when primary parameter moved very quickly - Event API - Fixed network auditioning with FMOD_EVENT_INIT_DONTUSENAMES - Event API - Fixed 64-bit EventSystem::load failing with FMOD_ERR_MEMORY - Event API - Fixed oneshot events with sounds with loop counts not stopping - Event API - Fixed network tweaking crash between Windows and Mac. - Event API - Fixed 3D Pan effect to be relative to the Event 3D Pan level * FMOD_INIT_ENABLE_DSPNET has been replaced with FMOD_INIT_ENABLE_PROFILE for use with the new profiler tool. * When using FMOD_CREATESOUNDEXINFO, specifying a suggestedsoundtype of FMOD_SOUND_TYPE_MPEG will now load any tag data which will also allow loading of MPEG files with more than 4k of tags at the file start. * Event API - "Sequential" sound definitions are now continuous across freeEventData calls * .FEV file format updated! FMOD Designer 4.13.06 requires FMOD version 4.13.06, 4.12.06 or higher. * On Mac when using the device list changed callback, the user must process the application event queue to allow FMOD to detect device list changes. * System::setCallback now uses void* for commanddata1 and commanddata2 parameters instead of unsigned int for 64bit compatibility. * FMOD_DELAYTYPE_DSPCLOCK_PCM has been renamed to FMOD_DELAYTYPE_DSPCLOCK_START to complement FMOD_DELAYTYPE_DSPCLOCK_END. * PS3 - Now built with GCC Toolchain 4.1.1. * PS3 - Name SPURS taskset to "FMOD". * PS3 - Now built with SDK 220.002 * Linux / Mac. Got rid of pdf documentation and replaced with chm. Use xchm and equivalents to view on these platforms. 01/02/08 4.13.00 - Development release update --------------------------------------------- + Added support for static samples to Sound::setSubSoundSentence. + Optimized DSP engine graph connection code. + Added "defaultDecodeBufferSize" for streams to FMOD_ADVANCEDSETTINGS. + Added new FMOD_MEMORY_TYPE, FMOD_MEMORY_PERSISTENT to indicate persistent memory allocations which are freed when System::release() is called. + Added System::getDSPClock + Added a new system callback for memory allocation failures. + Added DSPConnection class. New functions are DSPConnection::getInput DSPConnection::getOutput DSPConnection::setMix DSPConnection::getMix DSPConnection::setLevels DSPConnection::getLevels + Added parameters to Channel::setDelay/getDelay and added FMOD_DELAYTYPE_END_MS FMOD_DELAYTYPE_DSPCLOCK_PCM as the delay types. Sounds can now be started on a global DSP timeline with sample accurate precision! Great for interactive music. + Added System::getDSPClock, can use this value with the above Channel::setDelay command. + Added support for multiple software based reverbs. EventSystem::setReverbProperties, System::setReverbProperties, can be used to specify the 'Instance' of reverb you want to use. Channel::setReverbProperties can also be used to change wet/dry mix for a channel for different reverb instances. + Added FMOD_OPENSTATE_STREAMING to replace FMOD_OPENSTATE_READY while the streamer has a lock on a sound. This way you can test for FMOD_OPENSTATE_READY to make sure it is safe to release a sound without it blocking the main thread. + PS3 - Added support for custom DSP units. + Win64 - Added support for WASAPI and OpenAL output modes. + Xbox 360 - Sped up mp2/mp3 decoding by about 1.5-1.6x. + PS3 - Enabled getSpectrum support. + PS3 - Added support for FMOD_DSP_OSCILLATOR. + Event API - All channels used by the event system now have their userdata field set to the event instance handle that spawned them. + Event API - Sound::setUserData can now be used with "programmer" sounds - Fixed Channel::stop rare crash if using System::playDSP (oscillators etc). - Fixed setting the volume of a channel to 0 then back to something non 0 while it was being played 'paused', causing start of sound to be chopped off, but only when using FMOD_INIT_VOL0_BECOMES_VIRTUAL - Fixed Channel::getPosition on a stream getting confused to whether it was looping or not if Sound::setMode was called after System::playSound. - Fixed 3d reverb not updating environment when a Reverb3D::release was called. - Fixed FSB subsound streams not ending when being played. - Fixed a memory leak in MIDI codec. - Fixed crash when using DSound output mode with FMOD_CREATECOMPRESSEDSAMPLE and FMOD_NONBLOCKING without specifing either FMOD_HARDWARE or FMOD_SOFTWARE. - Fixed MIDI playback timing calculation so it doesn't drift when a file has tempo changes. - Stop user being able to release a sound that was already in the middle of being released from a channel callback (Sound::release calls channel callback) - Fixed FMOD_REVERB_CHANNELPROPERTIES::Room being ignored if System::setReverbProperties was called -after- Channel::setReverbProperties. - Fixed a memory leak when recording. - Fixed uninstaller leaving files behind. - Fixed various issues with example programs. - Removed memory fragmentation every time a stream was opened and removed call to realloc. - Fixed syncpoints in streamed FSBs calling no matter what subsound was playing, as well as Sound::getNumSyncPoints/getSyncPoint returning incorrect values. - Fixed sounds with 1 syncpoint, or a syncpoint on position 0 only triggering once, or a looping sound with a syncpoint right at the end not triggering. - Removed the following functions in favour of the DSPConnection class. DSPConnection handles are faster as they don't rely on indicies which need to serialize and block the main thread against the mixer thread to be correct. DSP::setInputMix DSP::getInputMix DSP::setInputLevels DSP::getInputLevels DSP::setOutputMix DSP::getOutputMix DSP::setOutputLevels DSP::getOutputLevels - Fix behaviour when ChannelGroup::addDSP is used and virtual voices. - Fix software voices leaking in rare timing cases causing sound to drop out. - Reduced memory overhead for memory blocks in the memory manager. - Linux - Fixed stuttering in ALSA recording. - Linux64 - Fixed example makefile errors. - Win32 - (Vista) Potentially reduced stuttering. - Win32 - (OpenAL) Disabled EAX-RAM feature for Creative XFI cards to improve streaming performance. - Mac - Fixed crash when enumerating available devices quickly after a device removal, via the device list changed callback. - Mac - Fixed potential problems with GUIDs from devices using unicode. - PS2 - Fix hang thanks to recursive criticalsections not being implemented. - PS3 - Fixed noise being played when an orphan dsp node is connected to FMOD SoundCard Unit. - PS3 - fixed buzzing if a channel that has been split and re-combined in the dsp tree is paused. - PS3 - Fixed rare case where sounds on dsp the network that have more that 1 output, where the extra output is fed into a mixer unit, are not being mixed in that mixer unit. - PS3 - Optimized DSP tree traversal speed to allow more voices to be played when reverb is enabled. - PS3 - Fixed possible rare SPU crash. - PS3 - Fixed distortion/sound corruption when dsp effects are added to certain dsp tree combinations. - Wii - Fixed problems with loading short, non-interleaved multichannel fsb samples. - Event API - Fixed envelope cache flags colliding with Channel Mix effect flags (this could cause Channel Mix effects to work incorrectly). - Event API - Removed spurious use of new operator. - Event API - Resolved inconsistencies surrounding EventSystem::setMediaPath. NOTE: Media path now requires a trailing slash/backslash as appropriate! - Event API - Improved FMOD_EVENT_INFO.positionms accuracy when events are paused and unpaused - Event API - Fixed envelope cache flags being incorrectly read from FEV files - Event API - Fixed channel mix effect not working on streamed sounds - Event API - Made EventSystem::init initialise the random number generator. This fixes broken sound definition shuffling. - Event API - Various programmer report fixes. - Event API - Fixed events unexpectedly starting paused. - Event API - Fixed FMOD_ERR_EVENT_MISMATCH error on Wii. - Fixed incorrect path issue when using -b with fmod_designercl. - PS3 - Fixed all sounds dropping out for a small moment when a virtual voice is swapped in. - Fixed rare crash when playing it/mod/s3m/xm files. * When using FMOD_NONBLOCKING, if neither FMOD_HARDWARE nor FMOD_SOFTWARE is specified, then FMOD will default to FMOD_HARDWARE which may cause an error if hardware is not available. * Changed FMOD_DSP_SFXREVERB_DRYLEVEL to have default level of 0db instead of -10,000, to match what the docs were saying. (caused some confusion of stuff going silent if it was added with the default values). * Changed virtual voice behaviour. Now the first time a sound plays, if it immediately steals a voice, the start of the sound will never be cut off, it will just delay the start of playback until the other voice has stopped. FMOD_VIRTUAL_PLAYFROMSTART only affects sounds that swap in later because their audibility/priority changed at a later date in relation to other voices. * Changed System::addDSP, Channel::addDSP, ChannelGroup::addDSP, DSP::addInput, DSP::getInput, DSP::getOutput to now also return a DSPConnection handle. Optional, can be 0. * Changed EventSystem::getReverbProperties, System::getReverbProperties, Channel::getReverbProperties to require the instance you are talking about to be set! Otherwise you will get incorrect values or FMOD_ERR_REVERB_INSTANCE. * Renamed FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT0 FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT1 FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT2 FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT3 to FMOD_REVERB_CHANNELFLAGS_INSTANCE0 FMOD_REVERB_CHANNELFLAGS_INSTANCE1 FMOD_REVERB_CHANNELFLAGS_INSTANCE2 FMOD_REVERB_CHANNELFLAGS_INSTANCE3 to make it align better with FMOD_REVERB_PROPERTIES::Instance member. * FSBankEx - Change optimize samplerate from 'Further reduce rate by' to 'Percentage of optimized rate' so 10 would now become 90 for example. * FSBankEx - Change samplerate optimization to allow scaling up to 1000% instead of 100% (in case it scales too low for some wavs). !* PS3 - SPU elfs are now embedded into the FMOD library. You no longer need to load the elfs yourself. Use fmodex.a for SPU Threads and fmodex_SPURS.a for SPURS. !* PS3 - spu_mixer_elfname_or_spursdata, spu_streamer_elfname_or_spursdata, spu_load_from_memory, force5point1 and attenuateDDLFE members removed from FMOD_PS3_EXTRADRIVERDATA. * Event API - EventSystem::setMediaPath has been changed to expect a path that contains a trailing slash/backslash as appropriate. Failure to include this trailing seperator char will result in numerous FMOD_ERR_FILE_NOTFOUND errors! * PS3 - Now built with SDK 210.001 6/11/07 4.11.00 - Development release update --------------------------------------------- + Added ability to change output driver at runtime. + Event API - Added a "Pitch randomization units" Event property in Designer. If this property is set to a unit other than Octaves, the pitch variation is snapped to exact multiples of that unit. + Event API - Added FMOD_EVENT_INIT_SEARCH_PLUGINS init flag. + Event API - Added ability to load .fev files from memory. + Event API - Added a "units" parameter to Event::setPitch/getPitch and EventCategory::setPitch/getPitch, allowing the pitch to be set and retrieved in the desired units + Event API - Added FMOD_EVENTPROPERTY_PITCH_OCTAVES/SEMITONES/TONES and FMOD_EVENTPROPERTY_PITCHRANDOMIZATION_OCTAVES etc, allowing pitch properties to be set and retrieved in the desired units + Event API - Added a "Spawn intensity randomization" Event property. The event spawn intensity is randomized based on this value when Event::start is called. Access via Event::setPropertyByIndex with FMOD_EVENTPROPERTY_SPAWNINTENSITY_RANDOMIZATION + Added System::getDriverInfo and System::getRecordDriverInfo functions to replace System::getDriverName and System::getRecordDriverName. They provide the same functionality but now optionally provide GUIDs to uniquely identify a driver. GUIDs are available from DSound, WASAPI and CoreAudio output modes. + fsbankex - Added ability to build multichannel Wii/GC/PSP/PS2 hardware banks as non-interleaved so that they can be used with FMOD_MEMORY_POINT. + Added support for loading multichannel hardware banks built as non-interleaved on supported platforms. + PS3 / Xbox 360 - Optimized SFX reverb. + Added version and build date to API docs - Fix System::setDriver not allowing a switch to a driver with the same index. - Fix System::setDriver in driver-list-changed callback causing infinte loop if desired driver is unsupported. - Fix Channel::setPosition with stream sentences that are not CD or FSB (ie user created sounds with user added subsounds. - Fix Channel::setSpeakerMix settings being overriden when virtual voices were swapping, which caused audible panning glitches. - Fix 4, 6 or 8 channel WAV/FSB not downmixing to stereo as it should be if a lower speakermode was selected (ie stereo). - Fix high priority sounds not being audible when played amongst a load of lower priority voices. - Fix Sound::getSubSound not seeking to the right sound if the sound was a stream. - Fix loop points on Sound::setSubSoundSentence. - Fix crash if Channel::stop was called from SyncPoint callback. - Fix Sound::getLength on FSB or CDDA sentences. - Fix 8ch+ sounds with DSP filters added causing corruption or NaN values being fed into the mixer. Specifically when using compressor, highpass, lowpass, lowpass simple, itlowpass or parameq. - Fix FMOD_ERR_INVALID_PARAM return code if values > 8 were passed to Channel::set/getSpeakerLevels. - Fix FMOD filesystem and netstream support due to issue introduced in 4.08.08. - Fixed bug introduced in 4.09.07 to do with stream crackling and bad behaviour when seeking. - Fixed software stereo sounds coming out as mono when FMOD_SPEAKERMODE_PROLOGIC is used. - Fixed rare case of streams giving bad data which could cause crash on XMA hardware or corrupted sound? - Fixed crash when loading MIDI files. - Stopped Sound::lock returning a large length if the length passed in was larger than the sound. Now returns error. - Fixed problem with FMOD Highpass effect - Linux - Fixed crash due to incorrectly freeing memory. - Linux - Fixed freeze when recording with ALSA. - PS2 - Fixed FMOD_ERR_INVALID_PARAM being returned from System::createSound and other file loading Event based functions. - Mac - Removed last bits of MP library to improve performance. - Mac - Added missing fmod_event_net.dylib to release. - Mac - Modified device list changed callback to trigger when the default input or output device has changed. - PS3 - Fixed dsp effects having no affect if added directly to a System object, or to a master channel group derived from System::getMasterChannelGroup. - PS3 - Fixed crash when loading .wav files. - Win32 - WASAPI, fixed overriding FMOD_SPEAKERMODE_RAW when doing System::init. - Xbox 360. Fixed seeking with XMAs with no seek table hanging machine if seek position was near end of sound. - Wii - Fixed not being able to re-play a stream after disk has been ejected and re-inserted. - FSBankEx - Fixed FSB GUID always being regenerated when using encryption. - FSBankEx - upgrade allowed input channel count for wave files from 8 to 16. - Event API - Fix 'programmer sounds' using the parent FSB as the sound pointer (instead of a subsound), crashing on a null pointer. This is typically if a sentence was attempted to be used as a programmer sound. - Event API - Fixed automatic parameters (3d distance, listener angle, event angle) to be read-only. - Event API - Fixed memory leak when using oneshot sounds. - Event API - Fixed issue with stolen / leaking channels. - Event API - Fixed FMOD_EVENT_ERROR_ON_DISKACCESS not working properly with EventSystem::registerMemoryFSB. - PS3 - Fixed dry mix not being heard when using system reverb. * System::setDriver will no longer restore the original driver if the desired driver is not supported. User must call System::setDriver with the index of the original driver. * System::getDriverName and System::getRecordDriverName have been replaced with System::getDriverInfo and System::getRecordDriverInfo as they now also provide unique device GUIDs. * PS3 - Now built with Sony SDK200.002 * Event API - Changed FMOD_EVENT_INFO struct numplayingstances/playinginstances to numinstances/instances. Now all instances are returned, not just instances that are playing. * Event API - Event envelope value calculations are now cached for efficiency * .FEV file format updated! FMOD Designer 4.11.00 requires FMOD version 4.11.00, 4.10.00, 4.08.10 or higher. * FSBank now writes out FSB files with GUID so that multiple load instances of the same FSB can be cached at runtime to save memory. * PS3 - DSP effects code is now streamed onto the SPU as it is needed. 1/11/07 4.09.07 - Development release update --------------------------------------------- + Added FMOD_INIT_ENABLE_DSPNET and DSPNet Listener.exe application! Now you can visually view what is happening inside FMOD Ex's DSP network while your application runs, over TCP/IP. + Added ChannelGroup::set3DOcclusion and ChannelGroup::get3DOcclusion. Final Channel occlusion values are scaled by ChannelGroup values as for setVolume, and so will be affected by both ChannelGroup occlusion and geometry (if any). + Added System::getRecordDriverCaps to WASAPI output mode. + Event API - Added the ability to prevent an event from being stolen by returning FMOD_ERR_EVENT_FAILED from the FMOD_EVENT_CALLBACKTYPE_STOLEN callback. + Event API - Added FMOD_EVENT_INFO.numplayinginstances and FMOD_EVENT_INFO.playinginstances. Use these to get a list of playing instances for a specific event. NOTE: You must initialise these members before calling Event::getInfo! + Event API - Added maxdistance scaling for events with custom rolloff. See Event::setPropertyByIndex and FMOD_EVENTPROPERTY_3D_MAXDISTANCE - Fixed logic with SoundGroups if System::setSoundGroup was called after a sound was played. - Fixed a bunch of broken links and outdated names in the API documentation. - Fixed FMOD_DSP_LOWPASS_SIMPLE swapping lfe and rear left speaker around. - Replaced recording resampler to add support for upsampling. - Fixed doppler calculation to give more correct results when the channel is moving away from the listener - Win32 Dsound - Fixed limited number of streams being able to be created using FMOD_HARDWARE | FMOD_3D. - Win32 - Fixed memory leak in OpenAL output mode. - Mac - added workaround for Digidesign drivers. - Mac - improved recording with Bluetooth devices. - PS2 - Fix multichannel FSB streams with more than 8 channels in them causing streamer to crash. - PS2/WII/PSP/GC/Xbox1 - Fix Channel::setInputChannelMix not working on multichannel streams using FMOD_HARDWARE. - Event API - Fix FMOD_EVENT_INFO::positionms drifting over time. - Event API - FMOD_EVENT_INFO::positionms now takes note of Event::setPitch. - Event API - Fixed wavebank file close callback being needlessly deferred. - Event API - Improved memory fragmentation/wastage. * Memory System - Changed mimumum malloc block size to 16 bytes instead of 64 bytes to lower rounding overhead on smaller mallocs. * ChannelGroup::addDSP - Changed behaviour of DSP connections so that dsp effects are below the channelgroup DSP head, instead of above it. If you are doing manual DSP connections please take note of this. See new graph in documentation. * Event API - Changed Event::set3DOcclusion to use ChannelGroup::set3DOcclusion rather than Channel::set3DOcclusion. This now interacts with geometry occlusion as described above. * Event API - Input members have been added to FMOD_EVENT_INFO! You must initialise these members before calling Event::getInfo! 18/10/07 4.09.06 - Development release update --------------------------------------------- + Added System::setCallback, currently there is one available callback, to be notified when the number of attached audio devices changes. (Windows and Mac only for now). + Added the ability to query the number and names of input and output drivers at runtime, with accurate results. (Windows and Mac only for now). + Added System::getRecordDriverCaps which provides similar information to System::getDriverCaps but for input devices. (CoreAudio only for now). + Optimized FMOD_DSP_LOWPASS_SIMPLE and FMOD_DSP_ITLOWPASS effects. - Fixed Xbox 360 music TRC for nested channelgroups - Fixed FMOD_DSP_ITLOWPASS from making a pop noise followed by silence in the whole mixer. - Fixed FMOD_DSP_TYPE_HIGHPASS from popping when large cutoff frequency changes were made, and also filter instability with high cutoff frequencies. * PS3 - Now built with Sony SDK192.001 * Mac - Improved performance by adding POSIX style semaphores. * FMOD_DSP_HIGHPASS_CUTOFF has had minimum cutoff changed from 10hz to 1hz. 12/10/07 4.09.05 - Development release update --------------------------------------------- + Enabled MIDI playback from DLS files without articulation information. + Added FMOD_TIMEUNIT_SENTENCE_SUBSOUND support to Channel::SetPosition. + Event API - Added FMOD_EVENT_INIT_UPPERCASE_FILENAMES init flag + Event API - Added parameter property "Keyoff on silence". Use this with oneshot events to make a parameter keyoff when previously it would have ended. Put a sustain point in each sound and give your parameter a very large velocity and you can effectively sequence oneshot sounds together. Great for random dialog! - Fixed MIDI playback chirping when using a DLS file that has shared wave sample chunks. - Fixed incorrect number of channels tag for format 1 MIDI files. - Fixed Channel::getSpeakerLevels returning incorrect values. - Sound::setSubSoundSentence - Fix subsound 0 always being played instead of first entry in sentence. - Fix parent sound playback playing sentence incorrectly (subsounds were cutting off early, seeking was incorrect) - Fixed error when oneshot event finished before loading - PS3 - Fixed certain combinations of dsp units causing volume to double up sometimes. - Event API - Fixed excessive memory usage bug - Event API - Fixed event refcnt problem - Event API - Fixed Event::getState() not returning FMOD_EVENT_STATE_LOADING when stream seeking is in progress - Event API - Fixed leaking stream instances under very slow loading conditions - FSBank - Fixed error when building MP2/MP3 with waveform quality < 10 * Updated cdplayer example. * Added float checks to DSP::setParameter calls (for logging version). * Mac - Improved performance by implementing pthreads. 05/10/07 4.09.04 - Development release update --------------------------------------------- + Added "initialseekposition" and "initialseekpostype" to FMOD_CREATESOUNDEXINFO, these can be used to flush a stream to a specific position when it is created. - Win32 - WASAPI / OpenAL - Fixed rare crash when closing FMOD. - Fixed incorrect MIDI playback in moments of silence. - Fixed MIDI file ending early when more than one tempo change was used. - Wii - Fix crash when shutting down FMOD if software mixer is enabled. - Fixed setparam threading issues in IIR filters - Event API - Optimized EventGroup::loadEventData so it doesn't flood async queue - Event API - Fixed crash when using "text" user properties 01/10/07 4.09.03 - Development release update --------------------------------------------- * Win32 - Changed FMOD_CAPS_HARDWARE_EMULATED to report only if user sets the hardware acceleration slider in XP to 'off' instead of just if the sound device doesn't support hardware mixing. That can be checked with System::getHardwareChannels. 29/09/07 4.09.02 - Development release update ---------------------------------------------- + Added "recommended startup sequence" for Windows apps. Added to 3d example, geometry example, and Windows platform specific issues tutorial in fmodex.chm. + Event API - Added FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_SELECTINDEX callback. Use this to programatically choose sound definition entries at runtime. - Fixed FMOD_SPEAKERMODE_SURROUND not being configured as 5.0, and initialization failure if this mode was selected? - Fix FMOD_PRESET_OFF not clearing out reverb buffers meaning you were able to hear some left over reverb from the old setting when it was switched back on. - Fix memory leak if errors occured in random places during System::createSound such as memory allocation failure or disk ejection. - Win32 - WASAPI - Fixed time sensitive crash when stopping a record. - Event API - Fixed EventGroup::loadEventData always returning FMOD_ERR_FILE_DISKEJECTED for a non-blocking load if it is called again after the error. You can now call EventGroup::loadEventData after the disk error has recovered to resume loading. - Event API - Fixed setting user properties when using "this_instance" = true - Fixed rare memory corruption issue when not using pre-alloced memory pool. - Event API - Fixed Event::getState only setting FMOD_EVENT_STATE_STARVING flag if stream is looping. - Fixed c# wrapper compile error. - Wii - Fixed crash when loading a sound as FMOD_HARDWARE and FMOD_NONBLOCKING. * PS3 - 7.1 to 2ch downmixing is now done using Sony's downmixer, not FMOD's. This means that "2ch LPCM, Downmix from 7.1 LPCM" should be checked rather than just "2ch LPCM" in PS3 Master Disc Specifications Form. (Please refer to FMOD docs for more information). 21/09/07 4.09.01 - Development release update ----------------------------------------------- + Slight speed up in fmod's default lowpass filter when it is set to 22khz cutoff. - Fix hang in Sound::release if FMOD_INIT_STREAM_FROM_UPDATE was used. - Fix crash when loading MOD files. - Fix geometry system not updating occlusion properly if there was no delay between calls to System::update. - Wii - Fix sounds being played out of both the WiiMote and main speakers if a channel that was previously set to play out of the WiiMote is re-used to play a sound out of the main speakers. - Linux - Fix ALSA playback sometimes playing no sound, but with the sound position moving very fast. - Xbox360 - Fixed crash when loading an XMA format .fsb file compiled with "small sample headers". * Event API - FMOD_EVENT_INFO.positionms now takes into account FMOD_EVENTPROPERTY_TIMEOFFSET * Event API - EventGroup::loadEventData now only loads waveforms referenced by events in the EventGroup, not the whole .fsb 17/09/07 4.08.00 - Official stable branch release ------------------------------------------------- + Added FMOD_VIRTUAL_PLAYFROMSTART. Instead of a virtual voice swapping from virtual to real and playing at the correct offset according to time, this flag makes the sound play from the start. + Event API - Added a "Spawn Intensity" property to events; this is a multiplier for the spawn frequency of all sounds in the event - Fixed Memory_GetStats, it was reporting incorrect maximum usage values. - Removed FMOD_DONTRESTOREVIRTUAL. If a user wants a sound to not come back from being virtual, they can call Channel::isVirtual and Channel::stop. - Recording - Fixed wasapi/mac clicking issues with recording. - Win32 - OpenAL - fixed potential stuttering issues with Windows Vista. - Win32 - OpenAL - fixed random crash when playing sounds. - Win32 - OpenAL - fixed incorrect capabilities being reported by some OpenAL software drivers. - PS2 - Fix support for incorrectly written .vag files which could cause a click noise at end. - Event API - Fix EventGroup::getState returning it was ready before loading had actually finished. - Event API - Fix FMOD_File_SetDiskBusy / FMOD_File_GetDiskBusy when being used in event api. - Event API - On machines with limited timers, the 'time' parameter could sometimes jump ahead to the end of the range all of a sudden, this has been fixed. - Event API - Fixed Event::getState not setting FMOD_EVENT_STATE_STARVING flag. - Event API - Fixed invalid handle error when network auditioning. - Event API - Fixed Event/EventCategory pause and mute logic so you can pause/unpause the master category or any parent categories without it screwing up the pause/mute state of the individual events. * .FEV file format updated! FMOD Designer 1.07.26 requires FMOD version 4.06.28, 4.07.26 or higher. 7/09/07 4.07.25 - Dev release update ------------------------------------- - Fix 2d/3d pan morphing from not working properly with stereo and above sounds. - Fix sound cutting out using certain DSP network configurations (event categories/effects) with reverb enabled. - Wii - Fix FMOD_ERR_FILE_DISKEJECTED not being returned from FMOD_NONBLOCKING loads via Sound::getState. - Fix reverb having absense of 'diffusion'. Switching diffusion from 100 to 99 then back to 100 would have also fixed it. - Event API - Fix EventProject::release not releasing reverb presets from memory. - Event API - Fix getState not returning errors from nonblocking loads. 4/09/07 4.07.24 - Dev release update ------------------------------------- + Event API - Added an "(event angle)" parameter; any parameter with the name "(event angle)" is automatically updated with the angle to the listener from the event's forward vector (0 to 180 degrees). - Fix channels not actually pausing properly if reverb was enabled. Introduced in 4.07.23. - Event API - Fixed 'just fail if quietest' when FMOD_EVENT_NONBLOCKING was used on events that weren't ready yet. * Event API - Changed the name of the "(heading)" automatic parameter to "(listener angle)" for greater clarity. 3/09/07 4.07.23 - Dev release update ------------------------------------- + Added initialsoundgroup to FMOD_CREATESOUNDEXINFO which is accessible via the soundgroup even while asynchronously loading. + Added FMOD_DONTRESTOREVIRTUAL to flag sounds/voices that you don't want to become real again after turning virtual. (ie just let them be swapped out but not back in to avoid sounds coming in and out and sounding weird) + Event API - Added a "(heading)" parameter; any parameter with the name "(heading)" is automatically updated with the angle to the event about the listener's up vector (-180 to 180 degrees). + Event API - Added a "3D Position randomization" property to sound definitions; sound definition instances are offset from their parent event by a random vector based on this value, recalculated each time the sound is triggered + Event API - Win64 build now supports network auditioning. + PS3 - Added extra member, "maxPCMcodecs" to the FMOD_ADVANCEDSETTINGS. This allows the user to set the maximum number of PCM voices (including streams) that can be played at once. This was previously set to the total number of software channels. + Event API - Added extra parameter, 'loadintorsx' to the EventSystem::registerMemoryFSB function. When it is set to true, the whole fsbdata will be copied into the RSX memory pool. - Fixed performance issue with FMOD_PRESET_OFF not reducing cpu usage. - fixed MIDI playback issue where notes would play late causing several notes to sound bunched together or out of place. - Channel::set3DOcclusion. Fixed if directocclusion was set to 1.0, but reverbocclusion wasn't and the reverb mix cancelling out instead of being audible. - Fix stream related crash. - Fix distortion noise with certain configurations of DSP network. - Removed FMOD_EVENTPROPERTY_TIMEOFFSETMS as it was found to be already supported via FMOD_EVENTPROPERTY_TIMEOFFSET. - Win32 - OpenAL - fixed previous sound being heard when an channel was reused. - Win32 - OpenAL - fixed crash when using non-blocking and create compressed sample flags without specifying hardware or software mode. - Win32 - WASAPI - removed an un-needed error return in certain circumstances when initialising WASAPI output mode for Windows Vista. - Win32 - WASAPI - fixed stuttering on certain Vista machines. - Mac - fixed MIDI playback sounding poor when using MacOSX DLS file. - Mac - fixed crash during MIDI playback when using MacOSX DLS file. - PS3 - Fixed crash when releasing a DSP Chorus unit. - PS3 - Fixed hang when running for extended period of time. - Wii - Fixed FMOD_SOFTWARE sounds being distorted/garbled when speakermode is set to FMOD_SPEAKERMODE_MONO. - Event API - Changed EventI spawn timer handling to improve accuracy somewhat for small spawn times. - Event API - Fixed bad distance parameter calculation for head-relative events - Event API - Fixed automatic parameters to handle minimum > maximum correctly - Event API - Fix EventGroup::getState setting state to 'loading' forever if there happened to be an error creating a stream/sample in the FMOD_NONBLOCKING thread. - Event API - Fixed oneshot events stopping when sounds with both "Wait for Previous" and "Loop and cutoff" set are still playing - Event API - Fixed "Wait for Previous" sounds not being updated properly - Mac - Fixed recording resampling problems. * Mac - it is no longer necessary to specify a DLS file when playing MIDI on MacOSX as a default has been added pointing to "gs_instruments.dls". * Wii - Software mixer is now driven from FMOD's output polling mechanism rather than the AX callback. * Updated 'virtual voices' tutorial. * PS3 - Now built with Sony SDK190.002 21/08/07 4.07.22 - Dev release update ------------------------------------- + Event API - Added event property FMOD_EVENTPROPERTY_TIMEOFFSETMS. Use this to specify an accurate time offset in milliseconds with no upper limit. - More secure stream release fix, there was still a rare crash in stream thread if stream was released. 20/08/07 4.07.21 - Dev release update ------------------------------------- + PS3 - Added new pointer to CellAudioOutConfiguration member "cell_audio_config" to FMOD_PS3_EXTRADRIVERDATA structure. This information can be used for initialisation of Bink etc. + Optimized FSB memory consumption so it caches/shares header memory if an FSB is opened more than once. Can save significant memory for streams with lots of sounds in them. + Event API - Added FMOD_EVENT_STATE_STARVING. Streaming events may be playing, but not being fed data in time, so may be stuttering. This flag gives this information. - Removed FMOD_OPENSTATE_STOPPING flag. - Fixed hang to do FMOD_NONBLOCKING, streams, FMOD_OPENSTATE_STOPPING flag and Sound::release. - Fixed remote tweaking of envelopes causing incorrect results and sometimes a crash. - Fixed loading playlists from the Internet. - Fixed garbage data being returned when a sync point was never given a name. - Fixed bug where an error was returned when trying to play an FSB that contains 2 mono ADPCM channels interleaved (requires rebuild with fsbank). - Wii - Fixed voices occasionally playing with no volume. - Mac - Auditioning from the FMOD Designer tool is now enabled on Mac. Also an FMOD_Event_Net library is provided to allow remote tweaking. - Xbox360 - Fixed seeking not working for .xma files loaded as FMOD_CREATECOMPRESSEDSAMPLE. - FSBank - Fixed Designer and FSBank not supporting sounds with > 6 channels - PS3 - Fixed rare MPEG SPU hang when initialising FMOD. - Upgraded Ogg Vorbis to version 1.1.3(Ogg) / 1.20(Vorbis) to fix rare seeking crash. - PS3 - Fixed memory leak in AT3 codec. - Xbox360 - Fixed problems when mixing XMA banks with seeking disabled and XMA banks with seeking enabled. - Win32 - Fixed a problem with Vista WASAPI output mode, initial enumeration should not report an error when no default input device is detected. - Wii - FMOD_ERR_FILE_DISKEJECTED is now returned if there is a disk retry error, rather than hanging. - PS3 - Fixed sound corruption when trying to seek a PCM voice. * Xbox360 - If an XMA FSB bank is built without a seek table, when seeking, FMOD will do a *non-accurate* CBR seek rather than not seeking at all. 2/08/07 4.07.20 - Dev release update ------------------------------------- + Added FMOD_SPEAKER_SBL/FMOD_SPEAKER_SBR to make it clearer what speakers are being addressed on PS3. (On PS3, extra 2 speakers in 7.1 are located behind the listener instead of to the sides like on PC). + Added FMOD_OPENSTATE_STOPPING to denote that even though Channel::stop has been called on a stream, it is not actually stopped because the stream thread has not finished with it. + Added ability to call System::getNumHardwareChannels before System::init. + Added SoundGroup::setVolume, SoundGroup::getVolume, SoundGroup::stop. + Event API - Added get/setUserData functions to all Event API classes + Event API - Decreased memory usage/fragmentation. + Event API - Optimized .fev file format. + Event API - Added FMOD_EVENTPROPERTY_3D_POSRANDOMIZATION to specify a random deviation in the 3D position of an event. + Event API - Added "Max playbacks" and "Max playbacks behavior" for event categories: If too many events are playing in a category when Event::start is called, an event is stopped according to "Max playbacks behavior" + Xbox360 - Added support for XMA FSBs built without seek tables to save memory. + FSBank - Added the ability to disable seek table generation for XMA banks with the FSBANK_BUILD_DISABLESEEKING build flag. + FSBank - Added the ability to override XMA filtering per waveform with the new FSBANK_SAMPLE_DEFAULTS.buildflags member and the FSBANK_BUILD_OVERRIDE_XMAFILTERHIGHFREQ build flag. + FSBank - Added the ability to disable syncpoint writing for wavebanks with the FSBANK_BUILD_DISABLESYNCPOINTS build flag. + FSBank - Added the ability to specify source files from the command line. + FSBank - Added the ability to enable sample rate optimization via the GUI and command line. - Fixed hang if System::close was called directly after System::init in rare cases. - Fixed soundgroup causing a channelsteal but not calling channel end callback for the stolen channel. - Fixed soundgroup crash. - Fixed Channel::isPlaying returning true from within channel end callback. - Fixed Sound::getName not working on streamed FSB file subsounds. - Removed stall when starting and stopping a stream. - Fixed reverb when switched on, then off with FMOD_PRESET_OFF - Fix channel not inheriting channelgroup properties (volume etc) when using Channel::setChannelGroup - Remove stall from Sound::release, System::createChannelGroup. - Win32 / Linux - Fix crackle when multiple system objects were used. - Win32 - Fix multichannel streams not coming out of speakers correctly thanks to bad directsound behaviour. Directsound only. - Win32 - Fixed WASAPI and OpenAL output modes causing a crash if stopped before they are initialised. - Win32 - Fixed WASAPI pitch issue when Windows mix format didn't match the FMOD default or user specified value. - Win32 - Fixed mono recording for WASAPI output mode. - Mac x86 - Fixed CDROM support, playback is no longer static noise. - Mac - Fixed FSBankLib, it now produces correct FSBs on Mac PowerPC. - Mac - Fixed crash during CoreAudio driver enumeration. - FSBank - Fixed FSBs being built having a default channel priority of 255 rather than the correct default of 128. - FSBank - Fixed non-sound files being added to file list based on file extension - Fixed System::getAdvancedSettings sometimes returning too many ASIO channels - PS3 - Fix pcm voices returning FMOD_ERR_CHANNEL_ALLOC after 32 instances. - PS3 - Fix error being returned when loading interleaved streams of greater than 6 channels. A maximum of 8 channels is allowed for PS3. - PS3 - Fixed hang in stream SPU thread if only 1 SPU is available due to SPU thread not swapping. - PS3 - Fix memory still being allocated into MRAM rather than the given VRAM pool when FMOD_LOADSECONDARYRAM is specified. - PS3 - Fixed reverb tails not sounding when a sound stops playing. - Xbox 360 - Fix music TRC issue with new game tracks starting in nested channelgroups/categories after music in dashboard had started. - Event API - Fixed threading issues. Hangs/crashes if FMOD_EVENT_NONBLOCKING was used. - Event API - "Just fail if quietest" was always stealing if "Max playbacks" = 1 - Event API - "Just fail if quietest" wasn't taking into account event volume or category volume. - Event API - Fixed FMOD_ERR_EVENT_MAXSTREAMS sometimes being returned even though less than "Max streams" had been created. - Event API - Fixed Event::getInfo returning incorrect projectid - Event API - Fixed FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_RELEASE sometimes not being called - Event API - Fixed problem with events with no parameters - PS3 - Fixed occasional hang when rapidly starting up and shutting down FMOD. - Fixed performance spikes with virtual voices in System::update(). - Wii - Fixed System::setSpeakerMix not working correctly. - Mac/Vista - Fixed rare recording crash. - Fixed setPosition on MPEG streams not always working correctly. - Wii - Fixed stall when calling Channel::setPaused. - Wii - Fixed no sound every playing out of 4th controller when "muteremotespeakerifnosound" is set. * FMOD_NONBLOCKING now affects Channel::stop / Event::stop for streaming sounds. * Changed sounds that go virtual upon playback, to delay their playback instead of cutting off the start of the sound. * XBox360 - Worked around XDK bug with Xbox Music Player notification, by changing technique and functions used to detect dashboard music. Should work now even with the broken XDK. * FSBank - Changed the FSBank_Build function signature. All the separate integer flag parameters have been replaced by a single buildflags bitfield of type FSBANK_BUILDFLAGS. * FSBank - Changed misspelt FSBANK_SAMPLE_DEFAULTS.optmisedratereduction to FSBANK_SAMPLE_DEFAULTS.optimisedratereduction * Mac - FMOD libraries on Mac are now distributed as universal binaries containing both x86 and PPC versions in one. * Event API - "3D Distance" parameters are now read-only. * PS3 - Now built with Sony SDK181.001 * .FEV file format updated! FMOD Designer 1.07.20 requires FMOD version 4.06.23, 4.07.20 or higher. 22/06/07 4.07.19 - Dev release update ------------------------------------- + Added FMOD_SPEAKERMAPTYPE which includes FMOD_SPEAKERMAPTYPE_ALLMONO, FMOD_SPEAKERMAPTYPE_ALLSTEREO. Used with new FMOD_CREATESOUNDEXINFO 'speakermap' value, multichannel sounds can now be forced to a speakermap that is either all channels go into the front center (allmono) or they alternate as stereo pairs on front left/front right speakers. Good for multichannel interactive music. + Event API - Added "waituntilready" parameter to EventGroup::freeEventData(). Use this to avoid blocking the main thread. + Event API - Added FMOD_EVENT_CALLBACKTYPE_EVENTSTARTED. - XBox360 - Fix small streams not buffering when FSB and FMOD_CREATESOUNDEXINFO::initialsubsound was used. - Fixed Sound::setSubSound crash if the parameter was a stream. - Fixed crash when changing FMOD echo dsp parameters in low memory situation. - Fixed crash when using nested channelgroups and using System::close. - PS3 - Fix SPURS only hang when calling Channel::setPosition on an MPEG voice. - Event API - Fixed EventSystem::getNumEvents returning incorrect value after EventProject::release. - Event API - PS3 - Fixed Event::getInfo returning incorrect values for the positionms member of FMOD_EVENT_INFO structure. * Sounds with more than 6 channels now default to L/R alternating pan in the speakermap, every second channel starting from 0 being left, and every second channel starting from1 being right. 18/06/07 4.07.18 - Dev release update ------------------------------------ + Added ability to be able to disable speakers from 3D calculation. Useful for things like disabling center speaker for dialog, or the LFE. See renamed System::setSpeakerPosition change below. + Added ChannelGroup::set/getPaused, ChannelGroup::set/getMute. These are different to override as now any new channels added to the group will respect the group's pause / mute state instead of ignoring it. + Added ASIOSpeakerList to FMOD_ADVANCEDSETTINGS and allow user to set a speaker list at runtime to remap FMOD speakers to ASIO channels. + Event API - Optimised update for events with dsp unit effects. + Added support for FMOD_OUTPUTTYPE_WASAPI - Native Vista audio support! + Added support for FMOD_OUTPUTTYPE_OPENAL - Considered beta. Software mixes into OpenAL buffers, so that effects and realtime compressed samples still work, but the soundcard hardware takes care of 3d virtualization. - XBox360 - Fixed XMA2 support for .xma files properly. - Fix 40 byte memory leak if 2 System objects were used in 1 application. - Fix .IT file playback crash. - PSP - Fix hang when releasing a stream if more than one is playing at a time. - Fix System::registerCodec from not working - bug introduced in 4.07.16. - Fix crash if FMOD_CREATESOUNEXINFO::initialsubsound was > 1 and a user created (FMOD_OPENUSER) multisubsound stream was used. - Fix Sound::setSubSoundSentence when first subsound was not index 0. - Fix audible glitch when starting an mp3 netstream. - Removed ChannelGroup::overridePaused, ChannelGroup::overrideMute. - PS2 - Fix cdrom0: loading issue with forward slashes. - Fix hang with FMOD_INIT_VOL0_BECOMES_VIRTUAL with channelgroups/events. - Fix performance issue with FMOD internal malloc routine. Should notice big improvement for large memory pools. - Fix FSB stream not ending if FMOD_CREATESOUNDEXINFO::initialsubsound was used. - Event API - Fixed 'steal oldest' and EVENT_INFO.positionms if using _reduced versions of library with no software mixer (ie psp/ps2/wii). - Event API - Fixed leaking streams - Event API - Fixed crash if out of memory. - Event API - Wii - Fixed crash when playing more than 1 event with stereo samples at once. - Event API - Fixed event instances not taking their initial volume from their INFOONLY event. - Event API - Updated docs for event callback types - Event API - Fix forwardslash/backslash issue with registerMemoryFSB. - Event API - Fix stack overflow if "" (empty string) was passed to getEvent. - FSBank - fix FSB files being generated which would cause memory overrwrites if FMOD_OPENMEMORY_POINT was used and the data was PCM. This also applies to Event API - using registerMemoryFSB function. - Fixed crash in pitch shifter when setting the FMOD_DSP_PITCHSHIFT_MAXCHANNELS parameter. - Fixed clicks in "Lowpass" dsp unit when changing cutoff frequency * Changed System::set/getSpeakerPosition to System::set/get3DSpeakerPosition to give the function a more correct name and also add 'active' flag. * Channel::set3DPanLevel now affects doppler as well. * Changed Sound::getOpenState to return FMOD_OPENSTATE_ERROR in openstate and whatever the error was if a fatal stream error occured. This may happen with an error such as FMOD_ERR_NET_SOCKET_ERROR for example. * The fsbankex utility now preserves the case of file names from the listing file, rather than folding them to lowercase * Event API - When an event is stolen, FMOD_EVENT_CALLBACKTYPE_STOLEN is now called *before* FMOD_EVENT_CALLBACKTYPE_EVENTFINISHED, not after. *** Event API - FMOD_EVENT_SYSTEMINFO.numplayingevents field changed! It's no longer a pointer! * PS3 - Now build with Sony SDK180.002 5/06/07 4.07.17 - Dev release update ------------------------------------ + Removed the "Spawn Intensity" sound definition property and re-introduced the minimum and maximum spawn time properties. The spawn intensity layer effect now scales the average spawn time by (1 / (envelope value)) + Added new error code, FMOD_ERR_EVENT_MISMATCH, which is returned when a FSB file doesn't matched a FEV file. + Added 'name' and 'index' to EventSystem::getReverbPresetByIndex / EventSystem::getReverbPreset to allow user to get id from name, and vice versa. + Speed up in FMOD memory allocation routines. * + Speed up in System::update when virtual voices swap. CriticalSections removed so performance increase should be significant in this case. + Added FMOD_INIT_VOL0_BECOMES_VIRTUAL. Any voices with volume or audibility of 0 will go virtual automatically! + Sped up MP3 decoding about 25%. + Added FMOD_ERR_FILE_DISKEJECTED and stopped the main thread hanging when the cd was ejected. The load functions now return this error. Only supported on Wii at the moment. + Added Channel::setInputChannelMix / getInputChannelMix. Now a user can easily set the incoming levels of a multichannel sound, to set volumes of subchannels for things like interleaved multichannel music etc. + Event API - Added "playingevents" to FMOD_EVENT_SYSTEMINFO. Get a list of all playing events in the event system. + Event API - Added FMOD_EVENT_INIT_FAIL_ON_MAXSTREAMS. Events will fail with an error if this init flag is specified and "Max streams" was reached when playing streamed banks. + Event API - Added the "Channel Mix" effect, providing control over the incoming levels of multichannel sounds in an event layer. - Fixed Sound::getLength with FMOD_TIMEUNIT_PCMBYTES, when using a FMOD_CREATECOMPRESSEDSAMPLE sound. - Fixed Reverb::get3DAttibutes / EventReverb::get3DAttibutes not returning a valid value in maxdistance. - Fixed a crash if user ran out of memory while loading a .ogg file. - Fixed a crash if user ran out of memory while opening a stream. - Fixed XMA timeout on very small .xma files when /l option was used with xmaencode.exe. - Fixed rare stack corruption when using FMOD_NONBLOCKING - Fixed FSB with mp3 data and mono/stereo sounds in the same FSB causing mono sounds to play at double pitch. - Fixed Sound::seekData not resetting codec properly, so causing an audible glitch. - Small quality fix to FMOD_DSP_LOWPASS_SIMPLE filter. - Fix buzzing noise in mixer after using Channel::setChannelGroup with reverb. - Fixed FMOD_INIT_SOFTWARE_HRTF not respecting Channel::set3DPanLevel. - Wii - fix sleep function leaking and causing hang in streamer after a long time. - Fixed logic behind System::set3DRolloffCallback when Channel::set3DMinMaxDistance is called. Bug was that volumes were set/calculated incorrectly. - Fix timing in mod/s3m/xm/it playback. - Fixed virtual voice priority not updating if its ChannelGroup volume changed. - Event API - Fixed FMOD_ERR_INTERNAL when using FMOD_EVENT_NONBLOCKING with EventGroup::loadEventData. - Event API - Fixed projects with waves that were 2d and 3d not loading. - Event API - Wii - Fixed certain events not stopping when Event::stop is called. - Event API - Wii - Fixed certain looping events stopping by themselves when they shouldn't be. - Event API - Wii - Fix crash when using GCADPCM wavebanks. - Event API - Fixed problem where stolen events with non-zero "Fadeout" would still be playing after they were stolen. - Event API - Fixed event "Max playbacks behaviour" "Just fail if quietest" sometimes not working as expected. - Event API - Fixed disc access occuring sometimes even though registerMemoryFSB was used. - Event API - Fixed events with fade in / fade out not calling FMOD_EVENT_CALLBACKTYPE_EVENTFINISHED if stopped soon after starting. - Event API - Fixed file handle leak in streamed banks. - Event API - If user mixed up FEV and FSB files, now returns FMOD_ERR_EVENT_MISMATCH instead of crashing. * .FEV file format updated! FMOD Designer 1.07.17 requires FMOD version 4.06.20, 4.07.17 or higher. * Event API - FMOD_EVENT_CALLBACKTYPE_EVENTFINISHED is now always called when an event is stopped by the user or naturally. * Updated FLAC to 1.1.4 to better support certain files. * Changed FMOD_CHANNEL_CALLBACKTYPE_END to trigger when Channel::stop is called, and also when a sound steals that voice and stops it. 18/05/07 4.07.16 - Dev release update ------------------------------------- + Added FMOD_INIT_SOFTWARE_HRTF. This is a fake hrtf which just adds a lowpass filter to voices when they go behind you. See FMOD_ADVANCEDSETTINGS for settings. + PS2 - Added FMOD_SPU_Alloc, FMOD_SPU_GetRawAddress, FMOD_SPU_Free to allocate and reserve PS2 sound ram for use in other libraries. + PS2 - Added FMOD_SPU_ReserveVoice to stop fmod using certain hardware voices (again so that other libraries can use them). + Event API - Added c# wrapper and examples. + Event API - Can now set/get event properties per-instance as well as for all instances. Added "this_instance" parameter to all setPropertyXXX and getPropertyXXX functions. + Event API - Added event property FMOD_EVENTPROPERTY_WII_CONTROLLERSPEAKER. Use this to play events on the Wii controller speakers! + Added recording downsampling. On platforms that only support recording at a fixed rate (ie CoreAudio), it is now possible to record at any rate lower than the hardware supported fixed rate. - Stop rare cases of crashing if Sound::release was called while Sound::readData was being called simultaneously in a different thread. - Event API - Clamped event "Max playbacks" to 1 on EventSystem::load if it's < 1. * Event API - Enabled "Surround Pan" in hardware on Wii and Gamecube * Renamed FMOD_INIT_DISABLESOFTWARE to FMOD_INIT_SOFTWARE_DISABLE. * Renamed FMOD_INIT_OCCLUSION_LOWPASS to FMOD_INIT_SOFTWARE_OCCLUSION. 11/5/07 4.07.15 - Dev release update ------------------------------------- + Event API - Added C wrapper. C users use fmod_event.h, C++ users use fmod_event.hpp and fmod_event.h. + Added System::set3DRolloffCallback. When FMOD wants to calculate 3d volume for a channel, this callback can be used to override the internal volume calculation based on distance. - Fixed crash if quickly releasing sound while it is still in the process of loading with FMOD_NONBLOCKING - Wii - Fixed rare crash when playing looping GCADPCM fsb files with looppoints. - Wii - Fixed ProLogic not working correctly. - Fix Sound::release crash if subsound was released before parent, introduced in 4.07.15. - Fix Sound::release memory leak if subsound was released before parent. - Fix streams not ending when stream was certain size. - Event API - Fixed a bug where oneshot sounds would retrigger if the parameter left the sound and returned to it while it was playing *** Event API - C++ users should now use fmod_event.hpp! *** Event API - Event callback signature has changed! The parameter "FMOD::Event *event" is now "FMOD_EVENT *event" so you must cast back to FMOD::Event * to get old behaviour. *** Event API - EVENT_xxx values are no longer namespaced! You must put "FMOD_" in front of them! 9/05/07 4.07.14 - Dev release update ------------------------------------ + PSP - Added support for FMOD_OPENMEMORY_POINT for hardware vag samples. + Added SoundGroup::setMaxAudibleBehavior/getMaxAudibleBehavior. Determines what happens if you exceed maxaudible count. New behaviour modes include - FMOD_SOUNDGROUP_BEHAVIOR_FAIL - FMOD_SOUNDGROUP_BEHAVIOR_MUTE - FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST See docs for more on what they do. + Added SoundGroup::setMuteFadeSpeed/getMuteFadeSpeed. Sets the fade + Event API - Added EVENT_STATE_LOADING to EventGroup::getState for determining if any event in the eventgroup is loading. + Event API - Added "Load into RSX memory" wavebank property (PS3 only) - Fix blocking behaviour in System::playSound/System::update/ EventSystem::update/Event::start. - Fixed crash in some cases when calling Channel::setSpeakerLevels while speakermode is set to FMOD_SPEAKERMODE_PROLOGIC. - Fix SoundGroup::setMaxAudible not allowing -1 as a parameter. - Fix crash in ogg vorbis codec if out of memory. - Fix crash using echo filters if out of memory. !- FSBankEx - Fix bug in 4.07.13 that introduced bad FSB output (Caused hang on Xbox 360 during play, sync points weren't exported). - Fix memory leak when using more than 1 System object. - Fixed non blocking streams with subsounds stalling main thread. - Fix rare Sound::release crash on Xbox 360 with XMA FSB files. - Event API - Fixed a bug where oneshot sounds with "Wait for previous" set didn't play at all if forced to wait - Event API - Fixed a bug where adjacent sounds could both play when only one should play (if the parameter was exactly on the boundary) - Event API - Fixed a bug where parameters with velocity or seek speed could skip sounds and syncpoints when the framerate was low - Event API - Event sustain points are now clamped to valid parameter range - Event API - Fixed a bug where sustain points could be written to .fev in the wrong order - Event API - Fixed a bug where distance parameters weren't updated correctly until the first EventSystem::update call after Event::start - Event API - Fixed parameter value rounding issue. - Event API - Fixed "programmer sound" with no parameter not working. - Event API - Fixed negative m_streamrefcnt spam. - Event API - Fixed 3D doppler factor not heeding listener speed. * PS3 - FMOD libs now built with Sony SDK 170.003 * Event API - Changed Event::getInfo lengthms calculation to return the length of the longest sound definition 26/04/07 4.07.13 - Dev release update ---------------------------------------- + Mac - Overhaul of CoreAudio output to fix compatibility with various sound cards. + Event API - Added support for individual layer priorities + Event API - Added "just fail if quietest" max playbacks behaviour + Added Reverb::setActive/getActive. + Added SoundGroups! Now have the ability to group sounds and control their max playbacks. More functionality will be added to this class in the future. See new functions System::createSoundGroup System::getMasterSoundGroup Sound::getSoundGroup Sound::setSoundGroup SoundGroup::getSystemObject SoundGroup::setMaxAudible SoundGroup::getName SoundGroup::getNumSounds SoundGroup::getSound SoundGroup::getNumAudible SoundGroup::setUserData SoundGroup::getUserData + Added FMOD_ERR_MAXAUDIBLE returned by System::playSound when SoundGroup::setMaxAudible is used. + PS3 - Added support for FMOD_DSP_TYPE_CHORUS effect. - Event API - Fixed "don't play" sound definition entry. - Event API - Fixed oneshot events sometimes ending prematurely when used with EVENT_NONBLOCKING - Event API - Fixed broken "steal quietest" max playbacks behaviour - Event API - Fixed 3d cone values not taking effect until update was called. - Event API - Fixed crash when using EVENT_INIT_USER_ASSETMANAGER with events with no parameters. - Event API - Optimised event system memory usage a little. - Event API - Removed 'EventReverb3D' class and EventSystem::create3DReverb. - Fix crash when System::createCodec was used. - Mac - Fixed hang on system release. - PS3 - Fixed "Too many DSP units" error/assert when using big event projects. - fsbank - PCM data is now written out as big-endian format if platform selected is Xbox 360. The allows FMOD_OPENMEMORY_POINT to be used properly. - Wii - Fixed high pitched whining noise and sounds going silent when virtual voices are being swapped in and out. - Wii - Fixed hang when re-using a stream channel to play a new stream. - ASIO - Fixed 32bit output noise. - Fix midi/mod/s3m/xm/it files connecting their internal channels to reverb causing extra cpu usage. - Stopped System::release hanging if user didn't manually release their ChannelGroups. - Fixed streaming subsounds not ending sometimes, due to calling getSubSound while another subsound was still playing. - Fix stereo sounds in 7.1 speaker mode not being audible if panned to side left or side right speakers. - Fixed various documentation issues. * System::create3DReverb renamed to System::createReverb. * System::set/get3DReverbAmbientProperties renamed to System::set/getReverbAmbientProperties. * Replaced the following Reverb::setPosition Reverb::getPosition Reverb::setMinRadius Reverb::getMinRadius Reverb::setMaxRadius Reverb::getMaxRadius with Reverb::set3DAttributes Reverb::get3DAttributes * All output plugins now present the default output and record driver as the first item in the list. * PS3 - FMOD libs now built with Sony SDK 160.008 * Event API - Changed EventReverb3D class to be EventReverb and EventSystem::createReverb3D to EventSystem::createReverb. * Now instead of EventSystem::createReverb creating a pointless object, it simply returns the reverb property structure associated with the reverb. New functions are called EventSystem::getReverbPreset and EventSystem::getReverbPresetByIndex. * .FEV file format updated! FMOD Designer 1.7.13 requires 4.06.16, 4.07.13 or higher. 16/04/07 4.07.12 - Dev release update ---------------------------------------- - Fix FMOD_ERR_CHANNEL_STOLEN error message being displayed, among other possible bugs when mixing streams/samples. - Wii/GC/PSP/PS2 - Fixed corrupt sound at the start of a multichannel stream, if it is created while another multichannel stream is currently playing. - Fixed extreme 3d velocities being passed into FMOD commands causing mixer crash. - Fix rare DSPConnection::mix/mixAndRamp crash. - Delphi header fixes. - Fixed non-blocking fsb streams flushing twice and Xbox360 XMA hang. - Fixed recording in PCM8 and PCMFLOAT formats. - Fixed access violation in Channel::stop if channel source is an oscillator - Fixed multichannel mp3 playing silent channels on non ps3 platforms. - Event API - Fixed resource management bugs. - Event API - Fixed EventParameter::setVelocity causing problems when called from event callback 5/04/07 4.07.11 - Dev release update ---------------------------------------- + FSBank - add support for multichannel mp3 encoding from multichannel wave files. + Add support for multichannel mp3 encoded FSB playback. - Event API - Fixed event categories not inheriting mute flag from parent category during add. - Event API - Fixed newly created events not inheriting mute flag from category. - Event API - Fixed problem with streamed wavebanks that contain 2D and 3D subsounds. - Fixed 24-bit AIFF problems between fsb storage and readback. - Wii - Fixed hang when releasing stream while disk is ejected. - PS3 - Fixed output buzzing. - Fixed bad Pro Logic encode caused by using -3dB midpoint pan gain. - Fixed system flag FMOD_INIT_3D_RIGHTHANDED getting reset. - PS3 - Fixed rare popping when reverb is enabled. - Wii/GC - Fixed hardware lowpass being disabled whenever a channel is paused and then unpaused. - Wii/GC - Fixed hardware channel reverb and lowpass properties not being preserved when channel swaps from virtual to real. - Wii - Fixed FMOD_Channel_GetControllerSpeaker not returning the correct value. - Wii - Fixed normal speaker sounds sometimes playing out of the controller speaker when channel swaps from virtual to real. - Wii/GC - Fixed problems when streaming mixed mono/stereo fsbs. * PS3 - Release is now built using Sony SDK 1.54.001 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 (fmod*D.dll and fmod*D.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 u