From eafb8fcea925a2bfa82dd712d67736ace939e48d Mon Sep 17 00:00:00 2001 From: AdventureT Date: Sun, 10 Dec 2023 08:24:09 +0100 Subject: [PATCH] Replaced FMOD with JPOG's version of FMOD (3.61) Fixed compile error --- OpenJPOG/premake5.lua | 7 + Toshi/Source/TKernel/TLString.cpp | 2 +- Toshi/vendor/fmod/include/fmod.h | 1090 ++++ Toshi/vendor/fmod/include/fmod/core/fmod.h | 667 -- Toshi/vendor/fmod/include/fmod/core/fmod.hpp | 606 -- .../fmod/include/fmod/core/fmod_codec.h | 136 - .../fmod/include/fmod/core/fmod_common.h | 883 --- .../vendor/fmod/include/fmod/core/fmod_dsp.h | 421 -- .../fmod/include/fmod/core/fmod_dsp_effects.h | 577 -- .../fmod/include/fmod/core/fmod_errors.h | 110 - .../fmod/include/fmod/core/fmod_output.h | 122 - .../vendor/fmod/include/fmod/fsbank/fsbank.h | 156 - .../fmod/include/fmod/fsbank/fsbank_errors.h | 36 - Toshi/vendor/fmod/include/fmod/studio/fmod.h | 667 -- .../vendor/fmod/include/fmod/studio/fmod.hpp | 606 -- .../fmod/include/fmod/studio/fmod_codec.h | 136 - .../fmod/include/fmod/studio/fmod_common.h | 883 --- .../fmod/include/fmod/studio/fmod_dsp.h | 421 -- .../include/fmod/studio/fmod_dsp_effects.h | 577 -- .../fmod/include/fmod/studio/fmod_errors.h | 110 - .../fmod/include/fmod/studio/fmod_output.h | 122 - .../fmod/include/fmod/studio/fmod_studio.h | 248 - .../fmod/include/fmod/studio/fmod_studio.hpp | 402 -- .../include/fmod/studio/fmod_studio_common.h | 336 - Toshi/vendor/fmod/include/fmod_errors.h | 32 + Toshi/vendor/fmod/include/fmoddyn.h | 463 ++ Toshi/vendor/fmod/revision.txt | 5585 ----------------- 27 files changed, 1593 insertions(+), 13808 deletions(-) create mode 100644 Toshi/vendor/fmod/include/fmod.h delete mode 100644 Toshi/vendor/fmod/include/fmod/core/fmod.h delete mode 100644 Toshi/vendor/fmod/include/fmod/core/fmod.hpp delete mode 100644 Toshi/vendor/fmod/include/fmod/core/fmod_codec.h delete mode 100644 Toshi/vendor/fmod/include/fmod/core/fmod_common.h delete mode 100644 Toshi/vendor/fmod/include/fmod/core/fmod_dsp.h delete mode 100644 Toshi/vendor/fmod/include/fmod/core/fmod_dsp_effects.h delete mode 100644 Toshi/vendor/fmod/include/fmod/core/fmod_errors.h delete mode 100644 Toshi/vendor/fmod/include/fmod/core/fmod_output.h delete mode 100644 Toshi/vendor/fmod/include/fmod/fsbank/fsbank.h delete mode 100644 Toshi/vendor/fmod/include/fmod/fsbank/fsbank_errors.h delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod.h delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod.hpp delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod_codec.h delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod_common.h delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod_dsp.h delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod_dsp_effects.h delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod_errors.h delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod_output.h delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod_studio.h delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod_studio.hpp delete mode 100644 Toshi/vendor/fmod/include/fmod/studio/fmod_studio_common.h create mode 100644 Toshi/vendor/fmod/include/fmod_errors.h create mode 100644 Toshi/vendor/fmod/include/fmoddyn.h delete mode 100644 Toshi/vendor/fmod/revision.txt diff --git a/OpenJPOG/premake5.lua b/OpenJPOG/premake5.lua index 78f162d..de292b4 100644 --- a/OpenJPOG/premake5.lua +++ b/OpenJPOG/premake5.lua @@ -20,6 +20,7 @@ project ("OpenJPOG") includedirs { "%{wks.location}/Toshi/Include", + "%{IncludeDir.fmod}" } defines @@ -27,10 +28,16 @@ project ("OpenJPOG") "TOSHI_USER_CLIENT" } + libdirs + { + "%{LibDir.fmod}" + } + postbuildcommands { "{COPY} \"%{wks.location}bin/" .. outputdir .. "/TKernelInterface/TKernelInterface.dll\" \"%{wks.location}bin/" .. outputdir .. "/%{prj.name}\"", "{COPY} \"%{wks.location}bin/" .. outputdir .. "/TApplication/TApplication.dll\" \"%{wks.location}bin/" .. outputdir .. "/%{prj.name}\"", + --"{COPY} \"%{wks.location}Toshi/vendor/fmod/fmod.dll\" \"%{wks.location}bin/" .. outputdir .. "/%{prj.name}\"", } filter "system:windows" diff --git a/Toshi/Source/TKernel/TLString.cpp b/Toshi/Source/TKernel/TLString.cpp index 8544cac..c4dffd3 100644 --- a/Toshi/Source/TKernel/TLString.cpp +++ b/Toshi/Source/TKernel/TLString.cpp @@ -2,4 +2,4 @@ TOSHI_NAMESPACE_USING -TFreeList TLocalisedString::m_oFreelist = TFreeList(sizeof(TLocalisedString), 0, 2000, (char*)"") \ No newline at end of file +TFreeList TLocalisedString::m_oFreelist = TFreeList(sizeof(TLocalisedString), 0, 2000, (char*)""); \ No newline at end of file diff --git a/Toshi/vendor/fmod/include/fmod.h b/Toshi/vendor/fmod/include/fmod.h new file mode 100644 index 0000000..5e45f0a --- /dev/null +++ b/Toshi/vendor/fmod/include/fmod.h @@ -0,0 +1,1090 @@ +/* ========================================================================================== */ +/* FMOD Main header file. Copyright (c), Firelight Technologies Pty, Ltd 1999-2002. */ +/* ========================================================================================== */ + +#ifndef _FMOD_H_ +#define _FMOD_H_ + +/* ========================================================================================== */ +/* DEFINITIONS */ +/* ========================================================================================== */ + +#if (!defined(WIN32) && !defined(__WIN32__) && !defined(_WIN32_WCE)) || (defined(__GNUC__) && defined(WIN32)) + #ifndef _cdecl + #define _cdecl + #endif + #ifndef _stdcall + #define _stdcall + #endif +#endif + +#define F_API _stdcall +#define F_CALLBACKAPI _cdecl + +#ifdef DLL_EXPORTS + #define DLL_API __declspec(dllexport) +#else + #if defined(__LCC__) || defined(__MINGW32__) || defined(__CYGWIN32__) + #define DLL_API F_API + #else + #define DLL_API + #endif /* __LCC__ || __MINGW32__ || __CYGWIN32__ */ +#endif /* DLL_EXPORTS */ + +#define FMOD_VERSION 3.61f + +/* + FMOD defined types +*/ +typedef struct FSOUND_SAMPLE FSOUND_SAMPLE; +typedef struct FSOUND_STREAM FSOUND_STREAM; +typedef struct FSOUND_DSPUNIT FSOUND_DSPUNIT; +typedef struct FMUSIC_MODULE FMUSIC_MODULE; + +/* + Callback types +*/ +typedef void * (F_CALLBACKAPI *FSOUND_DSPCALLBACK) (void *originalbuffer, void *newbuffer, int length, int param); +typedef signed char (F_CALLBACKAPI *FSOUND_STREAMCALLBACK) (FSOUND_STREAM *stream, void *buff, int len, int param); +typedef void (F_CALLBACKAPI *FMUSIC_CALLBACK) (FMUSIC_MODULE *mod, unsigned char param); + +typedef unsigned int(F_CALLBACKAPI *FSOUND_OPENCALLBACK) (const char *name); +typedef void (F_CALLBACKAPI *FSOUND_CLOSECALLBACK) (unsigned int handle); +typedef int (F_CALLBACKAPI *FSOUND_READCALLBACK) (void *buffer, int size, unsigned int handle); +typedef int (F_CALLBACKAPI *FSOUND_SEEKCALLBACK) (unsigned int handle, int pos, signed char mode); +typedef int (F_CALLBACKAPI *FSOUND_TELLCALLBACK) (unsigned int handle); + +typedef void * (F_CALLBACKAPI *FSOUND_ALLOCCALLBACK) (unsigned int size); +typedef void * (F_CALLBACKAPI *FSOUND_REALLOCCALLBACK)(void *ptr, unsigned int size); +typedef void (F_CALLBACKAPI *FSOUND_FREECALLBACK) (void *ptr); + + +/* +[ENUM] +[ + [DESCRIPTION] + On failure of commands in FMOD, use FSOUND_GetError to attain what happened. + + [SEE_ALSO] + FSOUND_GetError +] +*/ +enum FMOD_ERRORS +{ + FMOD_ERR_NONE, /* No errors */ + FMOD_ERR_BUSY, /* Cannot call this command after FSOUND_Init. Call FSOUND_Close first. */ + FMOD_ERR_UNINITIALIZED, /* This command failed because FSOUND_Init or FSOUND_SetOutput was not called */ + FMOD_ERR_INIT, /* Error initializing output device. */ + FMOD_ERR_ALLOCATED, /* Error initializing output device, but more specifically, the output device is already in use and cannot be reused. */ + FMOD_ERR_PLAY, /* Playing the sound failed. */ + FMOD_ERR_OUTPUT_FORMAT, /* Soundcard does not support the features needed for this soundsystem (16bit stereo output) */ + FMOD_ERR_COOPERATIVELEVEL, /* Error setting cooperative level for hardware. */ + FMOD_ERR_CREATEBUFFER, /* Error creating hardware sound buffer. */ + FMOD_ERR_FILE_NOTFOUND, /* File not found */ + FMOD_ERR_FILE_FORMAT, /* Unknown file format */ + FMOD_ERR_FILE_BAD, /* Error loading file */ + FMOD_ERR_MEMORY, /* Not enough memory or resources */ + FMOD_ERR_VERSION, /* The version number of this file format is not supported */ + FMOD_ERR_INVALID_PARAM, /* An invalid parameter was passed to this function */ + FMOD_ERR_NO_EAX, /* Tried to use an EAX command on a non EAX enabled channel or output. */ + FMOD_ERR_CHANNEL_ALLOC, /* Failed to allocate a new channel */ + FMOD_ERR_RECORD, /* Recording is not supported on this machine */ + FMOD_ERR_MEDIAPLAYER, /* Windows Media Player not installed so cannot play wma or use internet streaming. */ + FMOD_ERR_CDDEVICE /* An error occured trying to open the specified CD device */ +}; + + +/* +[ENUM] +[ + [DESCRIPTION] + These output types are used with FSOUND_SetOutput, to choose which output driver to use. + + FSOUND_OUTPUT_DSOUND will not support hardware 3d acceleration if the sound card driver + does not support DirectX 6 Voice Manager Extensions. + + FSOUND_OUTPUT_WINMM is recommended for NT and CE. + + [SEE_ALSO] + FSOUND_SetOutput + FSOUND_GetOutput +] +*/ +enum FSOUND_OUTPUTTYPES +{ + FSOUND_OUTPUT_NOSOUND, /* NoSound driver, all calls to this succeed but do nothing. */ + FSOUND_OUTPUT_WINMM, /* Windows Multimedia driver. */ + FSOUND_OUTPUT_DSOUND, /* DirectSound driver. You need this to get EAX2 or EAX3 support, or FX api support. */ + FSOUND_OUTPUT_A3D, /* A3D driver. */ + + FSOUND_OUTPUT_OSS, /* Linux/Unix OSS (Open Sound System) driver, i.e. the kernel sound drivers. */ + FSOUND_OUTPUT_ESD, /* Linux/Unix ESD (Enlightment Sound Daemon) driver. */ + FSOUND_OUTPUT_ALSA, /* Linux Alsa driver. */ + + FSOUND_OUTPUT_ASIO, /* Low latency ASIO driver */ + FSOUND_OUTPUT_XBOX, /* Xbox driver */ + FSOUND_OUTPUT_PS2, /* PlayStation 2 driver */ + FSOUND_OUTPUT_MAC, /* Mac SoundManager driver */ + FSOUND_OUTPUT_GC, /* Gamecube driver */ + + FSOUND_OUTPUT_NOSOUND_NONREALTIME /* This is the same as nosound, but the sound generation is driven by FSOUND_Update */ +}; + + +/* +[ENUM] +[ + [DESCRIPTION] + These mixer types are used with FSOUND_SetMixer, to choose which mixer to use, or to act + upon for other reasons using FSOUND_GetMixer. + It is not nescessary to set the mixer. FMOD will autodetect the best mixer for you. + + [SEE_ALSO] + FSOUND_SetMixer + FSOUND_GetMixer +] +*/ +enum FSOUND_MIXERTYPES +{ + FSOUND_MIXER_AUTODETECT, /* CE/PS2/GC Only - Non interpolating/low quality mixer. */ + FSOUND_MIXER_BLENDMODE, /* Removed / obsolete. */ + FSOUND_MIXER_MMXP5, /* Removed / obsolete. */ + FSOUND_MIXER_MMXP6, /* Removed / obsolete. */ + + FSOUND_MIXER_QUALITY_AUTODETECT,/* All platforms - Autodetect the fastest quality mixer based on your cpu. */ + FSOUND_MIXER_QUALITY_FPU, /* Win32/Linux only - Interpolating/volume ramping FPU mixer. */ + FSOUND_MIXER_QUALITY_MMXP5, /* Win32/Linux only - Interpolating/volume ramping P5 MMX mixer. */ + FSOUND_MIXER_QUALITY_MMXP6, /* Win32/Linux only - Interpolating/volume ramping ppro+ MMX mixer. */ + + FSOUND_MIXER_MONO, /* CE/PS2/GC only - MONO non interpolating/low quality mixer. For speed*/ + FSOUND_MIXER_QUALITY_MONO, /* CE/PS2/GC only - MONO Interpolating mixer. For speed */ + + FSOUND_MIXER_MAX +}; + + +/* +[ENUM] +[ + [DESCRIPTION] + These definitions describe the type of song being played. + + [SEE_ALSO] + FMUSIC_GetType +] +*/ +enum FMUSIC_TYPES +{ + FMUSIC_TYPE_NONE, + FMUSIC_TYPE_MOD, /* Protracker / Fasttracker */ + FMUSIC_TYPE_S3M, /* ScreamTracker 3 */ + FMUSIC_TYPE_XM, /* FastTracker 2 */ + FMUSIC_TYPE_IT, /* Impulse Tracker. */ + FMUSIC_TYPE_MIDI /* MIDI file */ +}; + + +/* +[DEFINE_START] +[ + [NAME] + FSOUND_DSP_PRIORITIES + + [DESCRIPTION] + These default priorities are used by FMOD internal system DSP units. They describe the + position of the DSP chain, and the order of how audio processing is executed. + You can actually through the use of FSOUND_DSP_GetxxxUnit (where xxx is the name of the DSP + unit), disable or even change the priority of a DSP unit. + + [SEE_ALSO] + FSOUND_DSP_Create + FSOUND_DSP_SetPriority + FSOUND_DSP_GetSpectrum +] +*/ +#define FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT 0 /* DSP CLEAR unit - done first */ +#define FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT 100 /* DSP SFX unit - done second */ +#define FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT 200 /* DSP MUSIC unit - done third */ +#define FSOUND_DSP_DEFAULTPRIORITY_USER 300 /* User priority, use this as reference */ +#define FSOUND_DSP_DEFAULTPRIORITY_FFTUNIT 900 /* This reads data for FSOUND_DSP_GetSpectrum, so it comes after user units */ +#define FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT 1000 /* DSP CLIP AND COPY unit - last */ +/* [DEFINE_END] */ + + +/* +[DEFINE_START] +[ + [NAME] + FSOUND_CAPS + + [DESCRIPTION] + Driver description bitfields. Use FSOUND_Driver_GetCaps to determine if a driver enumerated + has the settings you are after. The enumerated driver depends on the output mode, see + FSOUND_OUTPUTTYPES + + [SEE_ALSO] + FSOUND_GetDriverCaps + FSOUND_OUTPUTTYPES +] +*/ +#define FSOUND_CAPS_HARDWARE 0x1 /* This driver supports hardware accelerated 3d sound. */ +#define FSOUND_CAPS_EAX2 0x2 /* This driver supports EAX 2 reverb */ +#define FSOUND_CAPS_EAX3 0x10 /* This driver supports EAX 3 reverb */ +/* [DEFINE_END] */ + + +/* +[DEFINE_START] +[ + [NAME] + FSOUND_MODES + + [DESCRIPTION] + Sample description bitfields, OR them together for loading and describing samples. + NOTE. If the file format being loaded already has a defined format, such as WAV or MP3, then + trying to override the pre-defined format with a new set of format flags will not work. For + example, an 8 bit WAV file will not load as 16bit if you specify FSOUND_16BITS. It will just + ignore the flag and go ahead loading it as 8bits. For these type of formats the only flags + you can specify that will really alter the behaviour of how it is loaded, are the following. + + FSOUND_LOOP_OFF + FSOUND_LOOP_NORMAL + FSOUND_LOOP_BIDI + FSOUND_HW3D + FSOUND_2D + FSOUND_STREAMABLE + FSOUND_LOADMEMORY + FSOUND_LOADRAW + FSOUND_MPEGACCURATE + + See flag descriptions for what these do. +] +*/ +#define FSOUND_LOOP_OFF 0x00000001 /* For non looping samples. */ +#define FSOUND_LOOP_NORMAL 0x00000002 /* For forward looping samples. */ +#define FSOUND_LOOP_BIDI 0x00000004 /* For bidirectional looping samples. (no effect if in hardware). */ +#define FSOUND_8BITS 0x00000008 /* For 8 bit samples. */ +#define FSOUND_16BITS 0x00000010 /* For 16 bit samples. */ +#define FSOUND_MONO 0x00000020 /* For mono samples. */ +#define FSOUND_STEREO 0x00000040 /* For stereo samples. */ +#define FSOUND_UNSIGNED 0x00000080 /* For user created source data containing unsigned samples. */ +#define FSOUND_SIGNED 0x00000100 /* For user created source data containing signed data. */ +#define FSOUND_DELTA 0x00000200 /* For user created source data stored as delta values. */ +#define FSOUND_IT214 0x00000400 /* For user created source data stored using IT214 compression. */ +#define FSOUND_IT215 0x00000800 /* For user created source data stored using IT215 compression. */ +#define FSOUND_HW3D 0x00001000 /* Attempts to make samples use 3d hardware acceleration. (if the card supports it) */ +#define FSOUND_2D 0x00002000 /* Tells software (not hardware) based sample not to be included in 3d processing. */ +#define FSOUND_STREAMABLE 0x00004000 /* For a streamimg sound where you feed the data to it. */ +#define FSOUND_LOADMEMORY 0x00008000 /* "name" will be interpreted as a pointer to data for streaming and samples. */ +#define FSOUND_LOADRAW 0x00010000 /* Will ignore file format and treat as raw pcm. */ +#define FSOUND_MPEGACCURATE 0x00020000 /* For FSOUND_Stream_OpenFile - for accurate FSOUND_Stream_GetLengthMs/FSOUND_Stream_SetTime. WARNING, see FSOUND_Stream_OpenFile for inital opening time performance issues. */ +#define FSOUND_FORCEMONO 0x00040000 /* For forcing stereo streams and samples to be mono - needed if using FSOUND_HW3D and stereo data - incurs a small speed hit for streams */ +#define FSOUND_HW2D 0x00080000 /* 2D hardware sounds. allows hardware specific effects */ +#define FSOUND_ENABLEFX 0x00100000 /* Allows DX8 FX to be played back on a sound. Requires DirectX 8 - Note these sounds cannot be played more than once, be 8 bit, be less than a certain size, or have a changing frequency */ +#define FSOUND_MPEGHALFRATE 0x00200000 /* For FMODCE only - decodes mpeg streams using a lower quality decode, but faster execution */ +#define FSOUND_XADPCM 0x00400000 /* For XBOX only - Contents are compressed as XADPCM */ +#define FSOUND_VAG 0x00800000 /* For PS2 only - Contents are compressed as Sony VAG format */ +#define FSOUND_NONBLOCKING 0x01000000 /* For FSOUND_Stream_OpenFile - Causes stream to open in the background and not block the foreground app - stream functions only work when ready. Poll any stream function determine when it IS ready. */ +#define FSOUND_GCADPCM 0x02000000 /* For Gamecube only - Contents are compressed as Gamecube DSP-ADPCM format */ + +#define FSOUND_NORMAL (FSOUND_16BITS | FSOUND_SIGNED | FSOUND_MONO) +/* [DEFINE_END] */ + + + +/* +[DEFINE_START] +[ + [NAME] + FSOUND_CDPLAYMODES + + [DESCRIPTION] + Playback method for a CD Audio track, with FSOUND_CD_SetPlayMode + + [SEE_ALSO] + FSOUND_CD_SetPlayMode + FSOUND_CD_Play +] +*/ +#define FSOUND_CD_PLAYCONTINUOUS 0 /* Starts from the current track and plays to end of CD. */ +#define FSOUND_CD_PLAYONCE 1 /* Plays the specified track then stops. */ +#define FSOUND_CD_PLAYLOOPED 2 /* Plays the specified track looped, forever until stopped manually. */ +#define FSOUND_CD_PLAYRANDOM 3 /* Plays tracks in random order */ +/* [DEFINE_END] */ + + +/* +[DEFINE_START] +[ + [NAME] + FSOUND_MISC_VALUES + + [DESCRIPTION] + Miscellaneous values for FMOD functions. + + [SEE_ALSO] + FSOUND_PlaySound + FSOUND_PlaySoundEx + FSOUND_Sample_Alloc + FSOUND_Sample_Load + FSOUND_SetPan +] +*/ +#define FSOUND_FREE -1 /* value to play on any free channel, or to allocate a sample in a free sample slot. */ +#define FSOUND_UNMANAGED -2 /* value to allocate a sample that is NOT managed by FSOUND or placed in a sample slot. */ +#define FSOUND_ALL -3 /* for a channel index , this flag will affect ALL channels available! Not supported by every function. */ +#define FSOUND_STEREOPAN -1 /* value for FSOUND_SetPan so that stereo sounds are not played at half volume. See FSOUND_SetPan for more on this. */ +#define FSOUND_SYSTEMCHANNEL -1000 /* special 'channel' ID for all channel based functions that want to alter the global FSOUND software mixing output channel */ +#define FSOUND_SYSTEMSAMPLE -1000 /* special 'sample' ID for all sample based functions that want to alter the global FSOUND software mixing output sample */ + +/* [DEFINE_END] */ + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure defining a reverb environment. + For more indepth descriptions of the reverb properties under win32, please see the EAX2 and EAX3 + documentation at http://developer.creative.com/ under the 'downloads' section. + If they do not have the EAX3 documentation, then most information can be attained from + the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of + EAX2. + Note the default reverb properties are the same as the FSOUND_PRESET_GENERIC preset. + Note that integer values that typically range from -10,000 to 1000 are represented in + decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear. + PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox). + Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then + the reverb should product a similar effect on either platform. + Only Win32 supports the reverb api. + + The numerical values listed below are the maximum, minimum and default values for each variable respectively. + + [SEE_ALSO] + FSOUND_Reverb_SetProperties + FSOUND_Reverb_GetProperties + FSOUND_REVERB_PRESETS + FSOUND_REVERB_FLAGS +] +*/ +typedef struct _FSOUND_REVERB_PROPERTIES /* MIN MAX DEFAULT DESCRIPTION */ +{ + unsigned int Environment; /* 0 , 25 , 0 , sets all listener properties (win32/ps2 only) */ + float EnvSize; /* 1.0 , 100.0 , 7.5 , environment size in meters (win32 only) */ + float EnvDiffusion; /* 0.0 , 1.0 , 1.0 , environment diffusion (win32/xbox) */ + int Room; /* -10000, 0 , -1000 , room effect level (at mid frequencies) (win32/xbox/ps2) */ + int RoomHF; /* -10000, 0 , -100 , relative room effect level at high frequencies (win32/xbox) */ + int RoomLF; /* -10000, 0 , 0 , relative room effect level at low frequencies (win32 only) */ + float DecayTime; /* 0.1 , 20.0 , 1.49 , reverberation decay time at mid frequencies (win32/xbox) */ + float DecayHFRatio; /* 0.1 , 2.0 , 0.83 , high-frequency to mid-frequency decay time ratio (win32/xbox) */ + float DecayLFRatio; /* 0.1 , 2.0 , 1.0 , low-frequency to mid-frequency decay time ratio (win32 only) */ + int Reflections; /* -10000, 1000 , -2602 , early reflections level relative to room effect (win32/xbox) */ + float ReflectionsDelay; /* 0.0 , 0.3 , 0.007 , initial reflection delay time (win32/xbox) */ + float ReflectionsPan[3]; /* , , [0,0,0], early reflections panning vector (win32 only) */ + int Reverb; /* -10000, 2000 , 200 , late reverberation level relative to room effect (win32/xbox) */ + float ReverbDelay; /* 0.0 , 0.1 , 0.011 , late reverberation delay time relative to initial reflection (win32/xbox) */ + float ReverbPan[3]; /* , , [0,0,0], late reverberation panning vector (win32 only) */ + float EchoTime; /* .075 , 0.25 , 0.25 , echo time (win32 only) */ + float EchoDepth; /* 0.0 , 1.0 , 0.0 , echo depth (win32 only) */ + float ModulationTime; /* 0.04 , 4.0 , 0.25 , modulation time (win32 only) */ + float ModulationDepth; /* 0.0 , 1.0 , 0.0 , modulation depth (win32 only) */ + float AirAbsorptionHF; /* -100 , 0.0 , -5.0 , change in level per meter at high frequencies (win32 only) */ + float HFReference; /* 1000.0, 20000 , 5000.0 , reference high frequency (hz) (win32/xbox) */ + float LFReference; /* 20.0 , 1000.0, 250.0 , reference low frequency (hz) (win32 only) */ + float RoomRolloffFactor; /* 0.0 , 10.0 , 0.0 , like FSOUND_3D_SetRolloffFactor but for room effect (win32/xbox) */ + float Diffusion; /* 0.0 , 100.0 , 100.0 , Value that controls the echo density in the late reverberation decay. (xbox only) */ + float Density; /* 0.0 , 100.0 , 100.0 , Value that controls the modal density in the late reverberation decay (xbox only) */ + unsigned int Flags; /* FSOUND_REVERB_FLAGS - modifies the behavior of above properties (win32 only) */ +} FSOUND_REVERB_PROPERTIES; + + +/* +[DEFINE_START] +[ + [NAME] + FSOUND_REVERB_FLAGS + + [DESCRIPTION] + Values for the Flags member of the FSOUND_REVERB_PROPERTIES structure. + + [SEE_ALSO] + FSOUND_REVERB_PROPERTIES +] +*/ +#define FSOUND_REVERB_FLAGS_DECAYTIMESCALE 0x00000001 /* 'EnvSize' affects reverberation decay time */ +#define FSOUND_REVERB_FLAGS_REFLECTIONSSCALE 0x00000002 /* 'EnvSize' affects reflection level */ +#define FSOUND_REVERB_FLAGS_REFLECTIONSDELAYSCALE 0x00000004 /* 'EnvSize' affects initial reflection delay time */ +#define FSOUND_REVERB_FLAGS_REVERBSCALE 0x00000008 /* 'EnvSize' affects reflections level */ +#define FSOUND_REVERB_FLAGS_REVERBDELAYSCALE 0x00000010 /* 'EnvSize' affects late reverberation delay time */ +#define FSOUND_REVERB_FLAGS_DECAYHFLIMIT 0x00000020 /* AirAbsorptionHF affects DecayHFRatio */ +#define FSOUND_REVERB_FLAGS_ECHOTIMESCALE 0x00000040 /* 'EnvSize' affects echo time */ +#define FSOUND_REVERB_FLAGS_MODULATIONTIMESCALE 0x00000080 /* 'EnvSize' affects modulation time */ +#define FSOUND_REVERB_FLAGS_CORE0 0x00000100 /* PS2 Only - Reverb is applied to CORE0 (hw voices 0-23) */ +#define FSOUND_REVERB_FLAGS_CORE1 0x00000200 /* PS2 Only - Reverb is applied to CORE1 (hw voices 24-47) */ +#define FSOUND_REVERB_FLAGS_DEFAULT (FSOUND_REVERB_FLAGS_DECAYTIMESCALE | \ + FSOUND_REVERB_FLAGS_REFLECTIONSSCALE | \ + FSOUND_REVERB_FLAGS_REFLECTIONSDELAYSCALE | \ + FSOUND_REVERB_FLAGS_REVERBSCALE | \ + FSOUND_REVERB_FLAGS_REVERBDELAYSCALE | \ + FSOUND_REVERB_FLAGS_DECAYHFLIMIT | \ + FSOUND_REVERB_FLAGS_CORE0 | \ + FSOUND_REVERB_FLAGS_CORE1 ) +/* [DEFINE_END] */ + + + + +/* +[DEFINE_START] +[ + [NAME] + FSOUND_REVERB_PRESETS + + [DESCRIPTION] + A set of predefined environment PARAMETERS, created by Creative Labs + These are used to initialize an FSOUND_REVERB_PROPERTIES structure statically. + ie + FSOUND_REVERB_PROPERTIES prop = FSOUND_PRESET_GENERIC; + + [SEE_ALSO] + FSOUND_Reverb_SetProperties +] +*/ +/* Env Size Diffus Room RoomHF RmLF DecTm DecHF DecLF Refl RefDel RefPan Revb RevDel ReverbPan EchoTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff Diffus Densty FLAGS */ +#define FSOUND_PRESET_OFF {0, 7.5f, 1.00f, -10000, -10000, 0, 1.00f, 1.00f, 1.0f, -2602, 0.007f, { 0.0f,0.0f,0.0f }, 200, 0.011f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 0.0f, 0.0f, 0x33f } +#define FSOUND_PRESET_GENERIC {0, 7.5f, 1.00f, -1000, -100, 0, 1.49f, 0.83f, 1.0f, -2602, 0.007f, { 0.0f,0.0f,0.0f }, 200, 0.011f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_PADDEDCELL {1, 1.4f, 1.00f, -1000, -6000, 0, 0.17f, 0.10f, 1.0f, -1204, 0.001f, { 0.0f,0.0f,0.0f }, 207, 0.002f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_ROOM {2, 1.9f, 1.00f, -1000, -454, 0, 0.40f, 0.83f, 1.0f, -1646, 0.002f, { 0.0f,0.0f,0.0f }, 53, 0.003f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_BATHROOM {3, 1.4f, 1.00f, -1000, -1200, 0, 1.49f, 0.54f, 1.0f, -370, 0.007f, { 0.0f,0.0f,0.0f }, 1030, 0.011f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 60.0f, 0x3f } +#define FSOUND_PRESET_LIVINGROOM {4, 2.5f, 1.00f, -1000, -6000, 0, 0.50f, 0.10f, 1.0f, -1376, 0.003f, { 0.0f,0.0f,0.0f }, -1104, 0.004f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_STONEROOM {5, 11.6f, 1.00f, -1000, -300, 0, 2.31f, 0.64f, 1.0f, -711, 0.012f, { 0.0f,0.0f,0.0f }, 83, 0.017f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_AUDITORIUM {6, 21.6f, 1.00f, -1000, -476, 0, 4.32f, 0.59f, 1.0f, -789, 0.020f, { 0.0f,0.0f,0.0f }, -289, 0.030f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_CONCERTHALL {7, 19.6f, 1.00f, -1000, -500, 0, 3.92f, 0.70f, 1.0f, -1230, 0.020f, { 0.0f,0.0f,0.0f }, -2, 0.029f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_CAVE {8, 14.6f, 1.00f, -1000, 0, 0, 2.91f, 1.30f, 1.0f, -602, 0.015f, { 0.0f,0.0f,0.0f }, -302, 0.022f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f } +#define FSOUND_PRESET_ARENA {9, 36.2f, 1.00f, -1000, -698, 0, 7.24f, 0.33f, 1.0f, -1166, 0.020f, { 0.0f,0.0f,0.0f }, 16, 0.030f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_HANGAR {10, 50.3f, 1.00f, -1000, -1000, 0, 10.05f, 0.23f, 1.0f, -602, 0.020f, { 0.0f,0.0f,0.0f }, 198, 0.030f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_CARPETTEDHALLWAY {11, 1.9f, 1.00f, -1000, -4000, 0, 0.30f, 0.10f, 1.0f, -1831, 0.002f, { 0.0f,0.0f,0.0f }, -1630, 0.030f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_HALLWAY {12, 1.8f, 1.00f, -1000, -300, 0, 1.49f, 0.59f, 1.0f, -1219, 0.007f, { 0.0f,0.0f,0.0f }, 441, 0.011f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_STONECORRIDOR {13, 13.5f, 1.00f, -1000, -237, 0, 2.70f, 0.79f, 1.0f, -1214, 0.013f, { 0.0f,0.0f,0.0f }, 395, 0.020f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_ALLEY {14, 7.5f, 0.30f, -1000, -270, 0, 1.49f, 0.86f, 1.0f, -1204, 0.007f, { 0.0f,0.0f,0.0f }, -4, 0.011f, { 0.0f,0.0f,0.0f }, 0.125f, 0.95f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_FOREST {15, 38.0f, 0.30f, -1000, -3300, 0, 1.49f, 0.54f, 1.0f, -2560, 0.162f, { 0.0f,0.0f,0.0f }, -229, 0.088f, { 0.0f,0.0f,0.0f }, 0.125f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 79.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_CITY {16, 7.5f, 0.50f, -1000, -800, 0, 1.49f, 0.67f, 1.0f, -2273, 0.007f, { 0.0f,0.0f,0.0f }, -1691, 0.011f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 50.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_MOUNTAINS {17, 100.0f, 0.27f, -1000, -2500, 0, 1.49f, 0.21f, 1.0f, -2780, 0.300f, { 0.0f,0.0f,0.0f }, -1434, 0.100f, { 0.0f,0.0f,0.0f }, 0.250f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 27.0f, 100.0f, 0x1f } +#define FSOUND_PRESET_QUARRY {18, 17.5f, 1.00f, -1000, -1000, 0, 1.49f, 0.83f, 1.0f, -10000, 0.061f, { 0.0f,0.0f,0.0f }, 500, 0.025f, { 0.0f,0.0f,0.0f }, 0.125f, 0.70f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_PLAIN {19, 42.5f, 0.21f, -1000, -2000, 0, 1.49f, 0.50f, 1.0f, -2466, 0.179f, { 0.0f,0.0f,0.0f }, -1926, 0.100f, { 0.0f,0.0f,0.0f }, 0.250f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 21.0f, 100.0f, 0x3f } +#define FSOUND_PRESET_PARKINGLOT {20, 8.3f, 1.00f, -1000, 0, 0, 1.65f, 1.50f, 1.0f, -1363, 0.008f, { 0.0f,0.0f,0.0f }, -1153, 0.012f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f } +#define FSOUND_PRESET_SEWERPIPE {21, 1.7f, 0.80f, -1000, -1000, 0, 2.81f, 0.14f, 1.0f, 429, 0.014f, { 0.0f,0.0f,0.0f }, 1023, 0.021f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 80.0f, 60.0f, 0x3f } +#define FSOUND_PRESET_UNDERWATER {22, 1.8f, 1.00f, -1000, -4000, 0, 1.49f, 0.10f, 1.0f, -449, 0.007f, { 0.0f,0.0f,0.0f }, 1700, 0.011f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 1.18f, 0.348f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f } + +/* Non I3DL2 presets */ + +#define FSOUND_PRESET_DRUGGED {23, 1.9f, 0.50f, -1000, 0, 0, 8.39f, 1.39f, 1.0f, -115, 0.002f, { 0.0f,0.0f,0.0f }, 985, 0.030f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 0.25f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f } +#define FSOUND_PRESET_DIZZY {24, 1.8f, 0.60f, -1000, -400, 0, 17.23f, 0.56f, 1.0f, -1713, 0.020f, { 0.0f,0.0f,0.0f }, -613, 0.030f, { 0.0f,0.0f,0.0f }, 0.250f, 1.00f, 0.81f, 0.310f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f } +#define FSOUND_PRESET_PSYCHOTIC {25, 1.0f, 0.50f, -1000, -151, 0, 7.56f, 0.91f, 1.0f, -626, 0.020f, { 0.0f,0.0f,0.0f }, 774, 0.030f, { 0.0f,0.0f,0.0f }, 0.250f, 0.00f, 4.00f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f } + +/* PlayStation 2 Only presets */ + +#define FSOUND_PRESET_PS2_ROOM {1, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FSOUND_PRESET_PS2_STUDIO_A {2, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FSOUND_PRESET_PS2_STUDIO_B {3, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FSOUND_PRESET_PS2_STUDIO_C {4, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FSOUND_PRESET_PS2_HALL {5, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FSOUND_PRESET_PS2_SPACE {6, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FSOUND_PRESET_PS2_ECHO {7, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FSOUND_PRESET_PS2_DELAY {8, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FSOUND_PRESET_PS2_PIPE {9, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0, 0.000f, { 0.0f,0.0f,0.0f }, 0.000f, 0.00f, 0.00f, 0.000f, 0.0f, 0000.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x31f } + +/* [DEFINE_END] */ + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure defining the properties for a reverb source, related to a FSOUND channel. + For more indepth descriptions of the reverb properties under win32, please see the EAX3 + documentation at http://developer.creative.com/ under the 'downloads' section. + If they do not have the EAX3 documentation, then most information can be attained from + the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of + EAX2. + + Note the default reverb properties are the same as the FSOUND_PRESET_GENERIC preset. + Note that integer values that typically range from -10,000 to 1000 are represented in + decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear. + PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox). + Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then + the reverb should product a similar effect on either platform. + Linux and FMODCE do not support the reverb api. + + The numerical values listed below are the maximum, minimum and default values for each variable respectively. + + [SEE_ALSO] + FSOUND_Reverb_SetChannelProperties + FSOUND_Reverb_GetChannelProperties + FSOUND_REVERB_CHANNELFLAGS +] +*/ +typedef struct _FSOUND_REVERB_CHANNELPROPERTIES /* MIN MAX DEFAULT */ +{ + int Direct; /* -10000, 1000, 0, direct path level (at low and mid frequencies) (win32/xbox) */ + int DirectHF; /* -10000, 0, 0, relative direct path level at high frequencies (win32/xbox) */ + int Room; /* -10000, 1000, 0, room effect level (at low and mid frequencies) (win32/xbox) */ + int RoomHF; /* -10000, 0, 0, relative room effect level at high frequencies (win32/xbox) */ + int Obstruction; /* -10000, 0, 0, main obstruction control (attenuation at high frequencies) (win32/xbox) */ + float ObstructionLFRatio; /* 0.0, 1.0, 0.0, obstruction low-frequency level re. main control (win32/xbox) */ + int Occlusion; /* -10000, 0, 0, main occlusion control (attenuation at high frequencies) (win32/xbox) */ + float OcclusionLFRatio; /* 0.0, 1.0, 0.25, occlusion low-frequency level re. main control (win32/xbox) */ + float OcclusionRoomRatio; /* 0.0, 10.0, 1.5, relative occlusion control for room effect (win32) */ + float OcclusionDirectRatio; /* 0.0, 10.0, 1.0, relative occlusion control for direct path (win32) */ + int Exclusion; /* -10000, 0, 0, main exlusion control (attenuation at high frequencies) (win32) */ + float ExclusionLFRatio; /* 0.0, 1.0, 1.0, exclusion low-frequency level re. main control (win32) */ + int OutsideVolumeHF; /* -10000, 0, 0, outside sound cone level at high frequencies (win32) */ + float DopplerFactor; /* 0.0, 10.0, 0.0, like DS3D flDopplerFactor but per source (win32) */ + float RolloffFactor; /* 0.0, 10.0, 0.0, like DS3D flRolloffFactor but per source (win32) */ + float RoomRolloffFactor; /* 0.0, 10.0, 0.0, like DS3D flRolloffFactor but for room effect (win32/xbox) */ + float AirAbsorptionFactor; /* 0.0, 10.0, 1.0, multiplies AirAbsorptionHF member of FSOUND_REVERB_PROPERTIES (win32) */ + int Flags; /* FSOUND_REVERB_CHANNELFLAGS - modifies the behavior of properties (win32) */ +} FSOUND_REVERB_CHANNELPROPERTIES; + + +/* +[DEFINE_START] +[ + [NAME] + FSOUND_REVERB_CHANNELFLAGS + + [DESCRIPTION] + Values for the Flags member of the FSOUND_REVERB_CHANNELPROPERTIES structure. + + [SEE_ALSO] + FSOUND_REVERB_CHANNELPROPERTIES +] +*/ +#define FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO 0x00000001 /* Automatic setting of 'Direct' due to distance from listener */ +#define FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO 0x00000002 /* Automatic setting of 'Room' due to distance from listener */ +#define FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO 0x00000004 /* Automatic setting of 'RoomHF' due to distance from listener */ +#define FSOUND_REVERB_CHANNELFLAGS_DEFAULT (FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO | \ + FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO| \ + FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO) +/* [DEFINE_END] */ + + +/* +[ENUM] +[ + [DESCRIPTION] + These values are used with FSOUND_FX_Enable to enable DirectX 8 FX for a channel. + + [SEE_ALSO] + FSOUND_FX_Enable + FSOUND_FX_Disable + FSOUND_FX_SetChorus + FSOUND_FX_SetCompressor + FSOUND_FX_SetDistortion + FSOUND_FX_SetEcho + FSOUND_FX_SetFlanger + FSOUND_FX_SetGargle + FSOUND_FX_SetI3DL2Reverb + FSOUND_FX_SetParamEQ + FSOUND_FX_SetWavesReverb +] +*/ +enum FSOUND_FX_MODES +{ + FSOUND_FX_CHORUS, + FSOUND_FX_COMPRESSOR, + FSOUND_FX_DISTORTION, + FSOUND_FX_ECHO, + FSOUND_FX_FLANGER, + FSOUND_FX_GARGLE, + FSOUND_FX_I3DL2REVERB, + FSOUND_FX_PARAMEQ, + FSOUND_FX_WAVES_REVERB, + + FSOUND_FX_MAX +}; + +/* +[ENUM] +[ + [DESCRIPTION] + These are speaker types defined for use with the FSOUND_SetSpeakerMode command. + Note - Only reliably works with FSOUND_OUTPUT_DSOUND or FSOUND_OUTPUT_XBOX output modes. Other output modes will only + interpret FSOUND_SPEAKERMODE_MONO and set everything else to be stereo. + Note - Only reliably works with FSOUND_OUTPUT_DSOUND or FSOUND_OUTPUT_XBOX output modes. Other output modes will only + interpret FSOUND_SPEAKERMODE_MONO and set everything else to be stereo. + + Using either DolbyDigital or DTS will use whatever 5.1 digital mode is available if destination hardware is unsure. + + [SEE_ALSO] + FSOUND_SetSpeakerMode + +] +*/ +enum FSOUND_SPEAKERMODES +{ + FSOUND_SPEAKERMODE_DOLBYDIGITAL, /* The audio is played through a speaker arrangement of surround speakers with a subwoofer. */ + FSOUND_SPEAKERMODE_HEADPHONES, /* The speakers are headphones. */ + FSOUND_SPEAKERMODE_MONO, /* The speakers are monaural. */ + FSOUND_SPEAKERMODE_QUAD, /* The speakers are quadraphonic. */ + FSOUND_SPEAKERMODE_STEREO, /* The speakers are stereo (default value). */ + FSOUND_SPEAKERMODE_SURROUND, /* The speakers are surround sound. */ + FSOUND_SPEAKERMODE_DTS /* (XBOX Only) The audio is played through a speaker arrangement of surround speakers with a subwoofer. */ +}; + + +/* +[DEFINE_START] +[ + [NAME] + FSOUND_INIT_FLAGS + + [DESCRIPTION] + Initialization flags. Use them with FSOUND_Init in the flags parameter to change various behaviour. + + FSOUND_INIT_ENABLEOUTPUTFX Is an init mode which enables the FSOUND mixer buffer to be affected by DirectX 8 effects. + Note that due to limitations of DirectSound, FSOUND_Init may fail if this is enabled because the buffersize is too small. + This can be fixed with FSOUND_SetBufferSize. Increase the BufferSize until it works. + When it is enabled you can use the FSOUND_FX api, and use FSOUND_SYSTEMCHANNEL as the channel id when setting parameters. + + [SEE_ALSO] + FSOUND_Init +] +*/ +#define FSOUND_INIT_USEDEFAULTMIDISYNTH 0x01 /* Causes MIDI playback to force software decoding. */ +#define FSOUND_INIT_GLOBALFOCUS 0x02 /* For DirectSound output - sound is not muted when window is out of focus. */ +#define FSOUND_INIT_ENABLEOUTPUTFX 0x04 /* For DirectSound output - Allows FSOUND_FX api to be used on global software mixer output! */ +#define FSOUND_INIT_ACCURATEVULEVELS 0x08 /* This latency adjusts FSOUND_GetCurrentLevels, but incurs a small cpu and memory hit */ +#define FSOUND_INIT_PS2_DISABLECORE0REVERB 0x10 /* PS2 only - Disable reverb on CORE 0 to regain SRAM */ +#define FSOUND_INIT_PS2_DISABLECORE1REVERB 0x20 /* PS2 only - Disable reverb on CORE 1 to regain SRAM */ +#define FSOUND_INIT_PS2_SWAPDMACORES 0x40 /* PS2 only - By default FMOD uses DMA CH0 for mixing, CH1 for uploads, this flag swaps them around */ +/* [DEFINE_END] */ + + + + +/* ========================================================================================== */ +/* FUNCTION PROTOTYPES */ +/* ========================================================================================== */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* ================================== */ +/* Initialization / Global functions. */ +/* ================================== */ + +/* + PRE - FSOUND_Init functions. These can't be called after FSOUND_Init is + called (they will fail). They set up FMOD system functionality. +*/ + +DLL_API signed char F_API FSOUND_SetOutput(int outputtype); +DLL_API signed char F_API FSOUND_SetDriver(int driver); +DLL_API signed char F_API FSOUND_SetMixer(int mixer); +DLL_API signed char F_API FSOUND_SetBufferSize(int len_ms); +DLL_API signed char F_API FSOUND_SetHWND(void *hwnd); +DLL_API signed char F_API FSOUND_SetMinHardwareChannels(int min); +DLL_API signed char F_API FSOUND_SetMaxHardwareChannels(int max); +DLL_API signed char F_API FSOUND_SetMemorySystem(void *pool, + int poollen, + FSOUND_ALLOCCALLBACK useralloc, + FSOUND_REALLOCCALLBACK userrealloc, + FSOUND_FREECALLBACK userfree); +/* + Main initialization / closedown functions. + Note : Use FSOUND_INIT_USEDEFAULTMIDISYNTH with FSOUND_Init for software override + with MIDI playback. + : Use FSOUND_INIT_GLOBALFOCUS with FSOUND_Init to make sound audible no matter + which window is in focus. (FSOUND_OUTPUT_DSOUND only) +*/ + +DLL_API signed char F_API FSOUND_Init(int mixrate, int maxsoftwarechannels, unsigned int flags); +DLL_API void F_API FSOUND_Close(); + +/* + Runtime system level functions +*/ + +DLL_API void F_API FSOUND_Update(); /* This is called to update 3d sound / non-realtime output */ + +DLL_API void F_API FSOUND_SetSpeakerMode(unsigned int speakermode); +DLL_API void F_API FSOUND_SetSFXMasterVolume(int volume); +DLL_API void F_API FSOUND_SetPanSeperation(float pansep); +DLL_API void F_API FSOUND_File_SetCallbacks(FSOUND_OPENCALLBACK useropen, + FSOUND_CLOSECALLBACK userclose, + FSOUND_READCALLBACK userread, + FSOUND_SEEKCALLBACK userseek, + FSOUND_TELLCALLBACK usertell); + +/* + System information functions. +*/ + +DLL_API int F_API FSOUND_GetError(); +DLL_API float F_API FSOUND_GetVersion(); +DLL_API int F_API FSOUND_GetOutput(); +DLL_API void * F_API FSOUND_GetOutputHandle(); +DLL_API int F_API FSOUND_GetDriver(); +DLL_API int F_API FSOUND_GetMixer(); +DLL_API int F_API FSOUND_GetNumDrivers(); +DLL_API signed char * F_API FSOUND_GetDriverName(int id); +DLL_API signed char F_API FSOUND_GetDriverCaps(int id, unsigned int *caps); +DLL_API int F_API FSOUND_GetOutputRate(); +DLL_API int F_API FSOUND_GetMaxChannels(); +DLL_API int F_API FSOUND_GetMaxSamples(); +DLL_API int F_API FSOUND_GetSFXMasterVolume(); +DLL_API int F_API FSOUND_GetNumHardwareChannels(); +DLL_API int F_API FSOUND_GetChannelsPlaying(); +DLL_API float F_API FSOUND_GetCPUUsage(); +DLL_API void F_API FSOUND_GetMemoryStats(unsigned int *currentalloced, unsigned int *maxalloced); + +/* =================================== */ +/* Sample management / load functions. */ +/* =================================== */ + +/* + Sample creation and management functions + Note : Use FSOUND_LOADMEMORY flag with FSOUND_Sample_Load to load from memory. + Use FSOUND_LOADRAW flag with FSOUND_Sample_Load to treat as as raw pcm data. +*/ + +DLL_API FSOUND_SAMPLE * F_API FSOUND_Sample_Load(int index, const char *name_or_data, unsigned int mode, int memlength); +DLL_API FSOUND_SAMPLE * F_API FSOUND_Sample_Alloc(int index, int length, unsigned int mode, int deffreq, int defvol, int defpan, int defpri); +DLL_API void F_API FSOUND_Sample_Free(FSOUND_SAMPLE *sptr); +DLL_API signed char F_API FSOUND_Sample_Upload(FSOUND_SAMPLE *sptr, void *srcdata, unsigned int mode); +DLL_API signed char F_API FSOUND_Sample_Lock(FSOUND_SAMPLE *sptr, int offset, int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); +DLL_API signed char F_API FSOUND_Sample_Unlock(FSOUND_SAMPLE *sptr, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); + +/* + Sample control functions +*/ + +DLL_API signed char F_API FSOUND_Sample_SetMode(FSOUND_SAMPLE *sptr, unsigned int mode); +DLL_API signed char F_API FSOUND_Sample_SetLoopPoints(FSOUND_SAMPLE *sptr, int loopstart, int loopend); +DLL_API signed char F_API FSOUND_Sample_SetDefaults(FSOUND_SAMPLE *sptr, int deffreq, int defvol, int defpan, int defpri); +DLL_API signed char F_API FSOUND_Sample_SetMinMaxDistance(FSOUND_SAMPLE *sptr, float min, float max); +DLL_API signed char F_API FSOUND_Sample_SetMaxPlaybacks(FSOUND_SAMPLE *sptr, int max); + +/* + Sample information functions +*/ + +DLL_API FSOUND_SAMPLE * F_API FSOUND_Sample_Get(int sampno); +DLL_API char * F_API FSOUND_Sample_GetName(FSOUND_SAMPLE *sptr); +DLL_API unsigned int F_API FSOUND_Sample_GetLength(FSOUND_SAMPLE *sptr); +DLL_API signed char F_API FSOUND_Sample_GetLoopPoints(FSOUND_SAMPLE *sptr, int *loopstart, int *loopend); +DLL_API signed char F_API FSOUND_Sample_GetDefaults(FSOUND_SAMPLE *sptr, int *deffreq, int *defvol, int *defpan, int *defpri); +DLL_API unsigned int F_API FSOUND_Sample_GetMode(FSOUND_SAMPLE *sptr); + +/* ============================ */ +/* Channel control functions. */ +/* ============================ */ + +/* + Playing and stopping sounds. + Note : Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you. + Use FSOUND_ALL as the 'channel' variable to control ALL channels with one function call! +*/ + +DLL_API int F_API FSOUND_PlaySound(int channel, FSOUND_SAMPLE *sptr); +DLL_API int F_API FSOUND_PlaySoundEx(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused); +DLL_API signed char F_API FSOUND_StopSound(int channel); + +/* + Functions to control playback of a channel. + Note : FSOUND_ALL can be used on most of these functions as a channel value. +*/ + +DLL_API signed char F_API FSOUND_SetFrequency(int channel, int freq); +DLL_API signed char F_API FSOUND_SetVolume(int channel, int vol); +DLL_API signed char F_API FSOUND_SetVolumeAbsolute(int channel, int vol); +DLL_API signed char F_API FSOUND_SetPan(int channel, int pan); +DLL_API signed char F_API FSOUND_SetSurround(int channel, signed char surround); +DLL_API signed char F_API FSOUND_SetMute(int channel, signed char mute); +DLL_API signed char F_API FSOUND_SetPriority(int channel, int priority); +DLL_API signed char F_API FSOUND_SetReserved(int channel, signed char reserved); +DLL_API signed char F_API FSOUND_SetPaused(int channel, signed char paused); +DLL_API signed char F_API FSOUND_SetLoopMode(int channel, unsigned int loopmode); +DLL_API signed char F_API FSOUND_SetCurrentPosition(int channel, unsigned int offset); + +/* + Channel information functions. +*/ + +DLL_API signed char F_API FSOUND_IsPlaying(int channel); +DLL_API int F_API FSOUND_GetFrequency(int channel); +DLL_API int F_API FSOUND_GetVolume(int channel); +DLL_API int F_API FSOUND_GetPan(int channel); +DLL_API signed char F_API FSOUND_GetSurround(int channel); +DLL_API signed char F_API FSOUND_GetMute(int channel); +DLL_API int F_API FSOUND_GetPriority(int channel); +DLL_API signed char F_API FSOUND_GetReserved(int channel); +DLL_API signed char F_API FSOUND_GetPaused(int channel); +DLL_API unsigned int F_API FSOUND_GetLoopMode(int channel); +DLL_API unsigned int F_API FSOUND_GetCurrentPosition(int channel); +DLL_API FSOUND_SAMPLE * F_API FSOUND_GetCurrentSample(int channel); +DLL_API signed char F_API FSOUND_GetCurrentLevels(int channel, float *l, float *r); + + +/* =================== */ +/* FX functions. */ +/* =================== */ + +/* + Functions to control DX8 only effects processing. + + - FX enabled samples can only be played once at a time, not multiple times at once. + - Sounds have to be created with FSOUND_HW2D or FSOUND_HW3D for this to work. + - FSOUND_INIT_ENABLEOUTPUTFX can be used to apply hardware effect processing to the + global mixed output of FMOD's software channels. + - FSOUND_FX_Enable returns an FX handle that you can use to alter fx parameters. + - FSOUND_FX_Enable can be called multiple times in a row, even on the same FX type, + it will return a unique handle for each FX. + - FSOUND_FX_Enable cannot be called if the sound is playing or locked. + - FSOUND_FX_Disable must be called to reset/clear the FX from a channel. +*/ + +DLL_API int F_API FSOUND_FX_Enable(int channel, unsigned int fx); /* See FSOUND_FX_MODES */ +DLL_API signed char F_API FSOUND_FX_Disable(int channel); + +DLL_API signed char F_API FSOUND_FX_SetChorus(int fxid, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase); +DLL_API signed char F_API FSOUND_FX_SetCompressor(int fxid, float Gain, float Attack, float Release, float Threshold, float Ratio, float Predelay); +DLL_API signed char F_API FSOUND_FX_SetDistortion(int fxid, float Gain, float Edge, float PostEQCenterFrequency, float PostEQBandwidth, float PreLowpassCutoff); +DLL_API signed char F_API FSOUND_FX_SetEcho(int fxid, float WetDryMix, float Feedback, float LeftDelay, float RightDelay, int PanDelay); +DLL_API signed char F_API FSOUND_FX_SetFlanger(int fxid, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase); +DLL_API signed char F_API FSOUND_FX_SetGargle(int fxid, int RateHz, int WaveShape); +DLL_API signed char F_API FSOUND_FX_SetI3DL2Reverb(int fxid, int Room, int RoomHF, float RoomRolloffFactor, float DecayTime, float DecayHFRatio, int Reflections, float ReflectionsDelay, int Reverb, float ReverbDelay, float Diffusion, float Density, float HFReference); +DLL_API signed char F_API FSOUND_FX_SetParamEQ(int fxid, float Center, float Bandwidth, float Gain); +DLL_API signed char F_API FSOUND_FX_SetWavesReverb(int fxid, float InGain, float ReverbMix, float ReverbTime, float HighFreqRTRatio); + +/* =================== */ +/* 3D sound functions. */ +/* =================== */ + +/* + See also FSOUND_Sample_SetMinMaxDistance (above) + Note! FSOUND_3D_Update is now called FSOUND_Update. +*/ + +DLL_API void F_API FSOUND_3D_SetDopplerFactor(float scale); +DLL_API void F_API FSOUND_3D_SetDistanceFactor(float scale); +DLL_API void F_API FSOUND_3D_SetRolloffFactor(float scale); +DLL_API signed char F_API FSOUND_3D_SetAttributes(int channel, float *pos, float *vel); +DLL_API signed char F_API FSOUND_3D_GetAttributes(int channel, float *pos, float *vel); + +DLL_API void F_API FSOUND_3D_Listener_SetCurrent(int current, int numlisteners); /* use this if you use multiple listeners / splitscreen */ +DLL_API void F_API FSOUND_3D_Listener_SetAttributes(float *pos, float *vel, float fx, float fy, float fz, float tx, float ty, float tz); +DLL_API void F_API FSOUND_3D_Listener_GetAttributes(float *pos, float *vel, float *fx, float *fy, float *fz, float *tx, float *ty, float *tz); + +/* ========================= */ +/* File Streaming functions. */ +/* ========================= */ + +/* + Note : Use FSOUND_LOADMEMORY flag with FSOUND_Stream_OpenFile to stream from memory. + Use FSOUND_LOADRAW flag with FSOUND_Stream_OpenFile to treat stream as raw pcm data. + Use FSOUND_MPEGACCURATE flag with FSOUND_Stream_OpenFile to open mpegs in 'accurate mode' for settime/gettime/getlengthms. + Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you. +*/ + +DLL_API signed char F_API FSOUND_Stream_SetBufferSize(int ms); /* call this before opening streams, not after */ + +DLL_API FSOUND_STREAM * F_API FSOUND_Stream_OpenFile(const char *filename, unsigned int mode, int memlength); +DLL_API FSOUND_STREAM * F_API FSOUND_Stream_Create(FSOUND_STREAMCALLBACK callback, int length, unsigned int mode, int samplerate, int userdata); +DLL_API signed char F_API FSOUND_Stream_Close(FSOUND_STREAM *stream); + +DLL_API int F_API FSOUND_Stream_Play(int channel, FSOUND_STREAM *stream); +DLL_API int F_API FSOUND_Stream_PlayEx(int channel, FSOUND_STREAM *stream, FSOUND_DSPUNIT *dsp, signed char startpaused); +DLL_API signed char F_API FSOUND_Stream_Stop(FSOUND_STREAM *stream); + +DLL_API int F_API FSOUND_Stream_GetOpenState(FSOUND_STREAM *stream); /* use with FSOUND_NONBLOCKING opened streams */ +DLL_API signed char F_API FSOUND_Stream_SetPosition(FSOUND_STREAM *stream, unsigned int position); +DLL_API unsigned int F_API FSOUND_Stream_GetPosition(FSOUND_STREAM *stream); +DLL_API signed char F_API FSOUND_Stream_SetTime(FSOUND_STREAM *stream, int ms); +DLL_API int F_API FSOUND_Stream_GetTime(FSOUND_STREAM *stream); +DLL_API int F_API FSOUND_Stream_GetLength(FSOUND_STREAM *stream); +DLL_API int F_API FSOUND_Stream_GetLengthMs(FSOUND_STREAM *stream); + +DLL_API signed char F_API FSOUND_Stream_SetLoopPoints(FSOUND_STREAM *stream, unsigned int loopstartpcm, unsigned int loopendpcm); +DLL_API FSOUND_SAMPLE * F_API FSOUND_Stream_GetSample(FSOUND_STREAM *stream); +DLL_API FSOUND_DSPUNIT *F_API FSOUND_Stream_CreateDSP(FSOUND_STREAM *stream, FSOUND_DSPCALLBACK callback, int priority, int param); +DLL_API signed char F_API FSOUND_Stream_SetEndCallback(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, int userdata); + +DLL_API signed char F_API FSOUND_Stream_SetSynchCallback(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, int userdata); +DLL_API int F_API FSOUND_Stream_AddSynchPoint(FSOUND_STREAM *stream, unsigned int pcmoffset, int userdata); +DLL_API signed char F_API FSOUND_Stream_DeleteSynchPoint(FSOUND_STREAM *stream, int index); +DLL_API int F_API FSOUND_Stream_GetNumSynchPoints(FSOUND_STREAM *stream); + +DLL_API signed char F_API FSOUND_Stream_SetSubStream(FSOUND_STREAM *stream, int index); /* For FMOD .FSB bank files. Console only currently. */ +DLL_API int F_API FSOUND_Stream_GetNumSubStreams(FSOUND_STREAM *stream); /* For FMOD .FSB bank files. Console only currently. */ + +/* =================== */ +/* CD audio functions. */ +/* =================== */ + +/* + Note : 0 = default cdrom. Otherwise specify the drive letter, for example. 'D'. +*/ + +DLL_API signed char F_API FSOUND_CD_Play(char drive, int track); +DLL_API void F_API FSOUND_CD_SetPlayMode(char drive, signed char mode); +DLL_API signed char F_API FSOUND_CD_Stop(char drive); +DLL_API signed char F_API FSOUND_CD_SetPaused(char drive, signed char paused); +DLL_API signed char F_API FSOUND_CD_SetVolume(char drive, int volume); +DLL_API signed char F_API FSOUND_CD_Eject(char drive); + +DLL_API signed char F_API FSOUND_CD_GetPaused(char drive); +DLL_API int F_API FSOUND_CD_GetTrack(char drive); +DLL_API int F_API FSOUND_CD_GetNumTracks(char drive); +DLL_API int F_API FSOUND_CD_GetVolume(char drive); +DLL_API int F_API FSOUND_CD_GetTrackLength(char drive, int track); +DLL_API int F_API FSOUND_CD_GetTrackTime(char drive); + +/* ============== */ +/* DSP functions. */ +/* ============== */ + +/* + DSP Unit control and information functions. + These functions allow you access to the mixed stream that FMOD uses to play back sound on. +*/ + +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_Create(FSOUND_DSPCALLBACK callback, int priority, int param); +DLL_API void F_API FSOUND_DSP_Free(FSOUND_DSPUNIT *unit); +DLL_API void F_API FSOUND_DSP_SetPriority(FSOUND_DSPUNIT *unit, int priority); +DLL_API int F_API FSOUND_DSP_GetPriority(FSOUND_DSPUNIT *unit); +DLL_API void F_API FSOUND_DSP_SetActive(FSOUND_DSPUNIT *unit, signed char active); +DLL_API signed char F_API FSOUND_DSP_GetActive(FSOUND_DSPUNIT *unit); + +/* + Functions to get hold of FSOUND 'system DSP unit' handles. +*/ + +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetClearUnit(); +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetSFXUnit(); +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetMusicUnit(); +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetFFTUnit(); +DLL_API FSOUND_DSPUNIT *F_API FSOUND_DSP_GetClipAndCopyUnit(); + +/* + Miscellaneous DSP functions + Note for the spectrum analysis function to work, you have to enable the FFT DSP unit with + the following code FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE); + It is off by default to save cpu usage. +*/ + +DLL_API signed char F_API FSOUND_DSP_MixBuffers(void *destbuffer, void *srcbuffer, int len, int freq, int vol, int pan, unsigned int mode); +DLL_API void F_API FSOUND_DSP_ClearMixBuffer(); +DLL_API int F_API FSOUND_DSP_GetBufferLength(); /* Length of each DSP update */ +DLL_API int F_API FSOUND_DSP_GetBufferLengthTotal(); /* Total buffer length due to FSOUND_SetBufferSize */ +DLL_API float * F_API FSOUND_DSP_GetSpectrum(); /* Array of 512 floats - call FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE)) for this to work. */ + +/* =================================================================================== */ +/* Reverb functions. (eax2/eax3 reverb) (ONLY SUPPORTED ON WIN32 W/ FSOUND_HW3D FLAG) */ +/* =================================================================================== */ + +/* + See top of file for definitions and information on the reverb parameters. +*/ + +DLL_API signed char F_API FSOUND_Reverb_SetProperties(FSOUND_REVERB_PROPERTIES *prop); +DLL_API signed char F_API FSOUND_Reverb_GetProperties(FSOUND_REVERB_PROPERTIES *prop); +DLL_API signed char F_API FSOUND_Reverb_SetChannelProperties(int channel, FSOUND_REVERB_CHANNELPROPERTIES *prop); +DLL_API signed char F_API FSOUND_Reverb_GetChannelProperties(int channel, FSOUND_REVERB_CHANNELPROPERTIES *prop); + +/* ===================================================== */ +/* Recording functions (ONLY SUPPORTED IN WIN32, WINCE) */ +/* ===================================================== */ + +/* + Recording initialization functions +*/ + +DLL_API signed char F_API FSOUND_Record_SetDriver(int outputtype); +DLL_API int F_API FSOUND_Record_GetNumDrivers(); +DLL_API signed char * F_API FSOUND_Record_GetDriverName(int id); +DLL_API int F_API FSOUND_Record_GetDriver(); + +/* + Recording functionality. Only one recording session will work at a time. +*/ + +DLL_API signed char F_API FSOUND_Record_StartSample(FSOUND_SAMPLE *sptr, signed char loop); +DLL_API signed char F_API FSOUND_Record_Stop(); +DLL_API int F_API FSOUND_Record_GetPosition(); + +/* ========================================================================================== */ +/* FMUSIC API (MOD,S3M,XM,IT,MIDI PLAYBACK) */ +/* ========================================================================================== */ + +/* + Song management / playback functions. +*/ + +DLL_API FMUSIC_MODULE * F_API FMUSIC_LoadSong(const char *name); +DLL_API FMUSIC_MODULE * F_API FMUSIC_LoadSongMemory(void *data, int length); +DLL_API signed char F_API FMUSIC_FreeSong(FMUSIC_MODULE *mod); +DLL_API signed char F_API FMUSIC_PlaySong(FMUSIC_MODULE *mod); +DLL_API signed char F_API FMUSIC_StopSong(FMUSIC_MODULE *mod); +DLL_API void F_API FMUSIC_StopAllSongs(); + +DLL_API signed char F_API FMUSIC_SetZxxCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback); +DLL_API signed char F_API FMUSIC_SetRowCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int rowstep); +DLL_API signed char F_API FMUSIC_SetOrderCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int orderstep); +DLL_API signed char F_API FMUSIC_SetInstCallback(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int instrument); + +DLL_API signed char F_API FMUSIC_SetSample(FMUSIC_MODULE *mod, int sampno, FSOUND_SAMPLE *sptr); +DLL_API signed char F_API FMUSIC_SetUserData(FMUSIC_MODULE *mod, unsigned int userdata); +DLL_API signed char F_API FMUSIC_OptimizeChannels(FMUSIC_MODULE *mod, int maxchannels, int minvolume); + +/* + Runtime song functions. +*/ + +DLL_API signed char F_API FMUSIC_SetReverb(signed char reverb); /* MIDI only */ +DLL_API signed char F_API FMUSIC_SetLooping(FMUSIC_MODULE *mod, signed char looping); +DLL_API signed char F_API FMUSIC_SetOrder(FMUSIC_MODULE *mod, int order); +DLL_API signed char F_API FMUSIC_SetPaused(FMUSIC_MODULE *mod, signed char pause); +DLL_API signed char F_API FMUSIC_SetMasterVolume(FMUSIC_MODULE *mod, int volume); +DLL_API signed char F_API FMUSIC_SetMasterSpeed(FMUSIC_MODULE *mode, float speed); +DLL_API signed char F_API FMUSIC_SetPanSeperation(FMUSIC_MODULE *mod, float pansep); + +/* + Static song information functions. +*/ + +DLL_API char * F_API FMUSIC_GetName(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetType(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetNumOrders(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetNumPatterns(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetNumInstruments(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetNumSamples(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetNumChannels(FMUSIC_MODULE *mod); +DLL_API FSOUND_SAMPLE * F_API FMUSIC_GetSample(FMUSIC_MODULE *mod, int sampno); +DLL_API int F_API FMUSIC_GetPatternLength(FMUSIC_MODULE *mod, int orderno); + +/* + Runtime song information. +*/ + +DLL_API signed char F_API FMUSIC_IsFinished(FMUSIC_MODULE *mod); +DLL_API signed char F_API FMUSIC_IsPlaying(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetMasterVolume(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetGlobalVolume(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetOrder(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetPattern(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetSpeed(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetBPM(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetRow(FMUSIC_MODULE *mod); +DLL_API signed char F_API FMUSIC_GetPaused(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetTime(FMUSIC_MODULE *mod); +DLL_API int F_API FMUSIC_GetRealChannel(FMUSIC_MODULE *mod, int modchannel); +DLL_API unsigned int F_API FMUSIC_GetUserData(FMUSIC_MODULE *mod); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Toshi/vendor/fmod/include/fmod/core/fmod.h b/Toshi/vendor/fmod/include/fmod/core/fmod.h deleted file mode 100644 index e6ae1f9..0000000 --- a/Toshi/vendor/fmod/include/fmod/core/fmod.h +++ /dev/null @@ -1,667 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - C header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header in conjunction with fmod_common.h (which contains all the constants / */ -/* callbacks) to develop using the C interface */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api.html */ -/* ======================================================================================== */ - -#ifndef _FMOD_H -#define _FMOD_H - -#include "fmod_common.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* - FMOD global system functions (optional). -*/ -FMOD_RESULT F_API FMOD_Memory_Initialize (void *poolmem, int poollen, FMOD_MEMORY_ALLOC_CALLBACK useralloc, FMOD_MEMORY_REALLOC_CALLBACK userrealloc, FMOD_MEMORY_FREE_CALLBACK userfree, FMOD_MEMORY_TYPE memtypeflags); -FMOD_RESULT F_API FMOD_Memory_GetStats (int *currentalloced, int *maxalloced, FMOD_BOOL blocking); -FMOD_RESULT F_API FMOD_Debug_Initialize (FMOD_DEBUG_FLAGS flags, FMOD_DEBUG_MODE mode, FMOD_DEBUG_CALLBACK callback, const char *filename); -FMOD_RESULT F_API FMOD_File_SetDiskBusy (int busy); -FMOD_RESULT F_API FMOD_File_GetDiskBusy (int *busy); -FMOD_RESULT F_API FMOD_Thread_SetAttributes (FMOD_THREAD_TYPE type, FMOD_THREAD_AFFINITY affinity, FMOD_THREAD_PRIORITY priority, FMOD_THREAD_STACK_SIZE stacksize); - -/* - FMOD System factory functions. Use this to create an FMOD System Instance. below you will see FMOD_System_Init/Close to get started. -*/ -FMOD_RESULT F_API FMOD_System_Create (FMOD_SYSTEM **system, unsigned int headerversion); -FMOD_RESULT F_API FMOD_System_Release (FMOD_SYSTEM *system); - -/* - 'System' API -*/ - -/* Setup functions. */ -FMOD_RESULT F_API FMOD_System_SetOutput (FMOD_SYSTEM *system, FMOD_OUTPUTTYPE output); -FMOD_RESULT F_API FMOD_System_GetOutput (FMOD_SYSTEM *system, FMOD_OUTPUTTYPE *output); -FMOD_RESULT F_API FMOD_System_GetNumDrivers (FMOD_SYSTEM *system, int *numdrivers); -FMOD_RESULT F_API FMOD_System_GetDriverInfo (FMOD_SYSTEM *system, int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels); -FMOD_RESULT F_API FMOD_System_SetDriver (FMOD_SYSTEM *system, int driver); -FMOD_RESULT F_API FMOD_System_GetDriver (FMOD_SYSTEM *system, int *driver); -FMOD_RESULT F_API FMOD_System_SetSoftwareChannels (FMOD_SYSTEM *system, int numsoftwarechannels); -FMOD_RESULT F_API FMOD_System_GetSoftwareChannels (FMOD_SYSTEM *system, int *numsoftwarechannels); -FMOD_RESULT F_API FMOD_System_SetSoftwareFormat (FMOD_SYSTEM *system, int samplerate, FMOD_SPEAKERMODE speakermode, int numrawspeakers); -FMOD_RESULT F_API FMOD_System_GetSoftwareFormat (FMOD_SYSTEM *system, int *samplerate, FMOD_SPEAKERMODE *speakermode, int *numrawspeakers); -FMOD_RESULT F_API FMOD_System_SetDSPBufferSize (FMOD_SYSTEM *system, unsigned int bufferlength, int numbuffers); -FMOD_RESULT F_API FMOD_System_GetDSPBufferSize (FMOD_SYSTEM *system, unsigned int *bufferlength, int *numbuffers); -FMOD_RESULT F_API FMOD_System_SetFileSystem (FMOD_SYSTEM *system, FMOD_FILE_OPEN_CALLBACK useropen, FMOD_FILE_CLOSE_CALLBACK userclose, FMOD_FILE_READ_CALLBACK userread, FMOD_FILE_SEEK_CALLBACK userseek, FMOD_FILE_ASYNCREAD_CALLBACK userasyncread, FMOD_FILE_ASYNCCANCEL_CALLBACK userasynccancel, int blockalign); -FMOD_RESULT F_API FMOD_System_AttachFileSystem (FMOD_SYSTEM *system, FMOD_FILE_OPEN_CALLBACK useropen, FMOD_FILE_CLOSE_CALLBACK userclose, FMOD_FILE_READ_CALLBACK userread, FMOD_FILE_SEEK_CALLBACK userseek); -FMOD_RESULT F_API FMOD_System_SetAdvancedSettings (FMOD_SYSTEM *system, FMOD_ADVANCEDSETTINGS *settings); -FMOD_RESULT F_API FMOD_System_GetAdvancedSettings (FMOD_SYSTEM *system, FMOD_ADVANCEDSETTINGS *settings); -FMOD_RESULT F_API FMOD_System_SetCallback (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK callback, FMOD_SYSTEM_CALLBACK_TYPE callbackmask); - -/* Plug-in support. */ -FMOD_RESULT F_API FMOD_System_SetPluginPath (FMOD_SYSTEM *system, const char *path); -FMOD_RESULT F_API FMOD_System_LoadPlugin (FMOD_SYSTEM *system, const char *filename, unsigned int *handle, unsigned int priority); -FMOD_RESULT F_API FMOD_System_UnloadPlugin (FMOD_SYSTEM *system, unsigned int handle); -FMOD_RESULT F_API FMOD_System_GetNumNestedPlugins (FMOD_SYSTEM *system, unsigned int handle, int *count); -FMOD_RESULT F_API FMOD_System_GetNestedPlugin (FMOD_SYSTEM *system, unsigned int handle, int index, unsigned int *nestedhandle); -FMOD_RESULT F_API FMOD_System_GetNumPlugins (FMOD_SYSTEM *system, FMOD_PLUGINTYPE plugintype, int *numplugins); -FMOD_RESULT F_API FMOD_System_GetPluginHandle (FMOD_SYSTEM *system, FMOD_PLUGINTYPE plugintype, int index, unsigned int *handle); -FMOD_RESULT F_API FMOD_System_GetPluginInfo (FMOD_SYSTEM *system, unsigned int handle, FMOD_PLUGINTYPE *plugintype, char *name, int namelen, unsigned int *version); -FMOD_RESULT F_API FMOD_System_SetOutputByPlugin (FMOD_SYSTEM *system, unsigned int handle); -FMOD_RESULT F_API FMOD_System_GetOutputByPlugin (FMOD_SYSTEM *system, unsigned int *handle); -FMOD_RESULT F_API FMOD_System_CreateDSPByPlugin (FMOD_SYSTEM *system, unsigned int handle, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_System_GetDSPInfoByPlugin (FMOD_SYSTEM *system, unsigned int handle, const FMOD_DSP_DESCRIPTION **description); -FMOD_RESULT F_API FMOD_System_RegisterCodec (FMOD_SYSTEM *system, FMOD_CODEC_DESCRIPTION *description, unsigned int *handle, unsigned int priority); -FMOD_RESULT F_API FMOD_System_RegisterDSP (FMOD_SYSTEM *system, const FMOD_DSP_DESCRIPTION *description, unsigned int *handle); -FMOD_RESULT F_API FMOD_System_RegisterOutput (FMOD_SYSTEM *system, const FMOD_OUTPUT_DESCRIPTION *description, unsigned int *handle); - -/* Init/Close. */ -FMOD_RESULT F_API FMOD_System_Init (FMOD_SYSTEM *system, int maxchannels, FMOD_INITFLAGS flags, void *extradriverdata); -FMOD_RESULT F_API FMOD_System_Close (FMOD_SYSTEM *system); - -/* General post-init system functions. */ -FMOD_RESULT F_API FMOD_System_Update (FMOD_SYSTEM *system); -FMOD_RESULT F_API FMOD_System_SetSpeakerPosition (FMOD_SYSTEM *system, FMOD_SPEAKER speaker, float x, float y, FMOD_BOOL active); -FMOD_RESULT F_API FMOD_System_GetSpeakerPosition (FMOD_SYSTEM *system, FMOD_SPEAKER speaker, float *x, float *y, FMOD_BOOL *active); -FMOD_RESULT F_API FMOD_System_SetStreamBufferSize (FMOD_SYSTEM *system, unsigned int filebuffersize, FMOD_TIMEUNIT filebuffersizetype); -FMOD_RESULT F_API FMOD_System_GetStreamBufferSize (FMOD_SYSTEM *system, unsigned int *filebuffersize, FMOD_TIMEUNIT *filebuffersizetype); -FMOD_RESULT F_API FMOD_System_Set3DSettings (FMOD_SYSTEM *system, float dopplerscale, float distancefactor, float rolloffscale); -FMOD_RESULT F_API FMOD_System_Get3DSettings (FMOD_SYSTEM *system, float *dopplerscale, float *distancefactor, float *rolloffscale); -FMOD_RESULT F_API FMOD_System_Set3DNumListeners (FMOD_SYSTEM *system, int numlisteners); -FMOD_RESULT F_API FMOD_System_Get3DNumListeners (FMOD_SYSTEM *system, int *numlisteners); -FMOD_RESULT F_API FMOD_System_Set3DListenerAttributes (FMOD_SYSTEM *system, int listener, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); -FMOD_RESULT F_API FMOD_System_Get3DListenerAttributes (FMOD_SYSTEM *system, int listener, FMOD_VECTOR *pos, FMOD_VECTOR *vel, FMOD_VECTOR *forward, FMOD_VECTOR *up); -FMOD_RESULT F_API FMOD_System_Set3DRolloffCallback (FMOD_SYSTEM *system, FMOD_3D_ROLLOFF_CALLBACK callback); -FMOD_RESULT F_API FMOD_System_MixerSuspend (FMOD_SYSTEM *system); -FMOD_RESULT F_API FMOD_System_MixerResume (FMOD_SYSTEM *system); -FMOD_RESULT F_API FMOD_System_GetDefaultMixMatrix (FMOD_SYSTEM *system, FMOD_SPEAKERMODE sourcespeakermode, FMOD_SPEAKERMODE targetspeakermode, float *matrix, int matrixhop); -FMOD_RESULT F_API FMOD_System_GetSpeakerModeChannels (FMOD_SYSTEM *system, FMOD_SPEAKERMODE mode, int *channels); - -/* System information functions. */ -FMOD_RESULT F_API FMOD_System_GetVersion (FMOD_SYSTEM *system, unsigned int *version); -FMOD_RESULT F_API FMOD_System_GetOutputHandle (FMOD_SYSTEM *system, void **handle); -FMOD_RESULT F_API FMOD_System_GetChannelsPlaying (FMOD_SYSTEM *system, int *channels, int *realchannels); -FMOD_RESULT F_API FMOD_System_GetCPUUsage (FMOD_SYSTEM *system, FMOD_CPU_USAGE *usage); -FMOD_RESULT F_API FMOD_System_GetFileUsage (FMOD_SYSTEM *system, long long *sampleBytesRead, long long *streamBytesRead, long long *otherBytesRead); - -/* Sound/DSP/Channel/FX creation and retrieval. */ -FMOD_RESULT F_API FMOD_System_CreateSound (FMOD_SYSTEM *system, const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, FMOD_SOUND **sound); -FMOD_RESULT F_API FMOD_System_CreateStream (FMOD_SYSTEM *system, const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, FMOD_SOUND **sound); -FMOD_RESULT F_API FMOD_System_CreateDSP (FMOD_SYSTEM *system, const FMOD_DSP_DESCRIPTION *description, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_System_CreateDSPByType (FMOD_SYSTEM *system, FMOD_DSP_TYPE type, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_System_CreateChannelGroup (FMOD_SYSTEM *system, const char *name, FMOD_CHANNELGROUP **channelgroup); -FMOD_RESULT F_API FMOD_System_CreateSoundGroup (FMOD_SYSTEM *system, const char *name, FMOD_SOUNDGROUP **soundgroup); -FMOD_RESULT F_API FMOD_System_CreateReverb3D (FMOD_SYSTEM *system, FMOD_REVERB3D **reverb); -FMOD_RESULT F_API FMOD_System_PlaySound (FMOD_SYSTEM *system, FMOD_SOUND *sound, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused, FMOD_CHANNEL **channel); -FMOD_RESULT F_API FMOD_System_PlayDSP (FMOD_SYSTEM *system, FMOD_DSP *dsp, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused, FMOD_CHANNEL **channel); -FMOD_RESULT F_API FMOD_System_GetChannel (FMOD_SYSTEM *system, int channelid, FMOD_CHANNEL **channel); -FMOD_RESULT F_API FMOD_System_GetDSPInfoByType (FMOD_SYSTEM *system, FMOD_DSP_TYPE type, const FMOD_DSP_DESCRIPTION **description); -FMOD_RESULT F_API FMOD_System_GetMasterChannelGroup (FMOD_SYSTEM *system, FMOD_CHANNELGROUP **channelgroup); -FMOD_RESULT F_API FMOD_System_GetMasterSoundGroup (FMOD_SYSTEM *system, FMOD_SOUNDGROUP **soundgroup); - -/* Routing to ports. */ -FMOD_RESULT F_API FMOD_System_AttachChannelGroupToPort (FMOD_SYSTEM *system, FMOD_PORT_TYPE portType, FMOD_PORT_INDEX portIndex, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL passThru); -FMOD_RESULT F_API FMOD_System_DetachChannelGroupFromPort(FMOD_SYSTEM *system, FMOD_CHANNELGROUP *channelgroup); - -/* Reverb API. */ -FMOD_RESULT F_API FMOD_System_SetReverbProperties (FMOD_SYSTEM *system, int instance, const FMOD_REVERB_PROPERTIES *prop); -FMOD_RESULT F_API FMOD_System_GetReverbProperties (FMOD_SYSTEM *system, int instance, FMOD_REVERB_PROPERTIES *prop); - -/* System level DSP functionality. */ -FMOD_RESULT F_API FMOD_System_LockDSP (FMOD_SYSTEM *system); -FMOD_RESULT F_API FMOD_System_UnlockDSP (FMOD_SYSTEM *system); - -/* Recording API. */ -FMOD_RESULT F_API FMOD_System_GetRecordNumDrivers (FMOD_SYSTEM *system, int *numdrivers, int *numconnected); -FMOD_RESULT F_API FMOD_System_GetRecordDriverInfo (FMOD_SYSTEM *system, int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels, FMOD_DRIVER_STATE *state); -FMOD_RESULT F_API FMOD_System_GetRecordPosition (FMOD_SYSTEM *system, int id, unsigned int *position); -FMOD_RESULT F_API FMOD_System_RecordStart (FMOD_SYSTEM *system, int id, FMOD_SOUND *sound, FMOD_BOOL loop); -FMOD_RESULT F_API FMOD_System_RecordStop (FMOD_SYSTEM *system, int id); -FMOD_RESULT F_API FMOD_System_IsRecording (FMOD_SYSTEM *system, int id, FMOD_BOOL *recording); - -/* Geometry API. */ -FMOD_RESULT F_API FMOD_System_CreateGeometry (FMOD_SYSTEM *system, int maxpolygons, int maxvertices, FMOD_GEOMETRY **geometry); -FMOD_RESULT F_API FMOD_System_SetGeometrySettings (FMOD_SYSTEM *system, float maxworldsize); -FMOD_RESULT F_API FMOD_System_GetGeometrySettings (FMOD_SYSTEM *system, float *maxworldsize); -FMOD_RESULT F_API FMOD_System_LoadGeometry (FMOD_SYSTEM *system, const void *data, int datasize, FMOD_GEOMETRY **geometry); -FMOD_RESULT F_API FMOD_System_GetGeometryOcclusion (FMOD_SYSTEM *system, const FMOD_VECTOR *listener, const FMOD_VECTOR *source, float *direct, float *reverb); - -/* Network functions. */ -FMOD_RESULT F_API FMOD_System_SetNetworkProxy (FMOD_SYSTEM *system, const char *proxy); -FMOD_RESULT F_API FMOD_System_GetNetworkProxy (FMOD_SYSTEM *system, char *proxy, int proxylen); -FMOD_RESULT F_API FMOD_System_SetNetworkTimeout (FMOD_SYSTEM *system, int timeout); -FMOD_RESULT F_API FMOD_System_GetNetworkTimeout (FMOD_SYSTEM *system, int *timeout); - -/* Userdata set/get. */ -FMOD_RESULT F_API FMOD_System_SetUserData (FMOD_SYSTEM *system, void *userdata); -FMOD_RESULT F_API FMOD_System_GetUserData (FMOD_SYSTEM *system, void **userdata); - -/* Sound API -*/ - -FMOD_RESULT F_API FMOD_Sound_Release (FMOD_SOUND *sound); -FMOD_RESULT F_API FMOD_Sound_GetSystemObject (FMOD_SOUND *sound, FMOD_SYSTEM **system); - -/* - Standard sound manipulation functions. -*/ - -FMOD_RESULT F_API FMOD_Sound_Lock (FMOD_SOUND *sound, unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); -FMOD_RESULT F_API FMOD_Sound_Unlock (FMOD_SOUND *sound, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); -FMOD_RESULT F_API FMOD_Sound_SetDefaults (FMOD_SOUND *sound, float frequency, int priority); -FMOD_RESULT F_API FMOD_Sound_GetDefaults (FMOD_SOUND *sound, float *frequency, int *priority); -FMOD_RESULT F_API FMOD_Sound_Set3DMinMaxDistance (FMOD_SOUND *sound, float min, float max); -FMOD_RESULT F_API FMOD_Sound_Get3DMinMaxDistance (FMOD_SOUND *sound, float *min, float *max); -FMOD_RESULT F_API FMOD_Sound_Set3DConeSettings (FMOD_SOUND *sound, float insideconeangle, float outsideconeangle, float outsidevolume); -FMOD_RESULT F_API FMOD_Sound_Get3DConeSettings (FMOD_SOUND *sound, float *insideconeangle, float *outsideconeangle, float *outsidevolume); -FMOD_RESULT F_API FMOD_Sound_Set3DCustomRolloff (FMOD_SOUND *sound, FMOD_VECTOR *points, int numpoints); -FMOD_RESULT F_API FMOD_Sound_Get3DCustomRolloff (FMOD_SOUND *sound, FMOD_VECTOR **points, int *numpoints); -FMOD_RESULT F_API FMOD_Sound_GetSubSound (FMOD_SOUND *sound, int index, FMOD_SOUND **subsound); -FMOD_RESULT F_API FMOD_Sound_GetSubSoundParent (FMOD_SOUND *sound, FMOD_SOUND **parentsound); -FMOD_RESULT F_API FMOD_Sound_GetName (FMOD_SOUND *sound, char *name, int namelen); -FMOD_RESULT F_API FMOD_Sound_GetLength (FMOD_SOUND *sound, unsigned int *length, FMOD_TIMEUNIT lengthtype); -FMOD_RESULT F_API FMOD_Sound_GetFormat (FMOD_SOUND *sound, FMOD_SOUND_TYPE *type, FMOD_SOUND_FORMAT *format, int *channels, int *bits); -FMOD_RESULT F_API FMOD_Sound_GetNumSubSounds (FMOD_SOUND *sound, int *numsubsounds); -FMOD_RESULT F_API FMOD_Sound_GetNumTags (FMOD_SOUND *sound, int *numtags, int *numtagsupdated); -FMOD_RESULT F_API FMOD_Sound_GetTag (FMOD_SOUND *sound, const char *name, int index, FMOD_TAG *tag); -FMOD_RESULT F_API FMOD_Sound_GetOpenState (FMOD_SOUND *sound, FMOD_OPENSTATE *openstate, unsigned int *percentbuffered, FMOD_BOOL *starving, FMOD_BOOL *diskbusy); -FMOD_RESULT F_API FMOD_Sound_ReadData (FMOD_SOUND *sound, void *buffer, unsigned int length, unsigned int *read); -FMOD_RESULT F_API FMOD_Sound_SeekData (FMOD_SOUND *sound, unsigned int pcm); - -FMOD_RESULT F_API FMOD_Sound_SetSoundGroup (FMOD_SOUND *sound, FMOD_SOUNDGROUP *soundgroup); -FMOD_RESULT F_API FMOD_Sound_GetSoundGroup (FMOD_SOUND *sound, FMOD_SOUNDGROUP **soundgroup); - -/* - Synchronization point API. These points can come from markers embedded in wav files, and can also generate channel callbacks. -*/ - -FMOD_RESULT F_API FMOD_Sound_GetNumSyncPoints (FMOD_SOUND *sound, int *numsyncpoints); -FMOD_RESULT F_API FMOD_Sound_GetSyncPoint (FMOD_SOUND *sound, int index, FMOD_SYNCPOINT **point); -FMOD_RESULT F_API FMOD_Sound_GetSyncPointInfo (FMOD_SOUND *sound, FMOD_SYNCPOINT *point, char *name, int namelen, unsigned int *offset, FMOD_TIMEUNIT offsettype); -FMOD_RESULT F_API FMOD_Sound_AddSyncPoint (FMOD_SOUND *sound, unsigned int offset, FMOD_TIMEUNIT offsettype, const char *name, FMOD_SYNCPOINT **point); -FMOD_RESULT F_API FMOD_Sound_DeleteSyncPoint (FMOD_SOUND *sound, FMOD_SYNCPOINT *point); - -/* - Functions also in Channel class but here they are the 'default' to save having to change it in Channel all the time. -*/ - -FMOD_RESULT F_API FMOD_Sound_SetMode (FMOD_SOUND *sound, FMOD_MODE mode); -FMOD_RESULT F_API FMOD_Sound_GetMode (FMOD_SOUND *sound, FMOD_MODE *mode); -FMOD_RESULT F_API FMOD_Sound_SetLoopCount (FMOD_SOUND *sound, int loopcount); -FMOD_RESULT F_API FMOD_Sound_GetLoopCount (FMOD_SOUND *sound, int *loopcount); -FMOD_RESULT F_API FMOD_Sound_SetLoopPoints (FMOD_SOUND *sound, unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); -FMOD_RESULT F_API FMOD_Sound_GetLoopPoints (FMOD_SOUND *sound, unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); - -/* - For MOD/S3M/XM/IT/MID sequenced formats only. -*/ - -FMOD_RESULT F_API FMOD_Sound_GetMusicNumChannels (FMOD_SOUND *sound, int *numchannels); -FMOD_RESULT F_API FMOD_Sound_SetMusicChannelVolume (FMOD_SOUND *sound, int channel, float volume); -FMOD_RESULT F_API FMOD_Sound_GetMusicChannelVolume (FMOD_SOUND *sound, int channel, float *volume); -FMOD_RESULT F_API FMOD_Sound_SetMusicSpeed (FMOD_SOUND *sound, float speed); -FMOD_RESULT F_API FMOD_Sound_GetMusicSpeed (FMOD_SOUND *sound, float *speed); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_Sound_SetUserData (FMOD_SOUND *sound, void *userdata); -FMOD_RESULT F_API FMOD_Sound_GetUserData (FMOD_SOUND *sound, void **userdata); - -/* - 'Channel' API -*/ - -FMOD_RESULT F_API FMOD_Channel_GetSystemObject (FMOD_CHANNEL *channel, FMOD_SYSTEM **system); - -/* - General control functionality for Channels and ChannelGroups. -*/ - -FMOD_RESULT F_API FMOD_Channel_Stop (FMOD_CHANNEL *channel); -FMOD_RESULT F_API FMOD_Channel_SetPaused (FMOD_CHANNEL *channel, FMOD_BOOL paused); -FMOD_RESULT F_API FMOD_Channel_GetPaused (FMOD_CHANNEL *channel, FMOD_BOOL *paused); -FMOD_RESULT F_API FMOD_Channel_SetVolume (FMOD_CHANNEL *channel, float volume); -FMOD_RESULT F_API FMOD_Channel_GetVolume (FMOD_CHANNEL *channel, float *volume); -FMOD_RESULT F_API FMOD_Channel_SetVolumeRamp (FMOD_CHANNEL *channel, FMOD_BOOL ramp); -FMOD_RESULT F_API FMOD_Channel_GetVolumeRamp (FMOD_CHANNEL *channel, FMOD_BOOL *ramp); -FMOD_RESULT F_API FMOD_Channel_GetAudibility (FMOD_CHANNEL *channel, float *audibility); -FMOD_RESULT F_API FMOD_Channel_SetPitch (FMOD_CHANNEL *channel, float pitch); -FMOD_RESULT F_API FMOD_Channel_GetPitch (FMOD_CHANNEL *channel, float *pitch); -FMOD_RESULT F_API FMOD_Channel_SetMute (FMOD_CHANNEL *channel, FMOD_BOOL mute); -FMOD_RESULT F_API FMOD_Channel_GetMute (FMOD_CHANNEL *channel, FMOD_BOOL *mute); -FMOD_RESULT F_API FMOD_Channel_SetReverbProperties (FMOD_CHANNEL *channel, int instance, float wet); -FMOD_RESULT F_API FMOD_Channel_GetReverbProperties (FMOD_CHANNEL *channel, int instance, float *wet); -FMOD_RESULT F_API FMOD_Channel_SetLowPassGain (FMOD_CHANNEL *channel, float gain); -FMOD_RESULT F_API FMOD_Channel_GetLowPassGain (FMOD_CHANNEL *channel, float *gain); -FMOD_RESULT F_API FMOD_Channel_SetMode (FMOD_CHANNEL *channel, FMOD_MODE mode); -FMOD_RESULT F_API FMOD_Channel_GetMode (FMOD_CHANNEL *channel, FMOD_MODE *mode); -FMOD_RESULT F_API FMOD_Channel_SetCallback (FMOD_CHANNEL *channel, FMOD_CHANNELCONTROL_CALLBACK callback); -FMOD_RESULT F_API FMOD_Channel_IsPlaying (FMOD_CHANNEL *channel, FMOD_BOOL *isplaying); - -/* - Note all 'set' functions alter a final matrix, this is why the only get function is getMixMatrix, to avoid other get functions returning incorrect/obsolete values. -*/ - -FMOD_RESULT F_API FMOD_Channel_SetPan (FMOD_CHANNEL *channel, float pan); -FMOD_RESULT F_API FMOD_Channel_SetMixLevelsOutput (FMOD_CHANNEL *channel, float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); -FMOD_RESULT F_API FMOD_Channel_SetMixLevelsInput (FMOD_CHANNEL *channel, float *levels, int numlevels); -FMOD_RESULT F_API FMOD_Channel_SetMixMatrix (FMOD_CHANNEL *channel, float *matrix, int outchannels, int inchannels, int inchannel_hop); -FMOD_RESULT F_API FMOD_Channel_GetMixMatrix (FMOD_CHANNEL *channel, float *matrix, int *outchannels, int *inchannels, int inchannel_hop); - -/* - Clock based functionality. -*/ - -FMOD_RESULT F_API FMOD_Channel_GetDSPClock (FMOD_CHANNEL *channel, unsigned long long *dspclock, unsigned long long *parentclock); -FMOD_RESULT F_API FMOD_Channel_SetDelay (FMOD_CHANNEL *channel, unsigned long long dspclock_start, unsigned long long dspclock_end, FMOD_BOOL stopchannels); -FMOD_RESULT F_API FMOD_Channel_GetDelay (FMOD_CHANNEL *channel, unsigned long long *dspclock_start, unsigned long long *dspclock_end, FMOD_BOOL *stopchannels); -FMOD_RESULT F_API FMOD_Channel_AddFadePoint (FMOD_CHANNEL *channel, unsigned long long dspclock, float volume); -FMOD_RESULT F_API FMOD_Channel_SetFadePointRamp (FMOD_CHANNEL *channel, unsigned long long dspclock, float volume); -FMOD_RESULT F_API FMOD_Channel_RemoveFadePoints (FMOD_CHANNEL *channel, unsigned long long dspclock_start, unsigned long long dspclock_end); -FMOD_RESULT F_API FMOD_Channel_GetFadePoints (FMOD_CHANNEL *channel, unsigned int *numpoints, unsigned long long *point_dspclock, float *point_volume); - -/* - DSP effects. -*/ - -FMOD_RESULT F_API FMOD_Channel_GetDSP (FMOD_CHANNEL *channel, int index, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_Channel_AddDSP (FMOD_CHANNEL *channel, int index, FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_Channel_RemoveDSP (FMOD_CHANNEL *channel, FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_Channel_GetNumDSPs (FMOD_CHANNEL *channel, int *numdsps); -FMOD_RESULT F_API FMOD_Channel_SetDSPIndex (FMOD_CHANNEL *channel, FMOD_DSP *dsp, int index); -FMOD_RESULT F_API FMOD_Channel_GetDSPIndex (FMOD_CHANNEL *channel, FMOD_DSP *dsp, int *index); - -/* - 3D functionality. -*/ - -FMOD_RESULT F_API FMOD_Channel_Set3DAttributes (FMOD_CHANNEL *channel, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); -FMOD_RESULT F_API FMOD_Channel_Get3DAttributes (FMOD_CHANNEL *channel, FMOD_VECTOR *pos, FMOD_VECTOR *vel); -FMOD_RESULT F_API FMOD_Channel_Set3DMinMaxDistance (FMOD_CHANNEL *channel, float mindistance, float maxdistance); -FMOD_RESULT F_API FMOD_Channel_Get3DMinMaxDistance (FMOD_CHANNEL *channel, float *mindistance, float *maxdistance); -FMOD_RESULT F_API FMOD_Channel_Set3DConeSettings (FMOD_CHANNEL *channel, float insideconeangle, float outsideconeangle, float outsidevolume); -FMOD_RESULT F_API FMOD_Channel_Get3DConeSettings (FMOD_CHANNEL *channel, float *insideconeangle, float *outsideconeangle, float *outsidevolume); -FMOD_RESULT F_API FMOD_Channel_Set3DConeOrientation (FMOD_CHANNEL *channel, FMOD_VECTOR *orientation); -FMOD_RESULT F_API FMOD_Channel_Get3DConeOrientation (FMOD_CHANNEL *channel, FMOD_VECTOR *orientation); -FMOD_RESULT F_API FMOD_Channel_Set3DCustomRolloff (FMOD_CHANNEL *channel, FMOD_VECTOR *points, int numpoints); -FMOD_RESULT F_API FMOD_Channel_Get3DCustomRolloff (FMOD_CHANNEL *channel, FMOD_VECTOR **points, int *numpoints); -FMOD_RESULT F_API FMOD_Channel_Set3DOcclusion (FMOD_CHANNEL *channel, float directocclusion, float reverbocclusion); -FMOD_RESULT F_API FMOD_Channel_Get3DOcclusion (FMOD_CHANNEL *channel, float *directocclusion, float *reverbocclusion); -FMOD_RESULT F_API FMOD_Channel_Set3DSpread (FMOD_CHANNEL *channel, float angle); -FMOD_RESULT F_API FMOD_Channel_Get3DSpread (FMOD_CHANNEL *channel, float *angle); -FMOD_RESULT F_API FMOD_Channel_Set3DLevel (FMOD_CHANNEL *channel, float level); -FMOD_RESULT F_API FMOD_Channel_Get3DLevel (FMOD_CHANNEL *channel, float *level); -FMOD_RESULT F_API FMOD_Channel_Set3DDopplerLevel (FMOD_CHANNEL *channel, float level); -FMOD_RESULT F_API FMOD_Channel_Get3DDopplerLevel (FMOD_CHANNEL *channel, float *level); -FMOD_RESULT F_API FMOD_Channel_Set3DDistanceFilter (FMOD_CHANNEL *channel, FMOD_BOOL custom, float customLevel, float centerFreq); -FMOD_RESULT F_API FMOD_Channel_Get3DDistanceFilter (FMOD_CHANNEL *channel, FMOD_BOOL *custom, float *customLevel, float *centerFreq); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_Channel_SetUserData (FMOD_CHANNEL *channel, void *userdata); -FMOD_RESULT F_API FMOD_Channel_GetUserData (FMOD_CHANNEL *channel, void **userdata); - -/* - Channel specific control functionality. -*/ - -FMOD_RESULT F_API FMOD_Channel_SetFrequency (FMOD_CHANNEL *channel, float frequency); -FMOD_RESULT F_API FMOD_Channel_GetFrequency (FMOD_CHANNEL *channel, float *frequency); -FMOD_RESULT F_API FMOD_Channel_SetPriority (FMOD_CHANNEL *channel, int priority); -FMOD_RESULT F_API FMOD_Channel_GetPriority (FMOD_CHANNEL *channel, int *priority); -FMOD_RESULT F_API FMOD_Channel_SetPosition (FMOD_CHANNEL *channel, unsigned int position, FMOD_TIMEUNIT postype); -FMOD_RESULT F_API FMOD_Channel_GetPosition (FMOD_CHANNEL *channel, unsigned int *position, FMOD_TIMEUNIT postype); -FMOD_RESULT F_API FMOD_Channel_SetChannelGroup (FMOD_CHANNEL *channel, FMOD_CHANNELGROUP *channelgroup); -FMOD_RESULT F_API FMOD_Channel_GetChannelGroup (FMOD_CHANNEL *channel, FMOD_CHANNELGROUP **channelgroup); -FMOD_RESULT F_API FMOD_Channel_SetLoopCount (FMOD_CHANNEL *channel, int loopcount); -FMOD_RESULT F_API FMOD_Channel_GetLoopCount (FMOD_CHANNEL *channel, int *loopcount); -FMOD_RESULT F_API FMOD_Channel_SetLoopPoints (FMOD_CHANNEL *channel, unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); -FMOD_RESULT F_API FMOD_Channel_GetLoopPoints (FMOD_CHANNEL *channel, unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); - -/* - Information only functions. -*/ - -FMOD_RESULT F_API FMOD_Channel_IsVirtual (FMOD_CHANNEL *channel, FMOD_BOOL *isvirtual); -FMOD_RESULT F_API FMOD_Channel_GetCurrentSound (FMOD_CHANNEL *channel, FMOD_SOUND **sound); -FMOD_RESULT F_API FMOD_Channel_GetIndex (FMOD_CHANNEL *channel, int *index); - -/* - 'ChannelGroup' API -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_GetSystemObject (FMOD_CHANNELGROUP *channelgroup, FMOD_SYSTEM **system); - -/* - General control functionality for Channels and ChannelGroups. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_Stop (FMOD_CHANNELGROUP *channelgroup); -FMOD_RESULT F_API FMOD_ChannelGroup_SetPaused (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused); -FMOD_RESULT F_API FMOD_ChannelGroup_GetPaused (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *paused); -FMOD_RESULT F_API FMOD_ChannelGroup_SetVolume (FMOD_CHANNELGROUP *channelgroup, float volume); -FMOD_RESULT F_API FMOD_ChannelGroup_GetVolume (FMOD_CHANNELGROUP *channelgroup, float *volume); -FMOD_RESULT F_API FMOD_ChannelGroup_SetVolumeRamp (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL ramp); -FMOD_RESULT F_API FMOD_ChannelGroup_GetVolumeRamp (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *ramp); -FMOD_RESULT F_API FMOD_ChannelGroup_GetAudibility (FMOD_CHANNELGROUP *channelgroup, float *audibility); -FMOD_RESULT F_API FMOD_ChannelGroup_SetPitch (FMOD_CHANNELGROUP *channelgroup, float pitch); -FMOD_RESULT F_API FMOD_ChannelGroup_GetPitch (FMOD_CHANNELGROUP *channelgroup, float *pitch); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMute (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL mute); -FMOD_RESULT F_API FMOD_ChannelGroup_GetMute (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *mute); -FMOD_RESULT F_API FMOD_ChannelGroup_SetReverbProperties (FMOD_CHANNELGROUP *channelgroup, int instance, float wet); -FMOD_RESULT F_API FMOD_ChannelGroup_GetReverbProperties (FMOD_CHANNELGROUP *channelgroup, int instance, float *wet); -FMOD_RESULT F_API FMOD_ChannelGroup_SetLowPassGain (FMOD_CHANNELGROUP *channelgroup, float gain); -FMOD_RESULT F_API FMOD_ChannelGroup_GetLowPassGain (FMOD_CHANNELGROUP *channelgroup, float *gain); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMode (FMOD_CHANNELGROUP *channelgroup, FMOD_MODE mode); -FMOD_RESULT F_API FMOD_ChannelGroup_GetMode (FMOD_CHANNELGROUP *channelgroup, FMOD_MODE *mode); -FMOD_RESULT F_API FMOD_ChannelGroup_SetCallback (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELCONTROL_CALLBACK callback); -FMOD_RESULT F_API FMOD_ChannelGroup_IsPlaying (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *isplaying); - -/* - Note all 'set' functions alter a final matrix, this is why the only get function is getMixMatrix, to avoid other get functions returning incorrect/obsolete values. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_SetPan (FMOD_CHANNELGROUP *channelgroup, float pan); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMixLevelsOutput (FMOD_CHANNELGROUP *channelgroup, float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMixLevelsInput (FMOD_CHANNELGROUP *channelgroup, float *levels, int numlevels); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMixMatrix (FMOD_CHANNELGROUP *channelgroup, float *matrix, int outchannels, int inchannels, int inchannel_hop); -FMOD_RESULT F_API FMOD_ChannelGroup_GetMixMatrix (FMOD_CHANNELGROUP *channelgroup, float *matrix, int *outchannels, int *inchannels, int inchannel_hop); - -/* - Clock based functionality. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_GetDSPClock (FMOD_CHANNELGROUP *channelgroup, unsigned long long *dspclock, unsigned long long *parentclock); -FMOD_RESULT F_API FMOD_ChannelGroup_SetDelay (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock_start, unsigned long long dspclock_end, FMOD_BOOL stopchannels); -FMOD_RESULT F_API FMOD_ChannelGroup_GetDelay (FMOD_CHANNELGROUP *channelgroup, unsigned long long *dspclock_start, unsigned long long *dspclock_end, FMOD_BOOL *stopchannels); -FMOD_RESULT F_API FMOD_ChannelGroup_AddFadePoint (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock, float volume); -FMOD_RESULT F_API FMOD_ChannelGroup_SetFadePointRamp (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock, float volume); -FMOD_RESULT F_API FMOD_ChannelGroup_RemoveFadePoints (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock_start, unsigned long long dspclock_end); -FMOD_RESULT F_API FMOD_ChannelGroup_GetFadePoints (FMOD_CHANNELGROUP *channelgroup, unsigned int *numpoints, unsigned long long *point_dspclock, float *point_volume); - -/* - DSP effects. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_GetDSP (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_ChannelGroup_AddDSP (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_ChannelGroup_RemoveDSP (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_ChannelGroup_GetNumDSPs (FMOD_CHANNELGROUP *channelgroup, int *numdsps); -FMOD_RESULT F_API FMOD_ChannelGroup_SetDSPIndex (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp, int index); -FMOD_RESULT F_API FMOD_ChannelGroup_GetDSPIndex (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp, int *index); - -/* - 3D functionality. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DAttributes (FMOD_CHANNELGROUP *channelgroup, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DAttributes (FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *pos, FMOD_VECTOR *vel); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DMinMaxDistance (FMOD_CHANNELGROUP *channelgroup, float mindistance, float maxdistance); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DMinMaxDistance (FMOD_CHANNELGROUP *channelgroup, float *mindistance, float *maxdistance); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DConeSettings (FMOD_CHANNELGROUP *channelgroup, float insideconeangle, float outsideconeangle, float outsidevolume); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DConeSettings (FMOD_CHANNELGROUP *channelgroup, float *insideconeangle, float *outsideconeangle, float *outsidevolume); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DConeOrientation(FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *orientation); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DConeOrientation(FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *orientation); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DCustomRolloff (FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *points, int numpoints); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DCustomRolloff (FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR **points, int *numpoints); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DOcclusion (FMOD_CHANNELGROUP *channelgroup, float directocclusion, float reverbocclusion); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DOcclusion (FMOD_CHANNELGROUP *channelgroup, float *directocclusion, float *reverbocclusion); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DSpread (FMOD_CHANNELGROUP *channelgroup, float angle); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DSpread (FMOD_CHANNELGROUP *channelgroup, float *angle); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DLevel (FMOD_CHANNELGROUP *channelgroup, float level); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DLevel (FMOD_CHANNELGROUP *channelgroup, float *level); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DDopplerLevel (FMOD_CHANNELGROUP *channelgroup, float level); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DDopplerLevel (FMOD_CHANNELGROUP *channelgroup, float *level); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DDistanceFilter (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL custom, float customLevel, float centerFreq); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DDistanceFilter (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *custom, float *customLevel, float *centerFreq); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_SetUserData (FMOD_CHANNELGROUP *channelgroup, void *userdata); -FMOD_RESULT F_API FMOD_ChannelGroup_GetUserData (FMOD_CHANNELGROUP *channelgroup, void **userdata); - -FMOD_RESULT F_API FMOD_ChannelGroup_Release (FMOD_CHANNELGROUP *channelgroup); - -/* - Nested channel groups. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_AddGroup (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELGROUP *group, FMOD_BOOL propagatedspclock, FMOD_DSPCONNECTION **connection); -FMOD_RESULT F_API FMOD_ChannelGroup_GetNumGroups (FMOD_CHANNELGROUP *channelgroup, int *numgroups); -FMOD_RESULT F_API FMOD_ChannelGroup_GetGroup (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_CHANNELGROUP **group); -FMOD_RESULT F_API FMOD_ChannelGroup_GetParentGroup (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELGROUP **group); - -/* - Information only functions. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_GetName (FMOD_CHANNELGROUP *channelgroup, char *name, int namelen); -FMOD_RESULT F_API FMOD_ChannelGroup_GetNumChannels (FMOD_CHANNELGROUP *channelgroup, int *numchannels); -FMOD_RESULT F_API FMOD_ChannelGroup_GetChannel (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_CHANNEL **channel); - -/* - 'SoundGroup' API -*/ - -FMOD_RESULT F_API FMOD_SoundGroup_Release (FMOD_SOUNDGROUP *soundgroup); -FMOD_RESULT F_API FMOD_SoundGroup_GetSystemObject (FMOD_SOUNDGROUP *soundgroup, FMOD_SYSTEM **system); - -/* - SoundGroup control functions. -*/ - -FMOD_RESULT F_API FMOD_SoundGroup_SetMaxAudible (FMOD_SOUNDGROUP *soundgroup, int maxaudible); -FMOD_RESULT F_API FMOD_SoundGroup_GetMaxAudible (FMOD_SOUNDGROUP *soundgroup, int *maxaudible); -FMOD_RESULT F_API FMOD_SoundGroup_SetMaxAudibleBehavior (FMOD_SOUNDGROUP *soundgroup, FMOD_SOUNDGROUP_BEHAVIOR behavior); -FMOD_RESULT F_API FMOD_SoundGroup_GetMaxAudibleBehavior (FMOD_SOUNDGROUP *soundgroup, FMOD_SOUNDGROUP_BEHAVIOR *behavior); -FMOD_RESULT F_API FMOD_SoundGroup_SetMuteFadeSpeed (FMOD_SOUNDGROUP *soundgroup, float speed); -FMOD_RESULT F_API FMOD_SoundGroup_GetMuteFadeSpeed (FMOD_SOUNDGROUP *soundgroup, float *speed); -FMOD_RESULT F_API FMOD_SoundGroup_SetVolume (FMOD_SOUNDGROUP *soundgroup, float volume); -FMOD_RESULT F_API FMOD_SoundGroup_GetVolume (FMOD_SOUNDGROUP *soundgroup, float *volume); -FMOD_RESULT F_API FMOD_SoundGroup_Stop (FMOD_SOUNDGROUP *soundgroup); - -/* - Information only functions. -*/ - -FMOD_RESULT F_API FMOD_SoundGroup_GetName (FMOD_SOUNDGROUP *soundgroup, char *name, int namelen); -FMOD_RESULT F_API FMOD_SoundGroup_GetNumSounds (FMOD_SOUNDGROUP *soundgroup, int *numsounds); -FMOD_RESULT F_API FMOD_SoundGroup_GetSound (FMOD_SOUNDGROUP *soundgroup, int index, FMOD_SOUND **sound); -FMOD_RESULT F_API FMOD_SoundGroup_GetNumPlaying (FMOD_SOUNDGROUP *soundgroup, int *numplaying); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_SoundGroup_SetUserData (FMOD_SOUNDGROUP *soundgroup, void *userdata); -FMOD_RESULT F_API FMOD_SoundGroup_GetUserData (FMOD_SOUNDGROUP *soundgroup, void **userdata); - -/* - 'DSP' API -*/ - -FMOD_RESULT F_API FMOD_DSP_Release (FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_DSP_GetSystemObject (FMOD_DSP *dsp, FMOD_SYSTEM **system); - -/* - Connection / disconnection / input and output enumeration. -*/ - -FMOD_RESULT F_API FMOD_DSP_AddInput (FMOD_DSP *dsp, FMOD_DSP *input, FMOD_DSPCONNECTION **connection, FMOD_DSPCONNECTION_TYPE type); -FMOD_RESULT F_API FMOD_DSP_DisconnectFrom (FMOD_DSP *dsp, FMOD_DSP *target, FMOD_DSPCONNECTION *connection); -FMOD_RESULT F_API FMOD_DSP_DisconnectAll (FMOD_DSP *dsp, FMOD_BOOL inputs, FMOD_BOOL outputs); -FMOD_RESULT F_API FMOD_DSP_GetNumInputs (FMOD_DSP *dsp, int *numinputs); -FMOD_RESULT F_API FMOD_DSP_GetNumOutputs (FMOD_DSP *dsp, int *numoutputs); -FMOD_RESULT F_API FMOD_DSP_GetInput (FMOD_DSP *dsp, int index, FMOD_DSP **input, FMOD_DSPCONNECTION **inputconnection); -FMOD_RESULT F_API FMOD_DSP_GetOutput (FMOD_DSP *dsp, int index, FMOD_DSP **output, FMOD_DSPCONNECTION **outputconnection); - -/* - DSP unit control. -*/ - -FMOD_RESULT F_API FMOD_DSP_SetActive (FMOD_DSP *dsp, FMOD_BOOL active); -FMOD_RESULT F_API FMOD_DSP_GetActive (FMOD_DSP *dsp, FMOD_BOOL *active); -FMOD_RESULT F_API FMOD_DSP_SetBypass (FMOD_DSP *dsp, FMOD_BOOL bypass); -FMOD_RESULT F_API FMOD_DSP_GetBypass (FMOD_DSP *dsp, FMOD_BOOL *bypass); -FMOD_RESULT F_API FMOD_DSP_SetWetDryMix (FMOD_DSP *dsp, float prewet, float postwet, float dry); -FMOD_RESULT F_API FMOD_DSP_GetWetDryMix (FMOD_DSP *dsp, float *prewet, float *postwet, float *dry); -FMOD_RESULT F_API FMOD_DSP_SetChannelFormat (FMOD_DSP *dsp, FMOD_CHANNELMASK channelmask, int numchannels, FMOD_SPEAKERMODE source_speakermode); -FMOD_RESULT F_API FMOD_DSP_GetChannelFormat (FMOD_DSP *dsp, FMOD_CHANNELMASK *channelmask, int *numchannels, FMOD_SPEAKERMODE *source_speakermode); -FMOD_RESULT F_API FMOD_DSP_GetOutputChannelFormat (FMOD_DSP *dsp, FMOD_CHANNELMASK inmask, int inchannels, FMOD_SPEAKERMODE inspeakermode, FMOD_CHANNELMASK *outmask, int *outchannels, FMOD_SPEAKERMODE *outspeakermode); -FMOD_RESULT F_API FMOD_DSP_Reset (FMOD_DSP *dsp); - -/* - DSP parameter control. -*/ - -FMOD_RESULT F_API FMOD_DSP_SetParameterFloat (FMOD_DSP *dsp, int index, float value); -FMOD_RESULT F_API FMOD_DSP_SetParameterInt (FMOD_DSP *dsp, int index, int value); -FMOD_RESULT F_API FMOD_DSP_SetParameterBool (FMOD_DSP *dsp, int index, FMOD_BOOL value); -FMOD_RESULT F_API FMOD_DSP_SetParameterData (FMOD_DSP *dsp, int index, void *data, unsigned int length); -FMOD_RESULT F_API FMOD_DSP_GetParameterFloat (FMOD_DSP *dsp, int index, float *value, char *valuestr, int valuestrlen); -FMOD_RESULT F_API FMOD_DSP_GetParameterInt (FMOD_DSP *dsp, int index, int *value, char *valuestr, int valuestrlen); -FMOD_RESULT F_API FMOD_DSP_GetParameterBool (FMOD_DSP *dsp, int index, FMOD_BOOL *value, char *valuestr, int valuestrlen); -FMOD_RESULT F_API FMOD_DSP_GetParameterData (FMOD_DSP *dsp, int index, void **data, unsigned int *length, char *valuestr, int valuestrlen); -FMOD_RESULT F_API FMOD_DSP_GetNumParameters (FMOD_DSP *dsp, int *numparams); -FMOD_RESULT F_API FMOD_DSP_GetParameterInfo (FMOD_DSP *dsp, int index, FMOD_DSP_PARAMETER_DESC **desc); -FMOD_RESULT F_API FMOD_DSP_GetDataParameterIndex (FMOD_DSP *dsp, int datatype, int *index); -FMOD_RESULT F_API FMOD_DSP_ShowConfigDialog (FMOD_DSP *dsp, void *hwnd, FMOD_BOOL show); - -/* - DSP attributes. -*/ - -FMOD_RESULT F_API FMOD_DSP_GetInfo (FMOD_DSP *dsp, char *name, unsigned int *version, int *channels, int *configwidth, int *configheight); -FMOD_RESULT F_API FMOD_DSP_GetType (FMOD_DSP *dsp, FMOD_DSP_TYPE *type); -FMOD_RESULT F_API FMOD_DSP_GetIdle (FMOD_DSP *dsp, FMOD_BOOL *idle); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_DSP_SetUserData (FMOD_DSP *dsp, void *userdata); -FMOD_RESULT F_API FMOD_DSP_GetUserData (FMOD_DSP *dsp, void **userdata); - -/* - Metering. -*/ - -FMOD_RESULT F_API FMOD_DSP_SetMeteringEnabled (FMOD_DSP *dsp, FMOD_BOOL inputEnabled, FMOD_BOOL outputEnabled); -FMOD_RESULT F_API FMOD_DSP_GetMeteringEnabled (FMOD_DSP *dsp, FMOD_BOOL *inputEnabled, FMOD_BOOL *outputEnabled); -FMOD_RESULT F_API FMOD_DSP_GetMeteringInfo (FMOD_DSP *dsp, FMOD_DSP_METERING_INFO *inputInfo, FMOD_DSP_METERING_INFO *outputInfo); -FMOD_RESULT F_API FMOD_DSP_GetCPUUsage (FMOD_DSP *dsp, unsigned int *exclusive, unsigned int *inclusive); - -/* - 'DSPConnection' API -*/ - -FMOD_RESULT F_API FMOD_DSPConnection_GetInput (FMOD_DSPCONNECTION *dspconnection, FMOD_DSP **input); -FMOD_RESULT F_API FMOD_DSPConnection_GetOutput (FMOD_DSPCONNECTION *dspconnection, FMOD_DSP **output); -FMOD_RESULT F_API FMOD_DSPConnection_SetMix (FMOD_DSPCONNECTION *dspconnection, float volume); -FMOD_RESULT F_API FMOD_DSPConnection_GetMix (FMOD_DSPCONNECTION *dspconnection, float *volume); -FMOD_RESULT F_API FMOD_DSPConnection_SetMixMatrix (FMOD_DSPCONNECTION *dspconnection, float *matrix, int outchannels, int inchannels, int inchannel_hop); -FMOD_RESULT F_API FMOD_DSPConnection_GetMixMatrix (FMOD_DSPCONNECTION *dspconnection, float *matrix, int *outchannels, int *inchannels, int inchannel_hop); -FMOD_RESULT F_API FMOD_DSPConnection_GetType (FMOD_DSPCONNECTION *dspconnection, FMOD_DSPCONNECTION_TYPE *type); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_DSPConnection_SetUserData (FMOD_DSPCONNECTION *dspconnection, void *userdata); -FMOD_RESULT F_API FMOD_DSPConnection_GetUserData (FMOD_DSPCONNECTION *dspconnection, void **userdata); - -/* - 'Geometry' API -*/ - -FMOD_RESULT F_API FMOD_Geometry_Release (FMOD_GEOMETRY *geometry); - -/* - Polygon manipulation. -*/ - -FMOD_RESULT F_API FMOD_Geometry_AddPolygon (FMOD_GEOMETRY *geometry, float directocclusion, float reverbocclusion, FMOD_BOOL doublesided, int numvertices, const FMOD_VECTOR *vertices, int *polygonindex); -FMOD_RESULT F_API FMOD_Geometry_GetNumPolygons (FMOD_GEOMETRY *geometry, int *numpolygons); -FMOD_RESULT F_API FMOD_Geometry_GetMaxPolygons (FMOD_GEOMETRY *geometry, int *maxpolygons, int *maxvertices); -FMOD_RESULT F_API FMOD_Geometry_GetPolygonNumVertices (FMOD_GEOMETRY *geometry, int index, int *numvertices); -FMOD_RESULT F_API FMOD_Geometry_SetPolygonVertex (FMOD_GEOMETRY *geometry, int index, int vertexindex, const FMOD_VECTOR *vertex); -FMOD_RESULT F_API FMOD_Geometry_GetPolygonVertex (FMOD_GEOMETRY *geometry, int index, int vertexindex, FMOD_VECTOR *vertex); -FMOD_RESULT F_API FMOD_Geometry_SetPolygonAttributes (FMOD_GEOMETRY *geometry, int index, float directocclusion, float reverbocclusion, FMOD_BOOL doublesided); -FMOD_RESULT F_API FMOD_Geometry_GetPolygonAttributes (FMOD_GEOMETRY *geometry, int index, float *directocclusion, float *reverbocclusion, FMOD_BOOL *doublesided); - -/* - Object manipulation. -*/ - -FMOD_RESULT F_API FMOD_Geometry_SetActive (FMOD_GEOMETRY *geometry, FMOD_BOOL active); -FMOD_RESULT F_API FMOD_Geometry_GetActive (FMOD_GEOMETRY *geometry, FMOD_BOOL *active); -FMOD_RESULT F_API FMOD_Geometry_SetRotation (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); -FMOD_RESULT F_API FMOD_Geometry_GetRotation (FMOD_GEOMETRY *geometry, FMOD_VECTOR *forward, FMOD_VECTOR *up); -FMOD_RESULT F_API FMOD_Geometry_SetPosition (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *position); -FMOD_RESULT F_API FMOD_Geometry_GetPosition (FMOD_GEOMETRY *geometry, FMOD_VECTOR *position); -FMOD_RESULT F_API FMOD_Geometry_SetScale (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *scale); -FMOD_RESULT F_API FMOD_Geometry_GetScale (FMOD_GEOMETRY *geometry, FMOD_VECTOR *scale); -FMOD_RESULT F_API FMOD_Geometry_Save (FMOD_GEOMETRY *geometry, void *data, int *datasize); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_Geometry_SetUserData (FMOD_GEOMETRY *geometry, void *userdata); -FMOD_RESULT F_API FMOD_Geometry_GetUserData (FMOD_GEOMETRY *geometry, void **userdata); - -/* - 'Reverb3D' API -*/ - -FMOD_RESULT F_API FMOD_Reverb3D_Release (FMOD_REVERB3D *reverb3d); - -/* - Reverb manipulation. -*/ - -FMOD_RESULT F_API FMOD_Reverb3D_Set3DAttributes (FMOD_REVERB3D *reverb3d, const FMOD_VECTOR *position, float mindistance, float maxdistance); -FMOD_RESULT F_API FMOD_Reverb3D_Get3DAttributes (FMOD_REVERB3D *reverb3d, FMOD_VECTOR *position, float *mindistance, float *maxdistance); -FMOD_RESULT F_API FMOD_Reverb3D_SetProperties (FMOD_REVERB3D *reverb3d, const FMOD_REVERB_PROPERTIES *properties); -FMOD_RESULT F_API FMOD_Reverb3D_GetProperties (FMOD_REVERB3D *reverb3d, FMOD_REVERB_PROPERTIES *properties); -FMOD_RESULT F_API FMOD_Reverb3D_SetActive (FMOD_REVERB3D *reverb3d, FMOD_BOOL active); -FMOD_RESULT F_API FMOD_Reverb3D_GetActive (FMOD_REVERB3D *reverb3d, FMOD_BOOL *active); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_Reverb3D_SetUserData (FMOD_REVERB3D *reverb3d, void *userdata); -FMOD_RESULT F_API FMOD_Reverb3D_GetUserData (FMOD_REVERB3D *reverb3d, void **userdata); - -#ifdef __cplusplus -} -#endif - -#endif /* _FMOD_H */ diff --git a/Toshi/vendor/fmod/include/fmod/core/fmod.hpp b/Toshi/vendor/fmod/include/fmod/core/fmod.hpp deleted file mode 100644 index f57c1c6..0000000 --- a/Toshi/vendor/fmod/include/fmod/core/fmod.hpp +++ /dev/null @@ -1,606 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - C++ header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header in conjunction with fmod_common.h (which contains all the constants / */ -/* callbacks) to develop using the C++ language. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api.html */ -/* ======================================================================================== */ -#ifndef _FMOD_HPP -#define _FMOD_HPP - -#include "fmod_common.h" -#include "fmod.h" - -/* - FMOD Namespace -*/ -namespace FMOD -{ - class System; - class Sound; - class ChannelControl; - class Channel; - class ChannelGroup; - class SoundGroup; - class DSP; - class DSPConnection; - class Geometry; - class Reverb3D; - - /* - FMOD global system functions (optional). - */ - inline FMOD_RESULT Memory_Initialize (void *poolmem, int poollen, FMOD_MEMORY_ALLOC_CALLBACK useralloc, FMOD_MEMORY_REALLOC_CALLBACK userrealloc, FMOD_MEMORY_FREE_CALLBACK userfree, FMOD_MEMORY_TYPE memtypeflags = FMOD_MEMORY_ALL) { return FMOD_Memory_Initialize(poolmem, poollen, useralloc, userrealloc, userfree, memtypeflags); } - inline FMOD_RESULT Memory_GetStats (int *currentalloced, int *maxalloced, bool blocking = true) { return FMOD_Memory_GetStats(currentalloced, maxalloced, blocking); } - inline FMOD_RESULT Debug_Initialize (FMOD_DEBUG_FLAGS flags, FMOD_DEBUG_MODE mode = FMOD_DEBUG_MODE_TTY, FMOD_DEBUG_CALLBACK callback = 0, const char *filename = 0) { return FMOD_Debug_Initialize(flags, mode, callback, filename); } - inline FMOD_RESULT File_SetDiskBusy (int busy) { return FMOD_File_SetDiskBusy(busy); } - inline FMOD_RESULT File_GetDiskBusy (int *busy) { return FMOD_File_GetDiskBusy(busy); } - inline FMOD_RESULT Thread_SetAttributes (FMOD_THREAD_TYPE type, FMOD_THREAD_AFFINITY affinity = FMOD_THREAD_AFFINITY_GROUP_DEFAULT, FMOD_THREAD_PRIORITY priority = FMOD_THREAD_PRIORITY_DEFAULT, FMOD_THREAD_STACK_SIZE stacksize = FMOD_THREAD_STACK_SIZE_DEFAULT) { return FMOD_Thread_SetAttributes(type, affinity, priority, stacksize); } - - /* - FMOD System factory functions. - */ - inline FMOD_RESULT System_Create (System **system, unsigned int headerversion = FMOD_VERSION) { return FMOD_System_Create((FMOD_SYSTEM **)system, headerversion); } - - /* - 'System' API - */ - class System - { - private: - - // Constructor made private so user cannot statically instance a System class. System_Create must be used. - System(); - System(const System &); - - public: - - FMOD_RESULT F_API release (); - - // Setup functions. - FMOD_RESULT F_API setOutput (FMOD_OUTPUTTYPE output); - FMOD_RESULT F_API getOutput (FMOD_OUTPUTTYPE *output); - FMOD_RESULT F_API getNumDrivers (int *numdrivers); - FMOD_RESULT F_API getDriverInfo (int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels); - FMOD_RESULT F_API setDriver (int driver); - FMOD_RESULT F_API getDriver (int *driver); - FMOD_RESULT F_API setSoftwareChannels (int numsoftwarechannels); - FMOD_RESULT F_API getSoftwareChannels (int *numsoftwarechannels); - FMOD_RESULT F_API setSoftwareFormat (int samplerate, FMOD_SPEAKERMODE speakermode, int numrawspeakers); - FMOD_RESULT F_API getSoftwareFormat (int *samplerate, FMOD_SPEAKERMODE *speakermode, int *numrawspeakers); - FMOD_RESULT F_API setDSPBufferSize (unsigned int bufferlength, int numbuffers); - FMOD_RESULT F_API getDSPBufferSize (unsigned int *bufferlength, int *numbuffers); - FMOD_RESULT F_API setFileSystem (FMOD_FILE_OPEN_CALLBACK useropen, FMOD_FILE_CLOSE_CALLBACK userclose, FMOD_FILE_READ_CALLBACK userread, FMOD_FILE_SEEK_CALLBACK userseek, FMOD_FILE_ASYNCREAD_CALLBACK userasyncread, FMOD_FILE_ASYNCCANCEL_CALLBACK userasynccancel, int blockalign); - FMOD_RESULT F_API attachFileSystem (FMOD_FILE_OPEN_CALLBACK useropen, FMOD_FILE_CLOSE_CALLBACK userclose, FMOD_FILE_READ_CALLBACK userread, FMOD_FILE_SEEK_CALLBACK userseek); - FMOD_RESULT F_API setAdvancedSettings (FMOD_ADVANCEDSETTINGS *settings); - FMOD_RESULT F_API getAdvancedSettings (FMOD_ADVANCEDSETTINGS *settings); - FMOD_RESULT F_API setCallback (FMOD_SYSTEM_CALLBACK callback, FMOD_SYSTEM_CALLBACK_TYPE callbackmask = FMOD_SYSTEM_CALLBACK_ALL); - - // Plug-in support. - FMOD_RESULT F_API setPluginPath (const char *path); - FMOD_RESULT F_API loadPlugin (const char *filename, unsigned int *handle, unsigned int priority = 0); - FMOD_RESULT F_API unloadPlugin (unsigned int handle); - FMOD_RESULT F_API getNumNestedPlugins (unsigned int handle, int *count); - FMOD_RESULT F_API getNestedPlugin (unsigned int handle, int index, unsigned int *nestedhandle); - FMOD_RESULT F_API getNumPlugins (FMOD_PLUGINTYPE plugintype, int *numplugins); - FMOD_RESULT F_API getPluginHandle (FMOD_PLUGINTYPE plugintype, int index, unsigned int *handle); - FMOD_RESULT F_API getPluginInfo (unsigned int handle, FMOD_PLUGINTYPE *plugintype, char *name, int namelen, unsigned int *version); - FMOD_RESULT F_API setOutputByPlugin (unsigned int handle); - FMOD_RESULT F_API getOutputByPlugin (unsigned int *handle); - FMOD_RESULT F_API createDSPByPlugin (unsigned int handle, DSP **dsp); - FMOD_RESULT F_API getDSPInfoByPlugin (unsigned int handle, const FMOD_DSP_DESCRIPTION **description); - FMOD_RESULT F_API registerCodec (FMOD_CODEC_DESCRIPTION *description, unsigned int *handle, unsigned int priority = 0); - FMOD_RESULT F_API registerDSP (const FMOD_DSP_DESCRIPTION *description, unsigned int *handle); - FMOD_RESULT F_API registerOutput (const FMOD_OUTPUT_DESCRIPTION *description, unsigned int *handle); - - // Init/Close. - FMOD_RESULT F_API init (int maxchannels, FMOD_INITFLAGS flags, void *extradriverdata); - FMOD_RESULT F_API close (); - - // General post-init system functions. - FMOD_RESULT F_API update (); /* IMPORTANT! CALL THIS ONCE PER FRAME! */ - - FMOD_RESULT F_API setSpeakerPosition (FMOD_SPEAKER speaker, float x, float y, bool active); - FMOD_RESULT F_API getSpeakerPosition (FMOD_SPEAKER speaker, float *x, float *y, bool *active); - FMOD_RESULT F_API setStreamBufferSize (unsigned int filebuffersize, FMOD_TIMEUNIT filebuffersizetype); - FMOD_RESULT F_API getStreamBufferSize (unsigned int *filebuffersize, FMOD_TIMEUNIT *filebuffersizetype); - FMOD_RESULT F_API set3DSettings (float dopplerscale, float distancefactor, float rolloffscale); - FMOD_RESULT F_API get3DSettings (float *dopplerscale, float *distancefactor, float *rolloffscale); - FMOD_RESULT F_API set3DNumListeners (int numlisteners); - FMOD_RESULT F_API get3DNumListeners (int *numlisteners); - FMOD_RESULT F_API set3DListenerAttributes (int listener, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); - FMOD_RESULT F_API get3DListenerAttributes (int listener, FMOD_VECTOR *pos, FMOD_VECTOR *vel, FMOD_VECTOR *forward, FMOD_VECTOR *up); - FMOD_RESULT F_API set3DRolloffCallback (FMOD_3D_ROLLOFF_CALLBACK callback); - FMOD_RESULT F_API mixerSuspend (); - FMOD_RESULT F_API mixerResume (); - FMOD_RESULT F_API getDefaultMixMatrix (FMOD_SPEAKERMODE sourcespeakermode, FMOD_SPEAKERMODE targetspeakermode, float *matrix, int matrixhop); - FMOD_RESULT F_API getSpeakerModeChannels (FMOD_SPEAKERMODE mode, int *channels); - - // System information functions. - FMOD_RESULT F_API getVersion (unsigned int *version); - FMOD_RESULT F_API getOutputHandle (void **handle); - FMOD_RESULT F_API getChannelsPlaying (int *channels, int *realchannels = 0); - FMOD_RESULT F_API getCPUUsage (FMOD_CPU_USAGE *usage); - FMOD_RESULT F_API getFileUsage (long long *sampleBytesRead, long long *streamBytesRead, long long *otherBytesRead); - - // Sound/DSP/Channel/FX creation and retrieval. - FMOD_RESULT F_API createSound (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound); - FMOD_RESULT F_API createStream (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound); - FMOD_RESULT F_API createDSP (const FMOD_DSP_DESCRIPTION *description, DSP **dsp); - FMOD_RESULT F_API createDSPByType (FMOD_DSP_TYPE type, DSP **dsp); - FMOD_RESULT F_API createChannelGroup (const char *name, ChannelGroup **channelgroup); - FMOD_RESULT F_API createSoundGroup (const char *name, SoundGroup **soundgroup); - FMOD_RESULT F_API createReverb3D (Reverb3D **reverb); - - FMOD_RESULT F_API playSound (Sound *sound, ChannelGroup *channelgroup, bool paused, Channel **channel); - FMOD_RESULT F_API playDSP (DSP *dsp, ChannelGroup *channelgroup, bool paused, Channel **channel); - FMOD_RESULT F_API getChannel (int channelid, Channel **channel); - FMOD_RESULT F_API getDSPInfoByType (FMOD_DSP_TYPE type, const FMOD_DSP_DESCRIPTION **description); - FMOD_RESULT F_API getMasterChannelGroup (ChannelGroup **channelgroup); - FMOD_RESULT F_API getMasterSoundGroup (SoundGroup **soundgroup); - - // Routing to ports. - FMOD_RESULT F_API attachChannelGroupToPort (FMOD_PORT_TYPE portType, FMOD_PORT_INDEX portIndex, ChannelGroup *channelgroup, bool passThru = false); - FMOD_RESULT F_API detachChannelGroupFromPort (ChannelGroup *channelgroup); - - // Reverb API. - FMOD_RESULT F_API setReverbProperties (int instance, const FMOD_REVERB_PROPERTIES *prop); - FMOD_RESULT F_API getReverbProperties (int instance, FMOD_REVERB_PROPERTIES *prop); - - // System level DSP functionality. - FMOD_RESULT F_API lockDSP (); - FMOD_RESULT F_API unlockDSP (); - - // Recording API. - FMOD_RESULT F_API getRecordNumDrivers (int *numdrivers, int *numconnected); - FMOD_RESULT F_API getRecordDriverInfo (int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels, FMOD_DRIVER_STATE *state); - FMOD_RESULT F_API getRecordPosition (int id, unsigned int *position); - FMOD_RESULT F_API recordStart (int id, Sound *sound, bool loop); - FMOD_RESULT F_API recordStop (int id); - FMOD_RESULT F_API isRecording (int id, bool *recording); - - // Geometry API. - FMOD_RESULT F_API createGeometry (int maxpolygons, int maxvertices, Geometry **geometry); - FMOD_RESULT F_API setGeometrySettings (float maxworldsize); - FMOD_RESULT F_API getGeometrySettings (float *maxworldsize); - FMOD_RESULT F_API loadGeometry (const void *data, int datasize, Geometry **geometry); - FMOD_RESULT F_API getGeometryOcclusion (const FMOD_VECTOR *listener, const FMOD_VECTOR *source, float *direct, float *reverb); - - // Network functions. - FMOD_RESULT F_API setNetworkProxy (const char *proxy); - FMOD_RESULT F_API getNetworkProxy (char *proxy, int proxylen); - FMOD_RESULT F_API setNetworkTimeout (int timeout); - FMOD_RESULT F_API getNetworkTimeout (int *timeout); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - /* - 'Sound' API - */ - class Sound - { - private: - - // Constructor made private so user cannot statically instance a Sound class. Appropriate Sound creation or retrieval function must be used. - Sound(); - Sound(const Sound &); - - public: - - FMOD_RESULT F_API release (); - FMOD_RESULT F_API getSystemObject (System **system); - - // Standard sound manipulation functions. - FMOD_RESULT F_API lock (unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); - FMOD_RESULT F_API unlock (void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); - FMOD_RESULT F_API setDefaults (float frequency, int priority); - FMOD_RESULT F_API getDefaults (float *frequency, int *priority); - FMOD_RESULT F_API set3DMinMaxDistance (float min, float max); - FMOD_RESULT F_API get3DMinMaxDistance (float *min, float *max); - FMOD_RESULT F_API set3DConeSettings (float insideconeangle, float outsideconeangle, float outsidevolume); - FMOD_RESULT F_API get3DConeSettings (float *insideconeangle, float *outsideconeangle, float *outsidevolume); - FMOD_RESULT F_API set3DCustomRolloff (FMOD_VECTOR *points, int numpoints); - FMOD_RESULT F_API get3DCustomRolloff (FMOD_VECTOR **points, int *numpoints); - FMOD_RESULT F_API getSubSound (int index, Sound **subsound); - FMOD_RESULT F_API getSubSoundParent (Sound **parentsound); - FMOD_RESULT F_API getName (char *name, int namelen); - FMOD_RESULT F_API getLength (unsigned int *length, FMOD_TIMEUNIT lengthtype); - FMOD_RESULT F_API getFormat (FMOD_SOUND_TYPE *type, FMOD_SOUND_FORMAT *format, int *channels, int *bits); - FMOD_RESULT F_API getNumSubSounds (int *numsubsounds); - FMOD_RESULT F_API getNumTags (int *numtags, int *numtagsupdated); - FMOD_RESULT F_API getTag (const char *name, int index, FMOD_TAG *tag); - FMOD_RESULT F_API getOpenState (FMOD_OPENSTATE *openstate, unsigned int *percentbuffered, bool *starving, bool *diskbusy); - FMOD_RESULT F_API readData (void *buffer, unsigned int length, unsigned int *read); - FMOD_RESULT F_API seekData (unsigned int pcm); - - FMOD_RESULT F_API setSoundGroup (SoundGroup *soundgroup); - FMOD_RESULT F_API getSoundGroup (SoundGroup **soundgroup); - - // Synchronization point API. These points can come from markers embedded in wav files, and can also generate channel callbacks. - FMOD_RESULT F_API getNumSyncPoints (int *numsyncpoints); - FMOD_RESULT F_API getSyncPoint (int index, FMOD_SYNCPOINT **point); - FMOD_RESULT F_API getSyncPointInfo (FMOD_SYNCPOINT *point, char *name, int namelen, unsigned int *offset, FMOD_TIMEUNIT offsettype); - FMOD_RESULT F_API addSyncPoint (unsigned int offset, FMOD_TIMEUNIT offsettype, const char *name, FMOD_SYNCPOINT **point); - FMOD_RESULT F_API deleteSyncPoint (FMOD_SYNCPOINT *point); - - // Functions also in Channel class but here they are the 'default' to save having to change it in Channel all the time. - FMOD_RESULT F_API setMode (FMOD_MODE mode); - FMOD_RESULT F_API getMode (FMOD_MODE *mode); - FMOD_RESULT F_API setLoopCount (int loopcount); - FMOD_RESULT F_API getLoopCount (int *loopcount); - FMOD_RESULT F_API setLoopPoints (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); - FMOD_RESULT F_API getLoopPoints (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); - - // For MOD/S3M/XM/IT/MID sequenced formats only. - FMOD_RESULT F_API getMusicNumChannels (int *numchannels); - FMOD_RESULT F_API setMusicChannelVolume (int channel, float volume); - FMOD_RESULT F_API getMusicChannelVolume (int channel, float *volume); - FMOD_RESULT F_API setMusicSpeed (float speed); - FMOD_RESULT F_API getMusicSpeed (float *speed); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - - /* - 'ChannelControl API'. This is a base class for Channel and ChannelGroup so they can share the same functionality. This cannot be used or instansiated explicitly. - */ - class ChannelControl - { - private: - - // Constructor made private so user cannot statically instance a Control class. - ChannelControl(); - ChannelControl(const ChannelControl &); - - public: - - FMOD_RESULT F_API getSystemObject (System **system); - - // General control functionality for Channels and ChannelGroups. - FMOD_RESULT F_API stop (); - FMOD_RESULT F_API setPaused (bool paused); - FMOD_RESULT F_API getPaused (bool *paused); - FMOD_RESULT F_API setVolume (float volume); - FMOD_RESULT F_API getVolume (float *volume); - FMOD_RESULT F_API setVolumeRamp (bool ramp); - FMOD_RESULT F_API getVolumeRamp (bool *ramp); - FMOD_RESULT F_API getAudibility (float *audibility); - FMOD_RESULT F_API setPitch (float pitch); - FMOD_RESULT F_API getPitch (float *pitch); - FMOD_RESULT F_API setMute (bool mute); - FMOD_RESULT F_API getMute (bool *mute); - FMOD_RESULT F_API setReverbProperties (int instance, float wet); - FMOD_RESULT F_API getReverbProperties (int instance, float *wet); - FMOD_RESULT F_API setLowPassGain (float gain); - FMOD_RESULT F_API getLowPassGain (float *gain); - FMOD_RESULT F_API setMode (FMOD_MODE mode); - FMOD_RESULT F_API getMode (FMOD_MODE *mode); - FMOD_RESULT F_API setCallback (FMOD_CHANNELCONTROL_CALLBACK callback); - FMOD_RESULT F_API isPlaying (bool *isplaying); - - // Panning and level adjustment. - // Note all 'set' functions alter a final matrix, this is why the only get function is getMixMatrix, to avoid other get functions returning incorrect/obsolete values. - FMOD_RESULT F_API setPan (float pan); - FMOD_RESULT F_API setMixLevelsOutput (float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); - FMOD_RESULT F_API setMixLevelsInput (float *levels, int numlevels); - FMOD_RESULT F_API setMixMatrix (float *matrix, int outchannels, int inchannels, int inchannel_hop = 0); - FMOD_RESULT F_API getMixMatrix (float *matrix, int *outchannels, int *inchannels, int inchannel_hop = 0); - - // Clock based functionality. - FMOD_RESULT F_API getDSPClock (unsigned long long *dspclock, unsigned long long *parentclock); - FMOD_RESULT F_API setDelay (unsigned long long dspclock_start, unsigned long long dspclock_end, bool stopchannels = true); - FMOD_RESULT F_API getDelay (unsigned long long *dspclock_start, unsigned long long *dspclock_end, bool *stopchannels = 0); - FMOD_RESULT F_API addFadePoint (unsigned long long dspclock, float volume); - FMOD_RESULT F_API setFadePointRamp (unsigned long long dspclock, float volume); - FMOD_RESULT F_API removeFadePoints (unsigned long long dspclock_start, unsigned long long dspclock_end); - FMOD_RESULT F_API getFadePoints (unsigned int *numpoints, unsigned long long *point_dspclock, float *point_volume); - - // DSP effects. - FMOD_RESULT F_API getDSP (int index, DSP **dsp); - FMOD_RESULT F_API addDSP (int index, DSP *dsp); - FMOD_RESULT F_API removeDSP (DSP *dsp); - FMOD_RESULT F_API getNumDSPs (int *numdsps); - FMOD_RESULT F_API setDSPIndex (DSP *dsp, int index); - FMOD_RESULT F_API getDSPIndex (DSP *dsp, int *index); - - // 3D functionality. - FMOD_RESULT F_API set3DAttributes (const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); - FMOD_RESULT F_API get3DAttributes (FMOD_VECTOR *pos, FMOD_VECTOR *vel); - FMOD_RESULT F_API set3DMinMaxDistance (float mindistance, float maxdistance); - FMOD_RESULT F_API get3DMinMaxDistance (float *mindistance, float *maxdistance); - FMOD_RESULT F_API set3DConeSettings (float insideconeangle, float outsideconeangle, float outsidevolume); - FMOD_RESULT F_API get3DConeSettings (float *insideconeangle, float *outsideconeangle, float *outsidevolume); - FMOD_RESULT F_API set3DConeOrientation (FMOD_VECTOR *orientation); - FMOD_RESULT F_API get3DConeOrientation (FMOD_VECTOR *orientation); - FMOD_RESULT F_API set3DCustomRolloff (FMOD_VECTOR *points, int numpoints); - FMOD_RESULT F_API get3DCustomRolloff (FMOD_VECTOR **points, int *numpoints); - FMOD_RESULT F_API set3DOcclusion (float directocclusion, float reverbocclusion); - FMOD_RESULT F_API get3DOcclusion (float *directocclusion, float *reverbocclusion); - FMOD_RESULT F_API set3DSpread (float angle); - FMOD_RESULT F_API get3DSpread (float *angle); - FMOD_RESULT F_API set3DLevel (float level); - FMOD_RESULT F_API get3DLevel (float *level); - FMOD_RESULT F_API set3DDopplerLevel (float level); - FMOD_RESULT F_API get3DDopplerLevel (float *level); - FMOD_RESULT F_API set3DDistanceFilter (bool custom, float customLevel, float centerFreq); - FMOD_RESULT F_API get3DDistanceFilter (bool *custom, float *customLevel, float *centerFreq); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - /* - 'Channel' API. - */ - class Channel : public ChannelControl - { - private: - - // Constructor made private so user cannot statically instance a Channel class. Appropriate Channel creation or retrieval function must be used. - Channel(); - Channel(const Channel &); - - public: - - // Channel specific control functionality. - FMOD_RESULT F_API setFrequency (float frequency); - FMOD_RESULT F_API getFrequency (float *frequency); - FMOD_RESULT F_API setPriority (int priority); - FMOD_RESULT F_API getPriority (int *priority); - FMOD_RESULT F_API setPosition (unsigned int position, FMOD_TIMEUNIT postype); - FMOD_RESULT F_API getPosition (unsigned int *position, FMOD_TIMEUNIT postype); - FMOD_RESULT F_API setChannelGroup (ChannelGroup *channelgroup); - FMOD_RESULT F_API getChannelGroup (ChannelGroup **channelgroup); - FMOD_RESULT F_API setLoopCount (int loopcount); - FMOD_RESULT F_API getLoopCount (int *loopcount); - FMOD_RESULT F_API setLoopPoints (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); - FMOD_RESULT F_API getLoopPoints (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); - - // Information only functions. - FMOD_RESULT F_API isVirtual (bool *isvirtual); - FMOD_RESULT F_API getCurrentSound (Sound **sound); - FMOD_RESULT F_API getIndex (int *index); - }; - - /* - 'ChannelGroup' API - */ - class ChannelGroup : public ChannelControl - { - private: - - // Constructor made private so user cannot statically instance a ChannelGroup class. Appropriate ChannelGroup creation or retrieval function must be used. - ChannelGroup(); - ChannelGroup(const ChannelGroup &); - - public: - - FMOD_RESULT F_API release (); - - // Nested channel groups. - FMOD_RESULT F_API addGroup (ChannelGroup *group, bool propagatedspclock = true, DSPConnection **connection = 0); - FMOD_RESULT F_API getNumGroups (int *numgroups); - FMOD_RESULT F_API getGroup (int index, ChannelGroup **group); - FMOD_RESULT F_API getParentGroup (ChannelGroup **group); - - // Information only functions. - FMOD_RESULT F_API getName (char *name, int namelen); - FMOD_RESULT F_API getNumChannels (int *numchannels); - FMOD_RESULT F_API getChannel (int index, Channel **channel); - }; - - /* - 'SoundGroup' API - */ - class SoundGroup - { - private: - - // Constructor made private so user cannot statically instance a SoundGroup class. Appropriate SoundGroup creation or retrieval function must be used. - SoundGroup(); - SoundGroup(const SoundGroup &); - - public: - - FMOD_RESULT F_API release (); - FMOD_RESULT F_API getSystemObject (System **system); - - // SoundGroup control functions. - FMOD_RESULT F_API setMaxAudible (int maxaudible); - FMOD_RESULT F_API getMaxAudible (int *maxaudible); - FMOD_RESULT F_API setMaxAudibleBehavior (FMOD_SOUNDGROUP_BEHAVIOR behavior); - FMOD_RESULT F_API getMaxAudibleBehavior (FMOD_SOUNDGROUP_BEHAVIOR *behavior); - FMOD_RESULT F_API setMuteFadeSpeed (float speed); - FMOD_RESULT F_API getMuteFadeSpeed (float *speed); - FMOD_RESULT F_API setVolume (float volume); - FMOD_RESULT F_API getVolume (float *volume); - FMOD_RESULT F_API stop (); - - // Information only functions. - FMOD_RESULT F_API getName (char *name, int namelen); - FMOD_RESULT F_API getNumSounds (int *numsounds); - FMOD_RESULT F_API getSound (int index, Sound **sound); - FMOD_RESULT F_API getNumPlaying (int *numplaying); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - /* - 'DSP' API - */ - class DSP - { - private: - - // Constructor made private so user cannot statically instance a DSP class. Appropriate DSP creation or retrieval function must be used. - DSP(); - DSP(const DSP &); - - public: - - FMOD_RESULT F_API release (); - FMOD_RESULT F_API getSystemObject (System **system); - - // Connection / disconnection / input and output enumeration. - FMOD_RESULT F_API addInput (DSP *input, DSPConnection **connection = 0, FMOD_DSPCONNECTION_TYPE type = FMOD_DSPCONNECTION_TYPE_STANDARD); - FMOD_RESULT F_API disconnectFrom (DSP *target, DSPConnection *connection = 0); - FMOD_RESULT F_API disconnectAll (bool inputs, bool outputs); - FMOD_RESULT F_API getNumInputs (int *numinputs); - FMOD_RESULT F_API getNumOutputs (int *numoutputs); - FMOD_RESULT F_API getInput (int index, DSP **input, DSPConnection **inputconnection); - FMOD_RESULT F_API getOutput (int index, DSP **output, DSPConnection **outputconnection); - - // DSP unit control. - FMOD_RESULT F_API setActive (bool active); - FMOD_RESULT F_API getActive (bool *active); - FMOD_RESULT F_API setBypass (bool bypass); - FMOD_RESULT F_API getBypass (bool *bypass); - FMOD_RESULT F_API setWetDryMix (float prewet, float postwet, float dry); - FMOD_RESULT F_API getWetDryMix (float *prewet, float *postwet, float *dry); - FMOD_RESULT F_API setChannelFormat (FMOD_CHANNELMASK channelmask, int numchannels, FMOD_SPEAKERMODE source_speakermode); - FMOD_RESULT F_API getChannelFormat (FMOD_CHANNELMASK *channelmask, int *numchannels, FMOD_SPEAKERMODE *source_speakermode); - FMOD_RESULT F_API getOutputChannelFormat (FMOD_CHANNELMASK inmask, int inchannels, FMOD_SPEAKERMODE inspeakermode, FMOD_CHANNELMASK *outmask, int *outchannels, FMOD_SPEAKERMODE *outspeakermode); - FMOD_RESULT F_API reset (); - - // DSP parameter control. - FMOD_RESULT F_API setParameterFloat (int index, float value); - FMOD_RESULT F_API setParameterInt (int index, int value); - FMOD_RESULT F_API setParameterBool (int index, bool value); - FMOD_RESULT F_API setParameterData (int index, void *data, unsigned int length); - FMOD_RESULT F_API getParameterFloat (int index, float *value, char *valuestr, int valuestrlen); - FMOD_RESULT F_API getParameterInt (int index, int *value, char *valuestr, int valuestrlen); - FMOD_RESULT F_API getParameterBool (int index, bool *value, char *valuestr, int valuestrlen); - FMOD_RESULT F_API getParameterData (int index, void **data, unsigned int *length, char *valuestr, int valuestrlen); - FMOD_RESULT F_API getNumParameters (int *numparams); - FMOD_RESULT F_API getParameterInfo (int index, FMOD_DSP_PARAMETER_DESC **desc); - FMOD_RESULT F_API getDataParameterIndex (int datatype, int *index); - FMOD_RESULT F_API showConfigDialog (void *hwnd, bool show); - - // DSP attributes. - FMOD_RESULT F_API getInfo (char *name, unsigned int *version, int *channels, int *configwidth, int *configheight); - FMOD_RESULT F_API getType (FMOD_DSP_TYPE *type); - FMOD_RESULT F_API getIdle (bool *idle); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - - // Metering. - FMOD_RESULT F_API setMeteringEnabled (bool inputEnabled, bool outputEnabled); - FMOD_RESULT F_API getMeteringEnabled (bool *inputEnabled, bool *outputEnabled); - FMOD_RESULT F_API getMeteringInfo (FMOD_DSP_METERING_INFO *inputInfo, FMOD_DSP_METERING_INFO *outputInfo); - FMOD_RESULT F_API getCPUUsage (unsigned int *exclusive, unsigned int *inclusive); - }; - - - /* - 'DSPConnection' API - */ - class DSPConnection - { - private: - - // Constructor made private so user cannot statically instance a DSPConnection class. Appropriate DSPConnection creation or retrieval function must be used. - DSPConnection(); - DSPConnection(const DSPConnection &); - - public: - - FMOD_RESULT F_API getInput (DSP **input); - FMOD_RESULT F_API getOutput (DSP **output); - FMOD_RESULT F_API setMix (float volume); - FMOD_RESULT F_API getMix (float *volume); - FMOD_RESULT F_API setMixMatrix (float *matrix, int outchannels, int inchannels, int inchannel_hop = 0); - FMOD_RESULT F_API getMixMatrix (float *matrix, int *outchannels, int *inchannels, int inchannel_hop = 0); - FMOD_RESULT F_API getType (FMOD_DSPCONNECTION_TYPE *type); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - - /* - 'Geometry' API - */ - class Geometry - { - private: - - // Constructor made private so user cannot statically instance a Geometry class. Appropriate Geometry creation or retrieval function must be used. - Geometry(); - Geometry(const Geometry &); - - public: - - FMOD_RESULT F_API release (); - - // Polygon manipulation. - FMOD_RESULT F_API addPolygon (float directocclusion, float reverbocclusion, bool doublesided, int numvertices, const FMOD_VECTOR *vertices, int *polygonindex); - FMOD_RESULT F_API getNumPolygons (int *numpolygons); - FMOD_RESULT F_API getMaxPolygons (int *maxpolygons, int *maxvertices); - FMOD_RESULT F_API getPolygonNumVertices (int index, int *numvertices); - FMOD_RESULT F_API setPolygonVertex (int index, int vertexindex, const FMOD_VECTOR *vertex); - FMOD_RESULT F_API getPolygonVertex (int index, int vertexindex, FMOD_VECTOR *vertex); - FMOD_RESULT F_API setPolygonAttributes (int index, float directocclusion, float reverbocclusion, bool doublesided); - FMOD_RESULT F_API getPolygonAttributes (int index, float *directocclusion, float *reverbocclusion, bool *doublesided); - - // Object manipulation. - FMOD_RESULT F_API setActive (bool active); - FMOD_RESULT F_API getActive (bool *active); - FMOD_RESULT F_API setRotation (const FMOD_VECTOR *forward, const FMOD_VECTOR *up); - FMOD_RESULT F_API getRotation (FMOD_VECTOR *forward, FMOD_VECTOR *up); - FMOD_RESULT F_API setPosition (const FMOD_VECTOR *position); - FMOD_RESULT F_API getPosition (FMOD_VECTOR *position); - FMOD_RESULT F_API setScale (const FMOD_VECTOR *scale); - FMOD_RESULT F_API getScale (FMOD_VECTOR *scale); - FMOD_RESULT F_API save (void *data, int *datasize); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - - /* - 'Reverb' API - */ - class Reverb3D - { - private: - - // Constructor made private so user cannot statically instance a Reverb3D class. Appropriate Reverb creation or retrieval function must be used. - Reverb3D(); - Reverb3D(const Reverb3D &); - - public: - - FMOD_RESULT F_API release (); - - // Reverb manipulation. - FMOD_RESULT F_API set3DAttributes (const FMOD_VECTOR *position, float mindistance, float maxdistance); - FMOD_RESULT F_API get3DAttributes (FMOD_VECTOR *position, float *mindistance,float *maxdistance); - FMOD_RESULT F_API setProperties (const FMOD_REVERB_PROPERTIES *properties); - FMOD_RESULT F_API getProperties (FMOD_REVERB_PROPERTIES *properties); - FMOD_RESULT F_API setActive (bool active); - FMOD_RESULT F_API getActive (bool *active); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; -} - -#endif diff --git a/Toshi/vendor/fmod/include/fmod/core/fmod_codec.h b/Toshi/vendor/fmod/include/fmod/core/fmod_codec.h deleted file mode 100644 index 009b26f..0000000 --- a/Toshi/vendor/fmod/include/fmod/core/fmod_codec.h +++ /dev/null @@ -1,136 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - Codec development header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header if you are wanting to develop your own file format plugin to use with */ -/* FMOD's codec system. With this header you can make your own fileformat plugin that FMOD */ -/* can register and use. See the documentation and examples on how to make a working */ -/* plugin. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api.html */ -/* ======================================================================================== */ -#ifndef _FMOD_CODEC_H -#define _FMOD_CODEC_H - -/* - Codec types -*/ -typedef struct FMOD_CODEC_STATE FMOD_CODEC_STATE; -typedef struct FMOD_CODEC_WAVEFORMAT FMOD_CODEC_WAVEFORMAT; - -/* - Codec constants -*/ -#define FMOD_CODEC_PLUGIN_VERSION 1 - -typedef int FMOD_CODEC_SEEK_METHOD; -#define FMOD_CODEC_SEEK_METHOD_SET 0 -#define FMOD_CODEC_SEEK_METHOD_CURRENT 1 -#define FMOD_CODEC_SEEK_METHOD_END 2 - -/* - Codec callbacks -*/ -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_OPEN_CALLBACK) (FMOD_CODEC_STATE *codec_state, FMOD_MODE usermode, FMOD_CREATESOUNDEXINFO *userexinfo); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_CLOSE_CALLBACK) (FMOD_CODEC_STATE *codec_state); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_READ_CALLBACK) (FMOD_CODEC_STATE *codec_state, void *buffer, unsigned int samples_in, unsigned int *samples_out); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETLENGTH_CALLBACK) (FMOD_CODEC_STATE *codec_state, unsigned int *length, FMOD_TIMEUNIT lengthtype); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_SETPOSITION_CALLBACK) (FMOD_CODEC_STATE *codec_state, int subsound, unsigned int position, FMOD_TIMEUNIT postype); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETPOSITION_CALLBACK) (FMOD_CODEC_STATE *codec_state, unsigned int *position, FMOD_TIMEUNIT postype); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_SOUNDCREATE_CALLBACK) (FMOD_CODEC_STATE *codec_state, int subsound, FMOD_SOUND *sound); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETWAVEFORMAT_CALLBACK)(FMOD_CODEC_STATE *codec_state, int index, FMOD_CODEC_WAVEFORMAT *waveformat); - -/* - Codec functions -*/ -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_METADATA_FUNC) (FMOD_CODEC_STATE *codec_state, FMOD_TAGTYPE tagtype, char *name, void *data, unsigned int datalen, FMOD_TAGDATATYPE datatype, int unique); -typedef void * (F_CALLBACK *FMOD_CODEC_ALLOC_FUNC) (unsigned int size, unsigned int align, const char *file, int line); -typedef void (F_CALLBACK *FMOD_CODEC_FREE_FUNC) (void *ptr, const char *file, int line); -typedef void (F_CALLBACK *FMOD_CODEC_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *string, ...); - -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_FILE_READ_FUNC) (FMOD_CODEC_STATE *codec_state, void *buffer, unsigned int sizebytes, unsigned int *bytesread); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_FILE_SEEK_FUNC) (FMOD_CODEC_STATE *codec_state, unsigned int pos, FMOD_CODEC_SEEK_METHOD method); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_FILE_TELL_FUNC) (FMOD_CODEC_STATE *codec_state, unsigned int *pos); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_FILE_SIZE_FUNC) (FMOD_CODEC_STATE *codec_state, unsigned int *size); - -/* - Codec structures -*/ -typedef struct FMOD_CODEC_DESCRIPTION -{ - unsigned int apiversion; - const char *name; - unsigned int version; - int defaultasstream; - FMOD_TIMEUNIT timeunits; - FMOD_CODEC_OPEN_CALLBACK open; - FMOD_CODEC_CLOSE_CALLBACK close; - FMOD_CODEC_READ_CALLBACK read; - FMOD_CODEC_GETLENGTH_CALLBACK getlength; - FMOD_CODEC_SETPOSITION_CALLBACK setposition; - FMOD_CODEC_GETPOSITION_CALLBACK getposition; - FMOD_CODEC_SOUNDCREATE_CALLBACK soundcreate; - FMOD_CODEC_GETWAVEFORMAT_CALLBACK getwaveformat; -} FMOD_CODEC_DESCRIPTION; - -struct FMOD_CODEC_WAVEFORMAT -{ - const char* name; - FMOD_SOUND_FORMAT format; - int channels; - int frequency; - unsigned int lengthbytes; - unsigned int lengthpcm; - unsigned int pcmblocksize; - int loopstart; - int loopend; - FMOD_MODE mode; - FMOD_CHANNELMASK channelmask; - FMOD_CHANNELORDER channelorder; - float peakvolume; -}; - -typedef struct FMOD_CODEC_STATE_FUNCTIONS -{ - FMOD_CODEC_METADATA_FUNC metadata; - FMOD_CODEC_ALLOC_FUNC alloc; - FMOD_CODEC_FREE_FUNC free; - FMOD_CODEC_LOG_FUNC log; - FMOD_CODEC_FILE_READ_FUNC read; - FMOD_CODEC_FILE_SEEK_FUNC seek; - FMOD_CODEC_FILE_TELL_FUNC tell; - FMOD_CODEC_FILE_SIZE_FUNC size; -} FMOD_CODEC_STATE_FUNCTIONS; - -struct FMOD_CODEC_STATE -{ - void *plugindata; - FMOD_CODEC_WAVEFORMAT *waveformat; - FMOD_CODEC_STATE_FUNCTIONS *functions; - int numsubsounds; -}; - -/* - Codec macros -*/ -#define FMOD_CODEC_METADATA(_state, _tagtype, _name, _data, _datalen, _datatype, _unique) \ - (_state)->functions->metadata(_state, _tagtype, _name, _data, _datalen, _datatype, _unique) -#define FMOD_CODEC_ALLOC(_state, _size, _align) \ - (_state)->functions->alloc(_size, _align, __FILE__, __LINE__) -#define FMOD_CODEC_FREE(_state, _ptr) \ - (_state)->functions->free(_ptr, __FILE__, __LINE__) -#define FMOD_CODEC_LOG(_state, _level, _location, _format, ...) \ - (_state)->functions->log(_level, __FILE__, __LINE__, _location, _format, __VA_ARGS__) -#define FMOD_CODEC_FILE_READ(_state, _buffer, _sizebytes, _bytesread) \ - (_state)->functions->read(_state, _buffer, _sizebytes, _bytesread) -#define FMOD_CODEC_FILE_SEEK(_state, _pos, _method) \ - (_state)->functions->seek(_state, _pos, _method) -#define FMOD_CODEC_FILE_TELL(_state, _pos) \ - (_state)->functions->tell(_state, _pos) -#define FMOD_CODEC_FILE_SIZE(_state, _size) \ - (_state)->functions->size(_state, _size) - -#endif - - diff --git a/Toshi/vendor/fmod/include/fmod/core/fmod_common.h b/Toshi/vendor/fmod/include/fmod/core/fmod_common.h deleted file mode 100644 index 445556b..0000000 --- a/Toshi/vendor/fmod/include/fmod/core/fmod_common.h +++ /dev/null @@ -1,883 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - Common C/C++ header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* This header is included by fmod.hpp (C++ interface) and fmod.h (C interface) */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api-common.html */ -/* ======================================================================================== */ -#ifndef _FMOD_COMMON_H -#define _FMOD_COMMON_H - -/* - Library import helpers -*/ -#if defined(_WIN32) || defined(__CYGWIN__) - #define F_CALL __stdcall -#else - #define F_CALL -#endif - -#if defined(_WIN32) || defined(__CYGWIN__) || defined(__ORBIS__) || defined(F_USE_DECLSPEC) - #define F_EXPORT __declspec(dllexport) -#elif defined(__APPLE__) || defined(__ANDROID__) || defined(__linux__) || defined(F_USE_ATTRIBUTE) - #define F_EXPORT __attribute__((visibility("default"))) -#else - #define F_EXPORT -#endif - -#ifdef DLL_EXPORTS - #define F_API F_EXPORT F_CALL -#else - #define F_API F_CALL -#endif - -#define F_CALLBACK F_CALL - -/* - FMOD core types -*/ -typedef int FMOD_BOOL; -typedef struct FMOD_SYSTEM FMOD_SYSTEM; -typedef struct FMOD_SOUND FMOD_SOUND; -typedef struct FMOD_CHANNELCONTROL FMOD_CHANNELCONTROL; -typedef struct FMOD_CHANNEL FMOD_CHANNEL; -typedef struct FMOD_CHANNELGROUP FMOD_CHANNELGROUP; -typedef struct FMOD_SOUNDGROUP FMOD_SOUNDGROUP; -typedef struct FMOD_REVERB3D FMOD_REVERB3D; -typedef struct FMOD_DSP FMOD_DSP; -typedef struct FMOD_DSPCONNECTION FMOD_DSPCONNECTION; -typedef struct FMOD_POLYGON FMOD_POLYGON; -typedef struct FMOD_GEOMETRY FMOD_GEOMETRY; -typedef struct FMOD_SYNCPOINT FMOD_SYNCPOINT; -typedef struct FMOD_ASYNCREADINFO FMOD_ASYNCREADINFO; - -/* - FMOD constants -*/ -#define FMOD_VERSION 0x00020209 /* 0xaaaabbcc -> aaaa = product version, bb = major version, cc = minor version.*/ - -typedef unsigned int FMOD_DEBUG_FLAGS; -#define FMOD_DEBUG_LEVEL_NONE 0x00000000 -#define FMOD_DEBUG_LEVEL_ERROR 0x00000001 -#define FMOD_DEBUG_LEVEL_WARNING 0x00000002 -#define FMOD_DEBUG_LEVEL_LOG 0x00000004 -#define FMOD_DEBUG_TYPE_MEMORY 0x00000100 -#define FMOD_DEBUG_TYPE_FILE 0x00000200 -#define FMOD_DEBUG_TYPE_CODEC 0x00000400 -#define FMOD_DEBUG_TYPE_TRACE 0x00000800 -#define FMOD_DEBUG_DISPLAY_TIMESTAMPS 0x00010000 -#define FMOD_DEBUG_DISPLAY_LINENUMBERS 0x00020000 -#define FMOD_DEBUG_DISPLAY_THREAD 0x00040000 - -typedef unsigned int FMOD_MEMORY_TYPE; -#define FMOD_MEMORY_NORMAL 0x00000000 -#define FMOD_MEMORY_STREAM_FILE 0x00000001 -#define FMOD_MEMORY_STREAM_DECODE 0x00000002 -#define FMOD_MEMORY_SAMPLEDATA 0x00000004 -#define FMOD_MEMORY_DSP_BUFFER 0x00000008 -#define FMOD_MEMORY_PLUGIN 0x00000010 -#define FMOD_MEMORY_PERSISTENT 0x00200000 -#define FMOD_MEMORY_ALL 0xFFFFFFFF - -typedef unsigned int FMOD_INITFLAGS; -#define FMOD_INIT_NORMAL 0x00000000 -#define FMOD_INIT_STREAM_FROM_UPDATE 0x00000001 -#define FMOD_INIT_MIX_FROM_UPDATE 0x00000002 -#define FMOD_INIT_3D_RIGHTHANDED 0x00000004 -#define FMOD_INIT_CLIP_OUTPUT 0x00000008 -#define FMOD_INIT_CHANNEL_LOWPASS 0x00000100 -#define FMOD_INIT_CHANNEL_DISTANCEFILTER 0x00000200 -#define FMOD_INIT_PROFILE_ENABLE 0x00010000 -#define FMOD_INIT_VOL0_BECOMES_VIRTUAL 0x00020000 -#define FMOD_INIT_GEOMETRY_USECLOSEST 0x00040000 -#define FMOD_INIT_PREFER_DOLBY_DOWNMIX 0x00080000 -#define FMOD_INIT_THREAD_UNSAFE 0x00100000 -#define FMOD_INIT_PROFILE_METER_ALL 0x00200000 -#define FMOD_INIT_MEMORY_TRACKING 0x00400000 - -typedef unsigned int FMOD_DRIVER_STATE; -#define FMOD_DRIVER_STATE_CONNECTED 0x00000001 -#define FMOD_DRIVER_STATE_DEFAULT 0x00000002 - -typedef unsigned int FMOD_TIMEUNIT; -#define FMOD_TIMEUNIT_MS 0x00000001 -#define FMOD_TIMEUNIT_PCM 0x00000002 -#define FMOD_TIMEUNIT_PCMBYTES 0x00000004 -#define FMOD_TIMEUNIT_RAWBYTES 0x00000008 -#define FMOD_TIMEUNIT_PCMFRACTION 0x00000010 -#define FMOD_TIMEUNIT_MODORDER 0x00000100 -#define FMOD_TIMEUNIT_MODROW 0x00000200 -#define FMOD_TIMEUNIT_MODPATTERN 0x00000400 - -typedef unsigned int FMOD_SYSTEM_CALLBACK_TYPE; -#define FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED 0x00000001 -#define FMOD_SYSTEM_CALLBACK_DEVICELOST 0x00000002 -#define FMOD_SYSTEM_CALLBACK_MEMORYALLOCATIONFAILED 0x00000004 -#define FMOD_SYSTEM_CALLBACK_THREADCREATED 0x00000008 -#define FMOD_SYSTEM_CALLBACK_BADDSPCONNECTION 0x00000010 -#define FMOD_SYSTEM_CALLBACK_PREMIX 0x00000020 -#define FMOD_SYSTEM_CALLBACK_POSTMIX 0x00000040 -#define FMOD_SYSTEM_CALLBACK_ERROR 0x00000080 -#define FMOD_SYSTEM_CALLBACK_MIDMIX 0x00000100 -#define FMOD_SYSTEM_CALLBACK_THREADDESTROYED 0x00000200 -#define FMOD_SYSTEM_CALLBACK_PREUPDATE 0x00000400 -#define FMOD_SYSTEM_CALLBACK_POSTUPDATE 0x00000800 -#define FMOD_SYSTEM_CALLBACK_RECORDLISTCHANGED 0x00001000 -#define FMOD_SYSTEM_CALLBACK_BUFFEREDNOMIX 0x00002000 -#define FMOD_SYSTEM_CALLBACK_DEVICEREINITIALIZE 0x00004000 -#define FMOD_SYSTEM_CALLBACK_OUTPUTUNDERRUN 0x00008000 -#define FMOD_SYSTEM_CALLBACK_RECORDPOSITIONCHANGED 0x00010000 -#define FMOD_SYSTEM_CALLBACK_ALL 0xFFFFFFFF - -typedef unsigned int FMOD_MODE; -#define FMOD_DEFAULT 0x00000000 -#define FMOD_LOOP_OFF 0x00000001 -#define FMOD_LOOP_NORMAL 0x00000002 -#define FMOD_LOOP_BIDI 0x00000004 -#define FMOD_2D 0x00000008 -#define FMOD_3D 0x00000010 -#define FMOD_CREATESTREAM 0x00000080 -#define FMOD_CREATESAMPLE 0x00000100 -#define FMOD_CREATECOMPRESSEDSAMPLE 0x00000200 -#define FMOD_OPENUSER 0x00000400 -#define FMOD_OPENMEMORY 0x00000800 -#define FMOD_OPENMEMORY_POINT 0x10000000 -#define FMOD_OPENRAW 0x00001000 -#define FMOD_OPENONLY 0x00002000 -#define FMOD_ACCURATETIME 0x00004000 -#define FMOD_MPEGSEARCH 0x00008000 -#define FMOD_NONBLOCKING 0x00010000 -#define FMOD_UNIQUE 0x00020000 -#define FMOD_3D_HEADRELATIVE 0x00040000 -#define FMOD_3D_WORLDRELATIVE 0x00080000 -#define FMOD_3D_INVERSEROLLOFF 0x00100000 -#define FMOD_3D_LINEARROLLOFF 0x00200000 -#define FMOD_3D_LINEARSQUAREROLLOFF 0x00400000 -#define FMOD_3D_INVERSETAPEREDROLLOFF 0x00800000 -#define FMOD_3D_CUSTOMROLLOFF 0x04000000 -#define FMOD_3D_IGNOREGEOMETRY 0x40000000 -#define FMOD_IGNORETAGS 0x02000000 -#define FMOD_LOWMEM 0x08000000 -#define FMOD_VIRTUAL_PLAYFROMSTART 0x80000000 - -typedef unsigned int FMOD_CHANNELMASK; -#define FMOD_CHANNELMASK_FRONT_LEFT 0x00000001 -#define FMOD_CHANNELMASK_FRONT_RIGHT 0x00000002 -#define FMOD_CHANNELMASK_FRONT_CENTER 0x00000004 -#define FMOD_CHANNELMASK_LOW_FREQUENCY 0x00000008 -#define FMOD_CHANNELMASK_SURROUND_LEFT 0x00000010 -#define FMOD_CHANNELMASK_SURROUND_RIGHT 0x00000020 -#define FMOD_CHANNELMASK_BACK_LEFT 0x00000040 -#define FMOD_CHANNELMASK_BACK_RIGHT 0x00000080 -#define FMOD_CHANNELMASK_BACK_CENTER 0x00000100 -#define FMOD_CHANNELMASK_MONO (FMOD_CHANNELMASK_FRONT_LEFT) -#define FMOD_CHANNELMASK_STEREO (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT) -#define FMOD_CHANNELMASK_LRC (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER) -#define FMOD_CHANNELMASK_QUAD (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT) -#define FMOD_CHANNELMASK_SURROUND (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT) -#define FMOD_CHANNELMASK_5POINT1 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT) -#define FMOD_CHANNELMASK_5POINT1_REARS (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT) -#define FMOD_CHANNELMASK_7POINT0 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT) -#define FMOD_CHANNELMASK_7POINT1 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT) - -typedef unsigned long long FMOD_PORT_INDEX; -#define FMOD_PORT_INDEX_NONE 0xFFFFFFFFFFFFFFFF -#define FMOD_PORT_INDEX_FLAG_VR_CONTROLLER 0x1000000000000000 - -typedef int FMOD_THREAD_PRIORITY; -/* Platform specific priority range */ -#define FMOD_THREAD_PRIORITY_PLATFORM_MIN (-32 * 1024) -#define FMOD_THREAD_PRIORITY_PLATFORM_MAX ( 32 * 1024) -/* Platform agnostic priorities, maps internally to platform specific value */ -#define FMOD_THREAD_PRIORITY_DEFAULT (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 1) -#define FMOD_THREAD_PRIORITY_LOW (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 2) -#define FMOD_THREAD_PRIORITY_MEDIUM (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 3) -#define FMOD_THREAD_PRIORITY_HIGH (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 4) -#define FMOD_THREAD_PRIORITY_VERY_HIGH (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 5) -#define FMOD_THREAD_PRIORITY_EXTREME (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 6) -#define FMOD_THREAD_PRIORITY_CRITICAL (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 7) -/* Thread defaults */ -#define FMOD_THREAD_PRIORITY_MIXER FMOD_THREAD_PRIORITY_EXTREME -#define FMOD_THREAD_PRIORITY_FEEDER FMOD_THREAD_PRIORITY_CRITICAL -#define FMOD_THREAD_PRIORITY_STREAM FMOD_THREAD_PRIORITY_VERY_HIGH -#define FMOD_THREAD_PRIORITY_FILE FMOD_THREAD_PRIORITY_HIGH -#define FMOD_THREAD_PRIORITY_NONBLOCKING FMOD_THREAD_PRIORITY_HIGH -#define FMOD_THREAD_PRIORITY_RECORD FMOD_THREAD_PRIORITY_HIGH -#define FMOD_THREAD_PRIORITY_GEOMETRY FMOD_THREAD_PRIORITY_LOW -#define FMOD_THREAD_PRIORITY_PROFILER FMOD_THREAD_PRIORITY_MEDIUM -#define FMOD_THREAD_PRIORITY_STUDIO_UPDATE FMOD_THREAD_PRIORITY_MEDIUM -#define FMOD_THREAD_PRIORITY_STUDIO_LOAD_BANK FMOD_THREAD_PRIORITY_MEDIUM -#define FMOD_THREAD_PRIORITY_STUDIO_LOAD_SAMPLE FMOD_THREAD_PRIORITY_MEDIUM -#define FMOD_THREAD_PRIORITY_CONVOLUTION1 FMOD_THREAD_PRIORITY_VERY_HIGH -#define FMOD_THREAD_PRIORITY_CONVOLUTION2 FMOD_THREAD_PRIORITY_VERY_HIGH - -typedef unsigned int FMOD_THREAD_STACK_SIZE; -#define FMOD_THREAD_STACK_SIZE_DEFAULT 0 -#define FMOD_THREAD_STACK_SIZE_MIXER (80 * 1024) -#define FMOD_THREAD_STACK_SIZE_FEEDER (16 * 1024) -#define FMOD_THREAD_STACK_SIZE_STREAM (96 * 1024) -#define FMOD_THREAD_STACK_SIZE_FILE (64 * 1024) -#define FMOD_THREAD_STACK_SIZE_NONBLOCKING (112 * 1024) -#define FMOD_THREAD_STACK_SIZE_RECORD (16 * 1024) -#define FMOD_THREAD_STACK_SIZE_GEOMETRY (48 * 1024) -#define FMOD_THREAD_STACK_SIZE_PROFILER (128 * 1024) -#define FMOD_THREAD_STACK_SIZE_STUDIO_UPDATE (96 * 1024) -#define FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_BANK (96 * 1024) -#define FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_SAMPLE (96 * 1024) -#define FMOD_THREAD_STACK_SIZE_CONVOLUTION1 (16 * 1024) -#define FMOD_THREAD_STACK_SIZE_CONVOLUTION2 (16 * 1024) - -typedef long long FMOD_THREAD_AFFINITY; -/* Platform agnostic thread groupings */ -#define FMOD_THREAD_AFFINITY_GROUP_DEFAULT 0x4000000000000000 -#define FMOD_THREAD_AFFINITY_GROUP_A 0x4000000000000001 -#define FMOD_THREAD_AFFINITY_GROUP_B 0x4000000000000002 -#define FMOD_THREAD_AFFINITY_GROUP_C 0x4000000000000003 -/* Thread defaults */ -#define FMOD_THREAD_AFFINITY_MIXER FMOD_THREAD_AFFINITY_GROUP_A -#define FMOD_THREAD_AFFINITY_FEEDER FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_STREAM FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_FILE FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_NONBLOCKING FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_RECORD FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_GEOMETRY FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_PROFILER FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_STUDIO_UPDATE FMOD_THREAD_AFFINITY_GROUP_B -#define FMOD_THREAD_AFFINITY_STUDIO_LOAD_BANK FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_STUDIO_LOAD_SAMPLE FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_CONVOLUTION1 FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_CONVOLUTION2 FMOD_THREAD_AFFINITY_GROUP_C -/* Core mask, valid up to 1 << 62 */ -#define FMOD_THREAD_AFFINITY_CORE_ALL 0 -#define FMOD_THREAD_AFFINITY_CORE_0 (1 << 0) -#define FMOD_THREAD_AFFINITY_CORE_1 (1 << 1) -#define FMOD_THREAD_AFFINITY_CORE_2 (1 << 2) -#define FMOD_THREAD_AFFINITY_CORE_3 (1 << 3) -#define FMOD_THREAD_AFFINITY_CORE_4 (1 << 4) -#define FMOD_THREAD_AFFINITY_CORE_5 (1 << 5) -#define FMOD_THREAD_AFFINITY_CORE_6 (1 << 6) -#define FMOD_THREAD_AFFINITY_CORE_7 (1 << 7) -#define FMOD_THREAD_AFFINITY_CORE_8 (1 << 8) -#define FMOD_THREAD_AFFINITY_CORE_9 (1 << 9) -#define FMOD_THREAD_AFFINITY_CORE_10 (1 << 10) -#define FMOD_THREAD_AFFINITY_CORE_11 (1 << 11) -#define FMOD_THREAD_AFFINITY_CORE_12 (1 << 12) -#define FMOD_THREAD_AFFINITY_CORE_13 (1 << 13) -#define FMOD_THREAD_AFFINITY_CORE_14 (1 << 14) -#define FMOD_THREAD_AFFINITY_CORE_15 (1 << 15) - -/* Preset for FMOD_REVERB_PROPERTIES */ -#define FMOD_PRESET_OFF { 1000, 7, 11, 5000, 100, 100, 100, 250, 0, 20, 96, -80.0f } -#define FMOD_PRESET_GENERIC { 1500, 7, 11, 5000, 83, 100, 100, 250, 0, 14500, 96, -8.0f } -#define FMOD_PRESET_PADDEDCELL { 170, 1, 2, 5000, 10, 100, 100, 250, 0, 160, 84, -7.8f } -#define FMOD_PRESET_ROOM { 400, 2, 3, 5000, 83, 100, 100, 250, 0, 6050, 88, -9.4f } -#define FMOD_PRESET_BATHROOM { 1500, 7, 11, 5000, 54, 100, 60, 250, 0, 2900, 83, 0.5f } -#define FMOD_PRESET_LIVINGROOM { 500, 3, 4, 5000, 10, 100, 100, 250, 0, 160, 58, -19.0f } -#define FMOD_PRESET_STONEROOM { 2300, 12, 17, 5000, 64, 100, 100, 250, 0, 7800, 71, -8.5f } -#define FMOD_PRESET_AUDITORIUM { 4300, 20, 30, 5000, 59, 100, 100, 250, 0, 5850, 64, -11.7f } -#define FMOD_PRESET_CONCERTHALL { 3900, 20, 29, 5000, 70, 100, 100, 250, 0, 5650, 80, -9.8f } -#define FMOD_PRESET_CAVE { 2900, 15, 22, 5000, 100, 100, 100, 250, 0, 20000, 59, -11.3f } -#define FMOD_PRESET_ARENA { 7200, 20, 30, 5000, 33, 100, 100, 250, 0, 4500, 80, -9.6f } -#define FMOD_PRESET_HANGAR { 10000, 20, 30, 5000, 23, 100, 100, 250, 0, 3400, 72, -7.4f } -#define FMOD_PRESET_CARPETTEDHALLWAY { 300, 2, 30, 5000, 10, 100, 100, 250, 0, 500, 56, -24.0f } -#define FMOD_PRESET_HALLWAY { 1500, 7, 11, 5000, 59, 100, 100, 250, 0, 7800, 87, -5.5f } -#define FMOD_PRESET_STONECORRIDOR { 270, 13, 20, 5000, 79, 100, 100, 250, 0, 9000, 86, -6.0f } -#define FMOD_PRESET_ALLEY { 1500, 7, 11, 5000, 86, 100, 100, 250, 0, 8300, 80, -9.8f } -#define FMOD_PRESET_FOREST { 1500, 162, 88, 5000, 54, 79, 100, 250, 0, 760, 94, -12.3f } -#define FMOD_PRESET_CITY { 1500, 7, 11, 5000, 67, 50, 100, 250, 0, 4050, 66, -26.0f } -#define FMOD_PRESET_MOUNTAINS { 1500, 300, 100, 5000, 21, 27, 100, 250, 0, 1220, 82, -24.0f } -#define FMOD_PRESET_QUARRY { 1500, 61, 25, 5000, 83, 100, 100, 250, 0, 3400, 100, -5.0f } -#define FMOD_PRESET_PLAIN { 1500, 179, 100, 5000, 50, 21, 100, 250, 0, 1670, 65, -28.0f } -#define FMOD_PRESET_PARKINGLOT { 1700, 8, 12, 5000, 100, 100, 100, 250, 0, 20000, 56, -19.5f } -#define FMOD_PRESET_SEWERPIPE { 2800, 14, 21, 5000, 14, 80, 60, 250, 0, 3400, 66, 1.2f } -#define FMOD_PRESET_UNDERWATER { 1500, 7, 11, 5000, 10, 100, 100, 250, 0, 500, 92, 7.0f } - -#define FMOD_MAX_CHANNEL_WIDTH 32 -#define FMOD_MAX_SYSTEMS 8 -#define FMOD_MAX_LISTENERS 8 -#define FMOD_REVERB_MAXINSTANCES 4 - -typedef enum FMOD_THREAD_TYPE -{ - FMOD_THREAD_TYPE_MIXER, - FMOD_THREAD_TYPE_FEEDER, - FMOD_THREAD_TYPE_STREAM, - FMOD_THREAD_TYPE_FILE, - FMOD_THREAD_TYPE_NONBLOCKING, - FMOD_THREAD_TYPE_RECORD, - FMOD_THREAD_TYPE_GEOMETRY, - FMOD_THREAD_TYPE_PROFILER, - FMOD_THREAD_TYPE_STUDIO_UPDATE, - FMOD_THREAD_TYPE_STUDIO_LOAD_BANK, - FMOD_THREAD_TYPE_STUDIO_LOAD_SAMPLE, - FMOD_THREAD_TYPE_CONVOLUTION1, - FMOD_THREAD_TYPE_CONVOLUTION2, - - FMOD_THREAD_TYPE_MAX, - FMOD_THREAD_TYPE_FORCEINT = 65536 -} FMOD_THREAD_TYPE; - -typedef enum FMOD_RESULT -{ - FMOD_OK, - FMOD_ERR_BADCOMMAND, - FMOD_ERR_CHANNEL_ALLOC, - FMOD_ERR_CHANNEL_STOLEN, - FMOD_ERR_DMA, - FMOD_ERR_DSP_CONNECTION, - FMOD_ERR_DSP_DONTPROCESS, - FMOD_ERR_DSP_FORMAT, - FMOD_ERR_DSP_INUSE, - FMOD_ERR_DSP_NOTFOUND, - FMOD_ERR_DSP_RESERVED, - FMOD_ERR_DSP_SILENCE, - FMOD_ERR_DSP_TYPE, - FMOD_ERR_FILE_BAD, - FMOD_ERR_FILE_COULDNOTSEEK, - FMOD_ERR_FILE_DISKEJECTED, - FMOD_ERR_FILE_EOF, - FMOD_ERR_FILE_ENDOFDATA, - FMOD_ERR_FILE_NOTFOUND, - FMOD_ERR_FORMAT, - FMOD_ERR_HEADER_MISMATCH, - FMOD_ERR_HTTP, - FMOD_ERR_HTTP_ACCESS, - FMOD_ERR_HTTP_PROXY_AUTH, - FMOD_ERR_HTTP_SERVER_ERROR, - FMOD_ERR_HTTP_TIMEOUT, - FMOD_ERR_INITIALIZATION, - FMOD_ERR_INITIALIZED, - FMOD_ERR_INTERNAL, - FMOD_ERR_INVALID_FLOAT, - FMOD_ERR_INVALID_HANDLE, - FMOD_ERR_INVALID_PARAM, - FMOD_ERR_INVALID_POSITION, - FMOD_ERR_INVALID_SPEAKER, - FMOD_ERR_INVALID_SYNCPOINT, - FMOD_ERR_INVALID_THREAD, - FMOD_ERR_INVALID_VECTOR, - FMOD_ERR_MAXAUDIBLE, - FMOD_ERR_MEMORY, - FMOD_ERR_MEMORY_CANTPOINT, - FMOD_ERR_NEEDS3D, - FMOD_ERR_NEEDSHARDWARE, - FMOD_ERR_NET_CONNECT, - FMOD_ERR_NET_SOCKET_ERROR, - FMOD_ERR_NET_URL, - FMOD_ERR_NET_WOULD_BLOCK, - FMOD_ERR_NOTREADY, - FMOD_ERR_OUTPUT_ALLOCATED, - FMOD_ERR_OUTPUT_CREATEBUFFER, - FMOD_ERR_OUTPUT_DRIVERCALL, - FMOD_ERR_OUTPUT_FORMAT, - FMOD_ERR_OUTPUT_INIT, - FMOD_ERR_OUTPUT_NODRIVERS, - FMOD_ERR_PLUGIN, - FMOD_ERR_PLUGIN_MISSING, - FMOD_ERR_PLUGIN_RESOURCE, - FMOD_ERR_PLUGIN_VERSION, - FMOD_ERR_RECORD, - FMOD_ERR_REVERB_CHANNELGROUP, - FMOD_ERR_REVERB_INSTANCE, - FMOD_ERR_SUBSOUNDS, - FMOD_ERR_SUBSOUND_ALLOCATED, - FMOD_ERR_SUBSOUND_CANTMOVE, - FMOD_ERR_TAGNOTFOUND, - FMOD_ERR_TOOMANYCHANNELS, - FMOD_ERR_TRUNCATED, - FMOD_ERR_UNIMPLEMENTED, - FMOD_ERR_UNINITIALIZED, - FMOD_ERR_UNSUPPORTED, - FMOD_ERR_VERSION, - FMOD_ERR_EVENT_ALREADY_LOADED, - FMOD_ERR_EVENT_LIVEUPDATE_BUSY, - FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH, - FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT, - FMOD_ERR_EVENT_NOTFOUND, - FMOD_ERR_STUDIO_UNINITIALIZED, - FMOD_ERR_STUDIO_NOT_LOADED, - FMOD_ERR_INVALID_STRING, - FMOD_ERR_ALREADY_LOCKED, - FMOD_ERR_NOT_LOCKED, - FMOD_ERR_RECORD_DISCONNECTED, - FMOD_ERR_TOOMANYSAMPLES, - - FMOD_RESULT_FORCEINT = 65536 -} FMOD_RESULT; - -typedef enum FMOD_CHANNELCONTROL_TYPE -{ - FMOD_CHANNELCONTROL_CHANNEL, - FMOD_CHANNELCONTROL_CHANNELGROUP, - - FMOD_CHANNELCONTROL_MAX, - FMOD_CHANNELCONTROL_FORCEINT = 65536 -} FMOD_CHANNELCONTROL_TYPE; - -typedef enum FMOD_OUTPUTTYPE -{ - FMOD_OUTPUTTYPE_AUTODETECT, - FMOD_OUTPUTTYPE_UNKNOWN, - FMOD_OUTPUTTYPE_NOSOUND, - FMOD_OUTPUTTYPE_WAVWRITER, - FMOD_OUTPUTTYPE_NOSOUND_NRT, - FMOD_OUTPUTTYPE_WAVWRITER_NRT, - FMOD_OUTPUTTYPE_WASAPI, - FMOD_OUTPUTTYPE_ASIO, - FMOD_OUTPUTTYPE_PULSEAUDIO, - FMOD_OUTPUTTYPE_ALSA, - FMOD_OUTPUTTYPE_COREAUDIO, - FMOD_OUTPUTTYPE_AUDIOTRACK, - FMOD_OUTPUTTYPE_OPENSL, - FMOD_OUTPUTTYPE_AUDIOOUT, - FMOD_OUTPUTTYPE_AUDIO3D, - FMOD_OUTPUTTYPE_WEBAUDIO, - FMOD_OUTPUTTYPE_NNAUDIO, - FMOD_OUTPUTTYPE_WINSONIC, - FMOD_OUTPUTTYPE_AAUDIO, - FMOD_OUTPUTTYPE_AUDIOWORKLET, - - FMOD_OUTPUTTYPE_MAX, - FMOD_OUTPUTTYPE_FORCEINT = 65536 -} FMOD_OUTPUTTYPE; - -typedef enum FMOD_DEBUG_MODE -{ - FMOD_DEBUG_MODE_TTY, - FMOD_DEBUG_MODE_FILE, - FMOD_DEBUG_MODE_CALLBACK, - - FMOD_DEBUG_MODE_FORCEINT = 65536 -} FMOD_DEBUG_MODE; - -typedef enum FMOD_SPEAKERMODE -{ - FMOD_SPEAKERMODE_DEFAULT, - FMOD_SPEAKERMODE_RAW, - FMOD_SPEAKERMODE_MONO, - FMOD_SPEAKERMODE_STEREO, - FMOD_SPEAKERMODE_QUAD, - FMOD_SPEAKERMODE_SURROUND, - FMOD_SPEAKERMODE_5POINT1, - FMOD_SPEAKERMODE_7POINT1, - FMOD_SPEAKERMODE_7POINT1POINT4, - - FMOD_SPEAKERMODE_MAX, - FMOD_SPEAKERMODE_FORCEINT = 65536 -} FMOD_SPEAKERMODE; - -typedef enum FMOD_SPEAKER -{ - FMOD_SPEAKER_NONE = -1, - FMOD_SPEAKER_FRONT_LEFT = 0, - FMOD_SPEAKER_FRONT_RIGHT, - FMOD_SPEAKER_FRONT_CENTER, - FMOD_SPEAKER_LOW_FREQUENCY, - FMOD_SPEAKER_SURROUND_LEFT, - FMOD_SPEAKER_SURROUND_RIGHT, - FMOD_SPEAKER_BACK_LEFT, - FMOD_SPEAKER_BACK_RIGHT, - FMOD_SPEAKER_TOP_FRONT_LEFT, - FMOD_SPEAKER_TOP_FRONT_RIGHT, - FMOD_SPEAKER_TOP_BACK_LEFT, - FMOD_SPEAKER_TOP_BACK_RIGHT, - - FMOD_SPEAKER_MAX, - FMOD_SPEAKER_FORCEINT = 65536 -} FMOD_SPEAKER; - -typedef enum FMOD_CHANNELORDER -{ - FMOD_CHANNELORDER_DEFAULT, - FMOD_CHANNELORDER_WAVEFORMAT, - FMOD_CHANNELORDER_PROTOOLS, - FMOD_CHANNELORDER_ALLMONO, - FMOD_CHANNELORDER_ALLSTEREO, - FMOD_CHANNELORDER_ALSA, - - FMOD_CHANNELORDER_MAX, - FMOD_CHANNELORDER_FORCEINT = 65536 -} FMOD_CHANNELORDER; - -typedef enum FMOD_PLUGINTYPE -{ - FMOD_PLUGINTYPE_OUTPUT, - FMOD_PLUGINTYPE_CODEC, - FMOD_PLUGINTYPE_DSP, - - FMOD_PLUGINTYPE_MAX, - FMOD_PLUGINTYPE_FORCEINT = 65536 -} FMOD_PLUGINTYPE; - -typedef enum FMOD_SOUND_TYPE -{ - FMOD_SOUND_TYPE_UNKNOWN, - FMOD_SOUND_TYPE_AIFF, - FMOD_SOUND_TYPE_ASF, - FMOD_SOUND_TYPE_DLS, - FMOD_SOUND_TYPE_FLAC, - FMOD_SOUND_TYPE_FSB, - FMOD_SOUND_TYPE_IT, - FMOD_SOUND_TYPE_MIDI, - FMOD_SOUND_TYPE_MOD, - FMOD_SOUND_TYPE_MPEG, - FMOD_SOUND_TYPE_OGGVORBIS, - FMOD_SOUND_TYPE_PLAYLIST, - FMOD_SOUND_TYPE_RAW, - FMOD_SOUND_TYPE_S3M, - FMOD_SOUND_TYPE_USER, - FMOD_SOUND_TYPE_WAV, - FMOD_SOUND_TYPE_XM, - FMOD_SOUND_TYPE_XMA, - FMOD_SOUND_TYPE_AUDIOQUEUE, - FMOD_SOUND_TYPE_AT9, - FMOD_SOUND_TYPE_VORBIS, - FMOD_SOUND_TYPE_MEDIA_FOUNDATION, - FMOD_SOUND_TYPE_MEDIACODEC, - FMOD_SOUND_TYPE_FADPCM, - FMOD_SOUND_TYPE_OPUS, - - FMOD_SOUND_TYPE_MAX, - FMOD_SOUND_TYPE_FORCEINT = 65536 -} FMOD_SOUND_TYPE; - -typedef enum FMOD_SOUND_FORMAT -{ - FMOD_SOUND_FORMAT_NONE, - FMOD_SOUND_FORMAT_PCM8, - FMOD_SOUND_FORMAT_PCM16, - FMOD_SOUND_FORMAT_PCM24, - FMOD_SOUND_FORMAT_PCM32, - FMOD_SOUND_FORMAT_PCMFLOAT, - FMOD_SOUND_FORMAT_BITSTREAM, - - FMOD_SOUND_FORMAT_MAX, - FMOD_SOUND_FORMAT_FORCEINT = 65536 -} FMOD_SOUND_FORMAT; - -typedef enum FMOD_OPENSTATE -{ - FMOD_OPENSTATE_READY, - FMOD_OPENSTATE_LOADING, - FMOD_OPENSTATE_ERROR, - FMOD_OPENSTATE_CONNECTING, - FMOD_OPENSTATE_BUFFERING, - FMOD_OPENSTATE_SEEKING, - FMOD_OPENSTATE_PLAYING, - FMOD_OPENSTATE_SETPOSITION, - - FMOD_OPENSTATE_MAX, - FMOD_OPENSTATE_FORCEINT = 65536 -} FMOD_OPENSTATE; - -typedef enum FMOD_SOUNDGROUP_BEHAVIOR -{ - FMOD_SOUNDGROUP_BEHAVIOR_FAIL, - FMOD_SOUNDGROUP_BEHAVIOR_MUTE, - FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST, - - FMOD_SOUNDGROUP_BEHAVIOR_MAX, - FMOD_SOUNDGROUP_BEHAVIOR_FORCEINT = 65536 -} FMOD_SOUNDGROUP_BEHAVIOR; - -typedef enum FMOD_CHANNELCONTROL_CALLBACK_TYPE -{ - FMOD_CHANNELCONTROL_CALLBACK_END, - FMOD_CHANNELCONTROL_CALLBACK_VIRTUALVOICE, - FMOD_CHANNELCONTROL_CALLBACK_SYNCPOINT, - FMOD_CHANNELCONTROL_CALLBACK_OCCLUSION, - - FMOD_CHANNELCONTROL_CALLBACK_MAX, - FMOD_CHANNELCONTROL_CALLBACK_FORCEINT = 65536 -} FMOD_CHANNELCONTROL_CALLBACK_TYPE; - -typedef enum FMOD_CHANNELCONTROL_DSP_INDEX -{ - FMOD_CHANNELCONTROL_DSP_HEAD = -1, - FMOD_CHANNELCONTROL_DSP_FADER = -2, - FMOD_CHANNELCONTROL_DSP_TAIL = -3, - - FMOD_CHANNELCONTROL_DSP_FORCEINT = 65536 -} FMOD_CHANNELCONTROL_DSP_INDEX; - -typedef enum FMOD_ERRORCALLBACK_INSTANCETYPE -{ - FMOD_ERRORCALLBACK_INSTANCETYPE_NONE, - FMOD_ERRORCALLBACK_INSTANCETYPE_SYSTEM, - FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNEL, - FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELGROUP, - FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELCONTROL, - FMOD_ERRORCALLBACK_INSTANCETYPE_SOUND, - FMOD_ERRORCALLBACK_INSTANCETYPE_SOUNDGROUP, - FMOD_ERRORCALLBACK_INSTANCETYPE_DSP, - FMOD_ERRORCALLBACK_INSTANCETYPE_DSPCONNECTION, - FMOD_ERRORCALLBACK_INSTANCETYPE_GEOMETRY, - FMOD_ERRORCALLBACK_INSTANCETYPE_REVERB3D, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_SYSTEM, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTDESCRIPTION, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTINSTANCE, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_PARAMETERINSTANCE, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BUS, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_VCA, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BANK, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_COMMANDREPLAY, - - FMOD_ERRORCALLBACK_INSTANCETYPE_FORCEINT = 65536 -} FMOD_ERRORCALLBACK_INSTANCETYPE; - -typedef enum FMOD_DSP_RESAMPLER -{ - FMOD_DSP_RESAMPLER_DEFAULT, - FMOD_DSP_RESAMPLER_NOINTERP, - FMOD_DSP_RESAMPLER_LINEAR, - FMOD_DSP_RESAMPLER_CUBIC, - FMOD_DSP_RESAMPLER_SPLINE, - - FMOD_DSP_RESAMPLER_MAX, - FMOD_DSP_RESAMPLER_FORCEINT = 65536 -} FMOD_DSP_RESAMPLER; - -typedef enum FMOD_DSPCONNECTION_TYPE -{ - FMOD_DSPCONNECTION_TYPE_STANDARD, - FMOD_DSPCONNECTION_TYPE_SIDECHAIN, - FMOD_DSPCONNECTION_TYPE_SEND, - FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN, - - FMOD_DSPCONNECTION_TYPE_MAX, - FMOD_DSPCONNECTION_TYPE_FORCEINT = 65536 -} FMOD_DSPCONNECTION_TYPE; - -typedef enum FMOD_TAGTYPE -{ - FMOD_TAGTYPE_UNKNOWN, - FMOD_TAGTYPE_ID3V1, - FMOD_TAGTYPE_ID3V2, - FMOD_TAGTYPE_VORBISCOMMENT, - FMOD_TAGTYPE_SHOUTCAST, - FMOD_TAGTYPE_ICECAST, - FMOD_TAGTYPE_ASF, - FMOD_TAGTYPE_MIDI, - FMOD_TAGTYPE_PLAYLIST, - FMOD_TAGTYPE_FMOD, - FMOD_TAGTYPE_USER, - - FMOD_TAGTYPE_MAX, - FMOD_TAGTYPE_FORCEINT = 65536 -} FMOD_TAGTYPE; - -typedef enum FMOD_TAGDATATYPE -{ - FMOD_TAGDATATYPE_BINARY, - FMOD_TAGDATATYPE_INT, - FMOD_TAGDATATYPE_FLOAT, - FMOD_TAGDATATYPE_STRING, - FMOD_TAGDATATYPE_STRING_UTF16, - FMOD_TAGDATATYPE_STRING_UTF16BE, - FMOD_TAGDATATYPE_STRING_UTF8, - - FMOD_TAGDATATYPE_MAX, - FMOD_TAGDATATYPE_FORCEINT = 65536 -} FMOD_TAGDATATYPE; - -typedef enum FMOD_PORT_TYPE -{ - FMOD_PORT_TYPE_MUSIC, - FMOD_PORT_TYPE_COPYRIGHT_MUSIC, - FMOD_PORT_TYPE_VOICE, - FMOD_PORT_TYPE_CONTROLLER, - FMOD_PORT_TYPE_PERSONAL, - FMOD_PORT_TYPE_VIBRATION, - FMOD_PORT_TYPE_AUX, - - FMOD_PORT_TYPE_MAX, - FMOD_PORT_TYPE_FORCEINT = 65536 -} FMOD_PORT_TYPE; - -/* - FMOD callbacks -*/ -typedef FMOD_RESULT (F_CALL *FMOD_DEBUG_CALLBACK) (FMOD_DEBUG_FLAGS flags, const char *file, int line, const char* func, const char* message); -typedef FMOD_RESULT (F_CALL *FMOD_SYSTEM_CALLBACK) (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void* commanddata2, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_CHANNELCONTROL_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, FMOD_CHANNELCONTROL_TYPE controltype, FMOD_CHANNELCONTROL_CALLBACK_TYPE callbacktype, void *commanddata1, void *commanddata2); -typedef FMOD_RESULT (F_CALL *FMOD_SOUND_NONBLOCK_CALLBACK) (FMOD_SOUND *sound, FMOD_RESULT result); -typedef FMOD_RESULT (F_CALL *FMOD_SOUND_PCMREAD_CALLBACK) (FMOD_SOUND *sound, void *data, unsigned int datalen); -typedef FMOD_RESULT (F_CALL *FMOD_SOUND_PCMSETPOS_CALLBACK) (FMOD_SOUND *sound, int subsound, unsigned int position, FMOD_TIMEUNIT postype); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_OPEN_CALLBACK) (const char *name, unsigned int *filesize, void **handle, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_CLOSE_CALLBACK) (void *handle, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_READ_CALLBACK) (void *handle, void *buffer, unsigned int sizebytes, unsigned int *bytesread, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_SEEK_CALLBACK) (void *handle, unsigned int pos, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_ASYNCREAD_CALLBACK) (FMOD_ASYNCREADINFO *info, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_ASYNCCANCEL_CALLBACK)(FMOD_ASYNCREADINFO *info, void *userdata); -typedef void (F_CALL *FMOD_FILE_ASYNCDONE_FUNC) (FMOD_ASYNCREADINFO *info, FMOD_RESULT result); -typedef void* (F_CALL *FMOD_MEMORY_ALLOC_CALLBACK) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void* (F_CALL *FMOD_MEMORY_REALLOC_CALLBACK) (void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void (F_CALL *FMOD_MEMORY_FREE_CALLBACK) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef float (F_CALL *FMOD_3D_ROLLOFF_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, float distance); - -/* - FMOD structs -*/ -struct FMOD_ASYNCREADINFO -{ - void *handle; - unsigned int offset; - unsigned int sizebytes; - int priority; - void *userdata; - void *buffer; - unsigned int bytesread; - FMOD_FILE_ASYNCDONE_FUNC done; -}; - -typedef struct FMOD_VECTOR -{ - float x; - float y; - float z; -} FMOD_VECTOR; - -typedef struct FMOD_3D_ATTRIBUTES -{ - FMOD_VECTOR position; - FMOD_VECTOR velocity; - FMOD_VECTOR forward; - FMOD_VECTOR up; -} FMOD_3D_ATTRIBUTES; - -typedef struct FMOD_GUID -{ - unsigned int Data1; - unsigned short Data2; - unsigned short Data3; - unsigned char Data4[8]; -} FMOD_GUID; - -typedef struct FMOD_PLUGINLIST -{ - FMOD_PLUGINTYPE type; - void *description; -} FMOD_PLUGINLIST; - -typedef struct FMOD_ADVANCEDSETTINGS -{ - int cbSize; - int maxMPEGCodecs; - int maxADPCMCodecs; - int maxXMACodecs; - int maxVorbisCodecs; - int maxAT9Codecs; - int maxFADPCMCodecs; - int maxPCMCodecs; - int ASIONumChannels; - char **ASIOChannelList; - FMOD_SPEAKER *ASIOSpeakerList; - float vol0virtualvol; - unsigned int defaultDecodeBufferSize; - unsigned short profilePort; - unsigned int geometryMaxFadeTime; - float distanceFilterCenterFreq; - int reverb3Dinstance; - int DSPBufferPoolSize; - FMOD_DSP_RESAMPLER resamplerMethod; - unsigned int randomSeed; - int maxConvolutionThreads; - int maxOpusCodecs; -} FMOD_ADVANCEDSETTINGS; - -typedef struct FMOD_TAG -{ - FMOD_TAGTYPE type; - FMOD_TAGDATATYPE datatype; - char *name; - void *data; - unsigned int datalen; - FMOD_BOOL updated; -} FMOD_TAG; - -typedef struct FMOD_CREATESOUNDEXINFO -{ - int cbsize; - unsigned int length; - unsigned int fileoffset; - int numchannels; - int defaultfrequency; - FMOD_SOUND_FORMAT format; - unsigned int decodebuffersize; - int initialsubsound; - int numsubsounds; - int *inclusionlist; - int inclusionlistnum; - FMOD_SOUND_PCMREAD_CALLBACK pcmreadcallback; - FMOD_SOUND_PCMSETPOS_CALLBACK pcmsetposcallback; - FMOD_SOUND_NONBLOCK_CALLBACK nonblockcallback; - const char *dlsname; - const char *encryptionkey; - int maxpolyphony; - void *userdata; - FMOD_SOUND_TYPE suggestedsoundtype; - FMOD_FILE_OPEN_CALLBACK fileuseropen; - FMOD_FILE_CLOSE_CALLBACK fileuserclose; - FMOD_FILE_READ_CALLBACK fileuserread; - FMOD_FILE_SEEK_CALLBACK fileuserseek; - FMOD_FILE_ASYNCREAD_CALLBACK fileuserasyncread; - FMOD_FILE_ASYNCCANCEL_CALLBACK fileuserasynccancel; - void *fileuserdata; - int filebuffersize; - FMOD_CHANNELORDER channelorder; - FMOD_SOUNDGROUP *initialsoundgroup; - unsigned int initialseekposition; - FMOD_TIMEUNIT initialseekpostype; - int ignoresetfilesystem; - unsigned int audioqueuepolicy; - unsigned int minmidigranularity; - int nonblockthreadid; - FMOD_GUID *fsbguid; -} FMOD_CREATESOUNDEXINFO; - -typedef struct FMOD_REVERB_PROPERTIES -{ - float DecayTime; - float EarlyDelay; - float LateDelay; - float HFReference; - float HFDecayRatio; - float Diffusion; - float Density; - float LowShelfFrequency; - float LowShelfGain; - float HighCut; - float EarlyLateMix; - float WetLevel; -} FMOD_REVERB_PROPERTIES; - -typedef struct FMOD_ERRORCALLBACK_INFO -{ - FMOD_RESULT result; - FMOD_ERRORCALLBACK_INSTANCETYPE instancetype; - void *instance; - const char *functionname; - const char *functionparams; -} FMOD_ERRORCALLBACK_INFO; - -typedef struct FMOD_CPU_USAGE -{ - float dsp; - float stream; - float geometry; - float update; - float convolution1; - float convolution2; -} FMOD_CPU_USAGE; - - -/* - FMOD optional headers for plugin development -*/ -#include "fmod_codec.h" -#include "fmod_dsp.h" -#include "fmod_output.h" - -#endif diff --git a/Toshi/vendor/fmod/include/fmod/core/fmod_dsp.h b/Toshi/vendor/fmod/include/fmod/core/fmod_dsp.h deleted file mode 100644 index 4c27c34..0000000 --- a/Toshi/vendor/fmod/include/fmod/core/fmod_dsp.h +++ /dev/null @@ -1,421 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - DSP header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header if you are wanting to develop your own DSP plugin to use with FMODs */ -/* dsp system. With this header you can make your own DSP plugin that FMOD can */ -/* register and use. See the documentation and examples on how to make a working plugin. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/plugin-api-dsp.html */ -/* =========================================================================================*/ -#ifndef _FMOD_DSP_H -#define _FMOD_DSP_H - -#include "fmod_dsp_effects.h" - -typedef struct FMOD_DSP_STATE FMOD_DSP_STATE; -typedef struct FMOD_DSP_BUFFER_ARRAY FMOD_DSP_BUFFER_ARRAY; -typedef struct FMOD_COMPLEX FMOD_COMPLEX; - -/* - DSP Constants -*/ -#define FMOD_PLUGIN_SDK_VERSION 110 -#define FMOD_DSP_GETPARAM_VALUESTR_LENGTH 32 - -typedef enum -{ - FMOD_DSP_PROCESS_PERFORM, - FMOD_DSP_PROCESS_QUERY -} FMOD_DSP_PROCESS_OPERATION; - -typedef enum FMOD_DSP_PAN_SURROUND_FLAGS -{ - FMOD_DSP_PAN_SURROUND_DEFAULT = 0, - FMOD_DSP_PAN_SURROUND_ROTATION_NOT_BIASED = 1, - - FMOD_DSP_PAN_SURROUND_FLAGS_FORCEINT = 65536 -} FMOD_DSP_PAN_SURROUND_FLAGS; - -typedef enum -{ - FMOD_DSP_PARAMETER_TYPE_FLOAT, - FMOD_DSP_PARAMETER_TYPE_INT, - FMOD_DSP_PARAMETER_TYPE_BOOL, - FMOD_DSP_PARAMETER_TYPE_DATA, - - FMOD_DSP_PARAMETER_TYPE_MAX, - FMOD_DSP_PARAMETER_TYPE_FORCEINT = 65536 -} FMOD_DSP_PARAMETER_TYPE; - -typedef enum -{ - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_LINEAR, - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO, - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR, - - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_FORCEINT = 65536 -} FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE; - -typedef enum -{ - FMOD_DSP_PARAMETER_DATA_TYPE_USER = 0, - FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN = -1, - FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES = -2, - FMOD_DSP_PARAMETER_DATA_TYPE_SIDECHAIN = -3, - FMOD_DSP_PARAMETER_DATA_TYPE_FFT = -4, - FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI = -5, - FMOD_DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE = -6, -} FMOD_DSP_PARAMETER_DATA_TYPE; - -/* - DSP Callbacks -*/ -typedef FMOD_RESULT (F_CALL *FMOD_DSP_CREATE_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_RELEASE_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_RESET_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_READ_CALLBACK) (FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PROCESS_CALLBACK) (FMOD_DSP_STATE *dsp_state, unsigned int length, const FMOD_DSP_BUFFER_ARRAY *inbufferarray, FMOD_DSP_BUFFER_ARRAY *outbufferarray, FMOD_BOOL inputsidle, FMOD_DSP_PROCESS_OPERATION op); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPOSITION_CALLBACK) (FMOD_DSP_STATE *dsp_state, unsigned int pos); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SHOULDIPROCESS_CALLBACK) (FMOD_DSP_STATE *dsp_state, FMOD_BOOL inputsidle, unsigned int length, FMOD_CHANNELMASK inmask, int inchannels, FMOD_SPEAKERMODE speakermode); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_FLOAT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float value); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_INT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, int value); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_BOOL_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, FMOD_BOOL value); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_DATA_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, void *data, unsigned int length); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_FLOAT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float *value, char *valuestr); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_INT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, int *value, char *valuestr); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_BOOL_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, FMOD_BOOL *value, char *valuestr); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_DATA_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, void **data, unsigned int *length, char *valuestr); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SYSTEM_REGISTER_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SYSTEM_MIX_CALLBACK) (FMOD_DSP_STATE *dsp_state, int stage); - -/* - DSP Functions -*/ -typedef void * (F_CALL *FMOD_DSP_ALLOC_FUNC) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void * (F_CALL *FMOD_DSP_REALLOC_FUNC) (void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void (F_CALL *FMOD_DSP_FREE_FUNC) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void (F_CALL *FMOD_DSP_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *str, ...); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETSAMPLERATE_FUNC) (FMOD_DSP_STATE *dsp_state, int *rate); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETBLOCKSIZE_FUNC) (FMOD_DSP_STATE *dsp_state, unsigned int *blocksize); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETSPEAKERMODE_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE *speakermode_mixer, FMOD_SPEAKERMODE *speakermode_output); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETCLOCK_FUNC) (FMOD_DSP_STATE *dsp_state, unsigned long long *clock, unsigned int *offset, unsigned int *length); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETLISTENERATTRIBUTES_FUNC) (FMOD_DSP_STATE *dsp_state, int *numlisteners, FMOD_3D_ATTRIBUTES *attributes); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETUSERDATA_FUNC) (FMOD_DSP_STATE *dsp_state, void **userdata); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_DFT_FFTREAL_FUNC) (FMOD_DSP_STATE *dsp_state, int size, const float *signal, FMOD_COMPLEX* dft, const float *window, int signalhop); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_DFT_IFFTREAL_FUNC) (FMOD_DSP_STATE *dsp_state, int size, const FMOD_COMPLEX *dft, float* signal, const float *window, int signalhop); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMMONOMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, float lowFrequencyGain, float overallGain, float *matrix); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, float pan, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, FMOD_SPEAKERMODE targetSpeakerMode, float direction, float extent, float rotation, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix, FMOD_DSP_PAN_SURROUND_FLAGS flags); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE targetSpeakerMode, float direction, float extent, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE targetSpeakerMode, float direction, float extent, float rotation, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_DSP_PAN_3D_ROLLOFF_TYPE rolloff, float distance, float mindistance, float maxdistance, float *gain); - -/* - DSP Structures -*/ -struct FMOD_DSP_BUFFER_ARRAY -{ - int numbuffers; - int *buffernumchannels; - FMOD_CHANNELMASK *bufferchannelmask; - float **buffers; - FMOD_SPEAKERMODE speakermode; -}; - -struct FMOD_COMPLEX -{ - float real; - float imag; -}; - -typedef struct FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR -{ - int numpoints; - float *pointparamvalues; - float *pointpositions; -} FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR; - -typedef struct FMOD_DSP_PARAMETER_FLOAT_MAPPING -{ - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE type; - FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR piecewiselinearmapping; -} FMOD_DSP_PARAMETER_FLOAT_MAPPING; - -typedef struct FMOD_DSP_PARAMETER_DESC_FLOAT -{ - float min; - float max; - float defaultval; - FMOD_DSP_PARAMETER_FLOAT_MAPPING mapping; -} FMOD_DSP_PARAMETER_DESC_FLOAT; - -typedef struct FMOD_DSP_PARAMETER_DESC_INT -{ - int min; - int max; - int defaultval; - FMOD_BOOL goestoinf; - const char* const* valuenames; -} FMOD_DSP_PARAMETER_DESC_INT; - -typedef struct FMOD_DSP_PARAMETER_DESC_BOOL -{ - FMOD_BOOL defaultval; - const char* const* valuenames; -} FMOD_DSP_PARAMETER_DESC_BOOL; - -typedef struct FMOD_DSP_PARAMETER_DESC_DATA -{ - int datatype; -} FMOD_DSP_PARAMETER_DESC_DATA; - -typedef struct FMOD_DSP_PARAMETER_DESC -{ - FMOD_DSP_PARAMETER_TYPE type; - char name[16]; - char label[16]; - const char *description; - - union - { - FMOD_DSP_PARAMETER_DESC_FLOAT floatdesc; - FMOD_DSP_PARAMETER_DESC_INT intdesc; - FMOD_DSP_PARAMETER_DESC_BOOL booldesc; - FMOD_DSP_PARAMETER_DESC_DATA datadesc; - }; -} FMOD_DSP_PARAMETER_DESC; - -typedef struct FMOD_DSP_PARAMETER_OVERALLGAIN -{ - float linear_gain; - float linear_gain_additive; -} FMOD_DSP_PARAMETER_OVERALLGAIN; - -typedef struct FMOD_DSP_PARAMETER_3DATTRIBUTES -{ - FMOD_3D_ATTRIBUTES relative; - FMOD_3D_ATTRIBUTES absolute; -} FMOD_DSP_PARAMETER_3DATTRIBUTES; - -typedef struct FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI -{ - int numlisteners; - FMOD_3D_ATTRIBUTES relative[FMOD_MAX_LISTENERS]; - float weight[FMOD_MAX_LISTENERS]; - FMOD_3D_ATTRIBUTES absolute; -} FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI; - -typedef struct FMOD_DSP_PARAMETER_ATTENUATION_RANGE -{ - float min; - float max; -} FMOD_DSP_PARAMETER_ATTENUATION_RANGE; - -typedef struct FMOD_DSP_PARAMETER_SIDECHAIN -{ - FMOD_BOOL sidechainenable; -} FMOD_DSP_PARAMETER_SIDECHAIN; - -typedef struct FMOD_DSP_PARAMETER_FFT -{ - int length; - int numchannels; - float *spectrum[32]; -} FMOD_DSP_PARAMETER_FFT; - -typedef struct FMOD_DSP_DESCRIPTION -{ - unsigned int pluginsdkversion; - char name[32]; - unsigned int version; - int numinputbuffers; - int numoutputbuffers; - FMOD_DSP_CREATE_CALLBACK create; - FMOD_DSP_RELEASE_CALLBACK release; - FMOD_DSP_RESET_CALLBACK reset; - FMOD_DSP_READ_CALLBACK read; - FMOD_DSP_PROCESS_CALLBACK process; - FMOD_DSP_SETPOSITION_CALLBACK setposition; - - int numparameters; - FMOD_DSP_PARAMETER_DESC **paramdesc; - FMOD_DSP_SETPARAM_FLOAT_CALLBACK setparameterfloat; - FMOD_DSP_SETPARAM_INT_CALLBACK setparameterint; - FMOD_DSP_SETPARAM_BOOL_CALLBACK setparameterbool; - FMOD_DSP_SETPARAM_DATA_CALLBACK setparameterdata; - FMOD_DSP_GETPARAM_FLOAT_CALLBACK getparameterfloat; - FMOD_DSP_GETPARAM_INT_CALLBACK getparameterint; - FMOD_DSP_GETPARAM_BOOL_CALLBACK getparameterbool; - FMOD_DSP_GETPARAM_DATA_CALLBACK getparameterdata; - FMOD_DSP_SHOULDIPROCESS_CALLBACK shouldiprocess; - void *userdata; - - FMOD_DSP_SYSTEM_REGISTER_CALLBACK sys_register; - FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK sys_deregister; - FMOD_DSP_SYSTEM_MIX_CALLBACK sys_mix; - -} FMOD_DSP_DESCRIPTION; - -typedef struct FMOD_DSP_STATE_DFT_FUNCTIONS -{ - FMOD_DSP_DFT_FFTREAL_FUNC fftreal; - FMOD_DSP_DFT_IFFTREAL_FUNC inversefftreal; -} FMOD_DSP_STATE_DFT_FUNCTIONS; - -typedef struct FMOD_DSP_STATE_PAN_FUNCTIONS -{ - FMOD_DSP_PAN_SUMMONOMATRIX_FUNC summonomatrix; - FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC sumstereomatrix; - FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC sumsurroundmatrix; - FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC summonotosurroundmatrix; - FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC sumstereotosurroundmatrix; - FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC getrolloffgain; -} FMOD_DSP_STATE_PAN_FUNCTIONS; - -typedef struct FMOD_DSP_STATE_FUNCTIONS -{ - FMOD_DSP_ALLOC_FUNC alloc; - FMOD_DSP_REALLOC_FUNC realloc; - FMOD_DSP_FREE_FUNC free; - FMOD_DSP_GETSAMPLERATE_FUNC getsamplerate; - FMOD_DSP_GETBLOCKSIZE_FUNC getblocksize; - FMOD_DSP_STATE_DFT_FUNCTIONS *dft; - FMOD_DSP_STATE_PAN_FUNCTIONS *pan; - FMOD_DSP_GETSPEAKERMODE_FUNC getspeakermode; - FMOD_DSP_GETCLOCK_FUNC getclock; - FMOD_DSP_GETLISTENERATTRIBUTES_FUNC getlistenerattributes; - FMOD_DSP_LOG_FUNC log; - FMOD_DSP_GETUSERDATA_FUNC getuserdata; -} FMOD_DSP_STATE_FUNCTIONS; - -struct FMOD_DSP_STATE -{ - void *instance; - void *plugindata; - FMOD_CHANNELMASK channelmask; - FMOD_SPEAKERMODE source_speakermode; - float *sidechaindata; - int sidechainchannels; - FMOD_DSP_STATE_FUNCTIONS *functions; - int systemobject; -}; - -typedef struct FMOD_DSP_METERING_INFO -{ - int numsamples; - float peaklevel[32]; - float rmslevel[32]; - short numchannels; -} FMOD_DSP_METERING_INFO; - -/* - DSP Macros -*/ -#define FMOD_DSP_INIT_PARAMDESC_FLOAT(_paramstruct, _name, _label, _description, _min, _max, _defaultval) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_FLOAT; \ - strncpy((_paramstruct).name, _name, 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).floatdesc.min = _min; \ - (_paramstruct).floatdesc.max = _max; \ - (_paramstruct).floatdesc.defaultval = _defaultval; \ - (_paramstruct).floatdesc.mapping.type = FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO; - -#define FMOD_DSP_INIT_PARAMDESC_FLOAT_WITH_MAPPING(_paramstruct, _name, _label, _description, _defaultval, _values, _positions); \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_FLOAT; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).floatdesc.min = _values[0]; \ - (_paramstruct).floatdesc.max = _values[sizeof(_values) / sizeof(float) - 1]; \ - (_paramstruct).floatdesc.defaultval = _defaultval; \ - (_paramstruct).floatdesc.mapping.type = FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR; \ - (_paramstruct).floatdesc.mapping.piecewiselinearmapping.numpoints = sizeof(_values) / sizeof(float); \ - (_paramstruct).floatdesc.mapping.piecewiselinearmapping.pointparamvalues = _values; \ - (_paramstruct).floatdesc.mapping.piecewiselinearmapping.pointpositions = _positions; - -#define FMOD_DSP_INIT_PARAMDESC_INT(_paramstruct, _name, _label, _description, _min, _max, _defaultval, _goestoinf, _valuenames) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_INT; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).intdesc.min = _min; \ - (_paramstruct).intdesc.max = _max; \ - (_paramstruct).intdesc.defaultval = _defaultval; \ - (_paramstruct).intdesc.goestoinf = _goestoinf; \ - (_paramstruct).intdesc.valuenames = _valuenames; - -#define FMOD_DSP_INIT_PARAMDESC_INT_ENUMERATED(_paramstruct, _name, _label, _description, _defaultval, _valuenames) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_INT; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).intdesc.min = 0; \ - (_paramstruct).intdesc.max = sizeof(_valuenames) / sizeof(char*) - 1; \ - (_paramstruct).intdesc.defaultval = _defaultval; \ - (_paramstruct).intdesc.goestoinf = false; \ - (_paramstruct).intdesc.valuenames = _valuenames; - -#define FMOD_DSP_INIT_PARAMDESC_BOOL(_paramstruct, _name, _label, _description, _defaultval, _valuenames) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_BOOL; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).booldesc.defaultval = _defaultval; \ - (_paramstruct).booldesc.valuenames = _valuenames; - -#define FMOD_DSP_INIT_PARAMDESC_DATA(_paramstruct, _name, _label, _description, _datatype) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_DATA; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).datadesc.datatype = _datatype; - -#define FMOD_DSP_ALLOC(_state, _size) \ - (_state)->functions->alloc(_size, FMOD_MEMORY_NORMAL, __FILE__) -#define FMOD_DSP_REALLOC(_state, _ptr, _size) \ - (_state)->functions->realloc(_ptr, _size, FMOD_MEMORY_NORMAL, __FILE__) -#define FMOD_DSP_FREE(_state, _ptr) \ - (_state)->functions->free(_ptr, FMOD_MEMORY_NORMAL, __FILE__) -#define FMOD_DSP_LOG(_state, _level, _location, _format, ...) \ - (_state)->functions->log(_level, __FILE__, __LINE__, _location, _format, __VA_ARGS__) -#define FMOD_DSP_GETSAMPLERATE(_state, _rate) \ - (_state)->functions->getsamplerate(_state, _rate) -#define FMOD_DSP_GETBLOCKSIZE(_state, _blocksize) \ - (_state)->functions->getblocksize(_state, _blocksize) -#define FMOD_DSP_GETSPEAKERMODE(_state, _speakermodemix, _speakermodeout) \ - (_state)->functions->getspeakermode(_state, _speakermodemix, _speakermodeout) -#define FMOD_DSP_GETCLOCK(_state, _clock, _offset, _length) \ - (_state)->functions->getclock(_state, _clock, _offset, _length) -#define FMOD_DSP_GETLISTENERATTRIBUTES(_state, _numlisteners, _attributes) \ - (_state)->functions->getlistenerattributes(_state, _numlisteners, _attributes) -#define FMOD_DSP_GETUSERDATA(_state, _userdata) \ - (_state)->functions->getuserdata(_state, _userdata) -#define FMOD_DSP_DFT_FFTREAL(_state, _size, _signal, _dft, _window, _signalhop) \ - (_state)->functions->dft->fftreal(_state, _size, _signal, _dft, _window, _signalhop) -#define FMOD_DSP_DFT_IFFTREAL(_state, _size, _dft, _signal, _window, _signalhop) \ - (_state)->functions->dft->inversefftreal(_state, _size, _dft, _signal, _window, _signalhop) -#define FMOD_DSP_PAN_SUMMONOMATRIX(_state, _sourcespeakermode, _lowfrequencygain, _overallgain, _matrix) \ - (_state)->functions->pan->summonomatrix(_state, _sourcespeakermode, _lowfrequencygain, _overallgain, _matrix) -#define FMOD_DSP_PAN_SUMSTEREOMATRIX(_state, _sourcespeakermode, _pan, _lowfrequencygain, _overallgain, _matrixhop, _matrix) \ - (_state)->functions->pan->sumstereomatrix(_state, _sourcespeakermode, _pan, _lowfrequencygain, _overallgain, _matrixhop, _matrix) -#define FMOD_DSP_PAN_SUMSURROUNDMATRIX(_state, _sourcespeakermode, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, _matrixhop, _matrix, _flags) \ - (_state)->functions->pan->sumsurroundmatrix(_state, _sourcespeakermode, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, _matrixhop, _matrix, _flags) -#define FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX(_state, _targetspeakermode, _direction, _extent, _lowfrequencygain, _overallgain, _matrixhop, _matrix) \ - (_state)->functions->pan->summonotosurroundmatrix(_state, _targetspeakermode, _direction, _extent, _lowfrequencygain, _overallgain, _matrixhop, _matrix) -#define FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX(_state, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, matrixhop, _matrix) \ - (_state)->functions->pan->sumstereotosurroundmatrix(_state, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, matrixhop, _matrix) -#define FMOD_DSP_PAN_GETROLLOFFGAIN(_state, _rolloff, _distance, _mindistance, _maxdistance, _gain) \ - (_state)->functions->pan->getrolloffgain(_state, _rolloff, _distance, _mindistance, _maxdistance, _gain) - -#endif - diff --git a/Toshi/vendor/fmod/include/fmod/core/fmod_dsp_effects.h b/Toshi/vendor/fmod/include/fmod/core/fmod_dsp_effects.h deleted file mode 100644 index ba0f8dd..0000000 --- a/Toshi/vendor/fmod/include/fmod/core/fmod_dsp_effects.h +++ /dev/null @@ -1,577 +0,0 @@ -/* ============================================================================================================= */ -/* FMOD Core API - Built-in effects header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* In this header you can find parameter structures for FMOD system registered DSP effects */ -/* and generators. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api-common-dsp-effects.html#fmod_dsp_type */ -/* ============================================================================================================= */ - -#ifndef _FMOD_DSP_EFFECTS_H -#define _FMOD_DSP_EFFECTS_H - -typedef enum -{ - FMOD_DSP_TYPE_UNKNOWN, - FMOD_DSP_TYPE_MIXER, - FMOD_DSP_TYPE_OSCILLATOR, - FMOD_DSP_TYPE_LOWPASS, - FMOD_DSP_TYPE_ITLOWPASS, - FMOD_DSP_TYPE_HIGHPASS, - FMOD_DSP_TYPE_ECHO, - FMOD_DSP_TYPE_FADER, - FMOD_DSP_TYPE_FLANGE, - FMOD_DSP_TYPE_DISTORTION, - FMOD_DSP_TYPE_NORMALIZE, - FMOD_DSP_TYPE_LIMITER, - FMOD_DSP_TYPE_PARAMEQ, - FMOD_DSP_TYPE_PITCHSHIFT, - FMOD_DSP_TYPE_CHORUS, - FMOD_DSP_TYPE_VSTPLUGIN, - FMOD_DSP_TYPE_WINAMPPLUGIN, - FMOD_DSP_TYPE_ITECHO, - FMOD_DSP_TYPE_COMPRESSOR, - FMOD_DSP_TYPE_SFXREVERB, - FMOD_DSP_TYPE_LOWPASS_SIMPLE, - FMOD_DSP_TYPE_DELAY, - FMOD_DSP_TYPE_TREMOLO, - FMOD_DSP_TYPE_LADSPAPLUGIN, - FMOD_DSP_TYPE_SEND, - FMOD_DSP_TYPE_RETURN, - FMOD_DSP_TYPE_HIGHPASS_SIMPLE, - FMOD_DSP_TYPE_PAN, - FMOD_DSP_TYPE_THREE_EQ, - FMOD_DSP_TYPE_FFT, - FMOD_DSP_TYPE_LOUDNESS_METER, - FMOD_DSP_TYPE_ENVELOPEFOLLOWER, - FMOD_DSP_TYPE_CONVOLUTIONREVERB, - FMOD_DSP_TYPE_CHANNELMIX, - FMOD_DSP_TYPE_TRANSCEIVER, - FMOD_DSP_TYPE_OBJECTPAN, - FMOD_DSP_TYPE_MULTIBAND_EQ, - - FMOD_DSP_TYPE_MAX, - FMOD_DSP_TYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ -} FMOD_DSP_TYPE; - -/* - =================================================================================================== - - FMOD built in effect parameters. - Use DSP::setParameter with these enums for the 'index' parameter. - - =================================================================================================== -*/ - -typedef enum -{ - FMOD_DSP_OSCILLATOR_TYPE, - FMOD_DSP_OSCILLATOR_RATE -} FMOD_DSP_OSCILLATOR; - - -typedef enum -{ - FMOD_DSP_LOWPASS_CUTOFF, - FMOD_DSP_LOWPASS_RESONANCE -} FMOD_DSP_LOWPASS; - - -typedef enum -{ - FMOD_DSP_ITLOWPASS_CUTOFF, - FMOD_DSP_ITLOWPASS_RESONANCE -} FMOD_DSP_ITLOWPASS; - - -typedef enum -{ - FMOD_DSP_HIGHPASS_CUTOFF, - FMOD_DSP_HIGHPASS_RESONANCE -} FMOD_DSP_HIGHPASS; - - -typedef enum -{ - FMOD_DSP_ECHO_DELAY, - FMOD_DSP_ECHO_FEEDBACK, - FMOD_DSP_ECHO_DRYLEVEL, - FMOD_DSP_ECHO_WETLEVEL -} FMOD_DSP_ECHO; - - -typedef enum FMOD_DSP_FADER -{ - FMOD_DSP_FADER_GAIN, - FMOD_DSP_FADER_OVERALL_GAIN, -} FMOD_DSP_FADER; - - -typedef enum -{ - FMOD_DSP_FLANGE_MIX, - FMOD_DSP_FLANGE_DEPTH, - FMOD_DSP_FLANGE_RATE -} FMOD_DSP_FLANGE; - - -typedef enum -{ - FMOD_DSP_DISTORTION_LEVEL -} FMOD_DSP_DISTORTION; - - -typedef enum -{ - FMOD_DSP_NORMALIZE_FADETIME, - FMOD_DSP_NORMALIZE_THRESHOLD, - FMOD_DSP_NORMALIZE_MAXAMP -} FMOD_DSP_NORMALIZE; - - -typedef enum -{ - FMOD_DSP_LIMITER_RELEASETIME, - FMOD_DSP_LIMITER_CEILING, - FMOD_DSP_LIMITER_MAXIMIZERGAIN, - FMOD_DSP_LIMITER_MODE, -} FMOD_DSP_LIMITER; - - -typedef enum -{ - FMOD_DSP_PARAMEQ_CENTER, - FMOD_DSP_PARAMEQ_BANDWIDTH, - FMOD_DSP_PARAMEQ_GAIN -} FMOD_DSP_PARAMEQ; - - -typedef enum FMOD_DSP_MULTIBAND_EQ -{ - FMOD_DSP_MULTIBAND_EQ_A_FILTER, - FMOD_DSP_MULTIBAND_EQ_A_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_A_Q, - FMOD_DSP_MULTIBAND_EQ_A_GAIN, - FMOD_DSP_MULTIBAND_EQ_B_FILTER, - FMOD_DSP_MULTIBAND_EQ_B_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_B_Q, - FMOD_DSP_MULTIBAND_EQ_B_GAIN, - FMOD_DSP_MULTIBAND_EQ_C_FILTER, - FMOD_DSP_MULTIBAND_EQ_C_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_C_Q, - FMOD_DSP_MULTIBAND_EQ_C_GAIN, - FMOD_DSP_MULTIBAND_EQ_D_FILTER, - FMOD_DSP_MULTIBAND_EQ_D_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_D_Q, - FMOD_DSP_MULTIBAND_EQ_D_GAIN, - FMOD_DSP_MULTIBAND_EQ_E_FILTER, - FMOD_DSP_MULTIBAND_EQ_E_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_E_Q, - FMOD_DSP_MULTIBAND_EQ_E_GAIN, -} FMOD_DSP_MULTIBAND_EQ; - - -typedef enum FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE -{ - FMOD_DSP_MULTIBAND_EQ_FILTER_DISABLED, - FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_12DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_24DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_48DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_12DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_24DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_48DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_LOWSHELF, - FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHSHELF, - FMOD_DSP_MULTIBAND_EQ_FILTER_PEAKING, - FMOD_DSP_MULTIBAND_EQ_FILTER_BANDPASS, - FMOD_DSP_MULTIBAND_EQ_FILTER_NOTCH, - FMOD_DSP_MULTIBAND_EQ_FILTER_ALLPASS, -} FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE; - - -typedef enum -{ - FMOD_DSP_PITCHSHIFT_PITCH, - FMOD_DSP_PITCHSHIFT_FFTSIZE, - FMOD_DSP_PITCHSHIFT_OVERLAP, - FMOD_DSP_PITCHSHIFT_MAXCHANNELS -} FMOD_DSP_PITCHSHIFT; - - -typedef enum -{ - FMOD_DSP_CHORUS_MIX, - FMOD_DSP_CHORUS_RATE, - FMOD_DSP_CHORUS_DEPTH, -} FMOD_DSP_CHORUS; - - -typedef enum -{ - FMOD_DSP_ITECHO_WETDRYMIX, - FMOD_DSP_ITECHO_FEEDBACK, - FMOD_DSP_ITECHO_LEFTDELAY, - FMOD_DSP_ITECHO_RIGHTDELAY, - FMOD_DSP_ITECHO_PANDELAY -} FMOD_DSP_ITECHO; - -typedef enum -{ - FMOD_DSP_COMPRESSOR_THRESHOLD, - FMOD_DSP_COMPRESSOR_RATIO, - FMOD_DSP_COMPRESSOR_ATTACK, - FMOD_DSP_COMPRESSOR_RELEASE, - FMOD_DSP_COMPRESSOR_GAINMAKEUP, - FMOD_DSP_COMPRESSOR_USESIDECHAIN, - FMOD_DSP_COMPRESSOR_LINKED -} FMOD_DSP_COMPRESSOR; - -typedef enum -{ - FMOD_DSP_SFXREVERB_DECAYTIME, - FMOD_DSP_SFXREVERB_EARLYDELAY, - FMOD_DSP_SFXREVERB_LATEDELAY, - FMOD_DSP_SFXREVERB_HFREFERENCE, - FMOD_DSP_SFXREVERB_HFDECAYRATIO, - FMOD_DSP_SFXREVERB_DIFFUSION, - FMOD_DSP_SFXREVERB_DENSITY, - FMOD_DSP_SFXREVERB_LOWSHELFFREQUENCY, - FMOD_DSP_SFXREVERB_LOWSHELFGAIN, - FMOD_DSP_SFXREVERB_HIGHCUT, - FMOD_DSP_SFXREVERB_EARLYLATEMIX, - FMOD_DSP_SFXREVERB_WETLEVEL, - FMOD_DSP_SFXREVERB_DRYLEVEL -} FMOD_DSP_SFXREVERB; - -typedef enum -{ - FMOD_DSP_LOWPASS_SIMPLE_CUTOFF -} FMOD_DSP_LOWPASS_SIMPLE; - - -typedef enum -{ - FMOD_DSP_DELAY_CH0, - FMOD_DSP_DELAY_CH1, - FMOD_DSP_DELAY_CH2, - FMOD_DSP_DELAY_CH3, - FMOD_DSP_DELAY_CH4, - FMOD_DSP_DELAY_CH5, - FMOD_DSP_DELAY_CH6, - FMOD_DSP_DELAY_CH7, - FMOD_DSP_DELAY_CH8, - FMOD_DSP_DELAY_CH9, - FMOD_DSP_DELAY_CH10, - FMOD_DSP_DELAY_CH11, - FMOD_DSP_DELAY_CH12, - FMOD_DSP_DELAY_CH13, - FMOD_DSP_DELAY_CH14, - FMOD_DSP_DELAY_CH15, - FMOD_DSP_DELAY_MAXDELAY -} FMOD_DSP_DELAY; - - -typedef enum -{ - FMOD_DSP_TREMOLO_FREQUENCY, - FMOD_DSP_TREMOLO_DEPTH, - FMOD_DSP_TREMOLO_SHAPE, - FMOD_DSP_TREMOLO_SKEW, - FMOD_DSP_TREMOLO_DUTY, - FMOD_DSP_TREMOLO_SQUARE, - FMOD_DSP_TREMOLO_PHASE, - FMOD_DSP_TREMOLO_SPREAD -} FMOD_DSP_TREMOLO; - - -typedef enum -{ - FMOD_DSP_SEND_RETURNID, - FMOD_DSP_SEND_LEVEL, -} FMOD_DSP_SEND; - - -typedef enum -{ - FMOD_DSP_RETURN_ID, - FMOD_DSP_RETURN_INPUT_SPEAKER_MODE -} FMOD_DSP_RETURN; - - -typedef enum -{ - FMOD_DSP_HIGHPASS_SIMPLE_CUTOFF -} FMOD_DSP_HIGHPASS_SIMPLE; - - -typedef enum -{ - FMOD_DSP_PAN_2D_STEREO_MODE_DISTRIBUTED, - FMOD_DSP_PAN_2D_STEREO_MODE_DISCRETE -} FMOD_DSP_PAN_2D_STEREO_MODE_TYPE; - - -typedef enum -{ - FMOD_DSP_PAN_MODE_MONO, - FMOD_DSP_PAN_MODE_STEREO, - FMOD_DSP_PAN_MODE_SURROUND -} FMOD_DSP_PAN_MODE_TYPE; - - -typedef enum -{ - FMOD_DSP_PAN_3D_ROLLOFF_LINEARSQUARED, - FMOD_DSP_PAN_3D_ROLLOFF_LINEAR, - FMOD_DSP_PAN_3D_ROLLOFF_INVERSE, - FMOD_DSP_PAN_3D_ROLLOFF_INVERSETAPERED, - FMOD_DSP_PAN_3D_ROLLOFF_CUSTOM -} FMOD_DSP_PAN_3D_ROLLOFF_TYPE; - - -typedef enum -{ - FMOD_DSP_PAN_3D_EXTENT_MODE_AUTO, - FMOD_DSP_PAN_3D_EXTENT_MODE_USER, - FMOD_DSP_PAN_3D_EXTENT_MODE_OFF -} FMOD_DSP_PAN_3D_EXTENT_MODE_TYPE; - - -typedef enum -{ - FMOD_DSP_PAN_MODE, - FMOD_DSP_PAN_2D_STEREO_POSITION, - FMOD_DSP_PAN_2D_DIRECTION, - FMOD_DSP_PAN_2D_EXTENT, - FMOD_DSP_PAN_2D_ROTATION, - FMOD_DSP_PAN_2D_LFE_LEVEL, - FMOD_DSP_PAN_2D_STEREO_MODE, - FMOD_DSP_PAN_2D_STEREO_SEPARATION, - FMOD_DSP_PAN_2D_STEREO_AXIS, - FMOD_DSP_PAN_ENABLED_SPEAKERS, - FMOD_DSP_PAN_3D_POSITION, - FMOD_DSP_PAN_3D_ROLLOFF, - FMOD_DSP_PAN_3D_MIN_DISTANCE, - FMOD_DSP_PAN_3D_MAX_DISTANCE, - FMOD_DSP_PAN_3D_EXTENT_MODE, - FMOD_DSP_PAN_3D_SOUND_SIZE, - FMOD_DSP_PAN_3D_MIN_EXTENT, - FMOD_DSP_PAN_3D_PAN_BLEND, - FMOD_DSP_PAN_LFE_UPMIX_ENABLED, - FMOD_DSP_PAN_OVERALL_GAIN, - FMOD_DSP_PAN_SURROUND_SPEAKER_MODE, - FMOD_DSP_PAN_2D_HEIGHT_BLEND, - FMOD_DSP_PAN_ATTENUATION_RANGE, - FMOD_DSP_PAN_OVERRIDE_RANGE -} FMOD_DSP_PAN; - - -typedef enum -{ - FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_12DB, - FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_24DB, - FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_48DB -} FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_TYPE; - - -typedef enum -{ - FMOD_DSP_THREE_EQ_LOWGAIN, - FMOD_DSP_THREE_EQ_MIDGAIN, - FMOD_DSP_THREE_EQ_HIGHGAIN, - FMOD_DSP_THREE_EQ_LOWCROSSOVER, - FMOD_DSP_THREE_EQ_HIGHCROSSOVER, - FMOD_DSP_THREE_EQ_CROSSOVERSLOPE -} FMOD_DSP_THREE_EQ; - - -typedef enum -{ - FMOD_DSP_FFT_WINDOW_RECT, - FMOD_DSP_FFT_WINDOW_TRIANGLE, - FMOD_DSP_FFT_WINDOW_HAMMING, - FMOD_DSP_FFT_WINDOW_HANNING, - FMOD_DSP_FFT_WINDOW_BLACKMAN, - FMOD_DSP_FFT_WINDOW_BLACKMANHARRIS -} FMOD_DSP_FFT_WINDOW; - - -typedef enum -{ - FMOD_DSP_FFT_WINDOWSIZE, - FMOD_DSP_FFT_WINDOWTYPE, - FMOD_DSP_FFT_SPECTRUMDATA, - FMOD_DSP_FFT_DOMINANT_FREQ -} FMOD_DSP_FFT; - -#define FMOD_DSP_LOUDNESS_METER_HISTOGRAM_SAMPLES 66 - -typedef enum -{ - FMOD_DSP_LOUDNESS_METER_STATE, - FMOD_DSP_LOUDNESS_METER_WEIGHTING, - FMOD_DSP_LOUDNESS_METER_INFO -} FMOD_DSP_LOUDNESS_METER; - - -typedef enum -{ - FMOD_DSP_LOUDNESS_METER_STATE_RESET_INTEGRATED = -3, - FMOD_DSP_LOUDNESS_METER_STATE_RESET_MAXPEAK = -2, - FMOD_DSP_LOUDNESS_METER_STATE_RESET_ALL = -1, - FMOD_DSP_LOUDNESS_METER_STATE_PAUSED = 0, - FMOD_DSP_LOUDNESS_METER_STATE_ANALYZING = 1 -} FMOD_DSP_LOUDNESS_METER_STATE_TYPE; - -typedef struct FMOD_DSP_LOUDNESS_METER_INFO_TYPE -{ - float momentaryloudness; - float shorttermloudness; - float integratedloudness; - float loudness10thpercentile; - float loudness95thpercentile; - float loudnesshistogram[FMOD_DSP_LOUDNESS_METER_HISTOGRAM_SAMPLES]; - float maxtruepeak; - float maxmomentaryloudness; -} FMOD_DSP_LOUDNESS_METER_INFO_TYPE; - -typedef struct FMOD_DSP_LOUDNESS_METER_WEIGHTING_TYPE -{ - float channelweight[32]; -} FMOD_DSP_LOUDNESS_METER_WEIGHTING_TYPE; - - -typedef enum -{ - FMOD_DSP_ENVELOPEFOLLOWER_ATTACK, - FMOD_DSP_ENVELOPEFOLLOWER_RELEASE, - FMOD_DSP_ENVELOPEFOLLOWER_ENVELOPE, - FMOD_DSP_ENVELOPEFOLLOWER_USESIDECHAIN -} FMOD_DSP_ENVELOPEFOLLOWER; - -typedef enum -{ - FMOD_DSP_CONVOLUTION_REVERB_PARAM_IR, - FMOD_DSP_CONVOLUTION_REVERB_PARAM_WET, - FMOD_DSP_CONVOLUTION_REVERB_PARAM_DRY, - FMOD_DSP_CONVOLUTION_REVERB_PARAM_LINKED -} FMOD_DSP_CONVOLUTION_REVERB; - -typedef enum -{ - FMOD_DSP_CHANNELMIX_OUTPUT_DEFAULT, - FMOD_DSP_CHANNELMIX_OUTPUT_ALLMONO, - FMOD_DSP_CHANNELMIX_OUTPUT_ALLSTEREO, - FMOD_DSP_CHANNELMIX_OUTPUT_ALLQUAD, - FMOD_DSP_CHANNELMIX_OUTPUT_ALL5POINT1, - FMOD_DSP_CHANNELMIX_OUTPUT_ALL7POINT1, - FMOD_DSP_CHANNELMIX_OUTPUT_ALLLFE, - FMOD_DSP_CHANNELMIX_OUTPUT_ALL7POINT1POINT4 -} FMOD_DSP_CHANNELMIX_OUTPUT; - -typedef enum -{ - FMOD_DSP_CHANNELMIX_OUTPUTGROUPING, - FMOD_DSP_CHANNELMIX_GAIN_CH0, - FMOD_DSP_CHANNELMIX_GAIN_CH1, - FMOD_DSP_CHANNELMIX_GAIN_CH2, - FMOD_DSP_CHANNELMIX_GAIN_CH3, - FMOD_DSP_CHANNELMIX_GAIN_CH4, - FMOD_DSP_CHANNELMIX_GAIN_CH5, - FMOD_DSP_CHANNELMIX_GAIN_CH6, - FMOD_DSP_CHANNELMIX_GAIN_CH7, - FMOD_DSP_CHANNELMIX_GAIN_CH8, - FMOD_DSP_CHANNELMIX_GAIN_CH9, - FMOD_DSP_CHANNELMIX_GAIN_CH10, - FMOD_DSP_CHANNELMIX_GAIN_CH11, - FMOD_DSP_CHANNELMIX_GAIN_CH12, - FMOD_DSP_CHANNELMIX_GAIN_CH13, - FMOD_DSP_CHANNELMIX_GAIN_CH14, - FMOD_DSP_CHANNELMIX_GAIN_CH15, - FMOD_DSP_CHANNELMIX_GAIN_CH16, - FMOD_DSP_CHANNELMIX_GAIN_CH17, - FMOD_DSP_CHANNELMIX_GAIN_CH18, - FMOD_DSP_CHANNELMIX_GAIN_CH19, - FMOD_DSP_CHANNELMIX_GAIN_CH20, - FMOD_DSP_CHANNELMIX_GAIN_CH21, - FMOD_DSP_CHANNELMIX_GAIN_CH22, - FMOD_DSP_CHANNELMIX_GAIN_CH23, - FMOD_DSP_CHANNELMIX_GAIN_CH24, - FMOD_DSP_CHANNELMIX_GAIN_CH25, - FMOD_DSP_CHANNELMIX_GAIN_CH26, - FMOD_DSP_CHANNELMIX_GAIN_CH27, - FMOD_DSP_CHANNELMIX_GAIN_CH28, - FMOD_DSP_CHANNELMIX_GAIN_CH29, - FMOD_DSP_CHANNELMIX_GAIN_CH30, - FMOD_DSP_CHANNELMIX_GAIN_CH31, - FMOD_DSP_CHANNELMIX_OUTPUT_CH0, - FMOD_DSP_CHANNELMIX_OUTPUT_CH1, - FMOD_DSP_CHANNELMIX_OUTPUT_CH2, - FMOD_DSP_CHANNELMIX_OUTPUT_CH3, - FMOD_DSP_CHANNELMIX_OUTPUT_CH4, - FMOD_DSP_CHANNELMIX_OUTPUT_CH5, - FMOD_DSP_CHANNELMIX_OUTPUT_CH6, - FMOD_DSP_CHANNELMIX_OUTPUT_CH7, - FMOD_DSP_CHANNELMIX_OUTPUT_CH8, - FMOD_DSP_CHANNELMIX_OUTPUT_CH9, - FMOD_DSP_CHANNELMIX_OUTPUT_CH10, - FMOD_DSP_CHANNELMIX_OUTPUT_CH11, - FMOD_DSP_CHANNELMIX_OUTPUT_CH12, - FMOD_DSP_CHANNELMIX_OUTPUT_CH13, - FMOD_DSP_CHANNELMIX_OUTPUT_CH14, - FMOD_DSP_CHANNELMIX_OUTPUT_CH15, - FMOD_DSP_CHANNELMIX_OUTPUT_CH16, - FMOD_DSP_CHANNELMIX_OUTPUT_CH17, - FMOD_DSP_CHANNELMIX_OUTPUT_CH18, - FMOD_DSP_CHANNELMIX_OUTPUT_CH19, - FMOD_DSP_CHANNELMIX_OUTPUT_CH20, - FMOD_DSP_CHANNELMIX_OUTPUT_CH21, - FMOD_DSP_CHANNELMIX_OUTPUT_CH22, - FMOD_DSP_CHANNELMIX_OUTPUT_CH23, - FMOD_DSP_CHANNELMIX_OUTPUT_CH24, - FMOD_DSP_CHANNELMIX_OUTPUT_CH25, - FMOD_DSP_CHANNELMIX_OUTPUT_CH26, - FMOD_DSP_CHANNELMIX_OUTPUT_CH27, - FMOD_DSP_CHANNELMIX_OUTPUT_CH28, - FMOD_DSP_CHANNELMIX_OUTPUT_CH29, - FMOD_DSP_CHANNELMIX_OUTPUT_CH30, - FMOD_DSP_CHANNELMIX_OUTPUT_CH31 -} FMOD_DSP_CHANNELMIX; - -typedef enum -{ - FMOD_DSP_TRANSCEIVER_SPEAKERMODE_AUTO = -1, - FMOD_DSP_TRANSCEIVER_SPEAKERMODE_MONO = 0, - FMOD_DSP_TRANSCEIVER_SPEAKERMODE_STEREO, - FMOD_DSP_TRANSCEIVER_SPEAKERMODE_SURROUND, -} FMOD_DSP_TRANSCEIVER_SPEAKERMODE; - - -typedef enum -{ - FMOD_DSP_TRANSCEIVER_TRANSMIT, - FMOD_DSP_TRANSCEIVER_GAIN, - FMOD_DSP_TRANSCEIVER_CHANNEL, - FMOD_DSP_TRANSCEIVER_TRANSMITSPEAKERMODE -} FMOD_DSP_TRANSCEIVER; - - -typedef enum -{ - FMOD_DSP_OBJECTPAN_3D_POSITION, - FMOD_DSP_OBJECTPAN_3D_ROLLOFF, - FMOD_DSP_OBJECTPAN_3D_MIN_DISTANCE, - FMOD_DSP_OBJECTPAN_3D_MAX_DISTANCE, - FMOD_DSP_OBJECTPAN_3D_EXTENT_MODE, - FMOD_DSP_OBJECTPAN_3D_SOUND_SIZE, - FMOD_DSP_OBJECTPAN_3D_MIN_EXTENT, - FMOD_DSP_OBJECTPAN_OVERALL_GAIN, - FMOD_DSP_OBJECTPAN_OUTPUTGAIN, - FMOD_DSP_OBJECTPAN_ATTENUATION_RANGE, - FMOD_DSP_OBJECTPAN_OVERRIDE_RANGE -} FMOD_DSP_OBJECTPAN; - -#endif - diff --git a/Toshi/vendor/fmod/include/fmod/core/fmod_errors.h b/Toshi/vendor/fmod/include/fmod/core/fmod_errors.h deleted file mode 100644 index e491ddf..0000000 --- a/Toshi/vendor/fmod/include/fmod/core/fmod_errors.h +++ /dev/null @@ -1,110 +0,0 @@ -/* ============================================================================================== */ -/* FMOD Core / Studio API - Error string header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header if you want to store or display a string version / english explanation */ -/* of the FMOD error codes. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api-common.html#fmod_result */ -/* =============================================================================================== */ -#ifndef _FMOD_ERRORS_H -#define _FMOD_ERRORS_H - -#include "fmod.h" - -#ifdef __GNUC__ -static const char *FMOD_ErrorString(FMOD_RESULT errcode) __attribute__((unused)); -#endif - -static const char *FMOD_ErrorString(FMOD_RESULT errcode) -{ - switch (errcode) - { - case FMOD_OK: return "No errors."; - case FMOD_ERR_BADCOMMAND: return "Tried to call a function on a data type that does not allow this type of functionality (ie calling Sound::lock on a streaming sound)."; - case FMOD_ERR_CHANNEL_ALLOC: return "Error trying to allocate a channel."; - case FMOD_ERR_CHANNEL_STOLEN: return "The specified channel has been reused to play another sound."; - case FMOD_ERR_DMA: return "DMA Failure. See debug output for more information."; - case FMOD_ERR_DSP_CONNECTION: return "DSP connection error. Connection possibly caused a cyclic dependency or connected dsps with incompatible buffer counts."; - case FMOD_ERR_DSP_DONTPROCESS: return "DSP return code from a DSP process query callback. Tells mixer not to call the process callback and therefore not consume CPU. Use this to optimize the DSP graph."; - case FMOD_ERR_DSP_FORMAT: return "DSP Format error. A DSP unit may have attempted to connect to this network with the wrong format, or a matrix may have been set with the wrong size if the target unit has a specified channel map."; - case FMOD_ERR_DSP_INUSE: return "DSP is already in the mixer's DSP network. It must be removed before being reinserted or released."; - case FMOD_ERR_DSP_NOTFOUND: return "DSP connection error. Couldn't find the DSP unit specified."; - case FMOD_ERR_DSP_RESERVED: return "DSP operation error. Cannot perform operation on this DSP as it is reserved by the system."; - case FMOD_ERR_DSP_SILENCE: return "DSP return code from a DSP process query callback. Tells mixer silence would be produced from read, so go idle and not consume CPU. Use this to optimize the DSP graph."; - case FMOD_ERR_DSP_TYPE: return "DSP operation cannot be performed on a DSP of this type."; - case FMOD_ERR_FILE_BAD: return "Error loading file."; - case FMOD_ERR_FILE_COULDNOTSEEK: return "Couldn't perform seek operation. This is a limitation of the medium (ie netstreams) or the file format."; - case FMOD_ERR_FILE_DISKEJECTED: return "Media was ejected while reading."; - case FMOD_ERR_FILE_EOF: return "End of file unexpectedly reached while trying to read essential data (truncated?)."; - case FMOD_ERR_FILE_ENDOFDATA: return "End of current chunk reached while trying to read data."; - case FMOD_ERR_FILE_NOTFOUND: return "File not found."; - case FMOD_ERR_FORMAT: return "Unsupported file or audio format."; - case FMOD_ERR_HEADER_MISMATCH: return "There is a version mismatch between the FMOD header and either the FMOD Studio library or the FMOD Low Level library."; - case FMOD_ERR_HTTP: return "A HTTP error occurred. This is a catch-all for HTTP errors not listed elsewhere."; - case FMOD_ERR_HTTP_ACCESS: return "The specified resource requires authentication or is forbidden."; - case FMOD_ERR_HTTP_PROXY_AUTH: return "Proxy authentication is required to access the specified resource."; - case FMOD_ERR_HTTP_SERVER_ERROR: return "A HTTP server error occurred."; - case FMOD_ERR_HTTP_TIMEOUT: return "The HTTP request timed out."; - case FMOD_ERR_INITIALIZATION: return "FMOD was not initialized correctly to support this function."; - case FMOD_ERR_INITIALIZED: return "Cannot call this command after System::init."; - case FMOD_ERR_INTERNAL: return "An error occurred that wasn't supposed to. Contact support."; - case FMOD_ERR_INVALID_FLOAT: return "Value passed in was a NaN, Inf or denormalized float."; - case FMOD_ERR_INVALID_HANDLE: return "An invalid object handle was used."; - case FMOD_ERR_INVALID_PARAM: return "An invalid parameter was passed to this function."; - case FMOD_ERR_INVALID_POSITION: return "An invalid seek position was passed to this function."; - case FMOD_ERR_INVALID_SPEAKER: return "An invalid speaker was passed to this function based on the current speaker mode."; - case FMOD_ERR_INVALID_SYNCPOINT: return "The syncpoint did not come from this sound handle."; - case FMOD_ERR_INVALID_THREAD: return "Tried to call a function on a thread that is not supported."; - case FMOD_ERR_INVALID_VECTOR: return "The vectors passed in are not unit length, or perpendicular."; - case FMOD_ERR_MAXAUDIBLE: return "Reached maximum audible playback count for this sound's soundgroup."; - case FMOD_ERR_MEMORY: return "Not enough memory or resources."; - case FMOD_ERR_MEMORY_CANTPOINT: return "Can't use FMOD_OPENMEMORY_POINT on non PCM source data, or non mp3/xma/adpcm data if FMOD_CREATECOMPRESSEDSAMPLE was used."; - case FMOD_ERR_NEEDS3D: return "Tried to call a command on a 2d sound when the command was meant for 3d sound."; - case FMOD_ERR_NEEDSHARDWARE: return "Tried to use a feature that requires hardware support."; - case FMOD_ERR_NET_CONNECT: return "Couldn't connect to the specified host."; - case FMOD_ERR_NET_SOCKET_ERROR: return "A socket error occurred. This is a catch-all for socket-related errors not listed elsewhere."; - case FMOD_ERR_NET_URL: return "The specified URL couldn't be resolved."; - case FMOD_ERR_NET_WOULD_BLOCK: return "Operation on a non-blocking socket could not complete immediately."; - case FMOD_ERR_NOTREADY: return "Operation could not be performed because specified sound/DSP connection is not ready."; - case FMOD_ERR_OUTPUT_ALLOCATED: return "Error initializing output device, but more specifically, the output device is already in use and cannot be reused."; - case FMOD_ERR_OUTPUT_CREATEBUFFER: return "Error creating hardware sound buffer."; - case FMOD_ERR_OUTPUT_DRIVERCALL: return "A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted."; - case FMOD_ERR_OUTPUT_FORMAT: return "Soundcard does not support the specified format."; - case FMOD_ERR_OUTPUT_INIT: return "Error initializing output device."; - case FMOD_ERR_OUTPUT_NODRIVERS: return "The output device has no drivers installed. If pre-init, FMOD_OUTPUT_NOSOUND is selected as the output mode. If post-init, the function just fails."; - case FMOD_ERR_PLUGIN: return "An unspecified error has been returned from a plugin."; - case FMOD_ERR_PLUGIN_MISSING: return "A requested output, dsp unit type or codec was not available."; - case FMOD_ERR_PLUGIN_RESOURCE: return "A resource that the plugin requires cannot be allocated or found. (ie the DLS file for MIDI playback)"; - case FMOD_ERR_PLUGIN_VERSION: return "A plugin was built with an unsupported SDK version."; - case FMOD_ERR_RECORD: return "An error occurred trying to initialize the recording device."; - case FMOD_ERR_REVERB_CHANNELGROUP: return "Reverb properties cannot be set on this channel because a parent channelgroup owns the reverb connection."; - case FMOD_ERR_REVERB_INSTANCE: return "Specified instance in FMOD_REVERB_PROPERTIES couldn't be set. Most likely because it is an invalid instance number or the reverb doesn't exist."; - case FMOD_ERR_SUBSOUNDS: return "The error occurred because the sound referenced contains subsounds when it shouldn't have, or it doesn't contain subsounds when it should have. The operation may also not be able to be performed on a parent sound."; - case FMOD_ERR_SUBSOUND_ALLOCATED: return "This subsound is already being used by another sound, you cannot have more than one parent to a sound. Null out the other parent's entry first."; - case FMOD_ERR_SUBSOUND_CANTMOVE: return "Shared subsounds cannot be replaced or moved from their parent stream, such as when the parent stream is an FSB file."; - case FMOD_ERR_TAGNOTFOUND: return "The specified tag could not be found or there are no tags."; - case FMOD_ERR_TOOMANYCHANNELS: return "The sound created exceeds the allowable input channel count. This can be increased using the 'maxinputchannels' parameter in System::setSoftwareFormat."; - case FMOD_ERR_TRUNCATED: return "The retrieved string is too long to fit in the supplied buffer and has been truncated."; - case FMOD_ERR_UNIMPLEMENTED: return "Something in FMOD hasn't been implemented when it should be! contact support!"; - case FMOD_ERR_UNINITIALIZED: return "This command failed because System::init or System::setDriver was not called."; - case FMOD_ERR_UNSUPPORTED: return "A command issued was not supported by this object. Possibly a plugin without certain callbacks specified."; - case FMOD_ERR_VERSION: return "The version number of this file format is not supported."; - case FMOD_ERR_EVENT_ALREADY_LOADED: return "The specified bank has already been loaded."; - case FMOD_ERR_EVENT_LIVEUPDATE_BUSY: return "The live update connection failed due to the game already being connected."; - case FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH: return "The live update connection failed due to the game data being out of sync with the tool."; - case FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT: return "The live update connection timed out."; - case FMOD_ERR_EVENT_NOTFOUND: return "The requested event, parameter, bus or vca could not be found."; - case FMOD_ERR_STUDIO_UNINITIALIZED: return "The Studio::System object is not yet initialized."; - case FMOD_ERR_STUDIO_NOT_LOADED: return "The specified resource is not loaded, so it can't be unloaded."; - case FMOD_ERR_INVALID_STRING: return "An invalid string was passed to this function."; - case FMOD_ERR_ALREADY_LOCKED: return "The specified resource is already locked."; - case FMOD_ERR_NOT_LOCKED: return "The specified resource is not locked, so it can't be unlocked."; - case FMOD_ERR_RECORD_DISCONNECTED: return "The specified recording driver has been disconnected."; - case FMOD_ERR_TOOMANYSAMPLES: return "The length provided exceeds the allowable limit."; - default : return "Unknown error."; - }; -} - -#endif diff --git a/Toshi/vendor/fmod/include/fmod/core/fmod_output.h b/Toshi/vendor/fmod/include/fmod/core/fmod_output.h deleted file mode 100644 index cd49b96..0000000 --- a/Toshi/vendor/fmod/include/fmod/core/fmod_output.h +++ /dev/null @@ -1,122 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - output development header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header if you are wanting to develop your own output plugin to use with */ -/* FMOD's output system. With this header you can make your own output plugin that FMOD */ -/* can register and use. See the documentation and examples on how to make a working */ -/* plugin. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/plugin-api-output.html */ -/* ======================================================================================== */ -#ifndef _FMOD_OUTPUT_H -#define _FMOD_OUTPUT_H - -typedef struct FMOD_OUTPUT_STATE FMOD_OUTPUT_STATE; -typedef struct FMOD_OUTPUT_OBJECT3DINFO FMOD_OUTPUT_OBJECT3DINFO; - -/* - Output constants -*/ -#define FMOD_OUTPUT_PLUGIN_VERSION 5 - -typedef unsigned int FMOD_OUTPUT_METHOD; -#define FMOD_OUTPUT_METHOD_MIX_DIRECT 0 -#define FMOD_OUTPUT_METHOD_MIX_BUFFERED 1 - -/* - Output callbacks -*/ -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_GETNUMDRIVERS_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int *numdrivers); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_GETDRIVERINFO_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_INIT_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int selecteddriver, FMOD_INITFLAGS flags, int *outputrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels, FMOD_SOUND_FORMAT *outputformat, int dspbufferlength, int *dspnumbuffers, int *dspnumadditionalbuffers, void *extradriverdata); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_START_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_STOP_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_CLOSE_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_UPDATE_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_GETHANDLE_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void **handle); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_MIXER_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OBJECT3DGETINFO_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int *maxhardwareobjects); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OBJECT3DALLOC_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void **object3d); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OBJECT3DFREE_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void *object3d); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OBJECT3DUPDATE_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void *object3d, const FMOD_OUTPUT_OBJECT3DINFO *info); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OPENPORT_CALLBACK) (FMOD_OUTPUT_STATE *output_state, FMOD_PORT_TYPE portType, FMOD_PORT_INDEX portIndex, int *portId, int *portRate, int *portChannels, FMOD_SOUND_FORMAT *portFormat); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_CLOSEPORT_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int portId); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_DEVICELISTCHANGED_CALLBACK)(FMOD_OUTPUT_STATE *output_state); - -/* - Output functions -*/ -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_READFROMMIXER_FUNC) (FMOD_OUTPUT_STATE *output_state, void *buffer, unsigned int length); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_COPYPORT_FUNC) (FMOD_OUTPUT_STATE *output_state, int portId, void *buffer, unsigned int length); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_REQUESTRESET_FUNC) (FMOD_OUTPUT_STATE *output_state); -typedef void * (F_CALL *FMOD_OUTPUT_ALLOC_FUNC) (unsigned int size, unsigned int align, const char *file, int line); -typedef void (F_CALL *FMOD_OUTPUT_FREE_FUNC) (void *ptr, const char *file, int line); -typedef void (F_CALL *FMOD_OUTPUT_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *string, ...); - -/* - Output structures -*/ -typedef struct FMOD_OUTPUT_DESCRIPTION -{ - unsigned int apiversion; - const char *name; - unsigned int version; - FMOD_OUTPUT_METHOD method; - FMOD_OUTPUT_GETNUMDRIVERS_CALLBACK getnumdrivers; - FMOD_OUTPUT_GETDRIVERINFO_CALLBACK getdriverinfo; - FMOD_OUTPUT_INIT_CALLBACK init; - FMOD_OUTPUT_START_CALLBACK start; - FMOD_OUTPUT_STOP_CALLBACK stop; - FMOD_OUTPUT_CLOSE_CALLBACK close; - FMOD_OUTPUT_UPDATE_CALLBACK update; - FMOD_OUTPUT_GETHANDLE_CALLBACK gethandle; - FMOD_OUTPUT_MIXER_CALLBACK mixer; - FMOD_OUTPUT_OBJECT3DGETINFO_CALLBACK object3dgetinfo; - FMOD_OUTPUT_OBJECT3DALLOC_CALLBACK object3dalloc; - FMOD_OUTPUT_OBJECT3DFREE_CALLBACK object3dfree; - FMOD_OUTPUT_OBJECT3DUPDATE_CALLBACK object3dupdate; - FMOD_OUTPUT_OPENPORT_CALLBACK openport; - FMOD_OUTPUT_CLOSEPORT_CALLBACK closeport; - FMOD_OUTPUT_DEVICELISTCHANGED_CALLBACK devicelistchanged; -} FMOD_OUTPUT_DESCRIPTION; - -struct FMOD_OUTPUT_STATE -{ - void *plugindata; - FMOD_OUTPUT_READFROMMIXER_FUNC readfrommixer; - FMOD_OUTPUT_ALLOC_FUNC alloc; - FMOD_OUTPUT_FREE_FUNC free; - FMOD_OUTPUT_LOG_FUNC log; - FMOD_OUTPUT_COPYPORT_FUNC copyport; - FMOD_OUTPUT_REQUESTRESET_FUNC requestreset; -}; - -struct FMOD_OUTPUT_OBJECT3DINFO -{ - float *buffer; - unsigned int bufferlength; - FMOD_VECTOR position; - float gain; - float spread; - float priority; -}; - -/* - Output macros -*/ -#define FMOD_OUTPUT_READFROMMIXER(_state, _buffer, _length) \ - (_state)->readfrommixer(_state, _buffer, _length) -#define FMOD_OUTPUT_ALLOC(_state, _size, _align) \ - (_state)->alloc(_size, _align, __FILE__, __LINE__) -#define FMOD_OUTPUT_FREE(_state, _ptr) \ - (_state)->free(_ptr, __FILE__, __LINE__) -#define FMOD_OUTPUT_LOG(_state, _level, _location, _format, ...) \ - (_state)->log(_level, __FILE__, __LINE__, _location, _format, ##__VA_ARGS__) -#define FMOD_OUTPUT_COPYPORT(_state, _id, _buffer, _length) \ - (_state)->copyport(_state, _id, _buffer, _length) -#define FMOD_OUTPUT_REQUESTRESET(_state) \ - (_state)->requestreset(_state) - -#endif /* _FMOD_OUTPUT_H */ diff --git a/Toshi/vendor/fmod/include/fmod/fsbank/fsbank.h b/Toshi/vendor/fmod/include/fmod/fsbank/fsbank.h deleted file mode 100644 index 1e18ad8..0000000 --- a/Toshi/vendor/fmod/include/fmod/fsbank/fsbank.h +++ /dev/null @@ -1,156 +0,0 @@ -#ifndef _FSBANK_H -#define _FSBANK_H - -#if defined(_WIN32) - #define FB_EXPORT __declspec(dllexport) - #define FB_CALL __stdcall -#else - #define FB_EXPORT __attribute__((visibility("default"))) - #define FB_CALL -#endif - -#if defined(DLL_EXPORTS) - #define FB_API FB_EXPORT FB_CALL -#else - #define FB_API FB_CALL -#endif - -/* - FSBank types -*/ -typedef unsigned int FSBANK_INITFLAGS; -typedef unsigned int FSBANK_BUILDFLAGS; - -#define FSBANK_INIT_NORMAL 0x00000000 -#define FSBANK_INIT_IGNOREERRORS 0x00000001 -#define FSBANK_INIT_WARNINGSASERRORS 0x00000002 -#define FSBANK_INIT_CREATEINCLUDEHEADER 0x00000004 -#define FSBANK_INIT_DONTLOADCACHEFILES 0x00000008 -#define FSBANK_INIT_GENERATEPROGRESSITEMS 0x00000010 - -#define FSBANK_BUILD_DEFAULT 0x00000000 -#define FSBANK_BUILD_DISABLESYNCPOINTS 0x00000001 -#define FSBANK_BUILD_DONTLOOP 0x00000002 -#define FSBANK_BUILD_FILTERHIGHFREQ 0x00000004 -#define FSBANK_BUILD_DISABLESEEKING 0x00000008 -#define FSBANK_BUILD_OPTIMIZESAMPLERATE 0x00000010 -#define FSBANK_BUILD_FSB5_DONTWRITENAMES 0x00000080 -#define FSBANK_BUILD_NOGUID 0x00000100 -#define FSBANK_BUILD_WRITEPEAKVOLUME 0x00000200 - -#define FSBANK_BUILD_OVERRIDE_MASK (FSBANK_BUILD_DISABLESYNCPOINTS | FSBANK_BUILD_DONTLOOP | FSBANK_BUILD_FILTERHIGHFREQ | FSBANK_BUILD_DISABLESEEKING | FSBANK_BUILD_OPTIMIZESAMPLERATE | FSBANK_BUILD_WRITEPEAKVOLUME) -#define FSBANK_BUILD_CACHE_VALIDATION_MASK (FSBANK_BUILD_DONTLOOP | FSBANK_BUILD_FILTERHIGHFREQ | FSBANK_BUILD_OPTIMIZESAMPLERATE) - -typedef enum FSBANK_RESULT -{ - FSBANK_OK, - FSBANK_ERR_CACHE_CHUNKNOTFOUND, - FSBANK_ERR_CANCELLED, - FSBANK_ERR_CANNOT_CONTINUE, - FSBANK_ERR_ENCODER, - FSBANK_ERR_ENCODER_INIT, - FSBANK_ERR_ENCODER_NOTSUPPORTED, - FSBANK_ERR_FILE_OS, - FSBANK_ERR_FILE_NOTFOUND, - FSBANK_ERR_FMOD, - FSBANK_ERR_INITIALIZED, - FSBANK_ERR_INVALID_FORMAT, - FSBANK_ERR_INVALID_PARAM, - FSBANK_ERR_MEMORY, - FSBANK_ERR_UNINITIALIZED, - FSBANK_ERR_WRITER_FORMAT, - FSBANK_WARN_CANNOTLOOP, - FSBANK_WARN_IGNORED_FILTERHIGHFREQ, - FSBANK_WARN_IGNORED_DISABLESEEKING, - FSBANK_WARN_FORCED_DONTWRITENAMES, - FSBANK_ERR_ENCODER_FILE_NOTFOUND, - FSBANK_ERR_ENCODER_FILE_BAD, -} FSBANK_RESULT; - -typedef enum FSBANK_FORMAT -{ - FSBANK_FORMAT_PCM, - FSBANK_FORMAT_XMA, - FSBANK_FORMAT_AT9, - FSBANK_FORMAT_VORBIS, - FSBANK_FORMAT_FADPCM, - FSBANK_FORMAT_OPUS, - - FSBANK_FORMAT_MAX -} FSBANK_FORMAT; - -typedef enum FSBANK_FSBVERSION -{ - FSBANK_FSBVERSION_FSB5, - - FSBANK_FSBVERSION_MAX -} FSBANK_FSBVERSION; - -typedef enum FSBANK_STATE -{ - FSBANK_STATE_DECODING, - FSBANK_STATE_ANALYSING, - FSBANK_STATE_PREPROCESSING, - FSBANK_STATE_ENCODING, - FSBANK_STATE_WRITING, - FSBANK_STATE_FINISHED, - FSBANK_STATE_FAILED, - FSBANK_STATE_WARNING, -} FSBANK_STATE; - -typedef struct FSBANK_SUBSOUND -{ - const char* const *fileNames; - const void* const *fileData; - const unsigned int *fileDataLengths; - unsigned int numFiles; - FSBANK_BUILDFLAGS overrideFlags; - unsigned int overrideQuality; - float desiredSampleRate; - float percentOptimizedRate; -} FSBANK_SUBSOUND; - -typedef struct FSBANK_PROGRESSITEM -{ - int subSoundIndex; - int threadIndex; - FSBANK_STATE state; - const void *stateData; -} FSBANK_PROGRESSITEM; - -typedef struct FSBANK_STATEDATA_FAILED -{ - FSBANK_RESULT errorCode; - char errorString[256]; -} FSBANK_STATEDATA_FAILED; - -typedef struct FSBANK_STATEDATA_WARNING -{ - FSBANK_RESULT warnCode; - char warningString[256]; -} FSBANK_STATEDATA_WARNING; - - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void* (FB_CALL *FSBANK_MEMORY_ALLOC_CALLBACK)(unsigned int size, unsigned int type, const char *sourceStr); -typedef void* (FB_CALL *FSBANK_MEMORY_REALLOC_CALLBACK)(void *ptr, unsigned int size, unsigned int type, const char *sourceStr); -typedef void (FB_CALL *FSBANK_MEMORY_FREE_CALLBACK)(void *ptr, unsigned int type, const char *sourceStr); - -FSBANK_RESULT FB_API FSBank_MemoryInit(FSBANK_MEMORY_ALLOC_CALLBACK userAlloc, FSBANK_MEMORY_REALLOC_CALLBACK userRealloc, FSBANK_MEMORY_FREE_CALLBACK userFree); -FSBANK_RESULT FB_API FSBank_Init(FSBANK_FSBVERSION version, FSBANK_INITFLAGS flags, unsigned int numSimultaneousJobs, const char *cacheDirectory); -FSBANK_RESULT FB_API FSBank_Release(); -FSBANK_RESULT FB_API FSBank_Build(const FSBANK_SUBSOUND *subSounds, unsigned int numSubSounds, FSBANK_FORMAT encodeFormat, FSBANK_BUILDFLAGS buildFlags, unsigned int quality, const char *encryptKey, const char *outputFileName); -FSBANK_RESULT FB_API FSBank_FetchFSBMemory(const void **data, unsigned int *length); -FSBANK_RESULT FB_API FSBank_BuildCancel(); -FSBANK_RESULT FB_API FSBank_FetchNextProgressItem(const FSBANK_PROGRESSITEM **progressItem); -FSBANK_RESULT FB_API FSBank_ReleaseProgressItem(const FSBANK_PROGRESSITEM *progressItem); -FSBANK_RESULT FB_API FSBank_MemoryGetStats(unsigned int *currentAllocated, unsigned int *maximumAllocated); - -#ifdef __cplusplus -} -#endif - -#endif // _FSBANK_H diff --git a/Toshi/vendor/fmod/include/fmod/fsbank/fsbank_errors.h b/Toshi/vendor/fmod/include/fmod/fsbank/fsbank_errors.h deleted file mode 100644 index 5895457..0000000 --- a/Toshi/vendor/fmod/include/fmod/fsbank/fsbank_errors.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef _FSBANK_ERRORS_H -#define _FSBANK_ERRORS_H - -#include "fsbank.h" - -static const char *FSBank_ErrorString(FSBANK_RESULT result) -{ - switch (result) - { - case FSBANK_OK: return "No errors."; - case FSBANK_ERR_CACHE_CHUNKNOTFOUND: return "An expected chunk is missing from the cache, perhaps try deleting cache files."; - case FSBANK_ERR_CANCELLED: return "The build process was cancelled during compilation by the user."; - case FSBANK_ERR_CANNOT_CONTINUE: return "The build process cannot continue due to previously ignored errors."; - case FSBANK_ERR_ENCODER: return "Encoder for chosen format has encountered an unexpected error."; - case FSBANK_ERR_ENCODER_INIT: return "Encoder initialization failed."; - case FSBANK_ERR_ENCODER_NOTSUPPORTED: return "Encoder for chosen format is not supported on this platform."; - case FSBANK_ERR_FILE_OS: return "An operating system based file error was encountered."; - case FSBANK_ERR_FILE_NOTFOUND: return "A specified file could not be found."; - case FSBANK_ERR_FMOD: return "Internal error from FMOD sub-system."; - case FSBANK_ERR_INITIALIZED: return "Already initialized."; - case FSBANK_ERR_INVALID_FORMAT: return "The format of the source file is invalid."; - case FSBANK_ERR_INVALID_PARAM: return "An invalid parameter has been passed to this function."; - case FSBANK_ERR_MEMORY: return "Run out of memory."; - case FSBANK_ERR_UNINITIALIZED: return "Not initialized yet."; - case FSBANK_ERR_WRITER_FORMAT: return "Chosen encode format is not supported by this FSB version."; - case FSBANK_WARN_CANNOTLOOP: return "Source file is too short for seamless looping. Looping disabled."; - case FSBANK_WARN_IGNORED_FILTERHIGHFREQ: return "FSBANK_BUILD_FILTERHIGHFREQ flag ignored: feature only supported by XMA format."; - case FSBANK_WARN_IGNORED_DISABLESEEKING: return "FSBANK_BUILD_DISABLESEEKING flag ignored: feature only supported by XMA format."; - case FSBANK_WARN_FORCED_DONTWRITENAMES: return "FSBANK_BUILD_FSB5_DONTWRITENAMES flag forced: cannot write names when source is from memory."; - case FSBANK_ERR_ENCODER_FILE_NOTFOUND: return "External encoder dynamic library not found."; - case FSBANK_ERR_ENCODER_FILE_BAD: return "External encoder dynamic library could not be loaded, possibly incorrect binary format, incorrect architecture, or file corruption."; - default: return "Unknown error."; - } -} - -#endif // _FSBANK_ERRORS_H diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod.h b/Toshi/vendor/fmod/include/fmod/studio/fmod.h deleted file mode 100644 index e6ae1f9..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod.h +++ /dev/null @@ -1,667 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - C header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header in conjunction with fmod_common.h (which contains all the constants / */ -/* callbacks) to develop using the C interface */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api.html */ -/* ======================================================================================== */ - -#ifndef _FMOD_H -#define _FMOD_H - -#include "fmod_common.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* - FMOD global system functions (optional). -*/ -FMOD_RESULT F_API FMOD_Memory_Initialize (void *poolmem, int poollen, FMOD_MEMORY_ALLOC_CALLBACK useralloc, FMOD_MEMORY_REALLOC_CALLBACK userrealloc, FMOD_MEMORY_FREE_CALLBACK userfree, FMOD_MEMORY_TYPE memtypeflags); -FMOD_RESULT F_API FMOD_Memory_GetStats (int *currentalloced, int *maxalloced, FMOD_BOOL blocking); -FMOD_RESULT F_API FMOD_Debug_Initialize (FMOD_DEBUG_FLAGS flags, FMOD_DEBUG_MODE mode, FMOD_DEBUG_CALLBACK callback, const char *filename); -FMOD_RESULT F_API FMOD_File_SetDiskBusy (int busy); -FMOD_RESULT F_API FMOD_File_GetDiskBusy (int *busy); -FMOD_RESULT F_API FMOD_Thread_SetAttributes (FMOD_THREAD_TYPE type, FMOD_THREAD_AFFINITY affinity, FMOD_THREAD_PRIORITY priority, FMOD_THREAD_STACK_SIZE stacksize); - -/* - FMOD System factory functions. Use this to create an FMOD System Instance. below you will see FMOD_System_Init/Close to get started. -*/ -FMOD_RESULT F_API FMOD_System_Create (FMOD_SYSTEM **system, unsigned int headerversion); -FMOD_RESULT F_API FMOD_System_Release (FMOD_SYSTEM *system); - -/* - 'System' API -*/ - -/* Setup functions. */ -FMOD_RESULT F_API FMOD_System_SetOutput (FMOD_SYSTEM *system, FMOD_OUTPUTTYPE output); -FMOD_RESULT F_API FMOD_System_GetOutput (FMOD_SYSTEM *system, FMOD_OUTPUTTYPE *output); -FMOD_RESULT F_API FMOD_System_GetNumDrivers (FMOD_SYSTEM *system, int *numdrivers); -FMOD_RESULT F_API FMOD_System_GetDriverInfo (FMOD_SYSTEM *system, int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels); -FMOD_RESULT F_API FMOD_System_SetDriver (FMOD_SYSTEM *system, int driver); -FMOD_RESULT F_API FMOD_System_GetDriver (FMOD_SYSTEM *system, int *driver); -FMOD_RESULT F_API FMOD_System_SetSoftwareChannels (FMOD_SYSTEM *system, int numsoftwarechannels); -FMOD_RESULT F_API FMOD_System_GetSoftwareChannels (FMOD_SYSTEM *system, int *numsoftwarechannels); -FMOD_RESULT F_API FMOD_System_SetSoftwareFormat (FMOD_SYSTEM *system, int samplerate, FMOD_SPEAKERMODE speakermode, int numrawspeakers); -FMOD_RESULT F_API FMOD_System_GetSoftwareFormat (FMOD_SYSTEM *system, int *samplerate, FMOD_SPEAKERMODE *speakermode, int *numrawspeakers); -FMOD_RESULT F_API FMOD_System_SetDSPBufferSize (FMOD_SYSTEM *system, unsigned int bufferlength, int numbuffers); -FMOD_RESULT F_API FMOD_System_GetDSPBufferSize (FMOD_SYSTEM *system, unsigned int *bufferlength, int *numbuffers); -FMOD_RESULT F_API FMOD_System_SetFileSystem (FMOD_SYSTEM *system, FMOD_FILE_OPEN_CALLBACK useropen, FMOD_FILE_CLOSE_CALLBACK userclose, FMOD_FILE_READ_CALLBACK userread, FMOD_FILE_SEEK_CALLBACK userseek, FMOD_FILE_ASYNCREAD_CALLBACK userasyncread, FMOD_FILE_ASYNCCANCEL_CALLBACK userasynccancel, int blockalign); -FMOD_RESULT F_API FMOD_System_AttachFileSystem (FMOD_SYSTEM *system, FMOD_FILE_OPEN_CALLBACK useropen, FMOD_FILE_CLOSE_CALLBACK userclose, FMOD_FILE_READ_CALLBACK userread, FMOD_FILE_SEEK_CALLBACK userseek); -FMOD_RESULT F_API FMOD_System_SetAdvancedSettings (FMOD_SYSTEM *system, FMOD_ADVANCEDSETTINGS *settings); -FMOD_RESULT F_API FMOD_System_GetAdvancedSettings (FMOD_SYSTEM *system, FMOD_ADVANCEDSETTINGS *settings); -FMOD_RESULT F_API FMOD_System_SetCallback (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK callback, FMOD_SYSTEM_CALLBACK_TYPE callbackmask); - -/* Plug-in support. */ -FMOD_RESULT F_API FMOD_System_SetPluginPath (FMOD_SYSTEM *system, const char *path); -FMOD_RESULT F_API FMOD_System_LoadPlugin (FMOD_SYSTEM *system, const char *filename, unsigned int *handle, unsigned int priority); -FMOD_RESULT F_API FMOD_System_UnloadPlugin (FMOD_SYSTEM *system, unsigned int handle); -FMOD_RESULT F_API FMOD_System_GetNumNestedPlugins (FMOD_SYSTEM *system, unsigned int handle, int *count); -FMOD_RESULT F_API FMOD_System_GetNestedPlugin (FMOD_SYSTEM *system, unsigned int handle, int index, unsigned int *nestedhandle); -FMOD_RESULT F_API FMOD_System_GetNumPlugins (FMOD_SYSTEM *system, FMOD_PLUGINTYPE plugintype, int *numplugins); -FMOD_RESULT F_API FMOD_System_GetPluginHandle (FMOD_SYSTEM *system, FMOD_PLUGINTYPE plugintype, int index, unsigned int *handle); -FMOD_RESULT F_API FMOD_System_GetPluginInfo (FMOD_SYSTEM *system, unsigned int handle, FMOD_PLUGINTYPE *plugintype, char *name, int namelen, unsigned int *version); -FMOD_RESULT F_API FMOD_System_SetOutputByPlugin (FMOD_SYSTEM *system, unsigned int handle); -FMOD_RESULT F_API FMOD_System_GetOutputByPlugin (FMOD_SYSTEM *system, unsigned int *handle); -FMOD_RESULT F_API FMOD_System_CreateDSPByPlugin (FMOD_SYSTEM *system, unsigned int handle, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_System_GetDSPInfoByPlugin (FMOD_SYSTEM *system, unsigned int handle, const FMOD_DSP_DESCRIPTION **description); -FMOD_RESULT F_API FMOD_System_RegisterCodec (FMOD_SYSTEM *system, FMOD_CODEC_DESCRIPTION *description, unsigned int *handle, unsigned int priority); -FMOD_RESULT F_API FMOD_System_RegisterDSP (FMOD_SYSTEM *system, const FMOD_DSP_DESCRIPTION *description, unsigned int *handle); -FMOD_RESULT F_API FMOD_System_RegisterOutput (FMOD_SYSTEM *system, const FMOD_OUTPUT_DESCRIPTION *description, unsigned int *handle); - -/* Init/Close. */ -FMOD_RESULT F_API FMOD_System_Init (FMOD_SYSTEM *system, int maxchannels, FMOD_INITFLAGS flags, void *extradriverdata); -FMOD_RESULT F_API FMOD_System_Close (FMOD_SYSTEM *system); - -/* General post-init system functions. */ -FMOD_RESULT F_API FMOD_System_Update (FMOD_SYSTEM *system); -FMOD_RESULT F_API FMOD_System_SetSpeakerPosition (FMOD_SYSTEM *system, FMOD_SPEAKER speaker, float x, float y, FMOD_BOOL active); -FMOD_RESULT F_API FMOD_System_GetSpeakerPosition (FMOD_SYSTEM *system, FMOD_SPEAKER speaker, float *x, float *y, FMOD_BOOL *active); -FMOD_RESULT F_API FMOD_System_SetStreamBufferSize (FMOD_SYSTEM *system, unsigned int filebuffersize, FMOD_TIMEUNIT filebuffersizetype); -FMOD_RESULT F_API FMOD_System_GetStreamBufferSize (FMOD_SYSTEM *system, unsigned int *filebuffersize, FMOD_TIMEUNIT *filebuffersizetype); -FMOD_RESULT F_API FMOD_System_Set3DSettings (FMOD_SYSTEM *system, float dopplerscale, float distancefactor, float rolloffscale); -FMOD_RESULT F_API FMOD_System_Get3DSettings (FMOD_SYSTEM *system, float *dopplerscale, float *distancefactor, float *rolloffscale); -FMOD_RESULT F_API FMOD_System_Set3DNumListeners (FMOD_SYSTEM *system, int numlisteners); -FMOD_RESULT F_API FMOD_System_Get3DNumListeners (FMOD_SYSTEM *system, int *numlisteners); -FMOD_RESULT F_API FMOD_System_Set3DListenerAttributes (FMOD_SYSTEM *system, int listener, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); -FMOD_RESULT F_API FMOD_System_Get3DListenerAttributes (FMOD_SYSTEM *system, int listener, FMOD_VECTOR *pos, FMOD_VECTOR *vel, FMOD_VECTOR *forward, FMOD_VECTOR *up); -FMOD_RESULT F_API FMOD_System_Set3DRolloffCallback (FMOD_SYSTEM *system, FMOD_3D_ROLLOFF_CALLBACK callback); -FMOD_RESULT F_API FMOD_System_MixerSuspend (FMOD_SYSTEM *system); -FMOD_RESULT F_API FMOD_System_MixerResume (FMOD_SYSTEM *system); -FMOD_RESULT F_API FMOD_System_GetDefaultMixMatrix (FMOD_SYSTEM *system, FMOD_SPEAKERMODE sourcespeakermode, FMOD_SPEAKERMODE targetspeakermode, float *matrix, int matrixhop); -FMOD_RESULT F_API FMOD_System_GetSpeakerModeChannels (FMOD_SYSTEM *system, FMOD_SPEAKERMODE mode, int *channels); - -/* System information functions. */ -FMOD_RESULT F_API FMOD_System_GetVersion (FMOD_SYSTEM *system, unsigned int *version); -FMOD_RESULT F_API FMOD_System_GetOutputHandle (FMOD_SYSTEM *system, void **handle); -FMOD_RESULT F_API FMOD_System_GetChannelsPlaying (FMOD_SYSTEM *system, int *channels, int *realchannels); -FMOD_RESULT F_API FMOD_System_GetCPUUsage (FMOD_SYSTEM *system, FMOD_CPU_USAGE *usage); -FMOD_RESULT F_API FMOD_System_GetFileUsage (FMOD_SYSTEM *system, long long *sampleBytesRead, long long *streamBytesRead, long long *otherBytesRead); - -/* Sound/DSP/Channel/FX creation and retrieval. */ -FMOD_RESULT F_API FMOD_System_CreateSound (FMOD_SYSTEM *system, const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, FMOD_SOUND **sound); -FMOD_RESULT F_API FMOD_System_CreateStream (FMOD_SYSTEM *system, const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, FMOD_SOUND **sound); -FMOD_RESULT F_API FMOD_System_CreateDSP (FMOD_SYSTEM *system, const FMOD_DSP_DESCRIPTION *description, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_System_CreateDSPByType (FMOD_SYSTEM *system, FMOD_DSP_TYPE type, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_System_CreateChannelGroup (FMOD_SYSTEM *system, const char *name, FMOD_CHANNELGROUP **channelgroup); -FMOD_RESULT F_API FMOD_System_CreateSoundGroup (FMOD_SYSTEM *system, const char *name, FMOD_SOUNDGROUP **soundgroup); -FMOD_RESULT F_API FMOD_System_CreateReverb3D (FMOD_SYSTEM *system, FMOD_REVERB3D **reverb); -FMOD_RESULT F_API FMOD_System_PlaySound (FMOD_SYSTEM *system, FMOD_SOUND *sound, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused, FMOD_CHANNEL **channel); -FMOD_RESULT F_API FMOD_System_PlayDSP (FMOD_SYSTEM *system, FMOD_DSP *dsp, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused, FMOD_CHANNEL **channel); -FMOD_RESULT F_API FMOD_System_GetChannel (FMOD_SYSTEM *system, int channelid, FMOD_CHANNEL **channel); -FMOD_RESULT F_API FMOD_System_GetDSPInfoByType (FMOD_SYSTEM *system, FMOD_DSP_TYPE type, const FMOD_DSP_DESCRIPTION **description); -FMOD_RESULT F_API FMOD_System_GetMasterChannelGroup (FMOD_SYSTEM *system, FMOD_CHANNELGROUP **channelgroup); -FMOD_RESULT F_API FMOD_System_GetMasterSoundGroup (FMOD_SYSTEM *system, FMOD_SOUNDGROUP **soundgroup); - -/* Routing to ports. */ -FMOD_RESULT F_API FMOD_System_AttachChannelGroupToPort (FMOD_SYSTEM *system, FMOD_PORT_TYPE portType, FMOD_PORT_INDEX portIndex, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL passThru); -FMOD_RESULT F_API FMOD_System_DetachChannelGroupFromPort(FMOD_SYSTEM *system, FMOD_CHANNELGROUP *channelgroup); - -/* Reverb API. */ -FMOD_RESULT F_API FMOD_System_SetReverbProperties (FMOD_SYSTEM *system, int instance, const FMOD_REVERB_PROPERTIES *prop); -FMOD_RESULT F_API FMOD_System_GetReverbProperties (FMOD_SYSTEM *system, int instance, FMOD_REVERB_PROPERTIES *prop); - -/* System level DSP functionality. */ -FMOD_RESULT F_API FMOD_System_LockDSP (FMOD_SYSTEM *system); -FMOD_RESULT F_API FMOD_System_UnlockDSP (FMOD_SYSTEM *system); - -/* Recording API. */ -FMOD_RESULT F_API FMOD_System_GetRecordNumDrivers (FMOD_SYSTEM *system, int *numdrivers, int *numconnected); -FMOD_RESULT F_API FMOD_System_GetRecordDriverInfo (FMOD_SYSTEM *system, int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels, FMOD_DRIVER_STATE *state); -FMOD_RESULT F_API FMOD_System_GetRecordPosition (FMOD_SYSTEM *system, int id, unsigned int *position); -FMOD_RESULT F_API FMOD_System_RecordStart (FMOD_SYSTEM *system, int id, FMOD_SOUND *sound, FMOD_BOOL loop); -FMOD_RESULT F_API FMOD_System_RecordStop (FMOD_SYSTEM *system, int id); -FMOD_RESULT F_API FMOD_System_IsRecording (FMOD_SYSTEM *system, int id, FMOD_BOOL *recording); - -/* Geometry API. */ -FMOD_RESULT F_API FMOD_System_CreateGeometry (FMOD_SYSTEM *system, int maxpolygons, int maxvertices, FMOD_GEOMETRY **geometry); -FMOD_RESULT F_API FMOD_System_SetGeometrySettings (FMOD_SYSTEM *system, float maxworldsize); -FMOD_RESULT F_API FMOD_System_GetGeometrySettings (FMOD_SYSTEM *system, float *maxworldsize); -FMOD_RESULT F_API FMOD_System_LoadGeometry (FMOD_SYSTEM *system, const void *data, int datasize, FMOD_GEOMETRY **geometry); -FMOD_RESULT F_API FMOD_System_GetGeometryOcclusion (FMOD_SYSTEM *system, const FMOD_VECTOR *listener, const FMOD_VECTOR *source, float *direct, float *reverb); - -/* Network functions. */ -FMOD_RESULT F_API FMOD_System_SetNetworkProxy (FMOD_SYSTEM *system, const char *proxy); -FMOD_RESULT F_API FMOD_System_GetNetworkProxy (FMOD_SYSTEM *system, char *proxy, int proxylen); -FMOD_RESULT F_API FMOD_System_SetNetworkTimeout (FMOD_SYSTEM *system, int timeout); -FMOD_RESULT F_API FMOD_System_GetNetworkTimeout (FMOD_SYSTEM *system, int *timeout); - -/* Userdata set/get. */ -FMOD_RESULT F_API FMOD_System_SetUserData (FMOD_SYSTEM *system, void *userdata); -FMOD_RESULT F_API FMOD_System_GetUserData (FMOD_SYSTEM *system, void **userdata); - -/* Sound API -*/ - -FMOD_RESULT F_API FMOD_Sound_Release (FMOD_SOUND *sound); -FMOD_RESULT F_API FMOD_Sound_GetSystemObject (FMOD_SOUND *sound, FMOD_SYSTEM **system); - -/* - Standard sound manipulation functions. -*/ - -FMOD_RESULT F_API FMOD_Sound_Lock (FMOD_SOUND *sound, unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); -FMOD_RESULT F_API FMOD_Sound_Unlock (FMOD_SOUND *sound, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); -FMOD_RESULT F_API FMOD_Sound_SetDefaults (FMOD_SOUND *sound, float frequency, int priority); -FMOD_RESULT F_API FMOD_Sound_GetDefaults (FMOD_SOUND *sound, float *frequency, int *priority); -FMOD_RESULT F_API FMOD_Sound_Set3DMinMaxDistance (FMOD_SOUND *sound, float min, float max); -FMOD_RESULT F_API FMOD_Sound_Get3DMinMaxDistance (FMOD_SOUND *sound, float *min, float *max); -FMOD_RESULT F_API FMOD_Sound_Set3DConeSettings (FMOD_SOUND *sound, float insideconeangle, float outsideconeangle, float outsidevolume); -FMOD_RESULT F_API FMOD_Sound_Get3DConeSettings (FMOD_SOUND *sound, float *insideconeangle, float *outsideconeangle, float *outsidevolume); -FMOD_RESULT F_API FMOD_Sound_Set3DCustomRolloff (FMOD_SOUND *sound, FMOD_VECTOR *points, int numpoints); -FMOD_RESULT F_API FMOD_Sound_Get3DCustomRolloff (FMOD_SOUND *sound, FMOD_VECTOR **points, int *numpoints); -FMOD_RESULT F_API FMOD_Sound_GetSubSound (FMOD_SOUND *sound, int index, FMOD_SOUND **subsound); -FMOD_RESULT F_API FMOD_Sound_GetSubSoundParent (FMOD_SOUND *sound, FMOD_SOUND **parentsound); -FMOD_RESULT F_API FMOD_Sound_GetName (FMOD_SOUND *sound, char *name, int namelen); -FMOD_RESULT F_API FMOD_Sound_GetLength (FMOD_SOUND *sound, unsigned int *length, FMOD_TIMEUNIT lengthtype); -FMOD_RESULT F_API FMOD_Sound_GetFormat (FMOD_SOUND *sound, FMOD_SOUND_TYPE *type, FMOD_SOUND_FORMAT *format, int *channels, int *bits); -FMOD_RESULT F_API FMOD_Sound_GetNumSubSounds (FMOD_SOUND *sound, int *numsubsounds); -FMOD_RESULT F_API FMOD_Sound_GetNumTags (FMOD_SOUND *sound, int *numtags, int *numtagsupdated); -FMOD_RESULT F_API FMOD_Sound_GetTag (FMOD_SOUND *sound, const char *name, int index, FMOD_TAG *tag); -FMOD_RESULT F_API FMOD_Sound_GetOpenState (FMOD_SOUND *sound, FMOD_OPENSTATE *openstate, unsigned int *percentbuffered, FMOD_BOOL *starving, FMOD_BOOL *diskbusy); -FMOD_RESULT F_API FMOD_Sound_ReadData (FMOD_SOUND *sound, void *buffer, unsigned int length, unsigned int *read); -FMOD_RESULT F_API FMOD_Sound_SeekData (FMOD_SOUND *sound, unsigned int pcm); - -FMOD_RESULT F_API FMOD_Sound_SetSoundGroup (FMOD_SOUND *sound, FMOD_SOUNDGROUP *soundgroup); -FMOD_RESULT F_API FMOD_Sound_GetSoundGroup (FMOD_SOUND *sound, FMOD_SOUNDGROUP **soundgroup); - -/* - Synchronization point API. These points can come from markers embedded in wav files, and can also generate channel callbacks. -*/ - -FMOD_RESULT F_API FMOD_Sound_GetNumSyncPoints (FMOD_SOUND *sound, int *numsyncpoints); -FMOD_RESULT F_API FMOD_Sound_GetSyncPoint (FMOD_SOUND *sound, int index, FMOD_SYNCPOINT **point); -FMOD_RESULT F_API FMOD_Sound_GetSyncPointInfo (FMOD_SOUND *sound, FMOD_SYNCPOINT *point, char *name, int namelen, unsigned int *offset, FMOD_TIMEUNIT offsettype); -FMOD_RESULT F_API FMOD_Sound_AddSyncPoint (FMOD_SOUND *sound, unsigned int offset, FMOD_TIMEUNIT offsettype, const char *name, FMOD_SYNCPOINT **point); -FMOD_RESULT F_API FMOD_Sound_DeleteSyncPoint (FMOD_SOUND *sound, FMOD_SYNCPOINT *point); - -/* - Functions also in Channel class but here they are the 'default' to save having to change it in Channel all the time. -*/ - -FMOD_RESULT F_API FMOD_Sound_SetMode (FMOD_SOUND *sound, FMOD_MODE mode); -FMOD_RESULT F_API FMOD_Sound_GetMode (FMOD_SOUND *sound, FMOD_MODE *mode); -FMOD_RESULT F_API FMOD_Sound_SetLoopCount (FMOD_SOUND *sound, int loopcount); -FMOD_RESULT F_API FMOD_Sound_GetLoopCount (FMOD_SOUND *sound, int *loopcount); -FMOD_RESULT F_API FMOD_Sound_SetLoopPoints (FMOD_SOUND *sound, unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); -FMOD_RESULT F_API FMOD_Sound_GetLoopPoints (FMOD_SOUND *sound, unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); - -/* - For MOD/S3M/XM/IT/MID sequenced formats only. -*/ - -FMOD_RESULT F_API FMOD_Sound_GetMusicNumChannels (FMOD_SOUND *sound, int *numchannels); -FMOD_RESULT F_API FMOD_Sound_SetMusicChannelVolume (FMOD_SOUND *sound, int channel, float volume); -FMOD_RESULT F_API FMOD_Sound_GetMusicChannelVolume (FMOD_SOUND *sound, int channel, float *volume); -FMOD_RESULT F_API FMOD_Sound_SetMusicSpeed (FMOD_SOUND *sound, float speed); -FMOD_RESULT F_API FMOD_Sound_GetMusicSpeed (FMOD_SOUND *sound, float *speed); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_Sound_SetUserData (FMOD_SOUND *sound, void *userdata); -FMOD_RESULT F_API FMOD_Sound_GetUserData (FMOD_SOUND *sound, void **userdata); - -/* - 'Channel' API -*/ - -FMOD_RESULT F_API FMOD_Channel_GetSystemObject (FMOD_CHANNEL *channel, FMOD_SYSTEM **system); - -/* - General control functionality for Channels and ChannelGroups. -*/ - -FMOD_RESULT F_API FMOD_Channel_Stop (FMOD_CHANNEL *channel); -FMOD_RESULT F_API FMOD_Channel_SetPaused (FMOD_CHANNEL *channel, FMOD_BOOL paused); -FMOD_RESULT F_API FMOD_Channel_GetPaused (FMOD_CHANNEL *channel, FMOD_BOOL *paused); -FMOD_RESULT F_API FMOD_Channel_SetVolume (FMOD_CHANNEL *channel, float volume); -FMOD_RESULT F_API FMOD_Channel_GetVolume (FMOD_CHANNEL *channel, float *volume); -FMOD_RESULT F_API FMOD_Channel_SetVolumeRamp (FMOD_CHANNEL *channel, FMOD_BOOL ramp); -FMOD_RESULT F_API FMOD_Channel_GetVolumeRamp (FMOD_CHANNEL *channel, FMOD_BOOL *ramp); -FMOD_RESULT F_API FMOD_Channel_GetAudibility (FMOD_CHANNEL *channel, float *audibility); -FMOD_RESULT F_API FMOD_Channel_SetPitch (FMOD_CHANNEL *channel, float pitch); -FMOD_RESULT F_API FMOD_Channel_GetPitch (FMOD_CHANNEL *channel, float *pitch); -FMOD_RESULT F_API FMOD_Channel_SetMute (FMOD_CHANNEL *channel, FMOD_BOOL mute); -FMOD_RESULT F_API FMOD_Channel_GetMute (FMOD_CHANNEL *channel, FMOD_BOOL *mute); -FMOD_RESULT F_API FMOD_Channel_SetReverbProperties (FMOD_CHANNEL *channel, int instance, float wet); -FMOD_RESULT F_API FMOD_Channel_GetReverbProperties (FMOD_CHANNEL *channel, int instance, float *wet); -FMOD_RESULT F_API FMOD_Channel_SetLowPassGain (FMOD_CHANNEL *channel, float gain); -FMOD_RESULT F_API FMOD_Channel_GetLowPassGain (FMOD_CHANNEL *channel, float *gain); -FMOD_RESULT F_API FMOD_Channel_SetMode (FMOD_CHANNEL *channel, FMOD_MODE mode); -FMOD_RESULT F_API FMOD_Channel_GetMode (FMOD_CHANNEL *channel, FMOD_MODE *mode); -FMOD_RESULT F_API FMOD_Channel_SetCallback (FMOD_CHANNEL *channel, FMOD_CHANNELCONTROL_CALLBACK callback); -FMOD_RESULT F_API FMOD_Channel_IsPlaying (FMOD_CHANNEL *channel, FMOD_BOOL *isplaying); - -/* - Note all 'set' functions alter a final matrix, this is why the only get function is getMixMatrix, to avoid other get functions returning incorrect/obsolete values. -*/ - -FMOD_RESULT F_API FMOD_Channel_SetPan (FMOD_CHANNEL *channel, float pan); -FMOD_RESULT F_API FMOD_Channel_SetMixLevelsOutput (FMOD_CHANNEL *channel, float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); -FMOD_RESULT F_API FMOD_Channel_SetMixLevelsInput (FMOD_CHANNEL *channel, float *levels, int numlevels); -FMOD_RESULT F_API FMOD_Channel_SetMixMatrix (FMOD_CHANNEL *channel, float *matrix, int outchannels, int inchannels, int inchannel_hop); -FMOD_RESULT F_API FMOD_Channel_GetMixMatrix (FMOD_CHANNEL *channel, float *matrix, int *outchannels, int *inchannels, int inchannel_hop); - -/* - Clock based functionality. -*/ - -FMOD_RESULT F_API FMOD_Channel_GetDSPClock (FMOD_CHANNEL *channel, unsigned long long *dspclock, unsigned long long *parentclock); -FMOD_RESULT F_API FMOD_Channel_SetDelay (FMOD_CHANNEL *channel, unsigned long long dspclock_start, unsigned long long dspclock_end, FMOD_BOOL stopchannels); -FMOD_RESULT F_API FMOD_Channel_GetDelay (FMOD_CHANNEL *channel, unsigned long long *dspclock_start, unsigned long long *dspclock_end, FMOD_BOOL *stopchannels); -FMOD_RESULT F_API FMOD_Channel_AddFadePoint (FMOD_CHANNEL *channel, unsigned long long dspclock, float volume); -FMOD_RESULT F_API FMOD_Channel_SetFadePointRamp (FMOD_CHANNEL *channel, unsigned long long dspclock, float volume); -FMOD_RESULT F_API FMOD_Channel_RemoveFadePoints (FMOD_CHANNEL *channel, unsigned long long dspclock_start, unsigned long long dspclock_end); -FMOD_RESULT F_API FMOD_Channel_GetFadePoints (FMOD_CHANNEL *channel, unsigned int *numpoints, unsigned long long *point_dspclock, float *point_volume); - -/* - DSP effects. -*/ - -FMOD_RESULT F_API FMOD_Channel_GetDSP (FMOD_CHANNEL *channel, int index, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_Channel_AddDSP (FMOD_CHANNEL *channel, int index, FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_Channel_RemoveDSP (FMOD_CHANNEL *channel, FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_Channel_GetNumDSPs (FMOD_CHANNEL *channel, int *numdsps); -FMOD_RESULT F_API FMOD_Channel_SetDSPIndex (FMOD_CHANNEL *channel, FMOD_DSP *dsp, int index); -FMOD_RESULT F_API FMOD_Channel_GetDSPIndex (FMOD_CHANNEL *channel, FMOD_DSP *dsp, int *index); - -/* - 3D functionality. -*/ - -FMOD_RESULT F_API FMOD_Channel_Set3DAttributes (FMOD_CHANNEL *channel, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); -FMOD_RESULT F_API FMOD_Channel_Get3DAttributes (FMOD_CHANNEL *channel, FMOD_VECTOR *pos, FMOD_VECTOR *vel); -FMOD_RESULT F_API FMOD_Channel_Set3DMinMaxDistance (FMOD_CHANNEL *channel, float mindistance, float maxdistance); -FMOD_RESULT F_API FMOD_Channel_Get3DMinMaxDistance (FMOD_CHANNEL *channel, float *mindistance, float *maxdistance); -FMOD_RESULT F_API FMOD_Channel_Set3DConeSettings (FMOD_CHANNEL *channel, float insideconeangle, float outsideconeangle, float outsidevolume); -FMOD_RESULT F_API FMOD_Channel_Get3DConeSettings (FMOD_CHANNEL *channel, float *insideconeangle, float *outsideconeangle, float *outsidevolume); -FMOD_RESULT F_API FMOD_Channel_Set3DConeOrientation (FMOD_CHANNEL *channel, FMOD_VECTOR *orientation); -FMOD_RESULT F_API FMOD_Channel_Get3DConeOrientation (FMOD_CHANNEL *channel, FMOD_VECTOR *orientation); -FMOD_RESULT F_API FMOD_Channel_Set3DCustomRolloff (FMOD_CHANNEL *channel, FMOD_VECTOR *points, int numpoints); -FMOD_RESULT F_API FMOD_Channel_Get3DCustomRolloff (FMOD_CHANNEL *channel, FMOD_VECTOR **points, int *numpoints); -FMOD_RESULT F_API FMOD_Channel_Set3DOcclusion (FMOD_CHANNEL *channel, float directocclusion, float reverbocclusion); -FMOD_RESULT F_API FMOD_Channel_Get3DOcclusion (FMOD_CHANNEL *channel, float *directocclusion, float *reverbocclusion); -FMOD_RESULT F_API FMOD_Channel_Set3DSpread (FMOD_CHANNEL *channel, float angle); -FMOD_RESULT F_API FMOD_Channel_Get3DSpread (FMOD_CHANNEL *channel, float *angle); -FMOD_RESULT F_API FMOD_Channel_Set3DLevel (FMOD_CHANNEL *channel, float level); -FMOD_RESULT F_API FMOD_Channel_Get3DLevel (FMOD_CHANNEL *channel, float *level); -FMOD_RESULT F_API FMOD_Channel_Set3DDopplerLevel (FMOD_CHANNEL *channel, float level); -FMOD_RESULT F_API FMOD_Channel_Get3DDopplerLevel (FMOD_CHANNEL *channel, float *level); -FMOD_RESULT F_API FMOD_Channel_Set3DDistanceFilter (FMOD_CHANNEL *channel, FMOD_BOOL custom, float customLevel, float centerFreq); -FMOD_RESULT F_API FMOD_Channel_Get3DDistanceFilter (FMOD_CHANNEL *channel, FMOD_BOOL *custom, float *customLevel, float *centerFreq); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_Channel_SetUserData (FMOD_CHANNEL *channel, void *userdata); -FMOD_RESULT F_API FMOD_Channel_GetUserData (FMOD_CHANNEL *channel, void **userdata); - -/* - Channel specific control functionality. -*/ - -FMOD_RESULT F_API FMOD_Channel_SetFrequency (FMOD_CHANNEL *channel, float frequency); -FMOD_RESULT F_API FMOD_Channel_GetFrequency (FMOD_CHANNEL *channel, float *frequency); -FMOD_RESULT F_API FMOD_Channel_SetPriority (FMOD_CHANNEL *channel, int priority); -FMOD_RESULT F_API FMOD_Channel_GetPriority (FMOD_CHANNEL *channel, int *priority); -FMOD_RESULT F_API FMOD_Channel_SetPosition (FMOD_CHANNEL *channel, unsigned int position, FMOD_TIMEUNIT postype); -FMOD_RESULT F_API FMOD_Channel_GetPosition (FMOD_CHANNEL *channel, unsigned int *position, FMOD_TIMEUNIT postype); -FMOD_RESULT F_API FMOD_Channel_SetChannelGroup (FMOD_CHANNEL *channel, FMOD_CHANNELGROUP *channelgroup); -FMOD_RESULT F_API FMOD_Channel_GetChannelGroup (FMOD_CHANNEL *channel, FMOD_CHANNELGROUP **channelgroup); -FMOD_RESULT F_API FMOD_Channel_SetLoopCount (FMOD_CHANNEL *channel, int loopcount); -FMOD_RESULT F_API FMOD_Channel_GetLoopCount (FMOD_CHANNEL *channel, int *loopcount); -FMOD_RESULT F_API FMOD_Channel_SetLoopPoints (FMOD_CHANNEL *channel, unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); -FMOD_RESULT F_API FMOD_Channel_GetLoopPoints (FMOD_CHANNEL *channel, unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); - -/* - Information only functions. -*/ - -FMOD_RESULT F_API FMOD_Channel_IsVirtual (FMOD_CHANNEL *channel, FMOD_BOOL *isvirtual); -FMOD_RESULT F_API FMOD_Channel_GetCurrentSound (FMOD_CHANNEL *channel, FMOD_SOUND **sound); -FMOD_RESULT F_API FMOD_Channel_GetIndex (FMOD_CHANNEL *channel, int *index); - -/* - 'ChannelGroup' API -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_GetSystemObject (FMOD_CHANNELGROUP *channelgroup, FMOD_SYSTEM **system); - -/* - General control functionality for Channels and ChannelGroups. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_Stop (FMOD_CHANNELGROUP *channelgroup); -FMOD_RESULT F_API FMOD_ChannelGroup_SetPaused (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused); -FMOD_RESULT F_API FMOD_ChannelGroup_GetPaused (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *paused); -FMOD_RESULT F_API FMOD_ChannelGroup_SetVolume (FMOD_CHANNELGROUP *channelgroup, float volume); -FMOD_RESULT F_API FMOD_ChannelGroup_GetVolume (FMOD_CHANNELGROUP *channelgroup, float *volume); -FMOD_RESULT F_API FMOD_ChannelGroup_SetVolumeRamp (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL ramp); -FMOD_RESULT F_API FMOD_ChannelGroup_GetVolumeRamp (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *ramp); -FMOD_RESULT F_API FMOD_ChannelGroup_GetAudibility (FMOD_CHANNELGROUP *channelgroup, float *audibility); -FMOD_RESULT F_API FMOD_ChannelGroup_SetPitch (FMOD_CHANNELGROUP *channelgroup, float pitch); -FMOD_RESULT F_API FMOD_ChannelGroup_GetPitch (FMOD_CHANNELGROUP *channelgroup, float *pitch); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMute (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL mute); -FMOD_RESULT F_API FMOD_ChannelGroup_GetMute (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *mute); -FMOD_RESULT F_API FMOD_ChannelGroup_SetReverbProperties (FMOD_CHANNELGROUP *channelgroup, int instance, float wet); -FMOD_RESULT F_API FMOD_ChannelGroup_GetReverbProperties (FMOD_CHANNELGROUP *channelgroup, int instance, float *wet); -FMOD_RESULT F_API FMOD_ChannelGroup_SetLowPassGain (FMOD_CHANNELGROUP *channelgroup, float gain); -FMOD_RESULT F_API FMOD_ChannelGroup_GetLowPassGain (FMOD_CHANNELGROUP *channelgroup, float *gain); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMode (FMOD_CHANNELGROUP *channelgroup, FMOD_MODE mode); -FMOD_RESULT F_API FMOD_ChannelGroup_GetMode (FMOD_CHANNELGROUP *channelgroup, FMOD_MODE *mode); -FMOD_RESULT F_API FMOD_ChannelGroup_SetCallback (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELCONTROL_CALLBACK callback); -FMOD_RESULT F_API FMOD_ChannelGroup_IsPlaying (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *isplaying); - -/* - Note all 'set' functions alter a final matrix, this is why the only get function is getMixMatrix, to avoid other get functions returning incorrect/obsolete values. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_SetPan (FMOD_CHANNELGROUP *channelgroup, float pan); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMixLevelsOutput (FMOD_CHANNELGROUP *channelgroup, float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMixLevelsInput (FMOD_CHANNELGROUP *channelgroup, float *levels, int numlevels); -FMOD_RESULT F_API FMOD_ChannelGroup_SetMixMatrix (FMOD_CHANNELGROUP *channelgroup, float *matrix, int outchannels, int inchannels, int inchannel_hop); -FMOD_RESULT F_API FMOD_ChannelGroup_GetMixMatrix (FMOD_CHANNELGROUP *channelgroup, float *matrix, int *outchannels, int *inchannels, int inchannel_hop); - -/* - Clock based functionality. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_GetDSPClock (FMOD_CHANNELGROUP *channelgroup, unsigned long long *dspclock, unsigned long long *parentclock); -FMOD_RESULT F_API FMOD_ChannelGroup_SetDelay (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock_start, unsigned long long dspclock_end, FMOD_BOOL stopchannels); -FMOD_RESULT F_API FMOD_ChannelGroup_GetDelay (FMOD_CHANNELGROUP *channelgroup, unsigned long long *dspclock_start, unsigned long long *dspclock_end, FMOD_BOOL *stopchannels); -FMOD_RESULT F_API FMOD_ChannelGroup_AddFadePoint (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock, float volume); -FMOD_RESULT F_API FMOD_ChannelGroup_SetFadePointRamp (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock, float volume); -FMOD_RESULT F_API FMOD_ChannelGroup_RemoveFadePoints (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock_start, unsigned long long dspclock_end); -FMOD_RESULT F_API FMOD_ChannelGroup_GetFadePoints (FMOD_CHANNELGROUP *channelgroup, unsigned int *numpoints, unsigned long long *point_dspclock, float *point_volume); - -/* - DSP effects. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_GetDSP (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_DSP **dsp); -FMOD_RESULT F_API FMOD_ChannelGroup_AddDSP (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_ChannelGroup_RemoveDSP (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_ChannelGroup_GetNumDSPs (FMOD_CHANNELGROUP *channelgroup, int *numdsps); -FMOD_RESULT F_API FMOD_ChannelGroup_SetDSPIndex (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp, int index); -FMOD_RESULT F_API FMOD_ChannelGroup_GetDSPIndex (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp, int *index); - -/* - 3D functionality. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DAttributes (FMOD_CHANNELGROUP *channelgroup, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DAttributes (FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *pos, FMOD_VECTOR *vel); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DMinMaxDistance (FMOD_CHANNELGROUP *channelgroup, float mindistance, float maxdistance); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DMinMaxDistance (FMOD_CHANNELGROUP *channelgroup, float *mindistance, float *maxdistance); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DConeSettings (FMOD_CHANNELGROUP *channelgroup, float insideconeangle, float outsideconeangle, float outsidevolume); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DConeSettings (FMOD_CHANNELGROUP *channelgroup, float *insideconeangle, float *outsideconeangle, float *outsidevolume); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DConeOrientation(FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *orientation); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DConeOrientation(FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *orientation); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DCustomRolloff (FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *points, int numpoints); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DCustomRolloff (FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR **points, int *numpoints); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DOcclusion (FMOD_CHANNELGROUP *channelgroup, float directocclusion, float reverbocclusion); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DOcclusion (FMOD_CHANNELGROUP *channelgroup, float *directocclusion, float *reverbocclusion); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DSpread (FMOD_CHANNELGROUP *channelgroup, float angle); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DSpread (FMOD_CHANNELGROUP *channelgroup, float *angle); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DLevel (FMOD_CHANNELGROUP *channelgroup, float level); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DLevel (FMOD_CHANNELGROUP *channelgroup, float *level); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DDopplerLevel (FMOD_CHANNELGROUP *channelgroup, float level); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DDopplerLevel (FMOD_CHANNELGROUP *channelgroup, float *level); -FMOD_RESULT F_API FMOD_ChannelGroup_Set3DDistanceFilter (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL custom, float customLevel, float centerFreq); -FMOD_RESULT F_API FMOD_ChannelGroup_Get3DDistanceFilter (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *custom, float *customLevel, float *centerFreq); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_SetUserData (FMOD_CHANNELGROUP *channelgroup, void *userdata); -FMOD_RESULT F_API FMOD_ChannelGroup_GetUserData (FMOD_CHANNELGROUP *channelgroup, void **userdata); - -FMOD_RESULT F_API FMOD_ChannelGroup_Release (FMOD_CHANNELGROUP *channelgroup); - -/* - Nested channel groups. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_AddGroup (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELGROUP *group, FMOD_BOOL propagatedspclock, FMOD_DSPCONNECTION **connection); -FMOD_RESULT F_API FMOD_ChannelGroup_GetNumGroups (FMOD_CHANNELGROUP *channelgroup, int *numgroups); -FMOD_RESULT F_API FMOD_ChannelGroup_GetGroup (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_CHANNELGROUP **group); -FMOD_RESULT F_API FMOD_ChannelGroup_GetParentGroup (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELGROUP **group); - -/* - Information only functions. -*/ - -FMOD_RESULT F_API FMOD_ChannelGroup_GetName (FMOD_CHANNELGROUP *channelgroup, char *name, int namelen); -FMOD_RESULT F_API FMOD_ChannelGroup_GetNumChannels (FMOD_CHANNELGROUP *channelgroup, int *numchannels); -FMOD_RESULT F_API FMOD_ChannelGroup_GetChannel (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_CHANNEL **channel); - -/* - 'SoundGroup' API -*/ - -FMOD_RESULT F_API FMOD_SoundGroup_Release (FMOD_SOUNDGROUP *soundgroup); -FMOD_RESULT F_API FMOD_SoundGroup_GetSystemObject (FMOD_SOUNDGROUP *soundgroup, FMOD_SYSTEM **system); - -/* - SoundGroup control functions. -*/ - -FMOD_RESULT F_API FMOD_SoundGroup_SetMaxAudible (FMOD_SOUNDGROUP *soundgroup, int maxaudible); -FMOD_RESULT F_API FMOD_SoundGroup_GetMaxAudible (FMOD_SOUNDGROUP *soundgroup, int *maxaudible); -FMOD_RESULT F_API FMOD_SoundGroup_SetMaxAudibleBehavior (FMOD_SOUNDGROUP *soundgroup, FMOD_SOUNDGROUP_BEHAVIOR behavior); -FMOD_RESULT F_API FMOD_SoundGroup_GetMaxAudibleBehavior (FMOD_SOUNDGROUP *soundgroup, FMOD_SOUNDGROUP_BEHAVIOR *behavior); -FMOD_RESULT F_API FMOD_SoundGroup_SetMuteFadeSpeed (FMOD_SOUNDGROUP *soundgroup, float speed); -FMOD_RESULT F_API FMOD_SoundGroup_GetMuteFadeSpeed (FMOD_SOUNDGROUP *soundgroup, float *speed); -FMOD_RESULT F_API FMOD_SoundGroup_SetVolume (FMOD_SOUNDGROUP *soundgroup, float volume); -FMOD_RESULT F_API FMOD_SoundGroup_GetVolume (FMOD_SOUNDGROUP *soundgroup, float *volume); -FMOD_RESULT F_API FMOD_SoundGroup_Stop (FMOD_SOUNDGROUP *soundgroup); - -/* - Information only functions. -*/ - -FMOD_RESULT F_API FMOD_SoundGroup_GetName (FMOD_SOUNDGROUP *soundgroup, char *name, int namelen); -FMOD_RESULT F_API FMOD_SoundGroup_GetNumSounds (FMOD_SOUNDGROUP *soundgroup, int *numsounds); -FMOD_RESULT F_API FMOD_SoundGroup_GetSound (FMOD_SOUNDGROUP *soundgroup, int index, FMOD_SOUND **sound); -FMOD_RESULT F_API FMOD_SoundGroup_GetNumPlaying (FMOD_SOUNDGROUP *soundgroup, int *numplaying); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_SoundGroup_SetUserData (FMOD_SOUNDGROUP *soundgroup, void *userdata); -FMOD_RESULT F_API FMOD_SoundGroup_GetUserData (FMOD_SOUNDGROUP *soundgroup, void **userdata); - -/* - 'DSP' API -*/ - -FMOD_RESULT F_API FMOD_DSP_Release (FMOD_DSP *dsp); -FMOD_RESULT F_API FMOD_DSP_GetSystemObject (FMOD_DSP *dsp, FMOD_SYSTEM **system); - -/* - Connection / disconnection / input and output enumeration. -*/ - -FMOD_RESULT F_API FMOD_DSP_AddInput (FMOD_DSP *dsp, FMOD_DSP *input, FMOD_DSPCONNECTION **connection, FMOD_DSPCONNECTION_TYPE type); -FMOD_RESULT F_API FMOD_DSP_DisconnectFrom (FMOD_DSP *dsp, FMOD_DSP *target, FMOD_DSPCONNECTION *connection); -FMOD_RESULT F_API FMOD_DSP_DisconnectAll (FMOD_DSP *dsp, FMOD_BOOL inputs, FMOD_BOOL outputs); -FMOD_RESULT F_API FMOD_DSP_GetNumInputs (FMOD_DSP *dsp, int *numinputs); -FMOD_RESULT F_API FMOD_DSP_GetNumOutputs (FMOD_DSP *dsp, int *numoutputs); -FMOD_RESULT F_API FMOD_DSP_GetInput (FMOD_DSP *dsp, int index, FMOD_DSP **input, FMOD_DSPCONNECTION **inputconnection); -FMOD_RESULT F_API FMOD_DSP_GetOutput (FMOD_DSP *dsp, int index, FMOD_DSP **output, FMOD_DSPCONNECTION **outputconnection); - -/* - DSP unit control. -*/ - -FMOD_RESULT F_API FMOD_DSP_SetActive (FMOD_DSP *dsp, FMOD_BOOL active); -FMOD_RESULT F_API FMOD_DSP_GetActive (FMOD_DSP *dsp, FMOD_BOOL *active); -FMOD_RESULT F_API FMOD_DSP_SetBypass (FMOD_DSP *dsp, FMOD_BOOL bypass); -FMOD_RESULT F_API FMOD_DSP_GetBypass (FMOD_DSP *dsp, FMOD_BOOL *bypass); -FMOD_RESULT F_API FMOD_DSP_SetWetDryMix (FMOD_DSP *dsp, float prewet, float postwet, float dry); -FMOD_RESULT F_API FMOD_DSP_GetWetDryMix (FMOD_DSP *dsp, float *prewet, float *postwet, float *dry); -FMOD_RESULT F_API FMOD_DSP_SetChannelFormat (FMOD_DSP *dsp, FMOD_CHANNELMASK channelmask, int numchannels, FMOD_SPEAKERMODE source_speakermode); -FMOD_RESULT F_API FMOD_DSP_GetChannelFormat (FMOD_DSP *dsp, FMOD_CHANNELMASK *channelmask, int *numchannels, FMOD_SPEAKERMODE *source_speakermode); -FMOD_RESULT F_API FMOD_DSP_GetOutputChannelFormat (FMOD_DSP *dsp, FMOD_CHANNELMASK inmask, int inchannels, FMOD_SPEAKERMODE inspeakermode, FMOD_CHANNELMASK *outmask, int *outchannels, FMOD_SPEAKERMODE *outspeakermode); -FMOD_RESULT F_API FMOD_DSP_Reset (FMOD_DSP *dsp); - -/* - DSP parameter control. -*/ - -FMOD_RESULT F_API FMOD_DSP_SetParameterFloat (FMOD_DSP *dsp, int index, float value); -FMOD_RESULT F_API FMOD_DSP_SetParameterInt (FMOD_DSP *dsp, int index, int value); -FMOD_RESULT F_API FMOD_DSP_SetParameterBool (FMOD_DSP *dsp, int index, FMOD_BOOL value); -FMOD_RESULT F_API FMOD_DSP_SetParameterData (FMOD_DSP *dsp, int index, void *data, unsigned int length); -FMOD_RESULT F_API FMOD_DSP_GetParameterFloat (FMOD_DSP *dsp, int index, float *value, char *valuestr, int valuestrlen); -FMOD_RESULT F_API FMOD_DSP_GetParameterInt (FMOD_DSP *dsp, int index, int *value, char *valuestr, int valuestrlen); -FMOD_RESULT F_API FMOD_DSP_GetParameterBool (FMOD_DSP *dsp, int index, FMOD_BOOL *value, char *valuestr, int valuestrlen); -FMOD_RESULT F_API FMOD_DSP_GetParameterData (FMOD_DSP *dsp, int index, void **data, unsigned int *length, char *valuestr, int valuestrlen); -FMOD_RESULT F_API FMOD_DSP_GetNumParameters (FMOD_DSP *dsp, int *numparams); -FMOD_RESULT F_API FMOD_DSP_GetParameterInfo (FMOD_DSP *dsp, int index, FMOD_DSP_PARAMETER_DESC **desc); -FMOD_RESULT F_API FMOD_DSP_GetDataParameterIndex (FMOD_DSP *dsp, int datatype, int *index); -FMOD_RESULT F_API FMOD_DSP_ShowConfigDialog (FMOD_DSP *dsp, void *hwnd, FMOD_BOOL show); - -/* - DSP attributes. -*/ - -FMOD_RESULT F_API FMOD_DSP_GetInfo (FMOD_DSP *dsp, char *name, unsigned int *version, int *channels, int *configwidth, int *configheight); -FMOD_RESULT F_API FMOD_DSP_GetType (FMOD_DSP *dsp, FMOD_DSP_TYPE *type); -FMOD_RESULT F_API FMOD_DSP_GetIdle (FMOD_DSP *dsp, FMOD_BOOL *idle); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_DSP_SetUserData (FMOD_DSP *dsp, void *userdata); -FMOD_RESULT F_API FMOD_DSP_GetUserData (FMOD_DSP *dsp, void **userdata); - -/* - Metering. -*/ - -FMOD_RESULT F_API FMOD_DSP_SetMeteringEnabled (FMOD_DSP *dsp, FMOD_BOOL inputEnabled, FMOD_BOOL outputEnabled); -FMOD_RESULT F_API FMOD_DSP_GetMeteringEnabled (FMOD_DSP *dsp, FMOD_BOOL *inputEnabled, FMOD_BOOL *outputEnabled); -FMOD_RESULT F_API FMOD_DSP_GetMeteringInfo (FMOD_DSP *dsp, FMOD_DSP_METERING_INFO *inputInfo, FMOD_DSP_METERING_INFO *outputInfo); -FMOD_RESULT F_API FMOD_DSP_GetCPUUsage (FMOD_DSP *dsp, unsigned int *exclusive, unsigned int *inclusive); - -/* - 'DSPConnection' API -*/ - -FMOD_RESULT F_API FMOD_DSPConnection_GetInput (FMOD_DSPCONNECTION *dspconnection, FMOD_DSP **input); -FMOD_RESULT F_API FMOD_DSPConnection_GetOutput (FMOD_DSPCONNECTION *dspconnection, FMOD_DSP **output); -FMOD_RESULT F_API FMOD_DSPConnection_SetMix (FMOD_DSPCONNECTION *dspconnection, float volume); -FMOD_RESULT F_API FMOD_DSPConnection_GetMix (FMOD_DSPCONNECTION *dspconnection, float *volume); -FMOD_RESULT F_API FMOD_DSPConnection_SetMixMatrix (FMOD_DSPCONNECTION *dspconnection, float *matrix, int outchannels, int inchannels, int inchannel_hop); -FMOD_RESULT F_API FMOD_DSPConnection_GetMixMatrix (FMOD_DSPCONNECTION *dspconnection, float *matrix, int *outchannels, int *inchannels, int inchannel_hop); -FMOD_RESULT F_API FMOD_DSPConnection_GetType (FMOD_DSPCONNECTION *dspconnection, FMOD_DSPCONNECTION_TYPE *type); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_DSPConnection_SetUserData (FMOD_DSPCONNECTION *dspconnection, void *userdata); -FMOD_RESULT F_API FMOD_DSPConnection_GetUserData (FMOD_DSPCONNECTION *dspconnection, void **userdata); - -/* - 'Geometry' API -*/ - -FMOD_RESULT F_API FMOD_Geometry_Release (FMOD_GEOMETRY *geometry); - -/* - Polygon manipulation. -*/ - -FMOD_RESULT F_API FMOD_Geometry_AddPolygon (FMOD_GEOMETRY *geometry, float directocclusion, float reverbocclusion, FMOD_BOOL doublesided, int numvertices, const FMOD_VECTOR *vertices, int *polygonindex); -FMOD_RESULT F_API FMOD_Geometry_GetNumPolygons (FMOD_GEOMETRY *geometry, int *numpolygons); -FMOD_RESULT F_API FMOD_Geometry_GetMaxPolygons (FMOD_GEOMETRY *geometry, int *maxpolygons, int *maxvertices); -FMOD_RESULT F_API FMOD_Geometry_GetPolygonNumVertices (FMOD_GEOMETRY *geometry, int index, int *numvertices); -FMOD_RESULT F_API FMOD_Geometry_SetPolygonVertex (FMOD_GEOMETRY *geometry, int index, int vertexindex, const FMOD_VECTOR *vertex); -FMOD_RESULT F_API FMOD_Geometry_GetPolygonVertex (FMOD_GEOMETRY *geometry, int index, int vertexindex, FMOD_VECTOR *vertex); -FMOD_RESULT F_API FMOD_Geometry_SetPolygonAttributes (FMOD_GEOMETRY *geometry, int index, float directocclusion, float reverbocclusion, FMOD_BOOL doublesided); -FMOD_RESULT F_API FMOD_Geometry_GetPolygonAttributes (FMOD_GEOMETRY *geometry, int index, float *directocclusion, float *reverbocclusion, FMOD_BOOL *doublesided); - -/* - Object manipulation. -*/ - -FMOD_RESULT F_API FMOD_Geometry_SetActive (FMOD_GEOMETRY *geometry, FMOD_BOOL active); -FMOD_RESULT F_API FMOD_Geometry_GetActive (FMOD_GEOMETRY *geometry, FMOD_BOOL *active); -FMOD_RESULT F_API FMOD_Geometry_SetRotation (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); -FMOD_RESULT F_API FMOD_Geometry_GetRotation (FMOD_GEOMETRY *geometry, FMOD_VECTOR *forward, FMOD_VECTOR *up); -FMOD_RESULT F_API FMOD_Geometry_SetPosition (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *position); -FMOD_RESULT F_API FMOD_Geometry_GetPosition (FMOD_GEOMETRY *geometry, FMOD_VECTOR *position); -FMOD_RESULT F_API FMOD_Geometry_SetScale (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *scale); -FMOD_RESULT F_API FMOD_Geometry_GetScale (FMOD_GEOMETRY *geometry, FMOD_VECTOR *scale); -FMOD_RESULT F_API FMOD_Geometry_Save (FMOD_GEOMETRY *geometry, void *data, int *datasize); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_Geometry_SetUserData (FMOD_GEOMETRY *geometry, void *userdata); -FMOD_RESULT F_API FMOD_Geometry_GetUserData (FMOD_GEOMETRY *geometry, void **userdata); - -/* - 'Reverb3D' API -*/ - -FMOD_RESULT F_API FMOD_Reverb3D_Release (FMOD_REVERB3D *reverb3d); - -/* - Reverb manipulation. -*/ - -FMOD_RESULT F_API FMOD_Reverb3D_Set3DAttributes (FMOD_REVERB3D *reverb3d, const FMOD_VECTOR *position, float mindistance, float maxdistance); -FMOD_RESULT F_API FMOD_Reverb3D_Get3DAttributes (FMOD_REVERB3D *reverb3d, FMOD_VECTOR *position, float *mindistance, float *maxdistance); -FMOD_RESULT F_API FMOD_Reverb3D_SetProperties (FMOD_REVERB3D *reverb3d, const FMOD_REVERB_PROPERTIES *properties); -FMOD_RESULT F_API FMOD_Reverb3D_GetProperties (FMOD_REVERB3D *reverb3d, FMOD_REVERB_PROPERTIES *properties); -FMOD_RESULT F_API FMOD_Reverb3D_SetActive (FMOD_REVERB3D *reverb3d, FMOD_BOOL active); -FMOD_RESULT F_API FMOD_Reverb3D_GetActive (FMOD_REVERB3D *reverb3d, FMOD_BOOL *active); - -/* - Userdata set/get. -*/ - -FMOD_RESULT F_API FMOD_Reverb3D_SetUserData (FMOD_REVERB3D *reverb3d, void *userdata); -FMOD_RESULT F_API FMOD_Reverb3D_GetUserData (FMOD_REVERB3D *reverb3d, void **userdata); - -#ifdef __cplusplus -} -#endif - -#endif /* _FMOD_H */ diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod.hpp b/Toshi/vendor/fmod/include/fmod/studio/fmod.hpp deleted file mode 100644 index f57c1c6..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod.hpp +++ /dev/null @@ -1,606 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - C++ header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header in conjunction with fmod_common.h (which contains all the constants / */ -/* callbacks) to develop using the C++ language. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api.html */ -/* ======================================================================================== */ -#ifndef _FMOD_HPP -#define _FMOD_HPP - -#include "fmod_common.h" -#include "fmod.h" - -/* - FMOD Namespace -*/ -namespace FMOD -{ - class System; - class Sound; - class ChannelControl; - class Channel; - class ChannelGroup; - class SoundGroup; - class DSP; - class DSPConnection; - class Geometry; - class Reverb3D; - - /* - FMOD global system functions (optional). - */ - inline FMOD_RESULT Memory_Initialize (void *poolmem, int poollen, FMOD_MEMORY_ALLOC_CALLBACK useralloc, FMOD_MEMORY_REALLOC_CALLBACK userrealloc, FMOD_MEMORY_FREE_CALLBACK userfree, FMOD_MEMORY_TYPE memtypeflags = FMOD_MEMORY_ALL) { return FMOD_Memory_Initialize(poolmem, poollen, useralloc, userrealloc, userfree, memtypeflags); } - inline FMOD_RESULT Memory_GetStats (int *currentalloced, int *maxalloced, bool blocking = true) { return FMOD_Memory_GetStats(currentalloced, maxalloced, blocking); } - inline FMOD_RESULT Debug_Initialize (FMOD_DEBUG_FLAGS flags, FMOD_DEBUG_MODE mode = FMOD_DEBUG_MODE_TTY, FMOD_DEBUG_CALLBACK callback = 0, const char *filename = 0) { return FMOD_Debug_Initialize(flags, mode, callback, filename); } - inline FMOD_RESULT File_SetDiskBusy (int busy) { return FMOD_File_SetDiskBusy(busy); } - inline FMOD_RESULT File_GetDiskBusy (int *busy) { return FMOD_File_GetDiskBusy(busy); } - inline FMOD_RESULT Thread_SetAttributes (FMOD_THREAD_TYPE type, FMOD_THREAD_AFFINITY affinity = FMOD_THREAD_AFFINITY_GROUP_DEFAULT, FMOD_THREAD_PRIORITY priority = FMOD_THREAD_PRIORITY_DEFAULT, FMOD_THREAD_STACK_SIZE stacksize = FMOD_THREAD_STACK_SIZE_DEFAULT) { return FMOD_Thread_SetAttributes(type, affinity, priority, stacksize); } - - /* - FMOD System factory functions. - */ - inline FMOD_RESULT System_Create (System **system, unsigned int headerversion = FMOD_VERSION) { return FMOD_System_Create((FMOD_SYSTEM **)system, headerversion); } - - /* - 'System' API - */ - class System - { - private: - - // Constructor made private so user cannot statically instance a System class. System_Create must be used. - System(); - System(const System &); - - public: - - FMOD_RESULT F_API release (); - - // Setup functions. - FMOD_RESULT F_API setOutput (FMOD_OUTPUTTYPE output); - FMOD_RESULT F_API getOutput (FMOD_OUTPUTTYPE *output); - FMOD_RESULT F_API getNumDrivers (int *numdrivers); - FMOD_RESULT F_API getDriverInfo (int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels); - FMOD_RESULT F_API setDriver (int driver); - FMOD_RESULT F_API getDriver (int *driver); - FMOD_RESULT F_API setSoftwareChannels (int numsoftwarechannels); - FMOD_RESULT F_API getSoftwareChannels (int *numsoftwarechannels); - FMOD_RESULT F_API setSoftwareFormat (int samplerate, FMOD_SPEAKERMODE speakermode, int numrawspeakers); - FMOD_RESULT F_API getSoftwareFormat (int *samplerate, FMOD_SPEAKERMODE *speakermode, int *numrawspeakers); - FMOD_RESULT F_API setDSPBufferSize (unsigned int bufferlength, int numbuffers); - FMOD_RESULT F_API getDSPBufferSize (unsigned int *bufferlength, int *numbuffers); - FMOD_RESULT F_API setFileSystem (FMOD_FILE_OPEN_CALLBACK useropen, FMOD_FILE_CLOSE_CALLBACK userclose, FMOD_FILE_READ_CALLBACK userread, FMOD_FILE_SEEK_CALLBACK userseek, FMOD_FILE_ASYNCREAD_CALLBACK userasyncread, FMOD_FILE_ASYNCCANCEL_CALLBACK userasynccancel, int blockalign); - FMOD_RESULT F_API attachFileSystem (FMOD_FILE_OPEN_CALLBACK useropen, FMOD_FILE_CLOSE_CALLBACK userclose, FMOD_FILE_READ_CALLBACK userread, FMOD_FILE_SEEK_CALLBACK userseek); - FMOD_RESULT F_API setAdvancedSettings (FMOD_ADVANCEDSETTINGS *settings); - FMOD_RESULT F_API getAdvancedSettings (FMOD_ADVANCEDSETTINGS *settings); - FMOD_RESULT F_API setCallback (FMOD_SYSTEM_CALLBACK callback, FMOD_SYSTEM_CALLBACK_TYPE callbackmask = FMOD_SYSTEM_CALLBACK_ALL); - - // Plug-in support. - FMOD_RESULT F_API setPluginPath (const char *path); - FMOD_RESULT F_API loadPlugin (const char *filename, unsigned int *handle, unsigned int priority = 0); - FMOD_RESULT F_API unloadPlugin (unsigned int handle); - FMOD_RESULT F_API getNumNestedPlugins (unsigned int handle, int *count); - FMOD_RESULT F_API getNestedPlugin (unsigned int handle, int index, unsigned int *nestedhandle); - FMOD_RESULT F_API getNumPlugins (FMOD_PLUGINTYPE plugintype, int *numplugins); - FMOD_RESULT F_API getPluginHandle (FMOD_PLUGINTYPE plugintype, int index, unsigned int *handle); - FMOD_RESULT F_API getPluginInfo (unsigned int handle, FMOD_PLUGINTYPE *plugintype, char *name, int namelen, unsigned int *version); - FMOD_RESULT F_API setOutputByPlugin (unsigned int handle); - FMOD_RESULT F_API getOutputByPlugin (unsigned int *handle); - FMOD_RESULT F_API createDSPByPlugin (unsigned int handle, DSP **dsp); - FMOD_RESULT F_API getDSPInfoByPlugin (unsigned int handle, const FMOD_DSP_DESCRIPTION **description); - FMOD_RESULT F_API registerCodec (FMOD_CODEC_DESCRIPTION *description, unsigned int *handle, unsigned int priority = 0); - FMOD_RESULT F_API registerDSP (const FMOD_DSP_DESCRIPTION *description, unsigned int *handle); - FMOD_RESULT F_API registerOutput (const FMOD_OUTPUT_DESCRIPTION *description, unsigned int *handle); - - // Init/Close. - FMOD_RESULT F_API init (int maxchannels, FMOD_INITFLAGS flags, void *extradriverdata); - FMOD_RESULT F_API close (); - - // General post-init system functions. - FMOD_RESULT F_API update (); /* IMPORTANT! CALL THIS ONCE PER FRAME! */ - - FMOD_RESULT F_API setSpeakerPosition (FMOD_SPEAKER speaker, float x, float y, bool active); - FMOD_RESULT F_API getSpeakerPosition (FMOD_SPEAKER speaker, float *x, float *y, bool *active); - FMOD_RESULT F_API setStreamBufferSize (unsigned int filebuffersize, FMOD_TIMEUNIT filebuffersizetype); - FMOD_RESULT F_API getStreamBufferSize (unsigned int *filebuffersize, FMOD_TIMEUNIT *filebuffersizetype); - FMOD_RESULT F_API set3DSettings (float dopplerscale, float distancefactor, float rolloffscale); - FMOD_RESULT F_API get3DSettings (float *dopplerscale, float *distancefactor, float *rolloffscale); - FMOD_RESULT F_API set3DNumListeners (int numlisteners); - FMOD_RESULT F_API get3DNumListeners (int *numlisteners); - FMOD_RESULT F_API set3DListenerAttributes (int listener, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); - FMOD_RESULT F_API get3DListenerAttributes (int listener, FMOD_VECTOR *pos, FMOD_VECTOR *vel, FMOD_VECTOR *forward, FMOD_VECTOR *up); - FMOD_RESULT F_API set3DRolloffCallback (FMOD_3D_ROLLOFF_CALLBACK callback); - FMOD_RESULT F_API mixerSuspend (); - FMOD_RESULT F_API mixerResume (); - FMOD_RESULT F_API getDefaultMixMatrix (FMOD_SPEAKERMODE sourcespeakermode, FMOD_SPEAKERMODE targetspeakermode, float *matrix, int matrixhop); - FMOD_RESULT F_API getSpeakerModeChannels (FMOD_SPEAKERMODE mode, int *channels); - - // System information functions. - FMOD_RESULT F_API getVersion (unsigned int *version); - FMOD_RESULT F_API getOutputHandle (void **handle); - FMOD_RESULT F_API getChannelsPlaying (int *channels, int *realchannels = 0); - FMOD_RESULT F_API getCPUUsage (FMOD_CPU_USAGE *usage); - FMOD_RESULT F_API getFileUsage (long long *sampleBytesRead, long long *streamBytesRead, long long *otherBytesRead); - - // Sound/DSP/Channel/FX creation and retrieval. - FMOD_RESULT F_API createSound (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound); - FMOD_RESULT F_API createStream (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound); - FMOD_RESULT F_API createDSP (const FMOD_DSP_DESCRIPTION *description, DSP **dsp); - FMOD_RESULT F_API createDSPByType (FMOD_DSP_TYPE type, DSP **dsp); - FMOD_RESULT F_API createChannelGroup (const char *name, ChannelGroup **channelgroup); - FMOD_RESULT F_API createSoundGroup (const char *name, SoundGroup **soundgroup); - FMOD_RESULT F_API createReverb3D (Reverb3D **reverb); - - FMOD_RESULT F_API playSound (Sound *sound, ChannelGroup *channelgroup, bool paused, Channel **channel); - FMOD_RESULT F_API playDSP (DSP *dsp, ChannelGroup *channelgroup, bool paused, Channel **channel); - FMOD_RESULT F_API getChannel (int channelid, Channel **channel); - FMOD_RESULT F_API getDSPInfoByType (FMOD_DSP_TYPE type, const FMOD_DSP_DESCRIPTION **description); - FMOD_RESULT F_API getMasterChannelGroup (ChannelGroup **channelgroup); - FMOD_RESULT F_API getMasterSoundGroup (SoundGroup **soundgroup); - - // Routing to ports. - FMOD_RESULT F_API attachChannelGroupToPort (FMOD_PORT_TYPE portType, FMOD_PORT_INDEX portIndex, ChannelGroup *channelgroup, bool passThru = false); - FMOD_RESULT F_API detachChannelGroupFromPort (ChannelGroup *channelgroup); - - // Reverb API. - FMOD_RESULT F_API setReverbProperties (int instance, const FMOD_REVERB_PROPERTIES *prop); - FMOD_RESULT F_API getReverbProperties (int instance, FMOD_REVERB_PROPERTIES *prop); - - // System level DSP functionality. - FMOD_RESULT F_API lockDSP (); - FMOD_RESULT F_API unlockDSP (); - - // Recording API. - FMOD_RESULT F_API getRecordNumDrivers (int *numdrivers, int *numconnected); - FMOD_RESULT F_API getRecordDriverInfo (int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels, FMOD_DRIVER_STATE *state); - FMOD_RESULT F_API getRecordPosition (int id, unsigned int *position); - FMOD_RESULT F_API recordStart (int id, Sound *sound, bool loop); - FMOD_RESULT F_API recordStop (int id); - FMOD_RESULT F_API isRecording (int id, bool *recording); - - // Geometry API. - FMOD_RESULT F_API createGeometry (int maxpolygons, int maxvertices, Geometry **geometry); - FMOD_RESULT F_API setGeometrySettings (float maxworldsize); - FMOD_RESULT F_API getGeometrySettings (float *maxworldsize); - FMOD_RESULT F_API loadGeometry (const void *data, int datasize, Geometry **geometry); - FMOD_RESULT F_API getGeometryOcclusion (const FMOD_VECTOR *listener, const FMOD_VECTOR *source, float *direct, float *reverb); - - // Network functions. - FMOD_RESULT F_API setNetworkProxy (const char *proxy); - FMOD_RESULT F_API getNetworkProxy (char *proxy, int proxylen); - FMOD_RESULT F_API setNetworkTimeout (int timeout); - FMOD_RESULT F_API getNetworkTimeout (int *timeout); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - /* - 'Sound' API - */ - class Sound - { - private: - - // Constructor made private so user cannot statically instance a Sound class. Appropriate Sound creation or retrieval function must be used. - Sound(); - Sound(const Sound &); - - public: - - FMOD_RESULT F_API release (); - FMOD_RESULT F_API getSystemObject (System **system); - - // Standard sound manipulation functions. - FMOD_RESULT F_API lock (unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); - FMOD_RESULT F_API unlock (void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); - FMOD_RESULT F_API setDefaults (float frequency, int priority); - FMOD_RESULT F_API getDefaults (float *frequency, int *priority); - FMOD_RESULT F_API set3DMinMaxDistance (float min, float max); - FMOD_RESULT F_API get3DMinMaxDistance (float *min, float *max); - FMOD_RESULT F_API set3DConeSettings (float insideconeangle, float outsideconeangle, float outsidevolume); - FMOD_RESULT F_API get3DConeSettings (float *insideconeangle, float *outsideconeangle, float *outsidevolume); - FMOD_RESULT F_API set3DCustomRolloff (FMOD_VECTOR *points, int numpoints); - FMOD_RESULT F_API get3DCustomRolloff (FMOD_VECTOR **points, int *numpoints); - FMOD_RESULT F_API getSubSound (int index, Sound **subsound); - FMOD_RESULT F_API getSubSoundParent (Sound **parentsound); - FMOD_RESULT F_API getName (char *name, int namelen); - FMOD_RESULT F_API getLength (unsigned int *length, FMOD_TIMEUNIT lengthtype); - FMOD_RESULT F_API getFormat (FMOD_SOUND_TYPE *type, FMOD_SOUND_FORMAT *format, int *channels, int *bits); - FMOD_RESULT F_API getNumSubSounds (int *numsubsounds); - FMOD_RESULT F_API getNumTags (int *numtags, int *numtagsupdated); - FMOD_RESULT F_API getTag (const char *name, int index, FMOD_TAG *tag); - FMOD_RESULT F_API getOpenState (FMOD_OPENSTATE *openstate, unsigned int *percentbuffered, bool *starving, bool *diskbusy); - FMOD_RESULT F_API readData (void *buffer, unsigned int length, unsigned int *read); - FMOD_RESULT F_API seekData (unsigned int pcm); - - FMOD_RESULT F_API setSoundGroup (SoundGroup *soundgroup); - FMOD_RESULT F_API getSoundGroup (SoundGroup **soundgroup); - - // Synchronization point API. These points can come from markers embedded in wav files, and can also generate channel callbacks. - FMOD_RESULT F_API getNumSyncPoints (int *numsyncpoints); - FMOD_RESULT F_API getSyncPoint (int index, FMOD_SYNCPOINT **point); - FMOD_RESULT F_API getSyncPointInfo (FMOD_SYNCPOINT *point, char *name, int namelen, unsigned int *offset, FMOD_TIMEUNIT offsettype); - FMOD_RESULT F_API addSyncPoint (unsigned int offset, FMOD_TIMEUNIT offsettype, const char *name, FMOD_SYNCPOINT **point); - FMOD_RESULT F_API deleteSyncPoint (FMOD_SYNCPOINT *point); - - // Functions also in Channel class but here they are the 'default' to save having to change it in Channel all the time. - FMOD_RESULT F_API setMode (FMOD_MODE mode); - FMOD_RESULT F_API getMode (FMOD_MODE *mode); - FMOD_RESULT F_API setLoopCount (int loopcount); - FMOD_RESULT F_API getLoopCount (int *loopcount); - FMOD_RESULT F_API setLoopPoints (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); - FMOD_RESULT F_API getLoopPoints (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); - - // For MOD/S3M/XM/IT/MID sequenced formats only. - FMOD_RESULT F_API getMusicNumChannels (int *numchannels); - FMOD_RESULT F_API setMusicChannelVolume (int channel, float volume); - FMOD_RESULT F_API getMusicChannelVolume (int channel, float *volume); - FMOD_RESULT F_API setMusicSpeed (float speed); - FMOD_RESULT F_API getMusicSpeed (float *speed); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - - /* - 'ChannelControl API'. This is a base class for Channel and ChannelGroup so they can share the same functionality. This cannot be used or instansiated explicitly. - */ - class ChannelControl - { - private: - - // Constructor made private so user cannot statically instance a Control class. - ChannelControl(); - ChannelControl(const ChannelControl &); - - public: - - FMOD_RESULT F_API getSystemObject (System **system); - - // General control functionality for Channels and ChannelGroups. - FMOD_RESULT F_API stop (); - FMOD_RESULT F_API setPaused (bool paused); - FMOD_RESULT F_API getPaused (bool *paused); - FMOD_RESULT F_API setVolume (float volume); - FMOD_RESULT F_API getVolume (float *volume); - FMOD_RESULT F_API setVolumeRamp (bool ramp); - FMOD_RESULT F_API getVolumeRamp (bool *ramp); - FMOD_RESULT F_API getAudibility (float *audibility); - FMOD_RESULT F_API setPitch (float pitch); - FMOD_RESULT F_API getPitch (float *pitch); - FMOD_RESULT F_API setMute (bool mute); - FMOD_RESULT F_API getMute (bool *mute); - FMOD_RESULT F_API setReverbProperties (int instance, float wet); - FMOD_RESULT F_API getReverbProperties (int instance, float *wet); - FMOD_RESULT F_API setLowPassGain (float gain); - FMOD_RESULT F_API getLowPassGain (float *gain); - FMOD_RESULT F_API setMode (FMOD_MODE mode); - FMOD_RESULT F_API getMode (FMOD_MODE *mode); - FMOD_RESULT F_API setCallback (FMOD_CHANNELCONTROL_CALLBACK callback); - FMOD_RESULT F_API isPlaying (bool *isplaying); - - // Panning and level adjustment. - // Note all 'set' functions alter a final matrix, this is why the only get function is getMixMatrix, to avoid other get functions returning incorrect/obsolete values. - FMOD_RESULT F_API setPan (float pan); - FMOD_RESULT F_API setMixLevelsOutput (float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); - FMOD_RESULT F_API setMixLevelsInput (float *levels, int numlevels); - FMOD_RESULT F_API setMixMatrix (float *matrix, int outchannels, int inchannels, int inchannel_hop = 0); - FMOD_RESULT F_API getMixMatrix (float *matrix, int *outchannels, int *inchannels, int inchannel_hop = 0); - - // Clock based functionality. - FMOD_RESULT F_API getDSPClock (unsigned long long *dspclock, unsigned long long *parentclock); - FMOD_RESULT F_API setDelay (unsigned long long dspclock_start, unsigned long long dspclock_end, bool stopchannels = true); - FMOD_RESULT F_API getDelay (unsigned long long *dspclock_start, unsigned long long *dspclock_end, bool *stopchannels = 0); - FMOD_RESULT F_API addFadePoint (unsigned long long dspclock, float volume); - FMOD_RESULT F_API setFadePointRamp (unsigned long long dspclock, float volume); - FMOD_RESULT F_API removeFadePoints (unsigned long long dspclock_start, unsigned long long dspclock_end); - FMOD_RESULT F_API getFadePoints (unsigned int *numpoints, unsigned long long *point_dspclock, float *point_volume); - - // DSP effects. - FMOD_RESULT F_API getDSP (int index, DSP **dsp); - FMOD_RESULT F_API addDSP (int index, DSP *dsp); - FMOD_RESULT F_API removeDSP (DSP *dsp); - FMOD_RESULT F_API getNumDSPs (int *numdsps); - FMOD_RESULT F_API setDSPIndex (DSP *dsp, int index); - FMOD_RESULT F_API getDSPIndex (DSP *dsp, int *index); - - // 3D functionality. - FMOD_RESULT F_API set3DAttributes (const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); - FMOD_RESULT F_API get3DAttributes (FMOD_VECTOR *pos, FMOD_VECTOR *vel); - FMOD_RESULT F_API set3DMinMaxDistance (float mindistance, float maxdistance); - FMOD_RESULT F_API get3DMinMaxDistance (float *mindistance, float *maxdistance); - FMOD_RESULT F_API set3DConeSettings (float insideconeangle, float outsideconeangle, float outsidevolume); - FMOD_RESULT F_API get3DConeSettings (float *insideconeangle, float *outsideconeangle, float *outsidevolume); - FMOD_RESULT F_API set3DConeOrientation (FMOD_VECTOR *orientation); - FMOD_RESULT F_API get3DConeOrientation (FMOD_VECTOR *orientation); - FMOD_RESULT F_API set3DCustomRolloff (FMOD_VECTOR *points, int numpoints); - FMOD_RESULT F_API get3DCustomRolloff (FMOD_VECTOR **points, int *numpoints); - FMOD_RESULT F_API set3DOcclusion (float directocclusion, float reverbocclusion); - FMOD_RESULT F_API get3DOcclusion (float *directocclusion, float *reverbocclusion); - FMOD_RESULT F_API set3DSpread (float angle); - FMOD_RESULT F_API get3DSpread (float *angle); - FMOD_RESULT F_API set3DLevel (float level); - FMOD_RESULT F_API get3DLevel (float *level); - FMOD_RESULT F_API set3DDopplerLevel (float level); - FMOD_RESULT F_API get3DDopplerLevel (float *level); - FMOD_RESULT F_API set3DDistanceFilter (bool custom, float customLevel, float centerFreq); - FMOD_RESULT F_API get3DDistanceFilter (bool *custom, float *customLevel, float *centerFreq); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - /* - 'Channel' API. - */ - class Channel : public ChannelControl - { - private: - - // Constructor made private so user cannot statically instance a Channel class. Appropriate Channel creation or retrieval function must be used. - Channel(); - Channel(const Channel &); - - public: - - // Channel specific control functionality. - FMOD_RESULT F_API setFrequency (float frequency); - FMOD_RESULT F_API getFrequency (float *frequency); - FMOD_RESULT F_API setPriority (int priority); - FMOD_RESULT F_API getPriority (int *priority); - FMOD_RESULT F_API setPosition (unsigned int position, FMOD_TIMEUNIT postype); - FMOD_RESULT F_API getPosition (unsigned int *position, FMOD_TIMEUNIT postype); - FMOD_RESULT F_API setChannelGroup (ChannelGroup *channelgroup); - FMOD_RESULT F_API getChannelGroup (ChannelGroup **channelgroup); - FMOD_RESULT F_API setLoopCount (int loopcount); - FMOD_RESULT F_API getLoopCount (int *loopcount); - FMOD_RESULT F_API setLoopPoints (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); - FMOD_RESULT F_API getLoopPoints (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); - - // Information only functions. - FMOD_RESULT F_API isVirtual (bool *isvirtual); - FMOD_RESULT F_API getCurrentSound (Sound **sound); - FMOD_RESULT F_API getIndex (int *index); - }; - - /* - 'ChannelGroup' API - */ - class ChannelGroup : public ChannelControl - { - private: - - // Constructor made private so user cannot statically instance a ChannelGroup class. Appropriate ChannelGroup creation or retrieval function must be used. - ChannelGroup(); - ChannelGroup(const ChannelGroup &); - - public: - - FMOD_RESULT F_API release (); - - // Nested channel groups. - FMOD_RESULT F_API addGroup (ChannelGroup *group, bool propagatedspclock = true, DSPConnection **connection = 0); - FMOD_RESULT F_API getNumGroups (int *numgroups); - FMOD_RESULT F_API getGroup (int index, ChannelGroup **group); - FMOD_RESULT F_API getParentGroup (ChannelGroup **group); - - // Information only functions. - FMOD_RESULT F_API getName (char *name, int namelen); - FMOD_RESULT F_API getNumChannels (int *numchannels); - FMOD_RESULT F_API getChannel (int index, Channel **channel); - }; - - /* - 'SoundGroup' API - */ - class SoundGroup - { - private: - - // Constructor made private so user cannot statically instance a SoundGroup class. Appropriate SoundGroup creation or retrieval function must be used. - SoundGroup(); - SoundGroup(const SoundGroup &); - - public: - - FMOD_RESULT F_API release (); - FMOD_RESULT F_API getSystemObject (System **system); - - // SoundGroup control functions. - FMOD_RESULT F_API setMaxAudible (int maxaudible); - FMOD_RESULT F_API getMaxAudible (int *maxaudible); - FMOD_RESULT F_API setMaxAudibleBehavior (FMOD_SOUNDGROUP_BEHAVIOR behavior); - FMOD_RESULT F_API getMaxAudibleBehavior (FMOD_SOUNDGROUP_BEHAVIOR *behavior); - FMOD_RESULT F_API setMuteFadeSpeed (float speed); - FMOD_RESULT F_API getMuteFadeSpeed (float *speed); - FMOD_RESULT F_API setVolume (float volume); - FMOD_RESULT F_API getVolume (float *volume); - FMOD_RESULT F_API stop (); - - // Information only functions. - FMOD_RESULT F_API getName (char *name, int namelen); - FMOD_RESULT F_API getNumSounds (int *numsounds); - FMOD_RESULT F_API getSound (int index, Sound **sound); - FMOD_RESULT F_API getNumPlaying (int *numplaying); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - /* - 'DSP' API - */ - class DSP - { - private: - - // Constructor made private so user cannot statically instance a DSP class. Appropriate DSP creation or retrieval function must be used. - DSP(); - DSP(const DSP &); - - public: - - FMOD_RESULT F_API release (); - FMOD_RESULT F_API getSystemObject (System **system); - - // Connection / disconnection / input and output enumeration. - FMOD_RESULT F_API addInput (DSP *input, DSPConnection **connection = 0, FMOD_DSPCONNECTION_TYPE type = FMOD_DSPCONNECTION_TYPE_STANDARD); - FMOD_RESULT F_API disconnectFrom (DSP *target, DSPConnection *connection = 0); - FMOD_RESULT F_API disconnectAll (bool inputs, bool outputs); - FMOD_RESULT F_API getNumInputs (int *numinputs); - FMOD_RESULT F_API getNumOutputs (int *numoutputs); - FMOD_RESULT F_API getInput (int index, DSP **input, DSPConnection **inputconnection); - FMOD_RESULT F_API getOutput (int index, DSP **output, DSPConnection **outputconnection); - - // DSP unit control. - FMOD_RESULT F_API setActive (bool active); - FMOD_RESULT F_API getActive (bool *active); - FMOD_RESULT F_API setBypass (bool bypass); - FMOD_RESULT F_API getBypass (bool *bypass); - FMOD_RESULT F_API setWetDryMix (float prewet, float postwet, float dry); - FMOD_RESULT F_API getWetDryMix (float *prewet, float *postwet, float *dry); - FMOD_RESULT F_API setChannelFormat (FMOD_CHANNELMASK channelmask, int numchannels, FMOD_SPEAKERMODE source_speakermode); - FMOD_RESULT F_API getChannelFormat (FMOD_CHANNELMASK *channelmask, int *numchannels, FMOD_SPEAKERMODE *source_speakermode); - FMOD_RESULT F_API getOutputChannelFormat (FMOD_CHANNELMASK inmask, int inchannels, FMOD_SPEAKERMODE inspeakermode, FMOD_CHANNELMASK *outmask, int *outchannels, FMOD_SPEAKERMODE *outspeakermode); - FMOD_RESULT F_API reset (); - - // DSP parameter control. - FMOD_RESULT F_API setParameterFloat (int index, float value); - FMOD_RESULT F_API setParameterInt (int index, int value); - FMOD_RESULT F_API setParameterBool (int index, bool value); - FMOD_RESULT F_API setParameterData (int index, void *data, unsigned int length); - FMOD_RESULT F_API getParameterFloat (int index, float *value, char *valuestr, int valuestrlen); - FMOD_RESULT F_API getParameterInt (int index, int *value, char *valuestr, int valuestrlen); - FMOD_RESULT F_API getParameterBool (int index, bool *value, char *valuestr, int valuestrlen); - FMOD_RESULT F_API getParameterData (int index, void **data, unsigned int *length, char *valuestr, int valuestrlen); - FMOD_RESULT F_API getNumParameters (int *numparams); - FMOD_RESULT F_API getParameterInfo (int index, FMOD_DSP_PARAMETER_DESC **desc); - FMOD_RESULT F_API getDataParameterIndex (int datatype, int *index); - FMOD_RESULT F_API showConfigDialog (void *hwnd, bool show); - - // DSP attributes. - FMOD_RESULT F_API getInfo (char *name, unsigned int *version, int *channels, int *configwidth, int *configheight); - FMOD_RESULT F_API getType (FMOD_DSP_TYPE *type); - FMOD_RESULT F_API getIdle (bool *idle); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - - // Metering. - FMOD_RESULT F_API setMeteringEnabled (bool inputEnabled, bool outputEnabled); - FMOD_RESULT F_API getMeteringEnabled (bool *inputEnabled, bool *outputEnabled); - FMOD_RESULT F_API getMeteringInfo (FMOD_DSP_METERING_INFO *inputInfo, FMOD_DSP_METERING_INFO *outputInfo); - FMOD_RESULT F_API getCPUUsage (unsigned int *exclusive, unsigned int *inclusive); - }; - - - /* - 'DSPConnection' API - */ - class DSPConnection - { - private: - - // Constructor made private so user cannot statically instance a DSPConnection class. Appropriate DSPConnection creation or retrieval function must be used. - DSPConnection(); - DSPConnection(const DSPConnection &); - - public: - - FMOD_RESULT F_API getInput (DSP **input); - FMOD_RESULT F_API getOutput (DSP **output); - FMOD_RESULT F_API setMix (float volume); - FMOD_RESULT F_API getMix (float *volume); - FMOD_RESULT F_API setMixMatrix (float *matrix, int outchannels, int inchannels, int inchannel_hop = 0); - FMOD_RESULT F_API getMixMatrix (float *matrix, int *outchannels, int *inchannels, int inchannel_hop = 0); - FMOD_RESULT F_API getType (FMOD_DSPCONNECTION_TYPE *type); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - - /* - 'Geometry' API - */ - class Geometry - { - private: - - // Constructor made private so user cannot statically instance a Geometry class. Appropriate Geometry creation or retrieval function must be used. - Geometry(); - Geometry(const Geometry &); - - public: - - FMOD_RESULT F_API release (); - - // Polygon manipulation. - FMOD_RESULT F_API addPolygon (float directocclusion, float reverbocclusion, bool doublesided, int numvertices, const FMOD_VECTOR *vertices, int *polygonindex); - FMOD_RESULT F_API getNumPolygons (int *numpolygons); - FMOD_RESULT F_API getMaxPolygons (int *maxpolygons, int *maxvertices); - FMOD_RESULT F_API getPolygonNumVertices (int index, int *numvertices); - FMOD_RESULT F_API setPolygonVertex (int index, int vertexindex, const FMOD_VECTOR *vertex); - FMOD_RESULT F_API getPolygonVertex (int index, int vertexindex, FMOD_VECTOR *vertex); - FMOD_RESULT F_API setPolygonAttributes (int index, float directocclusion, float reverbocclusion, bool doublesided); - FMOD_RESULT F_API getPolygonAttributes (int index, float *directocclusion, float *reverbocclusion, bool *doublesided); - - // Object manipulation. - FMOD_RESULT F_API setActive (bool active); - FMOD_RESULT F_API getActive (bool *active); - FMOD_RESULT F_API setRotation (const FMOD_VECTOR *forward, const FMOD_VECTOR *up); - FMOD_RESULT F_API getRotation (FMOD_VECTOR *forward, FMOD_VECTOR *up); - FMOD_RESULT F_API setPosition (const FMOD_VECTOR *position); - FMOD_RESULT F_API getPosition (FMOD_VECTOR *position); - FMOD_RESULT F_API setScale (const FMOD_VECTOR *scale); - FMOD_RESULT F_API getScale (FMOD_VECTOR *scale); - FMOD_RESULT F_API save (void *data, int *datasize); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; - - - /* - 'Reverb' API - */ - class Reverb3D - { - private: - - // Constructor made private so user cannot statically instance a Reverb3D class. Appropriate Reverb creation or retrieval function must be used. - Reverb3D(); - Reverb3D(const Reverb3D &); - - public: - - FMOD_RESULT F_API release (); - - // Reverb manipulation. - FMOD_RESULT F_API set3DAttributes (const FMOD_VECTOR *position, float mindistance, float maxdistance); - FMOD_RESULT F_API get3DAttributes (FMOD_VECTOR *position, float *mindistance,float *maxdistance); - FMOD_RESULT F_API setProperties (const FMOD_REVERB_PROPERTIES *properties); - FMOD_RESULT F_API getProperties (FMOD_REVERB_PROPERTIES *properties); - FMOD_RESULT F_API setActive (bool active); - FMOD_RESULT F_API getActive (bool *active); - - // Userdata set/get. - FMOD_RESULT F_API setUserData (void *userdata); - FMOD_RESULT F_API getUserData (void **userdata); - }; -} - -#endif diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod_codec.h b/Toshi/vendor/fmod/include/fmod/studio/fmod_codec.h deleted file mode 100644 index 009b26f..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod_codec.h +++ /dev/null @@ -1,136 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - Codec development header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header if you are wanting to develop your own file format plugin to use with */ -/* FMOD's codec system. With this header you can make your own fileformat plugin that FMOD */ -/* can register and use. See the documentation and examples on how to make a working */ -/* plugin. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api.html */ -/* ======================================================================================== */ -#ifndef _FMOD_CODEC_H -#define _FMOD_CODEC_H - -/* - Codec types -*/ -typedef struct FMOD_CODEC_STATE FMOD_CODEC_STATE; -typedef struct FMOD_CODEC_WAVEFORMAT FMOD_CODEC_WAVEFORMAT; - -/* - Codec constants -*/ -#define FMOD_CODEC_PLUGIN_VERSION 1 - -typedef int FMOD_CODEC_SEEK_METHOD; -#define FMOD_CODEC_SEEK_METHOD_SET 0 -#define FMOD_CODEC_SEEK_METHOD_CURRENT 1 -#define FMOD_CODEC_SEEK_METHOD_END 2 - -/* - Codec callbacks -*/ -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_OPEN_CALLBACK) (FMOD_CODEC_STATE *codec_state, FMOD_MODE usermode, FMOD_CREATESOUNDEXINFO *userexinfo); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_CLOSE_CALLBACK) (FMOD_CODEC_STATE *codec_state); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_READ_CALLBACK) (FMOD_CODEC_STATE *codec_state, void *buffer, unsigned int samples_in, unsigned int *samples_out); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETLENGTH_CALLBACK) (FMOD_CODEC_STATE *codec_state, unsigned int *length, FMOD_TIMEUNIT lengthtype); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_SETPOSITION_CALLBACK) (FMOD_CODEC_STATE *codec_state, int subsound, unsigned int position, FMOD_TIMEUNIT postype); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETPOSITION_CALLBACK) (FMOD_CODEC_STATE *codec_state, unsigned int *position, FMOD_TIMEUNIT postype); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_SOUNDCREATE_CALLBACK) (FMOD_CODEC_STATE *codec_state, int subsound, FMOD_SOUND *sound); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETWAVEFORMAT_CALLBACK)(FMOD_CODEC_STATE *codec_state, int index, FMOD_CODEC_WAVEFORMAT *waveformat); - -/* - Codec functions -*/ -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_METADATA_FUNC) (FMOD_CODEC_STATE *codec_state, FMOD_TAGTYPE tagtype, char *name, void *data, unsigned int datalen, FMOD_TAGDATATYPE datatype, int unique); -typedef void * (F_CALLBACK *FMOD_CODEC_ALLOC_FUNC) (unsigned int size, unsigned int align, const char *file, int line); -typedef void (F_CALLBACK *FMOD_CODEC_FREE_FUNC) (void *ptr, const char *file, int line); -typedef void (F_CALLBACK *FMOD_CODEC_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *string, ...); - -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_FILE_READ_FUNC) (FMOD_CODEC_STATE *codec_state, void *buffer, unsigned int sizebytes, unsigned int *bytesread); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_FILE_SEEK_FUNC) (FMOD_CODEC_STATE *codec_state, unsigned int pos, FMOD_CODEC_SEEK_METHOD method); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_FILE_TELL_FUNC) (FMOD_CODEC_STATE *codec_state, unsigned int *pos); -typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_FILE_SIZE_FUNC) (FMOD_CODEC_STATE *codec_state, unsigned int *size); - -/* - Codec structures -*/ -typedef struct FMOD_CODEC_DESCRIPTION -{ - unsigned int apiversion; - const char *name; - unsigned int version; - int defaultasstream; - FMOD_TIMEUNIT timeunits; - FMOD_CODEC_OPEN_CALLBACK open; - FMOD_CODEC_CLOSE_CALLBACK close; - FMOD_CODEC_READ_CALLBACK read; - FMOD_CODEC_GETLENGTH_CALLBACK getlength; - FMOD_CODEC_SETPOSITION_CALLBACK setposition; - FMOD_CODEC_GETPOSITION_CALLBACK getposition; - FMOD_CODEC_SOUNDCREATE_CALLBACK soundcreate; - FMOD_CODEC_GETWAVEFORMAT_CALLBACK getwaveformat; -} FMOD_CODEC_DESCRIPTION; - -struct FMOD_CODEC_WAVEFORMAT -{ - const char* name; - FMOD_SOUND_FORMAT format; - int channels; - int frequency; - unsigned int lengthbytes; - unsigned int lengthpcm; - unsigned int pcmblocksize; - int loopstart; - int loopend; - FMOD_MODE mode; - FMOD_CHANNELMASK channelmask; - FMOD_CHANNELORDER channelorder; - float peakvolume; -}; - -typedef struct FMOD_CODEC_STATE_FUNCTIONS -{ - FMOD_CODEC_METADATA_FUNC metadata; - FMOD_CODEC_ALLOC_FUNC alloc; - FMOD_CODEC_FREE_FUNC free; - FMOD_CODEC_LOG_FUNC log; - FMOD_CODEC_FILE_READ_FUNC read; - FMOD_CODEC_FILE_SEEK_FUNC seek; - FMOD_CODEC_FILE_TELL_FUNC tell; - FMOD_CODEC_FILE_SIZE_FUNC size; -} FMOD_CODEC_STATE_FUNCTIONS; - -struct FMOD_CODEC_STATE -{ - void *plugindata; - FMOD_CODEC_WAVEFORMAT *waveformat; - FMOD_CODEC_STATE_FUNCTIONS *functions; - int numsubsounds; -}; - -/* - Codec macros -*/ -#define FMOD_CODEC_METADATA(_state, _tagtype, _name, _data, _datalen, _datatype, _unique) \ - (_state)->functions->metadata(_state, _tagtype, _name, _data, _datalen, _datatype, _unique) -#define FMOD_CODEC_ALLOC(_state, _size, _align) \ - (_state)->functions->alloc(_size, _align, __FILE__, __LINE__) -#define FMOD_CODEC_FREE(_state, _ptr) \ - (_state)->functions->free(_ptr, __FILE__, __LINE__) -#define FMOD_CODEC_LOG(_state, _level, _location, _format, ...) \ - (_state)->functions->log(_level, __FILE__, __LINE__, _location, _format, __VA_ARGS__) -#define FMOD_CODEC_FILE_READ(_state, _buffer, _sizebytes, _bytesread) \ - (_state)->functions->read(_state, _buffer, _sizebytes, _bytesread) -#define FMOD_CODEC_FILE_SEEK(_state, _pos, _method) \ - (_state)->functions->seek(_state, _pos, _method) -#define FMOD_CODEC_FILE_TELL(_state, _pos) \ - (_state)->functions->tell(_state, _pos) -#define FMOD_CODEC_FILE_SIZE(_state, _size) \ - (_state)->functions->size(_state, _size) - -#endif - - diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod_common.h b/Toshi/vendor/fmod/include/fmod/studio/fmod_common.h deleted file mode 100644 index 445556b..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod_common.h +++ /dev/null @@ -1,883 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - Common C/C++ header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* This header is included by fmod.hpp (C++ interface) and fmod.h (C interface) */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api-common.html */ -/* ======================================================================================== */ -#ifndef _FMOD_COMMON_H -#define _FMOD_COMMON_H - -/* - Library import helpers -*/ -#if defined(_WIN32) || defined(__CYGWIN__) - #define F_CALL __stdcall -#else - #define F_CALL -#endif - -#if defined(_WIN32) || defined(__CYGWIN__) || defined(__ORBIS__) || defined(F_USE_DECLSPEC) - #define F_EXPORT __declspec(dllexport) -#elif defined(__APPLE__) || defined(__ANDROID__) || defined(__linux__) || defined(F_USE_ATTRIBUTE) - #define F_EXPORT __attribute__((visibility("default"))) -#else - #define F_EXPORT -#endif - -#ifdef DLL_EXPORTS - #define F_API F_EXPORT F_CALL -#else - #define F_API F_CALL -#endif - -#define F_CALLBACK F_CALL - -/* - FMOD core types -*/ -typedef int FMOD_BOOL; -typedef struct FMOD_SYSTEM FMOD_SYSTEM; -typedef struct FMOD_SOUND FMOD_SOUND; -typedef struct FMOD_CHANNELCONTROL FMOD_CHANNELCONTROL; -typedef struct FMOD_CHANNEL FMOD_CHANNEL; -typedef struct FMOD_CHANNELGROUP FMOD_CHANNELGROUP; -typedef struct FMOD_SOUNDGROUP FMOD_SOUNDGROUP; -typedef struct FMOD_REVERB3D FMOD_REVERB3D; -typedef struct FMOD_DSP FMOD_DSP; -typedef struct FMOD_DSPCONNECTION FMOD_DSPCONNECTION; -typedef struct FMOD_POLYGON FMOD_POLYGON; -typedef struct FMOD_GEOMETRY FMOD_GEOMETRY; -typedef struct FMOD_SYNCPOINT FMOD_SYNCPOINT; -typedef struct FMOD_ASYNCREADINFO FMOD_ASYNCREADINFO; - -/* - FMOD constants -*/ -#define FMOD_VERSION 0x00020209 /* 0xaaaabbcc -> aaaa = product version, bb = major version, cc = minor version.*/ - -typedef unsigned int FMOD_DEBUG_FLAGS; -#define FMOD_DEBUG_LEVEL_NONE 0x00000000 -#define FMOD_DEBUG_LEVEL_ERROR 0x00000001 -#define FMOD_DEBUG_LEVEL_WARNING 0x00000002 -#define FMOD_DEBUG_LEVEL_LOG 0x00000004 -#define FMOD_DEBUG_TYPE_MEMORY 0x00000100 -#define FMOD_DEBUG_TYPE_FILE 0x00000200 -#define FMOD_DEBUG_TYPE_CODEC 0x00000400 -#define FMOD_DEBUG_TYPE_TRACE 0x00000800 -#define FMOD_DEBUG_DISPLAY_TIMESTAMPS 0x00010000 -#define FMOD_DEBUG_DISPLAY_LINENUMBERS 0x00020000 -#define FMOD_DEBUG_DISPLAY_THREAD 0x00040000 - -typedef unsigned int FMOD_MEMORY_TYPE; -#define FMOD_MEMORY_NORMAL 0x00000000 -#define FMOD_MEMORY_STREAM_FILE 0x00000001 -#define FMOD_MEMORY_STREAM_DECODE 0x00000002 -#define FMOD_MEMORY_SAMPLEDATA 0x00000004 -#define FMOD_MEMORY_DSP_BUFFER 0x00000008 -#define FMOD_MEMORY_PLUGIN 0x00000010 -#define FMOD_MEMORY_PERSISTENT 0x00200000 -#define FMOD_MEMORY_ALL 0xFFFFFFFF - -typedef unsigned int FMOD_INITFLAGS; -#define FMOD_INIT_NORMAL 0x00000000 -#define FMOD_INIT_STREAM_FROM_UPDATE 0x00000001 -#define FMOD_INIT_MIX_FROM_UPDATE 0x00000002 -#define FMOD_INIT_3D_RIGHTHANDED 0x00000004 -#define FMOD_INIT_CLIP_OUTPUT 0x00000008 -#define FMOD_INIT_CHANNEL_LOWPASS 0x00000100 -#define FMOD_INIT_CHANNEL_DISTANCEFILTER 0x00000200 -#define FMOD_INIT_PROFILE_ENABLE 0x00010000 -#define FMOD_INIT_VOL0_BECOMES_VIRTUAL 0x00020000 -#define FMOD_INIT_GEOMETRY_USECLOSEST 0x00040000 -#define FMOD_INIT_PREFER_DOLBY_DOWNMIX 0x00080000 -#define FMOD_INIT_THREAD_UNSAFE 0x00100000 -#define FMOD_INIT_PROFILE_METER_ALL 0x00200000 -#define FMOD_INIT_MEMORY_TRACKING 0x00400000 - -typedef unsigned int FMOD_DRIVER_STATE; -#define FMOD_DRIVER_STATE_CONNECTED 0x00000001 -#define FMOD_DRIVER_STATE_DEFAULT 0x00000002 - -typedef unsigned int FMOD_TIMEUNIT; -#define FMOD_TIMEUNIT_MS 0x00000001 -#define FMOD_TIMEUNIT_PCM 0x00000002 -#define FMOD_TIMEUNIT_PCMBYTES 0x00000004 -#define FMOD_TIMEUNIT_RAWBYTES 0x00000008 -#define FMOD_TIMEUNIT_PCMFRACTION 0x00000010 -#define FMOD_TIMEUNIT_MODORDER 0x00000100 -#define FMOD_TIMEUNIT_MODROW 0x00000200 -#define FMOD_TIMEUNIT_MODPATTERN 0x00000400 - -typedef unsigned int FMOD_SYSTEM_CALLBACK_TYPE; -#define FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED 0x00000001 -#define FMOD_SYSTEM_CALLBACK_DEVICELOST 0x00000002 -#define FMOD_SYSTEM_CALLBACK_MEMORYALLOCATIONFAILED 0x00000004 -#define FMOD_SYSTEM_CALLBACK_THREADCREATED 0x00000008 -#define FMOD_SYSTEM_CALLBACK_BADDSPCONNECTION 0x00000010 -#define FMOD_SYSTEM_CALLBACK_PREMIX 0x00000020 -#define FMOD_SYSTEM_CALLBACK_POSTMIX 0x00000040 -#define FMOD_SYSTEM_CALLBACK_ERROR 0x00000080 -#define FMOD_SYSTEM_CALLBACK_MIDMIX 0x00000100 -#define FMOD_SYSTEM_CALLBACK_THREADDESTROYED 0x00000200 -#define FMOD_SYSTEM_CALLBACK_PREUPDATE 0x00000400 -#define FMOD_SYSTEM_CALLBACK_POSTUPDATE 0x00000800 -#define FMOD_SYSTEM_CALLBACK_RECORDLISTCHANGED 0x00001000 -#define FMOD_SYSTEM_CALLBACK_BUFFEREDNOMIX 0x00002000 -#define FMOD_SYSTEM_CALLBACK_DEVICEREINITIALIZE 0x00004000 -#define FMOD_SYSTEM_CALLBACK_OUTPUTUNDERRUN 0x00008000 -#define FMOD_SYSTEM_CALLBACK_RECORDPOSITIONCHANGED 0x00010000 -#define FMOD_SYSTEM_CALLBACK_ALL 0xFFFFFFFF - -typedef unsigned int FMOD_MODE; -#define FMOD_DEFAULT 0x00000000 -#define FMOD_LOOP_OFF 0x00000001 -#define FMOD_LOOP_NORMAL 0x00000002 -#define FMOD_LOOP_BIDI 0x00000004 -#define FMOD_2D 0x00000008 -#define FMOD_3D 0x00000010 -#define FMOD_CREATESTREAM 0x00000080 -#define FMOD_CREATESAMPLE 0x00000100 -#define FMOD_CREATECOMPRESSEDSAMPLE 0x00000200 -#define FMOD_OPENUSER 0x00000400 -#define FMOD_OPENMEMORY 0x00000800 -#define FMOD_OPENMEMORY_POINT 0x10000000 -#define FMOD_OPENRAW 0x00001000 -#define FMOD_OPENONLY 0x00002000 -#define FMOD_ACCURATETIME 0x00004000 -#define FMOD_MPEGSEARCH 0x00008000 -#define FMOD_NONBLOCKING 0x00010000 -#define FMOD_UNIQUE 0x00020000 -#define FMOD_3D_HEADRELATIVE 0x00040000 -#define FMOD_3D_WORLDRELATIVE 0x00080000 -#define FMOD_3D_INVERSEROLLOFF 0x00100000 -#define FMOD_3D_LINEARROLLOFF 0x00200000 -#define FMOD_3D_LINEARSQUAREROLLOFF 0x00400000 -#define FMOD_3D_INVERSETAPEREDROLLOFF 0x00800000 -#define FMOD_3D_CUSTOMROLLOFF 0x04000000 -#define FMOD_3D_IGNOREGEOMETRY 0x40000000 -#define FMOD_IGNORETAGS 0x02000000 -#define FMOD_LOWMEM 0x08000000 -#define FMOD_VIRTUAL_PLAYFROMSTART 0x80000000 - -typedef unsigned int FMOD_CHANNELMASK; -#define FMOD_CHANNELMASK_FRONT_LEFT 0x00000001 -#define FMOD_CHANNELMASK_FRONT_RIGHT 0x00000002 -#define FMOD_CHANNELMASK_FRONT_CENTER 0x00000004 -#define FMOD_CHANNELMASK_LOW_FREQUENCY 0x00000008 -#define FMOD_CHANNELMASK_SURROUND_LEFT 0x00000010 -#define FMOD_CHANNELMASK_SURROUND_RIGHT 0x00000020 -#define FMOD_CHANNELMASK_BACK_LEFT 0x00000040 -#define FMOD_CHANNELMASK_BACK_RIGHT 0x00000080 -#define FMOD_CHANNELMASK_BACK_CENTER 0x00000100 -#define FMOD_CHANNELMASK_MONO (FMOD_CHANNELMASK_FRONT_LEFT) -#define FMOD_CHANNELMASK_STEREO (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT) -#define FMOD_CHANNELMASK_LRC (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER) -#define FMOD_CHANNELMASK_QUAD (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT) -#define FMOD_CHANNELMASK_SURROUND (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT) -#define FMOD_CHANNELMASK_5POINT1 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT) -#define FMOD_CHANNELMASK_5POINT1_REARS (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT) -#define FMOD_CHANNELMASK_7POINT0 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT) -#define FMOD_CHANNELMASK_7POINT1 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT) - -typedef unsigned long long FMOD_PORT_INDEX; -#define FMOD_PORT_INDEX_NONE 0xFFFFFFFFFFFFFFFF -#define FMOD_PORT_INDEX_FLAG_VR_CONTROLLER 0x1000000000000000 - -typedef int FMOD_THREAD_PRIORITY; -/* Platform specific priority range */ -#define FMOD_THREAD_PRIORITY_PLATFORM_MIN (-32 * 1024) -#define FMOD_THREAD_PRIORITY_PLATFORM_MAX ( 32 * 1024) -/* Platform agnostic priorities, maps internally to platform specific value */ -#define FMOD_THREAD_PRIORITY_DEFAULT (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 1) -#define FMOD_THREAD_PRIORITY_LOW (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 2) -#define FMOD_THREAD_PRIORITY_MEDIUM (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 3) -#define FMOD_THREAD_PRIORITY_HIGH (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 4) -#define FMOD_THREAD_PRIORITY_VERY_HIGH (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 5) -#define FMOD_THREAD_PRIORITY_EXTREME (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 6) -#define FMOD_THREAD_PRIORITY_CRITICAL (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 7) -/* Thread defaults */ -#define FMOD_THREAD_PRIORITY_MIXER FMOD_THREAD_PRIORITY_EXTREME -#define FMOD_THREAD_PRIORITY_FEEDER FMOD_THREAD_PRIORITY_CRITICAL -#define FMOD_THREAD_PRIORITY_STREAM FMOD_THREAD_PRIORITY_VERY_HIGH -#define FMOD_THREAD_PRIORITY_FILE FMOD_THREAD_PRIORITY_HIGH -#define FMOD_THREAD_PRIORITY_NONBLOCKING FMOD_THREAD_PRIORITY_HIGH -#define FMOD_THREAD_PRIORITY_RECORD FMOD_THREAD_PRIORITY_HIGH -#define FMOD_THREAD_PRIORITY_GEOMETRY FMOD_THREAD_PRIORITY_LOW -#define FMOD_THREAD_PRIORITY_PROFILER FMOD_THREAD_PRIORITY_MEDIUM -#define FMOD_THREAD_PRIORITY_STUDIO_UPDATE FMOD_THREAD_PRIORITY_MEDIUM -#define FMOD_THREAD_PRIORITY_STUDIO_LOAD_BANK FMOD_THREAD_PRIORITY_MEDIUM -#define FMOD_THREAD_PRIORITY_STUDIO_LOAD_SAMPLE FMOD_THREAD_PRIORITY_MEDIUM -#define FMOD_THREAD_PRIORITY_CONVOLUTION1 FMOD_THREAD_PRIORITY_VERY_HIGH -#define FMOD_THREAD_PRIORITY_CONVOLUTION2 FMOD_THREAD_PRIORITY_VERY_HIGH - -typedef unsigned int FMOD_THREAD_STACK_SIZE; -#define FMOD_THREAD_STACK_SIZE_DEFAULT 0 -#define FMOD_THREAD_STACK_SIZE_MIXER (80 * 1024) -#define FMOD_THREAD_STACK_SIZE_FEEDER (16 * 1024) -#define FMOD_THREAD_STACK_SIZE_STREAM (96 * 1024) -#define FMOD_THREAD_STACK_SIZE_FILE (64 * 1024) -#define FMOD_THREAD_STACK_SIZE_NONBLOCKING (112 * 1024) -#define FMOD_THREAD_STACK_SIZE_RECORD (16 * 1024) -#define FMOD_THREAD_STACK_SIZE_GEOMETRY (48 * 1024) -#define FMOD_THREAD_STACK_SIZE_PROFILER (128 * 1024) -#define FMOD_THREAD_STACK_SIZE_STUDIO_UPDATE (96 * 1024) -#define FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_BANK (96 * 1024) -#define FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_SAMPLE (96 * 1024) -#define FMOD_THREAD_STACK_SIZE_CONVOLUTION1 (16 * 1024) -#define FMOD_THREAD_STACK_SIZE_CONVOLUTION2 (16 * 1024) - -typedef long long FMOD_THREAD_AFFINITY; -/* Platform agnostic thread groupings */ -#define FMOD_THREAD_AFFINITY_GROUP_DEFAULT 0x4000000000000000 -#define FMOD_THREAD_AFFINITY_GROUP_A 0x4000000000000001 -#define FMOD_THREAD_AFFINITY_GROUP_B 0x4000000000000002 -#define FMOD_THREAD_AFFINITY_GROUP_C 0x4000000000000003 -/* Thread defaults */ -#define FMOD_THREAD_AFFINITY_MIXER FMOD_THREAD_AFFINITY_GROUP_A -#define FMOD_THREAD_AFFINITY_FEEDER FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_STREAM FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_FILE FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_NONBLOCKING FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_RECORD FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_GEOMETRY FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_PROFILER FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_STUDIO_UPDATE FMOD_THREAD_AFFINITY_GROUP_B -#define FMOD_THREAD_AFFINITY_STUDIO_LOAD_BANK FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_STUDIO_LOAD_SAMPLE FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_CONVOLUTION1 FMOD_THREAD_AFFINITY_GROUP_C -#define FMOD_THREAD_AFFINITY_CONVOLUTION2 FMOD_THREAD_AFFINITY_GROUP_C -/* Core mask, valid up to 1 << 62 */ -#define FMOD_THREAD_AFFINITY_CORE_ALL 0 -#define FMOD_THREAD_AFFINITY_CORE_0 (1 << 0) -#define FMOD_THREAD_AFFINITY_CORE_1 (1 << 1) -#define FMOD_THREAD_AFFINITY_CORE_2 (1 << 2) -#define FMOD_THREAD_AFFINITY_CORE_3 (1 << 3) -#define FMOD_THREAD_AFFINITY_CORE_4 (1 << 4) -#define FMOD_THREAD_AFFINITY_CORE_5 (1 << 5) -#define FMOD_THREAD_AFFINITY_CORE_6 (1 << 6) -#define FMOD_THREAD_AFFINITY_CORE_7 (1 << 7) -#define FMOD_THREAD_AFFINITY_CORE_8 (1 << 8) -#define FMOD_THREAD_AFFINITY_CORE_9 (1 << 9) -#define FMOD_THREAD_AFFINITY_CORE_10 (1 << 10) -#define FMOD_THREAD_AFFINITY_CORE_11 (1 << 11) -#define FMOD_THREAD_AFFINITY_CORE_12 (1 << 12) -#define FMOD_THREAD_AFFINITY_CORE_13 (1 << 13) -#define FMOD_THREAD_AFFINITY_CORE_14 (1 << 14) -#define FMOD_THREAD_AFFINITY_CORE_15 (1 << 15) - -/* Preset for FMOD_REVERB_PROPERTIES */ -#define FMOD_PRESET_OFF { 1000, 7, 11, 5000, 100, 100, 100, 250, 0, 20, 96, -80.0f } -#define FMOD_PRESET_GENERIC { 1500, 7, 11, 5000, 83, 100, 100, 250, 0, 14500, 96, -8.0f } -#define FMOD_PRESET_PADDEDCELL { 170, 1, 2, 5000, 10, 100, 100, 250, 0, 160, 84, -7.8f } -#define FMOD_PRESET_ROOM { 400, 2, 3, 5000, 83, 100, 100, 250, 0, 6050, 88, -9.4f } -#define FMOD_PRESET_BATHROOM { 1500, 7, 11, 5000, 54, 100, 60, 250, 0, 2900, 83, 0.5f } -#define FMOD_PRESET_LIVINGROOM { 500, 3, 4, 5000, 10, 100, 100, 250, 0, 160, 58, -19.0f } -#define FMOD_PRESET_STONEROOM { 2300, 12, 17, 5000, 64, 100, 100, 250, 0, 7800, 71, -8.5f } -#define FMOD_PRESET_AUDITORIUM { 4300, 20, 30, 5000, 59, 100, 100, 250, 0, 5850, 64, -11.7f } -#define FMOD_PRESET_CONCERTHALL { 3900, 20, 29, 5000, 70, 100, 100, 250, 0, 5650, 80, -9.8f } -#define FMOD_PRESET_CAVE { 2900, 15, 22, 5000, 100, 100, 100, 250, 0, 20000, 59, -11.3f } -#define FMOD_PRESET_ARENA { 7200, 20, 30, 5000, 33, 100, 100, 250, 0, 4500, 80, -9.6f } -#define FMOD_PRESET_HANGAR { 10000, 20, 30, 5000, 23, 100, 100, 250, 0, 3400, 72, -7.4f } -#define FMOD_PRESET_CARPETTEDHALLWAY { 300, 2, 30, 5000, 10, 100, 100, 250, 0, 500, 56, -24.0f } -#define FMOD_PRESET_HALLWAY { 1500, 7, 11, 5000, 59, 100, 100, 250, 0, 7800, 87, -5.5f } -#define FMOD_PRESET_STONECORRIDOR { 270, 13, 20, 5000, 79, 100, 100, 250, 0, 9000, 86, -6.0f } -#define FMOD_PRESET_ALLEY { 1500, 7, 11, 5000, 86, 100, 100, 250, 0, 8300, 80, -9.8f } -#define FMOD_PRESET_FOREST { 1500, 162, 88, 5000, 54, 79, 100, 250, 0, 760, 94, -12.3f } -#define FMOD_PRESET_CITY { 1500, 7, 11, 5000, 67, 50, 100, 250, 0, 4050, 66, -26.0f } -#define FMOD_PRESET_MOUNTAINS { 1500, 300, 100, 5000, 21, 27, 100, 250, 0, 1220, 82, -24.0f } -#define FMOD_PRESET_QUARRY { 1500, 61, 25, 5000, 83, 100, 100, 250, 0, 3400, 100, -5.0f } -#define FMOD_PRESET_PLAIN { 1500, 179, 100, 5000, 50, 21, 100, 250, 0, 1670, 65, -28.0f } -#define FMOD_PRESET_PARKINGLOT { 1700, 8, 12, 5000, 100, 100, 100, 250, 0, 20000, 56, -19.5f } -#define FMOD_PRESET_SEWERPIPE { 2800, 14, 21, 5000, 14, 80, 60, 250, 0, 3400, 66, 1.2f } -#define FMOD_PRESET_UNDERWATER { 1500, 7, 11, 5000, 10, 100, 100, 250, 0, 500, 92, 7.0f } - -#define FMOD_MAX_CHANNEL_WIDTH 32 -#define FMOD_MAX_SYSTEMS 8 -#define FMOD_MAX_LISTENERS 8 -#define FMOD_REVERB_MAXINSTANCES 4 - -typedef enum FMOD_THREAD_TYPE -{ - FMOD_THREAD_TYPE_MIXER, - FMOD_THREAD_TYPE_FEEDER, - FMOD_THREAD_TYPE_STREAM, - FMOD_THREAD_TYPE_FILE, - FMOD_THREAD_TYPE_NONBLOCKING, - FMOD_THREAD_TYPE_RECORD, - FMOD_THREAD_TYPE_GEOMETRY, - FMOD_THREAD_TYPE_PROFILER, - FMOD_THREAD_TYPE_STUDIO_UPDATE, - FMOD_THREAD_TYPE_STUDIO_LOAD_BANK, - FMOD_THREAD_TYPE_STUDIO_LOAD_SAMPLE, - FMOD_THREAD_TYPE_CONVOLUTION1, - FMOD_THREAD_TYPE_CONVOLUTION2, - - FMOD_THREAD_TYPE_MAX, - FMOD_THREAD_TYPE_FORCEINT = 65536 -} FMOD_THREAD_TYPE; - -typedef enum FMOD_RESULT -{ - FMOD_OK, - FMOD_ERR_BADCOMMAND, - FMOD_ERR_CHANNEL_ALLOC, - FMOD_ERR_CHANNEL_STOLEN, - FMOD_ERR_DMA, - FMOD_ERR_DSP_CONNECTION, - FMOD_ERR_DSP_DONTPROCESS, - FMOD_ERR_DSP_FORMAT, - FMOD_ERR_DSP_INUSE, - FMOD_ERR_DSP_NOTFOUND, - FMOD_ERR_DSP_RESERVED, - FMOD_ERR_DSP_SILENCE, - FMOD_ERR_DSP_TYPE, - FMOD_ERR_FILE_BAD, - FMOD_ERR_FILE_COULDNOTSEEK, - FMOD_ERR_FILE_DISKEJECTED, - FMOD_ERR_FILE_EOF, - FMOD_ERR_FILE_ENDOFDATA, - FMOD_ERR_FILE_NOTFOUND, - FMOD_ERR_FORMAT, - FMOD_ERR_HEADER_MISMATCH, - FMOD_ERR_HTTP, - FMOD_ERR_HTTP_ACCESS, - FMOD_ERR_HTTP_PROXY_AUTH, - FMOD_ERR_HTTP_SERVER_ERROR, - FMOD_ERR_HTTP_TIMEOUT, - FMOD_ERR_INITIALIZATION, - FMOD_ERR_INITIALIZED, - FMOD_ERR_INTERNAL, - FMOD_ERR_INVALID_FLOAT, - FMOD_ERR_INVALID_HANDLE, - FMOD_ERR_INVALID_PARAM, - FMOD_ERR_INVALID_POSITION, - FMOD_ERR_INVALID_SPEAKER, - FMOD_ERR_INVALID_SYNCPOINT, - FMOD_ERR_INVALID_THREAD, - FMOD_ERR_INVALID_VECTOR, - FMOD_ERR_MAXAUDIBLE, - FMOD_ERR_MEMORY, - FMOD_ERR_MEMORY_CANTPOINT, - FMOD_ERR_NEEDS3D, - FMOD_ERR_NEEDSHARDWARE, - FMOD_ERR_NET_CONNECT, - FMOD_ERR_NET_SOCKET_ERROR, - FMOD_ERR_NET_URL, - FMOD_ERR_NET_WOULD_BLOCK, - FMOD_ERR_NOTREADY, - FMOD_ERR_OUTPUT_ALLOCATED, - FMOD_ERR_OUTPUT_CREATEBUFFER, - FMOD_ERR_OUTPUT_DRIVERCALL, - FMOD_ERR_OUTPUT_FORMAT, - FMOD_ERR_OUTPUT_INIT, - FMOD_ERR_OUTPUT_NODRIVERS, - FMOD_ERR_PLUGIN, - FMOD_ERR_PLUGIN_MISSING, - FMOD_ERR_PLUGIN_RESOURCE, - FMOD_ERR_PLUGIN_VERSION, - FMOD_ERR_RECORD, - FMOD_ERR_REVERB_CHANNELGROUP, - FMOD_ERR_REVERB_INSTANCE, - FMOD_ERR_SUBSOUNDS, - FMOD_ERR_SUBSOUND_ALLOCATED, - FMOD_ERR_SUBSOUND_CANTMOVE, - FMOD_ERR_TAGNOTFOUND, - FMOD_ERR_TOOMANYCHANNELS, - FMOD_ERR_TRUNCATED, - FMOD_ERR_UNIMPLEMENTED, - FMOD_ERR_UNINITIALIZED, - FMOD_ERR_UNSUPPORTED, - FMOD_ERR_VERSION, - FMOD_ERR_EVENT_ALREADY_LOADED, - FMOD_ERR_EVENT_LIVEUPDATE_BUSY, - FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH, - FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT, - FMOD_ERR_EVENT_NOTFOUND, - FMOD_ERR_STUDIO_UNINITIALIZED, - FMOD_ERR_STUDIO_NOT_LOADED, - FMOD_ERR_INVALID_STRING, - FMOD_ERR_ALREADY_LOCKED, - FMOD_ERR_NOT_LOCKED, - FMOD_ERR_RECORD_DISCONNECTED, - FMOD_ERR_TOOMANYSAMPLES, - - FMOD_RESULT_FORCEINT = 65536 -} FMOD_RESULT; - -typedef enum FMOD_CHANNELCONTROL_TYPE -{ - FMOD_CHANNELCONTROL_CHANNEL, - FMOD_CHANNELCONTROL_CHANNELGROUP, - - FMOD_CHANNELCONTROL_MAX, - FMOD_CHANNELCONTROL_FORCEINT = 65536 -} FMOD_CHANNELCONTROL_TYPE; - -typedef enum FMOD_OUTPUTTYPE -{ - FMOD_OUTPUTTYPE_AUTODETECT, - FMOD_OUTPUTTYPE_UNKNOWN, - FMOD_OUTPUTTYPE_NOSOUND, - FMOD_OUTPUTTYPE_WAVWRITER, - FMOD_OUTPUTTYPE_NOSOUND_NRT, - FMOD_OUTPUTTYPE_WAVWRITER_NRT, - FMOD_OUTPUTTYPE_WASAPI, - FMOD_OUTPUTTYPE_ASIO, - FMOD_OUTPUTTYPE_PULSEAUDIO, - FMOD_OUTPUTTYPE_ALSA, - FMOD_OUTPUTTYPE_COREAUDIO, - FMOD_OUTPUTTYPE_AUDIOTRACK, - FMOD_OUTPUTTYPE_OPENSL, - FMOD_OUTPUTTYPE_AUDIOOUT, - FMOD_OUTPUTTYPE_AUDIO3D, - FMOD_OUTPUTTYPE_WEBAUDIO, - FMOD_OUTPUTTYPE_NNAUDIO, - FMOD_OUTPUTTYPE_WINSONIC, - FMOD_OUTPUTTYPE_AAUDIO, - FMOD_OUTPUTTYPE_AUDIOWORKLET, - - FMOD_OUTPUTTYPE_MAX, - FMOD_OUTPUTTYPE_FORCEINT = 65536 -} FMOD_OUTPUTTYPE; - -typedef enum FMOD_DEBUG_MODE -{ - FMOD_DEBUG_MODE_TTY, - FMOD_DEBUG_MODE_FILE, - FMOD_DEBUG_MODE_CALLBACK, - - FMOD_DEBUG_MODE_FORCEINT = 65536 -} FMOD_DEBUG_MODE; - -typedef enum FMOD_SPEAKERMODE -{ - FMOD_SPEAKERMODE_DEFAULT, - FMOD_SPEAKERMODE_RAW, - FMOD_SPEAKERMODE_MONO, - FMOD_SPEAKERMODE_STEREO, - FMOD_SPEAKERMODE_QUAD, - FMOD_SPEAKERMODE_SURROUND, - FMOD_SPEAKERMODE_5POINT1, - FMOD_SPEAKERMODE_7POINT1, - FMOD_SPEAKERMODE_7POINT1POINT4, - - FMOD_SPEAKERMODE_MAX, - FMOD_SPEAKERMODE_FORCEINT = 65536 -} FMOD_SPEAKERMODE; - -typedef enum FMOD_SPEAKER -{ - FMOD_SPEAKER_NONE = -1, - FMOD_SPEAKER_FRONT_LEFT = 0, - FMOD_SPEAKER_FRONT_RIGHT, - FMOD_SPEAKER_FRONT_CENTER, - FMOD_SPEAKER_LOW_FREQUENCY, - FMOD_SPEAKER_SURROUND_LEFT, - FMOD_SPEAKER_SURROUND_RIGHT, - FMOD_SPEAKER_BACK_LEFT, - FMOD_SPEAKER_BACK_RIGHT, - FMOD_SPEAKER_TOP_FRONT_LEFT, - FMOD_SPEAKER_TOP_FRONT_RIGHT, - FMOD_SPEAKER_TOP_BACK_LEFT, - FMOD_SPEAKER_TOP_BACK_RIGHT, - - FMOD_SPEAKER_MAX, - FMOD_SPEAKER_FORCEINT = 65536 -} FMOD_SPEAKER; - -typedef enum FMOD_CHANNELORDER -{ - FMOD_CHANNELORDER_DEFAULT, - FMOD_CHANNELORDER_WAVEFORMAT, - FMOD_CHANNELORDER_PROTOOLS, - FMOD_CHANNELORDER_ALLMONO, - FMOD_CHANNELORDER_ALLSTEREO, - FMOD_CHANNELORDER_ALSA, - - FMOD_CHANNELORDER_MAX, - FMOD_CHANNELORDER_FORCEINT = 65536 -} FMOD_CHANNELORDER; - -typedef enum FMOD_PLUGINTYPE -{ - FMOD_PLUGINTYPE_OUTPUT, - FMOD_PLUGINTYPE_CODEC, - FMOD_PLUGINTYPE_DSP, - - FMOD_PLUGINTYPE_MAX, - FMOD_PLUGINTYPE_FORCEINT = 65536 -} FMOD_PLUGINTYPE; - -typedef enum FMOD_SOUND_TYPE -{ - FMOD_SOUND_TYPE_UNKNOWN, - FMOD_SOUND_TYPE_AIFF, - FMOD_SOUND_TYPE_ASF, - FMOD_SOUND_TYPE_DLS, - FMOD_SOUND_TYPE_FLAC, - FMOD_SOUND_TYPE_FSB, - FMOD_SOUND_TYPE_IT, - FMOD_SOUND_TYPE_MIDI, - FMOD_SOUND_TYPE_MOD, - FMOD_SOUND_TYPE_MPEG, - FMOD_SOUND_TYPE_OGGVORBIS, - FMOD_SOUND_TYPE_PLAYLIST, - FMOD_SOUND_TYPE_RAW, - FMOD_SOUND_TYPE_S3M, - FMOD_SOUND_TYPE_USER, - FMOD_SOUND_TYPE_WAV, - FMOD_SOUND_TYPE_XM, - FMOD_SOUND_TYPE_XMA, - FMOD_SOUND_TYPE_AUDIOQUEUE, - FMOD_SOUND_TYPE_AT9, - FMOD_SOUND_TYPE_VORBIS, - FMOD_SOUND_TYPE_MEDIA_FOUNDATION, - FMOD_SOUND_TYPE_MEDIACODEC, - FMOD_SOUND_TYPE_FADPCM, - FMOD_SOUND_TYPE_OPUS, - - FMOD_SOUND_TYPE_MAX, - FMOD_SOUND_TYPE_FORCEINT = 65536 -} FMOD_SOUND_TYPE; - -typedef enum FMOD_SOUND_FORMAT -{ - FMOD_SOUND_FORMAT_NONE, - FMOD_SOUND_FORMAT_PCM8, - FMOD_SOUND_FORMAT_PCM16, - FMOD_SOUND_FORMAT_PCM24, - FMOD_SOUND_FORMAT_PCM32, - FMOD_SOUND_FORMAT_PCMFLOAT, - FMOD_SOUND_FORMAT_BITSTREAM, - - FMOD_SOUND_FORMAT_MAX, - FMOD_SOUND_FORMAT_FORCEINT = 65536 -} FMOD_SOUND_FORMAT; - -typedef enum FMOD_OPENSTATE -{ - FMOD_OPENSTATE_READY, - FMOD_OPENSTATE_LOADING, - FMOD_OPENSTATE_ERROR, - FMOD_OPENSTATE_CONNECTING, - FMOD_OPENSTATE_BUFFERING, - FMOD_OPENSTATE_SEEKING, - FMOD_OPENSTATE_PLAYING, - FMOD_OPENSTATE_SETPOSITION, - - FMOD_OPENSTATE_MAX, - FMOD_OPENSTATE_FORCEINT = 65536 -} FMOD_OPENSTATE; - -typedef enum FMOD_SOUNDGROUP_BEHAVIOR -{ - FMOD_SOUNDGROUP_BEHAVIOR_FAIL, - FMOD_SOUNDGROUP_BEHAVIOR_MUTE, - FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST, - - FMOD_SOUNDGROUP_BEHAVIOR_MAX, - FMOD_SOUNDGROUP_BEHAVIOR_FORCEINT = 65536 -} FMOD_SOUNDGROUP_BEHAVIOR; - -typedef enum FMOD_CHANNELCONTROL_CALLBACK_TYPE -{ - FMOD_CHANNELCONTROL_CALLBACK_END, - FMOD_CHANNELCONTROL_CALLBACK_VIRTUALVOICE, - FMOD_CHANNELCONTROL_CALLBACK_SYNCPOINT, - FMOD_CHANNELCONTROL_CALLBACK_OCCLUSION, - - FMOD_CHANNELCONTROL_CALLBACK_MAX, - FMOD_CHANNELCONTROL_CALLBACK_FORCEINT = 65536 -} FMOD_CHANNELCONTROL_CALLBACK_TYPE; - -typedef enum FMOD_CHANNELCONTROL_DSP_INDEX -{ - FMOD_CHANNELCONTROL_DSP_HEAD = -1, - FMOD_CHANNELCONTROL_DSP_FADER = -2, - FMOD_CHANNELCONTROL_DSP_TAIL = -3, - - FMOD_CHANNELCONTROL_DSP_FORCEINT = 65536 -} FMOD_CHANNELCONTROL_DSP_INDEX; - -typedef enum FMOD_ERRORCALLBACK_INSTANCETYPE -{ - FMOD_ERRORCALLBACK_INSTANCETYPE_NONE, - FMOD_ERRORCALLBACK_INSTANCETYPE_SYSTEM, - FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNEL, - FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELGROUP, - FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELCONTROL, - FMOD_ERRORCALLBACK_INSTANCETYPE_SOUND, - FMOD_ERRORCALLBACK_INSTANCETYPE_SOUNDGROUP, - FMOD_ERRORCALLBACK_INSTANCETYPE_DSP, - FMOD_ERRORCALLBACK_INSTANCETYPE_DSPCONNECTION, - FMOD_ERRORCALLBACK_INSTANCETYPE_GEOMETRY, - FMOD_ERRORCALLBACK_INSTANCETYPE_REVERB3D, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_SYSTEM, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTDESCRIPTION, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTINSTANCE, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_PARAMETERINSTANCE, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BUS, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_VCA, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BANK, - FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_COMMANDREPLAY, - - FMOD_ERRORCALLBACK_INSTANCETYPE_FORCEINT = 65536 -} FMOD_ERRORCALLBACK_INSTANCETYPE; - -typedef enum FMOD_DSP_RESAMPLER -{ - FMOD_DSP_RESAMPLER_DEFAULT, - FMOD_DSP_RESAMPLER_NOINTERP, - FMOD_DSP_RESAMPLER_LINEAR, - FMOD_DSP_RESAMPLER_CUBIC, - FMOD_DSP_RESAMPLER_SPLINE, - - FMOD_DSP_RESAMPLER_MAX, - FMOD_DSP_RESAMPLER_FORCEINT = 65536 -} FMOD_DSP_RESAMPLER; - -typedef enum FMOD_DSPCONNECTION_TYPE -{ - FMOD_DSPCONNECTION_TYPE_STANDARD, - FMOD_DSPCONNECTION_TYPE_SIDECHAIN, - FMOD_DSPCONNECTION_TYPE_SEND, - FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN, - - FMOD_DSPCONNECTION_TYPE_MAX, - FMOD_DSPCONNECTION_TYPE_FORCEINT = 65536 -} FMOD_DSPCONNECTION_TYPE; - -typedef enum FMOD_TAGTYPE -{ - FMOD_TAGTYPE_UNKNOWN, - FMOD_TAGTYPE_ID3V1, - FMOD_TAGTYPE_ID3V2, - FMOD_TAGTYPE_VORBISCOMMENT, - FMOD_TAGTYPE_SHOUTCAST, - FMOD_TAGTYPE_ICECAST, - FMOD_TAGTYPE_ASF, - FMOD_TAGTYPE_MIDI, - FMOD_TAGTYPE_PLAYLIST, - FMOD_TAGTYPE_FMOD, - FMOD_TAGTYPE_USER, - - FMOD_TAGTYPE_MAX, - FMOD_TAGTYPE_FORCEINT = 65536 -} FMOD_TAGTYPE; - -typedef enum FMOD_TAGDATATYPE -{ - FMOD_TAGDATATYPE_BINARY, - FMOD_TAGDATATYPE_INT, - FMOD_TAGDATATYPE_FLOAT, - FMOD_TAGDATATYPE_STRING, - FMOD_TAGDATATYPE_STRING_UTF16, - FMOD_TAGDATATYPE_STRING_UTF16BE, - FMOD_TAGDATATYPE_STRING_UTF8, - - FMOD_TAGDATATYPE_MAX, - FMOD_TAGDATATYPE_FORCEINT = 65536 -} FMOD_TAGDATATYPE; - -typedef enum FMOD_PORT_TYPE -{ - FMOD_PORT_TYPE_MUSIC, - FMOD_PORT_TYPE_COPYRIGHT_MUSIC, - FMOD_PORT_TYPE_VOICE, - FMOD_PORT_TYPE_CONTROLLER, - FMOD_PORT_TYPE_PERSONAL, - FMOD_PORT_TYPE_VIBRATION, - FMOD_PORT_TYPE_AUX, - - FMOD_PORT_TYPE_MAX, - FMOD_PORT_TYPE_FORCEINT = 65536 -} FMOD_PORT_TYPE; - -/* - FMOD callbacks -*/ -typedef FMOD_RESULT (F_CALL *FMOD_DEBUG_CALLBACK) (FMOD_DEBUG_FLAGS flags, const char *file, int line, const char* func, const char* message); -typedef FMOD_RESULT (F_CALL *FMOD_SYSTEM_CALLBACK) (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void* commanddata2, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_CHANNELCONTROL_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, FMOD_CHANNELCONTROL_TYPE controltype, FMOD_CHANNELCONTROL_CALLBACK_TYPE callbacktype, void *commanddata1, void *commanddata2); -typedef FMOD_RESULT (F_CALL *FMOD_SOUND_NONBLOCK_CALLBACK) (FMOD_SOUND *sound, FMOD_RESULT result); -typedef FMOD_RESULT (F_CALL *FMOD_SOUND_PCMREAD_CALLBACK) (FMOD_SOUND *sound, void *data, unsigned int datalen); -typedef FMOD_RESULT (F_CALL *FMOD_SOUND_PCMSETPOS_CALLBACK) (FMOD_SOUND *sound, int subsound, unsigned int position, FMOD_TIMEUNIT postype); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_OPEN_CALLBACK) (const char *name, unsigned int *filesize, void **handle, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_CLOSE_CALLBACK) (void *handle, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_READ_CALLBACK) (void *handle, void *buffer, unsigned int sizebytes, unsigned int *bytesread, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_SEEK_CALLBACK) (void *handle, unsigned int pos, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_ASYNCREAD_CALLBACK) (FMOD_ASYNCREADINFO *info, void *userdata); -typedef FMOD_RESULT (F_CALL *FMOD_FILE_ASYNCCANCEL_CALLBACK)(FMOD_ASYNCREADINFO *info, void *userdata); -typedef void (F_CALL *FMOD_FILE_ASYNCDONE_FUNC) (FMOD_ASYNCREADINFO *info, FMOD_RESULT result); -typedef void* (F_CALL *FMOD_MEMORY_ALLOC_CALLBACK) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void* (F_CALL *FMOD_MEMORY_REALLOC_CALLBACK) (void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void (F_CALL *FMOD_MEMORY_FREE_CALLBACK) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef float (F_CALL *FMOD_3D_ROLLOFF_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, float distance); - -/* - FMOD structs -*/ -struct FMOD_ASYNCREADINFO -{ - void *handle; - unsigned int offset; - unsigned int sizebytes; - int priority; - void *userdata; - void *buffer; - unsigned int bytesread; - FMOD_FILE_ASYNCDONE_FUNC done; -}; - -typedef struct FMOD_VECTOR -{ - float x; - float y; - float z; -} FMOD_VECTOR; - -typedef struct FMOD_3D_ATTRIBUTES -{ - FMOD_VECTOR position; - FMOD_VECTOR velocity; - FMOD_VECTOR forward; - FMOD_VECTOR up; -} FMOD_3D_ATTRIBUTES; - -typedef struct FMOD_GUID -{ - unsigned int Data1; - unsigned short Data2; - unsigned short Data3; - unsigned char Data4[8]; -} FMOD_GUID; - -typedef struct FMOD_PLUGINLIST -{ - FMOD_PLUGINTYPE type; - void *description; -} FMOD_PLUGINLIST; - -typedef struct FMOD_ADVANCEDSETTINGS -{ - int cbSize; - int maxMPEGCodecs; - int maxADPCMCodecs; - int maxXMACodecs; - int maxVorbisCodecs; - int maxAT9Codecs; - int maxFADPCMCodecs; - int maxPCMCodecs; - int ASIONumChannels; - char **ASIOChannelList; - FMOD_SPEAKER *ASIOSpeakerList; - float vol0virtualvol; - unsigned int defaultDecodeBufferSize; - unsigned short profilePort; - unsigned int geometryMaxFadeTime; - float distanceFilterCenterFreq; - int reverb3Dinstance; - int DSPBufferPoolSize; - FMOD_DSP_RESAMPLER resamplerMethod; - unsigned int randomSeed; - int maxConvolutionThreads; - int maxOpusCodecs; -} FMOD_ADVANCEDSETTINGS; - -typedef struct FMOD_TAG -{ - FMOD_TAGTYPE type; - FMOD_TAGDATATYPE datatype; - char *name; - void *data; - unsigned int datalen; - FMOD_BOOL updated; -} FMOD_TAG; - -typedef struct FMOD_CREATESOUNDEXINFO -{ - int cbsize; - unsigned int length; - unsigned int fileoffset; - int numchannels; - int defaultfrequency; - FMOD_SOUND_FORMAT format; - unsigned int decodebuffersize; - int initialsubsound; - int numsubsounds; - int *inclusionlist; - int inclusionlistnum; - FMOD_SOUND_PCMREAD_CALLBACK pcmreadcallback; - FMOD_SOUND_PCMSETPOS_CALLBACK pcmsetposcallback; - FMOD_SOUND_NONBLOCK_CALLBACK nonblockcallback; - const char *dlsname; - const char *encryptionkey; - int maxpolyphony; - void *userdata; - FMOD_SOUND_TYPE suggestedsoundtype; - FMOD_FILE_OPEN_CALLBACK fileuseropen; - FMOD_FILE_CLOSE_CALLBACK fileuserclose; - FMOD_FILE_READ_CALLBACK fileuserread; - FMOD_FILE_SEEK_CALLBACK fileuserseek; - FMOD_FILE_ASYNCREAD_CALLBACK fileuserasyncread; - FMOD_FILE_ASYNCCANCEL_CALLBACK fileuserasynccancel; - void *fileuserdata; - int filebuffersize; - FMOD_CHANNELORDER channelorder; - FMOD_SOUNDGROUP *initialsoundgroup; - unsigned int initialseekposition; - FMOD_TIMEUNIT initialseekpostype; - int ignoresetfilesystem; - unsigned int audioqueuepolicy; - unsigned int minmidigranularity; - int nonblockthreadid; - FMOD_GUID *fsbguid; -} FMOD_CREATESOUNDEXINFO; - -typedef struct FMOD_REVERB_PROPERTIES -{ - float DecayTime; - float EarlyDelay; - float LateDelay; - float HFReference; - float HFDecayRatio; - float Diffusion; - float Density; - float LowShelfFrequency; - float LowShelfGain; - float HighCut; - float EarlyLateMix; - float WetLevel; -} FMOD_REVERB_PROPERTIES; - -typedef struct FMOD_ERRORCALLBACK_INFO -{ - FMOD_RESULT result; - FMOD_ERRORCALLBACK_INSTANCETYPE instancetype; - void *instance; - const char *functionname; - const char *functionparams; -} FMOD_ERRORCALLBACK_INFO; - -typedef struct FMOD_CPU_USAGE -{ - float dsp; - float stream; - float geometry; - float update; - float convolution1; - float convolution2; -} FMOD_CPU_USAGE; - - -/* - FMOD optional headers for plugin development -*/ -#include "fmod_codec.h" -#include "fmod_dsp.h" -#include "fmod_output.h" - -#endif diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod_dsp.h b/Toshi/vendor/fmod/include/fmod/studio/fmod_dsp.h deleted file mode 100644 index 4c27c34..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod_dsp.h +++ /dev/null @@ -1,421 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - DSP header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header if you are wanting to develop your own DSP plugin to use with FMODs */ -/* dsp system. With this header you can make your own DSP plugin that FMOD can */ -/* register and use. See the documentation and examples on how to make a working plugin. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/plugin-api-dsp.html */ -/* =========================================================================================*/ -#ifndef _FMOD_DSP_H -#define _FMOD_DSP_H - -#include "fmod_dsp_effects.h" - -typedef struct FMOD_DSP_STATE FMOD_DSP_STATE; -typedef struct FMOD_DSP_BUFFER_ARRAY FMOD_DSP_BUFFER_ARRAY; -typedef struct FMOD_COMPLEX FMOD_COMPLEX; - -/* - DSP Constants -*/ -#define FMOD_PLUGIN_SDK_VERSION 110 -#define FMOD_DSP_GETPARAM_VALUESTR_LENGTH 32 - -typedef enum -{ - FMOD_DSP_PROCESS_PERFORM, - FMOD_DSP_PROCESS_QUERY -} FMOD_DSP_PROCESS_OPERATION; - -typedef enum FMOD_DSP_PAN_SURROUND_FLAGS -{ - FMOD_DSP_PAN_SURROUND_DEFAULT = 0, - FMOD_DSP_PAN_SURROUND_ROTATION_NOT_BIASED = 1, - - FMOD_DSP_PAN_SURROUND_FLAGS_FORCEINT = 65536 -} FMOD_DSP_PAN_SURROUND_FLAGS; - -typedef enum -{ - FMOD_DSP_PARAMETER_TYPE_FLOAT, - FMOD_DSP_PARAMETER_TYPE_INT, - FMOD_DSP_PARAMETER_TYPE_BOOL, - FMOD_DSP_PARAMETER_TYPE_DATA, - - FMOD_DSP_PARAMETER_TYPE_MAX, - FMOD_DSP_PARAMETER_TYPE_FORCEINT = 65536 -} FMOD_DSP_PARAMETER_TYPE; - -typedef enum -{ - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_LINEAR, - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO, - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR, - - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_FORCEINT = 65536 -} FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE; - -typedef enum -{ - FMOD_DSP_PARAMETER_DATA_TYPE_USER = 0, - FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN = -1, - FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES = -2, - FMOD_DSP_PARAMETER_DATA_TYPE_SIDECHAIN = -3, - FMOD_DSP_PARAMETER_DATA_TYPE_FFT = -4, - FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI = -5, - FMOD_DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE = -6, -} FMOD_DSP_PARAMETER_DATA_TYPE; - -/* - DSP Callbacks -*/ -typedef FMOD_RESULT (F_CALL *FMOD_DSP_CREATE_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_RELEASE_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_RESET_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_READ_CALLBACK) (FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PROCESS_CALLBACK) (FMOD_DSP_STATE *dsp_state, unsigned int length, const FMOD_DSP_BUFFER_ARRAY *inbufferarray, FMOD_DSP_BUFFER_ARRAY *outbufferarray, FMOD_BOOL inputsidle, FMOD_DSP_PROCESS_OPERATION op); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPOSITION_CALLBACK) (FMOD_DSP_STATE *dsp_state, unsigned int pos); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SHOULDIPROCESS_CALLBACK) (FMOD_DSP_STATE *dsp_state, FMOD_BOOL inputsidle, unsigned int length, FMOD_CHANNELMASK inmask, int inchannels, FMOD_SPEAKERMODE speakermode); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_FLOAT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float value); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_INT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, int value); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_BOOL_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, FMOD_BOOL value); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SETPARAM_DATA_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, void *data, unsigned int length); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_FLOAT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float *value, char *valuestr); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_INT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, int *value, char *valuestr); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_BOOL_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, FMOD_BOOL *value, char *valuestr); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETPARAM_DATA_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, void **data, unsigned int *length, char *valuestr); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SYSTEM_REGISTER_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK) (FMOD_DSP_STATE *dsp_state); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_SYSTEM_MIX_CALLBACK) (FMOD_DSP_STATE *dsp_state, int stage); - -/* - DSP Functions -*/ -typedef void * (F_CALL *FMOD_DSP_ALLOC_FUNC) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void * (F_CALL *FMOD_DSP_REALLOC_FUNC) (void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void (F_CALL *FMOD_DSP_FREE_FUNC) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr); -typedef void (F_CALL *FMOD_DSP_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *str, ...); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETSAMPLERATE_FUNC) (FMOD_DSP_STATE *dsp_state, int *rate); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETBLOCKSIZE_FUNC) (FMOD_DSP_STATE *dsp_state, unsigned int *blocksize); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETSPEAKERMODE_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE *speakermode_mixer, FMOD_SPEAKERMODE *speakermode_output); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETCLOCK_FUNC) (FMOD_DSP_STATE *dsp_state, unsigned long long *clock, unsigned int *offset, unsigned int *length); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETLISTENERATTRIBUTES_FUNC) (FMOD_DSP_STATE *dsp_state, int *numlisteners, FMOD_3D_ATTRIBUTES *attributes); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_GETUSERDATA_FUNC) (FMOD_DSP_STATE *dsp_state, void **userdata); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_DFT_FFTREAL_FUNC) (FMOD_DSP_STATE *dsp_state, int size, const float *signal, FMOD_COMPLEX* dft, const float *window, int signalhop); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_DFT_IFFTREAL_FUNC) (FMOD_DSP_STATE *dsp_state, int size, const FMOD_COMPLEX *dft, float* signal, const float *window, int signalhop); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMMONOMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, float lowFrequencyGain, float overallGain, float *matrix); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, float pan, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, FMOD_SPEAKERMODE targetSpeakerMode, float direction, float extent, float rotation, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix, FMOD_DSP_PAN_SURROUND_FLAGS flags); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE targetSpeakerMode, float direction, float extent, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE targetSpeakerMode, float direction, float extent, float rotation, float lowFrequencyGain, float overallGain, int matrixHop, float *matrix); -typedef FMOD_RESULT (F_CALL *FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_DSP_PAN_3D_ROLLOFF_TYPE rolloff, float distance, float mindistance, float maxdistance, float *gain); - -/* - DSP Structures -*/ -struct FMOD_DSP_BUFFER_ARRAY -{ - int numbuffers; - int *buffernumchannels; - FMOD_CHANNELMASK *bufferchannelmask; - float **buffers; - FMOD_SPEAKERMODE speakermode; -}; - -struct FMOD_COMPLEX -{ - float real; - float imag; -}; - -typedef struct FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR -{ - int numpoints; - float *pointparamvalues; - float *pointpositions; -} FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR; - -typedef struct FMOD_DSP_PARAMETER_FLOAT_MAPPING -{ - FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE type; - FMOD_DSP_PARAMETER_FLOAT_MAPPING_PIECEWISE_LINEAR piecewiselinearmapping; -} FMOD_DSP_PARAMETER_FLOAT_MAPPING; - -typedef struct FMOD_DSP_PARAMETER_DESC_FLOAT -{ - float min; - float max; - float defaultval; - FMOD_DSP_PARAMETER_FLOAT_MAPPING mapping; -} FMOD_DSP_PARAMETER_DESC_FLOAT; - -typedef struct FMOD_DSP_PARAMETER_DESC_INT -{ - int min; - int max; - int defaultval; - FMOD_BOOL goestoinf; - const char* const* valuenames; -} FMOD_DSP_PARAMETER_DESC_INT; - -typedef struct FMOD_DSP_PARAMETER_DESC_BOOL -{ - FMOD_BOOL defaultval; - const char* const* valuenames; -} FMOD_DSP_PARAMETER_DESC_BOOL; - -typedef struct FMOD_DSP_PARAMETER_DESC_DATA -{ - int datatype; -} FMOD_DSP_PARAMETER_DESC_DATA; - -typedef struct FMOD_DSP_PARAMETER_DESC -{ - FMOD_DSP_PARAMETER_TYPE type; - char name[16]; - char label[16]; - const char *description; - - union - { - FMOD_DSP_PARAMETER_DESC_FLOAT floatdesc; - FMOD_DSP_PARAMETER_DESC_INT intdesc; - FMOD_DSP_PARAMETER_DESC_BOOL booldesc; - FMOD_DSP_PARAMETER_DESC_DATA datadesc; - }; -} FMOD_DSP_PARAMETER_DESC; - -typedef struct FMOD_DSP_PARAMETER_OVERALLGAIN -{ - float linear_gain; - float linear_gain_additive; -} FMOD_DSP_PARAMETER_OVERALLGAIN; - -typedef struct FMOD_DSP_PARAMETER_3DATTRIBUTES -{ - FMOD_3D_ATTRIBUTES relative; - FMOD_3D_ATTRIBUTES absolute; -} FMOD_DSP_PARAMETER_3DATTRIBUTES; - -typedef struct FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI -{ - int numlisteners; - FMOD_3D_ATTRIBUTES relative[FMOD_MAX_LISTENERS]; - float weight[FMOD_MAX_LISTENERS]; - FMOD_3D_ATTRIBUTES absolute; -} FMOD_DSP_PARAMETER_3DATTRIBUTES_MULTI; - -typedef struct FMOD_DSP_PARAMETER_ATTENUATION_RANGE -{ - float min; - float max; -} FMOD_DSP_PARAMETER_ATTENUATION_RANGE; - -typedef struct FMOD_DSP_PARAMETER_SIDECHAIN -{ - FMOD_BOOL sidechainenable; -} FMOD_DSP_PARAMETER_SIDECHAIN; - -typedef struct FMOD_DSP_PARAMETER_FFT -{ - int length; - int numchannels; - float *spectrum[32]; -} FMOD_DSP_PARAMETER_FFT; - -typedef struct FMOD_DSP_DESCRIPTION -{ - unsigned int pluginsdkversion; - char name[32]; - unsigned int version; - int numinputbuffers; - int numoutputbuffers; - FMOD_DSP_CREATE_CALLBACK create; - FMOD_DSP_RELEASE_CALLBACK release; - FMOD_DSP_RESET_CALLBACK reset; - FMOD_DSP_READ_CALLBACK read; - FMOD_DSP_PROCESS_CALLBACK process; - FMOD_DSP_SETPOSITION_CALLBACK setposition; - - int numparameters; - FMOD_DSP_PARAMETER_DESC **paramdesc; - FMOD_DSP_SETPARAM_FLOAT_CALLBACK setparameterfloat; - FMOD_DSP_SETPARAM_INT_CALLBACK setparameterint; - FMOD_DSP_SETPARAM_BOOL_CALLBACK setparameterbool; - FMOD_DSP_SETPARAM_DATA_CALLBACK setparameterdata; - FMOD_DSP_GETPARAM_FLOAT_CALLBACK getparameterfloat; - FMOD_DSP_GETPARAM_INT_CALLBACK getparameterint; - FMOD_DSP_GETPARAM_BOOL_CALLBACK getparameterbool; - FMOD_DSP_GETPARAM_DATA_CALLBACK getparameterdata; - FMOD_DSP_SHOULDIPROCESS_CALLBACK shouldiprocess; - void *userdata; - - FMOD_DSP_SYSTEM_REGISTER_CALLBACK sys_register; - FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK sys_deregister; - FMOD_DSP_SYSTEM_MIX_CALLBACK sys_mix; - -} FMOD_DSP_DESCRIPTION; - -typedef struct FMOD_DSP_STATE_DFT_FUNCTIONS -{ - FMOD_DSP_DFT_FFTREAL_FUNC fftreal; - FMOD_DSP_DFT_IFFTREAL_FUNC inversefftreal; -} FMOD_DSP_STATE_DFT_FUNCTIONS; - -typedef struct FMOD_DSP_STATE_PAN_FUNCTIONS -{ - FMOD_DSP_PAN_SUMMONOMATRIX_FUNC summonomatrix; - FMOD_DSP_PAN_SUMSTEREOMATRIX_FUNC sumstereomatrix; - FMOD_DSP_PAN_SUMSURROUNDMATRIX_FUNC sumsurroundmatrix; - FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX_FUNC summonotosurroundmatrix; - FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX_FUNC sumstereotosurroundmatrix; - FMOD_DSP_PAN_GETROLLOFFGAIN_FUNC getrolloffgain; -} FMOD_DSP_STATE_PAN_FUNCTIONS; - -typedef struct FMOD_DSP_STATE_FUNCTIONS -{ - FMOD_DSP_ALLOC_FUNC alloc; - FMOD_DSP_REALLOC_FUNC realloc; - FMOD_DSP_FREE_FUNC free; - FMOD_DSP_GETSAMPLERATE_FUNC getsamplerate; - FMOD_DSP_GETBLOCKSIZE_FUNC getblocksize; - FMOD_DSP_STATE_DFT_FUNCTIONS *dft; - FMOD_DSP_STATE_PAN_FUNCTIONS *pan; - FMOD_DSP_GETSPEAKERMODE_FUNC getspeakermode; - FMOD_DSP_GETCLOCK_FUNC getclock; - FMOD_DSP_GETLISTENERATTRIBUTES_FUNC getlistenerattributes; - FMOD_DSP_LOG_FUNC log; - FMOD_DSP_GETUSERDATA_FUNC getuserdata; -} FMOD_DSP_STATE_FUNCTIONS; - -struct FMOD_DSP_STATE -{ - void *instance; - void *plugindata; - FMOD_CHANNELMASK channelmask; - FMOD_SPEAKERMODE source_speakermode; - float *sidechaindata; - int sidechainchannels; - FMOD_DSP_STATE_FUNCTIONS *functions; - int systemobject; -}; - -typedef struct FMOD_DSP_METERING_INFO -{ - int numsamples; - float peaklevel[32]; - float rmslevel[32]; - short numchannels; -} FMOD_DSP_METERING_INFO; - -/* - DSP Macros -*/ -#define FMOD_DSP_INIT_PARAMDESC_FLOAT(_paramstruct, _name, _label, _description, _min, _max, _defaultval) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_FLOAT; \ - strncpy((_paramstruct).name, _name, 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).floatdesc.min = _min; \ - (_paramstruct).floatdesc.max = _max; \ - (_paramstruct).floatdesc.defaultval = _defaultval; \ - (_paramstruct).floatdesc.mapping.type = FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_AUTO; - -#define FMOD_DSP_INIT_PARAMDESC_FLOAT_WITH_MAPPING(_paramstruct, _name, _label, _description, _defaultval, _values, _positions); \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_FLOAT; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).floatdesc.min = _values[0]; \ - (_paramstruct).floatdesc.max = _values[sizeof(_values) / sizeof(float) - 1]; \ - (_paramstruct).floatdesc.defaultval = _defaultval; \ - (_paramstruct).floatdesc.mapping.type = FMOD_DSP_PARAMETER_FLOAT_MAPPING_TYPE_PIECEWISE_LINEAR; \ - (_paramstruct).floatdesc.mapping.piecewiselinearmapping.numpoints = sizeof(_values) / sizeof(float); \ - (_paramstruct).floatdesc.mapping.piecewiselinearmapping.pointparamvalues = _values; \ - (_paramstruct).floatdesc.mapping.piecewiselinearmapping.pointpositions = _positions; - -#define FMOD_DSP_INIT_PARAMDESC_INT(_paramstruct, _name, _label, _description, _min, _max, _defaultval, _goestoinf, _valuenames) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_INT; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).intdesc.min = _min; \ - (_paramstruct).intdesc.max = _max; \ - (_paramstruct).intdesc.defaultval = _defaultval; \ - (_paramstruct).intdesc.goestoinf = _goestoinf; \ - (_paramstruct).intdesc.valuenames = _valuenames; - -#define FMOD_DSP_INIT_PARAMDESC_INT_ENUMERATED(_paramstruct, _name, _label, _description, _defaultval, _valuenames) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_INT; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).intdesc.min = 0; \ - (_paramstruct).intdesc.max = sizeof(_valuenames) / sizeof(char*) - 1; \ - (_paramstruct).intdesc.defaultval = _defaultval; \ - (_paramstruct).intdesc.goestoinf = false; \ - (_paramstruct).intdesc.valuenames = _valuenames; - -#define FMOD_DSP_INIT_PARAMDESC_BOOL(_paramstruct, _name, _label, _description, _defaultval, _valuenames) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_BOOL; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).booldesc.defaultval = _defaultval; \ - (_paramstruct).booldesc.valuenames = _valuenames; - -#define FMOD_DSP_INIT_PARAMDESC_DATA(_paramstruct, _name, _label, _description, _datatype) \ - memset(&(_paramstruct), 0, sizeof(_paramstruct)); \ - (_paramstruct).type = FMOD_DSP_PARAMETER_TYPE_DATA; \ - strncpy((_paramstruct).name, _name , 15); \ - strncpy((_paramstruct).label, _label, 15); \ - (_paramstruct).description = _description; \ - (_paramstruct).datadesc.datatype = _datatype; - -#define FMOD_DSP_ALLOC(_state, _size) \ - (_state)->functions->alloc(_size, FMOD_MEMORY_NORMAL, __FILE__) -#define FMOD_DSP_REALLOC(_state, _ptr, _size) \ - (_state)->functions->realloc(_ptr, _size, FMOD_MEMORY_NORMAL, __FILE__) -#define FMOD_DSP_FREE(_state, _ptr) \ - (_state)->functions->free(_ptr, FMOD_MEMORY_NORMAL, __FILE__) -#define FMOD_DSP_LOG(_state, _level, _location, _format, ...) \ - (_state)->functions->log(_level, __FILE__, __LINE__, _location, _format, __VA_ARGS__) -#define FMOD_DSP_GETSAMPLERATE(_state, _rate) \ - (_state)->functions->getsamplerate(_state, _rate) -#define FMOD_DSP_GETBLOCKSIZE(_state, _blocksize) \ - (_state)->functions->getblocksize(_state, _blocksize) -#define FMOD_DSP_GETSPEAKERMODE(_state, _speakermodemix, _speakermodeout) \ - (_state)->functions->getspeakermode(_state, _speakermodemix, _speakermodeout) -#define FMOD_DSP_GETCLOCK(_state, _clock, _offset, _length) \ - (_state)->functions->getclock(_state, _clock, _offset, _length) -#define FMOD_DSP_GETLISTENERATTRIBUTES(_state, _numlisteners, _attributes) \ - (_state)->functions->getlistenerattributes(_state, _numlisteners, _attributes) -#define FMOD_DSP_GETUSERDATA(_state, _userdata) \ - (_state)->functions->getuserdata(_state, _userdata) -#define FMOD_DSP_DFT_FFTREAL(_state, _size, _signal, _dft, _window, _signalhop) \ - (_state)->functions->dft->fftreal(_state, _size, _signal, _dft, _window, _signalhop) -#define FMOD_DSP_DFT_IFFTREAL(_state, _size, _dft, _signal, _window, _signalhop) \ - (_state)->functions->dft->inversefftreal(_state, _size, _dft, _signal, _window, _signalhop) -#define FMOD_DSP_PAN_SUMMONOMATRIX(_state, _sourcespeakermode, _lowfrequencygain, _overallgain, _matrix) \ - (_state)->functions->pan->summonomatrix(_state, _sourcespeakermode, _lowfrequencygain, _overallgain, _matrix) -#define FMOD_DSP_PAN_SUMSTEREOMATRIX(_state, _sourcespeakermode, _pan, _lowfrequencygain, _overallgain, _matrixhop, _matrix) \ - (_state)->functions->pan->sumstereomatrix(_state, _sourcespeakermode, _pan, _lowfrequencygain, _overallgain, _matrixhop, _matrix) -#define FMOD_DSP_PAN_SUMSURROUNDMATRIX(_state, _sourcespeakermode, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, _matrixhop, _matrix, _flags) \ - (_state)->functions->pan->sumsurroundmatrix(_state, _sourcespeakermode, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, _matrixhop, _matrix, _flags) -#define FMOD_DSP_PAN_SUMMONOTOSURROUNDMATRIX(_state, _targetspeakermode, _direction, _extent, _lowfrequencygain, _overallgain, _matrixhop, _matrix) \ - (_state)->functions->pan->summonotosurroundmatrix(_state, _targetspeakermode, _direction, _extent, _lowfrequencygain, _overallgain, _matrixhop, _matrix) -#define FMOD_DSP_PAN_SUMSTEREOTOSURROUNDMATRIX(_state, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, matrixhop, _matrix) \ - (_state)->functions->pan->sumstereotosurroundmatrix(_state, _targetspeakermode, _direction, _extent, _rotation, _lowfrequencygain, _overallgain, matrixhop, _matrix) -#define FMOD_DSP_PAN_GETROLLOFFGAIN(_state, _rolloff, _distance, _mindistance, _maxdistance, _gain) \ - (_state)->functions->pan->getrolloffgain(_state, _rolloff, _distance, _mindistance, _maxdistance, _gain) - -#endif - diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod_dsp_effects.h b/Toshi/vendor/fmod/include/fmod/studio/fmod_dsp_effects.h deleted file mode 100644 index ba0f8dd..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod_dsp_effects.h +++ /dev/null @@ -1,577 +0,0 @@ -/* ============================================================================================================= */ -/* FMOD Core API - Built-in effects header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* In this header you can find parameter structures for FMOD system registered DSP effects */ -/* and generators. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api-common-dsp-effects.html#fmod_dsp_type */ -/* ============================================================================================================= */ - -#ifndef _FMOD_DSP_EFFECTS_H -#define _FMOD_DSP_EFFECTS_H - -typedef enum -{ - FMOD_DSP_TYPE_UNKNOWN, - FMOD_DSP_TYPE_MIXER, - FMOD_DSP_TYPE_OSCILLATOR, - FMOD_DSP_TYPE_LOWPASS, - FMOD_DSP_TYPE_ITLOWPASS, - FMOD_DSP_TYPE_HIGHPASS, - FMOD_DSP_TYPE_ECHO, - FMOD_DSP_TYPE_FADER, - FMOD_DSP_TYPE_FLANGE, - FMOD_DSP_TYPE_DISTORTION, - FMOD_DSP_TYPE_NORMALIZE, - FMOD_DSP_TYPE_LIMITER, - FMOD_DSP_TYPE_PARAMEQ, - FMOD_DSP_TYPE_PITCHSHIFT, - FMOD_DSP_TYPE_CHORUS, - FMOD_DSP_TYPE_VSTPLUGIN, - FMOD_DSP_TYPE_WINAMPPLUGIN, - FMOD_DSP_TYPE_ITECHO, - FMOD_DSP_TYPE_COMPRESSOR, - FMOD_DSP_TYPE_SFXREVERB, - FMOD_DSP_TYPE_LOWPASS_SIMPLE, - FMOD_DSP_TYPE_DELAY, - FMOD_DSP_TYPE_TREMOLO, - FMOD_DSP_TYPE_LADSPAPLUGIN, - FMOD_DSP_TYPE_SEND, - FMOD_DSP_TYPE_RETURN, - FMOD_DSP_TYPE_HIGHPASS_SIMPLE, - FMOD_DSP_TYPE_PAN, - FMOD_DSP_TYPE_THREE_EQ, - FMOD_DSP_TYPE_FFT, - FMOD_DSP_TYPE_LOUDNESS_METER, - FMOD_DSP_TYPE_ENVELOPEFOLLOWER, - FMOD_DSP_TYPE_CONVOLUTIONREVERB, - FMOD_DSP_TYPE_CHANNELMIX, - FMOD_DSP_TYPE_TRANSCEIVER, - FMOD_DSP_TYPE_OBJECTPAN, - FMOD_DSP_TYPE_MULTIBAND_EQ, - - FMOD_DSP_TYPE_MAX, - FMOD_DSP_TYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ -} FMOD_DSP_TYPE; - -/* - =================================================================================================== - - FMOD built in effect parameters. - Use DSP::setParameter with these enums for the 'index' parameter. - - =================================================================================================== -*/ - -typedef enum -{ - FMOD_DSP_OSCILLATOR_TYPE, - FMOD_DSP_OSCILLATOR_RATE -} FMOD_DSP_OSCILLATOR; - - -typedef enum -{ - FMOD_DSP_LOWPASS_CUTOFF, - FMOD_DSP_LOWPASS_RESONANCE -} FMOD_DSP_LOWPASS; - - -typedef enum -{ - FMOD_DSP_ITLOWPASS_CUTOFF, - FMOD_DSP_ITLOWPASS_RESONANCE -} FMOD_DSP_ITLOWPASS; - - -typedef enum -{ - FMOD_DSP_HIGHPASS_CUTOFF, - FMOD_DSP_HIGHPASS_RESONANCE -} FMOD_DSP_HIGHPASS; - - -typedef enum -{ - FMOD_DSP_ECHO_DELAY, - FMOD_DSP_ECHO_FEEDBACK, - FMOD_DSP_ECHO_DRYLEVEL, - FMOD_DSP_ECHO_WETLEVEL -} FMOD_DSP_ECHO; - - -typedef enum FMOD_DSP_FADER -{ - FMOD_DSP_FADER_GAIN, - FMOD_DSP_FADER_OVERALL_GAIN, -} FMOD_DSP_FADER; - - -typedef enum -{ - FMOD_DSP_FLANGE_MIX, - FMOD_DSP_FLANGE_DEPTH, - FMOD_DSP_FLANGE_RATE -} FMOD_DSP_FLANGE; - - -typedef enum -{ - FMOD_DSP_DISTORTION_LEVEL -} FMOD_DSP_DISTORTION; - - -typedef enum -{ - FMOD_DSP_NORMALIZE_FADETIME, - FMOD_DSP_NORMALIZE_THRESHOLD, - FMOD_DSP_NORMALIZE_MAXAMP -} FMOD_DSP_NORMALIZE; - - -typedef enum -{ - FMOD_DSP_LIMITER_RELEASETIME, - FMOD_DSP_LIMITER_CEILING, - FMOD_DSP_LIMITER_MAXIMIZERGAIN, - FMOD_DSP_LIMITER_MODE, -} FMOD_DSP_LIMITER; - - -typedef enum -{ - FMOD_DSP_PARAMEQ_CENTER, - FMOD_DSP_PARAMEQ_BANDWIDTH, - FMOD_DSP_PARAMEQ_GAIN -} FMOD_DSP_PARAMEQ; - - -typedef enum FMOD_DSP_MULTIBAND_EQ -{ - FMOD_DSP_MULTIBAND_EQ_A_FILTER, - FMOD_DSP_MULTIBAND_EQ_A_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_A_Q, - FMOD_DSP_MULTIBAND_EQ_A_GAIN, - FMOD_DSP_MULTIBAND_EQ_B_FILTER, - FMOD_DSP_MULTIBAND_EQ_B_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_B_Q, - FMOD_DSP_MULTIBAND_EQ_B_GAIN, - FMOD_DSP_MULTIBAND_EQ_C_FILTER, - FMOD_DSP_MULTIBAND_EQ_C_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_C_Q, - FMOD_DSP_MULTIBAND_EQ_C_GAIN, - FMOD_DSP_MULTIBAND_EQ_D_FILTER, - FMOD_DSP_MULTIBAND_EQ_D_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_D_Q, - FMOD_DSP_MULTIBAND_EQ_D_GAIN, - FMOD_DSP_MULTIBAND_EQ_E_FILTER, - FMOD_DSP_MULTIBAND_EQ_E_FREQUENCY, - FMOD_DSP_MULTIBAND_EQ_E_Q, - FMOD_DSP_MULTIBAND_EQ_E_GAIN, -} FMOD_DSP_MULTIBAND_EQ; - - -typedef enum FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE -{ - FMOD_DSP_MULTIBAND_EQ_FILTER_DISABLED, - FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_12DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_24DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_48DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_12DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_24DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_48DB, - FMOD_DSP_MULTIBAND_EQ_FILTER_LOWSHELF, - FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHSHELF, - FMOD_DSP_MULTIBAND_EQ_FILTER_PEAKING, - FMOD_DSP_MULTIBAND_EQ_FILTER_BANDPASS, - FMOD_DSP_MULTIBAND_EQ_FILTER_NOTCH, - FMOD_DSP_MULTIBAND_EQ_FILTER_ALLPASS, -} FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE; - - -typedef enum -{ - FMOD_DSP_PITCHSHIFT_PITCH, - FMOD_DSP_PITCHSHIFT_FFTSIZE, - FMOD_DSP_PITCHSHIFT_OVERLAP, - FMOD_DSP_PITCHSHIFT_MAXCHANNELS -} FMOD_DSP_PITCHSHIFT; - - -typedef enum -{ - FMOD_DSP_CHORUS_MIX, - FMOD_DSP_CHORUS_RATE, - FMOD_DSP_CHORUS_DEPTH, -} FMOD_DSP_CHORUS; - - -typedef enum -{ - FMOD_DSP_ITECHO_WETDRYMIX, - FMOD_DSP_ITECHO_FEEDBACK, - FMOD_DSP_ITECHO_LEFTDELAY, - FMOD_DSP_ITECHO_RIGHTDELAY, - FMOD_DSP_ITECHO_PANDELAY -} FMOD_DSP_ITECHO; - -typedef enum -{ - FMOD_DSP_COMPRESSOR_THRESHOLD, - FMOD_DSP_COMPRESSOR_RATIO, - FMOD_DSP_COMPRESSOR_ATTACK, - FMOD_DSP_COMPRESSOR_RELEASE, - FMOD_DSP_COMPRESSOR_GAINMAKEUP, - FMOD_DSP_COMPRESSOR_USESIDECHAIN, - FMOD_DSP_COMPRESSOR_LINKED -} FMOD_DSP_COMPRESSOR; - -typedef enum -{ - FMOD_DSP_SFXREVERB_DECAYTIME, - FMOD_DSP_SFXREVERB_EARLYDELAY, - FMOD_DSP_SFXREVERB_LATEDELAY, - FMOD_DSP_SFXREVERB_HFREFERENCE, - FMOD_DSP_SFXREVERB_HFDECAYRATIO, - FMOD_DSP_SFXREVERB_DIFFUSION, - FMOD_DSP_SFXREVERB_DENSITY, - FMOD_DSP_SFXREVERB_LOWSHELFFREQUENCY, - FMOD_DSP_SFXREVERB_LOWSHELFGAIN, - FMOD_DSP_SFXREVERB_HIGHCUT, - FMOD_DSP_SFXREVERB_EARLYLATEMIX, - FMOD_DSP_SFXREVERB_WETLEVEL, - FMOD_DSP_SFXREVERB_DRYLEVEL -} FMOD_DSP_SFXREVERB; - -typedef enum -{ - FMOD_DSP_LOWPASS_SIMPLE_CUTOFF -} FMOD_DSP_LOWPASS_SIMPLE; - - -typedef enum -{ - FMOD_DSP_DELAY_CH0, - FMOD_DSP_DELAY_CH1, - FMOD_DSP_DELAY_CH2, - FMOD_DSP_DELAY_CH3, - FMOD_DSP_DELAY_CH4, - FMOD_DSP_DELAY_CH5, - FMOD_DSP_DELAY_CH6, - FMOD_DSP_DELAY_CH7, - FMOD_DSP_DELAY_CH8, - FMOD_DSP_DELAY_CH9, - FMOD_DSP_DELAY_CH10, - FMOD_DSP_DELAY_CH11, - FMOD_DSP_DELAY_CH12, - FMOD_DSP_DELAY_CH13, - FMOD_DSP_DELAY_CH14, - FMOD_DSP_DELAY_CH15, - FMOD_DSP_DELAY_MAXDELAY -} FMOD_DSP_DELAY; - - -typedef enum -{ - FMOD_DSP_TREMOLO_FREQUENCY, - FMOD_DSP_TREMOLO_DEPTH, - FMOD_DSP_TREMOLO_SHAPE, - FMOD_DSP_TREMOLO_SKEW, - FMOD_DSP_TREMOLO_DUTY, - FMOD_DSP_TREMOLO_SQUARE, - FMOD_DSP_TREMOLO_PHASE, - FMOD_DSP_TREMOLO_SPREAD -} FMOD_DSP_TREMOLO; - - -typedef enum -{ - FMOD_DSP_SEND_RETURNID, - FMOD_DSP_SEND_LEVEL, -} FMOD_DSP_SEND; - - -typedef enum -{ - FMOD_DSP_RETURN_ID, - FMOD_DSP_RETURN_INPUT_SPEAKER_MODE -} FMOD_DSP_RETURN; - - -typedef enum -{ - FMOD_DSP_HIGHPASS_SIMPLE_CUTOFF -} FMOD_DSP_HIGHPASS_SIMPLE; - - -typedef enum -{ - FMOD_DSP_PAN_2D_STEREO_MODE_DISTRIBUTED, - FMOD_DSP_PAN_2D_STEREO_MODE_DISCRETE -} FMOD_DSP_PAN_2D_STEREO_MODE_TYPE; - - -typedef enum -{ - FMOD_DSP_PAN_MODE_MONO, - FMOD_DSP_PAN_MODE_STEREO, - FMOD_DSP_PAN_MODE_SURROUND -} FMOD_DSP_PAN_MODE_TYPE; - - -typedef enum -{ - FMOD_DSP_PAN_3D_ROLLOFF_LINEARSQUARED, - FMOD_DSP_PAN_3D_ROLLOFF_LINEAR, - FMOD_DSP_PAN_3D_ROLLOFF_INVERSE, - FMOD_DSP_PAN_3D_ROLLOFF_INVERSETAPERED, - FMOD_DSP_PAN_3D_ROLLOFF_CUSTOM -} FMOD_DSP_PAN_3D_ROLLOFF_TYPE; - - -typedef enum -{ - FMOD_DSP_PAN_3D_EXTENT_MODE_AUTO, - FMOD_DSP_PAN_3D_EXTENT_MODE_USER, - FMOD_DSP_PAN_3D_EXTENT_MODE_OFF -} FMOD_DSP_PAN_3D_EXTENT_MODE_TYPE; - - -typedef enum -{ - FMOD_DSP_PAN_MODE, - FMOD_DSP_PAN_2D_STEREO_POSITION, - FMOD_DSP_PAN_2D_DIRECTION, - FMOD_DSP_PAN_2D_EXTENT, - FMOD_DSP_PAN_2D_ROTATION, - FMOD_DSP_PAN_2D_LFE_LEVEL, - FMOD_DSP_PAN_2D_STEREO_MODE, - FMOD_DSP_PAN_2D_STEREO_SEPARATION, - FMOD_DSP_PAN_2D_STEREO_AXIS, - FMOD_DSP_PAN_ENABLED_SPEAKERS, - FMOD_DSP_PAN_3D_POSITION, - FMOD_DSP_PAN_3D_ROLLOFF, - FMOD_DSP_PAN_3D_MIN_DISTANCE, - FMOD_DSP_PAN_3D_MAX_DISTANCE, - FMOD_DSP_PAN_3D_EXTENT_MODE, - FMOD_DSP_PAN_3D_SOUND_SIZE, - FMOD_DSP_PAN_3D_MIN_EXTENT, - FMOD_DSP_PAN_3D_PAN_BLEND, - FMOD_DSP_PAN_LFE_UPMIX_ENABLED, - FMOD_DSP_PAN_OVERALL_GAIN, - FMOD_DSP_PAN_SURROUND_SPEAKER_MODE, - FMOD_DSP_PAN_2D_HEIGHT_BLEND, - FMOD_DSP_PAN_ATTENUATION_RANGE, - FMOD_DSP_PAN_OVERRIDE_RANGE -} FMOD_DSP_PAN; - - -typedef enum -{ - FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_12DB, - FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_24DB, - FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_48DB -} FMOD_DSP_THREE_EQ_CROSSOVERSLOPE_TYPE; - - -typedef enum -{ - FMOD_DSP_THREE_EQ_LOWGAIN, - FMOD_DSP_THREE_EQ_MIDGAIN, - FMOD_DSP_THREE_EQ_HIGHGAIN, - FMOD_DSP_THREE_EQ_LOWCROSSOVER, - FMOD_DSP_THREE_EQ_HIGHCROSSOVER, - FMOD_DSP_THREE_EQ_CROSSOVERSLOPE -} FMOD_DSP_THREE_EQ; - - -typedef enum -{ - FMOD_DSP_FFT_WINDOW_RECT, - FMOD_DSP_FFT_WINDOW_TRIANGLE, - FMOD_DSP_FFT_WINDOW_HAMMING, - FMOD_DSP_FFT_WINDOW_HANNING, - FMOD_DSP_FFT_WINDOW_BLACKMAN, - FMOD_DSP_FFT_WINDOW_BLACKMANHARRIS -} FMOD_DSP_FFT_WINDOW; - - -typedef enum -{ - FMOD_DSP_FFT_WINDOWSIZE, - FMOD_DSP_FFT_WINDOWTYPE, - FMOD_DSP_FFT_SPECTRUMDATA, - FMOD_DSP_FFT_DOMINANT_FREQ -} FMOD_DSP_FFT; - -#define FMOD_DSP_LOUDNESS_METER_HISTOGRAM_SAMPLES 66 - -typedef enum -{ - FMOD_DSP_LOUDNESS_METER_STATE, - FMOD_DSP_LOUDNESS_METER_WEIGHTING, - FMOD_DSP_LOUDNESS_METER_INFO -} FMOD_DSP_LOUDNESS_METER; - - -typedef enum -{ - FMOD_DSP_LOUDNESS_METER_STATE_RESET_INTEGRATED = -3, - FMOD_DSP_LOUDNESS_METER_STATE_RESET_MAXPEAK = -2, - FMOD_DSP_LOUDNESS_METER_STATE_RESET_ALL = -1, - FMOD_DSP_LOUDNESS_METER_STATE_PAUSED = 0, - FMOD_DSP_LOUDNESS_METER_STATE_ANALYZING = 1 -} FMOD_DSP_LOUDNESS_METER_STATE_TYPE; - -typedef struct FMOD_DSP_LOUDNESS_METER_INFO_TYPE -{ - float momentaryloudness; - float shorttermloudness; - float integratedloudness; - float loudness10thpercentile; - float loudness95thpercentile; - float loudnesshistogram[FMOD_DSP_LOUDNESS_METER_HISTOGRAM_SAMPLES]; - float maxtruepeak; - float maxmomentaryloudness; -} FMOD_DSP_LOUDNESS_METER_INFO_TYPE; - -typedef struct FMOD_DSP_LOUDNESS_METER_WEIGHTING_TYPE -{ - float channelweight[32]; -} FMOD_DSP_LOUDNESS_METER_WEIGHTING_TYPE; - - -typedef enum -{ - FMOD_DSP_ENVELOPEFOLLOWER_ATTACK, - FMOD_DSP_ENVELOPEFOLLOWER_RELEASE, - FMOD_DSP_ENVELOPEFOLLOWER_ENVELOPE, - FMOD_DSP_ENVELOPEFOLLOWER_USESIDECHAIN -} FMOD_DSP_ENVELOPEFOLLOWER; - -typedef enum -{ - FMOD_DSP_CONVOLUTION_REVERB_PARAM_IR, - FMOD_DSP_CONVOLUTION_REVERB_PARAM_WET, - FMOD_DSP_CONVOLUTION_REVERB_PARAM_DRY, - FMOD_DSP_CONVOLUTION_REVERB_PARAM_LINKED -} FMOD_DSP_CONVOLUTION_REVERB; - -typedef enum -{ - FMOD_DSP_CHANNELMIX_OUTPUT_DEFAULT, - FMOD_DSP_CHANNELMIX_OUTPUT_ALLMONO, - FMOD_DSP_CHANNELMIX_OUTPUT_ALLSTEREO, - FMOD_DSP_CHANNELMIX_OUTPUT_ALLQUAD, - FMOD_DSP_CHANNELMIX_OUTPUT_ALL5POINT1, - FMOD_DSP_CHANNELMIX_OUTPUT_ALL7POINT1, - FMOD_DSP_CHANNELMIX_OUTPUT_ALLLFE, - FMOD_DSP_CHANNELMIX_OUTPUT_ALL7POINT1POINT4 -} FMOD_DSP_CHANNELMIX_OUTPUT; - -typedef enum -{ - FMOD_DSP_CHANNELMIX_OUTPUTGROUPING, - FMOD_DSP_CHANNELMIX_GAIN_CH0, - FMOD_DSP_CHANNELMIX_GAIN_CH1, - FMOD_DSP_CHANNELMIX_GAIN_CH2, - FMOD_DSP_CHANNELMIX_GAIN_CH3, - FMOD_DSP_CHANNELMIX_GAIN_CH4, - FMOD_DSP_CHANNELMIX_GAIN_CH5, - FMOD_DSP_CHANNELMIX_GAIN_CH6, - FMOD_DSP_CHANNELMIX_GAIN_CH7, - FMOD_DSP_CHANNELMIX_GAIN_CH8, - FMOD_DSP_CHANNELMIX_GAIN_CH9, - FMOD_DSP_CHANNELMIX_GAIN_CH10, - FMOD_DSP_CHANNELMIX_GAIN_CH11, - FMOD_DSP_CHANNELMIX_GAIN_CH12, - FMOD_DSP_CHANNELMIX_GAIN_CH13, - FMOD_DSP_CHANNELMIX_GAIN_CH14, - FMOD_DSP_CHANNELMIX_GAIN_CH15, - FMOD_DSP_CHANNELMIX_GAIN_CH16, - FMOD_DSP_CHANNELMIX_GAIN_CH17, - FMOD_DSP_CHANNELMIX_GAIN_CH18, - FMOD_DSP_CHANNELMIX_GAIN_CH19, - FMOD_DSP_CHANNELMIX_GAIN_CH20, - FMOD_DSP_CHANNELMIX_GAIN_CH21, - FMOD_DSP_CHANNELMIX_GAIN_CH22, - FMOD_DSP_CHANNELMIX_GAIN_CH23, - FMOD_DSP_CHANNELMIX_GAIN_CH24, - FMOD_DSP_CHANNELMIX_GAIN_CH25, - FMOD_DSP_CHANNELMIX_GAIN_CH26, - FMOD_DSP_CHANNELMIX_GAIN_CH27, - FMOD_DSP_CHANNELMIX_GAIN_CH28, - FMOD_DSP_CHANNELMIX_GAIN_CH29, - FMOD_DSP_CHANNELMIX_GAIN_CH30, - FMOD_DSP_CHANNELMIX_GAIN_CH31, - FMOD_DSP_CHANNELMIX_OUTPUT_CH0, - FMOD_DSP_CHANNELMIX_OUTPUT_CH1, - FMOD_DSP_CHANNELMIX_OUTPUT_CH2, - FMOD_DSP_CHANNELMIX_OUTPUT_CH3, - FMOD_DSP_CHANNELMIX_OUTPUT_CH4, - FMOD_DSP_CHANNELMIX_OUTPUT_CH5, - FMOD_DSP_CHANNELMIX_OUTPUT_CH6, - FMOD_DSP_CHANNELMIX_OUTPUT_CH7, - FMOD_DSP_CHANNELMIX_OUTPUT_CH8, - FMOD_DSP_CHANNELMIX_OUTPUT_CH9, - FMOD_DSP_CHANNELMIX_OUTPUT_CH10, - FMOD_DSP_CHANNELMIX_OUTPUT_CH11, - FMOD_DSP_CHANNELMIX_OUTPUT_CH12, - FMOD_DSP_CHANNELMIX_OUTPUT_CH13, - FMOD_DSP_CHANNELMIX_OUTPUT_CH14, - FMOD_DSP_CHANNELMIX_OUTPUT_CH15, - FMOD_DSP_CHANNELMIX_OUTPUT_CH16, - FMOD_DSP_CHANNELMIX_OUTPUT_CH17, - FMOD_DSP_CHANNELMIX_OUTPUT_CH18, - FMOD_DSP_CHANNELMIX_OUTPUT_CH19, - FMOD_DSP_CHANNELMIX_OUTPUT_CH20, - FMOD_DSP_CHANNELMIX_OUTPUT_CH21, - FMOD_DSP_CHANNELMIX_OUTPUT_CH22, - FMOD_DSP_CHANNELMIX_OUTPUT_CH23, - FMOD_DSP_CHANNELMIX_OUTPUT_CH24, - FMOD_DSP_CHANNELMIX_OUTPUT_CH25, - FMOD_DSP_CHANNELMIX_OUTPUT_CH26, - FMOD_DSP_CHANNELMIX_OUTPUT_CH27, - FMOD_DSP_CHANNELMIX_OUTPUT_CH28, - FMOD_DSP_CHANNELMIX_OUTPUT_CH29, - FMOD_DSP_CHANNELMIX_OUTPUT_CH30, - FMOD_DSP_CHANNELMIX_OUTPUT_CH31 -} FMOD_DSP_CHANNELMIX; - -typedef enum -{ - FMOD_DSP_TRANSCEIVER_SPEAKERMODE_AUTO = -1, - FMOD_DSP_TRANSCEIVER_SPEAKERMODE_MONO = 0, - FMOD_DSP_TRANSCEIVER_SPEAKERMODE_STEREO, - FMOD_DSP_TRANSCEIVER_SPEAKERMODE_SURROUND, -} FMOD_DSP_TRANSCEIVER_SPEAKERMODE; - - -typedef enum -{ - FMOD_DSP_TRANSCEIVER_TRANSMIT, - FMOD_DSP_TRANSCEIVER_GAIN, - FMOD_DSP_TRANSCEIVER_CHANNEL, - FMOD_DSP_TRANSCEIVER_TRANSMITSPEAKERMODE -} FMOD_DSP_TRANSCEIVER; - - -typedef enum -{ - FMOD_DSP_OBJECTPAN_3D_POSITION, - FMOD_DSP_OBJECTPAN_3D_ROLLOFF, - FMOD_DSP_OBJECTPAN_3D_MIN_DISTANCE, - FMOD_DSP_OBJECTPAN_3D_MAX_DISTANCE, - FMOD_DSP_OBJECTPAN_3D_EXTENT_MODE, - FMOD_DSP_OBJECTPAN_3D_SOUND_SIZE, - FMOD_DSP_OBJECTPAN_3D_MIN_EXTENT, - FMOD_DSP_OBJECTPAN_OVERALL_GAIN, - FMOD_DSP_OBJECTPAN_OUTPUTGAIN, - FMOD_DSP_OBJECTPAN_ATTENUATION_RANGE, - FMOD_DSP_OBJECTPAN_OVERRIDE_RANGE -} FMOD_DSP_OBJECTPAN; - -#endif - diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod_errors.h b/Toshi/vendor/fmod/include/fmod/studio/fmod_errors.h deleted file mode 100644 index e491ddf..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod_errors.h +++ /dev/null @@ -1,110 +0,0 @@ -/* ============================================================================================== */ -/* FMOD Core / Studio API - Error string header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header if you want to store or display a string version / english explanation */ -/* of the FMOD error codes. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/core-api-common.html#fmod_result */ -/* =============================================================================================== */ -#ifndef _FMOD_ERRORS_H -#define _FMOD_ERRORS_H - -#include "fmod.h" - -#ifdef __GNUC__ -static const char *FMOD_ErrorString(FMOD_RESULT errcode) __attribute__((unused)); -#endif - -static const char *FMOD_ErrorString(FMOD_RESULT errcode) -{ - switch (errcode) - { - case FMOD_OK: return "No errors."; - case FMOD_ERR_BADCOMMAND: return "Tried to call a function on a data type that does not allow this type of functionality (ie calling Sound::lock on a streaming sound)."; - case FMOD_ERR_CHANNEL_ALLOC: return "Error trying to allocate a channel."; - case FMOD_ERR_CHANNEL_STOLEN: return "The specified channel has been reused to play another sound."; - case FMOD_ERR_DMA: return "DMA Failure. See debug output for more information."; - case FMOD_ERR_DSP_CONNECTION: return "DSP connection error. Connection possibly caused a cyclic dependency or connected dsps with incompatible buffer counts."; - case FMOD_ERR_DSP_DONTPROCESS: return "DSP return code from a DSP process query callback. Tells mixer not to call the process callback and therefore not consume CPU. Use this to optimize the DSP graph."; - case FMOD_ERR_DSP_FORMAT: return "DSP Format error. A DSP unit may have attempted to connect to this network with the wrong format, or a matrix may have been set with the wrong size if the target unit has a specified channel map."; - case FMOD_ERR_DSP_INUSE: return "DSP is already in the mixer's DSP network. It must be removed before being reinserted or released."; - case FMOD_ERR_DSP_NOTFOUND: return "DSP connection error. Couldn't find the DSP unit specified."; - case FMOD_ERR_DSP_RESERVED: return "DSP operation error. Cannot perform operation on this DSP as it is reserved by the system."; - case FMOD_ERR_DSP_SILENCE: return "DSP return code from a DSP process query callback. Tells mixer silence would be produced from read, so go idle and not consume CPU. Use this to optimize the DSP graph."; - case FMOD_ERR_DSP_TYPE: return "DSP operation cannot be performed on a DSP of this type."; - case FMOD_ERR_FILE_BAD: return "Error loading file."; - case FMOD_ERR_FILE_COULDNOTSEEK: return "Couldn't perform seek operation. This is a limitation of the medium (ie netstreams) or the file format."; - case FMOD_ERR_FILE_DISKEJECTED: return "Media was ejected while reading."; - case FMOD_ERR_FILE_EOF: return "End of file unexpectedly reached while trying to read essential data (truncated?)."; - case FMOD_ERR_FILE_ENDOFDATA: return "End of current chunk reached while trying to read data."; - case FMOD_ERR_FILE_NOTFOUND: return "File not found."; - case FMOD_ERR_FORMAT: return "Unsupported file or audio format."; - case FMOD_ERR_HEADER_MISMATCH: return "There is a version mismatch between the FMOD header and either the FMOD Studio library or the FMOD Low Level library."; - case FMOD_ERR_HTTP: return "A HTTP error occurred. This is a catch-all for HTTP errors not listed elsewhere."; - case FMOD_ERR_HTTP_ACCESS: return "The specified resource requires authentication or is forbidden."; - case FMOD_ERR_HTTP_PROXY_AUTH: return "Proxy authentication is required to access the specified resource."; - case FMOD_ERR_HTTP_SERVER_ERROR: return "A HTTP server error occurred."; - case FMOD_ERR_HTTP_TIMEOUT: return "The HTTP request timed out."; - case FMOD_ERR_INITIALIZATION: return "FMOD was not initialized correctly to support this function."; - case FMOD_ERR_INITIALIZED: return "Cannot call this command after System::init."; - case FMOD_ERR_INTERNAL: return "An error occurred that wasn't supposed to. Contact support."; - case FMOD_ERR_INVALID_FLOAT: return "Value passed in was a NaN, Inf or denormalized float."; - case FMOD_ERR_INVALID_HANDLE: return "An invalid object handle was used."; - case FMOD_ERR_INVALID_PARAM: return "An invalid parameter was passed to this function."; - case FMOD_ERR_INVALID_POSITION: return "An invalid seek position was passed to this function."; - case FMOD_ERR_INVALID_SPEAKER: return "An invalid speaker was passed to this function based on the current speaker mode."; - case FMOD_ERR_INVALID_SYNCPOINT: return "The syncpoint did not come from this sound handle."; - case FMOD_ERR_INVALID_THREAD: return "Tried to call a function on a thread that is not supported."; - case FMOD_ERR_INVALID_VECTOR: return "The vectors passed in are not unit length, or perpendicular."; - case FMOD_ERR_MAXAUDIBLE: return "Reached maximum audible playback count for this sound's soundgroup."; - case FMOD_ERR_MEMORY: return "Not enough memory or resources."; - case FMOD_ERR_MEMORY_CANTPOINT: return "Can't use FMOD_OPENMEMORY_POINT on non PCM source data, or non mp3/xma/adpcm data if FMOD_CREATECOMPRESSEDSAMPLE was used."; - case FMOD_ERR_NEEDS3D: return "Tried to call a command on a 2d sound when the command was meant for 3d sound."; - case FMOD_ERR_NEEDSHARDWARE: return "Tried to use a feature that requires hardware support."; - case FMOD_ERR_NET_CONNECT: return "Couldn't connect to the specified host."; - case FMOD_ERR_NET_SOCKET_ERROR: return "A socket error occurred. This is a catch-all for socket-related errors not listed elsewhere."; - case FMOD_ERR_NET_URL: return "The specified URL couldn't be resolved."; - case FMOD_ERR_NET_WOULD_BLOCK: return "Operation on a non-blocking socket could not complete immediately."; - case FMOD_ERR_NOTREADY: return "Operation could not be performed because specified sound/DSP connection is not ready."; - case FMOD_ERR_OUTPUT_ALLOCATED: return "Error initializing output device, but more specifically, the output device is already in use and cannot be reused."; - case FMOD_ERR_OUTPUT_CREATEBUFFER: return "Error creating hardware sound buffer."; - case FMOD_ERR_OUTPUT_DRIVERCALL: return "A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted."; - case FMOD_ERR_OUTPUT_FORMAT: return "Soundcard does not support the specified format."; - case FMOD_ERR_OUTPUT_INIT: return "Error initializing output device."; - case FMOD_ERR_OUTPUT_NODRIVERS: return "The output device has no drivers installed. If pre-init, FMOD_OUTPUT_NOSOUND is selected as the output mode. If post-init, the function just fails."; - case FMOD_ERR_PLUGIN: return "An unspecified error has been returned from a plugin."; - case FMOD_ERR_PLUGIN_MISSING: return "A requested output, dsp unit type or codec was not available."; - case FMOD_ERR_PLUGIN_RESOURCE: return "A resource that the plugin requires cannot be allocated or found. (ie the DLS file for MIDI playback)"; - case FMOD_ERR_PLUGIN_VERSION: return "A plugin was built with an unsupported SDK version."; - case FMOD_ERR_RECORD: return "An error occurred trying to initialize the recording device."; - case FMOD_ERR_REVERB_CHANNELGROUP: return "Reverb properties cannot be set on this channel because a parent channelgroup owns the reverb connection."; - case FMOD_ERR_REVERB_INSTANCE: return "Specified instance in FMOD_REVERB_PROPERTIES couldn't be set. Most likely because it is an invalid instance number or the reverb doesn't exist."; - case FMOD_ERR_SUBSOUNDS: return "The error occurred because the sound referenced contains subsounds when it shouldn't have, or it doesn't contain subsounds when it should have. The operation may also not be able to be performed on a parent sound."; - case FMOD_ERR_SUBSOUND_ALLOCATED: return "This subsound is already being used by another sound, you cannot have more than one parent to a sound. Null out the other parent's entry first."; - case FMOD_ERR_SUBSOUND_CANTMOVE: return "Shared subsounds cannot be replaced or moved from their parent stream, such as when the parent stream is an FSB file."; - case FMOD_ERR_TAGNOTFOUND: return "The specified tag could not be found or there are no tags."; - case FMOD_ERR_TOOMANYCHANNELS: return "The sound created exceeds the allowable input channel count. This can be increased using the 'maxinputchannels' parameter in System::setSoftwareFormat."; - case FMOD_ERR_TRUNCATED: return "The retrieved string is too long to fit in the supplied buffer and has been truncated."; - case FMOD_ERR_UNIMPLEMENTED: return "Something in FMOD hasn't been implemented when it should be! contact support!"; - case FMOD_ERR_UNINITIALIZED: return "This command failed because System::init or System::setDriver was not called."; - case FMOD_ERR_UNSUPPORTED: return "A command issued was not supported by this object. Possibly a plugin without certain callbacks specified."; - case FMOD_ERR_VERSION: return "The version number of this file format is not supported."; - case FMOD_ERR_EVENT_ALREADY_LOADED: return "The specified bank has already been loaded."; - case FMOD_ERR_EVENT_LIVEUPDATE_BUSY: return "The live update connection failed due to the game already being connected."; - case FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH: return "The live update connection failed due to the game data being out of sync with the tool."; - case FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT: return "The live update connection timed out."; - case FMOD_ERR_EVENT_NOTFOUND: return "The requested event, parameter, bus or vca could not be found."; - case FMOD_ERR_STUDIO_UNINITIALIZED: return "The Studio::System object is not yet initialized."; - case FMOD_ERR_STUDIO_NOT_LOADED: return "The specified resource is not loaded, so it can't be unloaded."; - case FMOD_ERR_INVALID_STRING: return "An invalid string was passed to this function."; - case FMOD_ERR_ALREADY_LOCKED: return "The specified resource is already locked."; - case FMOD_ERR_NOT_LOCKED: return "The specified resource is not locked, so it can't be unlocked."; - case FMOD_ERR_RECORD_DISCONNECTED: return "The specified recording driver has been disconnected."; - case FMOD_ERR_TOOMANYSAMPLES: return "The length provided exceeds the allowable limit."; - default : return "Unknown error."; - }; -} - -#endif diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod_output.h b/Toshi/vendor/fmod/include/fmod/studio/fmod_output.h deleted file mode 100644 index cd49b96..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod_output.h +++ /dev/null @@ -1,122 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Core API - output development header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header if you are wanting to develop your own output plugin to use with */ -/* FMOD's output system. With this header you can make your own output plugin that FMOD */ -/* can register and use. See the documentation and examples on how to make a working */ -/* plugin. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/plugin-api-output.html */ -/* ======================================================================================== */ -#ifndef _FMOD_OUTPUT_H -#define _FMOD_OUTPUT_H - -typedef struct FMOD_OUTPUT_STATE FMOD_OUTPUT_STATE; -typedef struct FMOD_OUTPUT_OBJECT3DINFO FMOD_OUTPUT_OBJECT3DINFO; - -/* - Output constants -*/ -#define FMOD_OUTPUT_PLUGIN_VERSION 5 - -typedef unsigned int FMOD_OUTPUT_METHOD; -#define FMOD_OUTPUT_METHOD_MIX_DIRECT 0 -#define FMOD_OUTPUT_METHOD_MIX_BUFFERED 1 - -/* - Output callbacks -*/ -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_GETNUMDRIVERS_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int *numdrivers); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_GETDRIVERINFO_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_INIT_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int selecteddriver, FMOD_INITFLAGS flags, int *outputrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels, FMOD_SOUND_FORMAT *outputformat, int dspbufferlength, int *dspnumbuffers, int *dspnumadditionalbuffers, void *extradriverdata); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_START_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_STOP_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_CLOSE_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_UPDATE_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_GETHANDLE_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void **handle); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_MIXER_CALLBACK) (FMOD_OUTPUT_STATE *output_state); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OBJECT3DGETINFO_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int *maxhardwareobjects); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OBJECT3DALLOC_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void **object3d); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OBJECT3DFREE_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void *object3d); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OBJECT3DUPDATE_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void *object3d, const FMOD_OUTPUT_OBJECT3DINFO *info); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_OPENPORT_CALLBACK) (FMOD_OUTPUT_STATE *output_state, FMOD_PORT_TYPE portType, FMOD_PORT_INDEX portIndex, int *portId, int *portRate, int *portChannels, FMOD_SOUND_FORMAT *portFormat); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_CLOSEPORT_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int portId); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_DEVICELISTCHANGED_CALLBACK)(FMOD_OUTPUT_STATE *output_state); - -/* - Output functions -*/ -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_READFROMMIXER_FUNC) (FMOD_OUTPUT_STATE *output_state, void *buffer, unsigned int length); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_COPYPORT_FUNC) (FMOD_OUTPUT_STATE *output_state, int portId, void *buffer, unsigned int length); -typedef FMOD_RESULT (F_CALL *FMOD_OUTPUT_REQUESTRESET_FUNC) (FMOD_OUTPUT_STATE *output_state); -typedef void * (F_CALL *FMOD_OUTPUT_ALLOC_FUNC) (unsigned int size, unsigned int align, const char *file, int line); -typedef void (F_CALL *FMOD_OUTPUT_FREE_FUNC) (void *ptr, const char *file, int line); -typedef void (F_CALL *FMOD_OUTPUT_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *string, ...); - -/* - Output structures -*/ -typedef struct FMOD_OUTPUT_DESCRIPTION -{ - unsigned int apiversion; - const char *name; - unsigned int version; - FMOD_OUTPUT_METHOD method; - FMOD_OUTPUT_GETNUMDRIVERS_CALLBACK getnumdrivers; - FMOD_OUTPUT_GETDRIVERINFO_CALLBACK getdriverinfo; - FMOD_OUTPUT_INIT_CALLBACK init; - FMOD_OUTPUT_START_CALLBACK start; - FMOD_OUTPUT_STOP_CALLBACK stop; - FMOD_OUTPUT_CLOSE_CALLBACK close; - FMOD_OUTPUT_UPDATE_CALLBACK update; - FMOD_OUTPUT_GETHANDLE_CALLBACK gethandle; - FMOD_OUTPUT_MIXER_CALLBACK mixer; - FMOD_OUTPUT_OBJECT3DGETINFO_CALLBACK object3dgetinfo; - FMOD_OUTPUT_OBJECT3DALLOC_CALLBACK object3dalloc; - FMOD_OUTPUT_OBJECT3DFREE_CALLBACK object3dfree; - FMOD_OUTPUT_OBJECT3DUPDATE_CALLBACK object3dupdate; - FMOD_OUTPUT_OPENPORT_CALLBACK openport; - FMOD_OUTPUT_CLOSEPORT_CALLBACK closeport; - FMOD_OUTPUT_DEVICELISTCHANGED_CALLBACK devicelistchanged; -} FMOD_OUTPUT_DESCRIPTION; - -struct FMOD_OUTPUT_STATE -{ - void *plugindata; - FMOD_OUTPUT_READFROMMIXER_FUNC readfrommixer; - FMOD_OUTPUT_ALLOC_FUNC alloc; - FMOD_OUTPUT_FREE_FUNC free; - FMOD_OUTPUT_LOG_FUNC log; - FMOD_OUTPUT_COPYPORT_FUNC copyport; - FMOD_OUTPUT_REQUESTRESET_FUNC requestreset; -}; - -struct FMOD_OUTPUT_OBJECT3DINFO -{ - float *buffer; - unsigned int bufferlength; - FMOD_VECTOR position; - float gain; - float spread; - float priority; -}; - -/* - Output macros -*/ -#define FMOD_OUTPUT_READFROMMIXER(_state, _buffer, _length) \ - (_state)->readfrommixer(_state, _buffer, _length) -#define FMOD_OUTPUT_ALLOC(_state, _size, _align) \ - (_state)->alloc(_size, _align, __FILE__, __LINE__) -#define FMOD_OUTPUT_FREE(_state, _ptr) \ - (_state)->free(_ptr, __FILE__, __LINE__) -#define FMOD_OUTPUT_LOG(_state, _level, _location, _format, ...) \ - (_state)->log(_level, __FILE__, __LINE__, _location, _format, ##__VA_ARGS__) -#define FMOD_OUTPUT_COPYPORT(_state, _id, _buffer, _length) \ - (_state)->copyport(_state, _id, _buffer, _length) -#define FMOD_OUTPUT_REQUESTRESET(_state) \ - (_state)->requestreset(_state) - -#endif /* _FMOD_OUTPUT_H */ diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod_studio.h b/Toshi/vendor/fmod/include/fmod/studio/fmod_studio.h deleted file mode 100644 index 850c59b..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod_studio.h +++ /dev/null @@ -1,248 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Studio API - C header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header in conjunction with fmod_studio_common.h (which contains all the */ -/* constants / callbacks) to develop using the C language. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/studio-api.html */ -/* ======================================================================================== */ -#ifndef FMOD_STUDIO_H -#define FMOD_STUDIO_H - -#include "fmod_studio_common.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* - Global -*/ -FMOD_RESULT F_API FMOD_Studio_ParseID(const char *idstring, FMOD_GUID *id); -FMOD_RESULT F_API FMOD_Studio_System_Create(FMOD_STUDIO_SYSTEM **system, unsigned int headerversion); - -/* - System -*/ -FMOD_BOOL F_API FMOD_Studio_System_IsValid(FMOD_STUDIO_SYSTEM *system); -FMOD_RESULT F_API FMOD_Studio_System_SetAdvancedSettings(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_ADVANCEDSETTINGS *settings); -FMOD_RESULT F_API FMOD_Studio_System_GetAdvancedSettings(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_ADVANCEDSETTINGS *settings); -FMOD_RESULT F_API FMOD_Studio_System_Initialize(FMOD_STUDIO_SYSTEM *system, int maxchannels, FMOD_STUDIO_INITFLAGS studioflags, FMOD_INITFLAGS flags, void *extradriverdata); -FMOD_RESULT F_API FMOD_Studio_System_Release(FMOD_STUDIO_SYSTEM *system); -FMOD_RESULT F_API FMOD_Studio_System_Update(FMOD_STUDIO_SYSTEM *system); -FMOD_RESULT F_API FMOD_Studio_System_GetCoreSystem(FMOD_STUDIO_SYSTEM *system, FMOD_SYSTEM **coresystem); -FMOD_RESULT F_API FMOD_Studio_System_GetEvent(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_EVENTDESCRIPTION **event); -FMOD_RESULT F_API FMOD_Studio_System_GetBus(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_BUS **bus); -FMOD_RESULT F_API FMOD_Studio_System_GetVCA(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_VCA **vca); -FMOD_RESULT F_API FMOD_Studio_System_GetBank(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_BANK **bank); -FMOD_RESULT F_API FMOD_Studio_System_GetEventByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_EVENTDESCRIPTION **event); -FMOD_RESULT F_API FMOD_Studio_System_GetBusByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_BUS **bus); -FMOD_RESULT F_API FMOD_Studio_System_GetVCAByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_VCA **vca); -FMOD_RESULT F_API FMOD_Studio_System_GetBankByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_BANK **bank); -FMOD_RESULT F_API FMOD_Studio_System_GetSoundInfo(FMOD_STUDIO_SYSTEM *system, const char *key, FMOD_STUDIO_SOUND_INFO *info); -FMOD_RESULT F_API FMOD_Studio_System_GetParameterDescriptionByName(FMOD_STUDIO_SYSTEM *system, const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); -FMOD_RESULT F_API FMOD_Studio_System_GetParameterDescriptionByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); -FMOD_RESULT F_API FMOD_Studio_System_GetParameterLabelByName(FMOD_STUDIO_SYSTEM *system, const char *name, int labelindex, char *label, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_System_GetParameterLabelByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_System_GetParameterByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue); -FMOD_RESULT F_API FMOD_Studio_System_SetParameterByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, float value, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_System_SetParameterByIDWithLabel(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, const char *label, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_System_SetParametersByIDs(FMOD_STUDIO_SYSTEM *system, const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_System_GetParameterByName(FMOD_STUDIO_SYSTEM *system, const char *name, float *value, float *finalvalue); -FMOD_RESULT F_API FMOD_Studio_System_SetParameterByName(FMOD_STUDIO_SYSTEM *system, const char *name, float value, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_System_SetParameterByNameWithLabel(FMOD_STUDIO_SYSTEM *system, const char *name, const char *label, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_System_LookupID(FMOD_STUDIO_SYSTEM *system, const char *path, FMOD_GUID *id); -FMOD_RESULT F_API FMOD_Studio_System_LookupPath(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, char *path, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_System_GetNumListeners(FMOD_STUDIO_SYSTEM *system, int *numlisteners); -FMOD_RESULT F_API FMOD_Studio_System_SetNumListeners(FMOD_STUDIO_SYSTEM *system, int numlisteners); -FMOD_RESULT F_API FMOD_Studio_System_GetListenerAttributes(FMOD_STUDIO_SYSTEM *system, int index, FMOD_3D_ATTRIBUTES *attributes, FMOD_VECTOR *attenuationposition); -FMOD_RESULT F_API FMOD_Studio_System_SetListenerAttributes(FMOD_STUDIO_SYSTEM *system, int index, const FMOD_3D_ATTRIBUTES *attributes, const FMOD_VECTOR *attenuationposition); -FMOD_RESULT F_API FMOD_Studio_System_GetListenerWeight(FMOD_STUDIO_SYSTEM *system, int index, float *weight); -FMOD_RESULT F_API FMOD_Studio_System_SetListenerWeight(FMOD_STUDIO_SYSTEM *system, int index, float weight); -FMOD_RESULT F_API FMOD_Studio_System_LoadBankFile(FMOD_STUDIO_SYSTEM *system, const char *filename, FMOD_STUDIO_LOAD_BANK_FLAGS flags, FMOD_STUDIO_BANK **bank); -FMOD_RESULT F_API FMOD_Studio_System_LoadBankMemory(FMOD_STUDIO_SYSTEM *system, const char *buffer, int length, FMOD_STUDIO_LOAD_MEMORY_MODE mode, FMOD_STUDIO_LOAD_BANK_FLAGS flags, FMOD_STUDIO_BANK **bank); -FMOD_RESULT F_API FMOD_Studio_System_LoadBankCustom(FMOD_STUDIO_SYSTEM *system, const FMOD_STUDIO_BANK_INFO *info, FMOD_STUDIO_LOAD_BANK_FLAGS flags, FMOD_STUDIO_BANK **bank); -FMOD_RESULT F_API FMOD_Studio_System_RegisterPlugin(FMOD_STUDIO_SYSTEM *system, const FMOD_DSP_DESCRIPTION *description); -FMOD_RESULT F_API FMOD_Studio_System_UnregisterPlugin(FMOD_STUDIO_SYSTEM *system, const char *name); -FMOD_RESULT F_API FMOD_Studio_System_UnloadAll(FMOD_STUDIO_SYSTEM *system); -FMOD_RESULT F_API FMOD_Studio_System_FlushCommands(FMOD_STUDIO_SYSTEM *system); -FMOD_RESULT F_API FMOD_Studio_System_FlushSampleLoading(FMOD_STUDIO_SYSTEM *system); -FMOD_RESULT F_API FMOD_Studio_System_StartCommandCapture(FMOD_STUDIO_SYSTEM *system, const char *filename, FMOD_STUDIO_COMMANDCAPTURE_FLAGS flags); -FMOD_RESULT F_API FMOD_Studio_System_StopCommandCapture(FMOD_STUDIO_SYSTEM *system); -FMOD_RESULT F_API FMOD_Studio_System_LoadCommandReplay(FMOD_STUDIO_SYSTEM *system, const char *filename, FMOD_STUDIO_COMMANDREPLAY_FLAGS flags, FMOD_STUDIO_COMMANDREPLAY **replay); -FMOD_RESULT F_API FMOD_Studio_System_GetBankCount(FMOD_STUDIO_SYSTEM *system, int *count); -FMOD_RESULT F_API FMOD_Studio_System_GetBankList(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_BANK **array, int capacity, int *count); -FMOD_RESULT F_API FMOD_Studio_System_GetParameterDescriptionCount(FMOD_STUDIO_SYSTEM *system, int *count); -FMOD_RESULT F_API FMOD_Studio_System_GetParameterDescriptionList(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_DESCRIPTION *array, int capacity, int *count); -FMOD_RESULT F_API FMOD_Studio_System_GetCPUUsage(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_CPU_USAGE *usage, FMOD_CPU_USAGE *usage_core); -FMOD_RESULT F_API FMOD_Studio_System_GetBufferUsage(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_BUFFER_USAGE *usage); -FMOD_RESULT F_API FMOD_Studio_System_ResetBufferUsage(FMOD_STUDIO_SYSTEM *system); -FMOD_RESULT F_API FMOD_Studio_System_SetCallback(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_SYSTEM_CALLBACK callback, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE callbackmask); -FMOD_RESULT F_API FMOD_Studio_System_SetUserData(FMOD_STUDIO_SYSTEM *system, void *userdata); -FMOD_RESULT F_API FMOD_Studio_System_GetUserData(FMOD_STUDIO_SYSTEM *system, void **userdata); -FMOD_RESULT F_API FMOD_Studio_System_GetMemoryUsage(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_MEMORY_USAGE *memoryusage); - -/* - EventDescription -*/ -FMOD_BOOL F_API FMOD_Studio_EventDescription_IsValid(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetID(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_GUID *id); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetPath(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, char *path, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterDescriptionCount(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *count); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterDescriptionByIndex(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int index, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterDescriptionByName(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterDescriptionByID(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterLabelByIndex(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int index, int labelindex, char *label, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterLabelByName(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, const char *name, int labelindex, char *label, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetParameterLabelByID(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetUserPropertyCount(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *count); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetUserPropertyByIndex(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int index, FMOD_STUDIO_USER_PROPERTY *property); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetUserProperty(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, const char *name, FMOD_STUDIO_USER_PROPERTY *property); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetLength(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *length); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetMinMaxDistance(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, float *min, float *max); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetSoundSize(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, float *size); -FMOD_RESULT F_API FMOD_Studio_EventDescription_IsSnapshot(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *snapshot); -FMOD_RESULT F_API FMOD_Studio_EventDescription_IsOneshot(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *oneshot); -FMOD_RESULT F_API FMOD_Studio_EventDescription_IsStream(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *isStream); -FMOD_RESULT F_API FMOD_Studio_EventDescription_Is3D(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *is3D); -FMOD_RESULT F_API FMOD_Studio_EventDescription_IsDopplerEnabled(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *doppler); -FMOD_RESULT F_API FMOD_Studio_EventDescription_HasSustainPoint(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *sustainPoint); -FMOD_RESULT F_API FMOD_Studio_EventDescription_CreateInstance(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENTINSTANCE **instance); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetInstanceCount(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *count); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetInstanceList(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENTINSTANCE **array, int capacity, int *count); -FMOD_RESULT F_API FMOD_Studio_EventDescription_LoadSampleData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription); -FMOD_RESULT F_API FMOD_Studio_EventDescription_UnloadSampleData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetSampleLoadingState(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_LOADING_STATE *state); -FMOD_RESULT F_API FMOD_Studio_EventDescription_ReleaseAllInstances(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription); -FMOD_RESULT F_API FMOD_Studio_EventDescription_SetCallback(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask); -FMOD_RESULT F_API FMOD_Studio_EventDescription_GetUserData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, void **userdata); -FMOD_RESULT F_API FMOD_Studio_EventDescription_SetUserData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, void *userdata); - -/* - EventInstance -*/ -FMOD_BOOL F_API FMOD_Studio_EventInstance_IsValid(FMOD_STUDIO_EVENTINSTANCE *eventinstance); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetDescription(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENTDESCRIPTION **description); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetVolume(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float *volume, float *finalvolume); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetVolume(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float volume); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetPitch(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float *pitch, float *finalpitch); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetPitch(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float pitch); -FMOD_RESULT F_API FMOD_Studio_EventInstance_Get3DAttributes(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_3D_ATTRIBUTES *attributes); -FMOD_RESULT F_API FMOD_Studio_EventInstance_Set3DAttributes(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_3D_ATTRIBUTES *attributes); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetListenerMask(FMOD_STUDIO_EVENTINSTANCE *eventinstance, unsigned int *mask); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetListenerMask(FMOD_STUDIO_EVENTINSTANCE *eventinstance, unsigned int mask); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetProperty(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENT_PROPERTY index, float *value); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetProperty(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENT_PROPERTY index, float value); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetReverbLevel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int index, float *level); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetReverbLevel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int index, float level); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetPaused(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_BOOL *paused); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetPaused(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_BOOL paused); -FMOD_RESULT F_API FMOD_Studio_EventInstance_Start(FMOD_STUDIO_EVENTINSTANCE *eventinstance); -FMOD_RESULT F_API FMOD_Studio_EventInstance_Stop(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_STOP_MODE mode); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetTimelinePosition(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int *position); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetTimelinePosition(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int position); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetPlaybackState(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PLAYBACK_STATE *state); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetChannelGroup(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_CHANNELGROUP **group); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetMinMaxDistance(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float *min, float *max); -FMOD_RESULT F_API FMOD_Studio_EventInstance_Release(FMOD_STUDIO_EVENTINSTANCE *eventinstance); -FMOD_RESULT F_API FMOD_Studio_EventInstance_IsVirtual(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_BOOL *virtualstate); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetParameterByName(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const char *name, float *value, float *finalvalue); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParameterByName(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const char *name, float value, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParameterByNameWithLabel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const char *name, const char *label, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetParameterByID(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParameterByID(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PARAMETER_ID id, float value, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParameterByIDWithLabel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PARAMETER_ID id, const char *label, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetParametersByIDs(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, FMOD_BOOL ignoreseekspeed); -FMOD_RESULT F_API FMOD_Studio_EventInstance_KeyOff(FMOD_STUDIO_EVENTINSTANCE *eventinstance); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetCallback(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetUserData(FMOD_STUDIO_EVENTINSTANCE *eventinstance, void **userdata); -FMOD_RESULT F_API FMOD_Studio_EventInstance_SetUserData(FMOD_STUDIO_EVENTINSTANCE *eventinstance, void *userdata); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetCPUUsage(FMOD_STUDIO_EVENTINSTANCE *eventinstance, unsigned int *exclusive, unsigned int *inclusive); -FMOD_RESULT F_API FMOD_Studio_EventInstance_GetMemoryUsage(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_MEMORY_USAGE *memoryusage); - -/* - Bus -*/ -FMOD_BOOL F_API FMOD_Studio_Bus_IsValid(FMOD_STUDIO_BUS *bus); -FMOD_RESULT F_API FMOD_Studio_Bus_GetID(FMOD_STUDIO_BUS *bus, FMOD_GUID *id); -FMOD_RESULT F_API FMOD_Studio_Bus_GetPath(FMOD_STUDIO_BUS *bus, char *path, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_Bus_GetVolume(FMOD_STUDIO_BUS *bus, float *volume, float *finalvolume); -FMOD_RESULT F_API FMOD_Studio_Bus_SetVolume(FMOD_STUDIO_BUS *bus, float volume); -FMOD_RESULT F_API FMOD_Studio_Bus_GetPaused(FMOD_STUDIO_BUS *bus, FMOD_BOOL *paused); -FMOD_RESULT F_API FMOD_Studio_Bus_SetPaused(FMOD_STUDIO_BUS *bus, FMOD_BOOL paused); -FMOD_RESULT F_API FMOD_Studio_Bus_GetMute(FMOD_STUDIO_BUS *bus, FMOD_BOOL *mute); -FMOD_RESULT F_API FMOD_Studio_Bus_SetMute(FMOD_STUDIO_BUS *bus, FMOD_BOOL mute); -FMOD_RESULT F_API FMOD_Studio_Bus_StopAllEvents(FMOD_STUDIO_BUS *bus, FMOD_STUDIO_STOP_MODE mode); -FMOD_RESULT F_API FMOD_Studio_Bus_GetPortIndex(FMOD_STUDIO_BUS *bus, FMOD_PORT_INDEX *index); -FMOD_RESULT F_API FMOD_Studio_Bus_SetPortIndex(FMOD_STUDIO_BUS *bus, FMOD_PORT_INDEX index); -FMOD_RESULT F_API FMOD_Studio_Bus_LockChannelGroup(FMOD_STUDIO_BUS *bus); -FMOD_RESULT F_API FMOD_Studio_Bus_UnlockChannelGroup(FMOD_STUDIO_BUS *bus); -FMOD_RESULT F_API FMOD_Studio_Bus_GetChannelGroup(FMOD_STUDIO_BUS *bus, FMOD_CHANNELGROUP **group); -FMOD_RESULT F_API FMOD_Studio_Bus_GetCPUUsage(FMOD_STUDIO_BUS *bus, unsigned int *exclusive, unsigned int *inclusive); -FMOD_RESULT F_API FMOD_Studio_Bus_GetMemoryUsage(FMOD_STUDIO_BUS *bus, FMOD_STUDIO_MEMORY_USAGE *memoryusage); - -/* - VCA -*/ -FMOD_BOOL F_API FMOD_Studio_VCA_IsValid(FMOD_STUDIO_VCA *vca); -FMOD_RESULT F_API FMOD_Studio_VCA_GetID(FMOD_STUDIO_VCA *vca, FMOD_GUID *id); -FMOD_RESULT F_API FMOD_Studio_VCA_GetPath(FMOD_STUDIO_VCA *vca, char *path, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_VCA_GetVolume(FMOD_STUDIO_VCA *vca, float *volume, float *finalvolume); -FMOD_RESULT F_API FMOD_Studio_VCA_SetVolume(FMOD_STUDIO_VCA *vca, float volume); - -/* - Bank -*/ -FMOD_BOOL F_API FMOD_Studio_Bank_IsValid(FMOD_STUDIO_BANK *bank); -FMOD_RESULT F_API FMOD_Studio_Bank_GetID(FMOD_STUDIO_BANK *bank, FMOD_GUID *id); -FMOD_RESULT F_API FMOD_Studio_Bank_GetPath(FMOD_STUDIO_BANK *bank, char *path, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_Bank_Unload(FMOD_STUDIO_BANK *bank); -FMOD_RESULT F_API FMOD_Studio_Bank_LoadSampleData(FMOD_STUDIO_BANK *bank); -FMOD_RESULT F_API FMOD_Studio_Bank_UnloadSampleData(FMOD_STUDIO_BANK *bank); -FMOD_RESULT F_API FMOD_Studio_Bank_GetLoadingState(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_LOADING_STATE *state); -FMOD_RESULT F_API FMOD_Studio_Bank_GetSampleLoadingState(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_LOADING_STATE *state); -FMOD_RESULT F_API FMOD_Studio_Bank_GetStringCount(FMOD_STUDIO_BANK *bank, int *count); -FMOD_RESULT F_API FMOD_Studio_Bank_GetStringInfo(FMOD_STUDIO_BANK *bank, int index, FMOD_GUID *id, char *path, int size, int *retrieved); -FMOD_RESULT F_API FMOD_Studio_Bank_GetEventCount(FMOD_STUDIO_BANK *bank, int *count); -FMOD_RESULT F_API FMOD_Studio_Bank_GetEventList(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_EVENTDESCRIPTION **array, int capacity, int *count); -FMOD_RESULT F_API FMOD_Studio_Bank_GetBusCount(FMOD_STUDIO_BANK *bank, int *count); -FMOD_RESULT F_API FMOD_Studio_Bank_GetBusList(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_BUS **array, int capacity, int *count); -FMOD_RESULT F_API FMOD_Studio_Bank_GetVCACount(FMOD_STUDIO_BANK *bank, int *count); -FMOD_RESULT F_API FMOD_Studio_Bank_GetVCAList(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_VCA **array, int capacity, int *count); -FMOD_RESULT F_API FMOD_Studio_Bank_GetUserData(FMOD_STUDIO_BANK *bank, void **userdata); -FMOD_RESULT F_API FMOD_Studio_Bank_SetUserData(FMOD_STUDIO_BANK *bank, void *userdata); - -/* - Command playback information -*/ -FMOD_BOOL F_API FMOD_Studio_CommandReplay_IsValid(FMOD_STUDIO_COMMANDREPLAY *replay); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetSystem(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_SYSTEM **system); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetLength(FMOD_STUDIO_COMMANDREPLAY *replay, float *length); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCommandCount(FMOD_STUDIO_COMMANDREPLAY *replay, int *count); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCommandInfo(FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, FMOD_STUDIO_COMMAND_INFO *info); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCommandString(FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, char *buffer, int length); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCommandAtTime(FMOD_STUDIO_COMMANDREPLAY *replay, float time, int *commandindex); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetBankPath(FMOD_STUDIO_COMMANDREPLAY *replay, const char *bankPath); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_Start(FMOD_STUDIO_COMMANDREPLAY *replay); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_Stop(FMOD_STUDIO_COMMANDREPLAY *replay); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_SeekToTime(FMOD_STUDIO_COMMANDREPLAY *replay, float time); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_SeekToCommand(FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetPaused(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_BOOL *paused); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetPaused(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_BOOL paused); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetPlaybackState(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_PLAYBACK_STATE *state); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetCurrentCommand(FMOD_STUDIO_COMMANDREPLAY *replay, int *commandindex, float *currenttime); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_Release(FMOD_STUDIO_COMMANDREPLAY *replay); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetFrameCallback(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK callback); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetLoadBankCallback(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK callback); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetCreateInstanceCallback(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK callback); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_GetUserData(FMOD_STUDIO_COMMANDREPLAY *replay, void **userdata); -FMOD_RESULT F_API FMOD_Studio_CommandReplay_SetUserData(FMOD_STUDIO_COMMANDREPLAY *replay, void *userdata); - -#ifdef __cplusplus -} -#endif - -#endif /* FMOD_STUDIO_H */ diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod_studio.hpp b/Toshi/vendor/fmod/include/fmod/studio/fmod_studio.hpp deleted file mode 100644 index a372330..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod_studio.hpp +++ /dev/null @@ -1,402 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Studio API - C++ header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* Use this header in conjunction with fmod_studio_common.h (which contains all the */ -/* constants / callbacks) to develop using the C++ language. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/studio-api.html */ -/* ======================================================================================== */ -#ifndef FMOD_STUDIO_HPP -#define FMOD_STUDIO_HPP - -#include "fmod_studio_common.h" -#include "fmod_studio.h" - -#include "fmod.hpp" - -namespace FMOD -{ - -namespace Studio -{ - typedef FMOD_GUID ID; // Deprecated. Please use FMOD_GUID type. - - class System; - class EventDescription; - class EventInstance; - class Bus; - class VCA; - class Bank; - class CommandReplay; - - inline FMOD_RESULT parseID(const char *idstring, FMOD_GUID *id) { return FMOD_Studio_ParseID(idstring, id); } - - class System - { - private: - // Constructor made private so user cannot statically instance a System class. System::create must be used. - System(); - System(const System &); - - public: - static FMOD_RESULT F_API create(System **system, unsigned int headerversion = FMOD_VERSION); - FMOD_RESULT F_API setAdvancedSettings(FMOD_STUDIO_ADVANCEDSETTINGS *settings); - FMOD_RESULT F_API getAdvancedSettings(FMOD_STUDIO_ADVANCEDSETTINGS *settings); - FMOD_RESULT F_API initialize(int maxchannels, FMOD_STUDIO_INITFLAGS studioflags, FMOD_INITFLAGS flags, void *extradriverdata); - FMOD_RESULT F_API release(); - - // Handle validity - bool F_API isValid() const; - - // Update processing - FMOD_RESULT F_API update(); - FMOD_RESULT F_API flushCommands(); - FMOD_RESULT F_API flushSampleLoading(); - - // Low-level API access - FMOD_RESULT F_API getCoreSystem(FMOD::System **system) const; - - // Asset retrieval - FMOD_RESULT F_API getEvent(const char *path, EventDescription **event) const; - FMOD_RESULT F_API getBus(const char *path, Bus **bus) const; - FMOD_RESULT F_API getVCA(const char *path, VCA **vca) const; - FMOD_RESULT F_API getBank(const char *path, Bank **bank) const; - FMOD_RESULT F_API getEventByID(const FMOD_GUID *id, EventDescription **event) const; - FMOD_RESULT F_API getBusByID(const FMOD_GUID *id, Bus **bus) const; - FMOD_RESULT F_API getVCAByID(const FMOD_GUID *id, VCA **vca) const; - FMOD_RESULT F_API getBankByID(const FMOD_GUID *id, Bank **bank) const; - FMOD_RESULT F_API getSoundInfo(const char *key, FMOD_STUDIO_SOUND_INFO *info) const; - FMOD_RESULT F_API getParameterDescriptionByName(const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const; - FMOD_RESULT F_API getParameterDescriptionByID(FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const; - FMOD_RESULT F_API getParameterLabelByName(const char *name, int labelindex, char *label, int size, int *retrieved) const; - FMOD_RESULT F_API getParameterLabelByID(FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved) const; - - // Global parameter control - FMOD_RESULT F_API getParameterByID(FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue = 0) const; - FMOD_RESULT F_API setParameterByID(FMOD_STUDIO_PARAMETER_ID id, float value, bool ignoreseekspeed = false); - FMOD_RESULT F_API setParameterByIDWithLabel(FMOD_STUDIO_PARAMETER_ID id, const char *label, bool ignoreseekspeed = false); - FMOD_RESULT F_API setParametersByIDs(const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, bool ignoreseekspeed = false); - FMOD_RESULT F_API getParameterByName(const char *name, float *value, float *finalvalue = 0) const; - FMOD_RESULT F_API setParameterByName(const char *name, float value, bool ignoreseekspeed = false); - FMOD_RESULT F_API setParameterByNameWithLabel(const char *name, const char *label, bool ignoreseekspeed = false); - - // Path lookup - FMOD_RESULT F_API lookupID(const char *path, FMOD_GUID *id) const; - FMOD_RESULT F_API lookupPath(const FMOD_GUID *id, char *path, int size, int *retrieved) const; - - // Listener control - FMOD_RESULT F_API getNumListeners(int *numlisteners); - FMOD_RESULT F_API setNumListeners(int numlisteners); - FMOD_RESULT F_API getListenerAttributes(int listener, FMOD_3D_ATTRIBUTES *attributes, FMOD_VECTOR *attenuationposition = 0) const; - FMOD_RESULT F_API setListenerAttributes(int listener, const FMOD_3D_ATTRIBUTES *attributes, const FMOD_VECTOR *attenuationposition = 0); - FMOD_RESULT F_API getListenerWeight(int listener, float *weight); - FMOD_RESULT F_API setListenerWeight(int listener, float weight); - - // Bank control - FMOD_RESULT F_API loadBankFile(const char *filename, FMOD_STUDIO_LOAD_BANK_FLAGS flags, Bank **bank); - FMOD_RESULT F_API loadBankMemory(const char *buffer, int length, FMOD_STUDIO_LOAD_MEMORY_MODE mode, FMOD_STUDIO_LOAD_BANK_FLAGS flags, Bank **bank); - FMOD_RESULT F_API loadBankCustom(const FMOD_STUDIO_BANK_INFO *info, FMOD_STUDIO_LOAD_BANK_FLAGS flags, Bank **bank); - FMOD_RESULT F_API unloadAll(); - - // General functionality - FMOD_RESULT F_API getBufferUsage(FMOD_STUDIO_BUFFER_USAGE *usage) const; - FMOD_RESULT F_API resetBufferUsage(); - FMOD_RESULT F_API registerPlugin(const FMOD_DSP_DESCRIPTION *description); - FMOD_RESULT F_API unregisterPlugin(const char *name); - - // Enumeration - FMOD_RESULT F_API getBankCount(int *count) const; - FMOD_RESULT F_API getBankList(Bank **array, int capacity, int *count) const; - FMOD_RESULT F_API getParameterDescriptionCount(int *count) const; - FMOD_RESULT F_API getParameterDescriptionList(FMOD_STUDIO_PARAMETER_DESCRIPTION *array, int capacity, int *count) const; - - // Command capture and replay - FMOD_RESULT F_API startCommandCapture(const char *filename, FMOD_STUDIO_COMMANDCAPTURE_FLAGS flags); - FMOD_RESULT F_API stopCommandCapture(); - FMOD_RESULT F_API loadCommandReplay(const char *filename, FMOD_STUDIO_COMMANDREPLAY_FLAGS flags, CommandReplay **replay); - - // Callbacks - FMOD_RESULT F_API setCallback(FMOD_STUDIO_SYSTEM_CALLBACK callback, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE callbackmask = FMOD_STUDIO_SYSTEM_CALLBACK_ALL); - FMOD_RESULT F_API getUserData(void **userdata) const; - FMOD_RESULT F_API setUserData(void *userdata); - - // Monitoring - FMOD_RESULT F_API getCPUUsage(FMOD_STUDIO_CPU_USAGE *usage, FMOD_CPU_USAGE *usage_core) const; - FMOD_RESULT F_API getMemoryUsage(FMOD_STUDIO_MEMORY_USAGE *memoryusage) const; - }; - - class EventDescription - { - private: - // Constructor made private so user cannot statically instance the class. - EventDescription(); - EventDescription(const EventDescription &); - - public: - // Handle validity - bool F_API isValid() const; - - // Property access - FMOD_RESULT F_API getID(FMOD_GUID *id) const; - FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const; - FMOD_RESULT F_API getParameterDescriptionCount(int *count) const; - FMOD_RESULT F_API getParameterDescriptionByIndex(int index, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const; - FMOD_RESULT F_API getParameterDescriptionByName(const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const; - FMOD_RESULT F_API getParameterDescriptionByID(FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const; - FMOD_RESULT F_API getParameterLabelByIndex(int index, int labelindex, char *label, int size, int *retrieved) const; - FMOD_RESULT F_API getParameterLabelByName(const char *name, int labelindex, char *label, int size, int *retrieved) const; - FMOD_RESULT F_API getParameterLabelByID(FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved) const; - FMOD_RESULT F_API getUserPropertyCount(int *count) const; - FMOD_RESULT F_API getUserPropertyByIndex(int index, FMOD_STUDIO_USER_PROPERTY *property) const; - FMOD_RESULT F_API getUserProperty(const char *name, FMOD_STUDIO_USER_PROPERTY *property) const; - FMOD_RESULT F_API getLength(int *length) const; - FMOD_RESULT F_API getMinMaxDistance(float *min, float *max) const; - FMOD_RESULT F_API getSoundSize(float *size) const; - - FMOD_RESULT F_API isSnapshot(bool *snapshot) const; - FMOD_RESULT F_API isOneshot(bool *oneshot) const; - FMOD_RESULT F_API isStream(bool *isStream) const; - FMOD_RESULT F_API is3D(bool *is3d) const; - FMOD_RESULT F_API isDopplerEnabled(bool *doppler) const; - FMOD_RESULT F_API hasSustainPoint(bool *sustainPoint) const; - - // Playback control - FMOD_RESULT F_API createInstance(EventInstance **instance) const; - FMOD_RESULT F_API getInstanceCount(int *count) const; - FMOD_RESULT F_API getInstanceList(EventInstance **array, int capacity, int *count) const; - - // Sample data loading control - FMOD_RESULT F_API loadSampleData(); - FMOD_RESULT F_API unloadSampleData(); - FMOD_RESULT F_API getSampleLoadingState(FMOD_STUDIO_LOADING_STATE *state) const; - - // Convenience functions - FMOD_RESULT F_API releaseAllInstances(); - - // Callbacks - FMOD_RESULT F_API setCallback(FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask = FMOD_STUDIO_EVENT_CALLBACK_ALL); - FMOD_RESULT F_API getUserData(void **userdata) const; - FMOD_RESULT F_API setUserData(void *userdata); - }; - - class EventInstance - { - private: - // Constructor made private so user cannot statically instance the class. - EventInstance(); - EventInstance(const EventInstance &); - - public: - // Handle validity - bool F_API isValid() const; - - // Property access - FMOD_RESULT F_API getDescription(EventDescription **description) const; - - // Playback control - FMOD_RESULT F_API getVolume(float *volume, float *finalvolume = 0) const; - FMOD_RESULT F_API setVolume(float volume); - - FMOD_RESULT F_API getPitch(float *pitch, float *finalpitch = 0) const; - FMOD_RESULT F_API setPitch(float pitch); - - FMOD_RESULT F_API get3DAttributes(FMOD_3D_ATTRIBUTES *attributes) const; - FMOD_RESULT F_API set3DAttributes(const FMOD_3D_ATTRIBUTES *attributes); - - FMOD_RESULT F_API getListenerMask(unsigned int *mask) const; - FMOD_RESULT F_API setListenerMask(unsigned int mask); - - FMOD_RESULT F_API getProperty(FMOD_STUDIO_EVENT_PROPERTY index, float *value) const; - FMOD_RESULT F_API setProperty(FMOD_STUDIO_EVENT_PROPERTY index, float value); - - FMOD_RESULT F_API getReverbLevel(int index, float *level) const; - FMOD_RESULT F_API setReverbLevel(int index, float level); - - FMOD_RESULT F_API getPaused(bool *paused) const; - FMOD_RESULT F_API setPaused(bool paused); - - FMOD_RESULT F_API start(); - FMOD_RESULT F_API stop(FMOD_STUDIO_STOP_MODE mode); - - FMOD_RESULT F_API getTimelinePosition(int *position) const; - FMOD_RESULT F_API setTimelinePosition(int position); - - FMOD_RESULT F_API getPlaybackState(FMOD_STUDIO_PLAYBACK_STATE *state) const; - - FMOD_RESULT F_API getChannelGroup(ChannelGroup **group) const; - - FMOD_RESULT F_API getMinMaxDistance(float *min, float *max) const; - - FMOD_RESULT F_API release(); - - FMOD_RESULT F_API isVirtual(bool *virtualstate) const; - - FMOD_RESULT F_API getParameterByID(FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue = 0) const; - FMOD_RESULT F_API setParameterByID(FMOD_STUDIO_PARAMETER_ID id, float value, bool ignoreseekspeed = false); - FMOD_RESULT F_API setParameterByIDWithLabel(FMOD_STUDIO_PARAMETER_ID id, const char* label, bool ignoreseekspeed = false); - FMOD_RESULT F_API setParametersByIDs(const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, bool ignoreseekspeed = false); - - FMOD_RESULT F_API getParameterByName(const char *name, float *value, float *finalvalue = 0) const; - FMOD_RESULT F_API setParameterByName(const char *name, float value, bool ignoreseekspeed = false); - FMOD_RESULT F_API setParameterByNameWithLabel(const char *name, const char* label, bool ignoreseekspeed = false); - - FMOD_RESULT F_API keyOff(); - - // Monitoring - FMOD_RESULT F_API getCPUUsage(unsigned int *exclusive, unsigned int *inclusive) const; - FMOD_RESULT F_API getMemoryUsage(FMOD_STUDIO_MEMORY_USAGE *memoryusage) const; - - // Callbacks - FMOD_RESULT F_API setCallback(FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask = FMOD_STUDIO_EVENT_CALLBACK_ALL); - FMOD_RESULT F_API getUserData(void **userdata) const; - FMOD_RESULT F_API setUserData(void *userdata); - }; - - class Bus - { - private: - // Constructor made private so user cannot statically instance the class. - Bus(); - Bus(const Bus &); - - public: - // Handle validity - bool F_API isValid() const; - - // Property access - FMOD_RESULT F_API getID(FMOD_GUID *id) const; - FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const; - - // Playback control - FMOD_RESULT F_API getVolume(float *volume, float *finalvolume = 0) const; - FMOD_RESULT F_API setVolume(float volume); - - FMOD_RESULT F_API getPaused(bool *paused) const; - FMOD_RESULT F_API setPaused(bool paused); - - FMOD_RESULT F_API getMute(bool *mute) const; - FMOD_RESULT F_API setMute(bool mute); - - FMOD_RESULT F_API stopAllEvents(FMOD_STUDIO_STOP_MODE mode); - - // Output port - FMOD_RESULT F_API getPortIndex(FMOD_PORT_INDEX *index) const; - FMOD_RESULT F_API setPortIndex(FMOD_PORT_INDEX index); - - // Low-level API access - FMOD_RESULT F_API lockChannelGroup(); - FMOD_RESULT F_API unlockChannelGroup(); - FMOD_RESULT F_API getChannelGroup(FMOD::ChannelGroup **group) const; - - // Monitoring - FMOD_RESULT F_API getCPUUsage(unsigned int *exclusive, unsigned int *inclusive) const; - FMOD_RESULT F_API getMemoryUsage(FMOD_STUDIO_MEMORY_USAGE *memoryusage) const; - }; - - class VCA - { - private: - // Constructor made private so user cannot statically instance the class. - VCA(); - VCA(const VCA &); - - public: - // Handle validity - bool F_API isValid() const; - - // Property access - FMOD_RESULT F_API getID(FMOD_GUID *id) const; - FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const; - - // Playback control - FMOD_RESULT F_API getVolume(float *volume, float *finalvolume = 0) const; - FMOD_RESULT F_API setVolume(float volume); - }; - - class Bank - { - private: - // Constructor made private so user cannot statically instance the class. - Bank(); - Bank(const Bank &); - - public: - // Handle validity - bool F_API isValid() const; - - // Property access - FMOD_RESULT F_API getID(FMOD_GUID *id) const; - FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const; - - // Loading control - FMOD_RESULT F_API unload(); - FMOD_RESULT F_API loadSampleData(); - FMOD_RESULT F_API unloadSampleData(); - - FMOD_RESULT F_API getLoadingState(FMOD_STUDIO_LOADING_STATE *state) const; - FMOD_RESULT F_API getSampleLoadingState(FMOD_STUDIO_LOADING_STATE *state) const; - - // Enumeration - FMOD_RESULT F_API getStringCount(int *count) const; - FMOD_RESULT F_API getStringInfo(int index, FMOD_GUID *id, char *path, int size, int *retrieved) const; - FMOD_RESULT F_API getEventCount(int *count) const; - FMOD_RESULT F_API getEventList(EventDescription **array, int capacity, int *count) const; - FMOD_RESULT F_API getBusCount(int *count) const; - FMOD_RESULT F_API getBusList(Bus **array, int capacity, int *count) const; - FMOD_RESULT F_API getVCACount(int *count) const; - FMOD_RESULT F_API getVCAList(VCA **array, int capacity, int *count) const; - - FMOD_RESULT F_API getUserData(void **userdata) const; - FMOD_RESULT F_API setUserData(void *userdata); - }; - - class CommandReplay - { - private: - // Constructor made private so user cannot statically instance the class. - CommandReplay(); - CommandReplay(const CommandReplay &); - - public: - // Handle validity - bool F_API isValid() const; - - // Information query - FMOD_RESULT F_API getSystem(System **system) const; - FMOD_RESULT F_API getLength(float *length) const; - - FMOD_RESULT F_API getCommandCount(int *count) const; - FMOD_RESULT F_API getCommandInfo(int commandindex, FMOD_STUDIO_COMMAND_INFO *info) const; - FMOD_RESULT F_API getCommandString(int commandindex, char *buffer, int length) const; - FMOD_RESULT F_API getCommandAtTime(float time, int *commandindex) const; - - // Playback - FMOD_RESULT F_API setBankPath(const char *bankPath); - FMOD_RESULT F_API start(); - FMOD_RESULT F_API stop(); - FMOD_RESULT F_API seekToTime(float time); - FMOD_RESULT F_API seekToCommand(int commandindex); - FMOD_RESULT F_API getPaused(bool *paused) const; - FMOD_RESULT F_API setPaused(bool paused); - FMOD_RESULT F_API getPlaybackState(FMOD_STUDIO_PLAYBACK_STATE *state) const; - FMOD_RESULT F_API getCurrentCommand(int *commandindex, float *currenttime) const; - - // Release - FMOD_RESULT F_API release(); - - // Callbacks - FMOD_RESULT F_API setFrameCallback(FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK callback); - FMOD_RESULT F_API setLoadBankCallback(FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK callback); - FMOD_RESULT F_API setCreateInstanceCallback(FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK callback); - - FMOD_RESULT F_API getUserData(void **userdata) const; - FMOD_RESULT F_API setUserData(void *userdata); - }; - -} // namespace Studio - -} // namespace FMOD - -#endif //FMOD_STUDIO_HPP diff --git a/Toshi/vendor/fmod/include/fmod/studio/fmod_studio_common.h b/Toshi/vendor/fmod/include/fmod/studio/fmod_studio_common.h deleted file mode 100644 index c03d101..0000000 --- a/Toshi/vendor/fmod/include/fmod/studio/fmod_studio_common.h +++ /dev/null @@ -1,336 +0,0 @@ -/* ======================================================================================== */ -/* FMOD Studio API - Common C/C++ header file. */ -/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2022. */ -/* */ -/* This header defines common enumerations, structs and callbacks that are shared between */ -/* the C and C++ interfaces. */ -/* */ -/* For more detail visit: */ -/* https://fmod.com/docs/2.02/api/studio-api.html */ -/* ======================================================================================== */ -#ifndef FMOD_STUDIO_COMMON_H -#define FMOD_STUDIO_COMMON_H - -#include "fmod.h" - -/* - FMOD Studio types. -*/ -typedef struct FMOD_STUDIO_SYSTEM FMOD_STUDIO_SYSTEM; -typedef struct FMOD_STUDIO_EVENTDESCRIPTION FMOD_STUDIO_EVENTDESCRIPTION; -typedef struct FMOD_STUDIO_EVENTINSTANCE FMOD_STUDIO_EVENTINSTANCE; -typedef struct FMOD_STUDIO_BUS FMOD_STUDIO_BUS; -typedef struct FMOD_STUDIO_VCA FMOD_STUDIO_VCA; -typedef struct FMOD_STUDIO_BANK FMOD_STUDIO_BANK; -typedef struct FMOD_STUDIO_COMMANDREPLAY FMOD_STUDIO_COMMANDREPLAY; - -/* - FMOD Studio constants -*/ -#define FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT 32 - -typedef unsigned int FMOD_STUDIO_INITFLAGS; -#define FMOD_STUDIO_INIT_NORMAL 0x00000000 -#define FMOD_STUDIO_INIT_LIVEUPDATE 0x00000001 -#define FMOD_STUDIO_INIT_ALLOW_MISSING_PLUGINS 0x00000002 -#define FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE 0x00000004 -#define FMOD_STUDIO_INIT_DEFERRED_CALLBACKS 0x00000008 -#define FMOD_STUDIO_INIT_LOAD_FROM_UPDATE 0x00000010 -#define FMOD_STUDIO_INIT_MEMORY_TRACKING 0x00000020 - -typedef unsigned int FMOD_STUDIO_PARAMETER_FLAGS; -#define FMOD_STUDIO_PARAMETER_READONLY 0x00000001 -#define FMOD_STUDIO_PARAMETER_AUTOMATIC 0x00000002 -#define FMOD_STUDIO_PARAMETER_GLOBAL 0x00000004 -#define FMOD_STUDIO_PARAMETER_DISCRETE 0x00000008 -#define FMOD_STUDIO_PARAMETER_LABELED 0x00000010 - -typedef unsigned int FMOD_STUDIO_SYSTEM_CALLBACK_TYPE; -#define FMOD_STUDIO_SYSTEM_CALLBACK_PREUPDATE 0x00000001 -#define FMOD_STUDIO_SYSTEM_CALLBACK_POSTUPDATE 0x00000002 -#define FMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOAD 0x00000004 -#define FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_CONNECTED 0x00000008 -#define FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_DISCONNECTED 0x00000010 -#define FMOD_STUDIO_SYSTEM_CALLBACK_ALL 0xFFFFFFFF - -typedef unsigned int FMOD_STUDIO_EVENT_CALLBACK_TYPE; -#define FMOD_STUDIO_EVENT_CALLBACK_CREATED 0x00000001 -#define FMOD_STUDIO_EVENT_CALLBACK_DESTROYED 0x00000002 -#define FMOD_STUDIO_EVENT_CALLBACK_STARTING 0x00000004 -#define FMOD_STUDIO_EVENT_CALLBACK_STARTED 0x00000008 -#define FMOD_STUDIO_EVENT_CALLBACK_RESTARTED 0x00000010 -#define FMOD_STUDIO_EVENT_CALLBACK_STOPPED 0x00000020 -#define FMOD_STUDIO_EVENT_CALLBACK_START_FAILED 0x00000040 -#define FMOD_STUDIO_EVENT_CALLBACK_CREATE_PROGRAMMER_SOUND 0x00000080 -#define FMOD_STUDIO_EVENT_CALLBACK_DESTROY_PROGRAMMER_SOUND 0x00000100 -#define FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_CREATED 0x00000200 -#define FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_DESTROYED 0x00000400 -#define FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER 0x00000800 -#define FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT 0x00001000 -#define FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED 0x00002000 -#define FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED 0x00004000 -#define FMOD_STUDIO_EVENT_CALLBACK_REAL_TO_VIRTUAL 0x00008000 -#define FMOD_STUDIO_EVENT_CALLBACK_VIRTUAL_TO_REAL 0x00010000 -#define FMOD_STUDIO_EVENT_CALLBACK_START_EVENT_COMMAND 0x00020000 -#define FMOD_STUDIO_EVENT_CALLBACK_NESTED_TIMELINE_BEAT 0x00040000 -#define FMOD_STUDIO_EVENT_CALLBACK_ALL 0xFFFFFFFF - -typedef unsigned int FMOD_STUDIO_LOAD_BANK_FLAGS; -#define FMOD_STUDIO_LOAD_BANK_NORMAL 0x00000000 -#define FMOD_STUDIO_LOAD_BANK_NONBLOCKING 0x00000001 -#define FMOD_STUDIO_LOAD_BANK_DECOMPRESS_SAMPLES 0x00000002 -#define FMOD_STUDIO_LOAD_BANK_UNENCRYPTED 0x00000004 - -typedef unsigned int FMOD_STUDIO_COMMANDCAPTURE_FLAGS; -#define FMOD_STUDIO_COMMANDCAPTURE_NORMAL 0x00000000 -#define FMOD_STUDIO_COMMANDCAPTURE_FILEFLUSH 0x00000001 -#define FMOD_STUDIO_COMMANDCAPTURE_SKIP_INITIAL_STATE 0x00000002 - -typedef unsigned int FMOD_STUDIO_COMMANDREPLAY_FLAGS; -#define FMOD_STUDIO_COMMANDREPLAY_NORMAL 0x00000000 -#define FMOD_STUDIO_COMMANDREPLAY_SKIP_CLEANUP 0x00000001 -#define FMOD_STUDIO_COMMANDREPLAY_FAST_FORWARD 0x00000002 -#define FMOD_STUDIO_COMMANDREPLAY_SKIP_BANK_LOAD 0x00000004 - -typedef enum FMOD_STUDIO_LOADING_STATE -{ - FMOD_STUDIO_LOADING_STATE_UNLOADING, - FMOD_STUDIO_LOADING_STATE_UNLOADED, - FMOD_STUDIO_LOADING_STATE_LOADING, - FMOD_STUDIO_LOADING_STATE_LOADED, - FMOD_STUDIO_LOADING_STATE_ERROR, - - FMOD_STUDIO_LOADING_STATE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ -} FMOD_STUDIO_LOADING_STATE; - -typedef enum FMOD_STUDIO_LOAD_MEMORY_MODE -{ - FMOD_STUDIO_LOAD_MEMORY, - FMOD_STUDIO_LOAD_MEMORY_POINT, - - FMOD_STUDIO_LOAD_MEMORY_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ -} FMOD_STUDIO_LOAD_MEMORY_MODE; - -typedef enum FMOD_STUDIO_PARAMETER_TYPE -{ - FMOD_STUDIO_PARAMETER_GAME_CONTROLLED, - FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE, - FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_CONE_ANGLE, - FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_ORIENTATION, - FMOD_STUDIO_PARAMETER_AUTOMATIC_DIRECTION, - FMOD_STUDIO_PARAMETER_AUTOMATIC_ELEVATION, - FMOD_STUDIO_PARAMETER_AUTOMATIC_LISTENER_ORIENTATION, - FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED, - FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED_ABSOLUTE, - FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE_NORMALIZED, - - FMOD_STUDIO_PARAMETER_MAX, - FMOD_STUDIO_PARAMETER_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ -} FMOD_STUDIO_PARAMETER_TYPE; - -typedef enum FMOD_STUDIO_USER_PROPERTY_TYPE -{ - FMOD_STUDIO_USER_PROPERTY_TYPE_INTEGER, - FMOD_STUDIO_USER_PROPERTY_TYPE_BOOLEAN, - FMOD_STUDIO_USER_PROPERTY_TYPE_FLOAT, - FMOD_STUDIO_USER_PROPERTY_TYPE_STRING, - - FMOD_STUDIO_USER_PROPERTY_TYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ -} FMOD_STUDIO_USER_PROPERTY_TYPE; - -typedef enum FMOD_STUDIO_EVENT_PROPERTY -{ - FMOD_STUDIO_EVENT_PROPERTY_CHANNELPRIORITY, - FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_DELAY, - FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_LOOKAHEAD, - FMOD_STUDIO_EVENT_PROPERTY_MINIMUM_DISTANCE, - FMOD_STUDIO_EVENT_PROPERTY_MAXIMUM_DISTANCE, - FMOD_STUDIO_EVENT_PROPERTY_COOLDOWN, - FMOD_STUDIO_EVENT_PROPERTY_MAX, - - FMOD_STUDIO_EVENT_PROPERTY_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ -} FMOD_STUDIO_EVENT_PROPERTY; - -typedef enum FMOD_STUDIO_PLAYBACK_STATE -{ - FMOD_STUDIO_PLAYBACK_PLAYING, - FMOD_STUDIO_PLAYBACK_SUSTAINING, - FMOD_STUDIO_PLAYBACK_STOPPED, - FMOD_STUDIO_PLAYBACK_STARTING, - FMOD_STUDIO_PLAYBACK_STOPPING, - - FMOD_STUDIO_PLAYBACK_FORCEINT = 65536 -} FMOD_STUDIO_PLAYBACK_STATE; - -typedef enum FMOD_STUDIO_STOP_MODE -{ - FMOD_STUDIO_STOP_ALLOWFADEOUT, - FMOD_STUDIO_STOP_IMMEDIATE, - - FMOD_STUDIO_STOP_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ -} FMOD_STUDIO_STOP_MODE; - -typedef enum FMOD_STUDIO_INSTANCETYPE -{ - FMOD_STUDIO_INSTANCETYPE_NONE, - FMOD_STUDIO_INSTANCETYPE_SYSTEM, - FMOD_STUDIO_INSTANCETYPE_EVENTDESCRIPTION, - FMOD_STUDIO_INSTANCETYPE_EVENTINSTANCE, - FMOD_STUDIO_INSTANCETYPE_PARAMETERINSTANCE, - FMOD_STUDIO_INSTANCETYPE_BUS, - FMOD_STUDIO_INSTANCETYPE_VCA, - FMOD_STUDIO_INSTANCETYPE_BANK, - FMOD_STUDIO_INSTANCETYPE_COMMANDREPLAY, - - FMOD_STUDIO_INSTANCETYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ -} FMOD_STUDIO_INSTANCETYPE; - -/* - FMOD Studio structures -*/ -typedef struct FMOD_STUDIO_BANK_INFO -{ - int size; - void *userdata; - int userdatalength; - FMOD_FILE_OPEN_CALLBACK opencallback; - FMOD_FILE_CLOSE_CALLBACK closecallback; - FMOD_FILE_READ_CALLBACK readcallback; - FMOD_FILE_SEEK_CALLBACK seekcallback; -} FMOD_STUDIO_BANK_INFO; - -typedef struct FMOD_STUDIO_PARAMETER_ID -{ - unsigned int data1; - unsigned int data2; -} FMOD_STUDIO_PARAMETER_ID; - -typedef struct FMOD_STUDIO_PARAMETER_DESCRIPTION -{ - const char *name; - FMOD_STUDIO_PARAMETER_ID id; - float minimum; - float maximum; - float defaultvalue; - FMOD_STUDIO_PARAMETER_TYPE type; - FMOD_STUDIO_PARAMETER_FLAGS flags; - FMOD_GUID guid; -} FMOD_STUDIO_PARAMETER_DESCRIPTION; - -typedef struct FMOD_STUDIO_USER_PROPERTY -{ - const char *name; - FMOD_STUDIO_USER_PROPERTY_TYPE type; - - union - { - int intvalue; - FMOD_BOOL boolvalue; - float floatvalue; - const char *stringvalue; - }; -} FMOD_STUDIO_USER_PROPERTY; - -typedef struct FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES -{ - const char *name; - FMOD_SOUND *sound; - int subsoundIndex; -} FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES; - -typedef struct FMOD_STUDIO_PLUGIN_INSTANCE_PROPERTIES -{ - const char *name; - FMOD_DSP *dsp; -} FMOD_STUDIO_PLUGIN_INSTANCE_PROPERTIES; - -typedef struct FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES -{ - const char *name; - int position; -} FMOD_STUDIO_TIMELINE_MARKER_PROPERTIES; - -typedef struct FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES -{ - int bar; - int beat; - int position; - float tempo; - int timesignatureupper; - int timesignaturelower; -} FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES; - -typedef struct FMOD_STUDIO_TIMELINE_NESTED_BEAT_PROPERTIES -{ - FMOD_GUID eventid; - FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES properties; -} FMOD_STUDIO_TIMELINE_NESTED_BEAT_PROPERTIES; - -typedef struct FMOD_STUDIO_ADVANCEDSETTINGS -{ - int cbsize; - unsigned int commandqueuesize; - unsigned int handleinitialsize; - int studioupdateperiod; - int idlesampledatapoolsize; - unsigned int streamingscheduledelay; - const char* encryptionkey; -} FMOD_STUDIO_ADVANCEDSETTINGS; - -typedef struct FMOD_STUDIO_CPU_USAGE -{ - float update; -} FMOD_STUDIO_CPU_USAGE; - -typedef struct FMOD_STUDIO_BUFFER_INFO -{ - int currentusage; - int peakusage; - int capacity; - int stallcount; - float stalltime; -} FMOD_STUDIO_BUFFER_INFO; - -typedef struct FMOD_STUDIO_BUFFER_USAGE -{ - FMOD_STUDIO_BUFFER_INFO studiocommandqueue; - FMOD_STUDIO_BUFFER_INFO studiohandle; -} FMOD_STUDIO_BUFFER_USAGE; - -typedef struct FMOD_STUDIO_SOUND_INFO -{ - const char *name_or_data; - FMOD_MODE mode; - FMOD_CREATESOUNDEXINFO exinfo; - int subsoundindex; -} FMOD_STUDIO_SOUND_INFO; - -typedef struct FMOD_STUDIO_COMMAND_INFO -{ - const char *commandname; - int parentcommandindex; - int framenumber; - float frametime; - FMOD_STUDIO_INSTANCETYPE instancetype; - FMOD_STUDIO_INSTANCETYPE outputtype; - unsigned int instancehandle; - unsigned int outputhandle; -} FMOD_STUDIO_COMMAND_INFO; - -typedef struct FMOD_STUDIO_MEMORY_USAGE -{ - int exclusive; - int inclusive; - int sampledata; -} FMOD_STUDIO_MEMORY_USAGE; - -/* - FMOD Studio callbacks. -*/ -typedef FMOD_RESULT (F_CALLBACK *FMOD_STUDIO_SYSTEM_CALLBACK) (FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE type, void *commanddata, void *userdata); -typedef FMOD_RESULT (F_CALLBACK *FMOD_STUDIO_EVENT_CALLBACK) (FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE *event, void *parameters); -typedef FMOD_RESULT (F_CALLBACK *FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK) (FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, float currenttime, void *userdata); -typedef FMOD_RESULT (F_CALLBACK *FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK) (FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, const FMOD_GUID *bankguid, const char *bankfilename, FMOD_STUDIO_LOAD_BANK_FLAGS flags, FMOD_STUDIO_BANK **bank, void *userdata); -typedef FMOD_RESULT (F_CALLBACK *FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK) (FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENTINSTANCE **instance, void *userdata); - -#endif // FMOD_STUDIO_COMMON_H diff --git a/Toshi/vendor/fmod/include/fmod_errors.h b/Toshi/vendor/fmod/include/fmod_errors.h new file mode 100644 index 0000000..31b13da --- /dev/null +++ b/Toshi/vendor/fmod/include/fmod_errors.h @@ -0,0 +1,32 @@ +#ifndef _FMOD_ERRORS_H +#define _FMOD_ERRORS_H + +static char *FMOD_ErrorString(int errcode) +{ + switch (errcode) + { + case FMOD_ERR_NONE: return "No errors"; + case FMOD_ERR_BUSY: return "Cannot call this command after FSOUND_Init. Call FSOUND_Close first."; + case FMOD_ERR_UNINITIALIZED: return "This command failed because FSOUND_Init was not called or called properly"; + case FMOD_ERR_PLAY: return "Playing the sound failed."; + case FMOD_ERR_INIT: return "Error initializing output device."; + case FMOD_ERR_ALLOCATED: return "The output device is already in use and cannot be reused."; + case FMOD_ERR_OUTPUT_FORMAT: return "Soundcard does not support the features needed for this soundsystem (16bit stereo output)"; + case FMOD_ERR_COOPERATIVELEVEL: return "Error setting cooperative level for hardware."; + case FMOD_ERR_CREATEBUFFER: return "Error creating hardware sound buffer."; + case FMOD_ERR_FILE_NOTFOUND: return "File not found"; + case FMOD_ERR_FILE_FORMAT: return "Unknown file format"; + case FMOD_ERR_FILE_BAD: return "Error loading file"; + case FMOD_ERR_MEMORY: return "Not enough memory "; + case FMOD_ERR_VERSION: return "The version number of this file format is not supported"; + case FMOD_ERR_INVALID_PARAM: return "An invalid parameter was passed to this function"; + case FMOD_ERR_NO_EAX: return "Tried to use an EAX command on a non EAX enabled channel or output."; + case FMOD_ERR_CHANNEL_ALLOC: return "Failed to allocate a new channel"; + case FMOD_ERR_RECORD: return "Recording not supported on this device"; + case FMOD_ERR_MEDIAPLAYER: return "Required Mediaplayer codec is not installed"; + + default : return "Unknown error"; + }; +}; + +#endif diff --git a/Toshi/vendor/fmod/include/fmoddyn.h b/Toshi/vendor/fmod/include/fmoddyn.h new file mode 100644 index 0000000..f4a8601 --- /dev/null +++ b/Toshi/vendor/fmod/include/fmoddyn.h @@ -0,0 +1,463 @@ +/* ========================================================================================== */ +/* FMOD Dynamic DLL loading header. Copyright (c), Firelight Technologies Pty, Ltd 1999-2002. */ +/* ========================================================================================== */ + +#ifndef _FMODDYN_H_ +#define _FMODDYN_H_ + +#include +#include +#include "fmod.h" + +typedef struct +{ + HMODULE module; + + signed char (F_API *FSOUND_SetOutput)(int outputtype); + signed char (F_API *FSOUND_SetDriver)(int driver); + signed char (F_API *FSOUND_SetMixer)(int mixer); + signed char (F_API *FSOUND_SetBufferSize)(int len_ms); + signed char (F_API *FSOUND_SetHWND)(void *hwnd); + signed char (F_API *FSOUND_SetMinHardwareChannels)(int min); + signed char (F_API *FSOUND_SetMaxHardwareChannels)(int max); + signed char (F_API *FSOUND_SetMemorySystem)(void *pool, int poollen, FSOUND_ALLOCCALLBACK useralloc, FSOUND_REALLOCCALLBACK userrealloc, FSOUND_FREECALLBACK userfree); + signed char (F_API *FSOUND_Init)(int mixrate, int maxsoftwarechannels, unsigned int flags); + void (F_API *FSOUND_Close)(); + void (F_API *FSOUND_SetSpeakerMode)(unsigned int speakermode); + void (F_API *FSOUND_SetSFXMasterVolume)(int volume); + void (F_API *FSOUND_SetPanSeperation)(float pansep); + void (F_API *FSOUND_File_SetCallbacks)(FSOUND_OPENCALLBACK useropen, FSOUND_CLOSECALLBACK userclose, FSOUND_READCALLBACK userread, FSOUND_SEEKCALLBACK userseek, FSOUND_TELLCALLBACK usertell); + int (F_API *FSOUND_GetError)(); + float (F_API *FSOUND_GetVersion)(); + int (F_API *FSOUND_GetOutput)(); + void * (F_API *FSOUND_GetOutputHandle)(); + int (F_API *FSOUND_GetDriver)(); + int (F_API *FSOUND_GetMixer)(); + int (F_API *FSOUND_GetNumDrivers)(); + signed char * (F_API *FSOUND_GetDriverName)(int id); + signed char (F_API *FSOUND_GetDriverCaps)(int id, unsigned int *caps); + int (F_API *FSOUND_GetOutputRate)(); + int (F_API *FSOUND_GetMaxChannels)(); + int (F_API *FSOUND_GetMaxSamples)(); + int (F_API *FSOUND_GetSFXMasterVolume)(); + int (F_API *FSOUND_GetNumHardwareChannels)(); + int (F_API *FSOUND_GetChannelsPlaying)(); + float (F_API *FSOUND_GetCPUUsage)(); + void (F_API *FSOUND_GetMemoryStats)(unsigned int *currentalloced, unsigned int *maxalloced); + FSOUND_SAMPLE * (F_API *FSOUND_Sample_Load)(int index, const char *name_or_data, unsigned int mode, int memlength); + FSOUND_SAMPLE * (F_API *FSOUND_Sample_Alloc)(int index, int length, unsigned int mode, int deffreq, int defvol, int defpan, int defpri); + void (F_API *FSOUND_Sample_Free)(FSOUND_SAMPLE *sptr); + signed char (F_API *FSOUND_Sample_Upload)(FSOUND_SAMPLE *sptr, void *srcdata, unsigned int mode); + signed char (F_API *FSOUND_Sample_Lock)(FSOUND_SAMPLE *sptr, int offset, int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); + signed char (F_API *FSOUND_Sample_Unlock)(FSOUND_SAMPLE *sptr, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); + signed char (F_API *FSOUND_Sample_SetMode)(FSOUND_SAMPLE *sptr, unsigned int mode); + signed char (F_API *FSOUND_Sample_SetLoopPoints)(FSOUND_SAMPLE *sptr, int loopstart, int loopend); + signed char (F_API *FSOUND_Sample_SetDefaults)(FSOUND_SAMPLE *sptr, int deffreq, int defvol, int defpan, int defpri); + signed char (F_API *FSOUND_Sample_SetMinMaxDistance)(FSOUND_SAMPLE *sptr, float min, float max); + signed char (F_API *FSOUND_Sample_SetMaxPlaybacks)(FSOUND_SAMPLE *sptr, int max); + FSOUND_SAMPLE * (F_API *FSOUND_Sample_Get)(int sampno); + char * (F_API *FSOUND_Sample_GetName)(FSOUND_SAMPLE *sptr); + unsigned int (F_API *FSOUND_Sample_GetLength)(FSOUND_SAMPLE *sptr); + signed char (F_API *FSOUND_Sample_GetLoopPoints)(FSOUND_SAMPLE *sptr, int *loopstart, int *loopend); + signed char (F_API *FSOUND_Sample_GetDefaults)(FSOUND_SAMPLE *sptr, int *deffreq, int *defvol, int *defpan, int *defpri); + unsigned int (F_API *FSOUND_Sample_GetMode)(FSOUND_SAMPLE *sptr); + int (F_API *FSOUND_PlaySound)(int channel, FSOUND_SAMPLE *sptr); + int (F_API *FSOUND_PlaySoundEx)(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused); + signed char (F_API *FSOUND_StopSound)(int channel); + signed char (F_API *FSOUND_SetFrequency)(int channel, int freq); + signed char (F_API *FSOUND_SetVolume)(int channel, int vol); + signed char (F_API *FSOUND_SetVolumeAbsolute)(int channel, int vol); + signed char (F_API *FSOUND_SetPan)(int channel, int pan); + signed char (F_API *FSOUND_SetSurround)(int channel, signed char surround); + signed char (F_API *FSOUND_SetMute)(int channel, signed char mute); + signed char (F_API *FSOUND_SetPriority)(int channel, int priority); + signed char (F_API *FSOUND_SetReserved)(int channel, signed char reserved); + signed char (F_API *FSOUND_SetPaused)(int channel, signed char paused); + signed char (F_API *FSOUND_SetLoopMode)(int channel, unsigned int loopmode); + signed char (F_API *FSOUND_SetCurrentPosition)(int channel, unsigned int offset); + signed char (F_API *FSOUND_IsPlaying)(int channel); + int (F_API *FSOUND_GetFrequency)(int channel); + int (F_API *FSOUND_GetVolume)(int channel); + int (F_API *FSOUND_GetPan)(int channel); + signed char (F_API *FSOUND_GetSurround)(int channel); + signed char (F_API *FSOUND_GetMute)(int channel); + int (F_API *FSOUND_GetPriority)(int channel); + signed char (F_API *FSOUND_GetReserved)(int channel); + signed char (F_API *FSOUND_GetPaused)(int channel); + unsigned int (F_API *FSOUND_GetLoopMode)(int channel); + unsigned int (F_API *FSOUND_GetCurrentPosition)(int channel); + FSOUND_SAMPLE * (F_API *FSOUND_GetCurrentSample)(int channel); + signed char (F_API *FSOUND_GetCurrentLevels)(int channel, float *l, float *r); + int (F_API *FSOUND_FX_Enable)(int channel, unsigned int fx); /* See FSOUND_FX_MODES */ + signed char (F_API *FSOUND_FX_Disable)(int channel); + signed char (F_API *FSOUND_FX_SetChorus)(int fxid, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase); + signed char (F_API *FSOUND_FX_SetCompressor)(int fxid, float Gain, float Attack, float Release, float Threshold, float Ratio, float Predelay); + signed char (F_API *FSOUND_FX_SetDistortion)(int fxid, float Gain, float Edge, float PostEQCenterFrequency, float PostEQBandwidth, float PreLowpassCutoff); + signed char (F_API *FSOUND_FX_SetEcho)(int fxid, float WetDryMix, float Feedback, float LeftDelay, float RightDelay, int PanDelay); + signed char (F_API *FSOUND_FX_SetFlanger)(int fxid, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase); + signed char (F_API *FSOUND_FX_SetGargle)(int fxid, int RateHz, int WaveShape); + signed char (F_API *FSOUND_FX_SetI3DL2Reverb)(int fxid, int Room, int RoomHF, float RoomRolloffFactor, float DecayTime, float DecayHFRatio, int Reflections, float ReflectionsDelay, int Reverb, float ReverbDelay, float Diffusion, float Density, float HFReference); + signed char (F_API *FSOUND_FX_SetParamEQ)(int fxid, float Center, float Bandwidth, float Gain); + signed char (F_API *FSOUND_FX_SetWavesReverb)(int fxid, float InGain, float ReverbMix, float ReverbTime, float HighFreqRTRatio); + void (F_API *FSOUND_Update)(); /* you must call this once a frame */ + void (F_API *FSOUND_3D_SetDopplerFactor)(float scale); + void (F_API *FSOUND_3D_SetDistanceFactor)(float scale); + void (F_API *FSOUND_3D_SetRolloffFactor)(float scale); + signed char (F_API *FSOUND_3D_SetAttributes)(int channel, float *pos, float *vel); + signed char (F_API *FSOUND_3D_GetAttributes)(int channel, float *pos, float *vel); + void (F_API *FSOUND_3D_Listener_SetCurrent)(int current, int numlisteners); /* use this if you use multiple listeners / splitscreen */ + void (F_API *FSOUND_3D_Listener_SetAttributes)(float *pos, float *vel, float fx, float fy, float fz, float tx, float ty, float tz); + void (F_API *FSOUND_3D_Listener_GetAttributes)(float *pos, float *vel, float *fx, float *fy, float *fz, float *tx, float *ty, float *tz); + signed char (F_API *FSOUND_Stream_SetBufferSize)(int ms); /* call this before opening streams, not after */ + FSOUND_STREAM * (F_API *FSOUND_Stream_OpenFile)(const char *filename, unsigned int mode, int memlength); + FSOUND_STREAM * (F_API *FSOUND_Stream_Create)(FSOUND_STREAMCALLBACK callback, int length, unsigned int mode, int samplerate, int userdata); + int (F_API *FSOUND_Stream_Play)(int channel, FSOUND_STREAM *stream); + int (F_API *FSOUND_Stream_PlayEx)(int channel, FSOUND_STREAM *stream, FSOUND_DSPUNIT *dsp, signed char startpaused); + signed char (F_API *FSOUND_Stream_Stop)(FSOUND_STREAM *stream); + signed char (F_API *FSOUND_Stream_Close)(FSOUND_STREAM *stream); + signed char (F_API *FSOUND_Stream_SetEndCallback)(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, int userdata); + signed char (F_API *FSOUND_Stream_SetSynchCallback)(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, int userdata); + FSOUND_SAMPLE * (F_API *FSOUND_Stream_GetSample)(FSOUND_STREAM *stream); /* every stream contains a sample to playback on */ + FSOUND_DSPUNIT *(F_API *FSOUND_Stream_CreateDSP)(FSOUND_STREAM *stream, FSOUND_DSPCALLBACK callback, int priority, int param); + signed char (F_API *FSOUND_Stream_SetPosition)(FSOUND_STREAM *stream, unsigned int position); + unsigned int (F_API *FSOUND_Stream_GetPosition)(FSOUND_STREAM *stream); + signed char (F_API *FSOUND_Stream_SetTime)(FSOUND_STREAM *stream, int ms); + int (F_API *FSOUND_Stream_GetTime)(FSOUND_STREAM *stream); + int (F_API *FSOUND_Stream_GetLength)(FSOUND_STREAM *stream); + int (F_API *FSOUND_Stream_GetLengthMs)(FSOUND_STREAM *stream); + signed char (F_API *FSOUND_Stream_SetSubStream)(FSOUND_STREAM *stream, int index); + int (F_API *FSOUND_Stream_GetNumSubStreams)(FSOUND_STREAM *stream); + signed char (F_API *FSOUND_Stream_SetLoopPoints)(FSOUND_STREAM *stream, unsigned int loopstartpcm, unsigned int loopendpcm); + int (F_API *FSOUND_Stream_AddSynchPoint)(FSOUND_STREAM *stream, unsigned int pcmoffset, int userdata); + signed char (F_API *FSOUND_Stream_DeleteSynchPoint)(FSOUND_STREAM *stream, int index); + int (F_API *FSOUND_Stream_GetNumSynchPoints)(FSOUND_STREAM *stream); + int (F_API *FSOUND_Stream_GetOpenState)(FSOUND_STREAM *stream); + signed char (F_API *FSOUND_CD_Play)(char drive, int track); + void (F_API *FSOUND_CD_SetPlayMode)(char drive, signed char mode); + signed char (F_API *FSOUND_CD_Stop)(char drive); + signed char (F_API *FSOUND_CD_SetPaused)(char drive, signed char paused); + signed char (F_API *FSOUND_CD_SetVolume)(char drive, int volume); + signed char (F_API *FSOUND_CD_Eject)(char drive); + signed char (F_API *FSOUND_CD_GetPaused)(char drive); + int (F_API *FSOUND_CD_GetTrack)(char drive); + int (F_API *FSOUND_CD_GetNumTracks)(char drive); + int (F_API *FSOUND_CD_GetVolume)(char drive); + int (F_API *FSOUND_CD_GetTrackLength)(char drive, int track); + int (F_API *FSOUND_CD_GetTrackTime)(char drive); + FSOUND_DSPUNIT *(F_API *FSOUND_DSP_Create)(FSOUND_DSPCALLBACK callback, int priority, int param); + void (F_API *FSOUND_DSP_Free)(FSOUND_DSPUNIT *unit); + void (F_API *FSOUND_DSP_SetPriority)(FSOUND_DSPUNIT *unit, int priority); + int (F_API *FSOUND_DSP_GetPriority)(FSOUND_DSPUNIT *unit); + void (F_API *FSOUND_DSP_SetActive)(FSOUND_DSPUNIT *unit, signed char active); + signed char (F_API *FSOUND_DSP_GetActive)(FSOUND_DSPUNIT *unit); + FSOUND_DSPUNIT *(F_API *FSOUND_DSP_GetClearUnit)(); + FSOUND_DSPUNIT *(F_API *FSOUND_DSP_GetSFXUnit)(); + FSOUND_DSPUNIT *(F_API *FSOUND_DSP_GetMusicUnit)(); + FSOUND_DSPUNIT *(F_API *FSOUND_DSP_GetFFTUnit)(); + FSOUND_DSPUNIT *(F_API *FSOUND_DSP_GetClipAndCopyUnit)(); + signed char (F_API *FSOUND_DSP_MixBuffers)(void *destbuffer, void *srcbuffer, int len, int freq, int vol, int pan, unsigned int mode); + void (F_API *FSOUND_DSP_ClearMixBuffer)(); + int (F_API *FSOUND_DSP_GetBufferLength)(); /* Length of each DSP update */ + int (F_API *FSOUND_DSP_GetBufferLengthTotal)(); /* Total buffer length due to FSOUND_SetBufferSize */ + float * (F_API *FSOUND_DSP_GetSpectrum)(); /* Array of 512 floats - call FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE)) for this to work. */ + signed char (F_API *FSOUND_Reverb_SetProperties)(FSOUND_REVERB_PROPERTIES *prop); + signed char (F_API *FSOUND_Reverb_GetProperties)(FSOUND_REVERB_PROPERTIES *prop); + signed char (F_API *FSOUND_Reverb_SetChannelProperties)(int channel, FSOUND_REVERB_CHANNELPROPERTIES *prop); + signed char (F_API *FSOUND_Reverb_GetChannelProperties)(int channel, FSOUND_REVERB_CHANNELPROPERTIES *prop); + signed char (F_API *FSOUND_Record_SetDriver)(int outputtype); + int (F_API *FSOUND_Record_GetNumDrivers)(); + signed char * (F_API *FSOUND_Record_GetDriverName)(int id); + int (F_API *FSOUND_Record_GetDriver)(); + signed char (F_API *FSOUND_Record_StartSample)(FSOUND_SAMPLE *sptr, signed char loop); + signed char (F_API *FSOUND_Record_Stop)(); + int (F_API *FSOUND_Record_GetPosition)(); + FMUSIC_MODULE * (F_API *FMUSIC_LoadSong)(const char *name); + FMUSIC_MODULE * (F_API *FMUSIC_LoadSongMemory)(void *data, int length); + signed char (F_API *FMUSIC_FreeSong)(FMUSIC_MODULE *mod); + signed char (F_API *FMUSIC_PlaySong)(FMUSIC_MODULE *mod); + signed char (F_API *FMUSIC_StopSong)(FMUSIC_MODULE *mod); + void (F_API *FMUSIC_StopAllSongs)(); + signed char (F_API *FMUSIC_SetZxxCallback)(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback); + signed char (F_API *FMUSIC_SetRowCallback)(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int rowstep); + signed char (F_API *FMUSIC_SetOrderCallback)(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int orderstep); + signed char (F_API *FMUSIC_SetInstCallback)(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int instrument); + signed char (F_API *FMUSIC_SetSample)(FMUSIC_MODULE *mod, int sampno, FSOUND_SAMPLE *sptr); + signed char (F_API *FMUSIC_SetUserData)(FMUSIC_MODULE *mod, unsigned int userdata); + signed char (F_API *FMUSIC_OptimizeChannels)(FMUSIC_MODULE *mod, int maxchannels, int minvolume); + signed char (F_API *FMUSIC_SetReverb)(signed char reverb); /* MIDI only */ + signed char (F_API *FMUSIC_SetLooping)(FMUSIC_MODULE *mod, signed char looping); + signed char (F_API *FMUSIC_SetOrder)(FMUSIC_MODULE *mod, int order); + signed char (F_API *FMUSIC_SetPaused)(FMUSIC_MODULE *mod, signed char pause); + signed char (F_API *FMUSIC_SetMasterVolume)(FMUSIC_MODULE *mod, int volume); + signed char (F_API *FMUSIC_SetMasterSpeed)(FMUSIC_MODULE *mode, float speed); + signed char (F_API *FMUSIC_SetPanSeperation)(FMUSIC_MODULE *mod, float pansep); + char * (F_API *FMUSIC_GetName)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetType)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetNumOrders)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetNumPatterns)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetNumInstruments)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetNumSamples)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetNumChannels)(FMUSIC_MODULE *mod); + FSOUND_SAMPLE * (F_API *FMUSIC_GetSample)(FMUSIC_MODULE *mod, int sampno); + int (F_API *FMUSIC_GetPatternLength)(FMUSIC_MODULE *mod, int orderno); + signed char (F_API *FMUSIC_IsFinished)(FMUSIC_MODULE *mod); + signed char (F_API *FMUSIC_IsPlaying)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetMasterVolume)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetGlobalVolume)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetOrder)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetPattern)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetSpeed)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetBPM)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetRow)(FMUSIC_MODULE *mod); + signed char (F_API *FMUSIC_GetPaused)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetTime)(FMUSIC_MODULE *mod); + int (F_API *FMUSIC_GetRealChannel)(FMUSIC_MODULE *mod, int modchannel); + unsigned int (F_API *FMUSIC_GetUserData)(FMUSIC_MODULE *mod); +} FMOD_INSTANCE; + + +FMOD_INSTANCE *FMOD_CreateInstance(char *dllName) +{ + FMOD_INSTANCE *instance; + + instance = (FMOD_INSTANCE *) calloc(sizeof(FMOD_INSTANCE), 1); + if (!instance) + { + return NULL; + } + + instance->module = LoadLibrary(dllName); + if (!instance->module) + { + free(instance); + return NULL; + } + + #define GETPROC(_x, _y) \ + { \ + *((unsigned int *)&instance->_x) = (unsigned int)GetProcAddress(instance->module, _y); \ + if (!instance->_x) \ + { \ + FreeLibrary(instance->module); \ + free(instance); \ + return NULL; \ + } \ + } + + GETPROC(FSOUND_SetOutput, "_FSOUND_SetOutput@4"); + GETPROC(FSOUND_SetDriver, "_FSOUND_SetDriver@4"); + GETPROC(FSOUND_SetMixer, "_FSOUND_SetMixer@4"); + GETPROC(FSOUND_SetBufferSize, "_FSOUND_SetBufferSize@4"); + GETPROC(FSOUND_SetHWND, "_FSOUND_SetHWND@4"); + GETPROC(FSOUND_SetMinHardwareChannels, "_FSOUND_SetMinHardwareChannels@4"); + GETPROC(FSOUND_SetMaxHardwareChannels, "_FSOUND_SetMaxHardwareChannels@4"); + GETPROC(FSOUND_SetMemorySystem, "_FSOUND_SetMemorySystem@20"); + GETPROC(FSOUND_Init, "_FSOUND_Init@12"); + GETPROC(FSOUND_Close, "_FSOUND_Close@0"); + GETPROC(FSOUND_SetSFXMasterVolume, "_FSOUND_SetSFXMasterVolume@4"); + GETPROC(FSOUND_SetPanSeperation, "_FSOUND_SetPanSeperation@4"); + GETPROC(FSOUND_SetSpeakerMode, "_FSOUND_SetSpeakerMode@4"); + GETPROC(FSOUND_GetError, "_FSOUND_GetError@0"); + GETPROC(FSOUND_GetVersion, "_FSOUND_GetVersion@0"); + GETPROC(FSOUND_GetOutput, "_FSOUND_GetOutput@0"); + GETPROC(FSOUND_GetOutputHandle, "_FSOUND_GetOutputHandle@0"); + GETPROC(FSOUND_GetDriver, "_FSOUND_GetDriver@0"); + GETPROC(FSOUND_GetMixer, "_FSOUND_GetMixer@0"); + GETPROC(FSOUND_GetNumDrivers, "_FSOUND_GetNumDrivers@0"); + GETPROC(FSOUND_GetDriverName, "_FSOUND_GetDriverName@4"); + GETPROC(FSOUND_GetDriverCaps, "_FSOUND_GetDriverCaps@8"); + GETPROC(FSOUND_GetOutputRate, "_FSOUND_GetOutputRate@0"); + GETPROC(FSOUND_GetMaxChannels, "_FSOUND_GetMaxChannels@0"); + GETPROC(FSOUND_GetMaxSamples, "_FSOUND_GetMaxSamples@0"); + GETPROC(FSOUND_GetSFXMasterVolume, "_FSOUND_GetSFXMasterVolume@0"); + GETPROC(FSOUND_GetNumHardwareChannels, "_FSOUND_GetNumHardwareChannels@0"); + GETPROC(FSOUND_GetChannelsPlaying, "_FSOUND_GetChannelsPlaying@0"); + GETPROC(FSOUND_GetCPUUsage, "_FSOUND_GetCPUUsage@0"); + GETPROC(FSOUND_GetMemoryStats, "_FSOUND_GetMemoryStats@8"); + GETPROC(FSOUND_Sample_Load, "_FSOUND_Sample_Load@16"); + GETPROC(FSOUND_Sample_Alloc, "_FSOUND_Sample_Alloc@28"); + GETPROC(FSOUND_Sample_Free, "_FSOUND_Sample_Free@4"); + GETPROC(FSOUND_Sample_Upload, "_FSOUND_Sample_Upload@12"); + GETPROC(FSOUND_Sample_Lock, "_FSOUND_Sample_Lock@28"); + GETPROC(FSOUND_Sample_Unlock, "_FSOUND_Sample_Unlock@20"); + GETPROC(FSOUND_Sample_SetMode, "_FSOUND_Sample_SetMode@8"); + GETPROC(FSOUND_Sample_SetLoopPoints, "_FSOUND_Sample_SetLoopPoints@12"); + GETPROC(FSOUND_Sample_SetDefaults, "_FSOUND_Sample_SetDefaults@20"); + GETPROC(FSOUND_Sample_SetMinMaxDistance, "_FSOUND_Sample_SetMinMaxDistance@12"); + GETPROC(FSOUND_Sample_SetMaxPlaybacks, "_FSOUND_Sample_SetMaxPlaybacks@8"); + GETPROC(FSOUND_Sample_Get, "_FSOUND_Sample_Get@4"); + GETPROC(FSOUND_Sample_GetName, "_FSOUND_Sample_GetName@4"); + GETPROC(FSOUND_Sample_GetLength, "_FSOUND_Sample_GetLength@4"); + GETPROC(FSOUND_Sample_GetLoopPoints, "_FSOUND_Sample_GetLoopPoints@12"); + GETPROC(FSOUND_Sample_GetDefaults, "_FSOUND_Sample_GetDefaults@20"); + GETPROC(FSOUND_Sample_GetMode, "_FSOUND_Sample_GetMode@4"); + GETPROC(FSOUND_PlaySound, "_FSOUND_PlaySound@8"); + GETPROC(FSOUND_PlaySoundEx, "_FSOUND_PlaySoundEx@16"); + GETPROC(FSOUND_StopSound, "_FSOUND_StopSound@4"); + GETPROC(FSOUND_SetFrequency, "_FSOUND_SetFrequency@8"); + GETPROC(FSOUND_SetVolume, "_FSOUND_SetVolume@8"); + GETPROC(FSOUND_SetVolumeAbsolute, "_FSOUND_SetVolumeAbsolute@8"); + GETPROC(FSOUND_SetPan, "_FSOUND_SetPan@8"); + GETPROC(FSOUND_SetSurround, "_FSOUND_SetSurround@8"); + GETPROC(FSOUND_SetMute, "_FSOUND_SetMute@8"); + GETPROC(FSOUND_SetPriority, "_FSOUND_SetPriority@8"); + GETPROC(FSOUND_SetReserved, "_FSOUND_SetReserved@8"); + GETPROC(FSOUND_SetPaused, "_FSOUND_SetPaused@8"); + GETPROC(FSOUND_SetLoopMode, "_FSOUND_SetLoopMode@8"); + GETPROC(FSOUND_IsPlaying, "_FSOUND_IsPlaying@4"); + GETPROC(FSOUND_GetFrequency, "_FSOUND_GetFrequency@4"); + GETPROC(FSOUND_GetVolume, "_FSOUND_GetVolume@4"); + GETPROC(FSOUND_GetPan, "_FSOUND_GetPan@4"); + GETPROC(FSOUND_GetSurround, "_FSOUND_GetSurround@4"); + GETPROC(FSOUND_GetMute, "_FSOUND_GetMute@4"); + GETPROC(FSOUND_GetPriority, "_FSOUND_GetPriority@4"); + GETPROC(FSOUND_GetReserved, "_FSOUND_GetReserved@4"); + GETPROC(FSOUND_GetPaused, "_FSOUND_GetPaused@4"); + GETPROC(FSOUND_GetLoopMode, "_FSOUND_GetLoopMode@4"); + GETPROC(FSOUND_GetCurrentPosition, "_FSOUND_GetCurrentPosition@4"); + GETPROC(FSOUND_SetCurrentPosition, "_FSOUND_SetCurrentPosition@8"); + GETPROC(FSOUND_GetCurrentSample, "_FSOUND_GetCurrentSample@4"); + GETPROC(FSOUND_GetCurrentLevels, "_FSOUND_GetCurrentLevels@12"); + GETPROC(FSOUND_FX_Enable, "_FSOUND_FX_Enable@8"); + GETPROC(FSOUND_FX_Disable, "_FSOUND_FX_Disable@4"); + GETPROC(FSOUND_FX_SetChorus, "_FSOUND_FX_SetChorus@32"); + GETPROC(FSOUND_FX_SetCompressor, "_FSOUND_FX_SetCompressor@28"); + GETPROC(FSOUND_FX_SetDistortion, "_FSOUND_FX_SetDistortion@24"); + GETPROC(FSOUND_FX_SetEcho, "_FSOUND_FX_SetEcho@24"); + GETPROC(FSOUND_FX_SetFlanger, "_FSOUND_FX_SetFlanger@32"); + GETPROC(FSOUND_FX_SetGargle, "_FSOUND_FX_SetGargle@12"); + GETPROC(FSOUND_FX_SetI3DL2Reverb, "_FSOUND_FX_SetI3DL2Reverb@52"); + GETPROC(FSOUND_FX_SetParamEQ, "_FSOUND_FX_SetParamEQ@16"); + GETPROC(FSOUND_FX_SetWavesReverb, "_FSOUND_FX_SetWavesReverb@20"); + GETPROC(FSOUND_Update, "_FSOUND_Update@0"); + GETPROC(FSOUND_3D_SetAttributes, "_FSOUND_3D_SetAttributes@12"); + GETPROC(FSOUND_3D_GetAttributes, "_FSOUND_3D_GetAttributes@12"); + GETPROC(FSOUND_3D_Listener_SetCurrent, "_FSOUND_3D_Listener_SetCurrent@8"); + GETPROC(FSOUND_3D_Listener_SetAttributes, "_FSOUND_3D_Listener_SetAttributes@32"); + GETPROC(FSOUND_3D_Listener_GetAttributes, "_FSOUND_3D_Listener_GetAttributes@32"); + GETPROC(FSOUND_3D_SetDopplerFactor, "_FSOUND_3D_SetDopplerFactor@4"); + GETPROC(FSOUND_3D_SetDistanceFactor, "_FSOUND_3D_SetDistanceFactor@4"); + GETPROC(FSOUND_3D_SetRolloffFactor, "_FSOUND_3D_SetRolloffFactor@4"); + GETPROC(FSOUND_Stream_OpenFile, "_FSOUND_Stream_OpenFile@12"); + GETPROC(FSOUND_Stream_Create, "_FSOUND_Stream_Create@20"); + GETPROC(FSOUND_Stream_Play, "_FSOUND_Stream_Play@8"); + GETPROC(FSOUND_Stream_PlayEx, "_FSOUND_Stream_PlayEx@16"); + GETPROC(FSOUND_Stream_Stop, "_FSOUND_Stream_Stop@4"); + GETPROC(FSOUND_Stream_Close, "_FSOUND_Stream_Close@4"); + GETPROC(FSOUND_Stream_SetEndCallback, "_FSOUND_Stream_SetEndCallback@12"); + GETPROC(FSOUND_Stream_SetSynchCallback, "_FSOUND_Stream_SetSynchCallback@12"); + GETPROC(FSOUND_Stream_GetSample, "_FSOUND_Stream_GetSample@4"); + GETPROC(FSOUND_Stream_CreateDSP, "_FSOUND_Stream_CreateDSP@16"); + GETPROC(FSOUND_Stream_SetBufferSize, "_FSOUND_Stream_SetBufferSize@4"); + GETPROC(FSOUND_Stream_SetPosition, "_FSOUND_Stream_SetPosition@8"); + GETPROC(FSOUND_Stream_GetPosition, "_FSOUND_Stream_GetPosition@4"); + GETPROC(FSOUND_Stream_SetTime, "_FSOUND_Stream_SetTime@8"); + GETPROC(FSOUND_Stream_GetTime, "_FSOUND_Stream_GetTime@4"); + GETPROC(FSOUND_Stream_GetLength, "_FSOUND_Stream_GetLength@4"); + GETPROC(FSOUND_Stream_GetLengthMs, "_FSOUND_Stream_GetLengthMs@4"); + GETPROC(FSOUND_Stream_SetSubStream, "_FSOUND_Stream_SetSubStream@8"); + GETPROC(FSOUND_Stream_GetNumSubStreams, "_FSOUND_Stream_GetNumSubStreams@4"); + GETPROC(FSOUND_Stream_SetLoopPoints, "_FSOUND_Stream_SetLoopPoints@12"); + GETPROC(FSOUND_Stream_AddSynchPoint, "_FSOUND_Stream_AddSynchPoint@12"); + GETPROC(FSOUND_Stream_DeleteSynchPoint, "_FSOUND_Stream_DeleteSynchPoint@8"); + GETPROC(FSOUND_Stream_GetNumSynchPoints, "_FSOUND_Stream_GetNumSynchPoints@4"); + GETPROC(FSOUND_Stream_GetOpenState, "_FSOUND_Stream_GetOpenState@4"); + GETPROC(FSOUND_CD_Play, "_FSOUND_CD_Play@8"); + GETPROC(FSOUND_CD_SetPlayMode, "_FSOUND_CD_SetPlayMode@8"); + GETPROC(FSOUND_CD_Stop, "_FSOUND_CD_Stop@4"); + GETPROC(FSOUND_CD_SetPaused, "_FSOUND_CD_SetPaused@8"); + GETPROC(FSOUND_CD_SetVolume, "_FSOUND_CD_SetVolume@8"); + GETPROC(FSOUND_CD_Eject, "_FSOUND_CD_Eject@4"); + GETPROC(FSOUND_CD_GetPaused, "_FSOUND_CD_GetPaused@4"); + GETPROC(FSOUND_CD_GetTrack, "_FSOUND_CD_GetTrack@4"); + GETPROC(FSOUND_CD_GetNumTracks, "_FSOUND_CD_GetNumTracks@4"); + GETPROC(FSOUND_CD_GetVolume, "_FSOUND_CD_GetVolume@4"); + GETPROC(FSOUND_CD_GetTrackLength, "_FSOUND_CD_GetTrackLength@8"); + GETPROC(FSOUND_CD_GetTrackTime, "_FSOUND_CD_GetTrackTime@4"); + GETPROC(FSOUND_DSP_Create, "_FSOUND_DSP_Create@12"); + GETPROC(FSOUND_DSP_Free, "_FSOUND_DSP_Free@4"); + GETPROC(FSOUND_DSP_SetPriority, "_FSOUND_DSP_SetPriority@8"); + GETPROC(FSOUND_DSP_GetPriority, "_FSOUND_DSP_GetPriority@4"); + GETPROC(FSOUND_DSP_SetActive, "_FSOUND_DSP_SetActive@8"); + GETPROC(FSOUND_DSP_GetActive, "_FSOUND_DSP_GetActive@4"); + GETPROC(FSOUND_DSP_GetClearUnit, "_FSOUND_DSP_GetClearUnit@0"); + GETPROC(FSOUND_DSP_GetSFXUnit, "_FSOUND_DSP_GetSFXUnit@0"); + GETPROC(FSOUND_DSP_GetMusicUnit, "_FSOUND_DSP_GetMusicUnit@0"); + GETPROC(FSOUND_DSP_GetClipAndCopyUnit, "_FSOUND_DSP_GetClipAndCopyUnit@0"); + GETPROC(FSOUND_DSP_GetFFTUnit, "_FSOUND_DSP_GetFFTUnit@0"); + GETPROC(FSOUND_DSP_MixBuffers, "_FSOUND_DSP_MixBuffers@28"); + GETPROC(FSOUND_DSP_ClearMixBuffer, "_FSOUND_DSP_ClearMixBuffer@0"); + GETPROC(FSOUND_DSP_GetBufferLength, "_FSOUND_DSP_GetBufferLength@0"); + GETPROC(FSOUND_DSP_GetBufferLengthTotal, "_FSOUND_DSP_GetBufferLengthTotal@0"); + GETPROC(FSOUND_DSP_GetSpectrum, "_FSOUND_DSP_GetSpectrum@0"); + GETPROC(FSOUND_Reverb_SetProperties, "_FSOUND_Reverb_SetProperties@4"); + GETPROC(FSOUND_Reverb_GetProperties, "_FSOUND_Reverb_GetProperties@4"); + GETPROC(FSOUND_Reverb_SetChannelProperties, "_FSOUND_Reverb_SetChannelProperties@8"); + GETPROC(FSOUND_Reverb_GetChannelProperties, "_FSOUND_Reverb_GetChannelProperties@8"); + GETPROC(FSOUND_Record_SetDriver, "_FSOUND_Record_SetDriver@4"); + GETPROC(FSOUND_Record_GetNumDrivers, "_FSOUND_Record_GetNumDrivers@0"); + GETPROC(FSOUND_Record_GetDriverName, "_FSOUND_Record_GetDriverName@4"); + GETPROC(FSOUND_Record_GetDriver, "_FSOUND_Record_GetDriver@0"); + GETPROC(FSOUND_Record_StartSample, "_FSOUND_Record_StartSample@8"); + GETPROC(FSOUND_Record_Stop, "_FSOUND_Record_Stop@0"); + GETPROC(FSOUND_Record_GetPosition, "_FSOUND_Record_GetPosition@0"); + GETPROC(FSOUND_File_SetCallbacks, "_FSOUND_File_SetCallbacks@20"); + GETPROC(FMUSIC_LoadSong, "_FMUSIC_LoadSong@4"); + GETPROC(FMUSIC_LoadSongMemory, "_FMUSIC_LoadSongMemory@8"); + GETPROC(FMUSIC_FreeSong, "_FMUSIC_FreeSong@4"); + GETPROC(FMUSIC_PlaySong, "_FMUSIC_PlaySong@4"); + GETPROC(FMUSIC_StopSong, "_FMUSIC_StopSong@4"); + GETPROC(FMUSIC_StopAllSongs, "_FMUSIC_StopAllSongs@0"); + GETPROC(FMUSIC_SetZxxCallback, "_FMUSIC_SetZxxCallback@8"); + GETPROC(FMUSIC_SetRowCallback, "_FMUSIC_SetRowCallback@12"); + GETPROC(FMUSIC_SetOrderCallback, "_FMUSIC_SetOrderCallback@12"); + GETPROC(FMUSIC_SetInstCallback, "_FMUSIC_SetInstCallback@12"); + GETPROC(FMUSIC_SetSample, "_FMUSIC_SetSample@12"); + GETPROC(FMUSIC_SetUserData, "_FMUSIC_SetUserData@8"); + GETPROC(FMUSIC_OptimizeChannels, "_FMUSIC_OptimizeChannels@12"); + GETPROC(FMUSIC_SetReverb, "_FMUSIC_SetReverb@4"); + GETPROC(FMUSIC_SetLooping, "_FMUSIC_SetLooping@8"); + GETPROC(FMUSIC_SetOrder, "_FMUSIC_SetOrder@8"); + GETPROC(FMUSIC_SetPaused, "_FMUSIC_SetPaused@8"); + GETPROC(FMUSIC_SetMasterVolume, "_FMUSIC_SetMasterVolume@8"); + GETPROC(FMUSIC_SetMasterSpeed, "_FMUSIC_SetMasterSpeed@8"); + GETPROC(FMUSIC_SetPanSeperation, "_FMUSIC_SetPanSeperation@8"); + GETPROC(FMUSIC_GetName, "_FMUSIC_GetName@4"); + GETPROC(FMUSIC_GetType, "_FMUSIC_GetType@4"); + GETPROC(FMUSIC_GetNumOrders, "_FMUSIC_GetNumOrders@4"); + GETPROC(FMUSIC_GetNumPatterns, "_FMUSIC_GetNumPatterns@4"); + GETPROC(FMUSIC_GetNumInstruments, "_FMUSIC_GetNumInstruments@4"); + GETPROC(FMUSIC_GetNumSamples, "_FMUSIC_GetNumSamples@4"); + GETPROC(FMUSIC_GetNumChannels, "_FMUSIC_GetNumChannels@4"); + GETPROC(FMUSIC_GetSample, "_FMUSIC_GetSample@8"); + GETPROC(FMUSIC_GetPatternLength, "_FMUSIC_GetPatternLength@8"); + GETPROC(FMUSIC_IsFinished, "_FMUSIC_IsFinished@4"); + GETPROC(FMUSIC_IsPlaying, "_FMUSIC_IsPlaying@4"); + GETPROC(FMUSIC_GetMasterVolume, "_FMUSIC_GetMasterVolume@4"); + GETPROC(FMUSIC_GetGlobalVolume, "_FMUSIC_GetGlobalVolume@4"); + GETPROC(FMUSIC_GetOrder, "_FMUSIC_GetOrder@4"); + GETPROC(FMUSIC_GetPattern, "_FMUSIC_GetPattern@4"); + GETPROC(FMUSIC_GetSpeed, "_FMUSIC_GetSpeed@4"); + GETPROC(FMUSIC_GetBPM, "_FMUSIC_GetBPM@4"); + GETPROC(FMUSIC_GetRow, "_FMUSIC_GetRow@4"); + GETPROC(FMUSIC_GetPaused, "_FMUSIC_GetPaused@4"); + GETPROC(FMUSIC_GetTime, "_FMUSIC_GetTime@4"); + GETPROC(FMUSIC_GetRealChannel, "_FMUSIC_GetRealChannel@8"); + GETPROC(FMUSIC_GetUserData, "_FMUSIC_GetUserData@4"); + + return instance; +} + +void FMOD_FreeInstance(FMOD_INSTANCE *instance) +{ + if (instance) + { + if (instance->module) + { + FreeLibrary(instance->module); + } + free(instance); + } +} + +#endif diff --git a/Toshi/vendor/fmod/revision.txt b/Toshi/vendor/fmod/revision.txt deleted file mode 100644 index be557e7..0000000 --- a/Toshi/vendor/fmod/revision.txt +++ /dev/null @@ -1,5585 +0,0 @@ - -========================================================================================== - REVISION HISTORY : FMOD Studio API - Copyright (c) Firelight Technologies, Pty, Ltd, 2011-2022 - https://www.fmod.com -========================================================================================== - -Legend ------- -Win: Microsoft Windows XboxOne: Microsoft Xbox One -Mac: Apple macOS GameCore: Microsoft Game Core -Linux: Linux PS4: Sony PlayStation 4 -iOS: Apple iOS / tvOS PS5: Sony PlayStation 5 -Android: Google Android Switch: Nintendo Switch -HTML5: JavaScript WebAssembly Stadia: Google Stadia -UWP: Microsoft Universal Windows Platform - -21/9/22 2.02.09 - Studio API minor release (build 128289) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Error now logged when attempting to set a readonly Parameter, or when - attempting to set a Global Parameter from an EventInstance. -* Core API - Deprecated Sound.readData(IntPtr, uint, out uint) in C# wrapper. Instead - use Sound.readData(byte[], out uint) or Sound.readData(byte[]). -* Core API - Added FMOD_SYSTEM_CALLBACK_RECORDPOSITIONCHANGED callback to notify when - new data recorded to FMOD::Sound. -* Core API - GameCore - Increased the limits of SetXApuStreamCount to match - Microsoft documented maximums. -* Unity - Added UnloadBank overloads for TextAsset and AssetReference. -* Unreal - Added "Enable API Error Logging" option to Advanced settings section. - Integration will log additional internal errors when enabled. -* Unreal - LoadBank node "Blocking" enabled by default. - -Fixes: -* Core API - Fixed potential crash if calling DSP::setParameter on a Pan DSP - when using the Studio API. -* Core API - Fixed ChannelGroup::setPaused(false) to behave the same as Channel, - ensuring any 3D calculations are performed before becoming audible. -* Core API - Fixed Opus producing different FSBank result on AMD and Intel CPUs. -* Core API - Fixed errors in the calculatePannerAttributes() function presented in - Core API Guide section 3.5 Controlling a Spatializer DSP - (formerly Driving the Spatializer). -* Core API - Increased net streaming max URL length to 2048. -* Core API - GameCore - Fixed potential XApu stream leak when playing a multi-channel - Sound as the hardware limit is reached. -* Core API - iOS - Fixed potential crash during System::mixerSuspend / - System::mixerResume when playing audio with the platform native - AudioQueue (AAC) decoder. -* Core API - iOS - Fixed simulator detection. -* Core API - Mac - Fixed CoreAudio crash when output device reports >32 outputs. -* Core API - Win - Fixed WinSonic crash when the device list changes before - System::init. -* Resonance - Android - Removed dependency on libc++_shared.so. -* Unity - Fixed FMODStudioSettings.asset marked dirty every time Editor reopens. -* Unity - Prevented unnecessary allocation when setting parameter on an FMOD - StudioEventEmitter. -* Unity - Fixed errors when upgrading Unity versions. -* Unreal - Provided default values to prevent various initialization warnings. - -Notes: -* Unreal - Moved various internal functions and fields to private. - -15/08/22 2.02.08 - Studio API minor release (build 126901) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Added FMOD_INIT_CLIP_OUTPUT flag to enable hard clipping of float values. -* Core API - GameCore - Added SetXApuStreamCount and XDspConfigure to C# wrapper. -* Core API - PS5 - Added AcmConfigure and AjmConfigure to the C# wrapper. -* Core API - PS5 - Opus hardware decoding is now supported. -* Core API - PS5 - Added vibration support for the PSVR2 controller via - FMOD_PORT_INDEX_FLAG_VR_CONTROLLER. -* Unity - Timeline events now begin playback from relative playhead position when - auditioning in the timeline. - -Fixes: -* Studio API - EventDescription::is3D now returns the correct result if the Event uses - SpeedAbsolute or DistanceNormalized parameters. Requires bank rebuild. -* Core API - Fixed ASIO driver enumeration crash caused by invalid driver. -* Core API - Fixed incorrect thread IDs being used on pthread based platforms. -* Core API - Fixed System::setReverbProperties / FMOD_DSP_TYPE_SFXREVERB not working - with 7.1.4 input. -* Core API - Fixed crash from reading bad m3u file. -* Core API - Fixed the memory tracking system sometimes running out of memory. -* Core API - GameCore - Fixed potential crash when there are insufficient xAPU - resources remaining. -* Core API - Win - Fixed crash in device enumeration cleanup. -* Core API - C# - Some callback types renamed in fmod_dsp.cs to match C header. - DSP_CREATECALLBACK becomes DSP_CREATE_CALLBACK for example. -* Unity - Updated deprecated GameCore build target and runtime platform for Unity - 2019.4. -* Unity - Fixed issue with "Desktop" being added to build path twice when - selecting "Multiple Platform Build" Source Type. -* Unity - Fixed issue with HaveAllBanksLoaded not working when banks loaded via - AssetReferences. -* Unity - Fixed UnsatisfiedLinkError crash on Android when no FMODUnity components - present. -* Unity - Improved readability of folders in CreateEventPopup. -* Unreal - Fixed Blueprint LoadBank not correctly honouring Load Sample data flag. -* Unreal - Removed spurious log warning about initial value of global parameters. -* Unreal - Fixed memory leak when using PlayEventAttached in nosound mode. - -Notes: -* Switch - Now built with SDK 14.3.0. -* Unreal - Added support for UE5.0.3. - -18/05/22 2.02.07 - Studio API minor release (build 125130) ------------------------------------------------------------------------------------------- - -Features: -* Core API - HTML5 - FMOD now handles user interaction internally to allow sound to - work. The developer no longer has to handle boilerplate code - to allow user interaction. -* FSBank API - Mac - Added FSBankLib. -* Unreal - Added support for speaker mode 7.1.4 in the editor settings. -* Unreal - Added separate platforms settings for a variety of options. - -Fixes: -* Studio API - Fixed steal quietest not working correctly causing new EventInstances - to think they are the quietest and not play. -* Core API - Fixed ChannelGroup::setPitch when applied to the master channel - group causing exaggerated pitch changes as time goes on. -* Core API - HTML5 - Fixed integer overflow crash in fastcomp builds after 70 mins. -* Core API - Linux - Fixed potential hang on shutdown due to bad sound drivers. -* Core API - Linux - Fixed crash during System::init if using - System::setOutput(FMOD_OUTPUTTYPE_PULSEAUDIO) on a machine - without PulseAudio. -* Unity - Fixed an error occurring when a timeline playhead leaves an event - playable. -* Unity - Added missing EventReference overload for PlayOneShotAttached. -* Unity - Fixed refcount not updating when LoadBank called with TextAsset. -* Unity - Fixed scene hanging when auditioning timeline. -* Unity - Fixed events in timeline not refreshing when banks updated. -* Unity - Fixed platform objects on Settings asset showing no name in the project - window. -* Unity - Fixed stale event name left behind after clearing an FMODEventPlayable's - event reference field. -* Unity - Fixed an error caused by changing an event reference while an event is - being previewed in the browser. -* Unity - HTML5 - Fixed the audio not playing in the Safari web browser. -* Unreal - Fixed not being able to audition events in the editor. -* Unreal - Fixed Editor crash when importing bank with paths containing a period. - -Notes: -* PS4 - Now built with SDK 9.508.001. -* PS5 - Now built with SDK 5.00.00.33. -* Unreal - Added support for UE5. - -16/03/22 2.02.06 - Studio API minor release (build 124257) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Android - Added support for loading sounds via Uri paths. -* Unity - Added ability to set individual channel counts for each codec format - supported by a given platform. - -Fixes: -* Studio API - Fixed issue where certain timeline instruments were causing - EventDescription::isOneshot to incorrectly return false. This requires - banks to be rebuilt to take effect. -* Core API - Fixed rare vorbis decoding error. -* Core API - Fixed crash in OutputASIO::stop if start has not been called. -* Core API - Fixed static noise or clicks when using DSP::setWetDryMix. -* Core API - Fixed FMOD_CODEC_METADATA macro parameters. -* Core API - Fixed bad ASIO driver causing enumeration to fail. -* Core API - Android - Fixed crash from headset detection with incorrect Java - lifetimes. -* Core API - HTML5 - Fixed an issue where FMOD_OUTPUTTYPE_AUDIOWORKLET would crash - if the speaker mode setup was greater than stereo while refreshing the - web browser. -* Core API - PS5 - Fixed a crash in the convolution reverb to do with - deallocating GPU memory. -* Core API - UWP - Fixed corrupted audio using certain headsets that implement - virtual surround sound such as those from Razer. -* Core API - Win - Fixed WASAPI device enumeration failure causing - initialization to fail. -* Unity - Fixed il2cpp crash caused by CREATESOUNDEXINFO callbacks not being - marshaled when loading sounds from audio tables. -* Unity - Fixed event browser preview area not initially displaying at correct - size. -* Unity - Fixed error shown when attempting to delete Default and Editor platforms. -* Unity - Fixed audible glitches on PS4 and PS5 due to FMOD feeder thread getting - blocked. -* Unity - Fixed enumeration of bank folders when creating an event from an event - reference field in the inspector. -* Unity - Fixed error if Resonance Listener is not on the Master Bus. -* Unity - Fixed banks being reimported with every build when set to AssetBundle - import type. -* Unity - Fixed cached events losing GUIDs after updating from a 2.01 or earlier - integration. -* Unreal - Fixed crash when importing banks containing ports. -* Unreal - Fixed net streams not working with programmer sounds. -* Unreal - Fixed problem locking all buses on bank load if banks haven't finished - loading. -* Unreal - Fixed AudioComponent::OnEventStopped sometimes being called twice. -* Unreal - Fixed FMODAudioComponents inside AudioVolumes not having the correct - AmbientVolumeParameter value when Started after being Stopped. - -Notes: -* GameCore - Now built with October 2021 QFE 1 GDKX. -* Stadia - Now built with SDK 1.71. -* Switch - Now built with SDK 13.3.0. -* Unity - GameCore - Now built with June 2021 QFE 4 GDKX. -* Unreal - Added support for UE5.00 preview 1. - -06/02/22 2.02.05 Patch 1 - Studio API patch release (build 123444) ------------------------------------------------------------------------------------------- - -Fixes: -* Studio API - Fixed crash when allocating internal pool resources. Introduced 2.02.05. - -Notes: -* Due to the severity of the above mentioned issue, the previous release of 2.02.05 - has been withdrawn and should not be used. - -21/12/21 2.02.05 - Studio API minor release (build 122665) ------------------------------------------------------------------------------------------- - -Features: -* Core API - HTML5 - Added a new FMOD_OUTPUTTYPE called FMOD_OUTPUTTYPE_AUDIOWORKLET, - which uses the Web Audio AudioWorkletNode functionality. - -Fixes: -* Studio API - Fixed issue where an async instrument would not trigger if its delay - interval was greater than its length on the timeline. -* Studio API - Fixed issue where the description of an event retrieved from a start - event command would have an invalid handle unless first retrieved via - Studio::System::getEvent. -* Studio API - Start Event Command Instrument now gracefully handles the case when the - event it is trying to start has not been loaded. -* Studio API - Fixed issue where the scatterer instrument can spawn instruments - inconsistently under certain conditions. -* Studio API - Fixed issue where audibility based stealing would not use - FMOD_DSP_PARAMETER_OVERALLGAIN::linear_gain_additive in its calculation. - For events using the object spatializer or the resonance audio - source this would cause the attenuation to be ignored for stealing. -* Studio API - Improved general Studio API performance. -* Studio API - Improved determination of whether a nested event will end, reducing the - incorrect cases where it would be stopped immediately. -* Studio API - Fixed Studio::EventInstance::getMinMaxDistance returning -1 before - event starts playing. -* Core API - GameCore - Fixed very rare Opus decoding hang. -* Core API - GameCore - Improved convolution reverb XDSP recovery in case of - unexpected hardware failure. -* Core API - Linux - PulseAudio now attempts to load and connect for detection rather - than running 'pulseaudio --check'. This improves PipeWire compatibility. -* Unity - Fixed event reference updater not handling multiple game objects with the - same path. -* Unity - Fixed setup window showing event reference update step as completed when - incomplete tasks remained. -* Unreal - FMOD plugin no longer overwrites existing Unreal editor style. -* Unreal - Fixed BankLookup being regenerated unnecessarily. -* Unreal - Fixed FMODAudioComponent not handling streaming levels correctly. -* Unreal - XSX - Fixed builds not finding fmod libs. -* Unity - Fixed platform-specific settings not being saved. - -Notes: -* Stadia - Now built with SDK 1.62, LLVM 9.0.1. -* Unity - First-time installation no longer requires an event reference update - scan. -* Unity - Event reference update tasks now display their completion status and - can no longer be redundantly run multiple times. -* Unity - Editor now restores scene setup after finishing execution of event - reference update tasks. - -19/11/21 2.02.04 - Studio API minor release (build 121702) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Added support for FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED with multiple - Systems -* Core API - Switch - Added Opus decoding for streams. -* Unity - HTML5 - Added support for Unity 2021.2. - -Fixes: -* Studio API - When loading pre 2.02 banks, Studio::EventDescription::getMinMaxDistance - will now provide a minimum and maximum value based on the spatializers of - that event instead of 0. -* Core API - Fixed potential crash / error / corruption if using Object spatializer - and multiple listeners. -* Core API - Improve handling of disconnected devices. -* Core API - Fixed incorrect audibility calculation causing some sounds to incorrectly - go virtual when sends are involved. -* Core API - iOS - Fixed crash when suspending multiple FMOD::System objects while using - the AudioQueue codec. -* Core API - ARM based iOS / Mac / Switch. Three EQ effect optimized to be up to - 2x faster. -* Core API - Android and macOS - Now use Monotonic clock instead of Wall clock. -* Core API - Win - Fixed issue where WASAPI would fail to gracefully handle an - invalidated device due to a disconnection during initialization. -* Unity - Added a prompt to update the FMOD folder metadata if necessary so that - it can be moved to any location in the project. -* Unity - Fixed a bug causing the Event Browser to be in an invalid state when - reopening the Unity Editor. -* Unity - Fixed a bug that caused stale cache assets to not be cleared correctly. -* Unity - Fixed attenuation override values not updating until next GUI change when - a new event is selected for an emitter. -* Unity - Fixed a denied access error when updating FMOD for Unity integration. -* Unity - Fixed the bank cache refresh failing when the event browser is open. -* Unity - Android - Fixed command line builds not using split application binary. -* Unity - Mac - Added a prompt to fix bad line endings in FMOD bundle Info.plist - files if necessary (these could cause DllNotFoundException errors). -* Unity - Fixed an error preventing command line builds from completing. -* Unreal - Linux - Fixed missing libs. - -Notes: -* GameCore - Now built with June 2021 QFE 2 GDKX. -* PS4 - Now built with SDK 9.008.001. -* PS5 - Now built with SDK 4.00.00.31. -* Switch - Now built with SDK 12.3.7. -* Unity - Removed obsolete x86 Linux binaries. -* Unity - RuntimeManager's AnyBankLoading and WaitForAllLoads methods have been - renamed for clarity (to AnySampleDataLoading and WaitForAllSampleLoading - respectively), retaining the same functionality. The previous methods - remain for compatibility but are considered deprecated. - -08/09/21 2.02.03 - Studio API minor release (build 120077) ------------------------------------------------------------------------------------------- - -Features: -* Core API - It is now possible to specify the Opus codec count via - FMOD_ADVANCEDSETTINGS, previously it was hardcoded to 128. -* Core API - PS5 - Added ACM convolution reverb support. -* Core API - GameCore - Added XDSP convolution reverb support on Scarlett hardware. -* Core API - Win, GameCore, XBoxOne - Added recording support to WinSonic. -* Unity - Added EventReference.Find() to make setting default values on - EventReference fields more convenient. -* Unreal - UE4.26 on - Integration setup will now offer to add generated assets - to package settings. -* Unreal - UE4.26 on - Added Commandlet to support generating assets from - command line. -* Unity - Added IsInitialized property to EventManager to make it easier to know when - EventManager is safe to call. - -Fixes: -* Studio API - Fixed buffer overflow issues with command replays, system is now - more robust against failure and buffers have grown to handle demand. -* Studio API - Fixed issue where automating a labelled parameter under specific - circumstances would produce an incorrect result. -* Studio API - Fixed 7.1.4 sends losing their height speakers at the return. -* Studio API - Fixed issue where event instruments inside a multi instrument were unable - to be seemlessly looped with simple events. -* Studio API - Streaming instruments no longer can have the end of the audio cut off - if they take too long to load. -* Studio API - Fixed volume spike at start of multi instruments using both fade curves - and seek offsets. -* Core API - Fixed issue with System::registerCodec returning FMOD_ERR_PLUGIN_VERSION - regardless of FMOD_CODEC_DESCRIPTION apiversion. -* Core API - Fixed convolution reverb crash if out of memory. -* Core API - Fixed rare audio corruption / noise burst issue. -* Core API - Fixed FSBankLib AT9 encoder failing with an internal error on newer - versions of libatrac9.dll, 4.3.0.0 onward. -* Core API - Fixed potential crash when up-mixing quad to 5.1. -* Core API - GameCore - Reduced the chances of running out of Opus streams - when playing back Opus compressed banks on Scarlett hardware. -* Core API - Linux - Added support for automatic device switching. -* Core API - Android - Fixed issue where AAudio would restart occasionally on certain - devices. -* Core API - Android - Fixed issue where AAudio would would request an amount of data - far larger than its burst size on certain devices. -* Unity - Fixed a bug where settings could be accessed while an asset database - refresh was in progress, causing settings to be wiped. -* Unity - Fixed live update breaking when domain reload is disabled. -* Unity - Fixed an invalid handle error that would occur when an attached instance - ends. -* Unity - Fixed StudioParameterTrigger and StudioGlobalParameterTrigger not - receiving Object Start and Object Destroy events. -* Unity - Fixed the attenuation override values being overwritten when selecting - multiple event emitters. -* Unity - Fixed global parameter trigger browser showing other FMOD folders. -* Unity - Fixed referenced events not being played when an event is previewed in - the event browser if the referenced events are in a different bank. -* Unity - Fixed RuntimeManager.MuteAllEvents not working in editor. -* Unity - Fixed bank names including the .bank file extension when Load Banks is - set to Specified. -* Unity - Fixed a bug allowing multiple localized banks to be loaded and preventing - them from being unloaded. -* Unity - Fixed compatibility of native libraries changing after build. -* Unity - Fixed stretched logo texture in setup wizard when targeting iOS as build - platform. -* Unity - Fixed an error caused by auditioning events with global parameters in the - event browser. -* Unity - Fixed an error state caused by inspecting a game object that contains - both a Unity Image and an FMOD StudioEventEmitter. -* Unity - Fixed staging instructions appearing for fresh integration installations. -* Unity - Fixed an exception caused by disconnected prefab instances when updating - event references. -* Unreal - Fixed FMODAudioComponents continuing to play after actors have been - destroyed. -* Unreal - Fixed 'Reload Banks' menu option. -* Unreal - Fixed error when building installed engine with FMOD plugin. - -Notes: -* GameCore - Now built with June 2021 QFE 1 GDKX. -* Stadia - Now built with SDK 1.62 -* Unity - Removed a sleep loop in StudioEventEmitter.Start(). -* Unreal - Added support for UE4.27. - -26/07/21 2.02.02 - Studio API minor release (build 118084) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Mac - Added Dolby PLII downmix support. -* Unity - When Event Linkage is set to Path, the EventReference property drawer and - Event Reference Updater tool can now update paths for events which have - been moved in FMOD Studio (detected via matching GUIDs). -* Unity - Console logging from the plugin now follows the logging level specified - for FMOD. -* Unity - Improved the Asset Bundle import type to better support Addressables: - FMOD now creates a stub asset for each source .bank file, which can be - added to version control and to Addressables Groups. Stub assets are - replaced with source .bank files at build time, and reverted to stubs - after each build. - -Fixes: -* Studio API - Fixed issue where silence instruments placed after a set parameter - command instrument would be skipped. -* Studio API - Fixed popping that would occur with fade curves and multi instruments in - the right conditions. -* Studio API - Fixed issue where automation and modulation would not evenly distribute - values for discrete parameters. -* Studio API - Fixed sustain point behavior where the sustain point is at the same time - as the end of a loop region. -* Studio API - Async instruments with infinite loop counts will play out their last loop - after being untriggered. -* Studio API - Scatterer instruments that have been untriggered will no longer fade out - child instruments. -* Studio API - Fixed issue where scatterer instruments would spawn instruments - inconsistently. -* Studio API - Fixed a stack overflow when releasing a very large number of events in a - single frame. -* Core API - Fixed FMOD::CREATESOUNDEXINFO::initialseekposition causing sound to not stop - at the correct time. -* Core API - Fixed disconnecting channel groups from ports when multiple instances of - the same port are connected. -* Core API - Fixed a possible crash by increasing the stack size of the file thread - from 48k to 64k. -* Core API - Fixed Object Spatializer getting out of sync with the mixer when the - mixer buffer is starved, this could also cause asserts to appear the log. -* Core API - GameCore - Fixed a race condition that could cause a hang when playing - Opus compressed audio. -* UE4 - Fixed default locale setting not working in cooked builds. -* Unity - Fixed references in EventReferenceUpdater.cs to classes unavailable when - the Unity Timeline package is missing. -* Unity - Fixed event browser being unable to audition events when an encryption - key is in use. -* Unity - Fixed setup wizard not marking current scene as dirty when replacing - Unity audio listeners. -* Unity - Fixed banks failing to load on Mac when the project is saved in Unity on - Windows. -* Unity - Fixed a crash caused by disabling API error logging. -* Unity - Fixed benign errors being logged to the console when API logging is - enabled. -* Unity - Fixed all banks being reimported whenever the banks are refreshed, - even if nothing has changed. -* Unity - Fixed an exception being thrown when building if version control is - enabled. -* FSBank - Fixed compatibility issue with Windows 7. -* Profiler - Fixed compatibility issue with Windows 7. - -Notes: -* HTML5 - Now built with SDK 2.0.20 (Upstream) and SDK 1.40.1 (Fastcomp). -* iOS - Now built with iOS SDK 14.5 (Xcode 12.5.1). -* Mac - Now built with macOS SDK 11.3 (Xcode 12.5.1), min deploy target - is now 10.9 as mandated by Xcode. -* Unity - Moved images into the Assets/Plugins/FMOD folder. -* Unreal - Added support for UE5.00 (EA1). - -26/05/21 2.02.01 - Studio API minor release (build 116648) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Added FMOD_STUDIO_EVENT_CALLBACK_NESTED_TIMELINE_BEAT which returns a - FMOD_STUDIO_TIMELINE_NESTED_BEAT_PROPERTIES containing the event's id. -* Studio API - Added an FMOD_STUDIO_PARAMETER_LABELED flag. -* Core API - Added loudness meter to the DSP API. The loudness meter is intended for - development purposes and is not recommended to be included in shipped - titles. -* Unity - Improved the UI for setting values on discrete and labeled parameters. -* Unity - Added FMODUnity.Settings.ForceLoggingBinaries to force FMOD to use the - logging binaries even when BuildOptions.Development is not set. -* Unity - Added the ability to set global parameters when auditioning an event. - -Fixes: -* Studio API - Improved performance of repeated calls to - Studio::EventDescription::isStream and - Studio::EventDescription::isOneShot. -* Studio API - Removed potential for performance hit from retrieving final volume and - final pitch values due to thread contention. -* Studio API - Fixed issue with audio device switching. -* Studio API - Restrict maximum number of non-zero length transitions to 31 per update - to prevent overloading the scheduler. -* Core API - GameCore - Fixed error log (assert) with logging build when playing - multichannel Opus. -* Core API - GameCore - Fixed rare Opus failure / hang when playing streams. -* Core API - GameCore - Fixed error log (assert) when seeking XMA streams near - the file end. -* Core API - Win/UWP/GameCore - Fixed WinSonic not falling back to no-sound - automatically if no devices are available. -* Core API - C# - Unblocked potential stalls when calling Studio::EventInstance::getVolume - / Studio::EventInstance::getPitch when finalVolume / finalPitch isn't - requested. -* Unity - Fixed global parameters disappearing if banks are refreshed when - the master bank hasn't changed. -* Unity - Fixed the setup wizard's Updating page status being reset whenever - scripts are recompiled. -* Unity - Fixed errors that occur when Settings.OnEnable() is called on an object - that is already initialized (e.g. "Cleaning up duplicate platform" and - "An item with the same key has already been added"). -* Unity - Reverted binary selection at build time to the old method of checking for - BuildOptions.Development in BuildReport.summary.options, as checking for - the DEVELOPMENT_BUILD symbol was failing in some situations and causing - DllNotFoundExceptions. -* Unity - Fixed bank sizes not being displayed in the event browser. -* Unity - Fixed compiler errors that appear when Unity's Physics and Physics 2D - packages are disabled. -* Unity - Fixed "The name 'StaticPluginManager' does not exist" error when calling - AddressableAssetSettings.BuildPlayerContent() on IL2CPP platforms. -* Unity - Removed cleanup of RegisterStaticPlugins.cs when a build finishes, in - order to avoid recompiling scripts unnecessarily. -* Unity - Create the Assets/Plugins/FMOD/Cache folder if it does not exist when - generating RegisterStaticPlugins.cs during a build. - -Notes: -* Unity - Added type-specific icons for global parameters in the event browser. -* Unity - Removed conditional code below Unity 2019.4 minimum specification. -* PS4 - Now built with SDK 8.508. -* PS5 - Now built with SDK 3.00.00.27. - -15/04/21 2.02.00 - Studio API major release (build 115890) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Event instances now have minimum and maximum distance properties that can - be automated by parameters. These can be overridden by - FMOD_STUDIO_EVENT_PROPERTY_MINIMUM_DISTANCE and - FMOD_STUDIO_EVENT_PROPERTY_MAXIMUM_DISTANCE. -* Studio API - Added Studio::EventInstance::getMinMaxDistance. -* Studio API - Added FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE_NORMALIZED. Converts the - range min distance to max distance into the range 0 to 1, clamping values - outside that range. -* Studio API - Added a guid field to FMOD_STUDIO_PARAMETER_DESCRIPTION. -* Studio API - Added Studio::System::getParameterLabelByID, - Studio::System::getParameterLabelByName, - Studio::System::setParameterByIDWithLabel, - Studio::System::setParameterByNameWithLabel, - Studio::EventDescription::getParameterLabelByName, - Studio::EventDescription::getParameterLabelByID, - Studio::EventDescription::getParameterLabelByIndex, - Studio::EventInstance::setParameterByIDWithLabel, - Studio::EventInstance::setParameterByNameWithLabel. -* Studio API - Added Studio::Bus::getPortIndex and Studio::Bus::setPortIndex. -* Core API - Added FMOD_DSP_PARAMETER_ATTENUATION_RANGE for spatializing DSPs to - utilize Studio::EventInstance min and max distance. -* Core API - Unified platform specific output port types FMOD_[PLATFORM]_PORT_TYPE - and moved them to common FMOD_PORT_TYPE. Attempting to attach a channel - group to an output port type which is not available on the platform will - return an error. -* Core API - UWP - Added support for Windows N versions. -* Unity - In Events Browser the Global Parameters now show in folders. -* FSBank - Added native Linux version of Gui and Command line application. -* Profiler - Added native Linux version of the Core API profiler. -* Linux - Added ARM 64 bit support. - -Fixes: -* Studio API - Fixed behavior interaction between timelocked multi instruments and - sustain points so that multi instruments will play from the same point - that they were stopped via the sustain point. - -Notes: -* Studio API - Studio::EventDescription::getMinimumDistance and - Studio::EventDescription::getMaximumDistance replaced with - Studio::EventDescription::getMinMaxDistance. -* Studio API - Studio::EventInstance::setProperty on - FMOD_STUDIO_EVENT_PROPERTY_MINIMUM_DISTANCE or - FMOD_STUDIO_EVENT_PROPERTY_MAXIMUM_DISTANCE does not affect spatializers - with Override Range set. This is most noticeable with effect presets. -* Studio API - Studio::System::getCPUUsage changed to take a struct FMOD_CPU_USAGE as - 2nd parameter, also FMOD_STUDIO_CPU_USAGE removes core api values. Use - FMOD_CPU_USAGE for that. -* Studio API - Renamed Studio::EventInstance::triggerCue to - Studio::EventInstance::keyOff and Studio::EventDescription::hasCue to - Studio::EventDescription::hasSustainPoint. -* Core API - FMOD_DSP_TYPE_PAN and FMOD_DSP_TYPE_OBJECTPAN have an override attenuation - range property to use the min and max distance properties of the dsp and - ignore the attenuation range of the event instance. Defaults to true for - backwards compatibility. -* Core API - FMOD::System_Create takes a headerversion argument to check the core api - headers and libraries match. -* Core API - System::getCPUUsage changed to take a struct FMOD_CPU_USAGE. -* Core API - Incremented FMOD_OUTPUT_PLUGIN_VERSION for Output plugins. Dynamic - library Output Plugins must be rebuilt. FMOD_OUTPUT_INIT_CALLBACK argument - dspnumbuffers can now be modified and dspnumadditionalbuffers has been - added. Additionally, FMOD_OUTPUT_METHOD_POLLING has been removed. -* Core API - Incremented FMOD_CODEC_PLUGIN_VERSION for Codec plugins. Dynamic - library Codec Plugins must be rebuilt. Codec API now exposes - FMOD_CODEC_FILE_TELL_FUNC, FMOD_CODEC_ALLOC_FUNC, FMOD_CODEC_FREE_FUNC and - FMOD_CODEC_LOG_FUNC functions. Additionally, FMOD_CODEC_FILE_SEEK_FUNC - accepts a FMOD_CODEC_SEEK_METHOD. -* Core API - Changed FMOD_THREAD_AFFINITY from unsigned 64-bit integer to signed 64-bit - integer, reducing the maximum supported number of cores by one. -* Core API - UWP - FMOD MediaFoundation Codec is now included as a separate dll. -* FSBank API - Removed deprecated FSBANK_FORMAT_PCM_BIGENDIAN and - FSBANK_FORMAT_AT9_PSVITA, and renamed FSBANK_FORMAT_AT9_PS4 to - FSBANK_FORMAT_AT9. -* Resonance - Replaced min and max distance with FMOD_DSP_PARAMETER_ATTENUATION_RANGE. - If previous behavior is required, FMOD 2.2 is compatible with resonance - audio included with 2.1. -* Android - Minimum API version raised to 16 for 32 bit. -* Linux - Now built with LLVM/Clang 10. -* Linux - ARM - the minimum supported architecture has been lifted to armv7 with - NEON support. -* PS5 - Renamed platform specific APIs and headers from codename to official name. -* Unity - The [EventRef] attribute has been replaced with the EventReference type. - This change requires migration; use the FMOD/Update Event References - menu command to assist you with the migration process. -* Unity - The minimum version of Unity supported is now 2019.4 - -12/02/21 2.01.09 - Studio API minor release ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Added FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_CONNECTED and - FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_DISCONNECTED. -* Studio API - Added Studio::EventDescription::isDopplerEnabled. Will return false with - banks built prior to 2.01.09. -* Unity - Added a Volume property to FMOD Event Tracks. -* Unity - Improved plugin lib updates by automating the process in a few simple - steps. -* Unity - Added 7.1.4 speaker mode to Project Platform in the settings menu. -* Unity - Added support for generating unit options for Unity 2021 Visual - Scripting package. -* Unity - Added option to enable error reporting to Unity console from internal - FMOD system. -* Unity - Added a Setup Wizard to help with adding FMOD to projects. - -Fixes: -* Studio API - Fixed possible memory corruption due to race condition between user code - creating sounds asynchronously using sound info from an audio table and - unloading the bank containing the audio table. -* Studio API - Improved error detection and documentation regarding the requirement of - loading asset banks at the same time as metadata banks. -* Studio API - Fixed issue where stopping conditions on nested events without ahdsr - modulators would not play out when the parent event is still playing and - the nested event becomes untriggered. -* Studio API - Fixed issue where hot swapping an event via live update would invalidate - the API handle. -* Studio API - Fixed incorrect count from Studio::Bank::getEventCount when loading - banks built with 1.07, 1.08 or 1.09. -* Core API - Fixed substantial performance issue when connected to a profiler. -* Core API - Fixed sync points potentially being skipped as Channels transition from - virtual to real. -* Core API - Fixed warning being logged about truncated files on user created sounds. -* Core API - Fixed hang on .S3M format playback when seeking past calculated end of - song with FMOD_ACCURATETIME. -* Core API - Fixed some netstreams return FMOD_ERR_HTTP. Introduced 2.01.02. -* Core API - Fixed potential audio corruption when using the object spatializer. -* Core API - Fixed System::getPluginHandle returning internal only DSPs. -* Core API - Fixed crash with Convolution Reverb. Introduced 2.01.08. -* Core API - Fixed early and late delay support for FMOD_DSP_TYPE_SFXREVERB. - Introduced 2.01.04. -* UE4 - Add a configurable delay to automatic bank reloading to avoid a race - condition between banks being rebuilt in Studio and the integration - trying to reload them. -* UE4 - Remove unsupported log levels from settings. -* UE4 - Fixed blueprint AnimNotify causing Editor to crash. -* UE4 - 4.26 - Fixed asset generation regenerating assets when banks have not - been modified. -* UE4 - 4.26 - Fixed crashes caused by attempting to regenerate assets which are - read-only on disk. User is now prompted to check-out or make writable - assets which are read-only on disk. -* UE4 - 4.26 - Fixed sequencer integration. -* UE4 - 4.26 - Fixed AnimNotify not automatically loading referenced event asset. -* UE4 - 4.26 - Fixed FindEventByName failing to load required event asset. -* UE4 - 4.26 - Fixed crash when running with sound disabled (eg. running as A - dedicated server or running with the "-nosound" command line option). -* UE4 - iOS/tvOS - Fixed audio occasionally not returning on application resume. -* UE4 - XboxOne - Fixed third party plugins not working. -* Unity - Made binary selection at build time more robust by checking for - DEVELOPMENT_BUILD in the active script compilation defines. -* Unity - Fixed context menu entries being disabled on FMOD Event Playable - parameter automation. -* Unity - Fixed a hang that could occur when scripts were recompiled after a - callback was fired from FMOD to managed code. -* Unity - Fixed banks not loading on Mac if project was saved from PC to source - control. -* Unity - Fixed a number of build errors on various platforms caused by the - static plugin system's use of the IL2CPP --additional-cpp command - (the static plugin system now generates C# instead of C++). -* Unity - PS5 - Removed unsupported Audio 3D option from the platform settings. -* Unity - UWP - Fixed warnings and errors surrounding Marshal usage depending - on Unity version, scripting backend and API compatibility combination. - -Notes: -* GameCore - Updated to February 2021 GDK. -* UE4 - Changed default source directory for runtime bank files to - Content/FMOD/Desktop. Platform specific INI files should be used to - override this as appropriate. - -11/02/21 2.01.08 - Studio API minor release (build 114355) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Added FMOD_SYSTEM_CALLBACK_OUTPUTUNDERRUN, which is called when a - buffered mixer output device attempts to read more samples than are - available in the output buffer. -* Core API - Mac - Added Resonance Audio Apple Silicon support. -* Unity - Improved bank refresh logic and added a status window that appears when a - refresh is about to happen. -* Unity - Added support for automating event parameters on the Timeline. - -Fixes: -* Studio API - Fixed fast spawning scatterer instruments with low polyphony spawning too - few instruments. -* Studio API - Fixed a memory leak that could occur when a sound got stuck in the - loading state. -* Core API - Fixed crash on .XM format playback. -* Core API - Fixed potential hang with net streams if server returns errors. -* Core API - Fixed extraneous logging of internal pool allocations. -* Core API - Fixed rare crash when releasing convolution reverb DSP instances. -* Core API - UWP - Fixed logging spam when using WASAPI output mode. -* UE4 - Expose the Enable Timeline Callbacks property of FMOD Audio Component to - blueprints. -* UE4 - Fixed crash which could occur when an FMOD Audio Component which uses a - programmer sound is destroyed by unloading the map or closing the game. -* Unity - Fixed Discrete and Labelled global parameters that do not appear in the - Event Browser. -* Unity - Fix multiple listeners positioning not working correctly. -* Unity - Fixed sample data failing to load when Load Bank Sample Data is enabled - in a project with separate asset banks. -* Unity - Fixed an Android build error when the Export Project option is set. -* Unity - Fixed FMOD IL2CPP arguments being left in ProjectSettings after building, - which could break builds on other operating systems. -* Unity - Android - Fixed an IL2CPP build error on some NDK versions. -* Unity - PS5 - Fixed compile error due to stale platform API CS file. -* Unity - iOS/tvOS - Fixed audio occasionally not returning on application resume. - -Notes: -* Switch - Now built with SDK 11.4.0. -* UE4 - Added support for UE4.26. - -18/12/20 2.01.07 - Studio API minor release (build 113487) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Added FMOD_SYSTEM_CALLBACK_DEVICEREINITIALIZE. -* Core API - Mac - Added Apple Silicon support. -* Unity - Added support for generating unit options for Bolt visual scripting. -* Unity - Added option to stop an emitter's event instance when the emitter is - further than its maximum attenuation distance from all listeners. - -Fixes: -* Studio API - Command replays now record the initial state of global parameters. -* Studio API - Fixed errors from instrument creation failure not being reported to the - error callback. -* Studio API - Fixed crash due to null pointer dereference when instrument creation - fails due to running out of memory. -* Studio API - Fixed crash when unloading a bank from the - FMOD_STUDIO_EVENT_CALLBACK_STOPPED callback. -* Studio API - Fixed crash when hot swapping a nested event and its parent where the - child event is registered before the parent event. -* Studio API - Fixed spurious warning messages when connecting Live Update. -* Studio API - Fixed crash which could occur if a user thread loads a bank - asynchronously while another thread releases the system. -* Studio API - Switch log messages about missing plugins from warning to log level when - the system is initialized with FMOD_STUDIO_INIT_ALLOW_MISSING_PLUGINS. -* Core API - Fixed rare crash due to race condition when calling Sound::getOpenState - for a sound created with FMOD_NONBLOCKING. -* Core API - Fixed rare crash occurring some time after calling - System::attachChannelGroupToPort due to internal buffer synchronization. -* Core API - Fixed certain internet radio stations that serve up playlists failing to - load correctly. -* Core API - Fixed sidechain modulator release being cutoff if sidechain source is - destroyed. -* Core API - Linux - Fixed hang in shutdown when using ALSA as the output mode when - ALSA is unable to write to the output buffer. -* Core API - Android - Reduced AAudio fail to stop error message to a warning. -* Core API - UWP - Fixed issue preventing loading of 32 bit x86 plugins. -* UE4 - Fixed spurious warning messages when loading banks which use plugins. -* UE4 - Fixed listener being stuck at world origin when using a standalone game - from the editor (introduced in 2.00.12). -* UE4 - XboxOne - Fixed users having to modify engine code to copy libs. -* Unity - Android - Fixed Mobile Low and Mobile High platforms using the wrong - bank path when on Android. -* Unity - Prebuild debug warning added for invalid FMOD Event paths. -* Unity - Fixed banks not being copied into the project when using Asset Bundles. -* Unity - Fixed specified bank paths for multi platform builds. - -Notes: -* Core API - Changed THREAD_AFFINITY enum in C# wrapper from unsigned 64-bit integer - to signed 64-bit integer, reducing the maximum supported number of cores - by one. -* GameCore - Updated to August 2020 QFE 5 GDK. -* XboxOne - Now built with July 2018 QFE15 XDK. -* PS4 - Resonance Audio now built with SDK 8.008. -* PS5 - Resonance Audio now built with SDK 2.00.00.09. -* iOS - Now built with iOS SDK 14.2 (Xcode 12.2), min deploy target - for iOS is now 9.0 as mandated by Xcode. -* Mac - Now built with macOS SDK 11.0 (Xcode 12.2). -* Stadia - Now built with SDK 1.55. -* Unity - Moved Timeline and Resonance Audio classes from global namespace into - FMOD namespaces. - -13/11/20 2.01.06 - Studio API minor release (build 112764) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Added FMOD_SYSTEM_CALLBACK_BUFFEREDNOMIX. -* Core API - PS5 - Added support for microphone recording. -* Unity - Added support for Addressables. -* Unity - In Events Browser the banks folders now show when mirroring is disabled. -* Unity - Setting Live Update port per-platform is now supported. -* Unity - FMOD now automatically selects the release or logging version of the - native libraries at build time, based on the Development Build setting. - -Fixes: -* Studio API - Fixed issue where tempo based scatterer would play slightly off beat. -* Core API - Improved error message when binding to a port fails due to a permission - error. -* Core API - Android - Fixed issue where audio would disconnect while debugging. -* UE4 - Fixed deprecation warning in FMODStudioEditorModule. -* Unity - Fixed FMOD_ERR_MEMORY caused by leaking System objects on play-in-editor - script reload. -* Unity - Fixed volume value in debug window. -* Unity - Prebuild debug warning added for invalid FMOD Event paths. -* Unity - HTML5 - Fixed error when building for development. -* Unity - Switch - Fixed a build error due to fmodplugins.cpp not being enabled. - -Notes: -* Core API - Renamed FMOD_CODEC_METADATA_CALLBACK to FMOD_CODEC_METADATA_FUNC to - better reflect its purpose. -* Core API - Sound::getFormat now returns FMOD_SOUND_FORMAT_BITSTREAM if - FMOD_CREATECOMPRESSEDSAMPLE is used with System::createSound. -* GameCore - Updated to August 2020 QFE 4 GDK. -* PS4 - Now built with SDK 8.008. -* PS5 - Now built with SDK 2.00.00.09. - -09/10/20 2.01.05 - Studio API minor release (build 112138) ------------------------------------------------------------------------------------------- - -Features: -* Core API - XboxOne and Switch - Added ResonanceAudio plugin support. -* Core API - GameCore - Added FMOD_GameCore_SetXApuStreamCount to control reserved - XApu resources. -* Unity - Edit Settings now allows FMOD output mode to be set per-platform. -* Unity - Added support for specifying static plugins in the FMOD Settings. -* Unity - Added support for setting a per-platform callback handler to run custom - configuration code prior to initialization. -* Unity - Added settings to customize DSP buffer length and count per-platform. -* Unity - Added metering channel order setting. -* Unity - Assembly Definition files added to the FMOD plugin. -* Unity - The FMOD scripts will now compile without the unity.timeline package - installed. If you wish to use Timeline you will need to install this - package for Unity 2019.1 and above. -* Unity - GameCore - Add resonance audio support. -* Unity - iOS - Added simulator support. -* Unity - PS5 - Add resonance audio support. -* GameCore - Added support for decoding Opus compressed FSBs / Banks using platform - hardware acceleration on Scarlett devices. This is a preview release of - this feature, please report any bugs found directly to FMOD support email. - -Fixes: -* Studio API - Live update socket errors are now handled gracefully, only warnings are - logged. -* Studio API - Fix marker callbacks for multiply nested events. -* Studio API - Fixed Studio::EventDescription::is3D, Studio::EventDescription::isOneShot and - Studio::EventDescription::isNested potentially returning an error when the event - contains a nested reference to an event which has not been loaded. -* Core API - Fixed crash in convolution reverb if out of memory. -* Core API - Fixed rare crash when updating net stream metadata tags. -* Core API - Android - Reduce popping encountered on certain handsets by dynamically - adjusting latency. -* Core API - Android - Fix issue where regular gaps in audio were encountered on - handsets with using very large burst sizes. -* Core API - Android - Fix issue where System::mixerSuspend would fail on certain - handsets. -* Core API - Mac - Fixed init returning an error when no output devices available. -* Core API - Win - Fixed crash on Win7/8 devices with high end CPUs that support - AVX-512. -* Core API - Fix convolution crash if a small impulse was used followed by a large - impulse. Introduced in 2.01.04. -* Core API - HTML5 - Fix missing implementation of Sound::getSyncPoint/getSyncPointInfo/ - addSyncPoint/deleteSyncPoint. -* UE4 - Fixed potential null pointer dereference when updating FMOD listeners for - play-in-editor session. -* UE4 - PS5 - Disabled UE4 built-in audio to prevent crash at startup. -* Unity - Fixed rare TimeZoneNotFoundException encountered on some devices. -* Unity - Fixed play-in-editor not using new speaker mode when changed in settings. -* Unity - HTML5 - Fix FMOD_ERR_UNSUPPORTED error being returned from bank loading. - Introduced in 2.01.04. - -Notes: -* Studio API - Issues with reconnecting Live Update (primarily on mobile) have been - resolved in FMOD Studio. Update to FMOD Studio 2.01.05 or higher. -* GameCore - To produce Opus banks in FMOD Studio, add the new "Custom" platform to - your project and select Opus as the encoding. -* GameCore - Updated to June 2020 QFE 6 GDK. - -10/09/20 2.01.04 - Studio API minor release (build 111454) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Added a flag for discrete parameters to FMOD_STUDIO_PARAMETER_FLAGS -* Core API - Convolution reverb optimizations. Now multithreaded to avoid spikes in - mixer performance. Significant memory optimization with multiple instances. -* Core API - Android - Added support for swapping output modes. -* Core API - GameCore - Added FMOD_GAMECORE_PORT_TYPE_COPYRIGHT_MUSIC output port - type. -* Unity - Added OnEnabled and OnDisabled for StudioBankLoader. -* Unity - Added attachedRigidbody to OnTriggerEnter and OnTriggerExit for EventHandler. -* Unity - Updated the event browser for better performance and more consistent - look and feel. - -Fixes: -* Core API - Android - Fixed recording support when using AAudio. -* Core API - Android - Fixed issues with headphone detection with AAudio. -* Core API - XboxOne - Fixed getOutputHandle not returning the IAudioClient on WASAPI. -* UE4 - When running multiplayer PIE sessions a listener is added for each player - in each viewport. -* UE4 - Improved handling of FMOD Studio objects being renamed or removed when - reloading banks. Previously it would appear that references to renamed - objects were correctly handled when they were not; references in UE4 - must be manually fixed up when FMOD Studio names are changed. -* UE4 - Improved handling of unsupported characters in FMOD Studio object names. -* Unity - Made the Studio Event Emitter initial parameter value UI handle prefab - instances and multi-selections properly. -* Unity - Fixed tooltips not working for EventRef. -* Unity - Fixed bank loading on Android with split/non-split APKs. -* Unity - Fixed plugin paths for Windows and Linux. - -Notes: -* Core API - GameCore - FMOD_GAMECORE_PORT_TYPE_MUSIC is no longer ignored by - GameDVR. Use FMOD_GAMECORE_PORT_TYPE_COPYRIGHT_MUSIC for background music - which should not be captured by GameDVR. -* Stadia - Now built with SDK 1.50. -* Android - Examples now include CMake based projects alongside the NdkBuild based - projects. -* GameCore - Updated to June 2020 QFE 4 GDK. - -05/08/20 2.01.03 - Studio API minor release (build 110858) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Added System::getDSPInfoByType. -* Core API - GameCore - Added support for microphone recording. - -Fixes: -* Studio API - Fixed named marker callbacks for nested events. -* Studio API - Fixed issue with accumulating event instruments spawned by a scatterer. -* Studio API - Fixed issue where an event instance handle would incorrectly remain valid. -* Studio API - Improved detection of user code incorrectly using a dangling pointer from - a previously destroyed Studio System object. -* Studio API - Improve panner envelopment when source is above or below the listener. -* Studio API - Fixed FMOD_STUDIO_PARAMETER_DESCRIPTION::maximum being 1 higher than the - maximum value which could be set. -* Studio API - Fixed discrete parameters with non-zero seek speed or velocity changing - value too quickly after having their value set by an API call. -* Studio API - Fixed stopping conditions for nested events. -* Core API - Ignore data and fmt sections of a wave file that are contained in lists. -* Core API - iOS - Fixed stale audio from before System::mixerSuspend playing after - calling System::mixerResume. -* Core API - iOS - FMOD initializes with FMOD_OUTPUTTYPE_NOSOUND if unable to - initialize due AVAudioSessionErrorCodeCannotStartPlaying. Switching to - FMOD_OUTPUTTYPE_COREAUDIO via System::setOutput is also supported. -* Core API - Mac - Fixed automatic default device switching. -* Core API - Win - Improved handling of IPv6 net-streams. -* Core API - Fixed FMOD_DSP_STATE_DFT_FUNCTIONS::inversefftreal function possibly - causing corrupted audio if it and FMOD_DSP_STATE_DFT_FUNCTIONS::fftreal - were called from different threads. -* UE4 - Android - Fixed issue which could cause Android packaged builds to crash - at startup. -* Unity - Fix crash in HasBankLoaded if RuntimeManager isn't initialized. - -Notes: -* Unity - Added GameCore platform. -* Switch - Now built with SDK 10.4.1. -* GameCore - Updated to June 2020 QFE 1 GDK. - -01/07/20 2.01.02 - Studio API minor release (build 110199) ------------------------------------------------------------------------------------------- - -Features: -* Core API - GameCore - Added XMA support for Scarlett. -* Core API - GameCore - Added background music port support. -* Core API - PS5 - Added support for all platform specific ports, including background - music, controller speaker and vibration. -* Unity - Added field for specifying a sub directory for Banks in the settings. - -Fixes: -* Studio API - Fixed an issue with events referencing missing parameter descriptions - when parameters were unused for a platform. For old banks references to - missing parameter descriptions are stripped out of the event at load - time. Newer banks will always include all parameter descriptions to - ensure consistency across platforms. -* Studio API - Fixed assert that would occur when setting a parameter that in turn - creates an entity that also is listening for that parameter to change. -* Studio API - Fixed doppler calculation to use listener attenuation position. -* Studio API - Fixed memory leak caused by creating a bus with missing bank data. -* Studio API - Improved performance of repeated calls to Studio::EventDescription::is3D. -* Studio API - HTML5 - Fixed loadBankMemory not allowing a UInt8 memory object type to - be passed to it. -* Core API - Fixed silence from ports when switching from no-sound back to a valid - output mode with ports. -* Core API - Fixed incorrect return of FMOD_ERR_DSP_RESERVED on ChannelGroups caused - by internal race condition. -* Core API - Fixed FMOD_LOOP_NORMAL flag not working with netstreams that have - "Accept-Ranges: bytes header". -* Core API - iOS - Fixed conflicting ogg vorbis symbols if linking FMOD against a - project containing vorbis already. -* Core API - Android - Fixed detection of headphones being plugged and unplugged via - the headphone jack on some devices. -* Core API - GameCore - Thread names will now show up in PIX. -* Core API - PS5 - Fixed crash when looping AT9 playback, no change required, fixed - by SDK 1.00. -* Core API - PS5 - Fixed AT9 decode failure when seeking near the end of the file. -* Core API - Stadia - Fixed crash on playback of Vorbis compressed audio. -* Unity - Fixed "ERR_INVALID_HANDLE" errors in UWP builds. -* Unity - Changed banks to only be copied into the project when building. - -Notes: -* PS4 - Resonance Audio now built with SDK 7.508. -* PS5 - Updated to SDK 1.00.00.39. -* UE4 - Added GameCore platform. -* UE4 - Added support for UE4.25. -* UE4 - Added PS5 platform. - -12/05/20 2.01.01 - Studio API minor release (build 109257) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Stadia - Added microphone recording support. -* Unity - Added support for separate listener attenuation position. - -Fixes: -* Studio API - Fixed issue where an instrument not on the timeline would fail to be - untriggered while the timeline is inside a source transition region. -* Studio API - Improve loudness meter performance. -* Studio API - Fixed crash that occurs with instrument hotswaps that change the - instrument and its position on the timeline while auditioning. -* Studio API - Fixed issue where scatterer instrument would spawn streaming instruments - that would exceed the polyphony limit. -* Studio API - Fixed issue where the Studio update thread could hang trying to release - an event instance where the instance being released used a streaming - programmer sound which was reused by another instance and the second - instance was still active. -* Studio API - Fixed scheduling behavior of events inside multi instruments so that the - event will play out async instruments, ahdsr modulators and adjust to - pitch modulation before playing the next item in the multi instrument. - It will still play before DSP tails. -* Core API - Fixed potential crash in the mixer or stream thread when playing - MIDI / MOD style files due to race condition. -* Core API - Android - Fixed potential crash when opening a file using the Android - asset syntax file:///android_asset/. -* Core API - PS5 - Fixed error being returned from platform specific affinity API. -* UE4 - Fixed possible crash during module shutdown if DLLs aren't loaded - correctly. -* UE4 - Fixed Android builds crashing at startup. -* Unity - Linux - Fixed FMOD_ERR_HEADERMISMATCH error due to conflict between - FMOD Studio and FMOD Ex (built into Unity) in 2019.3. -* Unity - Fixed settings bank path using wrong directory separators. -* Resonance - Fixed rare crash in Resonance Audio due to thread safety issue. - -Notes: -* GameCore - Updated to April 2020 GDK. -* Stadia - Now built with SDK 1.46. -* PS4 Now built with SDK 7.508. -* XboxOne - Now built with July 2018 QFE13 XDK. -* HTML5 - Now built with SDK 1.39.11, both fastcomp and upstream. -* Unity - Added PS5 platform. - -23/03/20 2.01.00 - Studio API major release (build 108403) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Studio::System::setListenerAttributes now supports a separate position - argument for attenuation. -* Core API - Optimized mixing and vorbis decoding. Performance increase of 2-2.5x on - all platforms. -* Core API - Optimized Multiband EQ. Performance increase of 2-3x on all platforms - for stereo and higher channel count processing. -* Core API - Added cross-platform API for setting thread affinity, stack size and - priority via FMOD_Thread_SetAttributes. -* Core API - Win - FMOD_OUTPUT_DEVICELISTCHANGED_CALLBACK now responds to default - device changes. - -Fixes: -* Studio API - Fixed issue where async instruments on a transition timeline with fade - out curves would snap to full volume when exiting the transition - timeline. -* Studio API - The end of destination and magnet regions are included as part of the - timeline length. -* Studio API - Changed behaviour of stopped async multi-instrument entries with - unlimited loop counts to not play. -* Studio API - Loop regions of lower priority that coincide with transitions are now - followed during the transition's source timeline. -* Core API - Fixed potential crash when calling Sound::getSubSound on a playing - stream, this is now prohibited and will instead return an error. -* Unity - Fixed compatibility issues with C# wrapper. FMOD objects are now passed - as IntPtr for callback arguments from native to C#. Use the constructor - of the correct type to recreate the object from the IntPtr. - -Notes: -* Core API - Calling Sound::getSubSound from FMOD_CREATESOUNDEXINFO::nonblockcallback - is no longer a synchronous operation meaning an additional callback - will execute when fetching the subsound has completed. -* Core API - Removed stackSizeStream, stackSizeNonBlocking and stackSizeMixer from - FMOD_ADVANCEDSETTINGS. These are now set via FMOD_Thread_SetAttributes. -* Core API - Removed deprecated FMOD_ADVANCEDSETTINGS::commandQueueSize member. -* Core API - Removed all platform specific thread affinity APIs, affinity is now - controlled via FMOD_Thread_SetAttributes. -* Core API - Renamed FMOD_OUTPUT_DESCRIPTION::polling to FMOD_OUTPUT_DESCRIPTION::method. -* Core API - When calling FMOD_Memory_Initialize with valid 'useralloc' and 'userfree' - callbacks, the requirement of 'userrealloc' is now optional. -* Core API - DSP Echo delay effect minimum reduced to 1 millisecond. -* FSBank - Minimum requirement for Mac version of the FSBank tool has been lifted - to macOS 10.12 due to framework update. -* Profiler - Minimum requirement for Mac version of the Profiler tool has been lifted - to macOS 10.12 due to framework update. - -02/03/20 2.00.08 - Studio API minor release (build 108014) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Added FMOD_STUDIO_EVENT_PROPERTY_COOLDOWN to set per instance cooldown. -* Studio API - Added Studio::getMemoryUsage, Bus::getMemoryUsage, - Studio::EventInstance::getMemoryUsage and FMOD_STUDIO_MEMORY_USAGE for retrieving - memory usage statistics in logging builds. - -Fixes: -* Studio API - Fixed issue with determining the end of an event inside a multi - instrument. -* Studio API - Fixed issue with determining the end of an async instrument with pitch - automation. -* Studio API - Fixed potential crash when playing a command replay from a 64bit game - on a 32bit host. -* Studio API - Fixed issue where polyphony limits on an event and bus could both apply - causing too many event instances to be stolen when starting a new event - instance. -* Studio API - Fixed issue where Studio update thread could get stuck in an infinite - loop and eventually deadlock with the game thread when a sound object - used for a programmer sound was used by more than one event instance. -* Studio API - Fixed issue where transitioning from the start of a transition region - to a destination marker using a relative transition with a tempo marker - would result in the event stopping. -* Studio API - HTML5 - Fixed missing plugin errors for banks using loudness meter, - convolution reverb or pitch shifter. These effects can be CPU intensive - so use them with caution. -* Core API - Fixed seeking accuracy of mp3 files that use small mpeg frame sizes. -* Core API - Fixed ChannelGroup::isPlaying from returning false on a parent - ChannelGroup, when children groups in certain configurations had playing - sounds. -* Core API - iOS - Fixed issue causing MP3 netstreams to not work. -* Core API - iOS - Fixed issue where FMOD_CREATECOMPRESSEDSAMPLE would not work as - expected with MP3 files. -* UE4 - Fixed crash in 4.24 caused by SetActive call in FMODAudioComponent. -* UE4 - Fixed warning log message when using the IsBankLoaded blueprint function - when the bank is not loaded. -* Unity - TextAsset banks import directory now defaults to 'FMODBanks' instead - of the root 'Assets' folder. -* Unity - HTML5 - Fixed compilation issue preventing launch. - -Notes: -* XboxOne - Now built with July 2018 QFE12 XDK. -* PS4 - Resonance Audio now built with SDK 7.008. -* HTML5 - JavaScript bindings are now separate from the main bitcode binary to - facilitate recompilation of ASM.JS / WASM or usage in strictly native - projects. - -17/01/20 2.00.07 - Studio API minor release (build 107206) ------------------------------------------------------------------------------------------- - -Features: -* Unity - Changing bank import type now gives you the option of removing the - previously imported banks. -* UE4 - Added getParameter functions for getting user and final values. - -Fixes: -* Studio API - Fixed application of fade curves to instruments when transitioning - immediately between transition timelines. -* Studio API - Fixed Studio::EventDescription::is3D to return true for events with - scatterer instruments, for 3D instruments inside multi instruments, and - for spatializers on non-master tracks. -* Studio API - Fixed relative transition calculation when performing a transition jump - that would incorrectly end up at the beginning instead of the end of the - destination or vice versa. -* Studio API - Fixed issue when encountering a loop region in a destination timeline - which would stop the event in specific circumstances. -* Studio API - Fixed crash when profiling runtime with an older Studio tool version. -* Core API - Fixed asserts from setting readonly DSP data parameters when the setter - isn't implemented. -* Core API - Fixed FSBankLib Vorbis encoder not supporting quality zero as default. -* Core API - Fixed System::setDriver not always applying if called after - System::setOutput when the device list has changed. -* Core API - Fixed DSP_PARAMETER_DESC being populated with incorrect data in C#. -* Core API - Fixed MP3 codec not respecting FMOD_ACCURATETIME flag when played as - FMOD_CREATECOMPRESSEDSAMPLE. -* UE4 - Fixed EncryptionKey not being saved to packaged game. Bank encryption keys - in existing projects will need to be re-entered after upgrading. -* UE4 - XBoxOne - Fixed third party plugin path. -* UE4 - Fixed FMODEvent::GetParameterDescriptions not working in built game. -* Unity - Fix lag in editor due to banks being reimported. -* Unity - Fixed FMODStudioCache causing deserialization exceptions by moving the - file to a separate cache folder. - -Notes: -* PS4 - Now built with SDK 7.008.031. -* Stadia - Now built with SDK 1.38. -* Switch - Now built with SDK 9.3.0. -* HTML5 - Now built with sdk-1.38.19-64bit -* UE4 - Added support for UE4.24. -* UE4 - Added support for Stadia. -* OSX - Updated Resonance Audio plugin with performance improvements. - -20/11/19 2.00.06 - Studio API minor release (build 106220) ------------------------------------------------------------------------------------------- - -Fixes: -* Studio API - Fixed issue where a loop on an instrument followed immediately by a - transition timeline could result in a short pause in playback. -* Core API - Mac - Fix crash calling recordStart at the same time as unplugging a USB - microphone. -* Core API - Android - minimum Android version for AAudio support changed to 8.1 - (API 27) to circumvent AAudio RefBase crash issue. -* Core API - XboxOne - Fixed background music port going silent if XAudio is - initialized outside of FMOD. -* Core API - Stadia - Fixed crash at static initialization time when using the logging - build on system software v1.37 and newer. -* FSBank API - Win - Fixed bug introduced in 2.00.05 which prevented banks being built - when passing a non-empty encryption key to FSBank_Build. -* UE4 - Fixed asset loading errors on dedicated server. -* Unity - Fixed integration deleting non FMOD bank/bytes files when refreshing. -* Unity - Fixed handling of iOS AudioSession interruption notifications. - -Notes: -* iOS - Now built with iOS SDK 13.1 and tvOS SDK 13.0 (Xcode 11.1). -* Mac - Now built with macOS SDK 10.15 (Xcode 11.1). - -09/10/19 2.00.05 - Studio API minor release (build 105402) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Add event and bus instance CPU profiling to the FMOD Studio API. -* Core API - Stadia - Added voice output port FMOD_STADIA_PORT_TYPE_VOICE. - -Fixes: -* Studio API - Fixed crash caused by creating an instance of an event containing a - nested event which has not been loaded. -* Studio API - Fixed pitch changes on a bus propagating across sidechain connections. -* Studio API - Fixed application of transition fade curves to parameter triggered - instruments on multi track events. -* Core API - Fixed mixer falling silent due to very small but not denormal positions - being passed into the API. -* Core API - Fixed crash when processing loops of FMOD_DSPCONNECTION_TYPE_SEND - or FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN. -* Unity - Removed high frequency of UnityEditor.SetDirty calls. -* Unity - Fixed issues with using relative paths in linked project/bank directory. - -Notes: -* Switch - Now built with SDK 8.3.0. -* XboxOne - Now built with July 2018 QFE9 XDK. - -06/09/19 2.00.04 - Studio API minor release (build 104705) ------------------------------------------------------------------------------------------- - -Features: -* Official support for Stadia as a separate platform is now complete, anyone using - the Linux version should migrate across. - -Fixes: -* Studio API - Fixed issue where programmer sound without an associated sound would - have unexpected behavior when modulated. -* Studio API - Fixed issue where instruments with low polyphony would incorrectly fail - to play. -* Studio API - Fixed looping multi-instrument with streaming instruments cutting - off near the end of the loop when the length of the multi-instrument is - slightly longer than a multiple of the instrument length. -* Studio API - Fixed issue where automation points are reused in transition timelines - when both the timelines and the transition have no automation points. -* Core API - Fixed crash caused by unlinking a convolution reverb dsp during a mix. -* Core API - Fixed potential alignment crash on ARM devices if using FMOD_DSP_PAN. -* Core API - Fixed leak of socket handles when binding to a listening port fails. -* Core API - Win / UWP / XboxOne - Fixed incorrect DSP CPU reporting when using - FMOD_OUTPUTTYPE_WINSONIC. -* UE4 - Fixed crash in PlayEventAtLocation when world context is invalid. -* UE4 - Fixed failed to load errors when playing in Standalone. -* UE4 - Switch to using "Additional non-asset directories to copy" packaging - setting for FMOD banks to avoid possible deadlocks at runtime. -* Unity - Fixed banks being copied to project repeatedly when using AssetBundles. -* Unity - Fixed Events not auditioning from split banks. -* Unity - Fixed RuntimeManager being able to update the 3DAttributes for an - Event Instance multiple times using different values. - -02/08/19 2.00.03 - Studio API minor release (build 103912) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Improved ASIO channel mapping via FMOD_ADVANCEDSETTINGS::ASIOSpeakerList. - Skips irrelevant speakers with FMOD_SPEAKER_NONE and supports devices up - to 32 channels without using FMOD_SPEAKERMODE_RAW. -* Core API - Android - Added support for AAudio via FMOD_OUTPUTTYPE_AAUDIO. -* Core API - PS4 - Added ResonanceAudio plugin for PS4. -* Core API - Android - Added support for setting thread affinity via - FMOD_Android_SetThreadAffinity. -* UE4 - Added blueprint node for Studio::EventInstance::release. -* Unity - Added setParameter by name wrapper function to StudioEventEmitter.Features: -* Unity - Fixed crash when setting logging level to LOG and entering playback. - -Fixes: -* Core API - Fixed rare crash on Studio::System::release. -* UE4 - Fixed FMODAudioComponent not being occluded are being stopped and - restarted. -* Unity - Fixed project determinism issue causing paths to update when opening - the project on Windows and Mac. -* HTML5 - FMOD Studio examples updated with 2.0 API changes. - -Notes: -* Switch - Now built with SDK 8.2.0. -* XboxOne - Now built with July 2018 QFE7 XDK. - -18/06/19 2.00.02 - Studio API minor release (build 102879) ------------------------------------------------------------------------------------------- - -Features: -* Core API - C# - Added getters to DSP_PARAMETER_FFT that will fill a user provided - buffer, to avoid garbage collection. -* Studio API - FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED, - FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER, and - FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED callbacks are now called from - nested events. -* UE4 - Added support for tvOS. -* Unity - StudioEventEmitter and EventRef now support the use of GUIDs or paths. -* Unity - StudioListener components will be assigned an index from the - RuntimeManager at runtime, rather than user specified. - -Fixes: -* Core API - Win 64bit - Skip JACK ASIO driver when enumerating ASIO devices. An - unrecoverable crash occurs in the driver when attempting to query its - capabilities. -* UE4 - Fixed "Accessed too early?" crash by changing the plugin loading phase. -* UE4 - Fixed OnEventStopped not being broadcast when the FMODAudioComponent - is destroyed. -* Unity - Fixed third party plugin paths for Win32 and Mac. -* Unity - Changed the Debug Overlay Window ID to avoid conflicts. -* Unity - iOS - Fixed sound stopping in editor when focus is lost. - -* PS4 - Now built with SDK 6.508.021. - -09/05/19 2.00.01 - Studio API minor release (build 102182) ------------------------------------------------------------------------------------------- - -Features: -* Core API - ChannelMix DSP now supports re-routing input channels. -* UE4 - Added support for UE4.22. -* UE4 - Added Encryption Key to the settings for loading sounds from - encrypted banks. -* UE4 - Added Play-In-Editor logging options to Plugin Settings. -* UE4 - Android - Added support for x86_64. -* Unity - Added SetParameter by ID to StudioEventEmitter. -* Unity - Added Encryption Key to the settings for loading sounds from - encrypted banks. -* Unity - Added mouse events to StudioEventEmitter trigger options. - -Fixes: -* Studio API - Fixed assert caused by a backwards transition with a lead out on a - transition timeline with callbacks for timeline markers. -* Studio API - Fixed bug in cone angle built-in parameter calculation when using - FMOD_INIT_3D_RIGHTHANDED. -* Core API - Fixed virtualized objects from object spatializer being silenced - (introduced in 2.00.00). -* Core API - Fix crash when using convolution reverb with a DSP buffer size of 4096 or - above. -* Core API - Fix crash trying to load corrupt WAV files with 0 length chunk size. -* Core API - Fix crash trying to load corrupt MP3 files. -* Core API - Fixed send dsp data being retained after being bypassed. -* Core API - iOS - Fixed crash when suspending or resuming the mixer while audio is - loading. -* UE4 - Fixed Ambient LPF values not being set properly. -* UE4 - Fixed builds failing due to the integration being loaded after - blueprints. -* UE4 - Fixed listener using the correct nested AudioVolume. -* Unity - Fixed handling banks in sub-directories. -* Unity - Fixed IOException when trying to copy banks into StreamingAssets. -* Unity - Fixed Events previewed in Timeline not stopping. -* Unity - Fixed StudioListeners with an index larger than zero causing errors. -* Unity - Fixed FMODStudioSettings.asset modifying bank list order when - using different scripting backends. -* Unity - Remove garbage collection overhead in DebugOverlay. -* Unity - Fixed creating duplicate objects when loading banks for the Editor. -* Unity - Fixed Emitters cleaning up properly when using one shot Events. -* Unity - Fixed paths for plugins in editor. -* Unity - Fixed build errors on iOS / tvOS due to "lowLevelSystem" references. -* Unity - Removed excessive error logging when no project or folder linked - to the integration. -* Unity - Fixed occasional issues with copying banks into StreamingAssets. -* Unity - Fixed Master Bank not being found if in a sub directory. -* Unity - Fixed StudioParameterTrigger IndexOutOfRange exception. - -Notes: -* XboxOne - Now built with July 2018 QFE4 XDK. - -14/03/19 2.00.00 - Studio API major release (build 101145) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Bank sample data encryption is now supported via the Studio API. - Use FMOD_STUDIO_ADVANCEDSETTINGS.encryptionkey to specify the - encryption key to use when opening banks and use the - FMOD_STUDIO_LOAD_BANK_UNENCRYPTED flag to load unencrypted banks - if an encryption key has been set. -* Studio API - Added built-in parameter for speed. -* Studio API - Added support for global parameters. -* Studio API - Added support for global mixer automation. -* Studio API - Added the ability to set a custom final value on an AHDSR modulator. -* Studio API - Added ignoreseekspeed argument to public api setParameter functions. -* Studio API - Added the ability to automate time based ahdsr properties. -* Studio API - Added a command instrument with the ability to stop all non-nested - instances of an event description. -* Core API - Added output device enumeration to Windows Sonic output plugin. -* Unity - Switch platform settings have been moved into a separate dropdown. - -Fixes: -* Studio API - Event parameters with "Hold value during playback" enabled now - snap to their target values when their event is started. -* Studio API - Changed quantization calculation to use future tempo markers if no past - tempo markers are present, and default to 4/4 timing at 120 bmp if no - tempo markers are present. -* Studio API - Transition regions not using quantization perform any probability - determinations each time all other required conditions are newly met. -* Studio API - Sidechain modulators now correctly handle multiple sidechain inputs. -* Core API - Fixed volume spike due to tremolo DSP with high duty setting. -* Core API - Fixed excessive instances of clipping that occur when adjusting - the FMOD_DSP_THREE_EQ_LOWCROSSOVER value of a DSPThreeEQ DSP in - the low frequency range. - -Notes: -* Updated Resonance Audio plugin removing additional transformation of occlusion values. - If previous occlusion calculation is required, replace the resonance audio libraries - with their 1.10 versions. -* The GoogleVR plugin deprecated in 1.10 has now been removed, Resonance Audio - is available as a functional drop in replacement. -* Studio API - The parameter API has been updated. See the "What's New in 2.00" - section in the API documentation for details. -* Studio API - The deprecated ParameterInstance class has been removed. -* Studio API - Seek speed is now applied when parameter values are modified by - AHDSR or sidechain modulation. -* Studio API - Parameters with seek speed now snap to their target value when - the event stops. -* Studio API - Automatic parameters no longer update their user value. The - automatically calculated value can be retrieved using the finalvalue - parameter of Studio::EventInstance::getParameter. -* Studio API - Studio::System::getBank no longer supports getting a loaded bank from - the system by filename. -* Core API - System::getFileUsage will no longer count bytes read from user callbacks. -* Core API - Automatic SRS downmix from 5.1 to 2.0 has been removed. -* Core API - System::getSoundRAM API has been removed. -* Core API - FMOD_ADVANCEDSETTINGS::HRTFMinAngle, HRTFMaxAngle, HRTFFreq removed -* Core API - FMOD_CREATESOUNDEXINFO::channelmask removed -* Core API - Win - Support for paths using Windows ANSI Code Page (ACP) encoding - has been removed. Paths must be UTF-8 encoded. -* Core API - Win - The minimum supported version of Windows has been lifted - from Windows XP to Windows 7. Coupled with this change we have - removed the legacy DirectSound and WinMM output modes. -* Win / UWP - All binaries no longer have a suffix indicating the target architecture, - instead the files are separated by directories in the installer. - -14/03/19 1.10.12 - Studio API minor release (build 101101) ------------------------------------------------------------------------------------------- - -Features: -* Unity - Added option to specify Live Update port number in editor settings. -* Unity - Changed StudioEventEmitter private members to protected. - -Fixes: -* Studio API - Avoid stalling when unloading a bank which is waiting to load sample data - behind other banks. -* Core API - FMOD_OUTPUTTYPE_ASIO is now compatible with more devices without - requiring calls to System::setDSPBufferSize. -* Core API - Android - Fixed instances of audio stuttering that occurred on some - devices by dynamically adding latency to compensate. -* Core API - Fixed MP3 files with MPEG 2.5 encoding having distortion on some files. -* Unity - Fixed plugins not being found on Android. -* Unity - Fix for banks being read only when trying to copy new banks to - StreamingAssets. -* Unity - Fixed BatchMode builds not being able to find the MasterBank. -* Unity - Fixed BatchMode builds not building with banks. -* Unity - Changed console default thread affinity to not use the game thread. -* Unity - Fixed Strings bank not being found or copied (introduced in 1.10.10). - -01/02/19 1.10.11 - Studio API minor release (build 99976) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Add streamingscheduledelay member to FMOD_STUDIO_ADVANCEDSETTINGS. May be - used to reduce latency when scheduling events containing streaming - sounds. -* UE4 - Expose the FMODAudioComponent::bAutoDestroy property to the - PlayEventAttached Blueprint function. - -Fixes: -* Studio API - Fixed fire and forget event instances not releasing when another instance - of the same event is active. -* Studio API - Fixed a bug with multi-instruments when using looping and initial seek - which caused a gap of silence the same length as the initial seek when - scheduling the second instrument. -* Core API - Fixed MP3 files using Xing headers from having incorrect seek positions - when using Channel::setPosition. -* Core API - Fixed potential crash caused by third party applications sending - data to the FMOD profiler port. -* Core API - Fixed issue where bypassed faders and convolution reverb dsps could - silence their output. -* UE4 - Fixed 'An invalid object handle' errors from FMODAudioComponent - in sequencer after reloading banks. -* UE4 - Fixed playback not working correctly in Sequencer. -* UE4 - Fixed error from FindEventInstances if zero events found. -* UE4 - Fixed Programmer Sounds not auditioning in Editor. -* UE4 - Fixed events not playing in Sequencer. -* Unity - Fixed RuntimeManager being saved to scene after auditioning timeline. -* Unity - Fix AttachInstanceToGameObject positioning not being applied correctly. - -Notes: -* PS4 - Now built with SDK 6.008.051. -* iOS - Now built with iOS SDK 12.1 and tvOS SDK 12.1 (Xcode 10.1) which - necessitates lifting the min spec to 8.0 for iOS, no change for tvOS. -* Mac - Now built with macOS SDK 10.14 (Xcode 10.1) which necessitates - lifting the min spec to 10.7 and the removal of x86 support. -* Android - Added support for x86_64. - -03/12/18 1.10.10 - Studio API minor release (build 98815) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Added FMOD_STUDIO_EVENT_CALLBACK_REAL_TO_VIRTUAL and - FMOD_STUDIO_EVENT_CALLBACK_VIRTUAL_TO_REAL. -* Core API - Added DSP::GetCPUUsage to public API. -* Core API - Linux - Added support for FMOD_ALSA_DEVICE environment variable to - allow a user to specify an ALSA device. -* HTML5 - Add Web Assembly support (WASM) to HTML5 version of FMOD Core API - and Studio API. Memory usage halved, CPU speed improvements of about 30% -* Unity - Android - Added ARM64 support. -* Unity - Add support for working with multiple master banks and strings banks. - -Fixes: -* Studio API - Fixed multi-instrument playlist entries set to loop infinitely not - looping correctly. -* Studio API - Fixed pop that occurs at the start of a transition destination section - with a fade curves. -* Studio API - Fixed nested event instances stopping when their parent is paused. -* Studio API - HTML5 - Fix Studio::System::getSoundInfo not working -* Core API - System::setDSPBufferSize validates arguments for integer overflow. -* Core API - Fixed potential CPU usage spike due to dsp flush on releasing a - programmer sound during the destroy callback. -* Core API - Opening a playlist from a URL now validates that the playlist file is a - text file and falls back to codec probing if binary data is found. -* Core API - Linux - Fixed occasional distortion that can occur when using - PulseAudio. -* FSBank API - Fixed issue where a file change would not be detected when it has the - same modified time. -* UE4 - Fixed occlusion using the trace channel selected in editor. -* UE4 - Fixed plugin include directory paths. -* UE4 - Fixed crash caused by trying to access objects pending kill. -* UE4 - Fixed occlusion not working. -* UE4 - Fixed programmer sounds trying to access the FMODStudioModule outside - of the main thread, while also improving the performance of the - FMODAudioComponent. -* Unity - Fixed Asset Folder name updating after each keystroke. -* Unity - Fixed Timeline playables playing the previously selected event. -* Unity - Fixed "Bus not found" error caused when no banks loaded in editor. -* Unity - iOS - Fixed Events not resuming after returning focus. -* Unity - PS4 - Fixed logging libs being used for development builds. - -Notes: -* Studio API - Reduced the maximum number of parameter values which can be set in a - batch using Studio::EventInstance::setParameterValuesByIndices to 64. -* HTML5 - Now built with Emscripten v1.38.15 -* Switch - Now built with SDK 6.4.0. - -11/10/18 1.10.09 - Studio API minor release (build 97915) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Added globally sequential play mode to multi and scatterer instruments. -* Unity - All logging will now be displayed in the editor console. The logging - level can be changed using the dropdown in settings. - -Fixes: -* Studio API - Fixed missing bank warnings when playing a CommandReplay using - FMOD_STUDIO_COMMANDREPLAY_SKIP_BANK_LOAD mode. -* Studio API - UWP - Fixed Studio thread affinity not applying correctly. -* Studio API - Android / UWP - Fixed CommandReplay not working with AppX and - APK based paths. -* Core API - Fixed loading of encrypted FSBs. -* Core API - Fixed several panning issues when using FMOD_SPEAKERMODE_QUAD or - FMOD_SPEAKERMODE_SURROUND, does not affect Studio API usage. -* Core API - Fixed potential hang from internal fade point usage. -* Core API - Fixed ChannelControl::setMixLevelsInput not remembering the set - values when FMOD_3D is applied. -* Core API - Fixed potential cpu usage spike due to thread lock on releasing a - non-gpu convolution reverb dsp. -* Core API - Fixed support of FMOD_3D_INVERSETAPEREDROLLOFF. -* Core API - Fixed potential cpu usage spike due to thread lock on releasing a - transciever dsp. -* Core API - Win / UWP - Fixed Windows Sonic initialization failure when audio - device is configured for a sample rate other than 48KHz. -* Core API - Linux - Fixed ALSA default audio device selection. -* Core API - Android - Fixed crash if System::mixerSuspend is called before - System::init. -* Unity - iOS - Fixed playback not resuming after alarm / call interruptions. - -Notes: -* Updated Resonance Audio plugin to add support for near field effects, and added - FMOD_DSP_PARAMETER_OVERALLGAIN parameter to support virtualization. -* PS4 - Now built with SDK 6.008.001. -* XboxOne - Now built with July 2018 QFE2 XDK. - -10/08/18 1.10.08 - Studio API minor release (build 96768) ------------------------------------------------------------------------------------------- - -Features: -* UE4 - FMODAudioComponent is now blueprintable. - -Fixes: -* Studio API - Fixed potential crash when calling Studio::EventInstance::release from - the FMOD_STUDIO_EVENT_CALLBACK_STOPPED triggered by Bus::stopAllEvents. -* Studio API - Fixed a bug where changes to a parameter value made while an event was in - the FMOD_STUDIO_PLAYBACK_STARTING state would not update automation - controllers (introduced in 1.10.02). -* Studio API - Fixed Studio::CommandReplay::release not cleaning up resources - unless Studio::CommandReplay::stop was called earlier. -* Studio API - HTML5/WebGL - Fixed the following functions that didn't work. - - Studio::Bank::getID - - Studio::EventDescription::getID - - Studio::Bus::Bank::getID - - Studio::VCA::Bank::getID - - Studio::System::lookupID - - Studio::Bank::getStringInfo - - Studio::System::getBankList - - Studio::EventDescription::getInstanceList - - Studio::Bank::getEventList - - Studio::Bank::getBusList - - Studio::Bank::getVCAList -* Core API - Fixed audible artifacts when adjusting pitch near 1.0. Issue - can be seen from doppler calculations with small velocities. -* Core API - Improved stuttering issue when using Windows Sonic with high - DSP CPU usage. -* Core API - Fixed init errors on output devices that operate at 384KHz such - as the Aune X1s. -* Core API - Windows - Improved compatibility with some audio drivers by falling - back to stereo. -* Core API - HTML5/WebGL - Added support for unimplemented System::createDSP - with FMOD_DSP_DESCRIPTION. DSP callbacks are provided to allow - custom DSP support in Javascript. Added dsp_custom example to - example folder. -* Core API - HTML5/WebGL - Added support for unimplemented - ChannelControl::setCallback. -* Core API - HTML5/WebGL - Enabled support for 5.1 / Surround sound in a browser. - Only Firefox supports 5.1 so far, out of all browsers tested. -* UE4 - Fixed Activate and SetActive not working for FMODAudioComponents. -* UE4 - Fixed Simulating in editor producing no sound. -* UE4 - Fixed BlueprintStatics::LoadBank not working for banks containing spaces. -* UE4 - Fixed asset banks not displaying in editor or being loaded. -* Unity - Fixed warnings due to loading sample data on a metadata-only bank - before its asset bank is loaded. -* Unity - Fixed source project not updating if the old path is still valid. - -Notes: -* XboxOne - Now built with April 2018 QFE1 XDK. - -03/07/18 1.10.07 - Studio API minor release (build 95892) ------------------------------------------------------------------------------------------- - -Features: -* Unity - Added support for Timeline (from Unity 2017.1 onwards). - -Fixes: -* Studio API - The FMOD Gain effect is now taken into account when applying event - stealing behavior and virtualizing FMOD::Channels. -* Core API - Win/XboxOne - Fixed crash during System::recordStart if the - device was unplugged. -* Core API - Win - System::loadPlugin now correctly handles UTF-8 encoded - paths. Support for paths using ACP is deprecated and will be removed in - FMOD 1.11. -* UE4 - Fixed auditioning events not taking parameter values into account. -* UE4 - Fixed game crash when built using Event-Driven-Loader. - -06/06/18 1.10.06 - Studio API minor release (build 95384) ------------------------------------------------------------------------------------------- - -Features: -* Unity - Added SampleRate for Play-In-Editor settings. -* Unity - Added scripts for setting thread affinity on specific consoles. -* HTML5 - Updated core API and studio API examples to handle chrome mute until - mouse click or touch event happens, via System::mixerSuspend / - System::mixerResume. - -Fixes: -* Core API - Fixed potential crash if a stream naturally ends at the same time - as being released. -* Core API - Fixed incorrect parsing of large ID3 tags. -* Core API - Fixed FMOD_ERR_FILE_BAD error when trying to call setPosition to a point - past 2GB bytes in a file. -* Core API - Fixed crash if Windows Sonic output mode is used with the object - spatializer and the device is unplugged. -* Core API - Fixed stall in Sound::release for FSB files if another thread is - performing a createSound operation. -* Core API - Fixed potential crash when playing a netstream with tags. -* Core API - Fixed OGG netstreams not automatically stopping if the stream goes - offline. -* Core API - Fixed potential invalid memory access when a channel group is released - (introduced in 1.10.02). -* Core API - Channel group audibility now factors in attenuation due to 3D effects - when using ChannelControl::setMode(FMOD_3D). -* Core API - HTML5/WebGL - Fix System::setDriver(0) causing garbled audio when trying - to respond to a touch event and the audio is already active. -* Core API - HTML5/WebGL - Fix floating point accuracy issues making MIDI file sound - out of tune. -* Core API - UWP - Fixed default affinity mask incorrectly putting all threads - on core 0, now threads default to distributing among all cores. -* UE4 - Removed FMODAudioComponent ticking when deactivated. - -Notes: -* Core API - Windows Sonic output mode no longer requires a block size of 480. -* XboxOne - Now built with February 2018 XDK. -* Switch - Now built with SDK 5.3.0. - -26/04/18 1.10.05 - Studio API minor release (build 94661) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Add "Channel mask" tag to MIDI file support, to allow a user to - map used / unused channels in a midi file to the channel IDs in the - Sound::setMusicChannelVolume / Sound::getMusicChannelVolume functions -* Core API - Fixed System::recordStart memory leak if an error was returned. -* UE4 - File buffer size is now customizable in the settings menu. - -Fixes: -* Studio API - Fixed a rare bug where Studio::System::Update could hang if a streaming - sound encountered an error. -* Studio API - Fixed events getting stuck in a paused state if they were restarted while - waiting for sample data to load (introduced in 1.10.02). -* Studio API - Fixed an issue preventing network streams being used as programmer - sounds. -* Core API - Fixed rare hang during Sound::release when releasing a streaming sound in - the FMOD_OPENSTATE_ERROR state. -* Core API - Switch - Fixed Vorbis encoded banks producing silence when using - multimedia.nso (UE4 uses this). -* UE4 - Fixed FMODAudioComponent programmer sound creation flags. -* UE4 - Switch - Fixed performance by changing default thread affinity. -* Unity - Fixed FMODStudioSettings asset dirty flag being set unnecessarily. -* Unity - Fixed callbacks crashing when using IL2CPP or Mono on some platforms. -* Unity - Fixed editor system not being cleaned up on Play-In-Editor start. -* Unity - Android - Fixed load bank returning ERR_INVALID_HANDLE. - -Notes: -* Core API - It is now possible to initialize WinSonic output even if the user - has not enabled spatial audio on their default device. The platform - will provide a non-binaural downmix to the user desired speaker mode. -* PS4 - Now built with SDK 5.508.021. - -05/03/18 1.10.04 - Studio API minor release (build 93853) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Improved bank loading performance when there are already a large number - of loaded events. -* UE4 - Added the ability to enable Live Update while in editor for auditioning. - The Editor will need to be restarted for this setting to take effect. - -Fixes: -* Studio API - Fixed a bug where Studio::System::Update could fail with - FMOD_ERR_INVALID_HANDLE or FMOD_ERR_CHANNEL_STOLEN, which could lead to - memory or performance problems. Introduced in 1.10.03. -* Core API - XboxOne - Fixed XMA hang that can occur after actively using - many XMA voices for several days. -* Unity - Fixed MobileHigh/Low classifications for Apple Devices. Pre iPhone 5 - is classed as MobileLow. - -01/02/18 1.10.03 - Studio API minor release (build 93157) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Added ASIO support for drivers that use PCM32 as a container for - smaller sized data. -* Profiler - Draw different DSP connection types with different line styles. -* UE4 - Added option to specify memory pool size, per platform, in the project - FMOD Studio settings. -* UE4 - Now complying with IWYU mode, this should increase compilation speed. - -Fixes: -* Studio API - Fixed the DSP network sometimes getting into a bad state when a sidechain - is connected to the next effect in the chain. -* Studio API - Fixed event playback sometimes using stale parameter values. -* Studio API - Fixed events failing to stop if they contain empty Single Instruments. -* Core API - Fixed potential crash in device list changed callback when there - are no available devices remaining. -* Core API - Fix 3D 5.1 sound not panning correctly if ChannelControl::set3DLevel(0) is used. -* Core API - Fixed ID3v2.4 compatibility issue causing missing or corrupted tags. -* Core API - Android - Fixed incorrect floating point check on ARM64 devices - causing FMOD_ERR_NEEDSHARDWARE with some devices. -* Core API - XboxOne - Fixed race condition causing internal errors with XMA - sounds loaded as FMOD_CREATECOMPRESSEDSAMPLE. -* Core API - PS4 - Fixed internal assertion caused by setPosition on an AT9 - sound loaded as FMOD_CREATECOMPRESSEDSAMPLE. -* FSBank API - Fixed creation of C header so it goes next to the FSB instead - of the working directory of the application. -* Unity - Fixed pause working properly in Play In Editor mode. -* Unity - Removed excess memory allocation from APIs that return strings in C#. -* UE4 - Fixed velocity of FMODAudioComponents. - -Notes: -* Unity - Added support for Unity 2017.3. -* Android - Now built with NDK r16b. -* Android - Minimum Android version is now API level 14 due to NDK r16b - deprecating older versions. -* Switch - Now built with SDK 3.5.1. - -07/12/17 1.10.02 - Studio API minor release (build 92217) ------------------------------------------------------------------------------------------- - -Features: -* Core API - UWP - Added Windows Sonic support. -* Core API - UWP - Added support for setting thread affinity via - FMOD_UWP_SetThreadAffinity. - -Fixes: -* Studio API - Fixed Quietest stealing behavior so new events don't start if they are - quieter than all currently playing events. -* Studio API - Fixed buses that have reached their Max Instances limit incorrectly - preventing their input buses from applying their stealing behavior. -* Studio API - Fixed a crash caused by wav files with invalid loop points. -* Core API - Fixed recording devices still being marked as connected when - switching to FMOD_OUTPUTTYPE_NOSOUND. -* Core API - UWP - Made device reset / unplug behavior more robust against failure. -* Core API - XboxOne - Fixed WASAPI init error if WinSonic was attempted first. -* FSBank API - Fixed crash in 64bit version when encoding low sample rate mono - sounds as Vorbis with low quality. -* Unity - PlayOneshot and PlayOneshotAttached now log a warning when the - event is not found, rather than throwing an exception. - -Notes: -* Added Resonance Audio plugin version 1.0, this plugin represents the continuation - of the Google VR plugin under new branding. The Google VR plugin is now considered - deprecated in favour of Resonance Audio, consider migrating to the new plugin as - the GVR plugin will be removed in FMOD 1.11. -* XboxOne - Now built with June 2017 QFE 8 XDK. - -01/11/17 1.10.01 - Studio API minor release (build 91339) ------------------------------------------------------------------------------------------- - -Features: -* UE4 - Expose Studio::Bus::stopAllEvents to be useable through blueprints. -* Unity - Event length displayed in event browser for one shot events. - -Fixes: -* Studio API - Fixed modulation on plugin instruments using the parent event's lifetime - rather than the instrument's lifetime. -* Studio API - Fixed a live update issue where asset files would not reload after being - moved on disk. -* Studio API - Fixed a bug which caused sounds to pan incorrectly when using - FMOD_INIT_3D_RIGHTHANDED. -* Studio API - PS4 - Fixed excessive binary size caused by inclusion of debug symbols. -* Core API - Fixed potential crash when re-initializing System after failure. -* Core API - Fixed compatibility issues with Windows XP. -* Core API - Android - Fixed exported symbols to avoid issues with unwinder. -* Core API - Android - Automatic output mode selection will now choose AudioTrack - rather than OpenSL if Bluetooth is enabled to avoid stuttering. -* Core API - XboxOne - Ensure WinSonic internal threads are assigned to the - same core as the FMOD mixer. -* FSBank API - Fixed crash when encoding very long audio files. -* UE4 - Integration now handles application interruption by pausing and resuming - the mixer. -* UE4 - Fixed SetEvent not setting or using new event. -* UE4 - Fixed XboxOne thread affinity struct setup. -* UE4 - Removed engine version ifdef's. -* UE4 - Fixed integration attempting to set the initial value of - built-in parameters. -* Unity - Fixed compatibility for Unity 5.0 & 5.1. -* Unity - Added check to see if any banks have been loaded before trying to pause. -* Unity - Allow StringHelper to fast return if string is null. - -Notes: -* Updated Google VR plugin to version 0.6.1. -* Studio API - Studio::EventInstance::set3DAttributes and - Studio::System::setListenerAttributes will now return - FMOD_ERR_INVALID_PARAM if the forward or up vectors are zero. In - logging builds warnings will be logged if the forward and up vectors are - not orthonormal. -* Core API - The convolution reverb effect will not accept impulse response data if - the system is not using a power-of-two DSP buffer size. Windows Sonic - currently requires a DSP buffer size of 480 making it incompatible with - convolution reverb until this requirement is lifted. -* PS4 - Now built with SDK 5.008.001. -* Unity - Exposed editor script classes for in-game FMOD objects as public. -* Unity - Exposed StudioEventEmitter's EventInstance as public to allow - easier integration with custom plugins. - -19/09/17 1.10.00 - Studio API major release (build 90329) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Added FMOD_MAX_SYSTEMS constant, currently 8. -* Core API - Exposed FMOD_DSP_FADER_GAIN on FMOD_DSP_TYPE_FADER. -* Core API - Added FMOD_SPEAKERMODE_7POINT1POINT4 speaker mode which includes - four height speakers to be used with Windows Sonic output. -* Core API - Added FMOD_DSP_PAN_2D_HEIGHT_BLEND parameter to FMOD_DSP_TYPE_PAN - that allows mixing ground speaker signal into the height speakers - and vice versa. -* Core API - Windows & XboxOne - Added Windows Sonic output plugin to support - rendering multichannel (with height) speaker mode 7.1.4 as well - as dynamic objects via FMOD_DSP_TYPE_OBJECTPAN. -* Core API - PS Vita - Switched FMOD_PSVita_SetThreadAffinity to accept a - mask instead of a core number to allow floating threads. -* Core API - Added FMOD_OUTPUT_REQUESTRESET to FMOD_OUTPUT_STATE to allow output - plugins to request they be reset by the System. - -Fixes: -* Studio API - Sequential multi and scatterer instruments now track their current - playlist entry on a per-event-instance basis, rather than globally. -* UE4 - Removed all reference to Oculus, now that Oculus functions as - all other FMOD Studio plugins. -* UE4 - Removed all legacy UE4 version code, if you are not using UE4.16 - the plugin will not work without making changes to source code. -* UE4 - Overhauled details interaction in editor and improved usability. - Grouped all FMOD functionality together, added Parameters, and - removed unnecessary information from attenuation/occlusion. -* Unity - Removed garbage allocations from C# wrapper. - -Notes: -* Updated Google VR plugin to version 0.6.0. -* Studio API - Changed the behaviour of nested events to stop when idle even - when there are instruments on parameters. This makes nested - events match the behaviour of top level events. Events which - depend on the old behaviour need to be manually fixed up by (for - example) adding a sustain point to the nested events timeline. -* Core API - FMOD_DSP_TYPE_ENVELOPEFOLLOWER is now deprecated and will be - removed in a future release. -* Core API - Increment Plugin API version for Output plugins. Dynamic library - Output Plugins must be rebuilt. -* Android - Logging version will now produce proper crash stacks but due to - binary size increase the release version will continue to not. -* XboxOne - Removed "acp" and "feeder" from FMOD_XBOXONE_THREADAFFINITY. - Both threads were removed in previous versions and setting them - did nothing. -* UE4 - AudioComponents using occlusion from previous versions are NOT - compatible with this version. Occlusion and Attenuation now do - not rely on UE4 structs. - -11/09/17 1.09.08 - Studio API minor release (build 90162) ------------------------------------------------------------------------------------------- - -Fixes: -* Core API - Fixed extraneous logging. - -07/09/17 1.09.07 - Studio API minor release (build 90008) ------------------------------------------------------------------------------------------- - -Features: -* UE4 - Cache dsp used for occlusion lowpass effect & add support for - use of Multiband EQ (lowpass on band A only). -* UE4 - FMODAudioComponent now reuses event instances until the object - is no longer needed or Release() is called. -* UE4 - Added support for UWP. -* Unity - Added support for Unity v2017.1. -* Unity - Added a button in the FMOD menu for Refreshing Bank files. - -Fixes: -* Studio API - Fixed scatterer sounds being processed by FMOD::Geometry. -* Studio API - Fixed multi-stream events playing out of sync (introduced in 1.09.01). -* Core API - Fixed ChannelControl::setDelay being ignored if addDSP was - called immediately after it. -* Core API - Fixed potential crash if calling Channel::setPosition soon - after System::playSound with paused as true. -* Core API - Fixed click on ChannelControl::setPaused(false) caused by a non-zero - Channel::setPosition after System::playSound with paused as true. -* Core API - Fixed potential crash if calling System::getRecordPosition while - disconnecting an audio device. -* Core API - Fix FMOD_ACCURATETIME not looping mod/s3m/xm/it files properly, and midi - files not looping properly without the flag. -* Core API - Fixed crash when attempting to load invalid VST files. -* UE4 - Fix compile error by adding categories to AnimNotify vars. -* Unity - Switch - Fixed "unknown pointer encoding" error when an exception occurs. -* Unity - Fix plugin path for UWP builds. -* Unity - Fixed possible crash when using GoogleVR plugin. -* Unity - Fix EventEmitter SetParameter not working unless parameter had - an inital value set in editor. - -Notes: -* Studio API - Reduced memory usage for events with a small number of instances. -* Core API - FMOD_CREATESOUNDEXINFO::initialseekposition will now wrap if - the value given is longer than the Sound length. -* Core API - Added documentation to the top of fmod_codec_raw to be more instructional - for plugin writers. -* UE4 - Added support for UE4.17. -* Unity - Device specific errors will now cause only a single exception - to be thrown and the integration will assume no-sound mode. -* Switch - Now built with SDK 1.7.0. -* XboxOne - Now built with March 2017 QFE 3 XDK. - -06/07/17 1.09.06 - Studio API minor release (build 88495) ------------------------------------------------------------------------------------------- - -Features: -* Studio API - Improved performance when a large number of EventInstances have - been created but not started. -* Core API - HTML5 - Performance increased by 10%. - -Fixes: -* Studio API - Fixed a bug where an asynchronous looping multi instrument would - stop selecting new playlist entries after playing a nested event - which itself contains an asynchronous looping multi instrument. -* Studio API - Fixed a bug where a parameter could trigger parameter - instruments before having its value updated by modulators when - restarting an event instance. -* Studio API - Fixed incorrect automation interpolation on transition timelines with - lead-out regions. -* Core API - Fixed DSPs with sidechain inputs incorrectly going idle when - the main input is idle but the sidechain input is not. -* Core API - Fixed the compressor DSP not playing out its release correctly - when its inputs are idle. -* Core API - Remove main thread stall from System::playDSP (or playing a - generator DSP via Studio API). -* UE4 - Sequencer integration now supports previewing event playback in - an editor viewport by using the Sequencer transport controls. A - Sequencer section has been added to the documentation. -* UE4 - Added AreBanksLoaded funtion to FMODStudioModule. -* Unity - Events in EventBrowser window now in alpabetical order. -* Unity - Setting parameters on StudioEventEmitter no longer generates garbage. - -Notes: -* Core API - Added checking to System::mixerResume to ensure called from - the same thread as System::mixerSuspend. -* XboxOne - Now built with October 2016 QFE 3 XDK. - -08/06/17 1.09.05 - Studio API minor release (build 87666) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Switch - Added support for HTC sockets to allow communications - between FMOD tools and runtime via target manager. Enable using - FMOD_Switch_SetHTCSEnabled(TRUE). -* Core API - XboxOne - Added support for System::attachChannelGroupToPort - with FMOD_XBOXONE_PORT_TYPE_MUSIC. - -Fixes: -* Studio API - Fixed FMOD_ERR_INTERNAL returned when loading old bank files - containing transition timeline automation of instrument volumes. -* Studio API - Fixed bug where very short instruments would not play when cross fading. -* Studio API - Made changes to the logic in Studio::EventDescription::isOneShot so that - it consistently returns true for events which are guaranteed to - finish without intervention, and false for events which may play - indefinitely. -* Core API - Fixed ChannelControl::setMixLevelsInput not working and updated docs. -* Core API - Fixed Channel::setLoopCount not working with very small streams. -* Core API - Stricter error checking when loading IMA ADPCM wav files to - prevent a potential crash from malformed data. -* Core API - Fixed potential crash in ChannelGroup operations when a Channel - failed to play on it with FMOD_ERR_SUBSOUNDS. -* Core API - Fixed Convolution reverb panning a mono IR with a stereo input - incorrectly. -* Core API - Fixed race conditions when setting FMOD_DSP_SEND_RETURNID. -* Core API - Fixed a crash with some MOD/S3M/XM/IT files. Introduced in 1.09.00. -* Core API - System::setDSPBufferSize will round the requested buffer size up - to the closest multiple of 4 to prevent a crash when sending - metering data to studio. -* Core API - PS4 - Fixed GPU compute compatibility issue with SDK 4.508.001. - GPU compute is now re-enabled. -* Core API - Switch - Reduced thread priority to avoid conflict with Profiler. -* Core API - Windows - Fixed ASIO output mode failing to initialize if the - devices requires a buffer size of 2048 samples. -* Unity - Fixed bank directory path separators when developing across OSX & Win. -* Unity - Fixed simulated Android devices producing no sound. -* Unity - BankLoadException now display error message correctly. -* Unity - Fixed bank loading and unloading refcount accuracy. -* Unity - Fixed Mac editor attempting to load Linux plugins when building - for Linux platform. -* Unity - Improved detection of 3D Event Instances that haven't had their - position set yet. -* UE4 - Fixed integration working with UE4's IWYU non-monolithic header - system, for now the integration is still using the old PCH system. -* UE4 - Added new native AnimNotify class, old one didn't work on code projects. -* UE4 - Sequencer integration. FMOD events can be started and stopped - and event parameters can be controlled by adding custom tracks - to sequencer. -* UE4 - Fixed max vorbis codecs not being set correctly. -* UE4 - Fixed file readers being accessed from multiple threads. - -Notes: -* UE4 - Added support for UE4.16. - -Notes: -* Updated Google VR plugin to version 0.4.0, please note there is a known crash - when loading the plugin on Windows XP, Google are aware and investigating. - -10/04/17 1.09.04 - Studio API minor release (build 86084) ------------------------------------------------------------------------------------------- - -Fixes: -* Studio API - Fixed delayed playback on streaming sounds in events (introduced - in 1.09.03). -* Studio API - Fixed AHDSR release not working on single sounds shorter than - 100 milliseconds. -* Studio API - Fixed Studio::EventDescription::is3D returning true for events that only - have 2D panners. -* Studio API - Set programmer sounds to FMOD_LOOP_NORMAL internally if they were - not created that way. -* Studio API - Fixed regression introduced in 1.09.00 which allowed events to - play at the origin before 3d attributes were updated. -* Studio API - Fixed issue where reverb tail would cut off when all events on - a bus finished playing. -* Core API - Fixed FMOD_DSP_TRANSCEIVER making channels audible that weren't - supposed to be (introduced with glitch fix in 1.09.03). -* Core API - Fixed loop clicks on PCM sounds if using FMOD_DSP_RESAMPLER_CUBIC - or FMOD_DSP_RESAMPLER_SPLINE. -* Core API - Fixed FMOD_ADVANCEDSETTINGS::resamplerMethod being ignored. -* Core API - Fixed plugin unloading for multi-description libraries potentially - failing depending on how it's unloaded. -* Core API - Fixed stream glitch when going virtual then resuming. -* Core API - Fixed virtual voices losing their loop/2d/3d status, and not - staying virtual if ChannelControl::setMode was used. Introduced in 1.09.00. -* Core API - Fixed FMOD_UNIQUE not being accepted if ChannelControl::setMode or - Sound::setMode was used. (it could be successfully used via - createSound/createStream). -* Core API - Fixed rare crash in mixer, introduced 1.09.00. -* Core API - Switch - Fixed FMOD_SWITCH_THREADAFFINITY so cores can be ORd together - to form a mask. -* Core API - PS4 - GPU compute disabled due to an incompatibility with SDK 4.508.001. -* Core API - Windows/Mac - Re-enable SRS downmixer 80Hz high pass filter by - default. Add FMOD_INIT_DISABLE_SRS_HIGHPASSFILTER init flag to - disable it. -* FSBank API - Fixed PS Vita AT9 encoder not working with currently available - Sony library. -* FSBank API - Fixed full scale 32bit float wav files encoding incorrectly. - -Notes: -* Studio API - FMOD expects programmer sounds to be created with FMOD_LOOP_NORMAL. - This is now specified in the FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES - documentation. -* FSBank API - Building an FSB with PS Vita AT9 encoding now requires 64bit. -* PS4 - Now built with SDK 4.508.001. -* Switch - Now built with SDK 0.12.17. -* XboxOne - Now built with October 2016 QFE 2 XDK. - -20/03/17 1.09.03 - Studio API minor release (build 85359) ------------------------------------------------------------------------------------------- - -Features: -* Core API - Updated the /examples/dsp_custom example to include a lot more - functionality including parameters, and capture of wave data. -* Core API - Add fmod_reduced.js for reduced functionality, but also reduced size. -* Core API - Switch - Added support for setting thread affinity. -* Studio API - Reduced size of fmodstudio.js and .mem files. - -Fixes: -* Studio API - Fixed event doppler settings not being applied to sounds spawned - by scatterer. -* Studio API - Fixed bus and VCA handles not being set up properly in - Studio::Bank::getBusList and Studio::Bank::getVCAList. -* Studio API - Fixed crashes caused by stopping events that are routed into a - bus with instance limiting enabled when they are in the - FMOD_STUDIO_PLAYBACK_STARTING state. -* Studio API - Fixed tempo and marker event callbacks not being fired when the - timeline cursor is in the lead-in or lead-out region of a - transition timeline. -* Core API - Fixed glitches with Transceiver DSP after inputs go idle. -* Core API - Fix Channel::setPosition(pos, FMOD_TIMEUNIT_MODORDER) not - working when playing paused. -* Core API - Fixed short streams created as non-looping then switched to - looping via the Channel API not looping seamlessly. -* Core API - Fixed DSP plugin version >= 109 data parameters other than 3D - attributes not applying if FMOD_INIT_3D_RIGHTHANDED is used. -* Core API - Fixed rare crash in FMOD Panner DSP. Introduced in 1.09.00. -* Core API - Re-Fix MOD/S3M/XM/IT file crash with samples that have 0 length, - for 1.09 only. -* Core API - Fixed potential memory leak if System::init returned an error. -* Core API - Fix FMOD_ACCURATETIME not looping a mod file properly, and not - seeking correctly with FMOD_TIMEUNIT_MODORDER. -* Core API - HTML5 - Loading FSB sounds did not work properly. -* Core API - Windows - Fixed 5.1->stereo SRS downmix causing lack of bass. -* Core API - Windows - Fix FMOD_INIT_PREFER_DOLBY_DOWNMIX not working. -* FSBank API - Fix crash if FSBANK_INIT_GENERATEPROGRESSITEMS is not used. -* Unity - Removed error when plugin field is added but empty. -* UE4 - Removed error when plugin field is added but empty. - -Notes: -* UE4 - Added support for UE4.15. - -15/02/17 1.09.02 - Studio API minor release (build 84334) ----------------------------------------------------- - -Fixes: -* Unity - Remove ifdef from EnforceLibraryOrder as it isn't harmful for static lib platforms to call GetStats. -* UE4 - Occlusion can now use Multiband EQ instead of Lowpass filter. -* Core API - Fix crash when connecting to FMOD Profiler.exe and there is a circular connection -* Core API - Fix glitches with Transceiver DSP after inputs go idle. -* Core API - Fix Channel::setPosition(pos, FMOD_TIMEUNIT_MODORDER) not working when playing paused. - -09/02/17 1.09.01 - Studio API minor release (build 84153) ----------------------------------------------------- - -Features: -* Core API - Added FMOD_DSP_STATE_FUNCTIONS::getlistenerattributes to the - DSP plugin API to query the current listener attributes. -* Unity - Added support for Rigidbody2D in 3D attribute settings and - integration scripts. -* Unity - Added support for Object Enable/Disable on EventEmitter and - ParameterTrigger scripts. -* UE4 - Added GetLength function for blueprints that returns the event length - in milliseconds. -* UE4 - Improved in editor profiling stats. - -Fixes: -* Unity - Fixed compatibility with Unity 4.6 & 4.7 for OSX and IOS. -* Unity - Fixed "file not found" error when settings asset is corrupt -* Unity - Fixed set3DAttributes ambiguity. -* Unity - Fixed not being able to copy ReadOnly banks into StreamingAssets. -* Unity - Fixed event instance leak in Unity PlayOneshotAttached not releasing. -* Unity - Specified version to check for WiiU BuildTarget for early Unity5. -* UE4 - Fixed XboxOne delayload error now that UE4 handles it. -* UE4 - Android - Added ARM64 support. -* Studio API - AHDSR modulator curve shapes now work correctly. In previous versions - the envelope was interpolated linearly regardless of the shape displayed - in the UI. -* Studio API - Fixed looping single sounds in an async multi sound being cut-off when - the multi sound is un-triggered. -* Core API - Fixed ChannelControl::setReverbProperties not resetting reverb connection - to a new tail DSP when turning wet mix off and on. -* Core API - If the system is initialized in right-handed mode, FMOD will now swap - to left-handed when passing attributes into plugins. This only applies - to plugins rebuilt against this version, old plugins remain unswapped. -* Core API - Fix MOD/S3M/XM/IT file crash with samples that have 0 length. -* Core API - Fixed some potential crashes when running out of memory, these will - correctly return FMOD_ERR_MEMORY now. -* Core API - Win - Fixed WASAPI recording device enumeration taking a couple of seconds - after System::init before being correct. -* Core API - Win - Fixed potential error returned from System::update if device is unplugged. -* Core API - MIDI - Fixed Sound::set/getMusicChannelVolume referring to wrong track - indices rather than just a normal 0-15 track index. -* Core API - MIDI - Fixed Channel::setPosition causing loud drum bang noise after seek - -Notes: -* Studio API - When loading legacy banks with looping sounds nested in multi sounds, - the multi sound is set to cut-off all sounds when untriggered, including - non-looping sounds. This is a change in behaviour compared to earlier - versions where only looping sounds were cut-off. -* Core API - DSP plugin API version has been increased, for maximum compatibility - plugin writers should only rebuild against this version if they need - the getlistenerattributes feature. Old plugins are still supported. -* Switch - Now built with SDK 0.12.10 - -01/12/16 1.09.00 - Studio API major release (build 82164) ----------------------------------------------------- - -Important: -* Added support for the Nintendo Switch platform. - -Features: -* Studio API - Added support for multiple listener weights, with - Studio::System::setListenerWeight and - Studio::System::getListenerWeight. This allows listeners to be - faded in or out smoothly. -* Studio API - Profiling uses less CPU and memory. -* Studio API - Added FMOD_STUDIO_INIT_LOAD_FROM_UPDATE to drive all loading from - Studio::System::update rather than the bank and resource loading - threads. Mainly used in non-realtime situations. -* Studio API - Added ability to run replays at faster than real time speed using - FMOD_STUDIO_COMMANDREPLAY_FAST_FORWARD. -* Studio API - Added Studio::EventInstance::setReverbLevel and - Studio::EventInstance::getReverbLevel. -* Studio API - Support for automation of modulator properties. -* Core API - Improved memory use when loading sounds with names. -* Core API - Added new efficient multiband equalizer (FMOD_DSP_TYPE_MULTIBAND_EQ) - featuring 5 toggleable bands with variable rolloff low/high pass, shelf, - peaking, band-pass, all-pass and notch modes. -* Core API - Added logging function to the DSP plugin API. Use FMOD_DSP_LOG - helper macro from a DSP callback. -* Core API - Added FMOD_DSP_STATE_FUNCTIONS::getuserdata to the DSP plugin API. - Use FMOD_DSP_GETUSERDATA helper macro from a DSP callback. -* FSBank API - Added ability to pass NULL as the FSB file name for FSBank_Build causing - the FSB to be built in memory. Use FSBank_FetchFSBMemory to get access - to the data once the build has completed. - -Fixes: -* Studio API - Fixed incorrect playback volume for instruments and playlist - items whose volume property is set to a non-zero dB value. - -Notes: -* Core API - Incremented Plugin SDK version for DSP plugins. Dynamic library - plugins built with earlier versions will continue to load. -* Core API - Incremented FMOD_CODEC_WAVEFORMAT version. Codecs that provide - names must keep the name memory persistent for the lifetime - of the codec. -* Core API - Increment Plugin API version for Output plugins. Dynamic library - Output Plugins must be rebuilt. -* Core API - FMOD_DSP_TYPE_LOWPASS, FMOD_DSP_TYPE_LOWPASS_SIMPLE, - FMOD_DSP_TYPE_HIGHPASS, FMOD_DSP_TYPE_HIGHPASS_SIMPLE and - FMOD_DSP_TYPE_PARAMEQ are considered deprecated and will be removed - in the future. Use the new FMOD_DSP_TYPE_MULTIBAND_EQ instead which - has the performance of "simple" effects with full featured quality. -* Core API - Changed reverb wet mix to send from the fader DSP of a ChannelGroup. - Previously it sent from the head DSP. Now effects placed pre-fader - will apply to the signal sent to the reverb, while effects placed - post-fader will not. -* Core API - ChannelGroup reverb wet level is now scaled by the group's - effective audibility. -* Core API - ChannelGroup reverb no longer automatically disables reverb - on its child channels when the wet level is set to non-zero. -* Core API - Channel::setReverbProperties now allows setting the wet level - before the specified reverb instance has been created. -* Core API - ChannelControl::addDSP and ChannelControl::removeDSP manage - standard DSP connections (FMOD_DSPCONNECTION_TYPE_STANDARD) - to maintain the mixer hierarchy. - Other connection types (FMOD_DSPCONNECTION_TYPE_SIDECHAIN, - FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN, and now - FMOD_DSPCONNECTION_TYPE_SEND) are left undisturbed. -* Core API - FMOD_INIT_MIX_FROM_UPDATE will now directly execute the mixer from - System::update instead of triggering the mix to happen in another - thread. -* Studio API - Incremented bank version, requires runtime 1.09.00 or later. -* Studio API - Latest runtime supports loading old bank versions from 1.03.00. -* Studio API - Studio::Bus::setFaderLevel, Studio::Bus::getFaderLevel, - Studio::VCA::setFaderLevel and Studio::VCA::getFaderLevel is now - called Studio::Bus::setVolume, Studio::Bus::getVolume, - Studio::VCA::setVolume and Studio::VCA::getVolume. -* Studio API - Studio::EventInstance::getVolume, - Studio::EventInstance::getPitch, - Studio::EventInstance::getParameterValue, - Studio::EventInstance::getParameterValueByIndex, - Studio::Bus::getVolume, - Studio::VCA::getVolume now have an additional argument - to get the final value which includes automation and modulation. -* Studio API - The required alignment for Studio::System::loadBankMemory has - been added as the constant FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT. -* Studio API - Event instances now disable reverb on their internal channels, - for all global reverb instances. Previously only did so for - reverb instance 0. Use Studio::EventInstance::setReverbLevel - to control the reverb mix for the whole event instance. -* Studio API - Disconnected sidechain modulators are now inactive. Previous - behavior was to fall back to monitoring the event's master - track output. -* Core API - FMOD_DSP_RELEASE_CALLBACK is now called from the main thread -* Core API - Unimplemented ChannelControl::overridePanDSP function has been - removed, along with FMOD_CHANNELCONTROL_DSP_PANNER enum value. -* Core API - PS3 - Removed old opt-in FIOS support via FMOD_PS3_EXTRADRIVERDATA. - New recommended approach is to use FMOD_FILE_ASYNCREAD_CALLBACK - and set appropriate deadlines based on FMOD_ASYNCREADINFO::priority. -* Core API - XboxOne - Optimized XMA decoding performance and removed the ACP thread. -* Core API - PS4 - Improved AT9 decoding performance. -* FSBank API - Added support for source data as a memory pointer instead of file name. -* Documentation - Some FMOD_DSP_PAN_SURROUND enums changed to FMOD_DSP_PAN_2D for clarity. - -01/12/16 1.08.15 - Studio API minor release (build 82163) ----------------------------------------------------- - -Features: -* PS4 - Add support for System::getOutputHandle, to return sce - port handle. -Fixes: -* UE4 - Fix missing plugin error when building on Mac. -* UE4 - Fixed compatibility with 4.14. -* Unity - Fixed OSX working with unified library. -* Unity - Fixed WiiU copying banks error. -* Unity - Fixed XboxOne dll meta files missing platform target. -* Unity - Fixed duplicate dll copying build error on some platforms. -* Unity - Added null check to stop error being thrown when no event assigned. -* Unity - Fix in editor out of bounds exception in RuntimeManager. -* Core API - Allow DSP::setParameterData with null data and 0 length to free - convolution reverb impulse response data. -* Core API - Fixed short looping streams playing some of the start when - switched to non-looping via the Channel API. -* Core API - Fixed FMOD_CREATESOUNDEXINFO::pcmsetposcallback getting wrong sound - pointer passed to it with a stream. -* Studio API - Fixed incorrect parameter values being passed to nested events - when value "hold" is being used. -* Studio API - PS3 - Fix potential crash with the new Channel Mix effect. -* FSBank API - Fixed encoder bug with FADPCM causing occasional clipping at playback. - -Notes: -* FSBank API - FSBs / Banks may not be binary identical to previous release due to - FADPCM encoder bug fix, however full compatibility is maintained. - -20/10/16 1.08.14 - Studio API minor release (build 80900) ----------------------------------------------------- - -Fixes: -* UE4 - Fix for crash when using "Validate FMOD" menu item - -Notes: -* PS4 - Now built with SDK 4.00 -* XboxOne - Added better logging and documentation to describe an incorrectly - configured appxmanifest regarding microphone recording. - -04/10/16 1.08.13 - Studio API minor release (build 80479) ----------------------------------------------------- - -Fixes: -* Studio API - Fixed potential crash after the following sequence of actions: - load master bank, try to load master bank again and fail with - FMOD_ERR_EVENT_ALREADY_LOADED, unload master bank, reload - master bank. -* Core API - Fix circular DSP connection causing hang in certain situations. -* Unity 2 - Fix issues with multi-object editing of emitters. - -22/09/16 1.08.12 - Studio API minor release (build 80229) ----------------------------------------------------- - -Features: -* Unity 2 - Added ability to override minimum and maximum distance for - Event emitters. -* Unity 2 - Added support for multiple listeners. -* Studio API - Added support for auto pitch at minimum. -* Studio API - Added support for the global master bus being duplicated across - banks. - -Fixes: -* Studio API - Fix auto pitch cutting off at zero for parameter with minimum - value that is less than zero. -* Studio API - Fix events with a transciever effect not allowing the event to stop -* Android - Fixed crash when loading FSBs or Banks that contain a sound that - isn't mono, stereo, 5.1 or 7.1. -* Android - Fixed compatibility issue with some devices introduced in previous - release due to r12b update. Presents as a runtime linker error - when loading the FMOD library, failing to locate __aeabi_atexit. -* iOS - Fixed stuttering during fade out when device screen goes to sleep. -* Core API - Fix FMOD_DSP_TRANSCEIVER memory stomp. -* Core API - Fix channels playing at incorrect pitch. Introduced in 1.08.10. - -Notes: -* Studio API - Incremented bank version, requires runtime 1.08.00 or later. -* Studio API - Latest runtime supports loading old bank versions from 1.03.00. -* Core API - Improved validation for ChannelGroup, DSP and Sound handles, - detects invalid pointers and usage after release. - -08/09/16 1.08.11 - Studio API minor release (build 79819) ----------------------------------------------------- - -Features: -* Core API - PS3 - Added support for FMOD_DSP_CHANNELMIX. -* Unity 2 - Respect Game View mute button. - -Fixes: -* FSBank - Fix crash on 64-bit when encoding 16kHz or 24kHz sources using - Vorbis at low quality settings. -* Core API - Fix FMOD_SOUND_PCMSETPOS_CALLBACK getting invalid position value - when a sound opened with FMOD_OPENUSER loops. -* Core API - Android - Fixed crash on load with old devices when using armeabi. -* Unity 2 - Fix CREATESOUNDEXINFO not getting marshalled properly. - -Notes: -* Android - Now built with NDK r12b. -* Android - Minimum Android version is now API level 9 due to NDK r12b - deprecating older versions. - -22/08/16 1.08.10 - Studio API minor release (build 79252) ----------------------------------------------------- - -Features: -* Studio API - Improved performance of sidechain modulator. -* Core API - Improved ChannelControl::setPitch accuracy between DSP clock and - the underlying codec decoding speed. -* Unity 2 - Added option for play-in-editor to reflect the active build target - for loading banks. - -Fixes: -* Core API - Fixed error trying to create a Return DSP when the system - format is set to FMOD_SPEAKERMODE_RAW. -* Core API - Fixed FFT DSP crash if window size is smaller than DSP block size. -* Core API - Removed spurious warning messages when loading plugins on - some platforms. -* Core API - Android - Tweaked OpenSL auto detection, now requires device to - specify low latency and a block size <= 1024. -* Unity 2 - Fix bank import issues when the strings bank contains bank - names that differ in case from the files on disk. -* Unity 2 - Bank import now has a longer timeout after last detected file - activity before starting import. -* Unity 2 - Fixed settings screen allowing real channels to be set higher - then 256. -* Unity 2 - Fix up errors when StudioEventEmitter is created dynamically. -* Unity 2 - Small fixes for the settings screen when overriding the parent - platform settings. -* UE4 - Fix for crash when previewing animations using the FMOD event - notifier. - -Notes: -* Core API - System::getSpeakerModeChannels returns the system channel - count when passed FMOD_SPEAKERMODE_DEFAULT. Now works even - if the system format is set to FMOD_SPEAKERMODE_RAW. -* UE4 - Can be recompiled with 4.13 pre-release. -* Documentation - Added documentation for FMOD_DSP_PAN enums. - -01/08/16 1.08.09 - Studio API minor release (build 78489) ----------------------------------------------------- - -Features: -* Core API - PS4 - Add support for social screen audio to the ports API. -* Studio API - Added Studio::EventInstance:setListenerMask and - Studio::EventInstance::getListenerMask, that adds the ability - to specify which listeners apply to each event instance. -* Unity 2 - Warning is now produced when playing in editor if the position - of a 3D event is not set. -* UE4 - Added blueprint functions to set event properties. - -Fixes: -* Studio API - Fixed case of indeterminism when building banks that contain - events with automation curves. -* Core API - Fixed FMOD_OUTPUT_OBJECT3DINFO::gain so it only includes - distance attenuation not bus gain (which is now pre-applied - to FMOD_OUTPUT_OBJECT3DINFO::buffer. -* Core API - Fixed channelmix DSP volume not always being initialized. -* Core API - WiiU - Fixed potential crash during System::init if - System::setDriver or System::setOutput has been called. -* Core API - Fix hang on netstreams when the connection times out. -* Core API - Linux - Fix FPU control word of the calling thread being modified - when the FMOD dynamic library is loaded. -* Core API - Android - Fixed potential crash if FMOD isn't loaded with - System.loadLibrary, now a proper error will be issued. -* FSBank API - Fixed FADPCM not looping seamlessly for non-zero crossing loops. -* UE4 - Fixed plugin loading assuming a "lib" prefix for plugins on - Android, Mac, Linux and PS4. Now plugin loading will attempt - to load the name with and without adding a lib prefix. -* UE4 - Respect FApp::IsUnattended for message-box errors. -* UE4 - Fixed deprecation warnings about AttachTo usage. -* Unity 2 - Fix errors when bank source files are updated while Event Browser - preview is playing or paused. -* Unity 2 - Fix unnecessary copying of Bank files in OSX editor. - -Notes: -* Core API - Linux - Removed limit of 32 devices with ALSA output mode. -* Core API - Incremented API version of Output plugins. Dynamic library - plugins built with earlier versions of 1.08 will continue to load. - -14/07/16 1.08.08 - Studio API minor release (build 77846) ----------------------------------------------------- - -Features: -* UE4 - bMatchHardwareSampleRate will use the system default format - to avoid excessively matching the output rate on mobile devices. -* UE4 - Added bLockAllBuses which will force all buses to be created - at startup, rather than on demand. - -Fixes: -* Studio API - Fixed looping sounds in a multi sound playlist failing to stop - if the multi sound itself is non-looping. -* Studio API - Fixed rare crash calling the following functions while the - bank containing the event is unloading: - Studio::EventInstance::getDescription, - Studio::EventInstance::getParameter, - Studio::EventInstance::getParameterValue, - Studio::EventInstance::setParameterValue, - Studio::EventInstance::setParameterValueByIndex, - Studio::EventInstance::triggerCue, - Studio::ParameterInstance::getDescription and - Studio::ParameterInstance::setValue. -* Studio API - Fixed shared events becoming invalidated when one of the - banks containing them is unloaded. Could also manifest as - Studio::EventInstance::getDescription failing with - FMOD_ERR_INTERNAL. -* Studio API - Fixed crash that could occur when using - FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE and calling - Studio::System::update from multiple threads at the same time. -* Studio API - Increased scheduling lookahead time to ensure sample accurate - timeline scheduling even if there is an output stall. -* Studio API - Fixed crash that could occur when improperly calling - Studio::Bus::getChannelGroup without first calling - Studio::Bus::lockChannelGroup, if the bus was being destroyed - as the call was made. -* Studio API - Fixed rare crash calling the following functions while the - master bank containing the bus or VCA is unloading: - Studio::System::getBus, - Studio::System::getBusByID, - Studio::System::getVCA and - Studio::System::getVCAByID. -* Studio API - Fixed rare timing issue where Studio::System::getEvent would - succeed but Studio::EventDescription::createInstance would - fail with FMOD_ERR_INTERNAL, if called just as the bank - containing the event finished loading. -* Studio API - Fixed rare hang in Studio::System::getBankCount when called - while banks are currently unloading. -* Core API - Fixed rare glitch at the start of XMA playback causing non-seamless - looping. -* Core API - Fixed rare hang on shutdown when using multiple systems. -* Core API - Fix streams with an unknown file length remaining in the playing state - after an end of file is encountered. -* Core API - Windows - Enumeration of record devices will now reflect a change - of default device with WASAPI output. -* Core API - Linux - Enumeration will now correctly display GUIDs and speaker - modes for ALSA output. -* Core API - Linux - Fixed potential crash if both PulseAudio and ALSA are - missing / unavailable. -* Unity 2 - Fix plugin loading on Linux standalone builds. -* Unity 2 - Fix script compilation errors in standalone builds. -* Unity 2 - Fix Event Browser preview of events with built-in parameters. -* Unity 2 - Fix missing tvOS files. - -Notes: -* Core API - Significantly reduced memory consumption when using FMOD_DSP_FFT. -* PS4 - Now built with SDK 3.508.101 -* UE4 - Updated Oculus plugin to 1.0.4. - -27/06/16 1.08.07 - Studio API minor release (build 77241) ----------------------------------------------------- - -Features: -* FSBank API - Added support for Linux. -* Unity 2 - Live Update and Debug Overlay can be set to only be enabled in - standalone builds when the development build option is set. -* Unity 2 - Add MuteAllEvents and PauseAllEvents functions to the RuntimeManager. -* Unity 2 - Audio will now pause when the application pauses. -* UE4 - Added MixerSuspend and MixerResume blueprint functions. -* UE4 - Added IsBankLoaded blueprint function. - -Fixes: -* Studio API - Fixed Studio command buffer assert and crash that could occur - when using FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE in conjunction - with multiple threads. -* Core API - Fix crash when closing a system with a multi-plugin DLL still loaded. -* Core API - iOS / Android - Improved audio stability when mixer thread is overloaded. -* FSBank API - Fixed calling convention linker error on Windows in FSBankLib header. -* FSBank API - Fixed issue when passing duplicate source files with different encoding - settings would cause cache file conflicts. - -Notes: -* Unity 2 - Renamed "Level Start" and "Level End" triggers to "Object Start" and - "Object Destroy" to more accurately reflect when the triggers occur. - -17/06/16 1.08.06 - Studio API minor release (build 76937) ----------------------------------------------------- - -Features: -* Unity 2 - Added framework for registering native plugins on iOS and tvOS. -* Unity 2 - Added support for importing Studio Banks as TextAssets so they - can be added to Unity AssetBundles. - -Fixes: -* Core API - Fixed crash on shutdown, after creating multiple systems and - setting a system callback. -* Core API - PS4 - Fix issues with calling FMOD_PS4_GetPadVolume() immediately - after opening the controller audio port. - -15/06/16 1.08.05 - Studio API minor release (build 76824) ----------------------------------------------------- - -Features: -* Studio API - Added Studio::EventDescription::isSnapshot. -* Unity 2 - Added "Preload Sample Data" checkbox to Event Emitter to reduce - latency when emitters are triggered for the first time. -* Unity 2 - Added script example to show how to build an asynchronous loading - screen that includes loading FMOD Banks. - -Fixes: -* Studio API - Fixed Studio::EventDescription::isOneshot() incorrectly - returning true for snapshots. -* Core API - Fix FMOD_ADVANCEDSETTINGS::maxADPCMCodecs not being applied. -* Core API - Fix crash when using CreateSound from multiple threads - (including FMOD Async loading threads). -* Unity 2 - Fix issues when bank file in the Unity project Streaming Assets - folder have a different case to the banks in the Studio project. -* Unity 2 - Fix issues when editor log file cannot be opened because it's - read only. -* Unity 2 - If the "Load All" options are selected in the FMOD Settings - then the main thread will now block until it's complete. -* UE4 - Fix for OnEventStopped callback firing repeatedly if triggers - the instance to play again. - -Notes: -* Core API - All System, ChannelControl, ChannelGroup, Channel, and DSP API - functions check for NaN and INF floats and return - FMOD_ERR_INVALID_FLOAT if detected. -* Studio API - All API functions check for NaN and INF floats and return - FMOD_ERR_INVALID_FLOAT if detected. -* Studio API - All API functions with output parameters now clear those - values in the case of an error. Previously some values may - have been left uninitialized. - In the case of an error, int and float outputs are set to 0, - bool outputs are set to false, and pointers are set to NULL. - Structures are cleared to zeros, and string buffers are set - to the empty string. - -25/05/16 1.08.04 - Studio API minor release (build 76196) ----------------------------------------------------- - -Features: -* Studio API - Added runtime support for steal quietest polyphony. -* Core API - Improved performance when connecting sends and returns. -* UE4 - FFMODEventInstance can now be stored as a blueprint variable. -* UE4 - Added support for Occlusion. See the Occlusion section of the - documentation for more information. -* UE4 - Added support for Android deployment without having to modify - the engine. -* UE4 - Added InitialDriverOutputName to select output device by name - at startup, as well as new Blueprint functions GetOutputDrivers, - SetOutputDriverByName and SetOutputDriverByIndex. -* UE4 - Added VCASetFaderLevel Blueprint function. -* UE4 - "FMOD Validate" now checks for FMOD in the packaging setting, - and can add it if needed. - -Fixes: -* Core API - Fixed unnecessary DSP queue flush when using ports. -* Core API - Fixed ADPCM and FADPCM compressed FSBs not returning - FMOD_ERR_MEMORY_CANTPOINT when loaded as FMOD_OPENMEMORY_POINT - FMOD_CREATESAMPLE. -* Core API - Fix pops when channels with a mix matrix that are started virtual - become real. -* Core API - Fixed DSP panner reset not clearing ramps, causing ramping when - setting initial parameters. -* Core API - Fixed Sound::getSyncPointInfo returning first sync point info - when loading sounds from FSBs with multiple sync points. -* Studio API - Fixed memory stomp that can occur when sharing events between - multiple banks, if a streaming sound is in the middle of loading - when one of the shared banks is unloaded. -* Unity 2 - Fix error messages when previewing an event contained in the - Master Bank. -* Unity 2 - Fix WinPhone 8.1 DLL's conflicting with UWP builds. - -Notes: -* Studio API - Incremented bank version, requires runtime 1.08.00 or later. -* Studio API - Latest runtime supports loading old bank versions from 1.03.00. -* UE4 - Updated ovrfmod to version 1.0.3. -* UE4 - Tested with 4.12 pre-release, compiles successfully. -* PS Vita - Now built with SDK 3.570.011. - -05/05/16 1.08.03 - Studio API minor release (build 75571) ----------------------------------------------------- - -Features: -* Studio API - Added FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED and - FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED for when an event - plays sounds. Sound names will only be available if - banks have been re-exported in FMOD Studio 1.08.03 or later. - See the music_callbacks example for demonstration. -* Studio API - Added runtime support for the event cooldown property - set from FMOD Studio. Events that fail to start due to - cooldown time will invoke the - FMOD_STUDIO_EVENT_CALLBACK_START_FAILED callback. -* Core API - Improved performance of logging. -* Core API - PS4 - Improved performance when profiling is enabled. - -Fixes: -* Studio API - Events that fail to start due to bus polyphony now invoke the - FMOD_STUDIO_EVENT_CALLBACK_START_FAILED callback. -* Studio API - Fixed crash when calling Studio::System::unloadAll with - crossfading nested events. -* Studio API - Fixed unnecessary up/down mix applied to 2D events that have - sidechain modulators. -* Studio API - Fixed mixing issues and degraded performance if the system - speaker mode does not match the Studio project format. -* Studio API - Fixed case of stereo sounds panning hard right when downmixed - to a mono track and later upmixed again, introduced in 1.07.04. -* Core API - Fixed potential incorrect position when voice comes back from - being virtual, which can cause a hang on XboxOne. -* Core API - Improved handling for out of memory errors when mixing DSP - buffers. -* Core API - Fixed incorrect propagation of FMOD_DSP_STATE::channelmask - when mixing signals with differing masks. -* Core API - Fixed http streams (file from http, not shoutcast/icecast) - returning FMOD_ERR_FORMAT. Introduced 1.08.01 -* Core API - Fixed m3u playlist file format support. Was returning - FMOD_ERR_FORMAT. -* Core API - Android - Improved detection of low-latency devices allowing better - automatic output mode selection and less stuttering. -* Core API - Sound::getName will now return "" for sounds without names, - instead of "(null)". -* Core API - Object 3D Panning fix for silent objects in certain speaker modes -* Studio API - More robust live update handshaking when attempting to connect - with multiple copies of FMOD Studio at once. -* Unity 2 - Added missing Studio::EventDescription::getSoundSize function. - -Notes: -* Studio API - Incremented bank version, requires runtime 1.08.00 or later. -* Studio API - Latest runtime supports loading old bank versions from 1.03.00. -* Studio API - Sound names are now loaded into memory if they have been - exported in the bank file. The option is on by default, - which means by the runtime memory use might be slightly higher - when loading banks exported from 1.08.03 and later. If this is - a problem, make sure to disable the option to export sound names - in FMOD Studio when re-exporting banks. -* XboxOne - Now built with March 2016 QFE 1 XDK. -* PS4 - Now built with SDK 3.508.031. - -13/04/16 1.08.02 - Studio API minor release (build 74770) ----------------------------------------------------- - -Fixes: -* UE4 - Fixed audio component transform not being updated in 4.11. -* Studio API - Fixed unnecessary up/down mix applied to 2D events that have - sidechain modulators. -* Studio API - Studio::EventDescription::is3D now returns true if there is a - plug-in panner on the master track. - -Notes: -* UE4 - PS4 - Deployment uses standard unreal plugin system. -* UE4 - Now built against Unreal 4.11 - -07/04/16 1.08.01 - Studio API minor release (build 74554) ----------------------------------------------------- - -Features: -* Unity 2 - Added Universal Windows Application platform support. -* Unity 2 - Added Find and Replace tool. -* Core API - Improved performance when creating DSPs. -* UE4 - Added FMOD stats for CPU usage. - -Fixes: -* Studio API - Fixed errors being generated when the initial seek is past - the loop end point of a sound. -* Studio API - Fixed error loading sample data for banks - loaded by Studio::System::loadBankMemory with - FMOD_STUDIO_LOAD_BANK_DECOMPRESS_SAMPLES flag. -* Studio API - Fixed rare Studio update error FMOD_ERR_NOTREADY when stopping - modules with streaming sounds. -* Studio API - Fixed unnecessary up/down mix on sidechain effects in game. -* Studio API - Eliminated API stalls due to holding a lock when creating - event instances on the Studio Update thread. -* Studio API - Fixed error when loading an API capture that contains - Studio::System::flushSampleLoading commands. -* Studio API - PS4 - Fixed incorrect linking options on fmodstudio.prx that - caused package creation to fail. -* Core API - Fixed rare hang when rapidly creating and releasing Return DSPs. -* Core API - Fixed hang or crash when loading a .it/s3m/mod/mid file as a - decompressed sound. -* Core API - Fixed some shoutcast streams playing back garbled. -* Core API - Fixed Sound::readData returning 0 for bytes read, instead of a - valid number if FMOD_ERR_FILE_EOF was returned. - Introduced in 1.07.08. -* Core API - PS4 - Fix AT9 playback when a sound created as looping is - played with the channel loop-count explicitly set to zero - before starting. -* Core API - Win - Fixed ASIO device enumeration not supplying a GUID. -* Core API - Win - Fixed ASIO device enumeration having a blank name if the - device is not connected. -* UE4 - Added lock around file accesses to avoid Unreal pak file thread - safety issue. -* UE4 - Fixed logging callback not being initialized. -* UE4 - Avoid asset table system from mixing while normal mixer is in - operation, to work around an AT9 mixer issue. -* UE4 - Fixed always linking against ovrfmod even if it isn't present. -* Unity 2 - Rewrote Timeline Callback and Programmer Sound Callback examples - to work on iOS. -* Unity 2 - Fix marshalling of FMOD.CREATESOUNDEXINFO structure on iOS. -* Unity 2 - Fix DLL not found errors in standalone Windows builds. - -Notes: -* Studio API - Incremented bank version, requires runtime 1.08.00 or later. -* Studio API - Latest runtime supports loading old bank versions from 1.03.00. -* Studio API - Studio::EventInstance::setPitch() now returns an error if a NaN - is passed in. -* Studio API - Errors that occur during the Studio update thread will no longer - stop the thread. -* Studio API - Studio will set the master channel group format to the - project's format to avoid an extra upmix. - -04/03/16 1.08.00 - Studio API major release (build 73609) ----------------------------------------------------- - -Features: -* Studio API - Sample data loading has been optimised. Load time, file access, - and memory use have all been substantially improved. A new entry - has been added to the per platform thread affinity settings. -* Studio API - FMOD_STUDIO_PARAMETER_DESCRIPTION now has the parameter index and - default value. -* Studio API - Added Studio::System::flushSampleLoading. -* Studio API - Support for left edge trimming of timelocked sounds. -* Studio API - Support for Start Offset as a percentage of sound length. -* Studio API - Added idle resource pool to keep recently used sounds in memory in - case they might be re-used. It can be controlled by the - idleResourcePoolSize field in FMOD_STUDIO_ADVANCEDSETTINGS. See - the Studio Banks Programmer Topic for more information. -* Core API - Increased performance of System::createSound and System::createStream, - since they no longer block against System::update. -* Core API - Added filebuffersize to FMOD_CREATESOUNDEXINFO for customizable - file buffering. -* Core API - Added System::getFileUsage to query file loading information. -* Core API - Custom DSP effects now always receive a buffer length that is equal - to the mix block size. The input and output buffers will always be - 16-byte aligned. Custom DSP sounds still have be able to generate - signal less than a mix block. -* Core API - Added getclock callback to FMOD_DSP_STATE_SYSTEMCALLBACKS to get the - clock, offset and length for a custom DSP. -* Core API - Added support for multiple plugins within one plugin file. See - FMOD_PLUGINLIST, System::getNumNestedPlugins, System::getNestedPlugin, - and the DSP Plugin API Programmer Topic for more information. -* Core API - Added support for object based panning with two backend providers, Dolby - Atmos (FMOD_OUTPUTTYPE_ATMOS) and Playstation VR (FMOD_OUTPUTTYPE_AUDIO3D). -* Core API - Added 3D object panner DSP (FMOD_DSP_TYPE_OBJECTPAN) to be used - with new object pan enabled outputs. -* Core API - Extended output mode plugin API (FMOD_OUTPUT_DESCRIPTION) to allow custom - object panner backends. -* Core API - Win - Reduced WASAPI latency by 40ms and improved mixer thread regularity. -* FSBank - AT9 Band Extension is now enabled by default for supported bit-rates. -* FSBank - Added Mac versions of the FSBank tool and FSBankLib API. Included - in the Mac and iOS API packages. -* Profiler - Added Mac version of the Profiler tool. Included in the Mac and - iOS API packages. -* Unity 2 - Added ability to create new studio events from within the Unity editor. -* Unity 2 - Improved event selection UI on emitter component and when using EventRef attribute. -* Unity 2 - Added support for default parameter values in emitter component. - -Notes: -* Studio API - Incremented bank version, requires runtime 1.08.00 or later. -* Studio API - Latest runtime supports loading old bank versions from 1.03.00. -* Studio API - New example 'object_pan' that demonstrates object based panning. -* Studio API - Studio::EventDescription::getSampleLoadingState and - Bank::getSampleLoadingState now return FMOD_STUDIO_LOADING_STATE_ERROR - if sample data failed to load (e.g. due to a corrupt file). -* Studio API - Removed Studio::CueInstance, Studio::EventInstance::getCue, - Studio::EventInstance::getCueCount and - Studio::EventInstance::getCueByIndex. Instead use new functions - Studio::EventDescription::hasCue and Studio::EventInstance::triggerCue. -* Studio API - Deprecated Studio::EventInstance::getParameter and - Studio::EventInstance::getParameterByIndex. Instead use - Studio::EventInstance::getParameterValue, - Studio::EventInstance::setParameterValue, - Studio::EventInstance::getParameterValueByIndex, and - Studio::EventInstance::setParameterValueByIndex. -* Studio API - Increased stack size for Studio threads to 64K. -* Studio API - Played events will stay in the FMOD_STUDIO_PLAYBACK_STARTING state until - their sample data has loaded. This avoids selected sounds in the event - playing late if the sample data has not been preloaded. -* Core API - System::getChannelsPlaying now returns the number of real and - total channels playing. System::getChannelsReal has been - removed. -* FSBank - AT9 compression now requires AT9 library 1.7.1 (DLL version 2.8.0.5) - or later. Compression in 32bit versions of FSBank is no longer supported - in line with Sony's removal of 32bit compression libraries. - -03/03/16 1.07.08 - Studio API patch release (build 73591) ----------------------------------------------------- - -Features: -* Unity 2 - Importing banks has been speed up dramatically. - -Fixes: -* Studio API - Fixed Studio::EventInstance::setProperty not restoring the default - setting for FMOD_STUDIO_EVENT_PROPERTY_MINIMUM_DISTANCE and - FMOD_STUDIO_EVENT_PROPERTY_MAXIMUM_DISTANCE when a value of -1 - is specified. -* Studio API - Fixed case of mono sounds panning hard left when both mono and - stereo 2D sounds are placed on the same event track, introduced - in 1.07.04. -* Core API - Fixed some net streams returning 'invalid parameter' introduced - in 1.07.06. -* Core API - Fixed potential crash if calling Sound::release soon after - System::createSound with FMOD_NONBLOCKING and async IO callbacks. -* Core API - Winstore/UWP - Fixed small memory leak on system shutdown. -* Core API - Winstore/UWP - Fixed occasional crash when closing a socket with a - pending asynchronous read. -* Core API - Xbox One - Fixed potential hang waiting on XMA Sound::release if - using async IO callbacks and a cancel was issued. -* Core API - Android - Relaxed overly strict validation of M4A files introduced - in 1.07.07. -* Core API - Android - Fixed potential JNI_OnLoad failure introduced in 1.07.07. -* Core API - Fix crash in convolution reverb if wet level is set to -80db - and it has no inputs. -* Core API - Fix seeking on stereo FADPCM compressed streams and samples. -* Unity 2 - Errors opening log output file are no longer fatal. - -Notes: -* Core API - Ensure FMOD_FILE_ASYNCDONE is called with FMOD_ERR_FILE_DISKEJECTED - if implementing FMOD_FILE_ASYNCCANCEL_CALLBACK to notify FMOD that - you will not be servicing the FMOD_ASYNCREADINFO::buffer. - -16/02/16 1.07.07 - Studio API patch release (build 72710) ----------------------------------------------------- - -Features: -* Core API - Win - Improved ASIO output to accept requested sample rate and - buffer size instead of using defaults. -* UE4 - FMOD Memory allocation now occurs via standard UE4 allocators. -* Unity 2 - Added AppleTV support. - -Fixes: -* Core API - Fixed System::loadPlugin not unloading the library file in the - case of an error. -* Core API - Fixed automatic format detection failing for some types when - the file size is less than 1KB. -* Core API - Fixed FMOD_CREATESOUNDEXINFO::suggestedsoundtype being ignored for - FMOD_OPENMEMORY and FMOD_OPENMEMORY_POINT. -* Core API - WinStore/UWP - Fixed occasional deadlock when removing the current - output device. -* Core API - Win - Fixed potential crash if switching output mode to ASIO after - System::init. -* Core API - Android - Fixed crash if MediaCodec processes a file that isn't an - M4A file. -* Core API - Android - Fixed Marshmallow devices being unable to load M4A files. -* Unity 2 - Remove broken inspector code for ParamRef. -* Unity 2 - Fix PS Vita. -* Unity 2 - Small event reference UI rendering fixes. -* Unity 2 - Fix unnecessary copying of files that haven't been modified. -* Unity 2 - Fix issues with copying of files that have only been partially - written by the Studio tool. -* Unity 2 - Work around IL2CPP issues introduced in Unity 5.3.2p2. -* Legacy Unity - Work around IL2CPP issues introduced in Unity 5.3.2p2. -* Unity 2 - Xbox One - Fix runtime errors when using Mono AOT compilation. - -Notes: -* Unity 2 - Unity 5.3.2p1 is not supported for iOS. -* Legacy Unity - Unity 5.3.2p1 is not supported for iOS. - -27/01/16 1.07.06 - Studio API patch release (build 71893) ----------------------------------------------------- - -Features: -* Studio API - Improved CPU and IO performance when capturing API commands - via Studio profiler. - -* Core API - Android - Lollipop devices may now select 7.1 with AudioTrack - output mode. Older devices will gracefully fall back - to stereo. -* Unity 2 - Emitter gizmos are now pickable in the scene view. -* Unity 2 - Event Browser layout changed to work in narrow windows. Note the - Event Browser windows will need to be closed and re-opened for new - minimum bounds to take effect. -* Unity 2 - Added bitcode support for iOS. -* UE4 - Added support for programmer sounds. See the new UE4 Programmer - Sound page for more information. - -Fixes: -* Core API - Fixed bug if streams start virtual, they may not come back as audible. - Introduced in 1.07.00 -* Core API - Update URL in Netstream example. -* Core API - Fixed net streams not working when server delivers shoutcast - with chunked HTTP data. -* Core API - Fixed memory leak when a network connection fails. -* Core API - Android - Devices that don't support 5.1 output will now - gracefully fallback to stereo. -* Core API - WinStore / UWP - Fixed WASAPI output so it return the correct 'no - drivers' error when none are detected. -* Core API - WinStore / UWP - Fixed WASAPI output swapped sides and rears in 7.1. -* Core API - Fix C# wrapper of ChannelGroup.addGroup missing arguments. -* Core API - Fix crash when using chorus effect on a channel group with - channel count greater than the system channel count. -* Core API - PS4 - Fix validation of thread affinity settings. -* Core API - iOS - Fixed compatibility issue introduced in 1.07.02 for old - devices running iOS 6.X. -* Unity 2 - Fixed UI when EventRef attribute is used on an array of strings. -* Unity 2 - Work around DLL loading issues on some standalone Windows builds. -* Unity 2 - Fix DLL loading issues for play-in-editor when platform is iOS. -* Unity 2 - Fix RuntimeManager being recreated during shutdown and leaking FMOD - native instances. -* Unity 2 - Fix issue when using RuntimeManager.LowLevelSystem and - RuntimeManager.StudioSystem before RuntimeManager has initialized. -* Unity 2 - Increase channels for Play-In-Editor. -* Unity 2 - Fix play-in-editor not setting the speaker mode correctly. -* Unity 2 - PS4 - Fix script compile errors. - -Notes: -* Xbox One - Now built with November 2015 XDK. -* iOS - Now built with iOS SDK 9.2 and tvOS SDK 9.1 (Xcode 7.2). -* UE4 - Updated Oculus plugin for 1.0.1. - -07/01/15 1.07.05 - Studio API patch release (build 71238) ----------------------------------------------------- - -Features: -* Unity 2 - When using the file browser in the settings editor to set - the Studio source paths the result will be set relative - to the Unity project if it is a sub-directory. -* Unity 2 - Added Parameter Trigger component. - -Fixes: -* Core API - UWP - Fixed FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED not firing - when the default output device changes. -* Core API - PS3 - Fix rare crash with reverb. -* Core API - PS3 - Fix static and audio dropouts if speaker mode is forced - to stereo (normally it is 7.1). - -Notes: -* iOS - Reduced binary size. -* Android - Added calling convention to public API to allow usage with - hard float ABI. - -11/12/15 1.07.04 - Studio API patch release (build 70728) ----------------------------------------------------- - -Features: -* Core API - Better support for sounds with channel/speaker masks, ie a 1 - channel sound specified as LFE, or a quad sound specified as LRCS - instead of 2 front 2 back for example. -* Unity 2 - Added optional debug overlay. -* Unity 2 - Added migration steps for data in custom components. -* Unity 2 - Added support for Unity 4.6. -* Unity 2 - Added support for Android split binary. -* Unity Legacy - Added support for Android split binary. - -Fixes: -* Studio API - Fixed blocking bank loads stalling for longer than necessary when - other threads are constantly issuing new Studio commands. -* Core API - Fixed corrupted playback for big endian PCM FSBs. -* Core API - Fixed crash when switching channel count of generator DSPs - during playback. -* Core API - PS3 - Fix crash reallocating buffers on flange effect. -* Core API - Xbox One - Fixed rare stall when playing XMA streams and - compressed samples at the same time. -* Core API - Fix crash if the Master Channel Group head DSP was set inactive right - after initialization. -* Core API - Fix Sound::getOpenState() moving from FMOD_OPENSTATE_PLAYING too early - on some streaming sounds. -* Core API - Fix Sound::Release() freeing memory still in use by the mixer. -* Core API - Fix convolution reverb not correctly producing tails on long impulse - responses when it has no input. -* Unity 2 - Fixed issue with plugins not being loaded correctly. -* Unity 2 - Work around DLL loading issues on some standalone Windows builds. -* Unity 2 - Fix leaking system objects leading to ERR_MEMORY. -* Unity 2 - Updated signature of DSP::setWetDryMix, DSP::getWetDryMix. - -Notes: -* Core API - FMOD_DSP_STATE::channelmask is now passed down through the dsp chain - so plugin developers can see the original signal channel format even - if a sound was upmixed. - -17/11/15 1.07.03 - Studio API patch release (build 69975) ----------------------------------------------------- - -Features: -* Core API - When using System::recordStart the provided FMOD::Sound can now be - any channel count, up/down mixing will be performed as necessary. -* Core API - Improved performance of convolution reverb effect when wet is 0 - or input goes idle. -* Core API - PS4 - Added FMOD_THREAD_CORE6 to allow access to the newly unlocked - 7th core. -* Core API - PS4 - Added FMOD_PS4_GetPadVolume() to retrieve the output volume - of the pad speaker as set by the user in the system software. -* Core API - Added FMOD_DSP_TYPE_TRANSCEIVER. Send signals from multiple sources - to a single 'channel' (out of 32 global 'channels') and receieve from - that or any channel from multiple receivers. Great for receiving - and broadcasting a submix from multiple 3d locations (amongst other - uses). -* Unity - FMOD_StudioSystem.GetEvent() can now be used with snapshot paths. -* Unity - Ignore OSX resource fork files when importing from FAT32 file systems. -* UE4 - Deployment will also copy any plugins listed in a file plugins.txt - in the FMODStudio/Binaries/Platform directory. See the Using - Plugins page for more information. -* UE4 - Console platforms set up thread affinity in FMODPlatformSystemSetup. - -Fixes: -* Studio API - Fixed snapshot applied to VCA level not working in game. -* Studio API - Fixed profiler session timing when recording a game with a non-standard - sample rate. -* Studio API - PS4 - Fix linker error in examples. -* Core API - Fixed buffer overrun when convolution reverb is set up with - mismatched input and output channels. -* Core API - Fix crash with invalid .mp3 files. -* Core API - Fix Sound::getName() not returning a valid UTF8 string when - loading a sound with ID3 tags specifying the title as a latin1 - string. -* Core API - Fix pops in flange and chorus effects. -* Core API - Fix crash when using flange effect on a channel group with - channel count greater than the system channel count. -* Core API - FLAC - Fix crash when seeking in certain flac files. -* Core API - Android - Automatic selection of OpenSL output mode will now - be stricter to reduce stuttering on devices that - incorrectly report they are low latency. -* Core API - PS4 - Fix signal not being routed back to the main output when - detaching a channel group from a port. -* Core API - Fix FMOD_ADVANCEDSETTINGS::reverb3Dinstance not working. - -Notes: -* Android - Now built with NDK r10e. -* PS Vita - Now built with SDK 3.550. -* Core API - FMOD_DSP_CHANNELGAIN_OUTPUT_DEFAULT ... FMOD_DSP_CHANNELGAIN_OUTPUT_ALLLFE - (from the FMOD_DSP_CHANNELMIX_OUTPUT enum) have been renamed to - FMOD_DSP_CHANNELMIX_OUTPUT_DEFAULT ... FMOD_DSP_CHANNELMIX_OUTPUT_ALLLFE - (ie CHANNELGAIN renamed to CHANNELMIX) to fit with the correct naming - convention. Rename required if using this effect. - -02/11/15 1.07.02 - Studio API patch release (build 69450) ----------------------------------------------------- - -Important: -* AppleTV platform support is now part of the iOS package. - -Features: -* Core API - Improved performance of System::getChannelsPlaying. -* Core API - Added System::getChannelsReal to get the number of - non-virtual playing channels. - -Fixes: -* Studio API - Fixed internal error during playback caused by inaccuracies - in quantization calculation when timeline position is greater - than 5 minutes. -* Core API - Fix mixer not running if mixer sample rate is lower than output - sample rate. -* Core API - Fix Sound::getOpenState returning FMOD_OPENSTATE_READY when a - sounded ended, when it should have returned - FMOD_OPENSTATE_PLAYING for a bit longer, which meant - Sound::release could stall. -* Core API - iOS - Fixed output being mono on some devices, minimum detected - hardware channel count is now 2 to ensure stereo. - -Notes: -* iOS - Now built with iOS SDK 9.1 and tvOS SDK 9.0 (Xcode 7.1). -* Mac - Now built with SDK 10.11 (Xcode 7.1). - -27/10/15 1.07.01 - Studio API patch release (build 69235) ----------------------------------------------------- - -Features: -* Studio API - Added support for multiple parameter conditions. -* Studio API - Added Studio::EventDescription::getSoundSize. -* UE4 - Added validation help menu option to diagnose common issues. - -Fixes: -* Studio API - Fixed auto-pitch, cutoff and looping not live updating properly. -* Core API - Fixed potential crash on ARM platforms when seeking Vorbis - compressed FSBs. -* Core API - Fix ChannelGroup::setReverbProperties from returning - FMOD_ERR_REVERB_CHANNELGROUP if a child channel had a reverb - connection previously. -* Core API - Fixed FMOD_CREATESOUNDEXINFO::suggestedsoundtype being ignored if - a custom codec of higher priority has been registered. -* Core API - Fixed System::getRecordNumDrivers incorrectly reporting 0 if - called within 1 second of application start on some platforms. -* Core API - Fixed stereo AIFF files producing static. -* Core API - Xbox One - Fixed rare crash for stereo XMA streams. -* Core API - iOS - Fixed MP3 decoding being performed by FMOD cross-platform - decoder instead of native AudioQueue. -* Core API - Fix mp3 crash seeking, introduced in 1.07.00 if using certain types - of MP3 file in FMOD_CREATECOMPRESSEDSAMPLE mode. -* Unity - Change Android to read banks straight from APK -* Unity - Will automatically append a "64" suffix to plugins if required. -* Unity - Fix OSX bundles having incorrect settings -* Unity - Fix compatibility with Unity 5.2.2 -* Unity - Fix crashes when creating a standalone OSX build. -* UE4 - Fix for audio component direction not being set into FMOD. -* UE4 - Fixed IOS deployment error "libfmod does not exist" - -Notes: -* Studio API - The FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_CREATED and - FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_DESTROYED callbacks now - fire from nested events, for both plugin effects and plugin - sounds. -* Studio API - For the FMOD_STUDIO_PLUGIN_INSTANCE_PROPERTIES callback - argument, the 'name' field will contain just the user defined - name of the plugin sound if one has been set. Otherwise it - will be empty. You can use the 'dsp' field to determine the - plugin type. -* Studio API - Programmer sounds with no name will have an empty string for - FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES.name, previously it - was an arbitrary hex sequence. -* Core API - Plugin developers - FMOD_DSP_SYSTEM_GETSPEAKERMODE added to - FMOD_DSP_STATE_SYSTEMCALLBACKS. Plugin SDK version updated to 1.07 meaning - plugins created from this point onwards wont work with older versions of - FMOD. -* Android - Replaced all Eclipse examples with Visual Studio using NVIDIA - Nsight Tegra integration. -* PS4 - Now built with SDK 3.008.041 -* PS3 - Now built with SDK 475.001. - -05/10/15 1.07.00 - Studio API minor release (build 68517) ----------------------------------------------------- - -Important: -* Studio is now a 64-bit application. All plugin libraries must be built for - 64-bit architecture to be compatible with the 64-bit version of the tool. -* Added Universal Windows Platform (UWP) support. -* Added AppleTV platform support. Contact support@fmod.org for beta access. - -Features: -* Studio API - Support for bus polyphony. -* Studio API - Added FMOD_STUDIO_EVENT_PROPERTY_MINIMUM_DISTANCE and - FMOD_STUDIO_EVENT_PROPERTY_MAXIMUM_DISTANCE to override the - minimum and maximum panner distance for an instance. -* Studio API - Added FMOD_STUDIO_INIT_DEFERRED_CALLBACKS to defer event - callbacks to the main thread. See - Studio::EventInstance::setCallback for more information. -* Core API - Added FMOD_DSP_TYPE_CHANNELMIX effect. Allows user to control - gain levels for up to 32 input channel signals, and pipe the - output to a range of speaker formats i.e. repeating mono, - stereo, quad, 5.1, 7.1 or only LFE out. -* Core API - Improved CPU performance when using metering or profiling. -* Core API - Added support for loading multi-channel FSBs with the - FMOD_CREATECOMPRESSEDSAMPLE flag. -* Core API - Improved record driver enumeration, list is now persistent, - removed devices will remain to ensure record IDs stay valid. - See record_enumeration example for new functionality. -* Core API - Added full record device add/removal detection for Windows, - Mac, Xbox 360, Xbox One, PS3 and PS4. -* Core API - Reduced recording latency on Windows, XboxOne and PS4. -* Core API - Mac - Added support for recording from multiple microphones at - the same time. -* Core API - Win - Improved CPU performance for FSB Vorbis decoding. See - Performance Reference section of the documentation for - updated benchmark results. -* Core API - iOS - Added support for bitcode. - -Fixes: -* Studio API - Fixed the scatterer module's random distance calculation to - ensure it is within the limit set in Studio. In previous - versions the random distance may have exceeded the max limit. - This change may affect the loudness of sounds with scatterer - modules compared to 1.06.xx releases. -* Core API - Fix rare crash when releasing a streamed sound. -* Core API - Fix output plugins with GUIDs of zero stopping setDriver - working. -* Core API - PS3 - Fixed send/returns not respecting volume changes or - rarely failing with an error when setting return IDs. -* Core API - PS4 - Rewrote output to use sceAudioOutOutputs instead of - multiple sceAudioOutOutput calls on a single thread. -* Core API - Win - Fixed the audible output driver from resetting when an - unrelated device is removed or disabled. -* Core API - Xbox One - Fixed the first couple of samples of decoded XMA - being lost due to SHAPE SRC. - -Notes: -* Studio API - Incremented bank version, requires runtime 1.07.00 or later. -* Studio API - Latest runtime supports loading old bank versions from 1.03.00. -* Studio API - Improved compatibility for plugin effects. Adding extra DSP - parameters to an effect no longer breaks bank version - compatibility. -* Studio API - Studio::Bank::getEventCount and Studio::Bank::getEventList only - return events directly added to the bank, not implicit events - that are included in the bank due to event instrument references. -* Studio API - The asynchronous command buffer for the Studio API will now - grow as necessary, avoiding stalls that could occur if it was too - small. The commandQueueSize field in FMOD_STUDIO_ADVANCEDSETTINGS - now specifies the initial size of the buffer. -* Studio API - Studio now enables FMOD_INIT_VOL0_BECOMES_VIRTUAL by default. -* Studio API - WinStore - Fixed inconsistent naming of X64 libraries. -* Core API - Increased FMOD_MAX_LISTENERS from 5 to 8. -* Core API - System::getCPUUsage update time now includes the metering and - profiling part of the update. -* Core API - Removed support for FSB Vorbis files built using FMOD Ex 4.42 or - earlier. -* Core API - PS4 - Changed default mix buffer size to 512 samples to reduce - CPU cost. Previous setting of 256 can be set using - System::setDSPBufferSize. -* Core API - PS4 - The size of each pre-allocated AT9 instance has increased - by 8kB. -* Core API - PS4 - Prebuilt static libraries are no longer provided, - only dynamic libraries. -* Core API - WinStore - Fixed inconsistent naming of X64 libraries. - -05/10/15 1.06.11 - Studio API patch release (build 68487) ----------------------------------------------------- - -Features: -* Win - Reduced dll and exe sizes. - -Fixes: -* Studio API - Fixed input buses not being released when there are no longer - any event instances routed into the bus. -* Studio API - Fixed API capture recording the initial VCA level as 0. -* Core API - Fix rare crash when changing the master channel group head DSP - when the software format and system output don't match. -* Core API - Fix Channel::AddDSP() and ChannelGroup::AddDSP() not correctly - moving a DSP if it's already a member. -* Core API - Fix for noise being produced when panning a surround input - when the system format doesn't match the panner input format. -* Unity - FMOD RNG seed set at initialization time. -* Unity - Can now properly cancel the copy step of the import process. -* Unity - Updated documentation links in menu. - -Notes: -* iOS - Now built with SDK 9.0 (Xcode 7.0). -* Mac - Now built with SDK 10.11 (Xcode 7.0). - -15/09/15 1.06.10 - Studio API patch release (build 67958) ----------------------------------------------------- - -Features: -* Core API - Add Sound::seekData support to HTTP streams. -* UE4 - Added blueprint functions for loading and unloading sample data. - -Fixes: -* Core API - Fix small reverb pop on sounds that had Channel::setPosition - called on then and were muted via a parent channelgroup. -* Core API - Fix https netstream redirects not working. -* Core API - Fix user DSP read callback firing with no data if - Channel::setPaused(false) is used after a System::playSound. -* Studio API - Fixed Trigger Delay not being applied to sounds on parameters - that trigger immediately when an event starts. - -Notes: -* Xbox One - Now built with August 2015 XDK. - -01/09/15 1.06.09 - Studio API patch release (build 67431) ----------------------------------------------------- - -Features: -* Studio API - Additional logging when banks have been exported with out of - date plugin effects. - -Fixes: -* Core API - Fix automatic device changing support if a user called - System::update from their own thread. -* Core API - Fix crash when a channel group cannot be attached to port. -* Core API - Fixed incorrect loop length being set for ADPCM files. -* Core API - Win64 - Enable automatic device changing support. -* Core API - iOS - Fixed error creating the file thread on iOS 9.0. -* Core API - Fix distance filtering not resetting its parameters properly - for channels. -* Core API - MIDI support - Fix note keyoff when evelope is in decay phase - causing note to finish early. -* Studio API - Fix crash that could occur when auditioning an event in - Studio while changing the path to waveforms. - -Notes: -* UE4 - Updated oculus rift plugin to version 0.11 - -12/08/15 1.06.08 - Studio API patch release (build 66772) ----------------------------------------------------- - -Features: -* UE4 - Added FMOD init settings. -* UE4 - Added preliminary support for 4.9 engine preview build. -* Core API - Add Channel::setPosition support to HTTP streams. - -Fixes: -* Core API - Fixed System::getDefaultMixMatrix crashing if passed - FMOD_SPEAKERMODE_RAW. Now returns FMOD_ERR_INVALID_PARAM. -* Core API - Xbox One - Fixed crash if all SHAPE contexts are consumed. -* Core API - Xbox One - Fixed XMA loops not being seamless. -* Studio API - Fixed potential crash when disconnecting from live update - while recording a profiling session. -* Studio API - WiiU - Fixed hang on shutdown when exiting game from home menu. -* Core API - Fix for inaccurate metering levels when the calculation spanned - multiple mix blocks. -* Core API - Fixed System::getRecordPosition race condition that could cause - the returned value to be out of bounds. -* Unity - Fixed missing functionality from C# wrapper for beat callbacks - and metering. -* Unity - Fix leaking native system objects in editor. -* UE4 - Fixed multiple listeners. -* FSBank - Fixed crash encoding FADPCM format in 64bit version of tool. - -Notes: -* Studio API - Reduced memory usage for instruments that do not require - up/down mix. -* Core API - Improved performance of DSP::getParameterFloat, - DSP::getParameterInt, DSP::getParameterBool and - DSP::getParameterData when 'valuestr' argument is NULL. - -22/07/15 1.06.07 - Studio API patch release (build 66161) ----------------------------------------------------- - -Fixes: -* Core API - Win - Fix audio glitches at initialization time when using - the WASAPI output mode on Windows 10. -* Core API - Fix UTF8 strings in MP3 ID3V2 tags not being null terminated - properly leading to possible string overflow crash. -* Core API - PS4 - Fixed issue with non-1024 sample aligned loop-points and AT9 - compressed samples. -* Core API - Fixed memory leak when releasing connections that have a user - allocated mix matrix. -* Core API - Added pre-wet and post-wet arguments to WetDryMix in C# wrapper. -* Core API - Fixed crash with FADPCM streams. -* Core API - Fixed another potential crash in PitchShifter DSP if changing - channel count while running. -* Core API - Win - Fix issues caused by WASAPI allocating the output buffer at - the mixer's sample rate instead of the device's sample rate. -* Studio API - XboxOne - Fix setting the thread affinity of the studio loading thread. -* Studio API - Fixed case of nested events on parameters being stopped while - still active. Introduced in 1.06.04. - -Notes: -* Studio API - Incremented bank version, requires runtime 1.06.06 or later. -* Studio API - Latest runtime supports loading old bank versions from 1.03.00. -* Core API - XboxOne - Thread affinity can now be set as a mask of allowed cores. - -08/07/15 1.06.06 - Studio API patch release (build 65638) ----------------------------------------------------- - -Features: -* Core API - Added FMOD_DSP_COMPRESSOR_LINKED parameter to DSP compressor. - -Fixes: -* Studio API - Fixed potential invalid memory access when a bank is unloaded - while create instance commands are queued. -* Studio API - Removed one frame delay between setting a parameter and having - conditional timeline transitions occur. -* Studio API - Studio gracefully handles the case of a programmer sound being - returned in a streaming not-ready state when the instrument is - being used with timelocked seeks. -* Core API - Fixed rare crash when streams go virtual. -* Core API - Fixed 3EQ DSP not waiting an extra mix block before going idle, - possibly cutting off a tail. -* Core API - Fixed potential crash in PitchShifter DSP if changing channel - count or FFT size while running. -* Core API - Fixed rare volume pop when ramping with fade points as a channel - goes emulated. -* Core API - Linux - Fixed record position not advancing with ALSA output mode. -* Core API - Fix race condition when setting the impulse response on an active - convolution reverb DSP. -* Unity - Fix compatibility with Unity 5.1 - -24/06/15 1.06.05 - Studio API patch release (build 65161) ----------------------------------------------------- - -Features: -* Studio API - Added FMOD_STUDIO_LOAD_BANK_DECOMPRESS_SAMPLES flag to - force bank sample data to decompress into memory, saving - CPU on low end platforms. -* Studio API - Improved responsiveness when reducing steal oldest polyphony - over live update. -* Studio API - Studio profiling now includes nested instance information. -* UE4 - Exposed beat and marker callbacks as Blueprint events. - -Fixes: -* Studio API - Fixed Scatterer sounds having incorrect volume when min and - max scatter distances are equal. Introduced in 1.06.00. -* Studio API - Fixed FMOD_STUDIO_TIMELINE_BEAT_PROPERTIES position to - return the beat position, rather than the tempo marker - position. -* Studio API - Fix deadlock in studio when removing an output device that - runs at a different sample rate to the system. -* Studio API - Fix deadlock in studio when removing certain USB headsets. -* Core API - Fixed rare case of DSP mixer not responding momentarily if - output mode was switched during playback. -* Core API - Fix declaration of DSP.getMeteringInfo in C# wrapper. - -Notes: -* UE4 - Now built against Unreal 4.8 - -09/06/15 1.06.04 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Added tempo and marker event callbacks. See - FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER and - FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT. -* Core API - Add FMOD_DSP_DESCRIPTION::sys_register, sys_deregister and - sys_mix for DSP plugin developers, to allow a per type (not - instance) level init/shutdown/mix callback for a plugin. - -Fixes: -* Core API - Fixed MIDI playback not correctly handling CC1 (mod wheel). -* Studio API - Fixed livelock when scheduling nested events in a playlist that - have 0 duration. -* Studio API - Fixed events staying active when they have active but idle - nested events on parameters. Events now finish once their - nested parameter events go idle. -* Studio API - Fixed Scatterer sounds not being spatialized properly. - Introduced in 1.06.00. -* FSBank - Fix bug that prevented selection of FMOD ADPCM in the tool. -* Core API - Fix set3DPanLevel not respecting reverb mix when pan level - was approaching 0. -* Core API - Fix 2d channels not having the wet mix scaled for reverb when - parent ChannelGroup volume/mute functions were called. -* Unity - Remove warnings about banks already loaded -* Unity - Fix Unity Editor crashing when using FMOD_LIVEUPDATE and - FMOD_DEBUG pre-processor commands simultaneously. - -Notes: -* Studio API - Incremented bank version, requires runtime 1.06.00 or later. -* Studio API - Latest runtime supports loading old bank versions from 1.03.00. -* Studio API - Added a warning for events that haven't finished because they - are waiting for a DSP effect to go idle. -* Core API - WiiU - To comply with LotCheck requirements only the logging version - of FMOD will link with networking APIs -* Xbox One - Now built with May 2015 QFE 1 XDK. -* WiiU - Now built with SDK 2.12.13. - -22/05/15 1.06.03 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Reduced memory overhead of bank metadata. - -Fixes: -* Studio API - Fixed steal oldest polyphony behaviour using instance creation - instead of instance start time. -* Studio API - Fixed playlist instrument cutoff not applying a volume ramp down - which could cause pops when using polyphony. -* Core API - Fixed invalid memory access when loading an incorrectly formatted - or truncated IMA ADPCM wav file using FMOD_OPENMEMORY_POINT and - FMOD_CREATECOMPRESSEDSAMPLE. -* Core API - Fix rare crash due to race condition when calling Sound::Release() - just after the sound has been loaded using NON_BLOCKING. -* Core API - PS3 - Fix deadlock in streaming when using SPU Threads. -* Core API - Attempting to attach the Master ChannelGroup to a port will now - return FMOD_ERR_INVALID_PARAM. -* Core API - PS4 - Fix issues with recording at rates other than the driver - default. -* Core API - Fix crash in DSPFader when voice goes virtual with DSP effect added - at a position lower than the fader (ie post fader), and the effect - is freed. -* UE4 Integration - Fixed incorrect listener orientation. - -Notes: -* Studio API - Changed envelope follower DSP sidechain parameter to ignore - invalid values. -* Xbox One - Now built with April 2015 XDK. -* 7.1 to 5.1 downmix now lowers the volumes of the back speakers' - contribution to the surround speakers by 1.5db to lessen volume bulge - in the middle. - -06/05/15 1.06.02 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Sounds on parameters that are cross-fading in will now apply a - ramp volume up to the initial cross-fade value. This avoids pops - even if the sound has been improperly authored. -* UE4 Integration - Added support for Reverb zones. -* UE4 Integration - Exposed Studio::EventInstance::getTimelinePosition and - Studio::EventInstance::setTimelinePosition as blueprint - functions. - -Fixes: -* Studio API - Fixed transition timeline modules not crossfading their - volume properly when overlapping the lead out region. -* Studio API - Fixed C# wrapper not linking against 64bit dll when WIN64 is defined. -* Studio API - Fixed events with sidechains never naturally stopping. -* Studio API - Fixed runtime crash caused by a compiler bug for customers compiling - from source using VS2015 CTP. -* Core API - WiiU - Fixed incorrect pitch for DRC if System is running a - rate other than 48KHz or 32KHz. -* Core API - PS4 - Fix small memory leak when closing output ports. -* Core API - Fixed documentation regarding FMOD_DSP_COMPRESSOR_USESIDECHAIN and - FMOD_DSP_ENVELOPEFOLLOWER_USESIDECHAIN. -* Core API - WinStore - Fix System::Init() freezing when called from the UI thread. - -* UE4 Integration - Fixed bad editor performance when selecting audio components. -* UE4 Integration - Fixed several Android deployment issues. - -* Unity Integration - Fix compilation issues on iOS when using IL2CPP. -* Unity Integration - Logging libs for OSX are now included. Defining FMOD_DEBUG - will now route FMOD internal logging to the Unity console in the - OSX editor and standalone OSX builds. -* Unity Integration - Make members of the REVERB_PROPERTIES structure public. -* Unity Integration - Fix compile error on XBox One when defining FMOD_DEBUG. - -Notes: -* UE4 Integration - Merged documentation with main API documentation. - -17/04/15 1.06.01 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Added FMOD_STUDIO_EVENT_CALLBACK_CREATED, - FMOD_STUDIO_EVENT_CALLBACK_DESTROYED and - FMOD_STUDIO_EVENT_CALLBACK_START_FAILED callback types. -* Studio API - Exposed FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_DELAY and - FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_LOOKAHEAD as advanced - properties that can be set per instance. - -Fixes: -* Core API - Fixed Channel userdata not being reset to 0 each playSound. -* Core API - Fixed the C# wrapper for DSP.AddInput and DSP.disconnectFrom. -* Core API - PS4 - Fixed playback issue with AT9 compressed samples that have - a non-zero loop start point. -* Core API - Fix rare issues with generator DSPs or compressed channels getting - stuck looping the same fragment of audio. -* Core API - PS3 - Fix rare crash if sound stops on a channelgroup with a matrix - set in it. - -* Unity Integration - Fix banks not being loaded on standalone OSX builds. -* Unity Integration - Logging libs for windows are now included. Defining FMOD_DEBUG - will now route FMOD internal logging to the Unity console in the - Windows editor and standalone Windows builds. - -Notes: -* PS4 - Now built with SDK 2.508.051. - -10/04/15 1.06.00 - Studio API minor release ----------------------------------------------------- - -Important: -* Studio API - Scatterer sounds now steal the oldest spawned sound if the - polyphony limit has been reached when spawning a new sound. - -Features: -* Added new compression format FADPCM as a higher quality, lower CPU cost drop - in replacement for standard IMA ADPCM. This custom developed format is our new - recommendation for mobile, PS Vita and Wii U delivered exclusively via FSB. -* Core API - Improved CPU performance of convolution reverb by 30% -* Core API - Android - Improved latency by automatically resampling to the - native rate to enable the fast mixer. -* Core API - PS Vita - Removed requirement to use 48KHz mixing, default is - now 24KHz for better performance. -* Core API - Xbox One - Optimized performance for looping compressed XMA. -* Core API - Xbox One - Added support for greater than stereo XMA streams. -* Core API - Xbox One - Reduced output latency by 20ms. -* Studio API - Significantly reduced memory usage. -* Studio API - Added Studio bank loading thread. -* Studio API - Added Studio::Bank::getUserData and Studio::Bank::setUserData. -* Studio API - Added FMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOAD callback. -* Studio API - Support for transition timeline lead-in and lead-out. -* Studio API - Added support for setting Studio async update period via - FMOD_STUDIO_ADVANCEDSETTINGS. -* Core API - PS4 - Added support for High Quality Recording API by default. - -Fixes: -* Studio API - Fixed parameter modulation being unable to go below the value - set from the public API. -* Studio API - Fixed effect bypass setting not being saved to banks. - -Notes: -* Studio API - The C# wrapper now uses System.Guid instead of FMOD.GUID. -* Studio API - Default command buffer size has been increased to 32K. -* Studio API - Studio::System::setListenerAttributes and - Studio::System::getListenerAttributes now take a listener - index in preparation for multiple listener support. -* Studio API - Deprecated Studio::ID typedef. Please use FMOD_GUID type. -* Studio API - Changed FMOD_STUDIO_EVENT_CALLBACK_TYPE from an enum to a - bitfield. Added 'callbackmask' parameter to - Studio::EventDescription::setCallback and - Studio::EventInstance::setCallback. -* Studio API - Studio::System::startRecordCommands and - Studio::System::stopRecordCommands has been renamed to - Studio::System::startCommandCapture and - Studio::System::stopCommandCapture. -* Studio API - Studio::System::playbackCommands has been renamed to - Studio::System::loadCommandReplay and now returns - a CommandReplay object. -* Studio API - Schedule delay and look-ahead has been reduced for Studio - async mode. This reduces latency and improves responsiveness - of events to parameter changes. -* Core API - System::set3DListenerAttributes checks for invalid - arguments in release. -* Core API - Thread safety no longer uses a command queue for deferring - selected API functions until the next update. The queue of - deferred functions was most often flushed by a subsequent - getter function or other setter function anyway. -* Core API - Added 'numconnected' to System::getRecordNumDrivers and - 'state' to System::getRecordDriverInfo in preperation for - changes to how recording device removal is handled. Currently - 'numconnected' will equal 'numdrivers' and 'state' will - be FMOD_DRIVER_STATE_CONNECTED. -* Core API - Some of the FMOD_PAN_ types have been renamed FMOD_DSP_PAN_ - for consistency. -* Core API - Calling ChannelControl::getAudibility on a ChannelGroup now - returns the combined audibility of itself and the parent - audibility. - -02/04/15 1.05.15 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Win - Fixed occasional deadlock when removing audio devices. -* Core API - Fixed stream crackling if initialseekposition was used immediately - followed by Channel::setPosition with a close position value. -* Core API - PS3 - Fixed six or eight channels vorbis streams crashing the SPU. -* Core API - Xbox One - Fixed rare hang when decoding small XMA compressed audio. -* Core API - Fixed DSP::getInfo not returning configwidth and confighheight - information for VST plugins. -* Core API - Fixed rare crash calling DSP::reset on the fader DSP, after - ChannelGroup::setPan/setMixLevelsOutput/setMixMatrix. This - could occur when a Studio event is started or stopped. -* Core API - PS4 - Fixed issue with non-1024 sample aligned loop-points and AT9 - compressed samples. -* Core API - Fixed DSP effect being un-removable with FMOD_ERR_DSP_INUSE after - being added to a channel and the channel stops (becoming invalid). - -Notes: -* PS3 - Now built with SDK 470.001. - -16/03/15 1.05.14 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Fixed some cases where channel group audibility was not refreshed - when fade points are active. This could happen when a Studio event - instance is paused and unpaused. -* Core API - PS3 - Fixed FMOD_PS3_INITFLAGS overlapping FMOD_INITFLAGS causing - certain FMOD_INITFLAGS to affect PS3 specific bit-stream - encoding options. -* Core API - PS3 - Fixed a rare hang when releasing a DSP that exposes - a FMOD_DSP_PARAMETER_OVERALLGAIN parameter. -* Core API - PS3 - Fixed opening URL failing with network streams. -* Core API - Xbox One - Fixed recording API, you can now specify any sample rate - to record at. Native rate of 48KHz is still recommended - for lowest latency. -* Studio API - Fixed virtualized event failing to become real if the number - of playing instances drops back below max polyphony. - -Notes: -* Core API - PS3 - Deprecated FMOD_PS3_EXTRADRIVERDATA::initflags. Due to a - bug it was being ignored. Pass the flags to System::init instead. - -25/02/15 1.05.13 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Studio::System::getBank now accepts bank filenames as input. -* Core API - Added 64bit versions of fsbank and fsbankcl tools. - -Fixes: -* Studio API - Fixed case of nested event not being destroyed even after it - had finished producing sound. -* Studio API - Fixed crash when changing output bus on an event when live update - is connected. -* Studio API - Fixed deadlock when calling Studio commands when mixer is suspended. -* Studio API - System::release now ensures release even if flushing pending commands - causes an error. -* Studio API - The name of the string bank is now added to the string bank. -* Studio API - Event instance restart now flushes parameter values before timeline - rescheduling occurs. This avoids a potential issue for transitions - with parameter conditions, where they may not have used the most - recent parameter value. -* Core API - Fix unnecessary querying of recording driver capabilities during - recording. -* Core API - PS4 - Remove AT9 workaround added in 1.05.12. Fix AT9 compressed - codecs with finite loop counts. -* Core API - PS4 - Removed stalls when an AT9 compressed sample channel is started. -* Core API - PS4 - Fix crash in recording. -* Core API - Fix multiple listener support not working properly. -* Core API - Fix user file crash if using asyncfileread callback, and file - open and close happens without any read occuring. -* Core API - Fix rare crash with Sound::release if a nonblocking setPosition - is in process and it is an FSB sound. -* Core API - Fix thread safety issue loading multiple mod/s3m/xm/it files - simultaneously. -* Core API - Fix rare crash if FMOD_ACCURATETIME was used with .mp3 file - followed by mp3 encoded FSB file after a time, both using - FMOD_CREATECOMPRESSEDSAMPLE. -* Core API - PS3 - Fixed custom DSP that use the plugindata member. - -Notes: -* Studio API - Updated programmer_sound example. -* Core API - Added plug-in inspector example. -* Xbox One - Now built with February 2015 XDK. - -06/02/15 1.05.12 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Improved memory use for events with repeated nested events. - -Fixes: -* Studio API - Fixed crash when stopping multiple one-shot events on a bus. -* Studio API - Fixed nested event polyphony from cutting off immediately, - causing pops. -* Core API - Fixed rare crash in mixer if DSP::reset is called on a - FMOD_DSP_TYPE_FADER dsp (ie ChannelControl head DSP) - after DSP::setPan/setMixLevelsOutput/setMixMatrix. -* Core API - Fixed race condition setting resampling speed while resampling - is occurring. -* Core API - Fixed crash loading mod/s3m/xm/it file using FMOD_NONBLOCKING - and FMOD_CREATECOMPRESSEDSAMPLE and then immediately calling - SoundI::release -* Core API - PS4 - Work around AT9 codec issues that have appeared when using SDK 2.000 - -22/01/15 1.05.11 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Xbox One - Added access to 7th CPU core. - -Fixes: -* Studio API - Fixed crash setting Studio event callback to null as it is - being invoked. -* Studio API - Fixed crash in hashmap reallocation when running out of memory. -* Studio API - Fixed Studio::loadBankCustom from freeing its custom userdata - before the close callback for failed banks. -* Studio API - If FMOD_OUTTPUTTYPE_WAVWRITER_NRT or NOSOUND_NRT is used as an - output mode, Studio runtime will now internally force - FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE to avoid a hang. -* Core API - Fix pop noise when 3d sound goes virtual then becomes real again, - only if ChannelControl::addDSP was used. - -Notes: -* Studio API - Studio::EventInstance::getPlaybackState will now return the state - as FMOD_STUDIO_PLAYBACK_STOPPED if the instance is invalid. -* Studio API - Studio::Bank::getLoadingState, Studio::Bank::getSampleLoadingState, - and Studio::EventDescription::getSampleLoadingState will now return - the state as FMOD_STUDIO_LOADING_STATE_UNLOADED if the object - is invalid. - -12/01/15 1.05.10 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Xbox One - Added support for recording from microphones. - -Fixes: -* Core API - PS3 - Fix deadlock in streaming sounds when linking against the - SPU thread libraries. -* Core API - Windows - Fixed crash when initializing a second ASIO system. -* Core API - Fix ChannelControl::getDSPIndex not returning an error if the dsp - did not belong in the Channel or ChannelGroup -* Core API - PS3 - Fix linker error when using libfmod_sputhreads.a -* Core API - Fixed AT9 and ACP XMA incorrectly allowing FMOD_OPENMEMORY_POINT - and FMOD_CREATESAMPLE. -* Core API - Fixed reverb wetlevel from ChannelControl::setReverbProperties - being reset after a voice goes virtual then returns as real. -* Core API - Fixed removing/adding DSPs in a ChannelControl chain copying - setDelay commands incorrectly and making channels pause when - they shouldnt -* Studio API - Reinstated support for embedded loop points in source sounds, - and fixed issue with playback of timelocked sounds. - -12/12/14 1.05.09 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Added System::registerOutput to allow the creation of - statically linked custom output modes. - -Fixes: -* Studio API - Fixed looping event cursor position from getting slightly - out of sync with scheduled position when running at 44.1kHz. -* Studio API - Fixed playlist steal-oldest polyphony returning errors - when used with extremely small durations. -* Studio API - Fixed silence after unpausing an event instance. - Introduced in 1.05.08. -* Core API - Fixed crash after setting the input format of a Return DSP - to stereo, when the mixer output format is mono. -* Core API - Windows - Fix crash calling FMOD_ASYNCREADINFO::done function - pointer when default calling convention is not cdecl. -* Core API - Fixed FMOD_SPEAKERMODE_RAW panning incorrectly during an - up or down mix. -* Core API - Fix crash when a Channel::setPosition is called on a - non-blocking stream that is going virtual. -* Core API - Fixed potential audio corruption when playing sounds with - more than 8 channels. -* Core API - Fixed emulated channels not updating their parent when - when Channel::setChannelGroup is called. -* Core API - Fixed channels having their volume reset when changing - channel group parents. -* Core API - Fixed channels not going virtual when being paused if no - other volume changes were occurring. -* Core API - Fixed FMOD_INIT_PROFILE_ENABLE enabling all DSP metering - regardless of whether FMOD_INIT_PROFILE_METER_ALL was used. -* Core API - Added volume ramp up for 3d channels coming back from virtual - to real. -* Core API - Fixed rare crash if the master channelgroup's DSP Head unit - was changed then released. -* Core API - PS3 - Fix loudness meter not functioning. -* Core API - PS3 - Re-enabled playDSP. - -Notes: -* Core API - Xbox One - Added check to ensure DSP buffer size is specified - as the default 512 samples to avoid performance - degradation of XMA decoding. -* Core API - Windows - Changed default ASIO speaker mapping to 1:1 for - outputs with more than 8 channels. - -28/11/14 1.05.08 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Added ChannelControl::setFadePointRamp helper function - that automatically adds a volume ramp using fade points. - -Fixes: -* Studio API - Fixed pops that could occur when stopping events that have - instruments scheduled to stop already. -* Studio API - Fixed pop that could occur when playing an sound - that has an AHDSR fade in. -* Studio API - Fixed indeterminism when exporting string banks that have - multiple string entries with inconsistent case. -* Core API - Android - Improved compatibility with Java 1.6. -* Core API - iOS - Added armv7s back to the universal binary. -* Core API - Windows - Fix System::getRecordDriverInfo returning - incorrect device names. Introduced in 1.05.00. -* Core API - Fix FMOD_SPEAKERMODE_RAW creating silence if playing more than - 1 sound, introduced in 1.04.15. -* Core API - Fix CELT and Vorbis FSB being allowed with FMOD_OPENMEMORY_POINT - and FMOD_CREATESAMPLE when it should in fact - return FMOD_ERR_MEMORY_CANTPOINT - -21/11/14 1.05.07 - Studio API patch release ----------------------------------------------------- - -Important: -* Studio API - Fixed scheduling for looping nested events which are cut off - from the parent event. Previously the looping nested event - would attempt to play to end but would cut off halfway through - with a noticeable click. The nested event now cuts off - immediately with a fade out ramp. - -Features: -* Core API - Android - Added ARM64 support. - -Fixes: -* Core API - Fix ChannelGroup::setMixLevelsOutput causing corrupted audio - when the channel group has an input with a channel count greater - than the system channel count. -* Core API - Fixed ChannelControl::setMute not refreshing channel audibility. -* Core API - Windows - Fix calls to DSP::getInfo() from within a custom DSP - deadlocking the system during audio device change. -* Core API - Fixed some DSP configurations with an idle first input causing - signal to be downmixed to mono. -* Core API - Fix invalid characters being printed in log messages when open - certain types of media files. -* Studio API - Fixed Studio::Bank::getEventCount and Studio::Bank::getEventList - incorrectly enumerating nested events. -* Studio API - Fixed Studio::Bus::stopAllEvents not working when snapshots or - nested events are playing. -* Studio API - Fixed "state->mInstanceCount > 0" assert that could occur when - instruments were stopped repeated times. - -Notes: -* PS Vita - Now built with SDK 3.300. -* WiiU - Now built with SDK 2.11.13. - -13/11/14 1.05.06 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Windows - Add 64bit VST support - -Fixes: -* Studio API - Fixed thread safety issue when accessing sound tables as - new banks with sound tables are being added. -* Studio API - Fixed duplicate streaming sounds keeping playing when unloading - the memory bank that it is streaming from. Now the stream - will stop if the memory bank is unloaded. -* Core API - Fixed sound going mono in certain DSP configurations. - Introduced 1.05.00. -* Core API - Fixed rare timing issue with fade points that caused the fader - DSP to generate invalid floats. -* Core API - Android - Fixed crashes due to insufficient stack size when - running ART instead of Dalvik. -* Core API - Windows - Fixed potential crash if using multiple FMOD::System - with ASIO output mode. This is not supported by ASIO - and is now disabled. -* Core API - Linux - Fixed PulseAudio device enumeration not placing the - default device at position 0. - -Notes: -* Xbox One - Now built with November 2014 XDK. -* Android - Now built with NDK r10c. -* iOS - Now built with SDK 8.1 (Xcode 6.1). -* Mac - Now built with SDK 10.10 (Xcode 6.1). -* PS4 - Now built with SDK 2.000.071 - -30/10/14 1.05.05 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Added convolution reverb example. - -Fixes: -* Studio API - Fixed various errors after deleting objects via Live Update -* Studio API - Fixed possible crash using shared waveforms across multiple banks - after some of the duplicate banks have been unloaded. -* Studio API - Fixed duplicate events becoming invalidated when the first bank that - contains them is unloaded. -* Studio API - Fixed bug in load_banks example. -* Studio API - Fixed crash when calling Studio::Bus::stopAllEvents while - playing event instances that have had release called. -* Core API - Fixed memory leaks. - -22/10/14 1.05.04 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed transition markers failing at the start of the timeline. -* Core API - PS3/X360/Wii-U - Fix vorbis seek getting stuck in an infinite loop. -* Core API - Fixed incorrect behaviour when changing the channel mode from 3D to 2D. -* FSBank - Fixed setting the cache directory and printing log messages. - -Notes: -* Studio API - Timeline transitions can be chained together with no delay. - -13/10/14 1.05.03 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Added Studio::Bus::lockChannelGroup and - Studio::Bus::unlockChannelGroup. - -Fixes: -* Studio API - Fixed event fadeout cutting off DSP effects with long tails. -* Studio API - Fixed crash when accessing events with a lifetime across - duplicate banks. Note that when unloading the initial - bank for an event, that event will be invalidated. -* Core API - Fixed for enum mismatches in C# wrapper. -* Core API - Fixed FMOD_DSP_LOWPASS click when being reused, ie stopping - then starting a new sound. -* Core API - Fixed rare hang during Sound::release for sounds created as - FMOD_NONBLOCKING. -* Core API - Fixed corrupted playback of MOD/S3M/XM/IT/MID sequenced - formats. Introduced 1.04.05 -* Core API - Fixed ChannelGroup::setReverbProperties on the master channel - group causing a stack overflow. This is now disallowed as it - creates a circular dependency. -* Core API - Mac - Replaced error condition if initializing FMOD before - activating the AudioSession with a TTY warning. -* Core API - Android - Fixed Sound::readData going forever when reading - AAC audio. -* Core API - Fix the pancallbacks member of the FMOD_DSP_STATE_SYSTEMCALLBACKS - structure passed into custom DSP callbacks being NULL. -* Core API - Fix crash in mixer if user used System::playDSP and made - the dsp inactive with DSP::setByPass or DSP::setActive - -01/10/14 1.05.02 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed a bug where event sounds could have incorrectly - synchronized playback. -* Core API - Fixed compiler warning in public header. -* Studio API - Disabled embedded loop points on all sounds played by the - Studio API to fix incorrect playback of timelocked sounds. -* Studio API - Snapshot volumes are now interpolated in terms of linear gain. -* Core API - Fixed 3EQ DSP not clearing out internal state when DSP::reset is - called, potentially causing audible artifacts when reused. -* Core API - Fixed resampler inaccuracies when reading partial looping data. -* Core API - Mac - CoreAudio output mode will now allow any DSP block size - and will correctly use the desired buffer count. -* Core API - Mac - CoreAudio now correctly exposes its output AudioUnit - via the System::getOutputHandle function. -* Core API - PS3 - Fixed resampler strict aliasing bug on PPU release builds. -* Core API - PS3 - Fixed playDSP crash. -* Core API - Fixed convolution reverb input downmix -* Core API - Greatly increase speed of mixing multichannel source data. - -Notes: -* Studio API - Loudness meters saved in banks will now be bypassed to improve - performance when profiler isn't attached. -* Xbox One - Now built with September 2014 QFE 1 XDK. - -22/09/14 1.05.01 - Studio API patch release ----------------------------------------------------- - -Important: -* Fixed possible large memory blowout if certain DSP pools were exceeded. - -Features: -* Core API - Added FMOD_SYSTEM_CALLBACK_PREUPDATE and - FMOD_SYSTEM_CALLBACK_POSTUPDATE callbacks. -* Core API - iOS - Added support for multichannel output via accessory. - -Fixes: -* Studio API - Implemented Studio::Bus::stopAllEvents. -* Studio API - Fixed bus going silent when output format is stereo and system - speaker mode is 5.1. -* Studio API - Fixed Studio::System::getAdvancedSettings clearing - FMOD_STUDIO_ADVANCEDSETTINGS.cbSize and not returning - default values. -* Studio API - Fixed a bug where looping or sustaining events could - incorrectly be treated as oneshot. -* Studio API - Fixed a bug where event sounds could have incorrectly - synchronized playback. -* Core API - Fix bug with custom 3D rolloff curve points getting corrupted. -* Core API - Fixed incorrect documentation for FMOD_CHANNELCONTROL_CALLBACK. -* Core API - Fix sub-mix channel count being incorrect when playing multiple - sounds with different channel counts together. Introduced in - 1.04 -* Core API - Fix a channel DSP head's ChannelFormat not being reset if a sound - with a channel mask was played on it previously - -Notes: -* iOS - Now built with SDK 8.0 (Xcode 6.0). -* Mac - Now built with SDK 10.9 (Xcode 6.0). - -09/09/14 1.05.00 - Studio API minor release ----------------------------------------------------- - -Important: -* Studio API - Studio::MixerStrip has been replaced by Studio::Bus and Studio::VCA. - The new classes do not have a release method, as their handles - remain valid until the bank containing them is unloaded. -* Studio API - Studio::System::getEvent, Studio::System::getBus, Studio::System::getVCA, - and Studio::System::getBank now take a string path. - Functions that take an ID are now named Studio::System::getEventByID, - Studio::System::getBusByID, Studio::System::getVCAByID, and - Studio::System::getBankByID. -* Studio API - Studio::EventInstance::release no longer invalidates the - handle immediately. The handle remains valid until the event - stops and is actually destroyed. In addition, this function - now succeeds even if the event will not stop naturally. -* Studio API - Events with sounds triggered by parameters will now stop rather - than going idle when all sounds have finished and the timeline - cursor has reached the end. -* Core API - The wide string argument of System::getDriverInfo() and - System::getRecordDriverInfo() has been removed. These functions - now return UTF-8 encoded strings. -* Core API - FMOD_UNICODE flag for System::createSound() and System::createStream() - has been removed. These functions now accept UTF-8 encoded file names - to load sounds with non-ASCII characters on Windows, PS3, PS4, PS Vita, - XBox One, iOS, Android, Mac, Linux, Windows Phone, and Windows Store. -* FSBank API - FSBANK_INIT_UNICODE flag has been removed. All file name structure - members and function arguments now accept UTF-8 encoded strings. - -Features: -* Studio API - Added FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_CREATED and - FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_DESTROYED callback types. -* Studio API - Added Studio::Bank::getStringCount and Studio::Bank::getStringInfo. -* Core API - Added FMOD::Debug_Initialize to configure the destination and - level of debug logging when using the logging version of FMOD. - This is a more flexible replacement for the previous - FMOD::Debug_SetLevel API. -* Core API - Android - Added support for playing AAC files (requires Android 4.2). -* Core API - Android - Reduced latency for devices that support FastMixer, see - "Basic Information" section of the docs CHM for details. -* Core API - Added DSP::setWetDryMix so any effect can have generic wet/dry - signal level control. -* Core API - Added 3D ChannelGroup support. A ChannelGroup is a 'group bus' - and it can now be positioned in 3d space, affecting the mix for - buses and channels below it. 3D Cones, geometry etc all work. - Use ChannelGroup::setMode(FMOD_3D) to enable a 3D ChannelGroup. - -Fixes: -* Studio API - Fixed transitions to the end of a loop region failing to escape - the loop. -* Studio API - Fixed sends inside events occasionally having a brief period - of full volume when the event is started. -* Core API - Fix for crash when creating multiple Systems with profiling enabled. - -Notes: -* Studio API - Transition regions no longer include the end of their range. -* Studio API - FMOD_ERR_EVENT_WONT_STOP has been removed. -* Studio API - Studio::EventInstance::start now resets all DSPs inside the - event to prevent incorrect ramping. This relies on - FMOD_DSP_RESET_CALLBACK leaving public parameters unchanged. -* Studio API - Studio::System::getEvent's unimplemented mode parameter has - been removed, along with FMOD_STUDIO_LOADING_MODE. -* Studio API - FMOD_STUDIO_PLAYBACK_IDLE and FMOD_STUDIO_EVENT_CALLBACK_IDLE - have been removed. -* Studio API - Removed deprecated function Studio::EventInstance::createSubEvent. -* Core API - Changed FMOD_FILE_ASYNCCANCEL_CALLBACK to take FMOD_ASYNCREADINFO - structure rather than void *handle. -* Core API - The FMOD_DSP_RESET_CALLBACK documentation has been updated to - make it clear that it should leave public parameters unchanged. -* Core API - PS4 - Thread affinity can now be set as a mask of allowed cores. -* Core API - iOS / Mac - Reduced default block size to 512 for lower latency. -* Core API - Android - Renamed Java interface from FMODAudioDevice to simply - FMOD, i.e. org.fmod.FMOD.init(). -* Core API - Channel::setMode moved to ChannelControl::setMode so that - ChannelGroups can now also have 2D/3D mode bits set. - -09/09/14 1.04.08 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed crash when a second system is created but never initialized. -* Studio API - Fixed a few ordering issues that can cause binary changes in - identical banks. -* Core API - Fix for pop due to unwanted volume ramping after calling - DSP::reset on fader DSP. This can happen when a Studio event - instance is stopped and then restarted. Caused by timing issue - with ChannelControl::setVolumeRamp. -* Core API - Fix crash if FMOD_DSP_TYPE_MIXER or DSP with no read/process - function is passed to System::playDSP. -* Core API - iOS - Fixed MP2 files being intercepted by AudioQueue causing an - internal error. -* Core API - XboxOne - Fixed network connect not resolving host names and - not honoring the requested time out. -* Core API - Fix rare crash if calling Channel::stop() which a non blocking - Channel::setPosition is happening with a stream. -* Core API - Winphone and Windows Store Apps - fixed detection of socket errors. -* Core API - If a user DSP is added after the master ChannelGroup's fader that - changes the output channel count to something other than the - software mixer's channel count, stuttering could occur. Fixed. -* Studio API - Windows - Fixed Studio API functions deadlocking when in - asynchronous mode and a sound device is removed. -* Core API - PS3 - Fixed some DSP parameter sets being ignored - (overwritten by SPU DMA) -* Core API - Fix System::playDSP not working with custom DSP effects that - use the read callback -* Core API - Added Memory.Initialize function to the C# wrapper. -* Core API - Fixed incorrect truncation of FMOD_CREATECOMPRESSEDSAMPLE - sounds created from MP3 or MP2 files (does not affect FSB). -* Core API - Fixed FMOD_ACCURATETIME for FMOD_CREATECOMPRESSEDSAMPLE - sounds created from MP3 or MP2 files (does not affect FSB). - -Notes: -* Core API - The master ChannelGroup's fader/head now is not responsible for - up or downmixing the signal. It is now done beyond the dsp tree, - internally within FMOD. The Master ChannelGroup's Fader can still - be forced to upmix if required with DSP::setChannelFormat. - -20/08/14 1.04.07 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed an internal error when instantiating a snapshot that - exposes intensity as a parameter. -* Core API - PS3 - Fix audio dropout/corruption when using - FMOD_SPEAKERMODE_STEREO. Usually when sidechain is involved. -* Core API - iOS - Fixed System::recordStart returning FMOD_ERR_RECORD. -* Core API - Fixed possible click noise on end of sound if using - FMOD_CREATECOMPRESSEDSAPMLE or PCM on PS3. - -Notes: -* Xbox One - Now built with July 2014 QFE1 XDK. -* PS4 - Now built with SDK 1.750.061 - -06/08/14 1.04.06 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Added FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES.subsoundIndex - to support non-blocking loading of FSB subsounds. -* Core API - Windows - FMOD now handles sound card removal - and insertion without any programmer intervention. If - System::setCallback is called with - FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED bit set, this feature - is disabled. -* Core API - Windows - System::setOutput can be called post-init now, - allowing dynamic switching between any output mode at runtime. -* Core API - iOS - Improved IMA ADPCM decoding performance especially for - arm64 variant. - -Fixes: -* Core API - Fixed bug where channels with post-fader DSP units would not play - after transitioning from virtual to real. -* Core API - Fix pops with resampler on loops. -* Core API - Fix playDSP returning FMOD_ERR_DSP_SILENCE or - FMOD_ERR_DSP_DONTPROCESS if the dsp played returned that during - query mode. -* Core API - PS3 - Fix ITEcho, SFXReverb, FFT DSP effects rarely getting - parameters reset to old values. -* Core API - Xbox One - Fixed audio corruption when playing mono streams from an - XMA FSB that has both mono and stereo subsounds. -* Core API - PS3 - Moved vorbis decode work during stream setPosition to the SPU. -* Core API - Windows - Fix System::setSoftwareFormat with differing samplerate and - speaker mode causing static. -* FSBank API - Fixed cache being incorrectly reused when replacing source files - of identical name with a different file that has an old time stamp. - -Notes: -* PS3 - Now built with SDK 460.001 - -25/07/14 1.04.05 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fix for pop when stopping events with FMOD_STUDIO_STOP_ALLOWFADEOUT. -* Studio API - Fix incorrect scheduling when Multi Sounds contain nested - events with timeline transitions. -* Studio API - Fix for nested event modules not being cleaned up when used - in a playlist module. -* Studio API - Fix for events failing to stop when they have instruments on - parameters that have Hold enabled. -* Core API - Fix combined volume ramp and fade point ramp having an incorrect - volume. -* Core API - Fix for pop when setting zero volume with vol0virtual enabled. -* Core API - Fix for pop when scheduling fade point ramps in the past. -* Core API - Fix for pop on a return bus when all incoming sends go idle. -* Core API - Fix for faders delaying going idle for a mix when volume is set - to zero without ramping. -* Core API - Fixed FSB forwards compatibility issue causing load failures. -* Core API - XboxOne - Fixed ACP race condition when shutting down / initializing - System causing XMA channels to not play. -* Core API - XboxOne - Fixed XMA compressed sample channel leak that would - eventually result in all sounds playing emulated (silent). -* Core API - WinPhone and WSA - Fixed network connection not respecting system - timeout value. -* Core API - PS3 - Fix IMA ADPCM support for ps3 not working. -* Core API - iOS - Fixed potential duplicate symbol error on link. - -Notes: -* Xbox One - Now built with July 2014 XDK. -* iOS - Now built with SDK 7.1 (Xcode 5.1.1). - -11/07/14 1.04.04 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed a bug where quantized timeline transitions could fail to - play the audio at the destination marker. -* Core API - Fix channel stealing not calling end callback in playDSP case. -* Core API - Fix rare crash if System::playDSP is called, and it steals a - channel with a sound on it, and System::update wasnt called in - between. -* Core API - Mac, iOS and Android - Improved network error reporting. - -08/07/14 1.04.03 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Added FMOD_ADVANCEDSETTINGS.randomSeed, which specifies a seed - value that FMOD will use to initialize its internal random - number generators. - -Fixes: -* Studio API - Changed isValid() functions in C# wrapper to call through to C++. -* Studio API - Fixed Studio::System::loadBankCustom file callbacks being ignored - when System::setFileSystem is using async read functions. -* Studio API - Fixed incorrect playback when starting an event instance - immediately after creating it. -* Studio API - Fixed some snapshot types causing silence on busses if loading - files older than those created with FMOD Studio 1.04.02. -* Core API - Fixed incorrect FMOD_ASYNCREADINFO.offset value passed to - FMOD_FILE_ASYNCREAD_CALLBACK when file buffering is disabled. -* Core API - Windows - Fixed WASAPI failing to initialize on certain old drivers. -* Core API - Fix FMOD_SPEAKERMODE_RAW being broken. -* Core API - Fixed System::set3DRolloffCallback not working. -* Core API - Fixed Sound::set3DCustomRolloff not working. -* Core API - Fix Geometry API not running in its own thread like it was in FMOD Ex. -* Core API - Fixed incorrect DSP clock when re-routing a ChannelGroup - immediately after adding DSPs to it. -* Profiler - Fixed nodes appearing to overlap each other if multiple outputs were - involved. -* Core API - PS4 - Fixed unnecessary file reads when playing an AT9 stream. - -27/06/14 1.04.02 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed incorrect virtualization of events that have more than - one 3D position dependent effect. -* Studio API - Studio::EventDescription::getInstanceList, - Studio::Bank::getEventList, Studio::Bank::getMixerStripList - and Studio::System::getBankList now accept a capacity of 0. -* Core API - Fixed a race condition that could lead to DSP graph changes not - being handled correctly. -* Core API - Linux - Fixed "spurious thread death event" messages appearing - when attached with GDB. -* Core API - Linux - Fixed internal PulseAudio assert if System::getNumDrivers - or System::getDriverInfo is used before System::init. -* Core API - Linux - Fixed ALSA not using correct default driver in some cases. -* Core API - Send levels set before connecting the Return DSP are now - applied immediately rather than fading in over a short time. - -19/06/14 1.04.01 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Added event playback states FMOD_STUDIO_PLAYBACK_STARTING - and FMOD_STUDIO_PLAYBACK_STOPPING. - FMOD_STUDIO_PLAYBACK_STARTING will be returned after - Studio::EventInstance::start until the event - actually starts. FMOD_STUDIO_PLAYBACK_STOPPING will - be returned after Studio::EventInstance::stop until - the event actually stops. -* Core API - PS4 - Added support for background music that cannot be broadcast. - -Fixes: -* Studio API - Fixed playlist module upmixing to system speakermode when playing - multiple overlapping sounds. -* Core API - Fix streams opened with FMOD_NONBLOCKING from playing at the - incorrect position if they go virtual shortly after setPosition - is called. -* Core API - Fix EOF detection in file system causing rare extra file read past - end of file. -* Core API - Fix some FMOD_CREATECOMPRESSEDSOUND based samples finishing early - if they were playing back at a low sample rate. -* Core API - Fix a bug where DSP nodes could get stuck in an inactive state - after setting pitch to 0. - -11/06/14 1.04.00 - Studio API minor release ----------------------------------------------------- - -Important: -* Added PS3 platform support. -* Added WiiU platform support using SDK 2.10.04. -* Added Linux platform support. -* Added Windows Phone 8.1 platform support. -* FMOD_HARDWARE and FMOD_SOFTWARE flags have been removed. All voices are software - mixed in FMOD Studio. - -Features: -* Studio API - Added Studio::System::getSoundInfo for accessing sound table entries -* Studio API - Added Studio::EventInstance::setProperty, - Studio::EventInstance::getProperty and - FMOD_STUDIO_EVENT_PROPERTY_CHANNELPRIORITY -* Studio API - Added doppler effect support -* Studio API - Added libfmodstudio.a import library for MinGW/Cygwin. - C API only, C++ linking not supported. -* Core API - Improved DSP mixing performance by about 30% -* Core API - Added new System callback type FMOD_SYSTEM_CALLBACK_THREADDESTROYED. -* Core API - System::attachChannelGroupToPort now has an argument to allow - signal to be passed to main mix. - -Fixes: -* Studio API - Fixed nested events never ending if they have a parameter with - non-zero seek speed. -* Studio API - Fixed AHDSR modulation on snapshot intensity -* Core API - Fixed incorrect fader interpolation when reparenting channels - with propagate clocks. -* Core API - Win - Fixed several issues with ASIO playback. -* Core API - Android - Fixed audio corruption on devices without NEON support. -* Core API - Fixed FMOD_CREATESOUNDEXINFO.length being handled incorrectly for - memory sounds. This length represents the amount of data to access - starting at the specified fileoffset. -* Core API - Fix truncated FSB causing zero length subsounds, now returns - FMOD_ERR_FILE_BAD - -Notes: -* Core API - Renamed C# wrapper SYSTEM_CALLBACKTYPE to SYSTEM_CALLBACK_TYPE - so it matches the C++ API. -* Core API - Renamed MinGW/Cygwin import library to libfmod.a -* Studio API - Deprecated C# wrapper functions Studio.Factory.System_Create - and Studio.System.init have been removed. - Use Studio.System.create and Studio.System.initialize instead. -* Studio API - Deprecated function Studio::EventInstance::getLoadingState has - been removed. - Use Studio::EventDescription::getSampleLoadingState instead. -* Studio API - FMOD_STUDIO_EVENT_CALLBACK now takes an - FMOD_STUDIO_EVENTINSTANCE* parameter. -* Xbox One - Now built with June 2014 XDK. - -29/05/14 1.03.09 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed truncation error when loading sample data from bank - opened with Studio::System::loadBankMemory. -* Studio API - Fixed numerical error when blending multiple snapshots with - zero intensity. -* Studio API - Fixed incorrect pitch when an instrument has a non-zero base - pitch combined with pitch automation or modulation. -* Core API - Xbox One - Fixed potential seeking inaccuracies with XMA sounds. -* Core API - Fix occasional audio pops when starting a channel or channel group. -* Core API - Fix crash when running out of memory during channel group creation. -* Core API - Fixed the C# wrapper for Sound.setDefaults and Sound.getDefaults. - -Notes: -* Studio API - C# wrapper now takes care of setting the - FMOD_STUDIO_ADVANCEDSETTINGS.cbSize and - FMOD_STUDIO_BANK_INFO.size fields. -* Core API - C# wrapper now takes care of setting the - FMOD_ADVANCEDSETTINGS.cbSize and - FMOD_CREATESOUNDEXINFO.cbsize fields. -* PS Vita - Now built with SDK 3.150.021. - -21/05/14 1.03.08 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Add FMOD_INIT_ASYNCREAD_FAST and FMOD_ASYNCREADINFO.done - method, to improve performance of asyncread callback - significantly. Instead of setting 'result', call 'done' - function pointer instead. -* Core API - Multiple channel groups can now be attached to the same output port. -* Core API - PS4 - Minor performance improvements in AT9 decoding using new SDK - features. - -Fixes: -* Core API - Windows Store - Fixed networking issues. -* Core API - Windows Store - Fixed System::getRecordDriverInfo() returning - incorrect number of channels. -* Core API - Fix System::setFileSystem asyncread callback not setting priority - values properly. -* Core API - Releasing a channel group attached to an auxiliary output port now - cleans up resources correctly. -* Core API - Channel groups attached to an auxiliary output port can now be - added as children of other channel groups. -* Core API - Fix DSPConnection::setMix() not being applied properly. -* Core API - PS Vita - Fixed potential crash during System::init if any output - related pre-init APIs are used, such as System::getNumDrivers. -* Core API - PS Vita - Fixed crash if an attempt is made to load AT9 FSBs as - a compressed sample, for PS Vita this is a streaming only format. -* Core API - Xbox One - Small improvement to XMA performance. -* Core API - Fixed the C# wrapper for System.playDSP. -* Core API - Fixed potential crash on ARM platforms when loading an FSB. - -Notes: -* PS4 - Now built with SDK 1.700. -* Android - Now built with NDK r9d. - -08/05/14 1.03.07 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Improved performance for projects with many events. -* Studio API - Improved memory usage for projects with many bus instances. -* Studio API - Added Studio::System::setCallback, Studio::System::setUserData - and Studio::System::getUserData. -* Core API - Added gapless_playback example for scheduling/setDelay usage. -* Core API - Improved performance of logging build. -* Core API - Added FMOD_SYSTEM_CALLBACK_MIDMIX callback. - -Fixes: -* Studio API - Fixed AHDSR Release not working when timelocked sounds are - stopped by a parameter condition. -* Studio API - Removed some unnecessary file seeks. -* Studio API - Fixed AHDSR Release resetting to Sustain value when instruments - with limited Max Voices are stopped repeatedly. -* Studio API - Fixed channels within paused events not going virtual. -* Studio API - Fixed AHDSR Release not working inside nested events -* Core API - Fixed downmixing to a quad speaker setup. -* Core API - Fixed fsb peak volume levels on big endian platforms. -* Core API - Fixed paused channels not going virtual. - -17/04/14 1.03.06 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Improved performance of automation and modulation - -Fixes: -* Studio API - Fixed crash when creating new automation via LiveUpdate -* Studio API - Fixed possible internal error being returned from - Studio::Bank::getSampleLoadingState when called on an - unloading bank. - -14/04/14 1.03.05 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Added ChannelControl to the C# wrapper to match the C++ API. -* Core API - Fixed the definition of ChannelControl.setDelay and - ChannelControl.getDelay in the C# wrapper. -* Core API - Replaced broken C# wrapper System.set3DSpeakerPosition and - System.get3DSpeakerPosition functions with - System.setSpeakerPosition and System.getSpeakerPosition. -* Core API - Fixed the capitalization of DSP.setMeteringEnabled, - DSP.getMeteringEnabled and DSP.getMeteringInfo in the C# - wrapper. -* Core API - Xbox 360 - Fix hang on XMA playback -* Core API - Fix crash when running out of memory loading an ogg vorbis - file. -* Core API - Fix symbol collisions when statically linking both FMOD - and Xiph libvorbis or libtremor. - -08/04/14 1.03.04 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Studio::EventInstance::start now does a full restart of the - event if already playing. Restarting events will trigger the - FMOD_STUDIO_EVENT_CALLBACK_RESTARTED callback type. -* Studio API - Added Studio::MixerStrip::setMute, and Studio::MixerStrip::getMute - for muting buses. -* Studio API - Added Studio::System::getBufferUsage and - Studio::System::resetBufferUsage for querying command and handle - buffer size usage. -* Core API - System::createSound and System::createStream now faster due to - file extension check and immediate prioritization of the relevant - codec, before scanning rest of codec types. -* Core API - Paused channels now have an effective audibility of 0 and - will go virtual if FMOD_INIT_VOL0_BECOMES_VIRTUAL is enabled. - -Fixes: -* Studio API - Added Studio.System.initialize to the C# wrapper to match the C++ API - (replacing Studio.System.init, which is now deprecated). -* Studio API - Added Studio.System.create to the C# wrapper to match the C++ API - (replacing Studio.Factory.System_Create, which is now deprecated). -* Studio API - Added missing functions to the C# wrapper: - Studio.EventInstance.get3DAttributes, - Studio.EventInstance.isVirtual, - Studio.EventInstance.setUserData, - Studio.EventInstance.getUserData, - Studio.MixerStrip.getChannelGroup, - Studio.EventDescription.getUserProperty, - Studio.EventDescription.getUserPropertyCount, - Studio.EventDescription.getUserPropertyByIndex, - Studio.EventDescription.setUserData, - Studio.EventDescription.getUserData and - Studio.System.loadBankCustom. -* Core API - Fix for VBR sounds that dont use FMOD_CREATECOMPRESSEDSAMPLE - and FMOD_ACCURATETIME not looping when FMOD_LOOP_NORMAL was set. -* Core API - XboxOne - Fixed rare mixer hang when playing XMA as a compressed - sample. -* Core API - Fix crash with combination of FMOD_OPENUSER + FMOD_NONBLOCKING and - a null pointer being passed to System::createSound/createStream. - -Notes: -* Added examples to the Programmer API documentation. -* Xbox One - Now built with March 2014 QFE1 XDK. -* Studio API - In the C# wrapper, Studio.System.init is now deprecated in favour of - Studio.System.initialize. -* Studio API - In the C# wrapper, Studio.Factory.System_Create is now deprecated in - favour of Studio.System.create. -* Studio API - Studio::EventDescription::is3D now returns true if any of its nested - events are 3D. -* Core API - FMOD_CREATESOUNDEXINFO.suggestedsoundtype now tries the suggested - type first, then tries the rest of the codecs later if that fails, - rather than returning FMOD_ERR_FORMAT. -* Core API - Custom codecs. The open callback for a user created codec plugin - now does not have to seek to 0 with the file function pointer before - doing a read. - -28/03/14 1.03.03 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed Studio::EventDescription::getInstanceCount and - Studio::EventDescription::getInstanceList incorrectly providing - data for all events in the bank, not just the queried event. -* Studio API - Added Studio::EventDescription::loadSampleData, - Studio::EventDescription::unloadSampleData and - Studio::EventDescription::getSampleLoadingState to C# wrapper. - -26/03/14 1.03.02 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Added Studio::EventDescription::loadSampleData, - Studio::EventDescription::unloadSampleData and - Studio::EventDescription::getSampleLoadingState functions. -* Core API - Added FMOD_ChannelGroup_IsPlaying to C API. - -Fixes: -* Studio API - Fix for setting parameter values that could cause volume - changes without the appropriate volume ramp. -* Core API - Fix for some incorrect declarations in the C header files. -* Core API - Fixed a linker error when calling some C API functions. -* Core API - Fixed FMOD_ChannelGroup_AddGroup not returning the DSP - connection on success. -* Core API - PS4 - Fixed FMOD macros for declaring plugin functions. - -Notes: -* Studio API - Studio::EventInstance::getLoadingState is now deprecated in - favour of Studio::EventDescription::getSampleLoadingState. - -18/03/14 1.03.01 - Studio API patch release ---------------------------------------------------- - -Important: -* Core API - Blocking commands are not allowed to be called from the - non-blocking callback. Attempting to do so will log an error - and return FMOD_ERR_INVALID_THREAD. See FMOD_SOUND_NONBLOCK_CALLBACK - for more information. - -Fixes: -* Studio API - Fixed simple nested events not terminating properly when inside - multi sounds -* Core API - Fix SRS downmix crash on startup if software mixer was set to 5.1, - and the OS was set to stereo, and the system sample rate was not - 44/48/96khz -* Core API - Fix for deadlock that could occur when executing commands in the - non-blocking callback as another thread is releasing sounds. -* Core API - Fix for Channel::getPosition and ChannelControl::getDSPClock - returning errors when called on emulated channels created with - System::playDSP. -* Core API - PS4 - Fixed leak of audio output handles on shutdown. -* Core API - Fix crash in compressor when placed on a channel with a delay. - -Notes: -* PS4 - Now built with SDK 1.600.071. - -03/03/14 1.03.00 - Studio API minor release ----------------------------------------------------- - -Important: -* Added PS Vita platform support. -* Updated FMOD Studio Programmers API documentation. -* Studio API - Changed .bank file format - ALL BANKS MUST BE REBUILT -* Studio API - Studio API is now asynchronous by default, with the processing - occuring on a new Studio thread. Asynchronous behaviour can be - disabled with the FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE init flag. -* Studio API - Studio API classes are now all referenced as pointers. This - reflects a change in the handle system to make it thread-safe, - more performant and match the C and Core API interface. -* Studio API - Event and mixer strip paths now include a prefix in order to - guarantee uniqueness. See Studio::System::lookupID. -* Core API - Core API is now thread-safe by default. Thread safety can be - disabled with the FMOD_INIT_THREAD_UNSAFE init flag. -* Core API - Codecs must set waveformatversion to FMOD_CODEC_WAVEFORMAT_VERSION - in the FMOD_CODEC_OPEN_CALLBACK. -* Core API - Removed support for digital CD audio - -Features: -* Studio API - The new .bank file format provides improved support for backward - and forward compatibility. Future version updates will not - generally require banks to be rebuilt. -* Studio API - Added support for events duplicated across banks. -* Studio API - Added support for transition marker and loop region probability. -* Studio API - Added support for sounds on transition timelines. -* Studio API - Added asset enumeration functions: Studio::System::getBankCount, - Studio::System::getBankList, Studio::Bank::getEventCount, - Studio::Bank::getEventList, Studio::Bank::getMixerStripCount, - Studio::Bank::getMixerStripList. -* Studio API - Added path retrieval functions: Studio::System::lookupPath, - Studio::EventDescription::getPath, Studio::MixerStrip::getPath, - Studio::Bank::getPath. -* Studio API - Bank loading now takes an extra flags argument. It is possible - to load banks in non-blocking mode in which case the function - will return while the bank is still in the process of loading. -* Studio API - Added Studio::System::setAdvancedSettings. -* Studio API - Added Studio::System::getCPUUsage. -* Studio API - Studio repositories have improved performance and no longer depend - on the standard library map. -* Core API - The system callback now includes the error callback type which - will be invoked whenever a public FMOD function returns a result - which is not FMOD_OK. -* Core API - Optimize Sound::getNumSyncPoints when using large FSB files with - many subsounds and many syncpoints. -* Core API - Made improvements to virtual voices for DSP graphs using sends, - returns, fade points, and sounds with varying peak volumes. -* Core API - PS4 - Added recording support. -* Core API - XBox One - Added dll loading support. -* FSBank API - Added support for exporting peak volume per sound using the - FSBANK_BUILD_WRITEPEAKVOLUME flag. - -Fixes: -* Core API - Channels now take fade points into account for virtualisation -* Core API - Fixed pops when changing Echo DSP Delay parameter -* Core API - Xbox One - Removed a CPU spike when first playing a compressed - sample XMA. - -Notes: -* Studio API - Replaced Studio::System::lookupEventID and Studio::System::lookupBusID - with Studio::System::lookupID. -* Core API - The system callback now has an extra userdata argument that matches - the userdata specified in System::setUserData. -* Core API - Xbox One - APU allocations are now handled internally for developers - using memory callbacks or memory pools. - -24/02/14 1.02.13 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Removed stalls when removing a DSP chain from a channel -* Core API - Fixed Channel::getPosition returning incorrect value for streams - with very short loops. -* Core API - Fixed rare bug with DSP nodes not being set active in the mixer graph. -* Core API - Fixed rare bug with DSP metering not being set. -* Core API - Fixed incorrect playback of multi-channel PCM8 data. -* Core API - PS4 - Fixed issues with calling ChannelControl::setPosition on AT9 - streams and compressed samples. -* Core API - PS4 - Fixed audio glitches when using the background music port and - the system format is not 7.1 -* Core API - PS4 - Added loading of plugins from PRX files. -* Core API - Android - Fixed crash on low quality Vorbis encoded FSBs. -* Core API - Android - Fixed one time memory leak on System::release when using - OpenSL output mode. -* Studio API - Fixed playlist instruments occasionally cutting off too early. -* Studio API - Fixed rare timing issue that caused spawning instruments to trigger - too early. - -Notes: -* Xbox One - Now built with August QFE11 XDK. -* PS4 - Now built with SDK 1.600.051. - -07/01/14 1.02.12 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Fixed potential crash with net streams. -* Core API - PS4 - Fixed rare internal error in AT9 codec when channels are - reused after stopping. -* Studio API - Fixed nested events getting incorrect 3D position information - -17/12/13 1.02.11 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Added ChannelControl::setVolumeRamp and ChannelControl::getVolumeRamp - to control whether channels automatically ramp their volume changes. -* Studio API - Added FMOD_STUDIO_EVENT_CALLBACK_IDLE callback type, fired - when an event instance enters the idle state. - -Fixes: -* Studio API - Fixed FMOD_STUDIO_EVENT_CALLBACK_STOPPED callback firing when - an event instance is already stopped. -* Studio API - Fixed Studio::EventInstance::getCueCount returning 1 even on events - with no sustain points. -* Core API - Fixed ChannelControl::setDelay rarely being ignored. - -Notes: -* Core API - PCM data will now be read the main data in a single read instead - of breaking the reads up into 16kb chunks. -* Studio API - Changed behavior of Studio::EventInstance::getCue to return - FMOD_ERR_EVENT_NOTFOUND if the event has no sustain points. - -02/12/13 1.02.10 - Studio API patch release ----------------------------------------------------- - -Important: -* Core API - Updated the C ChannelGroup functions to take 64 bit integer argument. - -Fixes: -* Core API - Fix FMOD_SPEAKERMODE_SURROUND upmixing to 5.1 or 7.1 incorrectly, - ie surround left mixing into LFE and surround right into surround - right. -* Core API - PS4 - Fix playback of background music when system software format - is not 7.1. - -26/11/13 1.02.09 - Studio API patch release ----------------------------------------------------- - -Notes: -* PS4 - Now built with SDK 1.500.111 - -19/11/13 1.02.08 - Studio API patch release ----------------------------------------------------- - -Important: -* Core API - DSP clock now uses 64 bit integers. The following functions have - been modified to accept a 64 bit integer argument: ChannelControl::getDSPClock, - ChannelControl::setDelay, ChannelControl::getDelay, ChannelControl::addFadePoint, - ChannelControl::removeFadePoints, ChannelControl::getFadePoints. - -Features: -* Studio API - Added setParameterValue and setParameterValueByIndex functions in - eventInstance to wrap finding and then setting a parameter value. - -Fixes: -* Core API - Fixed positioning of 5.1 surround speakers when soundcard is - set to other surround formats -* Core API - Fixed excessive log spam making the logging version much slower -* Core API - Xbox One - Fixed rare XMA codec hang which could also manifest as - FMOD_ERR_INTERNAL. -* Core API - PS4 - Fixed crash when assigning a channel group to the controller speaker. -* Studio API - Fixed MixerStrip release not working when the user has multiple - handles to the same strip -* Studio API - Fixed pops when playing nested events that have silent tracks -* Studio API - Fixed crash when shutting down with profiler connected. -* Studio API - Fixed unused streams being created during event preloading - -Notes: -* Core API - Turned off optimization for user created DSP effects that do not call the read - callback if no sound is coming in. read callbacks will now always fire - regardless. 'shouldiprocess' callback can be defined to optimize out no input. - -12/11/13 1.02.07 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - iOS - Fixed streams returning FMOD_ERR_INTERNAL on ARM64 devices. -* Core API - iOS - Fixed automatic interruption handling not working for ARM64 - devices. -* Core API - Fix possible crash on startup, if using 5.1 mixing on a - stereo output (downmixer enabled). -* Core API - Fix setMute on master channelgroup not working. -* Studio API - Fixed AHDSR modulators starting at the wrong value when - attack time is 0 -* Studio API - Fixed Multi Sounds and Scatterer Sounds not randomizing - correctly after deleting all entries - -06/11/13 1.02.06 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - iOS - Added support for ARM64 devices and x86_64 simulator. - -Fixes: -* Studio API - Fix playback issues after running for more than 12 hours -* Core API - Fixed net streaming truncating or repeatings parts of the end - of a netstream. -* Core API - Fix crash due to missing functions in kernel32.dll on Windows XP. - -29/10/13 1.02.05 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Improved performance of Studio::System::setListenerAttributes -* Studio API - FMOD profiler can now show Studio Bus and Event instances in - the DSP node graph. - -Fixes: -* Studio API - Fixed pan jittering on events that move with the listener - -22/10/13 1.02.04 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Added ability to continue loading banks when missing plugins. -* Studio API - Added FMOD_STUDIO_PARAMETER_TYPE enum to describe the type of a - parameter to FMOD_STUDIO_PARAMETER_DESCRIPTION. -* Core API - Added function to get parent sound from a subsound. -* Core API - Android - Added support for dynamic plugins. - -Fixes: -* Studio API - Trying to set an automatic parameter will return FMOD_ERR_INVALID_PARAM. -* Core API - Fix restarting a channel corrupting fader and panner positions - if effects are added. -* Core API - Fix channel restarting if 1. sound ended, 2. Channel::setVolume(0) - with FMOD_VOL0BECOMESVIRTUAL happened, 3. setVolume(>0) happened, - in between 2 system updates. -* Core API - Fixed issues on PS4 after opening an output audio port fails. -* Core API - Calling playSound on a fsb loaded with createStream will now - return FMOD_ERR_SUBSOUND. - -15/10/13 1.02.03 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - iOS - Fixed potential crash when stopping virtual channels. -* Studio API - Fixed click with cross-fade for nested events -* Studio API - Mac - Fixed link issues from certain API functions. - -Notes: -* Studio API - FMOD_Studio_System_Create now takes a headerVersion parameter - to match the C++ API - -07/10/13 1.02.02 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Fixed rare crash when using virtual voices. -* Core API - Fixed channel fade state not being preserved when switching to virtual. -* Core API - Fixed 5.1 and 7.1 downmix to stereo being off-center. -* Core API - Mac - Fixed incorrect downmix logic causing excess channels to - be dropped. - -Notes: -* Core API - changed FMOD_DSP_LIMITER_MODE parameter to bool - -01/10/13 1.02.01 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Improved performance of compressor on X86/x64 platforms. -* Studio API - Added support for new automatic parameters: Event Orientation, - Direction, Elevation and Listener Orientation - -Fixes: -* Core API - Fixed crash when downmixing to 16-bit output. -* Core API - Fixed floating point issue when setting very low pitch values. -* Studio API - Fixed sound glitch that could occur after crossfade. -* Studio API - Fix for assert when rescheduling with modified pitch. - -Notes: -* iOS - Now built with SDK 7.0. -* Mac - Now built with SDK 10.8. - -23/09/13 1.02.00 - Studio API minor release ----------------------------------------------------- - -Important: -* Added Android platform support. - -Features: -* Core API - Added FMOD_CREATESOUNDEXINFO.fileuserdata to hold user data - that will be passed into all file callbacks for the sound -* Core API - Added System::mixerSuspend and System::mixerResume for mobile - platforms to allow FMOD to be suspended when interrupted or - operating in the background. -* Core API - Added float parameter mappings support to plug-ins -* Core API - PS4 - Added Output Ports example -* Studio API - Reduced memory overhead for several core types. -* Studio API - Added Studio::System::loadBankMemory to support loading banks - from a memory buffer -* Studio API - Added Studio::System::loadBankCustom to support loading banks - using bank-specific custom file callbacks -* Studio API - Added support for placing multiple tempo markers on a timeline. -* Studio API - Better error reporting for instruments scheduled in the past. - -Fixes: -* Core API - Fix incorrect error codes being returned by C# wrapper. -* Core API - Fix bug in stereo-to-surround and surround-to-surround panning -* Core API - Fix System::playDSP not working -* Core API - Fix rare crash with DSPConnection::setMixMatrix. Studio API - could also be affected. -* Core API - Fix getMeteringInfo not clearing its values when pausing. -* Core API - Fix audio pops when restarting sounds due to downmixing. -* Core API - PS4 - Fix crash when disconnecting a channel group from an output - port. -* Core API - PS4 - Fix issue with audio channels not finishing correctly when - being played through a port. -* Core API - Xbox One - Fixed 'clicking' when a realtime decoded XMA sample - loops if adjusting pitch during playback. -* Studio API - Fix event priority not working -* Studio API - Fix Studio::EventInstance::start() returning incorrect result with - non-blocking sounds. -* Studio API - Fix memory leaks when loading corrupt banks -* Studio API - Fix channels leaking with nested instruments -* Studio API - Fix MixerStrip::setFaderLevel on the game side affecting volume - levels in the tool when connected via Live Update -* Studio API - Fix a potential crash when getting a string property with - Studio::EventDescription::getUserPropertyByIndex - -Notes: -* Studio API - Renamed Studio::System::loadBank to Studio::System::loadBankFile -* Studio API - Updated the API examples to use the new example project -* Core API - Changed FMOD_FILE_OPEN_CALLBACK userdata parameter from void** - to void* (it now comes from FMOD_CREATESOUNDEXINFO.fileuserdata - rather than being set by the open callback) -* Core API - iOS - Removed automatic handling of interruptions. Developers - should call the new System::mixerSuspend / - System::mixerResume API from their interruption handler. -* Core API - iOS - Removed all usage of AudioSession API, developers are - now encouraged to use the platform native APIs as there - is no possible conflict with FMOD. -* PS4 - Now built with SDK 1.020.041. - -02/09/13 1.01.15 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Performance optimizations. -* Studio API - Performance optimizations. - -Fixes: -* Core API - Fix oscillators not changing pitch if System::playDSP was used. -* Core API - Fix crash when setting 0 or invalid pitch. -* Studio API - Fix for some allocations not propagating FMOD_ERR_MEMORY errors. -* Studio API - Fix for memory leak when failing to load a bank. - -26/08/13 1.01.14 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Fix crash if adding an FMOD_DSP_TYPE_FADER dsp to a channelgroup. -* Core API - Xbox One - Internal WASAPI (mmdevapi.dll) threads will now have - their affinity set to match the FMOD feeder thread. - -Notes: -* Xbox One - Now built with August XDK. - -19/08/13 1.01.13 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Global mixer strips will now be automatically cleaned up when - when the events routed into them complete. - -* Studio API - Improved performance of Studio::System::Update by removing stalls - waiting on the mixer the complete. - -Fixes: -* Core API - Channel::setPitch() now returns an error if a NaN is passed in. - Fixes crashes occuring later in the mixer thread. -* Studio API - Fixed sustain points at the start of the timeline not working -* Studio API - Fixed sustain point keyoff incorrectly being ignored if the - cursor is not currently sustaining -* Studio API - Fixed sustain point keyoff incorrectly skipping sustain points - repeatedly when looping - -Notes: -* Studio API - Changed behavior of Studio::EventInstance::getCue to return - FMOD_ERR_INVALID_PARAM if the event contains no sustain points. - -12/08/13 1.01.12 - Studio API patch release ----------------------------------------------------- - -Features: -* Added FMOD SoundBank Generator tool for creating .fsb files. Both a GUI version - (fsbank.exe) and a command line version (fsbankcl.exe) are provided. - -Fixes: -* Core API - Fix FSB Vorbis seek table containing an invalid entry at the end. -* Core API - Fix cpu stall when using System::playDSP. Also if using - oscillator in studio. -* Core API - Xbox One - Fixed rare crash on System::init when using WASAPI. - -05/08/13 1.01.11 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed resource leak. -* Studio API - Fixed a crash when releasing an event instance with sub events. -* Core API - Fixed FMOD_SYSTEM_CALLBACK_MEMORYALLOCATIONFAILED not being - passed to the application. -* Core API - PS4 - Fix crashes caused by out-of-memory conditions. - FMOD_ERR_MEMORY is now returned correctly. -* Core API - Xbox One - Fixed race condition that causes a hang when playing - compressed XMA samples and streams at the same time. -* Core API - Xbox One - Fixed leak of SHAPE contexts that would cause - createSound to fail if playing and releasing lots of - XMA streams. -* Core API - Xbox One & Win - Fixed surrounds and rears being swapped in 7.1. - -29/07/13 1.01.10 - Studio API patch release ----------------------------------------------------- - -Important: -* Studio API - Changed .bank file format - API is backward compatible but must - be upgraded for compatibility with Studio tool 1.01.10 or newer. - -Fixes: -* Studio API - Fixed plugin effect sounds not working in game. -* Studio API - Fixed a crash in Studio::System::update after calling - Studio::EventDescription::releaseAllInstances -* Studio API - Fixed sustain points at the start of the timeline not working -* Studio API - Fixed sustain point keyoff incorrectly being ignored if the - cursor is not currently sustaining -* Studio API - Fixed sustain point keyoff incorrectly skipping sustain points - repeatedly when looping -* Studio API - Fixed a crash when unloading a bank that contains a nested - event that is currently playing -* Studio API - Fixed Studio::System::update sometimes failing with FMOD_ERR_INTERNAL - and leaving the system in an inconsistent state -* Core API - Xbox One - Fixed FMOD_CREATECOMPRESSEDSAMPLE XMA playback issues. - -Notes: -* Studio API - Changed behavior of Studio::EventInstance::getCue to return - FMOD_ERR_INVALID_PARAM if the event contains no sustain points. - -22/07/13 1.01.09 - Studio API patch release ----------------------------------------------------- - -Important: -* Core API - Fixed rare crash in mixer. - -Features: -* Studio API - Fixed spawning sounds not playing at correct 3D position. -* Studio API - Fixed 40ms of latency getting added for each layer of event - sound nesting. -* Core API - Optimized mixer by about 30% in some configurations. - -Fixes: -* Core API - Remove FMOD_CHANNELCONTROL union, used in ChannelControl type - callbacks, as it was incorrect and using it as a union would - have lead to corruption/crash. A simple opaque - FMOD_CHANNELCONTROL type is now used for callbacks, and the - user should just cast to the relevant channel or channelgroup - type. -* Core API - Fixed fade point interpolation on channels with pitch. -* Core API - Fixed race condition when channels were reused after stopping. -* Core API - Xbox One - Fixed hang for short (2KB) XMA files. -* Core API - Xbox One - Fixed incorrect seek offset for XMA files. -* Core API - PS4 - Added support for AT9 streams with greater than 2 channels. -* Studio API - PS4 - Fixed crash when Handle derived classes went out of scope after - the dynamic lib was unloaded - -Notes: -* PS4 - Now built with SDK 1.0. - -15/07/13 1.01.08 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Added Studio::EventDescription::getMinimumDistance -* Studio API - Added Studio::EventDescription::isStream - -Fixes: -* Core API - Fixed crash / corruption from DSP Fader/Panner objects. -* Core API - Fixed mod/s3m/xm/mid playback. -* Studio API - Fixed Studio::EventDescription::isOneshot() incorrectly returning true - for an event that has a loop on the logic track. -* Linux - Fixed crash on playback of certain CELT streams. -* Xbox One - Fixed potential hangs with compressed XMA samples. -* Xbox One - Fixed potential silence if XMA sample rate was not one of 24K, 32K, - 44.1K or 48K. - -10/07/13 1.01.07 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Fix "Sample Rate Change" tag from passing through 0 rate when - EOF was hit on certain MP3 files. -* Core API - Fix crash when using FMOD_CREATECOMPRESSEDSAMPLE introduced in - 1.01.06 -* Core API - iOS - Fixed crash when using DSP Echo. -* Core API - iOS - Fixed crash in mixer due to misaligned buffers. - -08/07/13 1.01.06 - Studio API patch release ----------------------------------------------------- - -Features: -* XboxOne - Officially added support for XMA. Please note this requires the July - XDK to avoid a hang. -* Studio API - Added Studio::ParameterInstance::getDescription -* Studio API - Added EventDescription getParameter, getParameterCount and - getParameterByIndex functions - -Fixes: -* Fix Sound userdata being overwritten when FMOD_SOUND_NONBLOCKCALLBACK was - called for a 2nd or more time. -* Core API - Fix rare crash in mixer when releasing a ChannelGroup -* Core API - Fix 3D Panner DSPs and Studio Event 3d volumes not being - considered by virtual voice system. -* Core API - Fixed compressor sounding erratic and unresponsive -* Studio API - Fixed clicks when a Studio::ParameterInstance::setValue call causes - sounds to be cut off - -Notes: -* XboxOne - Now built with July XDK. -* Core API - Changed FMOD_DSP_TYPE_PAN FMOD_DSP_PAN_STEREO_POSITION - parameter to go from -100 to 100. -* Core API - Changed FMOD_DSP_TYPE_COMPRESSOR FMOD_DSP_COMPRESSOR_ATTACK - parameter to go from 0.1 to 500ms. - -28/06/13 1.01.05 - Studio API patch release ----------------------------------------------------- - -Important: -* Core API - Changed .fsb file format - ALL BANKS MUST BE REBUILT -* Studio API - Changed .bank file format - ALL BANKS MUST BE REBUILT - -Features: -* Studio API - Added Studio::System::unloadAll function - -Fixes: -* Core API - PS4 - Improved AT9 decoding performance, fixed issue with - when a sound has loop points not aligned to frame size, - fixed seamless looping playback glitches. -* Core API - Fixed bug that was causing virtual channels to stop prematurely. -* Core API - Fixed fade points leaking when channels go virtual. - -Notes: -* Studio API - Effect data parameter buffers are now 16-byte aligned - (128-byte aligned on PS3) -* Studio API - Added automatic header version verification to - Studio::System::create - -19/06/13 1.01.04 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Fix rare crash with Fader DSP unit. -* Studio API - Fixed some effects causing events to not stop correctly -* Studio API - Fixed multiple concurrent playbacks of one event sometimes - failing with FMOD_ERR_SUBSOUNDS returned from Studio::System::update - -Notes: -* Studio API - Changed Studio::EventInstance::getTimelinePosition to const -* PS4 - Now built with SDK 0.990.020. - -07/06/13 1.01.03 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Optimized mixer when pausing or delaying nodes. Should - provide significant speed increase for Studio runtime - projects. -* Core API - Add FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN. - -Fixes: -* Core API - Fixed silence in certain DSP configurations. -* Core API - Fixed virtual channels not stopping correctly when a parent - channelgroup stops due to an end delay -* Core API - Fixed virtual channels not cleaning up fade points correctly -* Core API - Fixed fade points being ignored when channels go from virtual - to non-virtual -* Studio API - Fixed crash when playing a multisound after unloading and - reloading it's bank. -* Studio API - Implemented Studio::Bank::loadSampleData, Studio::Bank::unloadSampleData and - Studio::Bank::getSampleLoadingState (they previously did nothing) -* Studio API - Fixed crashes and unexpected behavior with sidechains when they - are connected to multiple compressors. -* Studio API - Fixed a linker error when calling handle assignment operators -* Studio API - Fixed a crash in the game when adding a sound to an event - while connected via Live Update - -Notes: -* Core API - Specific parameter description structures like - FMOD_DSP_PARAMETER_DESC_FLOAT no longer inherit from - FMOD_DSP_PARAMETER_DESC; instead, FMOD_DSP_PARAMETER_DESC - includes a union of all the specific structures with - floatdesc, intdesc, booldesc and datadesc members. - The FMOD_DSP_INIT_PARAMDESC_xxxx macros have been updated - to reflect this. -* PS4 - Now built with SDK 0.930.060. - -31/05/13 1.01.02 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed getMixerStrip not returning a valid handle when - retrieving a VCA. - -30/05/13 1.01.01 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Core API - Fix rare crash in DSPFader. -* Studio API - Studio::EventInstance::getParameter and Studio::EventInstance::getCue now use - case-insensitive name comparison - -Notes: -* Studio API - Renamed Studio::EventInstance::getNumCues to Studio::EventInstance::getCueCount - -27/05/13 1.01.00 - Studio API minor release ----------------------------------------------------- - -Important: -* Studio API - Changed .bank file format - ALL BANKS MUST BE REBUILT - -Features: -* PS4 - Added support for mono and stereo AT9 FSBs. -* Core API - Optimized mixer by about 10% -* Core API - Added 'sends' which is a special type of DSPConnection that - does not try and execute the input, the output (return) just - consumes what was generated by the input (the send). See - FMOD_DSPCONNECTION_TYPE_SEND -* Core API - Added DSP::getIdle. Very useful for seeing if a signal is - still running to a DSP unit. -* Core API - Added FadePoint API - now arbitrary volume ramps can be set - anywhere on the timeline. ChannelControl::SetDelay removes - ramp in/ramp out in favour of this. See - ChannelControl::addFadePoint/removeFadePointsgetFadePoints. -* Studio API - Added Studio::EventInstance::setTimelinePosition and - Studio::EventInstance::getTimelinePosition -* Studio API - Disconnect stopped events from the DSP graph to reduce CPU usage -* Core API - removed 'sidechain' API, added FMOD_DSPCONNECTION_TYPE which is now - a parameter to DSP::addInput. FMOD_DSPCONNECTION_TYPE_STANDARD, - FMOD_DSPCONNECTION_TYPE_SIDECHAIN, and FMOD_DSPCONNECTION_TYPE_SEND - are now supported. DSPConnection::getType replaces DSPConnection::isSideChain - -Fixes: -* Core API - Fixed FSB Vorbis not working with encryption key enabled. -* Core API - Fixed virtual voices not respecting ChannelControl::setDelay -* Core API - Fixed parameter index validation when getting/setting DSP parameters. -* Core API - Fixed reverb not always idling when it should. -* Core API - Fixed bug with loop count being incorrectly set to infinite -* Core API - Optimised Echo DSP effect on x86/x64 architectures -* Core API - Fixed ChannelControl::set3DLevel, ChannelControl::set3DSpeakerSpread - and stereo 3d sounds not working -* Core API - Fixed flange effect not updating 'rate' parameter if the rate was - set before adding it to a channel or channelgroup or system object. -* Core API - PS4 - Added support for music, voice, personal device and pad speaker routing. - See System::AttachChannelGroupToPort and fmod_ps4.h -* Core API - PS4 - Added dynamic linking option. -* Studio API - Fixed stop/release behaviour of event instances containing logic markers. -* Studio API - Fixed memory corruption in Studio::System::release -* Studio API - Fixed FMOD_STUDIO_STOP_ALLOWFADEOUT cutting off delay and reverb -* PS4 - Fixed closing the FMOD::System causing platform wide networking to be shutdown - even if the system did not initialize it. - -Notes: -* XboxOne - Now built with April XDK. -* PS4 - Now built with SDK 0.930. - -09/05/13 1.00.03 - Studio API patch release ----------------------------------------------------- - -Features: -* Core API - Added memory callbacks for DSP plugins - -Fixes: -* Core API - Fixed true peak calculation in loudness meter -* Core API - Fix thread related crash in fader DSP and possibly panner DSP. -* Studio API - Fixed automatic angle parameter calculation - -12/04/13 1.00.02 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed snapshots sometimes not working on some properties -* Studio API - Fixed VCAs applying fader level twice to controlled buses - -09/04/13 1.00.01 - Studio API patch release ----------------------------------------------------- - -Important: -* Studio API - Changed .bank file format - ALL BANKS MUST BE REBUILT - -Features: -* PS4 & XboxOne - Reduced CPU usage with optimized SSE and AVX functions. - -Fixes: -* Core API - Fix potential crash when stopping and starting sounds quickly - and a leak for FMOD_CREATECOMPRESSED codecs which made all - sounds go virtual. -* Studio API - Fixed a crash when connecting to the game via Live Update -* Studio API - Fixed serialization of snapshots with automation - -Notes: -* XboxOne - Now built with March XDK. - -25/03/13 1.00.00 - Studio API major release ----------------------------------------------------- - -Important: -* Studio API - Changed .bank file format - ALL BANKS MUST BE REBUILT - -Features: -* Mac - Reduced CPU usage with optimized SSE and AVX functions. -* XboxOne - Added ability to set affinity via FMOD_XboxOne_SetThreadAffinity. -* PS4 - Added ability to set affinity via FMOD_PS4_SetThreadAffinity. - -Fixes: -* Studio API - Fixed Studio::EventDescription::getLength return incorrect values -* Studio API - Fixed playback glitches when sounds are placed end-to-end on the - timeline -* Studio API - Studio::System::lookupEventID and Studio::System::lookupBusID - now ignore case -* Studio API - Fixed playback of Sound Scatterers with non-zero pitch -* Made return DSPs go idle when there is no input from sends -* Fixed sends sometimes going silent if there are multiple sends to a - single return -* Fixed rare hang in mixer when using setDelay with a pitch on the parent - -Notes: -* Studio API - Replaced Studio::System::lookupID with Studio::System::lookupEventID - and Studio::System::lookupBusID. -* FSBank API will now always encode PCM FSBs as PCM16 instead of deciding based - on the source file format. -* PS4 - Now built with SDK 0.920. - -25/02/13 0.02.04 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Studio::System::loadBank now returns FMOD_ERR_PLUGIN_MISSING instead of - FMOD_ERR_FILE_BAD when the bank uses a missing plugin - -15/02/13 0.02.03 - Studio API patch release ----------------------------------------------------- - -Features: -* Studio API - Added Studio::System::lookupID() to look up event IDs from paths - (using any string tables present in currently loaded banks). -* Studio API - Added Studio::Bank::unload() to free loaded bank data. -* Windows - Added optimisations to the 64 bit build. - -Fixes: -* Studio API - Fixed a linker error when calling Studio::EventDescription::getID -* Fixed constant FMOD_ERR_MEMORY in the TTY and hang if FMOD_ADVANCEDSETTINGS is - used with DSPBufferPoolSize being set to 0. -* Changed custom DSPs with no shouldiprocess callback to only be processed when - their inputs are active. -* Fixed high freqency noise coming from send DSP when channel counts mismatches - the return DSP. -* Fixed metering not working via LiveUpdate -* Windows - fixed bug in 5.1 mixing in 32bit builds. - -Notes: -* XboxOne - Now built with January XDK. -* PS4 - Now built with SDK 0.915. - -18/01/13 0.02.02 - Studio API patch release ----------------------------------------------------- - -Important: -* Studio API - Changed .bank file format - ALL BANKS MUST BE REBUILT -* Studio API - Changed function signature for Studio::System::initialize, added - STUDIO_FLAGS field - -Features: -* Studio API - Added FMOD_STUDIO_INIT_LIVEUPDATE flag to make Live Update optional - -Fixes: -* Studio API - Fixed an internal error on instantiating a VCA when not all of - the mixer strips it controls are loaded - -Notes: -* XboxOne - Now built with December XDK. - -11/01/13 0.02.01 - Studio API patch release ----------------------------------------------------- - -Fixes: -* Studio API - Fixed Distance and Angle parameters not being created properly - by live update -* Fixed reverb effect generating denorm floats after silence - -20/12/12 0.02.00 - Studio API minor release ----------------------------------------------------- - -Features: -* Added Xbox360 support. -* Added iOS support. -* Studio API - Added sub-event instantiation via Studio::EventInstance::createSubEvent - -23/11/12 0.01.04 - Patch release ----------------------------------------------------- - -Fixes: -* Fixed a crash when calling Studio::EventInstance::release in a callback fired from - Studio::EventInstance::stop with FMOD_STUDIO_STOP_IMMEDIATE -* Fixed a linker error when using Studio::CueInstance::trigger -* Fixed a bug in volume conflict resolver - -9/11/12 0.01.03 - Patch release ----------------------------------------------------- - -Fixes: -* Fixed a linker error when using Studio::EventInstance::setPaused - -29/10/12 0.01.02 - Patch release ----------------------------------------------------- - -Fixes: -* Fixed distortion when the distance between 3D sound and the listener is greater - than the maximum attenuation distance. -* Fixed memory leaks when playing a persistent event and triggering sounds via - parameter changes. - -16/10/12 0.01.00 - Minor release ----------------------------------------------------- - -Features: -* Implemented side chaining for FMOD Compressor - -Fixes: -* Studio API - Fixed linker error when calling Studio::EventInstance::isVirtual -* Studio API - Added log message for asset not found error - -Notes: -* Second Developer Preview release - -28/09/12 0.00.04 - Patch release ----------------------------------------------------- - -Important: -* Studio API - Changed .bank file format - ALL BANKS MUST BE REBUILT - -Features: -* Add DSP::addSideChain and FMOD_DSP_STATE::sidechainbuffer to allow a DSP unit - to support sidechaining from the output of another DSP. - -Fixes: -* Studio API - Fixed Event::getParameter() and retrieving the name of a parameter - via EventParameter::getInfo() -* Studio API - Added version checking to bank loading, the runtime will - return FMOD_ERR_FORMAT when attempting to load an old bank - -19/09/12 0.00.03 - Patch release ----------------------------------------------------- - -Fixes: -* Fix panning issue introduced in 5.00.02 -* Fix possible crackling noises from mixer optimization in 5.00.02 - -14/09/12 0.00.02 - Patch release ----------------------------------------------------- - -Important: -* Studio API - Changed .bank file format - ALL BANKS MUST BE REBUILT - -Features: -* Optimized mixer to be 20% faster in some cases. -* Studio API - Improved performance of event playback containing mono/stereo tracks - -Fixes: -* Studio API - Fixed panning different in game to tool - -27/08/12 0.00.00 - Initial release ----------------------------------------------------- - -Notes: -* First Developer Preview release -