====================================================================================== REVISION HISTORY : FireMOD : Copyright (c) Firelight Technologies, Pty, Ltd, 1994-2005 http://www.fmod.org ====================================================================================== + Added feature or noticable improvement - Bug fix or something removed * Changed or Information ====================================================================================== 02/10/06 3.75 ------------- - Linux - Fixed net streaming crash when trying to connect to a URL with a port in which nothing is listening. 05/05/06 3.75 ------------- + WII - Added Nintendo Wii support. 15/12/05 3.75 ------------ + PSP - Added PSP support! Contact sales@fmod.org for evaluation versions! + XBOX - Added FSOUND_INIT_XBOX_REMOVEHEADROOM for 2D sounds to disable the xbox directsound 6db attenuation on all voices (to avoid clipping). - ALL - Fixed rare timing crash, mainly on HyperThreaded or Multi-Processor machines, when calling FSOUND_Stream_SetPosition or FSOUND_Stream_Play. - ALL - Sounds not starting paused properly issue fixed. - ALL - Stability increase calling stream related commands from a sync callback. - ALL - IMA ADPCM compressed multichannel FSB files with channel count = 2 played as static fixed. - ALL - Removed any references to ctype.h so linux has an easier time linking on old glibc versions. - ALL - .IT format - Pitch envelope under 'amiga frequencies' issue fixed. - ALL - .IT format - Pan envelope not panning left issue fixed. - ALL - .IT format - some songs with extremely high pitch notes were being clamped by fmod's internal setfrequency function, so that has been fixed. - ALL - Fixed stream not opening with FSOUND_NONBLOCKING if FSOUND_OUTPUT_NOSOUND_NONREALTIME was the output mode. - ALL - Fixed rare stream crash if FSOUND_NONBLOCKING was used and ran out of memory. - ALL - Fixed ogg vorbis seeking causing odd audible playback for a few ms. - ALL - Removed stall on FSOUND_Stream_SetSubStream or FSOUND_Stream_SetSubStreamSentence if other streams were playing simultaneously. - ALL - Fixed FSOUND_SetMute not taking FSOUND_SetVolumeAbsolute into account when unmuting. - ALL - Fixed recording returning an error if fmod was closed then reinitialized - ALL - Fixed rare failures in FSOUND_Sample_Load if a stream was openened beforehand. - LINUX - More OSS and ALSA compatibility fixes, should handle most cards without a problem now. - LINUX - Fixed lock on cd device after FSOUND_Close was called so tray wouldnt eject. - LINUX - ALSA output now cooperates with other applications better. - WIN32/ WIN64/ WINCE - Fixed thread leak if recording was started and stopped. - WINCE - Fixed last few milliseconds of mp3 files not playing. - WINCE - Fixed new streams not being able to be started if memory card or removable media was removed during playback. - WINCE - Fixed memory leak. - PS2 - Mute wasn't muting hardware voices properly. - PS2 - Free up streams in FSOUND_Close to avoid hang. - PS2 - Fixed memory leak when using FSOUND_NONBLOCKING and sample list feature in FMUSIC_LoadSongEx. - PS2 - Removed rare chance of buzzing noise if FSOUND_SetSpeakerMode was set and FSOUND_Init had 0 software channels specified. - PS2 - Fixed FSOUND_STEREOPAN coming out in right speaker with mono sounds. - PS2 - Unblocked FSOUND_Stream_SetEndCallback from possibly causing a stall. - MAC - Fixed critical section issues on OS9. - XBOX - Fixed loop point clicking on PCM based hardware sounds. - FSBANK - Fixed command line version not returning correct error code to dos. Also stopped messagebox popping up when -h was specified. * WIN32 - CDDA streams now return -3 from FSOUND_Stream_GetOpenState when cd is ejected. * PS2 - FSOUND_IsDiskBusy now accepts a parameter to determine if a stream is in the middle of a close (because stream close can cause blocking in other functions if they are called while a stream is closing) 11/11/04 3.741 (Mac only) ------------------------- - MAC - Fixed problems with playing Ogg Vorbis files. - MAC - Fixed threading issues which was causing problems in mac classic. - MAC - Added "Classic" target to all examples. 18/10/04 3.74 ------------- + GC - Added FSOUND_GC_PrepareForReset (see fmodgc.h) to prepare for software reset. This kills streams so FSOUND_Close can be called safely even with the tray door open. + GC - Added FSOUND_GetFreeHWRam to find out how much ARAM is free. + GC - Memory footprint lowered. + XBOX - FSOUND_Stream_OpenFromHandle added to allow dashboard tracks to be played after using XOpenSoundtrackSong. - ALL - FSOUND_Stream_Play is now faster. - ALL - Fixed FSOUND_SIGNED / FSOUND_UNSIGNED being ignored when FSOUND_LOADRAW in FSOUND_Sample_Load/Ex. - ALL - Stream fix when a stream opened with FSOUND_NONBLOCKING runs out of memory. - ALL - Memory leak fixed in certain error situations trying to open a stream. - ALL - Remove rare stream crash. - ALL - Corruption when using compressed streams and stream loop points in rare cases fixed. - ALL - FSOUND_SetVolumeAbsolute not working on software mixed 3D voices or PS2/GC hardware 3D voices. - ALL - Fixed S3M arpeggio. - ALL - Fixed an issue where on some platforms (xbox/gc/dsound) hardware voices would enter an inconsistent state if channel that had played and ended was paused. - WIN32 - ASIO Crash fix. - LINUX - Fixed hang on OSS output if another device was using the same device. - LINUX - Fixed crash when using ALSA by upgrading to the latest ALSA library. (It was an ALSA crash not fmod!) - MAC - Fixed crash on OS9 support. - XBOX - FSOUND_IsPlaying / FSOUND_GetNumChannelsPlaying fixed when FSOUND_SetPaused was used. - XBOX - Sounds going quiet if FSOUND_Reverb_SetChannelProperties was called on 2d channels fix. Now reverb channel properties are ignored if it is a 2d voice, as the properties related to a 3d environment anyway. - PS2 - Fixed crash on streams with loop points in VAG format. - PS2 - Fixed stream priorities being 0 instead of 256 due to a sifcmd optimization which lead to the undesirable effect of streams being stealable by the channel priority system. - GC - 3D sound rolloff algorithm updated to be consistant with other platforms. - GC - Fixed unpaused sounds playing through all of ARAM in some cases. - GC - Fixed audible glitch upon startup in certain cases. - FSBANK - Fixed program stealing window focus when in hidden mode. * ALL - FMUSIC_SetSample now allows hardware samples specified for music files. This means you can do things like use hardware VAG samples on PS2 in mod files. * ALL - Renamed stream2 to userstream. * PS2 - Exposed FSOUND_SetDiskBusy on IOP interface for IOP programmers. * GC - Reduced memory fragmentation. 01/06/04 3.73 ------------- + ALL - FSOUND_CD_TrayOpen added. Now close or open is specified manually. + WIN32 - Added CD TOC retrieval as an FMOD tag. CDDB diskid generation added to CDDA example. + WIN32 - Extended ASF/WMA tag support added. - ALL - FSOUND_Stream_GetTime and stream syncpoint fixes. - WIN32 - CDDA pausing between tracks fix. - FSBANK - Command line calls and list file parsing fix. - GC - Memory alignment crash fix - PS2 - FSOUND_Init/Close restart fix if FSOUND_INIT_PS2_USEVOLUMERAMPING was specified. - ALL - FSOUND_CD_Eject removed in favour of FSOUND_CD_TrayOpen. * FSBANK - If FSOUND_HW3D is specified on a stereo sample an error is displayed. 23/04/04 3.72 ------------- + WIN64 - AMD64 version of fmod available! fmod64.dll. Runs in Windows XP 64 / Windows Server 2003. + ALL - FSOUND_Sample_SetDefaultsEx / FSOUND_Sample_GetDefaultsEx added. Now includes random variation settings for frequency, volume and pan! + ALL - FSOUND_3D_SetMinMaxDistance / FSOUND_3D_GetMinMaxDistance added for per channel min/max distance control. + ALL - 'fsb' example added. Shows loading of an FSB file as a non blocking sample bank, then plays back the contents using the new random variation + WIN32 - Faster DirectSound support, due to many driver calls eliminated. This was probably the cause of worse performance in FSOUND_HW3D mode than using the FMOD software mixer. The software mixing mode probably still wins, but it is better than it used to be. + WIN32 - WMA, ASF and WMV now run through FMOD DSP engine / streamer! You can now load WMA files as samples, do DSP effects and spectrum analysis on these files. + WIN32 - ASIO output channels made enumerable and selectable through FSOUND_SetDriver. + PS2 - Optimizations on EE<->IOP communication with more EE side caching + PS2 - Added FSOUND_IOP_Alloc/Free. + PS2 - Added FSOUND_SPU2_Alloc/Free. + PS2 - Added FSOUND_SetADSR and FSOUND_SetADSRKeyoff + PS2 - Added FSOUND_SetSifCommandInfo, and a similar IOP mechanism for users wanting to make FMOD cooperate with their own EE<->IOP sif command handlers. + PS2 - Stream2 example now shows VAG/ADPCM Hardware playback as well as PCM playback and has an improved interface. + PS2 - 'streamwithdata' example added. This shows using FSOUND_SetDiskBusy, and also loads game data at the same time without affecting the framerate. + PS2 - ShellMpeg example added! This example makes the Sony Shell mpeg movie player example use FMOD via PCM or ADPCM using a custom FMOD stream. + PS2 - Added FMUSIC_SetRowCallback, FMUSIC_SetOrderCallback, FMUSIC_SetZxxCallback and FMUSIC_SetInstCallback support. + PS2 - Added fmodps2iop.h to expose FMOD file and memory routines to IOP programmers. + XBOX - Reverb on 2d voices is now possible by calling FSOUND_Reverb_SetChannelProperties. + XBOX - FSOUND_Output_XBox_GetEffectImageDesc added in fmodxbox.h + CE - FSOUND_File_HasFatalErrorOccurred and FSOUND_HasPowerOnOccurred added in fmodce.h. + FSBANK - Now available as a programmers library! Make your own FSB files without fsbank.exe! See fsbank.lib, fsbank.h and fsbank.chm. + FSBANK - FSBank now allows list files to specify sample defaults and randomization parameters per sound. - ALL - FSOUND_Sample_SetMaxPlaybacks fixed when using hardware samples. - ALL - Voice stealing fix with FSOUND_FREE. - ALL - FSOUND_IsPlaying / endcallbacks on streams not reacting in time when FSOUND_INIT_STREAM_FROM_MAIN_THREAD bugfix. - ALL - mod/s3m/xm fix with pattern loop. - ALL - mod/s3m/xm/it. Non looping songs now play the very last row instead of cutting it off. - ALL - .it files now respect the FMUSIC_SetLooping command! - ALL - FMUSIC_SetOrder now cleans up/resets old channels so skipping to a new part of the song doesn't cause weird playback issues. - ALL - FMUSIC_GetRealChannel fix for non playing music channels. - ALL - Loop points on natively compressed sounds (xadpcm,gcadpcm,vag) working again. - ALL - ADPCM compressed FSB support fixed. - WIN32 - Analogue and Digital CDROM support fixes. - WIN32 - FSOUND_HW3D support now drops back to directsound software buffers instead of fmod software mixed buffers to remove the issue of latency and possible skipping on some soundcards due to bad drivers. It avoids the need to have to play with the mixer buffersize (FSOUND_SetBufferSize). 32 'hardware' voices are now reported if the card actually has no voices. - GC - Bugfixes. Stereo sound fixes, crash fixes, pause/unpause fixes and more. - PS2 - IRX files symbol stripped, now around 130k smaller for each file. - PS2 - FSOUND_GetPaused fixed with streams that are started paused. - PS2 - FSOUND_SetDiskBusy now does not block other FMOD commands if executed from another thread asynchronously. (ie if the game has a threaded filesystem). - PS2 - Memory saving. 200k on the EE. - LINUX - Ensoniq 1371 latency fix. - LINUX - FSOUND_Init stalls/timeouts removed from various dodgy soundcards. - LINUX - OSS Recording bugs fixed. - CE - Streams now stop gracefully instead of hanging the thread if a poweron occurs and the file handle to the stream on a CF card or external medium is lost. - FSBANK - Many bugfixes. * ALL - FSOUND_GetNumHardwareChannels renamed to FSOUND_GetNumHWChannels to give more information including 2d and 3d channels seperately. * ALL - FSB files now allow mixture of mono and stereo sounds in the one bank. FSOUND_Stream_SetSubStreamSentence will fail if it encounters a sentence with mixed formats but functions like FSOUND_Stream_SetSubStream will work. * ALL - FSOUND_INIT_ENABLEOUTPUTFX renamed to FSOUND_INIT_ENABLESYSTEMCHANNELFX. 14/11/03 3.71 ------------- + WIN32 - CDDA support. Now you can perform cd ripping, spectrum analysis or DSP effects on CD audio. See FSOUND_Stream_Open and FSOUND_Stream_SetSubStream. + PS2 - New FSOUND_SPEAKERMODE_PROLOGIC2_INTERIOR speakermode added as an alternative to FSOUND_SPEAKERMODE_PROLOGIC2. This method cuts number of sound playbacks to 24 at once instead of 48, but supports interior panning. Probably not needed in most games. - ALL - FSOUND_Close and stream thread safety fixes for extra stability especially when using end callbacks. - ALL - Buffered file system fix to avoid strangely playing streams. - ALL - Using FSOUND_Stream_SetTime in conjunction with FSOUND_FORCEMONO fix. - ALL - (except CE and PS2) - Chirping noise fix when not using FSOUND_MPEGACCURATE when seeking in an mp3. - ALL - Possible OXM format memory leaks removed. - WIN32 - WMA tag support fix. - WIN32 - MP3 static fixed, when playing 2 mp3s at once or loading an mp3 sample while streaming an mp3 simultaneously, on hyperthreaded cpus. - LINUX - FSOUND_Close hang fixed. - PS2 - Sync callback support added - PS2 - IOP memory leak in the kernel if FSOUND_Init and FSOUND_Close was called - PS2 - Corruption noise removed in streams if the stream buffersize wasnt big enough and a stream tried to restart after buffer underrun. - PS2 - Prologic 2 support fixes in the original PL2 mode. - CE - Small glitch noise removed when stopping and starting an mp3 stream. - MAC - linker issues resolved with mach-o build on certain versions of OSX. - MAC/GC - endian issue fixed with noisy samples in .IT files. * ALL - specifying FSOUND_8BITS in loading a sample will now force the sample depth down to 8bits to save memory. OXM files now also downgrade decoded oggs back to 8bit when loading if the original XM had them stored as 8bit. 4/9/03 3.70 ------------- + ALL - Shoutcast / Icecast / HTTP streaming support added! (mp3/ogg vorbis only). + ALL - Tag support, I3DV1, I3DV2, Ogg Tags, ASF/WMA tags now readable through api. + PS2 - Prologic 2 support now allows use of all 48 hardware channels, instead of 24. + PS2 - Delay and Feedback parameters on spu2 hardware reverb now supported through EchoTime and EchoDepth parameters respectively. + WIN32 - FMOD Media Player updated with some new features. Lowpass cpu usage bug fixed. + ALL - NetStream example added to make it simpler to understand buffering logic etc. + ALL - Saving the recorded result to a wav file added. Shows how to Lock/Unlock a sample. + ALL - FSOUND_Stream_*Sync* API changed around a bit / renamed. Now user points are stored as a pointer instead of an index, and the 256 limit is removed. + WINCE - FSOUND_DSP_GetSpectrum now works! Integer FFT implemented for non FPU devices. - ALL - WAV/AIFF only. If a file had loop points embedded, then the mode (ie FSOUND_2D) was being ignored, fixed. - ALL - Memory leak fixed if any FSOUND_Stream_*Sync* functions were called with FSOUND_NONBLOCKING and the stream wasnt ready yet. They now fail if not ready. - WIN32 - WMA and FSOUND_NONBLOCKING now works. - XBOX - 360kb or so of memory saved! Also DSSTDFX.BIN is no longer needed. - PS2 - Ejected or corrupted CDs now recover smoothly on stream playback without making a noise. - PS2 - FSOUND_Reverb_SetChannelProperties fix which was causing sound to dissapear. - PS2 - Return values for most channel commands fixed, they were returning the wrong value. - PS2 - Streams being truncated wth different stream length/buffersize combinations fixed. - PS2 - FSOUND_GetPaused fixed. - PS2 - Many other bugfixes. - MAC - Recording bugfix dependent on OSX version. - WINCE - fixed mp3 loading as sample bug, for files with corruption in them. * ALL - FMUSIC_LoadSongEx now takes an offset parameter for pak/wad/data file loading. * ALL - FSOUND_Stream_OpenFile is now called FSOUND_Stream_Open and also takes an offset parameter for pak/wad/data file loading. 9/6/03 3.63 ------------- + ALL - FSBank updated. Now all platforms support compressed FSB formats. Command line supported added. Source files can now be specified via a text file, allowing ordering of sounds within fsb files. + ALL - FSB format now supports sample banks to hold any sound format that fmod can load with FSOUND_Sample_Load, so for example you could have 1 fsb with multiple mp3, ogg and wav files stored within it. + ALL - FSOUND_Stream_OpenFile with FSOUND_MPEGACCURATE is now 25% faster! + ALL - FSOUND_Stream_SetLoopCount added. + ALL - FSOUND_NONBLOCKING support added to FMUSIC_LoadSongEx! Now sample banks can be loaded in the background. Use new FMUSIC_GetOpenState to poll status. + PS2 - Dolby Prologic 2 support added! Use FSOUND_SetSpeakerMode and FSOUND_SPEAKERMODE_PROLOGIC2. Note that this mode uses 2 hardware voices for every fmod channel, so the number of channels is effectively halved from 48 to 24 when using this speaker mode. + PS2 - FSOUND_Update now 30-40% faster! + PS2 - File routines now split into fmodfile.irx so users can quickly compile or hook into their own IOP file routines. + ALL - FSOUND_INIT_STREAM_FROM_MAIN_THREAD added. This causes FSOUND_Update to drive the streamer thread. This is mainly because OS8/Macintosh doesnt like streaming inside an MPTask, which is being worked on. This will work around it. - WIN32 - DirectX 8/9 bug fixed which could cause a crash with FX or recording. - ALL - FSOUND_Stream_SetTime is now sample accurate with mp3. (it previously seeked and rounded the position to the nearest mpeg block). - ALL - MP3 'chirp' noises when seeking (using FSOUND_Stream_SetTime or FSOUND_Stream_SetPosition) reduced or removed completely. - PS2 - FSOUND_IsPlaying bug fixes, Prologic 2 support! Hardware click removal! - PS2 - Greater volume accuracy which removes 'wobbly' sound when using small mindistances in 3D sound. - MAC - conflict with cocoa libraries and the symbol _realloc removed. - ALL - Strange doppler effect when sounds went outside maxdistance fixed. - ALL - FSOUND_Stream_SynchPoint fixes. - PS2 - FSB 16byte memleak fixed. - ALL - AIFF loop point support fixed. - WINCE - Loading MP3 as sample crash fix. - WINCE - FSOUND_GetLengthMs fixed with MP3 files. - FSBANK - Mixing 8 & 16bit sounds dissalowed. A stream is created in a particular format (based on the first sample in an FSB), and if the first sound was 8 bit but the rest were 16bit, the result would be noisy 16bit sounds. * ALL - win32/mac mainly. FSOUND_Update now yields, causes operating task switch for smoother multitasking. You should call this function once a frame. * MAC - fmod_cfm.shlb now only exports the relevant fmod symbols and not the MSL stuff. 28/02/03 3.62 ------------- + GC - GameCube support added! + ALL - Added DirectX 9 support. You can now change frequency with FSOUND_ENABLEFX enabled sounds. + ALL - Cross platform IMA ADPCM wav file support! Now you can use ADPCM compression without windows codecs, and on any platform. + ALL - Recording support added to Mac and Linux ports! + ALL - FSOUND_Stream_SetMode and FSOUND_Stream_GetMode added to allow control during playback, such as looping. + ALL - FSOUND_Stream_SetSubStreamSentence added! This allows for seamless stitching/sentencing of streams. VERY useful for things like commentary where you want parametized audio. FSB format only. + ALL - FSOUND_CD_SetTrackTime added. + PS2 - Now TRC compliant for sony submissions. + PS2 - Added multi-channel interleaved stream support! (FSB format only). If stereo is 2 interleave channels (L/R), this format allows up to 16 interleaved channels at once that play simultaneously. This eliminates seeking and improves CD bandwidth, and also allows interactive music with tracks that stay in perfect sync. + PS2 - FSOUND_Reverb_SetChannelAttributes supported, using Room parameter to make channel wet/dry. + PS2 - Stereo and even 'multichannel' (see above) sample support in hardware. (FSB format only). + WIN32 - New example 'multiple' shows how to load fmod dynamically, and also play sounds out of 2 soundcards at the same time! + WINCE - New complete set of examples! 3d, simple, simplest etc are all included. + LINUX - Better compatibility for old cards. ALSA mode now allows device enumeration. Electic Fence tested. + WIN32 - 24 and 32 bit PCM wav files supported! - ALL - FSOUND_SetSubStream fixed when in FSOUND_NONBLOCKING mode and mulitiple calls are issued at once. - ALL - FSOUND_Stream_SetEndCallback more accurate. - PS2 - 'Corrupted' stream fix when usage of hardware channels were maxed out. - PS2 - FSOUND_Stream_PlayEx was accidently blocking, fixed. - PS2 - Multiple Listeners fix. - PS2 - FSOUND_SetSFXMasterVolume fix for FSB banks. - ALL - Stream timing, mod timing, and stream endcallbacks are now more accurate. - MAC - OS8/9 support working again. * ALL - .FSB support is now cross platform. PS2, GameCube and XBox allow compressed FSB data. * WIN32 - Made fmod.h and examples more cygwin friendly. * ALL - FMUSIC_LoadSongMemory is now changed to FMUSIC_LoadSongEx. This function handles loading from memory and more. * ALL - Frequency/Volume/Pan/3d position cached to reduce WIN32 driver call overhead? * LINUX - fmoddyn.h updated and useable for linux. 18/12/02 3.61 ------------- + ALL - Added FMUSIC_SetUserData and FMUSIC_GetUserData + ALL - Added FSOUND_3D_Listener_SetCurrent for multiple listener support! + ALL - Optimized Ogg Vorbis. Ogg decoding is now 2x faster! Decoding is nearly 2x quicker than mp3! + WIN32 - A3D support re-added as an output mode only, for compatibility. + PS2 - Added FSOUND_Stream_SetSubStream/FSOUND_Stream_GetNumSubStreams, for FMOD .FSB bank files are supported on PS2 Only. Cross platform support is coming. + WINCE - Added Ogg Vorbis support via fixed point Tremor API. + ALL - Added support for Neil Graham's .XM to .OXM converter. This tool converts XM samples into ogg files, making them dramatically smaller. + WIN32 - Added dynamic loading header fmoddyn.h. This allows you to create multiple instances of fmod = multiple soundcard output. + ALL - Added FSOUND_Stream_SetLoopPoints. + ALL - Added FSOUND_Stream_GetOpenState for determining the state of a non blocking stream open. + ALL - Added FSOUND_Stream_AddSynchPoint, FSOUND_Stream_DeleteSynchPoint, FSOUND_Stream_GetNumSynchPoints for sync point manipulation. Previously they were only available in .WAV or .AIFF files. + ALL - Added FSOUND_OUTPUT_NOSOUND_NONREALTIME. Calling FSOUND_Update drives the software engine as fast as you like. - LINUX - Latency fixes. - LINUX - OSS output now allows /dev/dsp* enumeration. - PS2 - Numerous fixed and speedups. - XBOX - Fixed WMA looping. - WINCE - Added more power off/on support for some iPAQ models that didn't work before. - WIN32 - Improved ASIO support! More drivers work now that didn't work before. - WIN32 - CD playback bugfixes. - WIN32 - MIDI 'caching' bug fixed. - WIN32 - FSOUND_ALL support now works with WMA channels. - WIN32 - Pan clicks removed from FSOUND_MIXER_QUALITY_FPU - WINCE - FSOUND_Stream_GetTime / SetTime / GetLengthMs more accurate for mp3. - ALL - Lots of memory optimizations. FMOD now uses less memory than ever. * FSOUND_3D_Listener_SetDopplerFactor renamed to FSOUND_3D_SetDopplerFactor. * FSOUND_3D_Listener_SetDistanceFactor renamed to FSOUND_3D_SetDistanceFactor. * FSOUND_3D_Listener_SetRolloffFactor renamed to FSOUND_3D_SetRolloffFactor. * FSOUND_3D_Update renamed to FSOUND_Update 16/08/02 3.6 (WIN32/CE/Linux/Mac/PS2/Xbox Release) ------------- + PS2 - PlayStation 2 support added! + XBOX - XBox support added! + MAC - Macintosh support added! + LINUX - Major rewrite + support for ALSA 0.9! Vortex2 support now working 100%. + ALL - Added FSOUND_Sample_SetMaxPlaybacks. + ALL - 'Constant power pan' added to software engine for better sounding pans. + ALL - FSOUND_NONBLOCKING flag added for opening streams. (streams will open in background) + ALL - AIFF Support added with full loop point and sync marker support. + ALL - Ogg Vorbis support upgraded to 1.0 final codebase! + ALL - FMUSIC_SetLooping added. Music loops by default, so call to stop it looping. + ALL - FSOUND_GetCurrentLevels added which returns a seperate left and right VU level. + WIN32 - FSOUND_FX_Disable added, so that FSOUND_FX_Enable doesnt have to be called each time. + WIN32 - MP2 support optimized, significantly faster. + WIN32 & WINCE - Wave-In recording support added. Now recording works in NT and PocketPC! + WINCE - BIDI Looping and negative frequencies now supported. + WINCE - Smartphone, CE 2.11 and BE-300 support added. - ALL - Better MP3 format detection. - ALL - WAV sync markers now sorted if they are stored in the wav file out of order. - ALL - 3d sound and setvolume bug fixed. - ALL - XM apreggio was upside down on linear frequency tunes bug fixed. - ALL - FSOUND_SetFrequency. negative followed by positive frequency now works properly. - ALL - FSOUND_GetCurrentVU removed in favour of FSOUND_GetCurrentLevels. - WIN32 - Midi fixes. FMUSIC_IsFinished fixed, FMUSIC_StopSong fixed, FMUSIC_LoadSongMemory fixed. - WIN32 - A3D/Geometry support removed. Geometry may re-appear via FMOD instead of A3D support. - WIN32 - Fixed DX8 FX (FSOUND_FX_xxx) support. - WIN32 - Fixed CD Playback functions. - WINCE - Better support for Casio E115G device. Use 200ms buffer for these devices. - WINCE - Seeking through SetTime/SetPosition bugfix especially with FSOUND_MPEGACCURATE. - LINUX - Removed CD access at FSOUND_Init. * ALL - maxdistance behaviour unified on all platforms. * ALL - FSOUND_SPEAKERMODE_5POINT1 is now separated to FSOUND_SPEAKERMODE_DOLBYDIGITAL and FSOUND_SPEAKERMODE_DTS. * ALL - Changed FSOUND_INIT_ACCURATEGETCURRENTVU to FSOUND_INIT_ACCURATEVULEVELS. * WIN32 - Stopping or playing a sound now does not reset the FX list. You have to manually do this with FSOUND_FX_Disable. This reduces cpu usage if wanting to start and stop the sound repeatedly. 11/03/02 3.51 (CE Only release) ------------- + WINCE - FSOUND_GetCurrentVU support added + WINCE - Optimizations - All remaining emulated floats removed - now pure fixed point! - ALL - Memory usage reduced on MOD/S3M/XM/IT playback by up to 200-300kb per instance. - ALL - Other small fixes. - WINCE - FSOUND_Init failing on some PocketPC devices fixed. * ALL - FSOUND_FORCEMONO enabled by default when a stream or sample is attempted to be opened with FSOUND_HW3D, so the user doesnt have to specify it manually. 14/02/02 3.5 ------------- + FMOD CE Only. Mono mixers added! (FSOUND_MIXER_MONO and FSOUND_MIXER_QUALITY_MONO). 30% faster than stereo! + EAX3 support added! Advanced reverb api now also supporting occlusion and obstruction. + FMOD CE Only. Automatic power off/on recovery! FMOD audio will resume as soon as the power is turned back on the Pocket PC device with no programmer intervention! + Ogg Vorbis version update to 1.0 RC3. + New tutorials in the documentation! The basics, DSP tutorial, DX8 FX tutorial and spectrum analysis. Documentation index revamped and updated. + FSOUND_SetMemorySystem added. Allows the user to fexibly control memory allocated by FMOD. + Multiple CDROM support added. Pass 0 for default, or 'D','E' etc to select the cd drive. + FSOUND_Stream_SetBufferSize added. Useful for streaming from CD when the default size isnt big enough, and causes audio skips because the cd is being held up. + FSOUND_SetFrequency supports negative frequencies. Play sounds backwards! + FMOD media player allows seeking in mods and streams by clicking on progress bar + Linux version brought up to date. Thanks to SUSE distro guys for helping out. + FSOUND_GetCurrentVU latency adjusted (via FSOUND_Init flag), and now emulates a software mixer giving perfect VU feedback. - Sound skips with streams removed by bigger default stream buffersize. (also on CE) - Divide by 0 in linux version removed. - Bug fixed where an item appeared on the windows taskbar for FMOD's cdrom handling code. - Time accuracy bug fixed which affected gettime functions and sync callbacks. - Fixed distortion on mp3 playback under FMOD CE. - FSOUND_SetMute using FSOUND_ALL bugfix. - DirectShow assert removed when an error occured loading wma. - EAX1 support removed (superceeded by EAX2/EAX3). * FSOUND_FX api now allows multiple instances of the same effect per channel. * Ability to 3d position stereo soures removed in software mode. Streams and samples now default to FSOUND_STEREOPAN so they are louder. Use FSOUND_FORCEMONO on streams/samples to make them 3d. * Intel performance primitives for ARM were tested but removed due to insignificant speed increase. 13/09/01 3.4 ------------ + DX8 fx support + Windows CE / PocketPC support added for handhelds! (such as compaq ipaq/casio/jornada etc). CE support is considered in beta. See the forum at http://www.fmod.org for beta feedback. + Ogg Vorbis decoder upgraded to Version 1.0. 1.0 is a large quality improvement! + FSOUND_SetCurrentPosition added. + FSOUND_GetOutputHandle added to return dsound / waveout / a3d pointer. + FSOUND_SetSpeakerMode added. Get true dolby digital/DTS surround output through supported hardware! + FSOUND_DSP_GetFFTUnit and FSOUND_DSP_GetSpectrum added. It is now possible to get a spectrum analysis of FMOD's mixer output in realtime. Great for graphics, beat detection and note detection. + FSOUND_PlaySoundEx added. Has 'paused' flag that allows the user to optinally start the sound paused, set any attribute, and then unpause it later to start it playing. Also can takes a DSP unit handle, which means channels can now attached or grouped to specific DSP units. + FSOUND_DSP_GetBufferLengthTotal for help with DSP buffersize calculations. + FSOUND_FORCEMONO flag added for samples/streams. Force stereo sounds to play as mono. + FSOUND_ENABLEFX flag added for samples/streams. Enables a sample/stream to use DX8 FX. + FSOUND_2DHW flag added for samples/streams. Allows 2d hardware acceleration. + "file://" support added for streams. + new sample in /samples/dsp added. This shows how to use the new DSP feature of FSOUND_PlaySoundEx to have wet/dry effects, and also the FSOUND_FX_xxx API on hardware voices. - FSOUND_PlaySound3DAttrib removed due to FSOUND_PlaySoundEx. - FSOUND_Stream_Play3DAttrib removed due to FSOUND_Stream_PlayEx. - FSOUND_Stream_SetPaused & FSOUND_Stream_GetPaused removed. Use FSOUND_SetPaused, FSOUND_GetPaused instead. - FSOUND_Stream_SetSynchCallback fix for long files. - FSOUND_UNMANAGED flag fixed when calling FSOUND_Close. - Removed small audible glitches or 'chirps' when seeking in an mp3 stream. - Delay when opening a stream removed. - Streams now reset's its buffers when FSOUND_Stream_SetTime or FSOUND_Stream_SetPosition is called. This makes it more cpu intensive to seek, but results in no delays when seeking. - Small accuracy bugfix in IT replay for looping envelopes. - fix in delay note + volume envelope for XM. - A3D Support fixed and working ok again. - WMA/ASF/etc Support improved. * FMUSIC_SetInstCallback behaviour changed to support more than one instrument at a time. 28/04/01 3.33 ------------- + Linux Version update. + FSOUND_ALL support added to FSOUND_Reverb_SetMix. - EAX2 bugfix with FSOUND_Reverb_GetEnvironmentAdvanced - Click noise removed from WAV streams if FSOUND_Stream_SetTime was used before Play. - S3M bugfix for samples with middlec of 0. - Low quality mixers have been removed. The symbols are there for backwards compatibility but choosing one will autodetect a quality mixer instead. - Small bugfix in FPU quality mixer to do with volume ramping. * Licensees now get an extensive compile time configuration header to include or exclude as many fmod features as they like! a stripped FMOD.DLL can be as small as 20k now. 27/03/01 3.32 ------------- + FSOUND_SetVolume, FSOUND_SetPan & FSOUND_IsPlaying support for WMA/ASF/Internet streams/etc added. Multiple wma's open at once bug fixed. + Excellent quality resonant lowpass code added to fmod.exe example. Source available. + FSOUND_INIT_GLOBALFOCUS added for directsound output, to allow sound to be heard even though the window is out of focus. + OGG VORBIS - Official beta 4 release included. Previous ver was pre-release beta 4. - Recording interface re-enabled. - MP2 fix - sound coming out one channel for stereo sounds now work properly. - 3D sound glitch with FSOUND_PlaySound3DAttrib fixed. - FSOUND_Stream_GetLengthMs returning incorrect results loading multiple mp3's fix. - exception when loading many wav files fixed. - MIDI updates - FMUSIC_GetTime works again and support for FMUSIC_IsFinished added - Possible DX8 related problems removed. - Better handling of machines with NO soundcard. * improved multitasking / buffering = lower cpu usage, more stability for sound output, especially on weird configs and low spec machines. * FMOD will now play the audio track out of AVI files - ie DIVX etc :) 18/02/01 3.31 ------------- + WAV Loop point support added! FMOD will now interpret loop points set in soundforge etc. + OGG VORBIS - Beta 4 used with FMOD. Fixes problems and has speed benefits. + FMUSIC_SetInstCallback added. Get callbacks on mod type instrument numbers. + FSOUND_Stream_SetSynchCallback added. Visually drop markers in your wav editing package and FMOD will callback in time to the points as the sound plays! Great for lipsynching/gfx demos etc. WAV/RIFF mp3 only. + DX8 support added. + NT detection added. This will mean WINMM is automatically enabled if FSOUND_Output isnt called for better performance. All other WIN32 OS'es will use DSOUND. + Static library project added for commercial licensees. - Extra MP3 error checking, avoids crash on bad mp3 files. (why are there so many?) - Crash fix on certain combinations of machines with sblive cards. - WMA / Internet stream support error code fix. - WAV loader now handles files with 2 data chunks :) - FSOUND_DSP_ClearMixBuffer now works properly. - Fixed wobbling row/order/time when you pause a mod. - small crack noise at the end of looping 8bit wav files fixed. - FSOUND_Stream_GetTime improved especially with looping streams. - Zxx sync bug with mod files fixed where more than 1 Zxx was placed on a row. - XM multiretrig + volume column volume bug fix. - LINUX - Oss now opens the socket in nonblocking mode. That should take care of the lockups some ppl got when another app was using the sound. - LINUX - Esd now checks (via a select()) if it can send data, blocks if it can't. The newest Elightment Sound Daemon choked on that one, and it's the Right Thing(tm) to do. * A bug has been found in the win2k sblive drivers to do with volume levels on 3d sounds.. We suggest you get the newest version. 17/12/00 3.3 ------------ + Linux support added! Big thanks to Magnus Naeslund on this for such a big effort! + .MIDI/.RMI support added. (use FMUSIC_LoadSong) + .OGG (Ogg Vorbis) support added. (FSOUND_Stream_OpenFile/FSOUND_Sample_Load). + .MP2 (mpeg layer 2) support added. (FSOUND_Stream_OpenFile/FSOUND_Sample_Load). + .WMA Support added. (FSOUND_Stream_OpenFile). + .ASF audio Support added. (FSOUND_Stream_OpenFile). + Internet streaming support added! Pass a URL to FSOUND_Stream_OpenFile!!! + Volume Ramping ('click removal') added to MMX mixers. All quality mixers now ramp by default. + MP3 playback optimized. + Delphi and visual basic interface updated. + Documentation update. + API changes and new features!!! - + FSOUND_Stream_GetLengthMs added. Returns length of stream in milliseconds. + FSOUND_Stream_SetTime added. Allows setting the position of a stream in ms. (even VBR mp3s!) + FSOUND_Stream_OpenFile added. This combines all the old 'FSOUND_Stream_Open*' commands into 1. + FSOUND_Stream_SetEndCallback added. Get a callback when the stream has finished! + FSOUND_Stream_GetSample added. Get the internal FSOUND_SAMPLE definition for a stream. + FSOUND_Stream_CreateDSP added. Add a DSP effect chain per stream if you want! + FSOUND_Stream_Play3DAttrib added. + FSOUND_CD_SetVolume and FSOUND_CD_GetVolume added. + FSOUND_CD_GetTrackTime added. Returns current track time. + FSOUND_CD_GetTrackLength added. Returns track length in milliseconds. + FSOUND_Sample_Load replaces all previous FSOUND_Sample_Load* functions. + FSOUND_Sample_GetName added. + FSOUND_PlaySound3DAttrib added. Replaces FSOUND_3D_PlaySound and FSOUND_PlaySoundAttrib. + FSOUND_SetLoopMode added for those who want per channel loop control not per sample. + FMUSIC_SetReverb added (for MIDI only currently) + FSOUND_LOADMEMORY flag added which allows sample loading, and STREAMING from a memory pointer. + FSOUND_MPEGACCURATE flag added for FSOUND_Stream_SetTime and MP2/MP3. You can use this to get accurate time length, and set the exact specified time in an MP3 even if it has a Variable BitRate!! (VBR) + FSOUND_ALL added to channel and sample flags. This allows 1 function call (to FSOUND_SetVolume for example) and it will affect ALL channels! The possibilities are cool, such pitchbending all sounds playing with FSOUND_SetFrequency(FSOUND_ALL, freqval); etc. - Some mod based fixes including better support for corrupted files :} - Click bug removed on single-shot (non looping) samples for software engine. - Bug in mmx 8bit sample mixers fixed. - Streaming files stutter bug upon start removed / lessened. - MP3 frame filter added to remove corruption/glitches in bad mp3's. - ADPCM wav file corruption introduced in 3.22 removed. - FSOUND_Sample_SetLoopPoints bad parameter handling fixed. - FSOUND_StopAllChannels removed in favour of FSOUND_ALL flag. fmod.dll is still backwards compatible. - FSOUND_Sample_LoadWav removed in favour of FSOUND_Sample_Load. fmod.dll is still backwards compatible. - FSOUND_Sample_LoadMpeg removed in favour of FSOUND_Sample_Load. fmod.dll is still backwards compatible. - FSOUND_Sample_LoadRaw removed in favour of FSOUND_Sample_Load. fmod.dll is still backwards compatible. - FSOUND_Sample_LoadWavMemory removed in favour of FSOUND_Sample_Load. fmod.dll is still backwards compatible. - FSOUND_Sample_LoadMpegMemory removed in favour of FSOUND_Sample_Load. fmod.dll is still backwards compatible. - FSOUND_Stream_Open removed in favour of FSOUND_Stream_OpenFile. fmod.dll is still backwards compatible. - FSOUND_Stream_OpenWav removed in favour of FSOUND_Stream_OpenFile. fmod.dll is still backwards compatible. - FSOUND_Stream_OpenMpeg removed in favour of FSOUND_Stream_OpenFile. fmod.dll is still backwards compatible. - FSOUND_3D_PlaySound removed in favour of FSOUND_PlaySound3DAttrib. fmod.dll is still backwards compatible. - FSOUND_PlaySoundAttrib removed in favour of FSOUND_PlaySound3DAttrib. fmod.dll is still backwards compatible. - FSOUND_MIXER_QUALITY_FPU_VOLUMERAMP removed, all quality mixers are volume ramping now. - FMOD_ERR_INVALID_MIXER error removed in favour of already existing FMOD_ERR_INVALID_PARAM flag. - FSOUND_GetCurrentVU improved, and bugfixed for stereo samples. - Other minor bugfixes. * Streamer callbacks created with FSOUND_Stream_Create must now return TRUE, or FALSE to terminate the stream. * FSOUND_MixBuffers renamed to FSOUND_DSP_MixBuffers * _cdecl calling convention specified for callbacks in case default calling convention is changed (thanks Aristarkh Zagorodnikov) * changed LCC-WIN32 compiler definition in fmod.h to __LCC__ (not LCCWIN32) so it works better now :) 05/11/00 3.21 ------------- * Intermediate update before FMOD 3.3 is released. + New, easier to navigate documentation layout. Recording interface added to documentation :) - End of non looping MP3 on rare combination of filelength crash fixed. - More efficient streaming engine, mp3 and other format playback is even faster than before. - Master Volume and FSOUND_SetVolumeAbsolute bug fixed. 04/05/00 3.2 DX3 Patch ----------------------- + Improved playback stability with harddisk interruptions occuring in the background. - DirectX versions *less than* DX7 compatibility problem fixed (most noticable under NT). This was thanks to bug in dsound API (thanks microsoft!) 01/05/00 3.2 ------------ * FSOUND_NORMAL re-defined to (FSOUND_LOOP_OFF | FSOUND_8BITS | FSOUND_MONO), as in some cases it was being mistaken for a bitfield and or'ed in with other flags when it infact wasnt. (it was 0!) * FSOUND_EAX interface renamed to FSOUND_Reverb interface. (to fit a3d reverb, software reverb etc not just EAX) + DX7 support added. This adds more hardware voices than previously possible before. + EAX 2.0 support added. This means advanced reverb functionality and manual occlusion control. + A3D 3.0 support added (FMOD comes with a3dapi.dll now). This adds A3D reverb and advanced reverb support. + RECORDING support added. See FSOUND_Record_StartSample, FSOUND_Record_StartWAV etc. + FSOUND_MIXER_QUALITY_FPU_VOLUMERAMP mixer added. This removes clicks on sudden volume changes for added quality. + MMX quality mixer speed increased AGAIN to crazy speeds! Check out the new comparison charts. + 'userdata' parameter added to FSOUND_Stream_Create. + FMOD Standalone player/example (fmod.exe). Added 48khz support, MP3,WAV & A3D 3 support! Reverb added (NR button removed) and lowpass filter declicked. See FMOD.C for the code for all this! + New music callbacks! FMUSIC_SetRowCallback, FMUSIC_SetOrderCallback. LATENCY ADJUSTED, so when it calls back on a particular row, it is the row you HEAR. + FSOUND_Stream_GetTime smoother and LATENCY ADJUSTED, so when the time displays a value, that is the time into the stream that you HEAR. + FMUSIC_GetPatternLength added. (for time calculation purposes) + FSOUND_SetMinHardwareChannels and FSOUND_SetMaxHardwareChannels added. Great for controlling 3d Hardware resources. + FSOUND_REVERB_IGNOREPARAM added, so you can change specific elements of environmental reverb and ignore others. + Delphi interface added! + Added fmod_errors.h which contains FMOD_ErrorString. Use this in conjunction with FMOD_GetError to get a string description of the error. - PCM .WAV files accidentally did an ACM codec check even if it was PCM. Some machines didn't have this PCM ACM codec, and so loadwav or openwav failed - ACM check now skipped for PCM files. - FSOUND_GetCurrentVU fixed! - 3D - Software engine bugfixed rolloff and distancefactor to make it sound more like DS3D. - WAV/MP3 - streamer fixes and improvements. - XM/IT - portamento with multi sample instruments fixed. - API - FSOUND_Sample_Get somehow dissapeared from the DLL.. back again. - API - MU-Law functions removed. - Many other miscellaneous fixes. 08/01/00 3.11 ------------- + RIFF based MP3 files and MP3's with ID3 tags at the start now supported. - LoadSongMemory fixed and works again - Pentium Pro selecting wrong mixer upon autodetect now fixed. - XM and IT bugfixes. 24/12/99 3.1 ------------- * FMUSIC_OptimizeChannels put back into fmod.h. Im not sure why it dissapeared in the first place :) * 'stream.exe sample' changed from WAV to a MP3 command line streamer because more people wanted that. * LoadMemory functions now take a length (length of the buffer). You may have to change your code to support this (it is not backward compatible with 3.0. I didnt want to add more functions to the API for such a minor change. + Variable bitrate MP3's now supported! + FSOUND_SetHWND added for those who want to specify their own HWND for dsound focus purposes. + FSOUND_Stream_GetTime added, for smooth, non lagged, accurate synchronization with stream playback. Use this for synchronizing MP3's to your graphics! + Added stability to sound output of software engine, for when harddisk accesses occur. - 8 bit raw wav streaming bug fixed where output was noisy. - Streamer start/stop logic bug fixed/improved. (it used to hang on exit if you did several start/stops in a row) - Small XM bugfix on delay note. - Fixed startup crash bug. This was caused by BAD DRIVERS. Creative ES1370 sound card drivers have a bug, and they have the cheek to set the certified bit in the caps. It also reports 256 hardware 3d channels which is obviously a lie. Thanks to Marcus Aarts, Anders Nilsson and Shane Stevens for helping me find this one. - Documentation fixes. 12/12/99 3.0 ------------- * New timing system, no more update rate, no more mixahead! a lot more stable on shit cards like awe64, and at the same time, very low latency. * FSOUND_SetPanSeperation only affects sfx now, not music. * If mixer is not selected, it defaults to a quality mixer now, not a low quality one like before. * FSOUND_Geometry_AddPolygon now supplies normal as well AND opening factor. (it takes NULL also) * FSOUND_3D_Listener_GetAttributes now consistant across all output types. (waveout missed out before) * FSOUND_SetPaused now works on FSOUND_HW3D buffers. * FSOUND_SetMute now works on FSOUND_HW3D buffers. * FSOUND_MixChannel renamed to FSOUND_MixBuffers (it has nothing to do with channels really) * FSOUND_Listener_SetAttributes does not update 3d info now, FSOUND_3D_Update does. + Added FSOUND_File_SetCallbacks. Use this to make FMOD use your own file operations. + Compressed WAV support added + MP3 Support added + EAX Support added + A3D Support added (with full geometry and list support) + MMX quality mixer sped up 2-3 times on ppro+ machines! (p6/p2/p3) + FSOUND_Driver_GetCaps added.. Now query the capabilities of drivers before calling FSOUND_Init. + FSOUND_Stream_Create added - an easier way to stream data. + FMUSIC_SetPanSeperation added, for per song pan seperation control. + FSOUND_3D_Update added. This is now the global 3d update/flush function, NOT FSOUND_Listener_SetAttributes. + FSOUND_Geometry_Material functions implemented + Documentation added for geometry stuff, also other documentation updated (playsound, 3d stuff) + Software 3D Engine updated! Software sounds used to audibly update on FSOUND_3D_Emitter_SetAttributes only, and not when the listener was updated. Now they are updated on neither, they are audibly updated now in FSOUND_3D_Update. This means you can now move the listener without updating the sources and all the sources will update automatically! This behaves the same as DS3D now. + FSOUND_GEOMETRY_OPENING & FSOUND_GEOMETRY_OPENING_REFERENCE implemented! create doorways. + Geometry list functions added. A faster way of processing geometry. FSOUND_Geometry_AddList(FSOUND_GEOMLIST *geomlist); FSOUND_Geometry_List_Create(signed char boundingvolume); FSOUND_Geometry_List_Free(FSOUND_GEOMLIST *geomlist); FSOUND_Geometry_List_Begin(FSOUND_GEOMLIST *geomlist); FSOUND_Geometry_List_End(FSOUND_GEOMLIST *geomlist); FSOUND_Geometry_List_Add(FSOUND_GEOMLIST *geomlist); + Added FSOUND_SetBufferSize + Added FSOUND_DSP_GetBufferLength - FSOUND_Sample_Lock / FSOUND_Sample_Unlock documented properly (oops! :) - Soak test bug caused wave out to crash after 3 hours of operation.. fixed. - Fixed bug in FSOUND_Sample_Create - Some module playback improvements from fmod 2.25. - IT mod format bug fix. (NNA caused sample vibrato to lose integrity) - Error code is now set to FMOD_ERR_NONE on all function calls, so you dont parse an error that was set 10 function calls ago for example. - NoSound output mode improved. - Removed FSOUND_SetMixAhead - Removed FSOUND_SetUpdateRate 18/10/99 2.25 ------------- * Version number now included in DLL. (right click on DLL for info) + IT - mods composed with IT versions older than 2.0 reenabled. I dont have many of these songs and it seemed to work straight away and the songs i did have. They sounded ok, but if there are any problems with old IT mods then mention them to me and I might try to fix them. (theyre not high on my priority list) - FMUSIC_SetZxxCallback did not have the correct documentation and just took a void * as the callback. The actual format of the callback is callback(FMUSIC_MODULE *mod, unsigned char param). FMUSIC_SetZxxCallback now forces this. - IT - Impulse tracker 2.15 compressed samples reenabled :) - IT - FMOD was interpreting IT's stereo flag for samples, which was erroneously set by older versions of IT, causing some samples to play twice as fast as they should. Stereo check removed (IT never supported stereo samples) - MOD S3M XM IT - Sample offset bug fixed. - XM IT - minor bugs fixed. - Closedown stability increased. 31/08/99 2.24 ------------- * This is the last FMOD 2.* update unless there are some small niggling bugs. I need to finish 3.0. * NOSOUND - FSOUND_OUTPUT_NULL now behaves as if everything is active, therefore you will get all music callbacks and timers, vu meters, dsp functions and everything else working correctly etc as if it was playing, but you dont hear anything. * FMOD ported to N64. * API - this version is now declared stable. It has been run over with memory leak tools and numerous memory problems have been found and fixed. * DSP - Note that the 'length' part of the callback now fluctuates more to increase output stability, and its maximum size can equal up to the updaterate + mixahead in milliseconds. * TOOLS - convert.exe removed. use soundforge or some such program if you want to convert a wav to a a raw signed datastream. + API - New reference count channel index! The index PlaySound returns now has a reference count in the top 16bits. This so you can call playsound, store the return value, then if that channel gets stolen by the priority system, and you blindy try and keep updating it as if it was from your original playsound, the new sound wont be affected!! + API - FSOUND_Stream_OpenWav added. Now you can stream wav files with ease. This version still only supports PCM wav, but FMOD 3.0 should change this situation. + API - FSOUND_SetSFXMasterVolume & FSOUND_GetSFXMasterVolume added. + API - FSOUND_SetVolumeAbsolute added. This volume overrides master volume. Great if you need to lower the volume of your game effects and make one stand out. + MUSIC - FMUSIC_OptimizeChannels added! This function kicks arse if you are trying to lower channel usage. You give it a 'channels mixed' value, and a 'mod volume' value, and it wont play sounds in a song that have a lower volume than 'mod volume', if 'channels mixed' is being exceeded as stated in FSOUND_GetChannelsPlaying. One example is a game that reduced its maxchannels from 24 to 16 because of this with no audible difference. (the song had a lot of 'echos' that didnt need to be audible when things got noisy, so FMOD threw them away.) + MUSIC - FMUSIC_GetSample and FMUSIC_SetSample added! This allows you to get control of samples within a mod! Great if you need to compress samples yourself and then decompress them back into the mod during your game. This was in 2.23 but i forgot to mention it here :) + STREAM - file streaming example added to the sample directory. Command line driven and takes a .wav file. - 3D - Software doppler effect rewritten, now physically accurate :).. FSOUND_3D_Listener_SetDopplerFactor() now means something different to the previous versions. Check the documentation for more on this. - DRIVER - fixed problem with some peoples machines that have more than 16 'soundcards' that i thought would be the maximum. (It is actually just a hardware card enumerating a whole waveout device for each hardware channel.) - INTERFACE - command line parameters fixed, and some people not seeing the interface appear should now be happy. - IT - channel allocation bug fixed. 17/08/99 2.23 -------------- + API - FSOUND_UNMANAGED flag added for sample loading/management + API - Added FSOUND_DSP_ClearMixBuffer. Use this before doing a biiiiiig harddisk access so you dont get looping noise/stuttering, (because the harddisk/windows basically bus masters and shuts down all threads, causing the mixer to stop as well, but the soundcard keeps playing the buffer). - API - FSOUND_Sample_LoadWav & FSOUND_Sample_LoadWavMemory now return proper error code. - MIXER - clicks removed from bidi looping sample in quality mixer. - IT - fixed 2.15 compressed samples now work (oops forgot to call the right decompressor) - IT - Memory footprint drastically reduced for pattern data (now leaves pattern data compressed and unpacks on the fly) - XM - Digitracker saved XM's now work correctly (dont crash, and illegal stuff filtered out) - XM - envelope bug fixed. - 3D - divide by 0 bug fixed (when listener and emitter are at the same location) * API - Sample based functions like FSOUND_Sample_LoadWav etc take an index now, so you can specify an absolute sample manager index, FSOUND_FREE or FSOUND_UNMANAGED 18/06/99 2.22 rev 1 ------------------ - IT - really obscure crash bug fixed. 18/06/99 2.22 ------------------ - MOD - accidently broke mod support, fixed - S3M - fixed bug with bpm's smaller than 20h - Idle optimization back in 14/06/99 2.21 ------------------ * Fix included from 2.2rev1 (registry bug in fmod standalone player) * VC5 compatible import library included. vc6 only slipped into the last release. + IT 'envelope carry' support added. + MIXER - big increase in sound stability when harddisk is being accessed!! + LCC-WIN32 import library added. - IT - crash bugfix. (envelopes with loop end before loop start) - IT - volume bug (not hearing some samples at all) fixed in IT 'sample' mode. - MOD S3M XM IT - fixed pattern delay bug - DLL - size of DLL reduced by 12k! 08/05/99 2.2 rev 1 ------------------ - INTERFACE - fixed stupid registry bug which cause bad drivers to be initialized at start up. It caused possible crashing, 000 channels mixed to be displayed and no sound. 16/05/99 2.2 ------------ * FMOD is now a non beta release! * MIXER - Changing driver on the fly with FSOUND_Driver_Close and FSOUND_Driver_Init does not stop music playback any more. Everything continues playing as it had been. * API - Please read the new documentation on FSOUND_SetUpdateRate and FSOUND_SetMixAhead!!!! This should remove confusion about what they do and the issues of cpu usage, response time/latency and sound stability! + MIXER - FPU 32bit interpolating high quality mixer added! + API - FSOUND_Sample_SetLoopMode added + MOD - M!K! mod format supported. + INTERFACE - FMOD now saves sound settings in registry. - API - Safety checking put into FSOUND_SetOutput, FSOUND_SetDriver, FSOUND_SetMixer, FSOUND_SetUpdateRate and FSOUND_SetMixAhead. These functions will fail and return an error code if FMOD is active and playing sounds. You need to close FMOD down to call these functions, then reinitialize it. FSOUND_Driver_Close and FSOUND_Driver_Init will fail also if FSOUND has not been initialized with FSOUND_Init. - MIXER - Fixed rare crash bug when background disk access caused timer fluctuations. - MIXER - Fixed rare sound output instability caused by closing and opening fsound's driver code very quickly in succession. - MIXER - Fixed crash bug on bidi samples playing backwards, at volume 0, on the standard blendmode mixer only. (FPU Mixer also) - MIXER - Fixed horrible fuzzy quality bug with MU-Law compressed samples! - MIXER - Fixed standard blend mode mixer, which wasnt doing vol0 optimization on -muted- channels. - IT - fixed crash bug with mod that reference IT instruments beyond the number of instruments. - API - All 'interpolation functions' removed, if you want interpolation select the FPU interpolating mixer and every sound played will use full 32bit interpolation. (choosing which channels you want interpolated would end up being a pain. Most people just want everything interpolated or not) - CD - various CD player bugs fixed (random play, pause logic etc) - API - FSOUND_GetCurrentVU now reports correct values for MuLaw compressed samples. 09/05/99 2.19b -------------- * API release, this includes changes/fixes from 2.18 Update 1 (cdrom fixes) * Documentation updated * FMOD is now approaching a non beta state! (no bug reports are coming in) Beta status will most likely be removed in a few weeks (maybe version 2.20) * API - FSOUND_SetLatency has been renamed to FSOUND_SetUpdateRate, sorry for the name change but it is really the incorrect name for what this function does. + INTERFACE - Settings now saved in registry. New minimal CD Player panel! + CPU usage reduced during idle time. FMOD shuts itself down when nothing is happening. + API - FSOUND_Sample_Alloc now allows specification of default priority as well. + API - FSOUND_Sample_SetDefaults lets you set a sample's default freq,vol,pan & priority. + API - FSOUND_GetCurrentVU added, by request. (useful for vu bars/beat detection?) + API - FMUSIC_GetTime added, by request. Useful for exact music synchronization EVERY time. + API - FSOUND_GetCurrentSample added, allows you to get the currently playing sample for a particular channel, useful for comparisons.. ie to see if a particular sample is still playing on a particular channel. - API - FSOUND_SetAttributes removed. It was added before due to a request but I feel it is just API bloat and can be achieved through a macro. 28/04/99 2.18b Update 1 (player only) ------------------------------------ * FMOD - player only being updated here, not the API. API releases usually come on the weekend. (they take more time to prepare) + CD - Added continuous, looped and random buttons for playback method. - CD - All bugs fixed in CD player, all created by BUGS in WIN32 API functions. (mmsystem & mci commands- some work ok on NT, fail on 95). - Removed startup dialog box. Defaults to primary device and dsound. Hit config to change. (maybe use registry later) 25/04/99 2.18b -------------- * API - FSOUND_GetNumChannels renamed to FSOUND_GetMaxChannels + CD - New CD commands and support. FSOUND's CD system is a NON POLLING non intrusive system (unlike windows cd player), for smooth background performance. Tracks can now be looped, stopped and continued. + INTERFACE - new filters! Preverb filter(!) and Noise reduction. + INTERFACE - CD Player added. 17/04/99 2.17b -------------- * API - FSOUNDVC.LIB now VC5.0 compatible. - XM - Fixed crash on sample offset. - API - FMUSIC_SetPaused fixed. - MIXER - Fixed MULAW mixer. Remember MULAW only works when a song has 16bit samples (it converts them to mulaw), otherwise it isn't any different. It only works for the blend mode mixer as well. The MMX mixers are fast enough not to need mulaw. 11/04/99 2.16b -------------- + API - DSP Engine implemented and added! New functions: FSOUND_DSP_Create,FSOUND_DSP_Free,FSOUND_DSP_SetPriority, FSOUND_DSP_GetPriority,FSOUND_DSP_SetActive, FSOUND_DSP_GetActive,FSOUND_DSP_GetClearUnit, FSOUND_DSP_GetSFXUnit,FSOUND_DSP_GetMusicUnit FSOUND_DSP_GetClipAndCopyUnit. See FSOUND_DSP_Create for documentation on this new feature. + API - Added FSOUND_MixChannel - now you have direct access to FSOUND's optimized mixers! - MOD, S3M, XM, IT - Fixed loader bug introduced in 2.15! (to do with load from memory system.) - XM - Found and fixed a sample offset bug introduced a few versions ago, with 16bit samples. - API - Echo engine and functions removed - DSP engine is now to be used. - API - Fixed bug in FMUSIC_SetOrder. - API - Fixed bug in FSOUND_GetMixer, it was returning FSOUND_MIXER_AUTODETECT if that was used in FSOUND_SetMixer, instead of the actual mixer it was using. - INTERFACE - loader bug fixed. 28/03/99 2.15b -------------- + API - Watcom now supported. Watcom users link in the FSOUNDW.LIB import library. + API - Added FMUSIC_LoadSongMemory, now load mod/s3m/xm/it files from memory handles / resources. + API - Added FSOUND_LoadWavMemory, now load wav files from memory handles / resources. - API - Fixed bug in FSOUND_Sample_Alloc which allocated samples with length = 0, and hence no sound came out when played. - SAMPLE - fixed bugs in fmod sample code. 21/03/99 2.14b -------------- * FSOUND / FMUSIC is now a DLL. The reason is to use a dll is to make it easier to link on different compilers, and it really is for aesthetic reasons only to have it as a .lib. (ie 1 exe releases) and im not interested. * Examples cleaned up, they dont specify unused .libs any more. - WAVEOUT - bugfixed, works on NT now, and now actually uses setmixahead settings. You will have to use large mixaheads (80-100 and higher on my tests) for WaveOut, or the sound will break up. There is nothing you can do about this. - DSOUND - works on NT now (DX3). This is the same as waveout (dsound3 for nt is a waveout wrapper). You will have to use large mixahead values (80-100ms and higher on my tests), or it may break up. + API - FSOUND_SetAttributes added + API - FSOUND_PlaySoundAttrib added 14/03/99 2.13b -------------- * Programmers API finally released! see http://www.zip.com.au/~fl for more details! + MIXER Stereo sample mixers added. Old way of spawning 2 new channels is gone.. Under MMX a stereo channel is actually faster than mono! + S3M, XM, IT - Zxx callback now supported. Programmers can set a callback function for whenever the Z effect is issued from a song, for synchronizing effects etc. .MOD is not supported. + STREAMERS - Streamer API Added for playing very large files. Currently only supports raw, but mulaw, adpcm and mp3 streamers are coming. + MOD, S3M, XM, IT - Master volume added to API. This is a true scalar instead of just modifying the song's global volume like before (ie the song might have adjusted the global volume after you set it) + INTERFACE - Master volume slider added. - MIXER - Fixed extremely rare crash bug. - MIXER - volumes were ever so slightly out, ie a channel panned full right still had about 0.4% (not much) of the sound playing in the left channel instead of 0% as it should have. - MISC - many small fixes. 04/02/99 2.12b -------------- - Fixed linear freq problem introduced due to linear freq optimization, I just removed it now for accuracy sake. * a little bit more stable? 02/02/99 2.11b -------------- - Fixed BPM problem on all formats. Now loop songs should play ok. - Fixed sample offset on all formats (oops sorry sample offset was disabled on mod/s3m/xm since 2.06 accidentaly! noone seemed to notice hahaha) 31/01/99 2.10b -------------- - Minor Direct Sound bugs fixed. 30/01/99 2.09b -------------- - IT bug fixed with instrument numbers and no note. (most formats dont retrigger the note in this case, but IT does if the sample has finished playing, and not before.) - S3M Bug found in loader. (popped up only due to impulse tracker saved s3ms). - IT fixed porta wihout any previous note.. porta on on a channel that has no channel playing will trigger a new note. - DRIVER direct sound should work more reliably on NT using directX. - INTERFACE fixed song list box bug. Delete happily now without problems. - INTERFACE config box now remembers what you last set when you hit config, and wont change any settings if you hit 'cancel' (it used to select nosound before) - DRIVER code now detects incompatible cpu's and exits with an error instead of crashing? - XM/IT replay sped up. Linear frequencies processed a lot faster now. 26/01/99 2.08b -------------- + DRIVERS added capability to switch drivers on the fly. Use the 'Config' Button on the interface to change output devices, soundcards, mixing rates or mixing routines. + MIXER added Mu-Law support! This is only for NON-MMX mixing, and improves the speed of 16bit sample mixing dramatically, with only a small loss in sample quality. (simulates 12bit accuracy) - MIXER fixed ugly bug (crashes/noise) with 8bit BIDI looping samples on standard blend mode mixer. 24/01/99 2.07b -------------- + IT added volume byte portamentos + IT added S6x - Pattern delay by ticks + IT added volume byte vibrato + IT added sample vibrato - IT fixed effect S73, S74, S75, S76, S77, S78. These commands are meant to alter the behaviour of an instrument, except i was permanently modifying the instrument instead of just altering it for the note currently being played!! oops.. - IT / XM - turn off envelopes that have less than 2 points. (apparently sometimes files can have this) - IT fixed Hxy Kxy Uxy (vibrato/finevibrato).. if Hxy is followed by U00 then it continues to be a normal vibrato, even if it says fine vibrato.. same for Uxy followed by H00.. it continues with a fine vibrato even if it says normal vibrato.. The y part of the command needs to have something in it to change vibrato types. (dumb impulse tracker bug) - IT fixed volume slide bug in Kxy Lxy - IT foreground / background channel logic is more accuate now with NNA's and effect commands. - MOD, S3M, XM, IT - now checks internal signatures for file verification as some people were trying to load mod's etc that were renamed to s3m! yeah yeah thanks a lot otto ;) - IT fixed S00 - any Sxy command gets remembered and replayed if it is followed with S00.. (crono - not just SDx and SCx like you said) - DSOUND fixed init/shutdown code to be cleaner. 20/01/99 2.06b -------------- - XM fixed BPM issue.. seems FT2's timer is a bit faster than it really should be.. (roughly 2bpm) mega-sample-loop songs sound ok now. - IT another pattern loader crash bug fixed (should be the last) - IT fixed Gxx bug (portamento).. IT forgets it porta target after it reaches it. (TheHornet again) - IT fixed Oxy (sample Offset) bug 18/01/99 2.05b -------------- * MIXER Using large latency again just for fmod.exe with dsound, to improve stability (im working on it) - IT Fixed signed/unsigned sample detection in loader - IT Disabled pitch envelopes for IT's using IIR filters so they wont sound awful. - XM Fixed crash bug in loader. 17/01/99 2.04b -------------- * Mixer buffer management totally rewritten, might be a *tiny* bit slower (becuase of caching), but it is a lot more flexible and stable. Built in preparation of the DSP plugin API. * Halved size of both MMX mixer routines (to do with surround) * API ready to use. Now at beta test stage * Thanks to TheHornet for his doc on it 'nuances' that were too subtle to find through normal testing. (bugs found with (***)) * New more consistant mixer thread management. + Volume 0 optimizations! Average mods will now use about 30% less cpu time (depends on the song) + Standard blend mode mixer sped up for 8bit samples + Windows Multimedia WaveOut support added. At the moment it works well but the latency is too long for game sfx. It is more stable than the direct sound driver (less garbling / breakups) + .WAV sample support added. + Stereo sample support added. + IT added linear frequencies. + IT added panbrello + IT added support for 'compatible Gxx' in IT's options - MIXER Fixed volume 0 optimization hang bug. - IT fixed effected E/F/G to use the same memory. - IT fixed SDx delay note bug (SD0 == SD1) (***) - IT fixed SCx note cut bug (SC0 == SC1) (***) - IT fixed Qxy retrig (now retrigs across multiple notes like IT.. other formats ignore retrig if it is higher than the speed of the song) - IT fixed Gxx / Lxy (portamento). was 2x too slow. - IT fixed Vibrato for 'old effects'.. with old effects it is 2x deeper and does not get updated on tick 0. - MIXER OOPS! i had '#define ROLLED' left uncommented in my P6 MMX mixer since version 2.0 or so!! it wasnt using unrolled loops. Now it is roughly 1.6 times faster! (from 5% to 3% cpu usage on a p2-266 for mixing 32channels at once) 14/11/98 2.03b -------------- + Added stability to mixer, removed 150ms crap from 2.02 07/11/98 2.02b -------------- * ALL players use a new dynamic channel allocation system - consider MOD, S3M & XM under beta again. (MAY have broken something!) * MIXER in an attempt for added stability, for this standalone player, a different approach is used.. it has a huge latency (150ms) and takes a bit more cpu time, but shouldnt break up as much .. for the game library the old method still stands. (150ms is way too long to wait for a sound effect to trigger.. so fmod uses 50ms latency for games etc) + IT Added NNA's + IT Added DCT/DCA's. + MIXER Added echo post effect.. hardcoded 50ms echo for now. + IT Added Pan Envelope + IT Added all volume column effects except for porta commands & vibrato + INTERFACE Added drag and drop. Drag tunes from explorer into the player to load + INTERFACE also command line fileloading (ie associate the exe in explorer with mod,s3m,xm,it then just doubleclick files to load them) + IT Added most other effects - ALL Fixed some crashing for songs that specify sample id's that dont exist. - XM & IT Fixed Envelope bug - loops were playing 1 tick too long :) - S3M fixed arpeggio bug causing 0 frequencies (divide by 0) - IT fixed pattern break and pattern jump .. both params are hex unlike all other formats. - IT fixed arpeggio depth - IT enabled end of song marker.. it was crashing on this b4 - INTERFACE Fixed memory leak.. it would slowly leak memory in realtime until windows ran out of resources and crashed! :) - IT fixed porta bugs.. oops i was portamento'ing 2x too fast - IT fixed instrument bug. it was updating all nna channel's envelopes etc, using only the most recent nna's instrument definition, instead of the instrument that should have been associated with each individual nna channel. - IT fixed set pan (Xxx) bug - IT fixed invalid pattern bug with patterns defined that are larger than the number of patterns specified in the file. - IT fixed vibrato (Hxy) bug - IT fixed big NNA bug.. i was performing NNA's based on the new instrument's nna flags instead of the one it was cutting off! - IT fixed the past nna s7x effects.. now the number of channels mixed on the interface matches exactly that of impulse trackers! 20/10/98 2.01b -------------- + IT Added preliminary volume envelope support (no sustain loops) + IT Added channel volume slide + IT Added noteoff & notecut (not the effect, the note type) 19/10/98 2.00b -------------- * First private release Version, includes MOD, S3M and XM and IT support. New software mixers, win32 only. Removed 669,FAR & MTM support, old interface is gone, new win32 interface.. jeezus has it been 3 years? im getting too old for this shit:) * IT Support is REALLY basic.. roughly 30% done. - XM Fixed bug with envelope loopend. /|\ | | | | 30/11/95 1.06 ------------- * Released with FMODDOC 2, including full source code + Totally new fast scrolling interface, some keys have changed. + 32channel .MOD support added. (ie dope.mod type, etc) + 9 octaves supported now (C-0,B-8), including 7 octaves .MOD + No more 64kb sample limit (4gig sample on a GUS? :) + MTM support added + 669 support added - what an awful format! + extended 669 support added - just as bad :) + 16 bit support added (err for mtm? ahh well xm will come) + Clipping samples at loopend points to save GUS memory + S3M support added - Bugfix where all music came out in left channel on SOME cards (none I have heard:). Thanks to Brad Thomas for the fix. - 2 GUS bugs fixed (reported wrong dram size & dram corruption) * now checks if the samples are too big for the card. - Voices now play almost simultaneously instead of 1 after the other like before + Added Technicality-Index (tm) meter! Truly a cool feature. + Knocked 52% of DRAM upload time! YES it is *2* times faster!! (eg when.s3m even loads *3* seconds faster than cmod does) * - FIXED at last. FMOD will now NOT crash (fingers crossed :) - removed clicking from looping samples - Vibrato fixed properly this time and is 100%. * Calculated new volume table. Not so noisy. Less distortion. + WildCard Support added! + S3M Stereo Control effect SAx added + Solo Channel feature added and many other muting features - Fixed S3M retrig bug + Vibrato/Tremolo WaveControl finished properly + Keyboard LED flashing added! Lights flash to channels 1-3. - tempo bug fixed, timing system changed so BPM can drop to 24 + FAR support added * Sample loader redone and >64kb bug fixed, also pattern storage method changed. * Panning changed, now values from 0 to 255 to suit FT2. - Pattern Loop bug fixed, I didnt know pattern loop stored seperate values for each channel. - pattern jump + pattern break bug fixed now all those weird backwards tunes work RIGHT. + Added S3M's Fast Volume Slide bug, err feature :) ++ NOW PMODE! Load any sized tune you like now and still have heaps of memory left + NEW tracker screen. Watch pattern data like a tracker - Keyboard LED flashing removed, caused crashes on some peoples computers.. sigh it was rather cool. + NEW technical info screen. Watch a lot of meaningless info appear on the screen. Good for developers to check against. - .MOD bug fixed, now those extremely high and low octaves supported PROPERLY.. (unlike some cMOD players;) - sample offset bug fixed. + Dynamic interface installed, now any screen can be called up from any other screen, instead of just from the main screen like before. * Error handling changed for a lot better stability. + File Selector included for all those losers who wanted it :) + Added effect Ixy - Tremor - perfect I think unlike other players.. compared against Scream Tracker 3 - Fixed >64kb sample loading bug - was causing crashes - Fixed MTM loader bug after about 6 hours of tearing out hair * File Selector now accessable while song is still playing, press escape to return to the main interface. - sample uploader recoded, fixed. 16 bit samples now load a lot better (this is actually from 1.07 which isnt released yet and probably wont be for a while ;) - a zillion little other bugs fixed. 13/6/95 1.05 ------------- - GUS looping clicks removed. - Mute bug fixed. Wouldnt unmute unused channles. 10/6/95 1.04 ------------- - fixed another crash bug + Added cool new pan cycling effect! Hit 'c' to try it. 7/6/95 1.03 ------------- - Fixed interface bug (was printing ^g's in sample names) + Added effect 8xy (Panning) - Fixed crash bug maybe.. I think I did, people complained of the interface crashing.. I've never seen it crash but I found I was mixing 'new' and 'malloc'.. fixed. + Added effect 7xy (Tremolo) - woopee ;) + Added mute channels + Added panning keys '(' and ')' to set default panning. 30/5/95 1.02 ------------- * major internal storage changes! + More memory in dos shell! around 30kb on average sized tunes. * A lot faster. - Pattern break fixed. Tested on backward.mod by FireLight - Now mixes at 44.1khz like it should instead of 30khz..oops :} + Added effect EEx (Pattern Delay). + Added effect E6x (Pattern Loop). - Retrig fixed now 100% protracker. 5/4/95 1.01 ------------- - fixed crash bug / increased speed by not calculating unused channels. (I don't think i released this version though) 6/3/95 1.00 ------------- * FIRST PUBLIC RELEASE (In FireStorm 2 Music Disk) - Vibrato bug fixed, now works I think :). * Interface Completely changed looks much nicer now + speed of interface increased greatly ==============================================================================