diff --git a/Zenitha b/Zenitha index 330687e2..1c3d3695 160000 --- a/Zenitha +++ b/Zenitha @@ -1 +1 @@ -Subproject commit 330687e2ce708e8443a7a39dc9ccd8f28522ed0c +Subproject commit 1c3d3695b6065fe362fb26c92b0c0bd1e78d2102 diff --git a/assets/bgmlist.lua b/assets/bgmlist.lua index 66f3559a..df7c8ec2 100644 --- a/assets/bgmlist.lua +++ b/assets/bgmlist.lua @@ -1,240 +1,154 @@ -local bgmList={ +return { ['8-bit happiness']={ author="MrZ", - base={'melody','bass'}, - full={'melody','accompany','bass','drum','sfx'} }, ['8-bit sadness']={ author="MrZ", - base={'melody','bass'}, - full={'melody','decoration','bass','sfx'} }, ['battle']={ author="Aether & MrZ", - base={'melody','bass','drum'}, - full={'melody','decoration1','decoration2','bass','drum','sfx'}, }, ['blank']={ author="MrZ", message="The beginning", - base={'melody','bass'}, - full={'melody','decoration','bass','drum'}, }, ['blox']={ author="MrZ", message="Old song remix", - base={'melody','decoration1','bass'}, - full={'melody','decoration1','decoration2','bass','drum','sfx'}, }, ['distortion']={ author="MrZ", message="Someone said that 'rectification' is too flat", - base={'melody','bass','sfx1'}, - full={'melody','accompany1','accompany2','decoration','bass','sfx1','sfx2'}, }, ['down']={ author="MrZ", - base={'melody','accompany','bass1'}, - full={'melody','accompany','bass1','bass2','drum','sfx'}, }, ['dream']={ author="MrZ", - base={'melody','bass','drum'}, - full={'melody','accompany','decoration','bass','drum','sfx'}, }, ['echo']={ author="MrZ", message="Canon experiment", - base={'melody1','melody2','bass1'}, - full={'melody1','melody2','bass1','bass2','drum','sfx'}, }, ['exploration']={ author="MrZ", message="Let's explore the universe", - base={'melody2','decoration','bass2','sfx'}, - full={'melody1','melody2','accompany','decoration','bass1','bass2','sfx'}, }, ['far']={ author="MrZ", - base={'melody','bass','drum1','drum2'}, - full={'melody','accompany','decoration','bass','drum1','drum2','sfx'}, }, ['hope']={ author="MrZ", - base={'melody1','melody2','bass'}, - full={'melody1','melody2','decoration','bass','drum','sfx'}, }, ['infinite']={ author="MrZ", - base={'melody1','bass','drum'}, - full={'melody1','melody2','decoration','bass','drum'}, }, ['lounge']={ author="Hailey (cudsys) & MrZ", message="Welcome to Space Café", - base={'accompany','bass','drum'}, - full={'melody','accompany','bass','drum','sfx'}, }, ['minoes']={ author="MrZ", message="Old song remix", - base={'melody','bass','drum'}, - full={'melody','accompany','decoration','bass','drum','sfx'}, }, ['moonbeam']={ author="Beethoven & MrZ", - base={'melody','bass'}, - full={'melody','accompany','bass','drum'}, }, ['new era']={ author="MrZ", - base={'melody','bass','drum'}, - full={'melody','accompany','decoration','bass','drum'}, }, ['overzero']={ author="MrZ", message="Blank VMX", - base={'melody','bass','drum','sfx'}, - full={'melody','accompany','decoration','bass','drum','sfx'}, }, ['oxygen']={ author="MrZ", - base={'melody','accompany','bass'}, - full={'melody','accompany','decoration','bass','drum','sfx'}, }, ['peak']={ author="MrZ", message="3D pinball is fun!", - base={'melody','bass','drum'}, - full={'melody','decoration','bass','drum','sfx'}, }, ['pressure']={ author="MrZ", - base={'melody1','decoration','bass'}, - full={'melody1','melody2','accompany','decoration','bass','drum1','drum2'}, }, ['push']={ author="MrZ", - base={'accompany','decoration','bass'}, - full={'melody','accompany','decoration','bass','sfx'}, }, ['race']={ author="MrZ", - base={'melody','accompany1'}, - full={'melody','accompany1','accompany2','decoration','drum'}, }, ['reason']={ author="MrZ", - base={'accompany1','accompany2','bass'}, - full={'melody','accompany1','accompany2','bass','drum'}, }, ['rectification']={ author="MrZ", message="Someone said that 'Distortion' is too noisy", - base={'melody','bass','drum'}, - full={'melody','accompany1','accompany2','decoration','bass','drum'}, }, ['reminiscence']={ author="MrZ", message="Nitrome games is fun!", - base={'melody2','bass','drum'}, - full={'melody1','melody2','melody3','bass','drum'}, }, ['secret7th']={ author="MrZ", message="The 7th secret", - base={'melody1','bass','drum'}, - full={'melody1','melody2','accompany','bass','drum','sfx'}, }, ['secret8th']={ author="MrZ", message="The 8th secret", - base={'melody1','bass','drum1'}, - full={'melody1','melody2','melody3','bass','drum1','drum2'}, }, ['shining terminal']={ author="MrZ", - base={'melody1','bass1','drum2'}, - full={'melody1','melody2','decoration','bass1','bass2','drum1','drum2','sfx'}, }, ['sine']={ author="MrZ", message="~~~~~~", - base={'melody1','accompany1','bass','drum'}, - full={'melody1','melody2','accompany1','accompany2','bass','drum'}, }, ['space']={ author="MrZ", message="Blank VMX", - base={'melody1','melody2','bass'}, - full={'melody1','melody2','accompany','decoration','bass'}, }, ['spring festival']={ author="MrZ", message="Happy New Year!", - base={'melody','accompany','drum1'}, - full={'melody','accompany','bass','drum1','drum2'}, }, ['storm']={ author="MrZ", message="Remake of a milestone", - base={'accompany','bass','drum1','sfx'}, - full={'melody','accompany','bass','drum1','drum2','sfx'}, }, ['sugar fairy']={ author="Tchaikovsky & MrZ", message="A little dark remix", - base={'melody','accompany'}, - full={'melody','accompany','bass','drum'}, }, ['subspace']={ author="MrZ", message="Blank VMX", - base={'melody1','melody2','bass'}, - full={'melody1','melody2','bass','drum1','drum2'}, }, ['supercritical']={ author="MrZ", - base={'melody','bass','drum1'}, - full={'melody','accompany','decoration','bass','drum1','drum2'}, }, ['truth']={ author="MrZ", message="Firefly in a Fairytale Remix", - base={'melody2','bass','drum'}, - full={'melody1','melody2','accompany','bass','drum','sfx1','sfx2'}, }, ['vapor']={ author="MrZ", message="Here is my water!", - base={'melody','bass','sfx'}, - full={'melody','accompany','bass','drum','sfx'}, }, ['venus']={ author="MrZ", - base={'melody','accompany'}, - full={'melody','accompany','bass','drum','sfx'}, }, ['warped']={ author="MrZ", - base={'melody1','bass','drum'}, - full={'melody1','melody2','accompany','bass','drum','sfx'}, }, ['waterfall']={ author="MrZ", - base={'melody1','melody2','bass','drum'}, - full={'melody1','melody2','accompany','bass','drum','sfx'}, }, ['way']={ author="MrZ", - base={'melody1','bass','drum'}, - full={'melody1','melody2','bass','drum'}, }, ['xmas']={ author="MrZ", message="Merry Christmas!", - base={'melody','bass','drum'}, - full={'melody','accompany1','accompany2','bass','drum'}, }, ['empty']={ author="ERM", @@ -243,26 +157,18 @@ local bgmList={ ['none']={ author="MrZ", message="Blank VMX", - base={'melody1','melody2','accompany','drum','sfx'}, - full={'melody1','melody2','melody3','accompany','decoration','bass','drum','sfx'}, }, ['nil']={ author="MrZ", message="Blank VMX", - base={'melody1','melody2','accompany1','decoration1','bass1','sfx'}, - full={'melody1','melody2','accompany1','accompany2','accompany3','decoration1','decoration2','decoration3','bass1','bass2','sfx'}, }, ['null']={ author="MrZ", message="Blank VMX", - base={'melody1','accompany1','accompany3'}, - full={'melody1','melody2','accompany1','accompany2','accompany3','bass'}, }, ['vacuum']={ author="MrZ", message="Blank VMX", - base={'melody1','melody2','accompany','bass'}, - full={'melody1','melody2','melody3','accompany','bass','drum','sfx'}, }, ['blank orchestra']={ author="T0722", @@ -275,8 +181,6 @@ local bgmList={ ['beat5th']={ author="MrZ", message="5/4 experiment", - base={'melody1','accompany1','decoration','bass'}, - full={'melody1','melody2','accompany1','accompany2','decoration','bass','drum'}, }, ['super7th']={ author="MrZ", @@ -284,23 +188,15 @@ local bgmList={ }, ['secret8th remix']={ author="MrZ", - base={'melody1','melody2','accompany','bass1','drum'}, - full={'melody1','melody2','melody3','melody4','accompany','bass1','bass2','drum','sfx'}, }, ['shift']={ author="MrZ", - base={'melody1','melody2','bass','drum'}, - full={'melody1','melody2','melody3','accompany','bass','drum','sfx'}, }, ['here']={ author="MrZ", - base={'melody1','accompany1','accompany2','bass','drum'}, - full={'melody1','melody2','accompany1','accompany2','accompany3','decoration','bass','drum'}, }, ['there']={ author="MrZ", - base={'melody1','melody2','accompany1','accompany2','drum'}, - full={'melody1','melody2','accompany1','accompany2','decoration1','decoration2','decoration3','bass','drum','sfx'}, }, ['1980s']={ author="C₂₉H₂₅N₃O₅", @@ -309,6 +205,9 @@ local bgmList={ ['sakura']={ author="ZUN & C₂₉H₂₅N₃O₅", }, + ['malate']={ + author="ZUN & C₂₉H₂₅N₃O₅", + }, ['race remix']={ author="柒栎流星", }, @@ -318,51 +217,21 @@ local bgmList={ ['propel']={ author="TetraCepra", message="A cool push remix", - base={'melody','accompany2','bass1','bass2'}, - full={'melody','accompany1','accompany2','accompany3','bass1','bass2','bass3','drum'}, }, ['gallery']={ author="MrZ", message="A venus remix", - base={'melody1','accompany2','decoration','bass'}, - full={'melody1','melody2','accompany1','accompany2','decoration','bass','drum'}, }, ['subzero']={ author="TetraCepra", message="A cool blank remix", - base={'melody1','melody2','accompany1','accompany3','bass1','bass3','drum','sfx'}, - full={'melody1','melody2','accompany1','accompany2','accompany3','accompany4','bass1','bass2','bass3','drum','sfx'}, }, ['infinitesimal']={ author="TetraCepra", message="A cool blank remix", - base={'melody1','melody2','accompany1','accompany3','bass1','sfx'}, - full={'melody1','melody2','accompany1','accompany2','accompany3','bass1','bass2','drum','sfx'}, }, ['vanifish']={ author="Trebor & MrZ", message="A cool blank remix", - base={'melody','accompany1','accompany2','bass'}, - full={'melody','accompany1','accompany2','accompany3','bass','drum','sfx'}, }, } - -bgmCount=0 -for name,song in next,bgmList do - bgmCount=bgmCount+1 - if song.base and song.full then - song.add=TABLE.shift(song.full) - TABLE.subtract(song.add,song.base) - else - song[1]=name - end - for info,channels in next,song do - if info=='base' or info=='full' or info=='add' then - for i=1,#channels do - channels[i]=name..'/'..channels[i] - end - end - end -end - -return bgmList diff --git a/assets/fmod20221/cdef.lua b/assets/fmod20221/cdef.lua new file mode 100644 index 00000000..4c01efcd --- /dev/null +++ b/assets/fmod20221/cdef.lua @@ -0,0 +1,2199 @@ +require("ffi").cdef[[ +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; +typedef unsigned int FMOD_DEBUG_FLAGS; +typedef unsigned int FMOD_MEMORY_TYPE; +typedef unsigned int FMOD_INITFLAGS; +typedef unsigned int FMOD_DRIVER_STATE; +typedef unsigned int FMOD_TIMEUNIT; +typedef unsigned int FMOD_SYSTEM_CALLBACK_TYPE; +typedef unsigned int FMOD_MODE; +typedef unsigned int FMOD_CHANNELMASK; +typedef unsigned long long FMOD_PORT_INDEX; +typedef int FMOD_THREAD_PRIORITY; +typedef unsigned int FMOD_THREAD_STACK_SIZE; +typedef long long FMOD_THREAD_AFFINITY; +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_PHASE, + FMOD_OUTPUTTYPE_OHAUDIO, + 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_DSP_CALLBACK_TYPE +{ + FMOD_DSP_CALLBACK_DATAPARAMETERRELEASE, + FMOD_DSP_CALLBACK_MAX, + FMOD_DSP_CALLBACK_FORCEINT = 65536 +} FMOD_DSP_CALLBACK_TYPE; +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; +typedef FMOD_RESULT (*FMOD_DEBUG_CALLBACK) (FMOD_DEBUG_FLAGS flags, const char *file, int line, const char* func, const char* message); +typedef FMOD_RESULT (*FMOD_SYSTEM_CALLBACK) (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void* commanddata2, void *userdata); +typedef FMOD_RESULT (*FMOD_CHANNELCONTROL_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, FMOD_CHANNELCONTROL_TYPE controltype, FMOD_CHANNELCONTROL_CALLBACK_TYPE callbacktype, void *commanddata1, void *commanddata2); +typedef FMOD_RESULT (*FMOD_DSP_CALLBACK) (FMOD_DSP *dsp, FMOD_DSP_CALLBACK_TYPE type, void *data); +typedef FMOD_RESULT (*FMOD_SOUND_NONBLOCK_CALLBACK) (FMOD_SOUND *sound, FMOD_RESULT result); +typedef FMOD_RESULT (*FMOD_SOUND_PCMREAD_CALLBACK) (FMOD_SOUND *sound, void *data, unsigned int datalen); +typedef FMOD_RESULT (*FMOD_SOUND_PCMSETPOS_CALLBACK) (FMOD_SOUND *sound, int subsound, unsigned int position, FMOD_TIMEUNIT postype); +typedef FMOD_RESULT (*FMOD_FILE_OPEN_CALLBACK) (const char *name, unsigned int *filesize, void **handle, void *userdata); +typedef FMOD_RESULT (*FMOD_FILE_CLOSE_CALLBACK) (void *handle, void *userdata); +typedef FMOD_RESULT (*FMOD_FILE_READ_CALLBACK) (void *handle, void *buffer, unsigned int sizebytes, unsigned int *bytesread, void *userdata); +typedef FMOD_RESULT (*FMOD_FILE_SEEK_CALLBACK) (void *handle, unsigned int pos, void *userdata); +typedef FMOD_RESULT (*FMOD_FILE_ASYNCREAD_CALLBACK) (FMOD_ASYNCREADINFO *info, void *userdata); +typedef FMOD_RESULT (*FMOD_FILE_ASYNCCANCEL_CALLBACK)(FMOD_ASYNCREADINFO *info, void *userdata); +typedef void (*FMOD_FILE_ASYNCDONE_FUNC) (FMOD_ASYNCREADINFO *info, FMOD_RESULT result); +typedef void* (*FMOD_MEMORY_ALLOC_CALLBACK) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); +typedef void* (*FMOD_MEMORY_REALLOC_CALLBACK) (void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); +typedef void (*FMOD_MEMORY_FREE_CALLBACK) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr); +typedef float (*FMOD_3D_ROLLOFF_CALLBACK) (FMOD_CHANNELCONTROL *channelcontrol, float distance); +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; + int maxSpatialObjects; +} 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; +typedef struct FMOD_DSP_DATA_PARAMETER_INFO +{ + void *data; + unsigned int length; + int index; +} FMOD_DSP_DATA_PARAMETER_INFO; +typedef struct FMOD_CODEC_STATE FMOD_CODEC_STATE; +typedef struct FMOD_CODEC_WAVEFORMAT FMOD_CODEC_WAVEFORMAT; +typedef int FMOD_CODEC_SEEK_METHOD; +typedef FMOD_RESULT (*FMOD_CODEC_OPEN_CALLBACK) (FMOD_CODEC_STATE *codec_state, FMOD_MODE usermode, FMOD_CREATESOUNDEXINFO *userexinfo); +typedef FMOD_RESULT (*FMOD_CODEC_CLOSE_CALLBACK) (FMOD_CODEC_STATE *codec_state); +typedef FMOD_RESULT (*FMOD_CODEC_READ_CALLBACK) (FMOD_CODEC_STATE *codec_state, void *buffer, unsigned int samples_in, unsigned int *samples_out); +typedef FMOD_RESULT (*FMOD_CODEC_GETLENGTH_CALLBACK) (FMOD_CODEC_STATE *codec_state, unsigned int *length, FMOD_TIMEUNIT lengthtype); +typedef FMOD_RESULT (*FMOD_CODEC_SETPOSITION_CALLBACK) (FMOD_CODEC_STATE *codec_state, int subsound, unsigned int position, FMOD_TIMEUNIT postype); +typedef FMOD_RESULT (*FMOD_CODEC_GETPOSITION_CALLBACK) (FMOD_CODEC_STATE *codec_state, unsigned int *position, FMOD_TIMEUNIT postype); +typedef FMOD_RESULT (*FMOD_CODEC_SOUNDCREATE_CALLBACK) (FMOD_CODEC_STATE *codec_state, int subsound, FMOD_SOUND *sound); +typedef FMOD_RESULT (*FMOD_CODEC_GETWAVEFORMAT_CALLBACK)(FMOD_CODEC_STATE *codec_state, int index, FMOD_CODEC_WAVEFORMAT *waveformat); +typedef FMOD_RESULT (*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 * (*FMOD_CODEC_ALLOC_FUNC) (unsigned int size, unsigned int align, const char *file, int line); +typedef void (*FMOD_CODEC_FREE_FUNC) (void *ptr, const char *file, int line); +typedef void (*FMOD_CODEC_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *string, ...); +typedef FMOD_RESULT (*FMOD_CODEC_FILE_READ_FUNC) (FMOD_CODEC_STATE *codec_state, void *buffer, unsigned int sizebytes, unsigned int *bytesread); +typedef FMOD_RESULT (*FMOD_CODEC_FILE_SEEK_FUNC) (FMOD_CODEC_STATE *codec_state, unsigned int pos, FMOD_CODEC_SEEK_METHOD method); +typedef FMOD_RESULT (*FMOD_CODEC_FILE_TELL_FUNC) (FMOD_CODEC_STATE *codec_state, unsigned int *pos); +typedef FMOD_RESULT (*FMOD_CODEC_FILE_SIZE_FUNC) (FMOD_CODEC_STATE *codec_state, unsigned int *size); +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; +}; +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 +} FMOD_DSP_TYPE; +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; +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[66]; + 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; +typedef struct FMOD_DSP_STATE FMOD_DSP_STATE; +typedef struct FMOD_DSP_BUFFER_ARRAY FMOD_DSP_BUFFER_ARRAY; +typedef struct FMOD_COMPLEX FMOD_COMPLEX; +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; +typedef FMOD_RESULT (*FMOD_DSP_CREATE_CALLBACK) (FMOD_DSP_STATE *dsp_state); +typedef FMOD_RESULT (*FMOD_DSP_RELEASE_CALLBACK) (FMOD_DSP_STATE *dsp_state); +typedef FMOD_RESULT (*FMOD_DSP_RESET_CALLBACK) (FMOD_DSP_STATE *dsp_state); +typedef FMOD_RESULT (*FMOD_DSP_READ_CALLBACK) (FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels); +typedef FMOD_RESULT (*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 (*FMOD_DSP_SETPOSITION_CALLBACK) (FMOD_DSP_STATE *dsp_state, unsigned int pos); +typedef FMOD_RESULT (*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 (*FMOD_DSP_SETPARAM_FLOAT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float value); +typedef FMOD_RESULT (*FMOD_DSP_SETPARAM_INT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, int value); +typedef FMOD_RESULT (*FMOD_DSP_SETPARAM_BOOL_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, FMOD_BOOL value); +typedef FMOD_RESULT (*FMOD_DSP_SETPARAM_DATA_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, void *data, unsigned int length); +typedef FMOD_RESULT (*FMOD_DSP_GETPARAM_FLOAT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float *value, char *valuestr); +typedef FMOD_RESULT (*FMOD_DSP_GETPARAM_INT_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, int *value, char *valuestr); +typedef FMOD_RESULT (*FMOD_DSP_GETPARAM_BOOL_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, FMOD_BOOL *value, char *valuestr); +typedef FMOD_RESULT (*FMOD_DSP_GETPARAM_DATA_CALLBACK) (FMOD_DSP_STATE *dsp_state, int index, void **data, unsigned int *length, char *valuestr); +typedef FMOD_RESULT (*FMOD_DSP_SYSTEM_REGISTER_CALLBACK) (FMOD_DSP_STATE *dsp_state); +typedef FMOD_RESULT (*FMOD_DSP_SYSTEM_DEREGISTER_CALLBACK) (FMOD_DSP_STATE *dsp_state); +typedef FMOD_RESULT (*FMOD_DSP_SYSTEM_MIX_CALLBACK) (FMOD_DSP_STATE *dsp_state, int stage); +typedef void * (*FMOD_DSP_ALLOC_FUNC) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); +typedef void * (*FMOD_DSP_REALLOC_FUNC) (void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); +typedef void (*FMOD_DSP_FREE_FUNC) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr); +typedef void (*FMOD_DSP_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *str, ...); +typedef FMOD_RESULT (*FMOD_DSP_GETSAMPLERATE_FUNC) (FMOD_DSP_STATE *dsp_state, int *rate); +typedef FMOD_RESULT (*FMOD_DSP_GETBLOCKSIZE_FUNC) (FMOD_DSP_STATE *dsp_state, unsigned int *blocksize); +typedef FMOD_RESULT (*FMOD_DSP_GETSPEAKERMODE_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE *speakermode_mixer, FMOD_SPEAKERMODE *speakermode_output); +typedef FMOD_RESULT (*FMOD_DSP_GETCLOCK_FUNC) (FMOD_DSP_STATE *dsp_state, unsigned long long *clock, unsigned int *offset, unsigned int *length); +typedef FMOD_RESULT (*FMOD_DSP_GETLISTENERATTRIBUTES_FUNC) (FMOD_DSP_STATE *dsp_state, int *numlisteners, FMOD_3D_ATTRIBUTES *attributes); +typedef FMOD_RESULT (*FMOD_DSP_GETUSERDATA_FUNC) (FMOD_DSP_STATE *dsp_state, void **userdata); +typedef FMOD_RESULT (*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 (*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 (*FMOD_DSP_PAN_SUMMONOMATRIX_FUNC) (FMOD_DSP_STATE *dsp_state, FMOD_SPEAKERMODE sourceSpeakerMode, float lowFrequencyGain, float overallGain, float *matrix); +typedef FMOD_RESULT (*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 (*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 (*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 (*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 (*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); +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[8]; + float weight[8]; + 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; +typedef struct FMOD_OUTPUT_STATE FMOD_OUTPUT_STATE; +typedef struct FMOD_OUTPUT_OBJECT3DINFO FMOD_OUTPUT_OBJECT3DINFO; +typedef unsigned int FMOD_OUTPUT_METHOD; +typedef FMOD_RESULT (*FMOD_OUTPUT_GETNUMDRIVERS_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int *numdrivers); +typedef FMOD_RESULT (*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 (*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 (*FMOD_OUTPUT_START_CALLBACK) (FMOD_OUTPUT_STATE *output_state); +typedef FMOD_RESULT (*FMOD_OUTPUT_STOP_CALLBACK) (FMOD_OUTPUT_STATE *output_state); +typedef FMOD_RESULT (*FMOD_OUTPUT_CLOSE_CALLBACK) (FMOD_OUTPUT_STATE *output_state); +typedef FMOD_RESULT (*FMOD_OUTPUT_UPDATE_CALLBACK) (FMOD_OUTPUT_STATE *output_state); +typedef FMOD_RESULT (*FMOD_OUTPUT_GETHANDLE_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void **handle); +typedef FMOD_RESULT (*FMOD_OUTPUT_MIXER_CALLBACK) (FMOD_OUTPUT_STATE *output_state); +typedef FMOD_RESULT (*FMOD_OUTPUT_OBJECT3DGETINFO_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int *maxhardwareobjects); +typedef FMOD_RESULT (*FMOD_OUTPUT_OBJECT3DALLOC_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void **object3d); +typedef FMOD_RESULT (*FMOD_OUTPUT_OBJECT3DFREE_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void *object3d); +typedef FMOD_RESULT (*FMOD_OUTPUT_OBJECT3DUPDATE_CALLBACK) (FMOD_OUTPUT_STATE *output_state, void *object3d, const FMOD_OUTPUT_OBJECT3DINFO *info); +typedef FMOD_RESULT (*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 (*FMOD_OUTPUT_CLOSEPORT_CALLBACK) (FMOD_OUTPUT_STATE *output_state, int portId); +typedef FMOD_RESULT (*FMOD_OUTPUT_DEVICELISTCHANGED_CALLBACK)(FMOD_OUTPUT_STATE *output_state); +typedef FMOD_RESULT (*FMOD_OUTPUT_READFROMMIXER_FUNC) (FMOD_OUTPUT_STATE *output_state, void *buffer, unsigned int length); +typedef FMOD_RESULT (*FMOD_OUTPUT_COPYPORT_FUNC) (FMOD_OUTPUT_STATE *output_state, int portId, void *buffer, unsigned int length); +typedef FMOD_RESULT (*FMOD_OUTPUT_REQUESTRESET_FUNC) (FMOD_OUTPUT_STATE *output_state); +typedef void * (*FMOD_OUTPUT_ALLOC_FUNC) (unsigned int size, unsigned int align, const char *file, int line); +typedef void (*FMOD_OUTPUT_FREE_FUNC) (void *ptr, const char *file, int line); +typedef void (*FMOD_OUTPUT_LOG_FUNC) (FMOD_DEBUG_FLAGS level, const char *file, int line, const char *function, const char *string, ...); +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; +}; +FMOD_RESULT 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 FMOD_Memory_GetStats (int *currentalloced, int *maxalloced, FMOD_BOOL blocking); +FMOD_RESULT FMOD_Debug_Initialize (FMOD_DEBUG_FLAGS flags, FMOD_DEBUG_MODE mode, FMOD_DEBUG_CALLBACK callback, const char *filename); +FMOD_RESULT FMOD_File_SetDiskBusy (int busy); +FMOD_RESULT FMOD_File_GetDiskBusy (int *busy); +FMOD_RESULT FMOD_Thread_SetAttributes (FMOD_THREAD_TYPE type, FMOD_THREAD_AFFINITY affinity, FMOD_THREAD_PRIORITY priority, FMOD_THREAD_STACK_SIZE stacksize); +FMOD_RESULT FMOD_System_Create (FMOD_SYSTEM **system, unsigned int headerversion); +FMOD_RESULT FMOD_System_Release (FMOD_SYSTEM *system); +FMOD_RESULT FMOD_System_SetOutput (FMOD_SYSTEM *system, FMOD_OUTPUTTYPE output); +FMOD_RESULT FMOD_System_GetOutput (FMOD_SYSTEM *system, FMOD_OUTPUTTYPE *output); +FMOD_RESULT FMOD_System_GetNumDrivers (FMOD_SYSTEM *system, int *numdrivers); +FMOD_RESULT FMOD_System_GetDriverInfo (FMOD_SYSTEM *system, int id, char *name, int namelen, FMOD_GUID *guid, int *systemrate, FMOD_SPEAKERMODE *speakermode, int *speakermodechannels); +FMOD_RESULT FMOD_System_SetDriver (FMOD_SYSTEM *system, int driver); +FMOD_RESULT FMOD_System_GetDriver (FMOD_SYSTEM *system, int *driver); +FMOD_RESULT FMOD_System_SetSoftwareChannels (FMOD_SYSTEM *system, int numsoftwarechannels); +FMOD_RESULT FMOD_System_GetSoftwareChannels (FMOD_SYSTEM *system, int *numsoftwarechannels); +FMOD_RESULT FMOD_System_SetSoftwareFormat (FMOD_SYSTEM *system, int samplerate, FMOD_SPEAKERMODE speakermode, int numrawspeakers); +FMOD_RESULT FMOD_System_GetSoftwareFormat (FMOD_SYSTEM *system, int *samplerate, FMOD_SPEAKERMODE *speakermode, int *numrawspeakers); +FMOD_RESULT FMOD_System_SetDSPBufferSize (FMOD_SYSTEM *system, unsigned int bufferlength, int numbuffers); +FMOD_RESULT FMOD_System_GetDSPBufferSize (FMOD_SYSTEM *system, unsigned int *bufferlength, int *numbuffers); +FMOD_RESULT 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 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 FMOD_System_SetAdvancedSettings (FMOD_SYSTEM *system, FMOD_ADVANCEDSETTINGS *settings); +FMOD_RESULT FMOD_System_GetAdvancedSettings (FMOD_SYSTEM *system, FMOD_ADVANCEDSETTINGS *settings); +FMOD_RESULT FMOD_System_SetCallback (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK callback, FMOD_SYSTEM_CALLBACK_TYPE callbackmask); +FMOD_RESULT FMOD_System_SetPluginPath (FMOD_SYSTEM *system, const char *path); +FMOD_RESULT FMOD_System_LoadPlugin (FMOD_SYSTEM *system, const char *filename, unsigned int *handle, unsigned int priority); +FMOD_RESULT FMOD_System_UnloadPlugin (FMOD_SYSTEM *system, unsigned int handle); +FMOD_RESULT FMOD_System_GetNumNestedPlugins (FMOD_SYSTEM *system, unsigned int handle, int *count); +FMOD_RESULT FMOD_System_GetNestedPlugin (FMOD_SYSTEM *system, unsigned int handle, int index, unsigned int *nestedhandle); +FMOD_RESULT FMOD_System_GetNumPlugins (FMOD_SYSTEM *system, FMOD_PLUGINTYPE plugintype, int *numplugins); +FMOD_RESULT FMOD_System_GetPluginHandle (FMOD_SYSTEM *system, FMOD_PLUGINTYPE plugintype, int index, unsigned int *handle); +FMOD_RESULT FMOD_System_GetPluginInfo (FMOD_SYSTEM *system, unsigned int handle, FMOD_PLUGINTYPE *plugintype, char *name, int namelen, unsigned int *version); +FMOD_RESULT FMOD_System_SetOutputByPlugin (FMOD_SYSTEM *system, unsigned int handle); +FMOD_RESULT FMOD_System_GetOutputByPlugin (FMOD_SYSTEM *system, unsigned int *handle); +FMOD_RESULT FMOD_System_CreateDSPByPlugin (FMOD_SYSTEM *system, unsigned int handle, FMOD_DSP **dsp); +FMOD_RESULT FMOD_System_GetDSPInfoByPlugin (FMOD_SYSTEM *system, unsigned int handle, const FMOD_DSP_DESCRIPTION **description); +FMOD_RESULT FMOD_System_RegisterCodec (FMOD_SYSTEM *system, FMOD_CODEC_DESCRIPTION *description, unsigned int *handle, unsigned int priority); +FMOD_RESULT FMOD_System_RegisterDSP (FMOD_SYSTEM *system, const FMOD_DSP_DESCRIPTION *description, unsigned int *handle); +FMOD_RESULT FMOD_System_RegisterOutput (FMOD_SYSTEM *system, const FMOD_OUTPUT_DESCRIPTION *description, unsigned int *handle); +FMOD_RESULT FMOD_System_Init (FMOD_SYSTEM *system, int maxchannels, FMOD_INITFLAGS flags, void *extradriverdata); +FMOD_RESULT FMOD_System_Close (FMOD_SYSTEM *system); +FMOD_RESULT FMOD_System_Update (FMOD_SYSTEM *system); +FMOD_RESULT FMOD_System_SetSpeakerPosition (FMOD_SYSTEM *system, FMOD_SPEAKER speaker, float x, float y, FMOD_BOOL active); +FMOD_RESULT FMOD_System_GetSpeakerPosition (FMOD_SYSTEM *system, FMOD_SPEAKER speaker, float *x, float *y, FMOD_BOOL *active); +FMOD_RESULT FMOD_System_SetStreamBufferSize (FMOD_SYSTEM *system, unsigned int filebuffersize, FMOD_TIMEUNIT filebuffersizetype); +FMOD_RESULT FMOD_System_GetStreamBufferSize (FMOD_SYSTEM *system, unsigned int *filebuffersize, FMOD_TIMEUNIT *filebuffersizetype); +FMOD_RESULT FMOD_System_Set3DSettings (FMOD_SYSTEM *system, float dopplerscale, float distancefactor, float rolloffscale); +FMOD_RESULT FMOD_System_Get3DSettings (FMOD_SYSTEM *system, float *dopplerscale, float *distancefactor, float *rolloffscale); +FMOD_RESULT FMOD_System_Set3DNumListeners (FMOD_SYSTEM *system, int numlisteners); +FMOD_RESULT FMOD_System_Get3DNumListeners (FMOD_SYSTEM *system, int *numlisteners); +FMOD_RESULT 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 FMOD_System_Get3DListenerAttributes (FMOD_SYSTEM *system, int listener, FMOD_VECTOR *pos, FMOD_VECTOR *vel, FMOD_VECTOR *forward, FMOD_VECTOR *up); +FMOD_RESULT FMOD_System_Set3DRolloffCallback (FMOD_SYSTEM *system, FMOD_3D_ROLLOFF_CALLBACK callback); +FMOD_RESULT FMOD_System_MixerSuspend (FMOD_SYSTEM *system); +FMOD_RESULT FMOD_System_MixerResume (FMOD_SYSTEM *system); +FMOD_RESULT FMOD_System_GetDefaultMixMatrix (FMOD_SYSTEM *system, FMOD_SPEAKERMODE sourcespeakermode, FMOD_SPEAKERMODE targetspeakermode, float *matrix, int matrixhop); +FMOD_RESULT FMOD_System_GetSpeakerModeChannels (FMOD_SYSTEM *system, FMOD_SPEAKERMODE mode, int *channels); +FMOD_RESULT FMOD_System_GetVersion (FMOD_SYSTEM *system, unsigned int *version); +FMOD_RESULT FMOD_System_GetOutputHandle (FMOD_SYSTEM *system, void **handle); +FMOD_RESULT FMOD_System_GetChannelsPlaying (FMOD_SYSTEM *system, int *channels, int *realchannels); +FMOD_RESULT FMOD_System_GetCPUUsage (FMOD_SYSTEM *system, FMOD_CPU_USAGE *usage); +FMOD_RESULT FMOD_System_GetFileUsage (FMOD_SYSTEM *system, long long *sampleBytesRead, long long *streamBytesRead, long long *otherBytesRead); +FMOD_RESULT FMOD_System_CreateSound (FMOD_SYSTEM *system, const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, FMOD_SOUND **sound); +FMOD_RESULT FMOD_System_CreateStream (FMOD_SYSTEM *system, const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, FMOD_SOUND **sound); +FMOD_RESULT FMOD_System_CreateDSP (FMOD_SYSTEM *system, const FMOD_DSP_DESCRIPTION *description, FMOD_DSP **dsp); +FMOD_RESULT FMOD_System_CreateDSPByType (FMOD_SYSTEM *system, FMOD_DSP_TYPE type, FMOD_DSP **dsp); +FMOD_RESULT FMOD_System_CreateChannelGroup (FMOD_SYSTEM *system, const char *name, FMOD_CHANNELGROUP **channelgroup); +FMOD_RESULT FMOD_System_CreateSoundGroup (FMOD_SYSTEM *system, const char *name, FMOD_SOUNDGROUP **soundgroup); +FMOD_RESULT FMOD_System_CreateReverb3D (FMOD_SYSTEM *system, FMOD_REVERB3D **reverb); +FMOD_RESULT FMOD_System_PlaySound (FMOD_SYSTEM *system, FMOD_SOUND *sound, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused, FMOD_CHANNEL **channel); +FMOD_RESULT FMOD_System_PlayDSP (FMOD_SYSTEM *system, FMOD_DSP *dsp, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused, FMOD_CHANNEL **channel); +FMOD_RESULT FMOD_System_GetChannel (FMOD_SYSTEM *system, int channelid, FMOD_CHANNEL **channel); +FMOD_RESULT FMOD_System_GetDSPInfoByType (FMOD_SYSTEM *system, FMOD_DSP_TYPE type, const FMOD_DSP_DESCRIPTION **description); +FMOD_RESULT FMOD_System_GetMasterChannelGroup (FMOD_SYSTEM *system, FMOD_CHANNELGROUP **channelgroup); +FMOD_RESULT FMOD_System_GetMasterSoundGroup (FMOD_SYSTEM *system, FMOD_SOUNDGROUP **soundgroup); +FMOD_RESULT FMOD_System_AttachChannelGroupToPort (FMOD_SYSTEM *system, FMOD_PORT_TYPE portType, FMOD_PORT_INDEX portIndex, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL passThru); +FMOD_RESULT FMOD_System_DetachChannelGroupFromPort(FMOD_SYSTEM *system, FMOD_CHANNELGROUP *channelgroup); +FMOD_RESULT FMOD_System_SetReverbProperties (FMOD_SYSTEM *system, int instance, const FMOD_REVERB_PROPERTIES *prop); +FMOD_RESULT FMOD_System_GetReverbProperties (FMOD_SYSTEM *system, int instance, FMOD_REVERB_PROPERTIES *prop); +FMOD_RESULT FMOD_System_LockDSP (FMOD_SYSTEM *system); +FMOD_RESULT FMOD_System_UnlockDSP (FMOD_SYSTEM *system); +FMOD_RESULT FMOD_System_GetRecordNumDrivers (FMOD_SYSTEM *system, int *numdrivers, int *numconnected); +FMOD_RESULT 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 FMOD_System_GetRecordPosition (FMOD_SYSTEM *system, int id, unsigned int *position); +FMOD_RESULT FMOD_System_RecordStart (FMOD_SYSTEM *system, int id, FMOD_SOUND *sound, FMOD_BOOL loop); +FMOD_RESULT FMOD_System_RecordStop (FMOD_SYSTEM *system, int id); +FMOD_RESULT FMOD_System_IsRecording (FMOD_SYSTEM *system, int id, FMOD_BOOL *recording); +FMOD_RESULT FMOD_System_CreateGeometry (FMOD_SYSTEM *system, int maxpolygons, int maxvertices, FMOD_GEOMETRY **geometry); +FMOD_RESULT FMOD_System_SetGeometrySettings (FMOD_SYSTEM *system, float maxworldsize); +FMOD_RESULT FMOD_System_GetGeometrySettings (FMOD_SYSTEM *system, float *maxworldsize); +FMOD_RESULT FMOD_System_LoadGeometry (FMOD_SYSTEM *system, const void *data, int datasize, FMOD_GEOMETRY **geometry); +FMOD_RESULT FMOD_System_GetGeometryOcclusion (FMOD_SYSTEM *system, const FMOD_VECTOR *listener, const FMOD_VECTOR *source, float *direct, float *reverb); +FMOD_RESULT FMOD_System_SetNetworkProxy (FMOD_SYSTEM *system, const char *proxy); +FMOD_RESULT FMOD_System_GetNetworkProxy (FMOD_SYSTEM *system, char *proxy, int proxylen); +FMOD_RESULT FMOD_System_SetNetworkTimeout (FMOD_SYSTEM *system, int timeout); +FMOD_RESULT FMOD_System_GetNetworkTimeout (FMOD_SYSTEM *system, int *timeout); +FMOD_RESULT FMOD_System_SetUserData (FMOD_SYSTEM *system, void *userdata); +FMOD_RESULT FMOD_System_GetUserData (FMOD_SYSTEM *system, void **userdata); +FMOD_RESULT FMOD_Sound_Release (FMOD_SOUND *sound); +FMOD_RESULT FMOD_Sound_GetSystemObject (FMOD_SOUND *sound, FMOD_SYSTEM **system); +FMOD_RESULT FMOD_Sound_Lock (FMOD_SOUND *sound, unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); +FMOD_RESULT FMOD_Sound_Unlock (FMOD_SOUND *sound, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); +FMOD_RESULT FMOD_Sound_SetDefaults (FMOD_SOUND *sound, float frequency, int priority); +FMOD_RESULT FMOD_Sound_GetDefaults (FMOD_SOUND *sound, float *frequency, int *priority); +FMOD_RESULT FMOD_Sound_Set3DMinMaxDistance (FMOD_SOUND *sound, float min, float max); +FMOD_RESULT FMOD_Sound_Get3DMinMaxDistance (FMOD_SOUND *sound, float *min, float *max); +FMOD_RESULT FMOD_Sound_Set3DConeSettings (FMOD_SOUND *sound, float insideconeangle, float outsideconeangle, float outsidevolume); +FMOD_RESULT FMOD_Sound_Get3DConeSettings (FMOD_SOUND *sound, float *insideconeangle, float *outsideconeangle, float *outsidevolume); +FMOD_RESULT FMOD_Sound_Set3DCustomRolloff (FMOD_SOUND *sound, FMOD_VECTOR *points, int numpoints); +FMOD_RESULT FMOD_Sound_Get3DCustomRolloff (FMOD_SOUND *sound, FMOD_VECTOR **points, int *numpoints); +FMOD_RESULT FMOD_Sound_GetSubSound (FMOD_SOUND *sound, int index, FMOD_SOUND **subsound); +FMOD_RESULT FMOD_Sound_GetSubSoundParent (FMOD_SOUND *sound, FMOD_SOUND **parentsound); +FMOD_RESULT FMOD_Sound_GetName (FMOD_SOUND *sound, char *name, int namelen); +FMOD_RESULT FMOD_Sound_GetLength (FMOD_SOUND *sound, unsigned int *length, FMOD_TIMEUNIT lengthtype); +FMOD_RESULT FMOD_Sound_GetFormat (FMOD_SOUND *sound, FMOD_SOUND_TYPE *type, FMOD_SOUND_FORMAT *format, int *channels, int *bits); +FMOD_RESULT FMOD_Sound_GetNumSubSounds (FMOD_SOUND *sound, int *numsubsounds); +FMOD_RESULT FMOD_Sound_GetNumTags (FMOD_SOUND *sound, int *numtags, int *numtagsupdated); +FMOD_RESULT FMOD_Sound_GetTag (FMOD_SOUND *sound, const char *name, int index, FMOD_TAG *tag); +FMOD_RESULT FMOD_Sound_GetOpenState (FMOD_SOUND *sound, FMOD_OPENSTATE *openstate, unsigned int *percentbuffered, FMOD_BOOL *starving, FMOD_BOOL *diskbusy); +FMOD_RESULT FMOD_Sound_ReadData (FMOD_SOUND *sound, void *buffer, unsigned int length, unsigned int *read); +FMOD_RESULT FMOD_Sound_SeekData (FMOD_SOUND *sound, unsigned int pcm); +FMOD_RESULT FMOD_Sound_SetSoundGroup (FMOD_SOUND *sound, FMOD_SOUNDGROUP *soundgroup); +FMOD_RESULT FMOD_Sound_GetSoundGroup (FMOD_SOUND *sound, FMOD_SOUNDGROUP **soundgroup); +FMOD_RESULT FMOD_Sound_GetNumSyncPoints (FMOD_SOUND *sound, int *numsyncpoints); +FMOD_RESULT FMOD_Sound_GetSyncPoint (FMOD_SOUND *sound, int index, FMOD_SYNCPOINT **point); +FMOD_RESULT FMOD_Sound_GetSyncPointInfo (FMOD_SOUND *sound, FMOD_SYNCPOINT *point, char *name, int namelen, unsigned int *offset, FMOD_TIMEUNIT offsettype); +FMOD_RESULT FMOD_Sound_AddSyncPoint (FMOD_SOUND *sound, unsigned int offset, FMOD_TIMEUNIT offsettype, const char *name, FMOD_SYNCPOINT **point); +FMOD_RESULT FMOD_Sound_DeleteSyncPoint (FMOD_SOUND *sound, FMOD_SYNCPOINT *point); +FMOD_RESULT FMOD_Sound_SetMode (FMOD_SOUND *sound, FMOD_MODE mode); +FMOD_RESULT FMOD_Sound_GetMode (FMOD_SOUND *sound, FMOD_MODE *mode); +FMOD_RESULT FMOD_Sound_SetLoopCount (FMOD_SOUND *sound, int loopcount); +FMOD_RESULT FMOD_Sound_GetLoopCount (FMOD_SOUND *sound, int *loopcount); +FMOD_RESULT FMOD_Sound_SetLoopPoints (FMOD_SOUND *sound, unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); +FMOD_RESULT FMOD_Sound_GetLoopPoints (FMOD_SOUND *sound, unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); +FMOD_RESULT FMOD_Sound_GetMusicNumChannels (FMOD_SOUND *sound, int *numchannels); +FMOD_RESULT FMOD_Sound_SetMusicChannelVolume (FMOD_SOUND *sound, int channel, float volume); +FMOD_RESULT FMOD_Sound_GetMusicChannelVolume (FMOD_SOUND *sound, int channel, float *volume); +FMOD_RESULT FMOD_Sound_SetMusicSpeed (FMOD_SOUND *sound, float speed); +FMOD_RESULT FMOD_Sound_GetMusicSpeed (FMOD_SOUND *sound, float *speed); +FMOD_RESULT FMOD_Sound_SetUserData (FMOD_SOUND *sound, void *userdata); +FMOD_RESULT FMOD_Sound_GetUserData (FMOD_SOUND *sound, void **userdata); +FMOD_RESULT FMOD_Channel_GetSystemObject (FMOD_CHANNEL *channel, FMOD_SYSTEM **system); +FMOD_RESULT FMOD_Channel_Stop (FMOD_CHANNEL *channel); +FMOD_RESULT FMOD_Channel_SetPaused (FMOD_CHANNEL *channel, FMOD_BOOL paused); +FMOD_RESULT FMOD_Channel_GetPaused (FMOD_CHANNEL *channel, FMOD_BOOL *paused); +FMOD_RESULT FMOD_Channel_SetVolume (FMOD_CHANNEL *channel, float volume); +FMOD_RESULT FMOD_Channel_GetVolume (FMOD_CHANNEL *channel, float *volume); +FMOD_RESULT FMOD_Channel_SetVolumeRamp (FMOD_CHANNEL *channel, FMOD_BOOL ramp); +FMOD_RESULT FMOD_Channel_GetVolumeRamp (FMOD_CHANNEL *channel, FMOD_BOOL *ramp); +FMOD_RESULT FMOD_Channel_GetAudibility (FMOD_CHANNEL *channel, float *audibility); +FMOD_RESULT FMOD_Channel_SetPitch (FMOD_CHANNEL *channel, float pitch); +FMOD_RESULT FMOD_Channel_GetPitch (FMOD_CHANNEL *channel, float *pitch); +FMOD_RESULT FMOD_Channel_SetMute (FMOD_CHANNEL *channel, FMOD_BOOL mute); +FMOD_RESULT FMOD_Channel_GetMute (FMOD_CHANNEL *channel, FMOD_BOOL *mute); +FMOD_RESULT FMOD_Channel_SetReverbProperties (FMOD_CHANNEL *channel, int instance, float wet); +FMOD_RESULT FMOD_Channel_GetReverbProperties (FMOD_CHANNEL *channel, int instance, float *wet); +FMOD_RESULT FMOD_Channel_SetLowPassGain (FMOD_CHANNEL *channel, float gain); +FMOD_RESULT FMOD_Channel_GetLowPassGain (FMOD_CHANNEL *channel, float *gain); +FMOD_RESULT FMOD_Channel_SetMode (FMOD_CHANNEL *channel, FMOD_MODE mode); +FMOD_RESULT FMOD_Channel_GetMode (FMOD_CHANNEL *channel, FMOD_MODE *mode); +FMOD_RESULT FMOD_Channel_SetCallback (FMOD_CHANNEL *channel, FMOD_CHANNELCONTROL_CALLBACK callback); +FMOD_RESULT FMOD_Channel_IsPlaying (FMOD_CHANNEL *channel, FMOD_BOOL *isplaying); +FMOD_RESULT FMOD_Channel_SetPan (FMOD_CHANNEL *channel, float pan); +FMOD_RESULT FMOD_Channel_SetMixLevelsOutput (FMOD_CHANNEL *channel, float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); +FMOD_RESULT FMOD_Channel_SetMixLevelsInput (FMOD_CHANNEL *channel, float *levels, int numlevels); +FMOD_RESULT FMOD_Channel_SetMixMatrix (FMOD_CHANNEL *channel, float *matrix, int outchannels, int inchannels, int inchannel_hop); +FMOD_RESULT FMOD_Channel_GetMixMatrix (FMOD_CHANNEL *channel, float *matrix, int *outchannels, int *inchannels, int inchannel_hop); +FMOD_RESULT FMOD_Channel_GetDSPClock (FMOD_CHANNEL *channel, unsigned long long *dspclock, unsigned long long *parentclock); +FMOD_RESULT FMOD_Channel_SetDelay (FMOD_CHANNEL *channel, unsigned long long dspclock_start, unsigned long long dspclock_end, FMOD_BOOL stopchannels); +FMOD_RESULT FMOD_Channel_GetDelay (FMOD_CHANNEL *channel, unsigned long long *dspclock_start, unsigned long long *dspclock_end, FMOD_BOOL *stopchannels); +FMOD_RESULT FMOD_Channel_AddFadePoint (FMOD_CHANNEL *channel, unsigned long long dspclock, float volume); +FMOD_RESULT FMOD_Channel_SetFadePointRamp (FMOD_CHANNEL *channel, unsigned long long dspclock, float volume); +FMOD_RESULT FMOD_Channel_RemoveFadePoints (FMOD_CHANNEL *channel, unsigned long long dspclock_start, unsigned long long dspclock_end); +FMOD_RESULT FMOD_Channel_GetFadePoints (FMOD_CHANNEL *channel, unsigned int *numpoints, unsigned long long *point_dspclock, float *point_volume); +FMOD_RESULT FMOD_Channel_GetDSP (FMOD_CHANNEL *channel, int index, FMOD_DSP **dsp); +FMOD_RESULT FMOD_Channel_AddDSP (FMOD_CHANNEL *channel, int index, FMOD_DSP *dsp); +FMOD_RESULT FMOD_Channel_RemoveDSP (FMOD_CHANNEL *channel, FMOD_DSP *dsp); +FMOD_RESULT FMOD_Channel_GetNumDSPs (FMOD_CHANNEL *channel, int *numdsps); +FMOD_RESULT FMOD_Channel_SetDSPIndex (FMOD_CHANNEL *channel, FMOD_DSP *dsp, int index); +FMOD_RESULT FMOD_Channel_GetDSPIndex (FMOD_CHANNEL *channel, FMOD_DSP *dsp, int *index); +FMOD_RESULT FMOD_Channel_Set3DAttributes (FMOD_CHANNEL *channel, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); +FMOD_RESULT FMOD_Channel_Get3DAttributes (FMOD_CHANNEL *channel, FMOD_VECTOR *pos, FMOD_VECTOR *vel); +FMOD_RESULT FMOD_Channel_Set3DMinMaxDistance (FMOD_CHANNEL *channel, float mindistance, float maxdistance); +FMOD_RESULT FMOD_Channel_Get3DMinMaxDistance (FMOD_CHANNEL *channel, float *mindistance, float *maxdistance); +FMOD_RESULT FMOD_Channel_Set3DConeSettings (FMOD_CHANNEL *channel, float insideconeangle, float outsideconeangle, float outsidevolume); +FMOD_RESULT FMOD_Channel_Get3DConeSettings (FMOD_CHANNEL *channel, float *insideconeangle, float *outsideconeangle, float *outsidevolume); +FMOD_RESULT FMOD_Channel_Set3DConeOrientation (FMOD_CHANNEL *channel, FMOD_VECTOR *orientation); +FMOD_RESULT FMOD_Channel_Get3DConeOrientation (FMOD_CHANNEL *channel, FMOD_VECTOR *orientation); +FMOD_RESULT FMOD_Channel_Set3DCustomRolloff (FMOD_CHANNEL *channel, FMOD_VECTOR *points, int numpoints); +FMOD_RESULT FMOD_Channel_Get3DCustomRolloff (FMOD_CHANNEL *channel, FMOD_VECTOR **points, int *numpoints); +FMOD_RESULT FMOD_Channel_Set3DOcclusion (FMOD_CHANNEL *channel, float directocclusion, float reverbocclusion); +FMOD_RESULT FMOD_Channel_Get3DOcclusion (FMOD_CHANNEL *channel, float *directocclusion, float *reverbocclusion); +FMOD_RESULT FMOD_Channel_Set3DSpread (FMOD_CHANNEL *channel, float angle); +FMOD_RESULT FMOD_Channel_Get3DSpread (FMOD_CHANNEL *channel, float *angle); +FMOD_RESULT FMOD_Channel_Set3DLevel (FMOD_CHANNEL *channel, float level); +FMOD_RESULT FMOD_Channel_Get3DLevel (FMOD_CHANNEL *channel, float *level); +FMOD_RESULT FMOD_Channel_Set3DDopplerLevel (FMOD_CHANNEL *channel, float level); +FMOD_RESULT FMOD_Channel_Get3DDopplerLevel (FMOD_CHANNEL *channel, float *level); +FMOD_RESULT FMOD_Channel_Set3DDistanceFilter (FMOD_CHANNEL *channel, FMOD_BOOL custom, float customLevel, float centerFreq); +FMOD_RESULT FMOD_Channel_Get3DDistanceFilter (FMOD_CHANNEL *channel, FMOD_BOOL *custom, float *customLevel, float *centerFreq); +FMOD_RESULT FMOD_Channel_SetUserData (FMOD_CHANNEL *channel, void *userdata); +FMOD_RESULT FMOD_Channel_GetUserData (FMOD_CHANNEL *channel, void **userdata); +FMOD_RESULT FMOD_Channel_SetFrequency (FMOD_CHANNEL *channel, float frequency); +FMOD_RESULT FMOD_Channel_GetFrequency (FMOD_CHANNEL *channel, float *frequency); +FMOD_RESULT FMOD_Channel_SetPriority (FMOD_CHANNEL *channel, int priority); +FMOD_RESULT FMOD_Channel_GetPriority (FMOD_CHANNEL *channel, int *priority); +FMOD_RESULT FMOD_Channel_SetPosition (FMOD_CHANNEL *channel, unsigned int position, FMOD_TIMEUNIT postype); +FMOD_RESULT FMOD_Channel_GetPosition (FMOD_CHANNEL *channel, unsigned int *position, FMOD_TIMEUNIT postype); +FMOD_RESULT FMOD_Channel_SetChannelGroup (FMOD_CHANNEL *channel, FMOD_CHANNELGROUP *channelgroup); +FMOD_RESULT FMOD_Channel_GetChannelGroup (FMOD_CHANNEL *channel, FMOD_CHANNELGROUP **channelgroup); +FMOD_RESULT FMOD_Channel_SetLoopCount (FMOD_CHANNEL *channel, int loopcount); +FMOD_RESULT FMOD_Channel_GetLoopCount (FMOD_CHANNEL *channel, int *loopcount); +FMOD_RESULT FMOD_Channel_SetLoopPoints (FMOD_CHANNEL *channel, unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); +FMOD_RESULT FMOD_Channel_GetLoopPoints (FMOD_CHANNEL *channel, unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); +FMOD_RESULT FMOD_Channel_IsVirtual (FMOD_CHANNEL *channel, FMOD_BOOL *isvirtual); +FMOD_RESULT FMOD_Channel_GetCurrentSound (FMOD_CHANNEL *channel, FMOD_SOUND **sound); +FMOD_RESULT FMOD_Channel_GetIndex (FMOD_CHANNEL *channel, int *index); +FMOD_RESULT FMOD_ChannelGroup_GetSystemObject (FMOD_CHANNELGROUP *channelgroup, FMOD_SYSTEM **system); +FMOD_RESULT FMOD_ChannelGroup_Stop (FMOD_CHANNELGROUP *channelgroup); +FMOD_RESULT FMOD_ChannelGroup_SetPaused (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused); +FMOD_RESULT FMOD_ChannelGroup_GetPaused (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *paused); +FMOD_RESULT FMOD_ChannelGroup_SetVolume (FMOD_CHANNELGROUP *channelgroup, float volume); +FMOD_RESULT FMOD_ChannelGroup_GetVolume (FMOD_CHANNELGROUP *channelgroup, float *volume); +FMOD_RESULT FMOD_ChannelGroup_SetVolumeRamp (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL ramp); +FMOD_RESULT FMOD_ChannelGroup_GetVolumeRamp (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *ramp); +FMOD_RESULT FMOD_ChannelGroup_GetAudibility (FMOD_CHANNELGROUP *channelgroup, float *audibility); +FMOD_RESULT FMOD_ChannelGroup_SetPitch (FMOD_CHANNELGROUP *channelgroup, float pitch); +FMOD_RESULT FMOD_ChannelGroup_GetPitch (FMOD_CHANNELGROUP *channelgroup, float *pitch); +FMOD_RESULT FMOD_ChannelGroup_SetMute (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL mute); +FMOD_RESULT FMOD_ChannelGroup_GetMute (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *mute); +FMOD_RESULT FMOD_ChannelGroup_SetReverbProperties (FMOD_CHANNELGROUP *channelgroup, int instance, float wet); +FMOD_RESULT FMOD_ChannelGroup_GetReverbProperties (FMOD_CHANNELGROUP *channelgroup, int instance, float *wet); +FMOD_RESULT FMOD_ChannelGroup_SetLowPassGain (FMOD_CHANNELGROUP *channelgroup, float gain); +FMOD_RESULT FMOD_ChannelGroup_GetLowPassGain (FMOD_CHANNELGROUP *channelgroup, float *gain); +FMOD_RESULT FMOD_ChannelGroup_SetMode (FMOD_CHANNELGROUP *channelgroup, FMOD_MODE mode); +FMOD_RESULT FMOD_ChannelGroup_GetMode (FMOD_CHANNELGROUP *channelgroup, FMOD_MODE *mode); +FMOD_RESULT FMOD_ChannelGroup_SetCallback (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELCONTROL_CALLBACK callback); +FMOD_RESULT FMOD_ChannelGroup_IsPlaying (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *isplaying); +FMOD_RESULT FMOD_ChannelGroup_SetPan (FMOD_CHANNELGROUP *channelgroup, float pan); +FMOD_RESULT FMOD_ChannelGroup_SetMixLevelsOutput (FMOD_CHANNELGROUP *channelgroup, float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); +FMOD_RESULT FMOD_ChannelGroup_SetMixLevelsInput (FMOD_CHANNELGROUP *channelgroup, float *levels, int numlevels); +FMOD_RESULT FMOD_ChannelGroup_SetMixMatrix (FMOD_CHANNELGROUP *channelgroup, float *matrix, int outchannels, int inchannels, int inchannel_hop); +FMOD_RESULT FMOD_ChannelGroup_GetMixMatrix (FMOD_CHANNELGROUP *channelgroup, float *matrix, int *outchannels, int *inchannels, int inchannel_hop); +FMOD_RESULT FMOD_ChannelGroup_GetDSPClock (FMOD_CHANNELGROUP *channelgroup, unsigned long long *dspclock, unsigned long long *parentclock); +FMOD_RESULT FMOD_ChannelGroup_SetDelay (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock_start, unsigned long long dspclock_end, FMOD_BOOL stopchannels); +FMOD_RESULT FMOD_ChannelGroup_GetDelay (FMOD_CHANNELGROUP *channelgroup, unsigned long long *dspclock_start, unsigned long long *dspclock_end, FMOD_BOOL *stopchannels); +FMOD_RESULT FMOD_ChannelGroup_AddFadePoint (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock, float volume); +FMOD_RESULT FMOD_ChannelGroup_SetFadePointRamp (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock, float volume); +FMOD_RESULT FMOD_ChannelGroup_RemoveFadePoints (FMOD_CHANNELGROUP *channelgroup, unsigned long long dspclock_start, unsigned long long dspclock_end); +FMOD_RESULT FMOD_ChannelGroup_GetFadePoints (FMOD_CHANNELGROUP *channelgroup, unsigned int *numpoints, unsigned long long *point_dspclock, float *point_volume); +FMOD_RESULT FMOD_ChannelGroup_GetDSP (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_DSP **dsp); +FMOD_RESULT FMOD_ChannelGroup_AddDSP (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_DSP *dsp); +FMOD_RESULT FMOD_ChannelGroup_RemoveDSP (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp); +FMOD_RESULT FMOD_ChannelGroup_GetNumDSPs (FMOD_CHANNELGROUP *channelgroup, int *numdsps); +FMOD_RESULT FMOD_ChannelGroup_SetDSPIndex (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp, int index); +FMOD_RESULT FMOD_ChannelGroup_GetDSPIndex (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp, int *index); +FMOD_RESULT FMOD_ChannelGroup_Set3DAttributes (FMOD_CHANNELGROUP *channelgroup, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); +FMOD_RESULT FMOD_ChannelGroup_Get3DAttributes (FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *pos, FMOD_VECTOR *vel); +FMOD_RESULT FMOD_ChannelGroup_Set3DMinMaxDistance (FMOD_CHANNELGROUP *channelgroup, float mindistance, float maxdistance); +FMOD_RESULT FMOD_ChannelGroup_Get3DMinMaxDistance (FMOD_CHANNELGROUP *channelgroup, float *mindistance, float *maxdistance); +FMOD_RESULT FMOD_ChannelGroup_Set3DConeSettings (FMOD_CHANNELGROUP *channelgroup, float insideconeangle, float outsideconeangle, float outsidevolume); +FMOD_RESULT FMOD_ChannelGroup_Get3DConeSettings (FMOD_CHANNELGROUP *channelgroup, float *insideconeangle, float *outsideconeangle, float *outsidevolume); +FMOD_RESULT FMOD_ChannelGroup_Set3DConeOrientation(FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *orientation); +FMOD_RESULT FMOD_ChannelGroup_Get3DConeOrientation(FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *orientation); +FMOD_RESULT FMOD_ChannelGroup_Set3DCustomRolloff (FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR *points, int numpoints); +FMOD_RESULT FMOD_ChannelGroup_Get3DCustomRolloff (FMOD_CHANNELGROUP *channelgroup, FMOD_VECTOR **points, int *numpoints); +FMOD_RESULT FMOD_ChannelGroup_Set3DOcclusion (FMOD_CHANNELGROUP *channelgroup, float directocclusion, float reverbocclusion); +FMOD_RESULT FMOD_ChannelGroup_Get3DOcclusion (FMOD_CHANNELGROUP *channelgroup, float *directocclusion, float *reverbocclusion); +FMOD_RESULT FMOD_ChannelGroup_Set3DSpread (FMOD_CHANNELGROUP *channelgroup, float angle); +FMOD_RESULT FMOD_ChannelGroup_Get3DSpread (FMOD_CHANNELGROUP *channelgroup, float *angle); +FMOD_RESULT FMOD_ChannelGroup_Set3DLevel (FMOD_CHANNELGROUP *channelgroup, float level); +FMOD_RESULT FMOD_ChannelGroup_Get3DLevel (FMOD_CHANNELGROUP *channelgroup, float *level); +FMOD_RESULT FMOD_ChannelGroup_Set3DDopplerLevel (FMOD_CHANNELGROUP *channelgroup, float level); +FMOD_RESULT FMOD_ChannelGroup_Get3DDopplerLevel (FMOD_CHANNELGROUP *channelgroup, float *level); +FMOD_RESULT FMOD_ChannelGroup_Set3DDistanceFilter (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL custom, float customLevel, float centerFreq); +FMOD_RESULT FMOD_ChannelGroup_Get3DDistanceFilter (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *custom, float *customLevel, float *centerFreq); +FMOD_RESULT FMOD_ChannelGroup_SetUserData (FMOD_CHANNELGROUP *channelgroup, void *userdata); +FMOD_RESULT FMOD_ChannelGroup_GetUserData (FMOD_CHANNELGROUP *channelgroup, void **userdata); +FMOD_RESULT FMOD_ChannelGroup_Release (FMOD_CHANNELGROUP *channelgroup); +FMOD_RESULT FMOD_ChannelGroup_AddGroup (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELGROUP *group, FMOD_BOOL propagatedspclock, FMOD_DSPCONNECTION **connection); +FMOD_RESULT FMOD_ChannelGroup_GetNumGroups (FMOD_CHANNELGROUP *channelgroup, int *numgroups); +FMOD_RESULT FMOD_ChannelGroup_GetGroup (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_CHANNELGROUP **group); +FMOD_RESULT FMOD_ChannelGroup_GetParentGroup (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELGROUP **group); +FMOD_RESULT FMOD_ChannelGroup_GetName (FMOD_CHANNELGROUP *channelgroup, char *name, int namelen); +FMOD_RESULT FMOD_ChannelGroup_GetNumChannels (FMOD_CHANNELGROUP *channelgroup, int *numchannels); +FMOD_RESULT FMOD_ChannelGroup_GetChannel (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_CHANNEL **channel); +FMOD_RESULT FMOD_SoundGroup_Release (FMOD_SOUNDGROUP *soundgroup); +FMOD_RESULT FMOD_SoundGroup_GetSystemObject (FMOD_SOUNDGROUP *soundgroup, FMOD_SYSTEM **system); +FMOD_RESULT FMOD_SoundGroup_SetMaxAudible (FMOD_SOUNDGROUP *soundgroup, int maxaudible); +FMOD_RESULT FMOD_SoundGroup_GetMaxAudible (FMOD_SOUNDGROUP *soundgroup, int *maxaudible); +FMOD_RESULT FMOD_SoundGroup_SetMaxAudibleBehavior (FMOD_SOUNDGROUP *soundgroup, FMOD_SOUNDGROUP_BEHAVIOR behavior); +FMOD_RESULT FMOD_SoundGroup_GetMaxAudibleBehavior (FMOD_SOUNDGROUP *soundgroup, FMOD_SOUNDGROUP_BEHAVIOR *behavior); +FMOD_RESULT FMOD_SoundGroup_SetMuteFadeSpeed (FMOD_SOUNDGROUP *soundgroup, float speed); +FMOD_RESULT FMOD_SoundGroup_GetMuteFadeSpeed (FMOD_SOUNDGROUP *soundgroup, float *speed); +FMOD_RESULT FMOD_SoundGroup_SetVolume (FMOD_SOUNDGROUP *soundgroup, float volume); +FMOD_RESULT FMOD_SoundGroup_GetVolume (FMOD_SOUNDGROUP *soundgroup, float *volume); +FMOD_RESULT FMOD_SoundGroup_Stop (FMOD_SOUNDGROUP *soundgroup); +FMOD_RESULT FMOD_SoundGroup_GetName (FMOD_SOUNDGROUP *soundgroup, char *name, int namelen); +FMOD_RESULT FMOD_SoundGroup_GetNumSounds (FMOD_SOUNDGROUP *soundgroup, int *numsounds); +FMOD_RESULT FMOD_SoundGroup_GetSound (FMOD_SOUNDGROUP *soundgroup, int index, FMOD_SOUND **sound); +FMOD_RESULT FMOD_SoundGroup_GetNumPlaying (FMOD_SOUNDGROUP *soundgroup, int *numplaying); +FMOD_RESULT FMOD_SoundGroup_SetUserData (FMOD_SOUNDGROUP *soundgroup, void *userdata); +FMOD_RESULT FMOD_SoundGroup_GetUserData (FMOD_SOUNDGROUP *soundgroup, void **userdata); +FMOD_RESULT FMOD_DSP_Release (FMOD_DSP *dsp); +FMOD_RESULT FMOD_DSP_GetSystemObject (FMOD_DSP *dsp, FMOD_SYSTEM **system); +FMOD_RESULT FMOD_DSP_AddInput (FMOD_DSP *dsp, FMOD_DSP *input, FMOD_DSPCONNECTION **connection, FMOD_DSPCONNECTION_TYPE type); +FMOD_RESULT FMOD_DSP_DisconnectFrom (FMOD_DSP *dsp, FMOD_DSP *target, FMOD_DSPCONNECTION *connection); +FMOD_RESULT FMOD_DSP_DisconnectAll (FMOD_DSP *dsp, FMOD_BOOL inputs, FMOD_BOOL outputs); +FMOD_RESULT FMOD_DSP_GetNumInputs (FMOD_DSP *dsp, int *numinputs); +FMOD_RESULT FMOD_DSP_GetNumOutputs (FMOD_DSP *dsp, int *numoutputs); +FMOD_RESULT FMOD_DSP_GetInput (FMOD_DSP *dsp, int index, FMOD_DSP **input, FMOD_DSPCONNECTION **inputconnection); +FMOD_RESULT FMOD_DSP_GetOutput (FMOD_DSP *dsp, int index, FMOD_DSP **output, FMOD_DSPCONNECTION **outputconnection); +FMOD_RESULT FMOD_DSP_SetActive (FMOD_DSP *dsp, FMOD_BOOL active); +FMOD_RESULT FMOD_DSP_GetActive (FMOD_DSP *dsp, FMOD_BOOL *active); +FMOD_RESULT FMOD_DSP_SetBypass (FMOD_DSP *dsp, FMOD_BOOL bypass); +FMOD_RESULT FMOD_DSP_GetBypass (FMOD_DSP *dsp, FMOD_BOOL *bypass); +FMOD_RESULT FMOD_DSP_SetWetDryMix (FMOD_DSP *dsp, float prewet, float postwet, float dry); +FMOD_RESULT FMOD_DSP_GetWetDryMix (FMOD_DSP *dsp, float *prewet, float *postwet, float *dry); +FMOD_RESULT FMOD_DSP_SetChannelFormat (FMOD_DSP *dsp, FMOD_CHANNELMASK channelmask, int numchannels, FMOD_SPEAKERMODE source_speakermode); +FMOD_RESULT FMOD_DSP_GetChannelFormat (FMOD_DSP *dsp, FMOD_CHANNELMASK *channelmask, int *numchannels, FMOD_SPEAKERMODE *source_speakermode); +FMOD_RESULT FMOD_DSP_GetOutputChannelFormat (FMOD_DSP *dsp, FMOD_CHANNELMASK inmask, int inchannels, FMOD_SPEAKERMODE inspeakermode, FMOD_CHANNELMASK *outmask, int *outchannels, FMOD_SPEAKERMODE *outspeakermode); +FMOD_RESULT FMOD_DSP_Reset (FMOD_DSP *dsp); +FMOD_RESULT FMOD_DSP_SetCallback (FMOD_DSP *dsp, FMOD_DSP_CALLBACK callback); +FMOD_RESULT FMOD_DSP_SetParameterFloat (FMOD_DSP *dsp, int index, float value); +FMOD_RESULT FMOD_DSP_SetParameterInt (FMOD_DSP *dsp, int index, int value); +FMOD_RESULT FMOD_DSP_SetParameterBool (FMOD_DSP *dsp, int index, FMOD_BOOL value); +FMOD_RESULT FMOD_DSP_SetParameterData (FMOD_DSP *dsp, int index, void *data, unsigned int length); +FMOD_RESULT FMOD_DSP_GetParameterFloat (FMOD_DSP *dsp, int index, float *value, char *valuestr, int valuestrlen); +FMOD_RESULT FMOD_DSP_GetParameterInt (FMOD_DSP *dsp, int index, int *value, char *valuestr, int valuestrlen); +FMOD_RESULT FMOD_DSP_GetParameterBool (FMOD_DSP *dsp, int index, FMOD_BOOL *value, char *valuestr, int valuestrlen); +FMOD_RESULT FMOD_DSP_GetParameterData (FMOD_DSP *dsp, int index, void **data, unsigned int *length, char *valuestr, int valuestrlen); +FMOD_RESULT FMOD_DSP_GetNumParameters (FMOD_DSP *dsp, int *numparams); +FMOD_RESULT FMOD_DSP_GetParameterInfo (FMOD_DSP *dsp, int index, FMOD_DSP_PARAMETER_DESC **desc); +FMOD_RESULT FMOD_DSP_GetDataParameterIndex (FMOD_DSP *dsp, int datatype, int *index); +FMOD_RESULT FMOD_DSP_ShowConfigDialog (FMOD_DSP *dsp, void *hwnd, FMOD_BOOL show); +FMOD_RESULT FMOD_DSP_GetInfo (FMOD_DSP *dsp, char *name, unsigned int *version, int *channels, int *configwidth, int *configheight); +FMOD_RESULT FMOD_DSP_GetType (FMOD_DSP *dsp, FMOD_DSP_TYPE *type); +FMOD_RESULT FMOD_DSP_GetIdle (FMOD_DSP *dsp, FMOD_BOOL *idle); +FMOD_RESULT FMOD_DSP_SetUserData (FMOD_DSP *dsp, void *userdata); +FMOD_RESULT FMOD_DSP_GetUserData (FMOD_DSP *dsp, void **userdata); +FMOD_RESULT FMOD_DSP_SetMeteringEnabled (FMOD_DSP *dsp, FMOD_BOOL inputEnabled, FMOD_BOOL outputEnabled); +FMOD_RESULT FMOD_DSP_GetMeteringEnabled (FMOD_DSP *dsp, FMOD_BOOL *inputEnabled, FMOD_BOOL *outputEnabled); +FMOD_RESULT FMOD_DSP_GetMeteringInfo (FMOD_DSP *dsp, FMOD_DSP_METERING_INFO *inputInfo, FMOD_DSP_METERING_INFO *outputInfo); +FMOD_RESULT FMOD_DSP_GetCPUUsage (FMOD_DSP *dsp, unsigned int *exclusive, unsigned int *inclusive); +FMOD_RESULT FMOD_DSPConnection_GetInput (FMOD_DSPCONNECTION *dspconnection, FMOD_DSP **input); +FMOD_RESULT FMOD_DSPConnection_GetOutput (FMOD_DSPCONNECTION *dspconnection, FMOD_DSP **output); +FMOD_RESULT FMOD_DSPConnection_SetMix (FMOD_DSPCONNECTION *dspconnection, float volume); +FMOD_RESULT FMOD_DSPConnection_GetMix (FMOD_DSPCONNECTION *dspconnection, float *volume); +FMOD_RESULT FMOD_DSPConnection_SetMixMatrix (FMOD_DSPCONNECTION *dspconnection, float *matrix, int outchannels, int inchannels, int inchannel_hop); +FMOD_RESULT FMOD_DSPConnection_GetMixMatrix (FMOD_DSPCONNECTION *dspconnection, float *matrix, int *outchannels, int *inchannels, int inchannel_hop); +FMOD_RESULT FMOD_DSPConnection_GetType (FMOD_DSPCONNECTION *dspconnection, FMOD_DSPCONNECTION_TYPE *type); +FMOD_RESULT FMOD_DSPConnection_SetUserData (FMOD_DSPCONNECTION *dspconnection, void *userdata); +FMOD_RESULT FMOD_DSPConnection_GetUserData (FMOD_DSPCONNECTION *dspconnection, void **userdata); +FMOD_RESULT FMOD_Geometry_Release (FMOD_GEOMETRY *geometry); +FMOD_RESULT FMOD_Geometry_AddPolygon (FMOD_GEOMETRY *geometry, float directocclusion, float reverbocclusion, FMOD_BOOL doublesided, int numvertices, const FMOD_VECTOR *vertices, int *polygonindex); +FMOD_RESULT FMOD_Geometry_GetNumPolygons (FMOD_GEOMETRY *geometry, int *numpolygons); +FMOD_RESULT FMOD_Geometry_GetMaxPolygons (FMOD_GEOMETRY *geometry, int *maxpolygons, int *maxvertices); +FMOD_RESULT FMOD_Geometry_GetPolygonNumVertices (FMOD_GEOMETRY *geometry, int index, int *numvertices); +FMOD_RESULT FMOD_Geometry_SetPolygonVertex (FMOD_GEOMETRY *geometry, int index, int vertexindex, const FMOD_VECTOR *vertex); +FMOD_RESULT FMOD_Geometry_GetPolygonVertex (FMOD_GEOMETRY *geometry, int index, int vertexindex, FMOD_VECTOR *vertex); +FMOD_RESULT FMOD_Geometry_SetPolygonAttributes (FMOD_GEOMETRY *geometry, int index, float directocclusion, float reverbocclusion, FMOD_BOOL doublesided); +FMOD_RESULT FMOD_Geometry_GetPolygonAttributes (FMOD_GEOMETRY *geometry, int index, float *directocclusion, float *reverbocclusion, FMOD_BOOL *doublesided); +FMOD_RESULT FMOD_Geometry_SetActive (FMOD_GEOMETRY *geometry, FMOD_BOOL active); +FMOD_RESULT FMOD_Geometry_GetActive (FMOD_GEOMETRY *geometry, FMOD_BOOL *active); +FMOD_RESULT FMOD_Geometry_SetRotation (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); +FMOD_RESULT FMOD_Geometry_GetRotation (FMOD_GEOMETRY *geometry, FMOD_VECTOR *forward, FMOD_VECTOR *up); +FMOD_RESULT FMOD_Geometry_SetPosition (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *position); +FMOD_RESULT FMOD_Geometry_GetPosition (FMOD_GEOMETRY *geometry, FMOD_VECTOR *position); +FMOD_RESULT FMOD_Geometry_SetScale (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *scale); +FMOD_RESULT FMOD_Geometry_GetScale (FMOD_GEOMETRY *geometry, FMOD_VECTOR *scale); +FMOD_RESULT FMOD_Geometry_Save (FMOD_GEOMETRY *geometry, void *data, int *datasize); +FMOD_RESULT FMOD_Geometry_SetUserData (FMOD_GEOMETRY *geometry, void *userdata); +FMOD_RESULT FMOD_Geometry_GetUserData (FMOD_GEOMETRY *geometry, void **userdata); +FMOD_RESULT FMOD_Reverb3D_Release (FMOD_REVERB3D *reverb3d); +FMOD_RESULT FMOD_Reverb3D_Set3DAttributes (FMOD_REVERB3D *reverb3d, const FMOD_VECTOR *position, float mindistance, float maxdistance); +FMOD_RESULT FMOD_Reverb3D_Get3DAttributes (FMOD_REVERB3D *reverb3d, FMOD_VECTOR *position, float *mindistance, float *maxdistance); +FMOD_RESULT FMOD_Reverb3D_SetProperties (FMOD_REVERB3D *reverb3d, const FMOD_REVERB_PROPERTIES *properties); +FMOD_RESULT FMOD_Reverb3D_GetProperties (FMOD_REVERB3D *reverb3d, FMOD_REVERB_PROPERTIES *properties); +FMOD_RESULT FMOD_Reverb3D_SetActive (FMOD_REVERB3D *reverb3d, FMOD_BOOL active); +FMOD_RESULT FMOD_Reverb3D_GetActive (FMOD_REVERB3D *reverb3d, FMOD_BOOL *active); +FMOD_RESULT FMOD_Reverb3D_SetUserData (FMOD_REVERB3D *reverb3d, void *userdata); +FMOD_RESULT FMOD_Reverb3D_GetUserData (FMOD_REVERB3D *reverb3d, void **userdata); +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; +typedef unsigned int FMOD_STUDIO_INITFLAGS; +typedef unsigned int FMOD_STUDIO_PARAMETER_FLAGS; +typedef unsigned int FMOD_STUDIO_SYSTEM_CALLBACK_TYPE; +typedef unsigned int FMOD_STUDIO_EVENT_CALLBACK_TYPE; +typedef unsigned int FMOD_STUDIO_LOAD_BANK_FLAGS; +typedef unsigned int FMOD_STUDIO_COMMANDCAPTURE_FLAGS; +typedef unsigned int FMOD_STUDIO_COMMANDREPLAY_FLAGS; +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 +} 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 +} 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 +} 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 +} 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 +} 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 +} 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 +} FMOD_STUDIO_INSTANCETYPE; +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; +typedef FMOD_RESULT (*FMOD_STUDIO_SYSTEM_CALLBACK) (FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE type, void *commanddata, void *userdata); +typedef FMOD_RESULT (*FMOD_STUDIO_EVENT_CALLBACK) (FMOD_STUDIO_EVENT_CALLBACK_TYPE type, FMOD_STUDIO_EVENTINSTANCE *event, void *parameters); +typedef FMOD_RESULT (*FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK) (FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, float currenttime, void *userdata); +typedef FMOD_RESULT (*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 (*FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK) (FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENTINSTANCE **instance, void *userdata); +FMOD_RESULT FMOD_Studio_ParseID(const char *idstring, FMOD_GUID *id); +FMOD_RESULT FMOD_Studio_System_Create(FMOD_STUDIO_SYSTEM **system, unsigned int headerversion); +FMOD_BOOL FMOD_Studio_System_IsValid(FMOD_STUDIO_SYSTEM *system); +FMOD_RESULT FMOD_Studio_System_SetAdvancedSettings(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_ADVANCEDSETTINGS *settings); +FMOD_RESULT FMOD_Studio_System_GetAdvancedSettings(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_ADVANCEDSETTINGS *settings); +FMOD_RESULT FMOD_Studio_System_Initialize(FMOD_STUDIO_SYSTEM *system, int maxchannels, FMOD_STUDIO_INITFLAGS studioflags, FMOD_INITFLAGS flags, void *extradriverdata); +FMOD_RESULT FMOD_Studio_System_Release(FMOD_STUDIO_SYSTEM *system); +FMOD_RESULT FMOD_Studio_System_Update(FMOD_STUDIO_SYSTEM *system); +FMOD_RESULT FMOD_Studio_System_GetCoreSystem(FMOD_STUDIO_SYSTEM *system, FMOD_SYSTEM **coresystem); +FMOD_RESULT FMOD_Studio_System_GetEvent(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_EVENTDESCRIPTION **event); +FMOD_RESULT FMOD_Studio_System_GetBus(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_BUS **bus); +FMOD_RESULT FMOD_Studio_System_GetVCA(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_VCA **vca); +FMOD_RESULT FMOD_Studio_System_GetBank(FMOD_STUDIO_SYSTEM *system, const char *pathOrID, FMOD_STUDIO_BANK **bank); +FMOD_RESULT FMOD_Studio_System_GetEventByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_EVENTDESCRIPTION **event); +FMOD_RESULT FMOD_Studio_System_GetBusByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_BUS **bus); +FMOD_RESULT FMOD_Studio_System_GetVCAByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_VCA **vca); +FMOD_RESULT FMOD_Studio_System_GetBankByID(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, FMOD_STUDIO_BANK **bank); +FMOD_RESULT FMOD_Studio_System_GetSoundInfo(FMOD_STUDIO_SYSTEM *system, const char *key, FMOD_STUDIO_SOUND_INFO *info); +FMOD_RESULT FMOD_Studio_System_GetParameterDescriptionByName(FMOD_STUDIO_SYSTEM *system, const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); +FMOD_RESULT FMOD_Studio_System_GetParameterDescriptionByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); +FMOD_RESULT FMOD_Studio_System_GetParameterLabelByName(FMOD_STUDIO_SYSTEM *system, const char *name, int labelindex, char *label, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_System_GetParameterLabelByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_System_GetParameterByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue); +FMOD_RESULT FMOD_Studio_System_SetParameterByID(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, float value, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_System_SetParameterByIDWithLabel(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_ID id, const char *label, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_System_SetParametersByIDs(FMOD_STUDIO_SYSTEM *system, const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_System_GetParameterByName(FMOD_STUDIO_SYSTEM *system, const char *name, float *value, float *finalvalue); +FMOD_RESULT FMOD_Studio_System_SetParameterByName(FMOD_STUDIO_SYSTEM *system, const char *name, float value, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_System_SetParameterByNameWithLabel(FMOD_STUDIO_SYSTEM *system, const char *name, const char *label, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_System_LookupID(FMOD_STUDIO_SYSTEM *system, const char *path, FMOD_GUID *id); +FMOD_RESULT FMOD_Studio_System_LookupPath(FMOD_STUDIO_SYSTEM *system, const FMOD_GUID *id, char *path, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_System_GetNumListeners(FMOD_STUDIO_SYSTEM *system, int *numlisteners); +FMOD_RESULT FMOD_Studio_System_SetNumListeners(FMOD_STUDIO_SYSTEM *system, int numlisteners); +FMOD_RESULT FMOD_Studio_System_GetListenerAttributes(FMOD_STUDIO_SYSTEM *system, int index, FMOD_3D_ATTRIBUTES *attributes, FMOD_VECTOR *attenuationposition); +FMOD_RESULT FMOD_Studio_System_SetListenerAttributes(FMOD_STUDIO_SYSTEM *system, int index, const FMOD_3D_ATTRIBUTES *attributes, const FMOD_VECTOR *attenuationposition); +FMOD_RESULT FMOD_Studio_System_GetListenerWeight(FMOD_STUDIO_SYSTEM *system, int index, float *weight); +FMOD_RESULT FMOD_Studio_System_SetListenerWeight(FMOD_STUDIO_SYSTEM *system, int index, float weight); +FMOD_RESULT FMOD_Studio_System_LoadBankFile(FMOD_STUDIO_SYSTEM *system, const char *filename, FMOD_STUDIO_LOAD_BANK_FLAGS flags, FMOD_STUDIO_BANK **bank); +FMOD_RESULT 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 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 FMOD_Studio_System_RegisterPlugin(FMOD_STUDIO_SYSTEM *system, const FMOD_DSP_DESCRIPTION *description); +FMOD_RESULT FMOD_Studio_System_UnregisterPlugin(FMOD_STUDIO_SYSTEM *system, const char *name); +FMOD_RESULT FMOD_Studio_System_UnloadAll(FMOD_STUDIO_SYSTEM *system); +FMOD_RESULT FMOD_Studio_System_FlushCommands(FMOD_STUDIO_SYSTEM *system); +FMOD_RESULT FMOD_Studio_System_FlushSampleLoading(FMOD_STUDIO_SYSTEM *system); +FMOD_RESULT FMOD_Studio_System_StartCommandCapture(FMOD_STUDIO_SYSTEM *system, const char *filename, FMOD_STUDIO_COMMANDCAPTURE_FLAGS flags); +FMOD_RESULT FMOD_Studio_System_StopCommandCapture(FMOD_STUDIO_SYSTEM *system); +FMOD_RESULT FMOD_Studio_System_LoadCommandReplay(FMOD_STUDIO_SYSTEM *system, const char *filename, FMOD_STUDIO_COMMANDREPLAY_FLAGS flags, FMOD_STUDIO_COMMANDREPLAY **replay); +FMOD_RESULT FMOD_Studio_System_GetBankCount(FMOD_STUDIO_SYSTEM *system, int *count); +FMOD_RESULT FMOD_Studio_System_GetBankList(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_BANK **array, int capacity, int *count); +FMOD_RESULT FMOD_Studio_System_GetParameterDescriptionCount(FMOD_STUDIO_SYSTEM *system, int *count); +FMOD_RESULT FMOD_Studio_System_GetParameterDescriptionList(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_PARAMETER_DESCRIPTION *array, int capacity, int *count); +FMOD_RESULT FMOD_Studio_System_GetCPUUsage(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_CPU_USAGE *usage, FMOD_CPU_USAGE *usage_core); +FMOD_RESULT FMOD_Studio_System_GetBufferUsage(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_BUFFER_USAGE *usage); +FMOD_RESULT FMOD_Studio_System_ResetBufferUsage(FMOD_STUDIO_SYSTEM *system); +FMOD_RESULT FMOD_Studio_System_SetCallback(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_SYSTEM_CALLBACK callback, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE callbackmask); +FMOD_RESULT FMOD_Studio_System_SetUserData(FMOD_STUDIO_SYSTEM *system, void *userdata); +FMOD_RESULT FMOD_Studio_System_GetUserData(FMOD_STUDIO_SYSTEM *system, void **userdata); +FMOD_RESULT FMOD_Studio_System_GetMemoryUsage(FMOD_STUDIO_SYSTEM *system, FMOD_STUDIO_MEMORY_USAGE *memoryusage); +FMOD_BOOL FMOD_Studio_EventDescription_IsValid(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription); +FMOD_RESULT FMOD_Studio_EventDescription_GetID(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_GUID *id); +FMOD_RESULT FMOD_Studio_EventDescription_GetPath(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, char *path, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_EventDescription_GetParameterDescriptionCount(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *count); +FMOD_RESULT FMOD_Studio_EventDescription_GetParameterDescriptionByIndex(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int index, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); +FMOD_RESULT FMOD_Studio_EventDescription_GetParameterDescriptionByName(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); +FMOD_RESULT FMOD_Studio_EventDescription_GetParameterDescriptionByID(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter); +FMOD_RESULT FMOD_Studio_EventDescription_GetParameterLabelByIndex(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int index, int labelindex, char *label, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_EventDescription_GetParameterLabelByName(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, const char *name, int labelindex, char *label, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_EventDescription_GetParameterLabelByID(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_EventDescription_GetUserPropertyCount(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *count); +FMOD_RESULT FMOD_Studio_EventDescription_GetUserPropertyByIndex(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int index, FMOD_STUDIO_USER_PROPERTY *property); +FMOD_RESULT FMOD_Studio_EventDescription_GetUserProperty(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, const char *name, FMOD_STUDIO_USER_PROPERTY *property); +FMOD_RESULT FMOD_Studio_EventDescription_GetLength(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *length); +FMOD_RESULT FMOD_Studio_EventDescription_GetMinMaxDistance(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, float *min, float *max); +FMOD_RESULT FMOD_Studio_EventDescription_GetSoundSize(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, float *size); +FMOD_RESULT FMOD_Studio_EventDescription_IsSnapshot(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *snapshot); +FMOD_RESULT FMOD_Studio_EventDescription_IsOneshot(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *oneshot); +FMOD_RESULT FMOD_Studio_EventDescription_IsStream(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *isStream); +FMOD_RESULT FMOD_Studio_EventDescription_Is3D(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *is3D); +FMOD_RESULT FMOD_Studio_EventDescription_IsDopplerEnabled(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *doppler); +FMOD_RESULT FMOD_Studio_EventDescription_HasSustainPoint(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_BOOL *sustainPoint); +FMOD_RESULT FMOD_Studio_EventDescription_CreateInstance(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENTINSTANCE **instance); +FMOD_RESULT FMOD_Studio_EventDescription_GetInstanceCount(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, int *count); +FMOD_RESULT FMOD_Studio_EventDescription_GetInstanceList(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENTINSTANCE **array, int capacity, int *count); +FMOD_RESULT FMOD_Studio_EventDescription_LoadSampleData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription); +FMOD_RESULT FMOD_Studio_EventDescription_UnloadSampleData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription); +FMOD_RESULT FMOD_Studio_EventDescription_GetSampleLoadingState(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_LOADING_STATE *state); +FMOD_RESULT FMOD_Studio_EventDescription_ReleaseAllInstances(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription); +FMOD_RESULT FMOD_Studio_EventDescription_SetCallback(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask); +FMOD_RESULT FMOD_Studio_EventDescription_GetUserData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, void **userdata); +FMOD_RESULT FMOD_Studio_EventDescription_SetUserData(FMOD_STUDIO_EVENTDESCRIPTION *eventdescription, void *userdata); +FMOD_BOOL FMOD_Studio_EventInstance_IsValid(FMOD_STUDIO_EVENTINSTANCE *eventinstance); +FMOD_RESULT FMOD_Studio_EventInstance_GetDescription(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENTDESCRIPTION **description); +FMOD_RESULT FMOD_Studio_EventInstance_GetVolume(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float *volume, float *finalvolume); +FMOD_RESULT FMOD_Studio_EventInstance_SetVolume(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float volume); +FMOD_RESULT FMOD_Studio_EventInstance_GetPitch(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float *pitch, float *finalpitch); +FMOD_RESULT FMOD_Studio_EventInstance_SetPitch(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float pitch); +FMOD_RESULT FMOD_Studio_EventInstance_Get3DAttributes(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_3D_ATTRIBUTES *attributes); +FMOD_RESULT FMOD_Studio_EventInstance_Set3DAttributes(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_3D_ATTRIBUTES *attributes); +FMOD_RESULT FMOD_Studio_EventInstance_GetListenerMask(FMOD_STUDIO_EVENTINSTANCE *eventinstance, unsigned int *mask); +FMOD_RESULT FMOD_Studio_EventInstance_SetListenerMask(FMOD_STUDIO_EVENTINSTANCE *eventinstance, unsigned int mask); +FMOD_RESULT FMOD_Studio_EventInstance_GetProperty(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENT_PROPERTY index, float *value); +FMOD_RESULT FMOD_Studio_EventInstance_SetProperty(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENT_PROPERTY index, float value); +FMOD_RESULT FMOD_Studio_EventInstance_GetReverbLevel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int index, float *level); +FMOD_RESULT FMOD_Studio_EventInstance_SetReverbLevel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int index, float level); +FMOD_RESULT FMOD_Studio_EventInstance_GetPaused(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_BOOL *paused); +FMOD_RESULT FMOD_Studio_EventInstance_SetPaused(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_BOOL paused); +FMOD_RESULT FMOD_Studio_EventInstance_Start(FMOD_STUDIO_EVENTINSTANCE *eventinstance); +FMOD_RESULT FMOD_Studio_EventInstance_Stop(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_STOP_MODE mode); +FMOD_RESULT FMOD_Studio_EventInstance_GetTimelinePosition(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int *position); +FMOD_RESULT FMOD_Studio_EventInstance_SetTimelinePosition(FMOD_STUDIO_EVENTINSTANCE *eventinstance, int position); +FMOD_RESULT FMOD_Studio_EventInstance_GetPlaybackState(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PLAYBACK_STATE *state); +FMOD_RESULT FMOD_Studio_EventInstance_GetChannelGroup(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_CHANNELGROUP **group); +FMOD_RESULT FMOD_Studio_EventInstance_GetMinMaxDistance(FMOD_STUDIO_EVENTINSTANCE *eventinstance, float *min, float *max); +FMOD_RESULT FMOD_Studio_EventInstance_Release(FMOD_STUDIO_EVENTINSTANCE *eventinstance); +FMOD_RESULT FMOD_Studio_EventInstance_IsVirtual(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_BOOL *virtualstate); +FMOD_RESULT FMOD_Studio_EventInstance_GetParameterByName(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const char *name, float *value, float *finalvalue); +FMOD_RESULT FMOD_Studio_EventInstance_SetParameterByName(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const char *name, float value, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_EventInstance_SetParameterByNameWithLabel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const char *name, const char *label, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_EventInstance_GetParameterByID(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue); +FMOD_RESULT FMOD_Studio_EventInstance_SetParameterByID(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PARAMETER_ID id, float value, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_EventInstance_SetParameterByIDWithLabel(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_PARAMETER_ID id, const char *label, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_EventInstance_SetParametersByIDs(FMOD_STUDIO_EVENTINSTANCE *eventinstance, const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, FMOD_BOOL ignoreseekspeed); +FMOD_RESULT FMOD_Studio_EventInstance_KeyOff(FMOD_STUDIO_EVENTINSTANCE *eventinstance); +FMOD_RESULT FMOD_Studio_EventInstance_SetCallback(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask); +FMOD_RESULT FMOD_Studio_EventInstance_GetUserData(FMOD_STUDIO_EVENTINSTANCE *eventinstance, void **userdata); +FMOD_RESULT FMOD_Studio_EventInstance_SetUserData(FMOD_STUDIO_EVENTINSTANCE *eventinstance, void *userdata); +FMOD_RESULT FMOD_Studio_EventInstance_GetCPUUsage(FMOD_STUDIO_EVENTINSTANCE *eventinstance, unsigned int *exclusive, unsigned int *inclusive); +FMOD_RESULT FMOD_Studio_EventInstance_GetMemoryUsage(FMOD_STUDIO_EVENTINSTANCE *eventinstance, FMOD_STUDIO_MEMORY_USAGE *memoryusage); +FMOD_BOOL FMOD_Studio_Bus_IsValid(FMOD_STUDIO_BUS *bus); +FMOD_RESULT FMOD_Studio_Bus_GetID(FMOD_STUDIO_BUS *bus, FMOD_GUID *id); +FMOD_RESULT FMOD_Studio_Bus_GetPath(FMOD_STUDIO_BUS *bus, char *path, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_Bus_GetVolume(FMOD_STUDIO_BUS *bus, float *volume, float *finalvolume); +FMOD_RESULT FMOD_Studio_Bus_SetVolume(FMOD_STUDIO_BUS *bus, float volume); +FMOD_RESULT FMOD_Studio_Bus_GetPaused(FMOD_STUDIO_BUS *bus, FMOD_BOOL *paused); +FMOD_RESULT FMOD_Studio_Bus_SetPaused(FMOD_STUDIO_BUS *bus, FMOD_BOOL paused); +FMOD_RESULT FMOD_Studio_Bus_GetMute(FMOD_STUDIO_BUS *bus, FMOD_BOOL *mute); +FMOD_RESULT FMOD_Studio_Bus_SetMute(FMOD_STUDIO_BUS *bus, FMOD_BOOL mute); +FMOD_RESULT FMOD_Studio_Bus_StopAllEvents(FMOD_STUDIO_BUS *bus, FMOD_STUDIO_STOP_MODE mode); +FMOD_RESULT FMOD_Studio_Bus_GetPortIndex(FMOD_STUDIO_BUS *bus, FMOD_PORT_INDEX *index); +FMOD_RESULT FMOD_Studio_Bus_SetPortIndex(FMOD_STUDIO_BUS *bus, FMOD_PORT_INDEX index); +FMOD_RESULT FMOD_Studio_Bus_LockChannelGroup(FMOD_STUDIO_BUS *bus); +FMOD_RESULT FMOD_Studio_Bus_UnlockChannelGroup(FMOD_STUDIO_BUS *bus); +FMOD_RESULT FMOD_Studio_Bus_GetChannelGroup(FMOD_STUDIO_BUS *bus, FMOD_CHANNELGROUP **group); +FMOD_RESULT FMOD_Studio_Bus_GetCPUUsage(FMOD_STUDIO_BUS *bus, unsigned int *exclusive, unsigned int *inclusive); +FMOD_RESULT FMOD_Studio_Bus_GetMemoryUsage(FMOD_STUDIO_BUS *bus, FMOD_STUDIO_MEMORY_USAGE *memoryusage); +FMOD_BOOL FMOD_Studio_VCA_IsValid(FMOD_STUDIO_VCA *vca); +FMOD_RESULT FMOD_Studio_VCA_GetID(FMOD_STUDIO_VCA *vca, FMOD_GUID *id); +FMOD_RESULT FMOD_Studio_VCA_GetPath(FMOD_STUDIO_VCA *vca, char *path, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_VCA_GetVolume(FMOD_STUDIO_VCA *vca, float *volume, float *finalvolume); +FMOD_RESULT FMOD_Studio_VCA_SetVolume(FMOD_STUDIO_VCA *vca, float volume); +FMOD_BOOL FMOD_Studio_Bank_IsValid(FMOD_STUDIO_BANK *bank); +FMOD_RESULT FMOD_Studio_Bank_GetID(FMOD_STUDIO_BANK *bank, FMOD_GUID *id); +FMOD_RESULT FMOD_Studio_Bank_GetPath(FMOD_STUDIO_BANK *bank, char *path, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_Bank_Unload(FMOD_STUDIO_BANK *bank); +FMOD_RESULT FMOD_Studio_Bank_LoadSampleData(FMOD_STUDIO_BANK *bank); +FMOD_RESULT FMOD_Studio_Bank_UnloadSampleData(FMOD_STUDIO_BANK *bank); +FMOD_RESULT FMOD_Studio_Bank_GetLoadingState(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_LOADING_STATE *state); +FMOD_RESULT FMOD_Studio_Bank_GetSampleLoadingState(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_LOADING_STATE *state); +FMOD_RESULT FMOD_Studio_Bank_GetStringCount(FMOD_STUDIO_BANK *bank, int *count); +FMOD_RESULT FMOD_Studio_Bank_GetStringInfo(FMOD_STUDIO_BANK *bank, int index, FMOD_GUID *id, char *path, int size, int *retrieved); +FMOD_RESULT FMOD_Studio_Bank_GetEventCount(FMOD_STUDIO_BANK *bank, int *count); +FMOD_RESULT FMOD_Studio_Bank_GetEventList(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_EVENTDESCRIPTION **array, int capacity, int *count); +FMOD_RESULT FMOD_Studio_Bank_GetBusCount(FMOD_STUDIO_BANK *bank, int *count); +FMOD_RESULT FMOD_Studio_Bank_GetBusList(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_BUS **array, int capacity, int *count); +FMOD_RESULT FMOD_Studio_Bank_GetVCACount(FMOD_STUDIO_BANK *bank, int *count); +FMOD_RESULT FMOD_Studio_Bank_GetVCAList(FMOD_STUDIO_BANK *bank, FMOD_STUDIO_VCA **array, int capacity, int *count); +FMOD_RESULT FMOD_Studio_Bank_GetUserData(FMOD_STUDIO_BANK *bank, void **userdata); +FMOD_RESULT FMOD_Studio_Bank_SetUserData(FMOD_STUDIO_BANK *bank, void *userdata); +FMOD_BOOL FMOD_Studio_CommandReplay_IsValid(FMOD_STUDIO_COMMANDREPLAY *replay); +FMOD_RESULT FMOD_Studio_CommandReplay_GetSystem(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_SYSTEM **system); +FMOD_RESULT FMOD_Studio_CommandReplay_GetLength(FMOD_STUDIO_COMMANDREPLAY *replay, float *length); +FMOD_RESULT FMOD_Studio_CommandReplay_GetCommandCount(FMOD_STUDIO_COMMANDREPLAY *replay, int *count); +FMOD_RESULT FMOD_Studio_CommandReplay_GetCommandInfo(FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, FMOD_STUDIO_COMMAND_INFO *info); +FMOD_RESULT FMOD_Studio_CommandReplay_GetCommandString(FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex, char *buffer, int length); +FMOD_RESULT FMOD_Studio_CommandReplay_GetCommandAtTime(FMOD_STUDIO_COMMANDREPLAY *replay, float time, int *commandindex); +FMOD_RESULT FMOD_Studio_CommandReplay_SetBankPath(FMOD_STUDIO_COMMANDREPLAY *replay, const char *bankPath); +FMOD_RESULT FMOD_Studio_CommandReplay_Start(FMOD_STUDIO_COMMANDREPLAY *replay); +FMOD_RESULT FMOD_Studio_CommandReplay_Stop(FMOD_STUDIO_COMMANDREPLAY *replay); +FMOD_RESULT FMOD_Studio_CommandReplay_SeekToTime(FMOD_STUDIO_COMMANDREPLAY *replay, float time); +FMOD_RESULT FMOD_Studio_CommandReplay_SeekToCommand(FMOD_STUDIO_COMMANDREPLAY *replay, int commandindex); +FMOD_RESULT FMOD_Studio_CommandReplay_GetPaused(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_BOOL *paused); +FMOD_RESULT FMOD_Studio_CommandReplay_SetPaused(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_BOOL paused); +FMOD_RESULT FMOD_Studio_CommandReplay_GetPlaybackState(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_PLAYBACK_STATE *state); +FMOD_RESULT FMOD_Studio_CommandReplay_GetCurrentCommand(FMOD_STUDIO_COMMANDREPLAY *replay, int *commandindex, float *currenttime); +FMOD_RESULT FMOD_Studio_CommandReplay_Release(FMOD_STUDIO_COMMANDREPLAY *replay); +FMOD_RESULT FMOD_Studio_CommandReplay_SetFrameCallback(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK callback); +FMOD_RESULT FMOD_Studio_CommandReplay_SetLoadBankCallback(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK callback); +FMOD_RESULT FMOD_Studio_CommandReplay_SetCreateInstanceCallback(FMOD_STUDIO_COMMANDREPLAY *replay, FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK callback); +FMOD_RESULT FMOD_Studio_CommandReplay_GetUserData(FMOD_STUDIO_COMMANDREPLAY *replay, void **userdata); +FMOD_RESULT FMOD_Studio_CommandReplay_SetUserData(FMOD_STUDIO_COMMANDREPLAY *replay, void *userdata); +]] diff --git a/assets/fmod20221/constants.lua b/assets/fmod20221/constants.lua new file mode 100644 index 00000000..63c76771 --- /dev/null +++ b/assets/fmod20221/constants.lua @@ -0,0 +1,277 @@ +local bit=require("bit") +local ffi=require("ffi") +local path=(...):gsub("[^%.]*$", "") +local r=require; local function require(m) return r(path..m) end + +---@class FMOD.master +local M=require("master") + +M.FMOD_VERSION=0x00020221 +M.FMOD_DEBUG_LEVEL_NONE=0x00000000 +M.FMOD_DEBUG_LEVEL_ERROR=0x00000001 +M.FMOD_DEBUG_LEVEL_WARNING=0x00000002 +M.FMOD_DEBUG_LEVEL_LOG=0x00000004 +M.FMOD_DEBUG_TYPE_MEMORY=0x00000100 +M.FMOD_DEBUG_TYPE_FILE=0x00000200 +M.FMOD_DEBUG_TYPE_CODEC=0x00000400 +M.FMOD_DEBUG_TYPE_TRACE=0x00000800 +M.FMOD_DEBUG_DISPLAY_TIMESTAMPS=0x00010000 +M.FMOD_DEBUG_DISPLAY_LINENUMBERS=0x00020000 +M.FMOD_DEBUG_DISPLAY_THREAD=0x00040000 +M.FMOD_MEMORY_NORMAL=0x00000000 +M.FMOD_MEMORY_STREAM_FILE=0x00000001 +M.FMOD_MEMORY_STREAM_DECODE=0x00000002 +M.FMOD_MEMORY_SAMPLEDATA=0x00000004 +M.FMOD_MEMORY_DSP_BUFFER=0x00000008 +M.FMOD_MEMORY_PLUGIN=0x00000010 +M.FMOD_MEMORY_PERSISTENT=0x00200000 +M.FMOD_MEMORY_ALL=0xFFFFFFFF +M.FMOD_INIT_NORMAL=0x00000000 +M.FMOD_INIT_STREAM_FROM_UPDATE=0x00000001 +M.FMOD_INIT_MIX_FROM_UPDATE=0x00000002 +M.FMOD_INIT_3D_RIGHTHANDED=0x00000004 +M.FMOD_INIT_CLIP_OUTPUT=0x00000008 +M.FMOD_INIT_CHANNEL_LOWPASS=0x00000100 +M.FMOD_INIT_CHANNEL_DISTANCEFILTER=0x00000200 +M.FMOD_INIT_PROFILE_ENABLE=0x00010000 +M.FMOD_INIT_VOL0_BECOMES_VIRTUAL=0x00020000 +M.FMOD_INIT_GEOMETRY_USECLOSEST=0x00040000 +M.FMOD_INIT_PREFER_DOLBY_DOWNMIX=0x00080000 +M.FMOD_INIT_THREAD_UNSAFE=0x00100000 +M.FMOD_INIT_PROFILE_METER_ALL=0x00200000 +M.FMOD_INIT_MEMORY_TRACKING=0x00400000 +M.FMOD_DRIVER_STATE_CONNECTED=0x00000001 +M.FMOD_DRIVER_STATE_DEFAULT=0x00000002 +M.FMOD_TIMEUNIT_MS=0x00000001 +M.FMOD_TIMEUNIT_PCM=0x00000002 +M.FMOD_TIMEUNIT_PCMBYTES=0x00000004 +M.FMOD_TIMEUNIT_RAWBYTES=0x00000008 +M.FMOD_TIMEUNIT_PCMFRACTION=0x00000010 +M.FMOD_TIMEUNIT_MODORDER=0x00000100 +M.FMOD_TIMEUNIT_MODROW=0x00000200 +M.FMOD_TIMEUNIT_MODPATTERN=0x00000400 +M.FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED=0x00000001 +M.FMOD_SYSTEM_CALLBACK_DEVICELOST=0x00000002 +M.FMOD_SYSTEM_CALLBACK_MEMORYALLOCATIONFAILED=0x00000004 +M.FMOD_SYSTEM_CALLBACK_THREADCREATED=0x00000008 +M.FMOD_SYSTEM_CALLBACK_BADDSPCONNECTION=0x00000010 +M.FMOD_SYSTEM_CALLBACK_PREMIX=0x00000020 +M.FMOD_SYSTEM_CALLBACK_POSTMIX=0x00000040 +M.FMOD_SYSTEM_CALLBACK_ERROR=0x00000080 +M.FMOD_SYSTEM_CALLBACK_MIDMIX=0x00000100 +M.FMOD_SYSTEM_CALLBACK_THREADDESTROYED=0x00000200 +M.FMOD_SYSTEM_CALLBACK_PREUPDATE=0x00000400 +M.FMOD_SYSTEM_CALLBACK_POSTUPDATE=0x00000800 +M.FMOD_SYSTEM_CALLBACK_RECORDLISTCHANGED=0x00001000 +M.FMOD_SYSTEM_CALLBACK_BUFFEREDNOMIX=0x00002000 +M.FMOD_SYSTEM_CALLBACK_DEVICEREINITIALIZE=0x00004000 +M.FMOD_SYSTEM_CALLBACK_OUTPUTUNDERRUN=0x00008000 +M.FMOD_SYSTEM_CALLBACK_RECORDPOSITIONCHANGED=0x00010000 +M.FMOD_SYSTEM_CALLBACK_ALL=0xFFFFFFFF +M.FMOD_DEFAULT=0x00000000 +M.FMOD_LOOP_OFF=0x00000001 +M.FMOD_LOOP_NORMAL=0x00000002 +M.FMOD_LOOP_BIDI=0x00000004 +M.FMOD_2D=0x00000008 +M.FMOD_3D=0x00000010 +M.FMOD_CREATESTREAM=0x00000080 +M.FMOD_CREATESAMPLE=0x00000100 +M.FMOD_CREATECOMPRESSEDSAMPLE=0x00000200 +M.FMOD_OPENUSER=0x00000400 +M.FMOD_OPENMEMORY=0x00000800 +M.FMOD_OPENMEMORY_POINT=0x10000000 +M.FMOD_OPENRAW=0x00001000 +M.FMOD_OPENONLY=0x00002000 +M.FMOD_ACCURATETIME=0x00004000 +M.FMOD_MPEGSEARCH=0x00008000 +M.FMOD_NONBLOCKING=0x00010000 +M.FMOD_UNIQUE=0x00020000 +M.FMOD_3D_HEADRELATIVE=0x00040000 +M.FMOD_3D_WORLDRELATIVE=0x00080000 +M.FMOD_3D_INVERSEROLLOFF=0x00100000 +M.FMOD_3D_LINEARROLLOFF=0x00200000 +M.FMOD_3D_LINEARSQUAREROLLOFF=0x00400000 +M.FMOD_3D_INVERSETAPEREDROLLOFF=0x00800000 +M.FMOD_3D_CUSTOMROLLOFF=0x04000000 +M.FMOD_3D_IGNOREGEOMETRY=0x40000000 +M.FMOD_IGNORETAGS=0x02000000 +M.FMOD_LOWMEM=0x08000000 +M.FMOD_VIRTUAL_PLAYFROMSTART=0x80000000 +M.FMOD_CHANNELMASK_FRONT_LEFT=0x00000001 +M.FMOD_CHANNELMASK_FRONT_RIGHT=0x00000002 +M.FMOD_CHANNELMASK_FRONT_CENTER=0x00000004 +M.FMOD_CHANNELMASK_LOW_FREQUENCY=0x00000008 +M.FMOD_CHANNELMASK_SURROUND_LEFT=0x00000010 +M.FMOD_CHANNELMASK_SURROUND_RIGHT=0x00000020 +M.FMOD_CHANNELMASK_BACK_LEFT=0x00000040 +M.FMOD_CHANNELMASK_BACK_RIGHT=0x00000080 +M.FMOD_CHANNELMASK_BACK_CENTER=0x00000100 +M.FMOD_CHANNELMASK_MONO=M.FMOD_CHANNELMASK_FRONT_LEFT +M.FMOD_CHANNELMASK_STEREO=bit.bor(M.FMOD_CHANNELMASK_FRONT_LEFT,M.FMOD_CHANNELMASK_FRONT_RIGHT) +M.FMOD_CHANNELMASK_LRC=bit.bor(M.FMOD_CHANNELMASK_FRONT_LEFT,M.FMOD_CHANNELMASK_FRONT_RIGHT,M.FMOD_CHANNELMASK_FRONT_CENTER) +M.FMOD_CHANNELMASK_QUAD=bit.bor(M.FMOD_CHANNELMASK_FRONT_LEFT,M.FMOD_CHANNELMASK_FRONT_RIGHT,M.FMOD_CHANNELMASK_SURROUND_LEFT,M.FMOD_CHANNELMASK_SURROUND_RIGHT) +M.FMOD_CHANNELMASK_SURROUND=bit.bor(M.FMOD_CHANNELMASK_FRONT_LEFT,M.FMOD_CHANNELMASK_FRONT_RIGHT,M.FMOD_CHANNELMASK_FRONT_CENTER,M.FMOD_CHANNELMASK_SURROUND_LEFT,M.FMOD_CHANNELMASK_SURROUND_RIGHT) +M.FMOD_CHANNELMASK_5POINT1=bit.bor(M.FMOD_CHANNELMASK_FRONT_LEFT,M.FMOD_CHANNELMASK_FRONT_RIGHT,M.FMOD_CHANNELMASK_FRONT_CENTER,M.FMOD_CHANNELMASK_LOW_FREQUENCY,M.FMOD_CHANNELMASK_SURROUND_LEFT,M.FMOD_CHANNELMASK_SURROUND_RIGHT) +M.FMOD_CHANNELMASK_5POINT1_REARS=bit.bor(M.FMOD_CHANNELMASK_FRONT_LEFT,M.FMOD_CHANNELMASK_FRONT_RIGHT,M.FMOD_CHANNELMASK_FRONT_CENTER,M.FMOD_CHANNELMASK_LOW_FREQUENCY,M.FMOD_CHANNELMASK_BACK_LEFT,M.FMOD_CHANNELMASK_BACK_RIGHT) +M.FMOD_CHANNELMASK_7POINT0=bit.bor(M.FMOD_CHANNELMASK_FRONT_LEFT,M.FMOD_CHANNELMASK_FRONT_RIGHT,M.FMOD_CHANNELMASK_FRONT_CENTER,M.FMOD_CHANNELMASK_SURROUND_LEFT,M.FMOD_CHANNELMASK_SURROUND_RIGHT,M.FMOD_CHANNELMASK_BACK_LEFT,M.FMOD_CHANNELMASK_BACK_RIGHT) +M.FMOD_CHANNELMASK_7POINT1=bit.bor(M.FMOD_CHANNELMASK_FRONT_LEFT,M.FMOD_CHANNELMASK_FRONT_RIGHT,M.FMOD_CHANNELMASK_FRONT_CENTER,M.FMOD_CHANNELMASK_LOW_FREQUENCY,M.FMOD_CHANNELMASK_SURROUND_LEFT,M.FMOD_CHANNELMASK_SURROUND_RIGHT,M.FMOD_CHANNELMASK_BACK_LEFT,M.FMOD_CHANNELMASK_BACK_RIGHT) +M.FMOD_PORT_INDEX_NONE=0xFFFFFFFFFFFFFFFFLL +M.FMOD_PORT_INDEX_FLAG_VR_CONTROLLER=0x1000000000000000LL +M.FMOD_THREAD_PRIORITY_PLATFORM_MIN=-32*1024 +M.FMOD_THREAD_PRIORITY_PLATFORM_MAX=32*1024 +M.FMOD_THREAD_PRIORITY_DEFAULT=(M.FMOD_THREAD_PRIORITY_PLATFORM_MIN-1) +M.FMOD_THREAD_PRIORITY_LOW=(M.FMOD_THREAD_PRIORITY_PLATFORM_MIN-2) +M.FMOD_THREAD_PRIORITY_MEDIUM=(M.FMOD_THREAD_PRIORITY_PLATFORM_MIN-3) +M.FMOD_THREAD_PRIORITY_HIGH=(M.FMOD_THREAD_PRIORITY_PLATFORM_MIN-4) +M.FMOD_THREAD_PRIORITY_VERY_HIGH=(M.FMOD_THREAD_PRIORITY_PLATFORM_MIN-5) +M.FMOD_THREAD_PRIORITY_EXTREME=(M.FMOD_THREAD_PRIORITY_PLATFORM_MIN-6) +M.FMOD_THREAD_PRIORITY_CRITICAL=(M.FMOD_THREAD_PRIORITY_PLATFORM_MIN-7) +M.FMOD_THREAD_PRIORITY_MIXER=M.FMOD_THREAD_PRIORITY_EXTREME +M.FMOD_THREAD_PRIORITY_FEEDER=M.FMOD_THREAD_PRIORITY_CRITICAL +M.FMOD_THREAD_PRIORITY_STREAM=M.FMOD_THREAD_PRIORITY_VERY_HIGH +M.FMOD_THREAD_PRIORITY_FILE=M.FMOD_THREAD_PRIORITY_HIGH +M.FMOD_THREAD_PRIORITY_NONBLOCKING=M.FMOD_THREAD_PRIORITY_HIGH +M.FMOD_THREAD_PRIORITY_RECORD=M.FMOD_THREAD_PRIORITY_HIGH +M.FMOD_THREAD_PRIORITY_GEOMETRY=M.FMOD_THREAD_PRIORITY_LOW +M.FMOD_THREAD_PRIORITY_PROFILER=M.FMOD_THREAD_PRIORITY_MEDIUM +M.FMOD_THREAD_PRIORITY_STUDIO_UPDATE=M.FMOD_THREAD_PRIORITY_MEDIUM +M.FMOD_THREAD_PRIORITY_STUDIO_LOAD_BANK=M.FMOD_THREAD_PRIORITY_MEDIUM +M.FMOD_THREAD_PRIORITY_STUDIO_LOAD_SAMPLE=M.FMOD_THREAD_PRIORITY_MEDIUM +M.FMOD_THREAD_PRIORITY_CONVOLUTION1=M.FMOD_THREAD_PRIORITY_VERY_HIGH +M.FMOD_THREAD_PRIORITY_CONVOLUTION2=M.FMOD_THREAD_PRIORITY_VERY_HIGH +M.FMOD_THREAD_STACK_SIZE_DEFAULT=0 +M.FMOD_THREAD_STACK_SIZE_MIXER=80*1024 +M.FMOD_THREAD_STACK_SIZE_FEEDER=16*1024 +M.FMOD_THREAD_STACK_SIZE_STREAM=96*1024 +M.FMOD_THREAD_STACK_SIZE_FILE=64*1024 +M.FMOD_THREAD_STACK_SIZE_NONBLOCKING=112*1024 +M.FMOD_THREAD_STACK_SIZE_RECORD=16*1024 +M.FMOD_THREAD_STACK_SIZE_GEOMETRY=48*1024 +M.FMOD_THREAD_STACK_SIZE_PROFILER=128*1024 +M.FMOD_THREAD_STACK_SIZE_STUDIO_UPDATE=96*1024 +M.FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_BANK=96*1024 +M.FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_SAMPLE=96*1024 +M.FMOD_THREAD_STACK_SIZE_CONVOLUTION1=16*1024 +M.FMOD_THREAD_STACK_SIZE_CONVOLUTION2=16*1024 +M.FMOD_THREAD_AFFINITY_GROUP_DEFAULT=0x4000000000000000LL +M.FMOD_THREAD_AFFINITY_GROUP_A=0x4000000000000001LL +M.FMOD_THREAD_AFFINITY_GROUP_B=0x4000000000000002LL +M.FMOD_THREAD_AFFINITY_GROUP_C=0x4000000000000003LL +M.FMOD_THREAD_AFFINITY_MIXER=M.FMOD_THREAD_AFFINITY_GROUP_A +M.FMOD_THREAD_AFFINITY_FEEDER=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_STREAM=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_FILE=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_NONBLOCKING=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_RECORD=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_GEOMETRY=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_PROFILER=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_STUDIO_UPDATE=M.FMOD_THREAD_AFFINITY_GROUP_B +M.FMOD_THREAD_AFFINITY_STUDIO_LOAD_BANK=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_STUDIO_LOAD_SAMPLE=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_CONVOLUTION1=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_CONVOLUTION2=M.FMOD_THREAD_AFFINITY_GROUP_C +M.FMOD_THREAD_AFFINITY_CORE_ALL=0 +M.FMOD_THREAD_AFFINITY_CORE_0=bit.lshift(1,0) +M.FMOD_THREAD_AFFINITY_CORE_1=bit.lshift(1,1) +M.FMOD_THREAD_AFFINITY_CORE_2=bit.lshift(1,2) +M.FMOD_THREAD_AFFINITY_CORE_3=bit.lshift(1,3) +M.FMOD_THREAD_AFFINITY_CORE_4=bit.lshift(1,4) +M.FMOD_THREAD_AFFINITY_CORE_5=bit.lshift(1,5) +M.FMOD_THREAD_AFFINITY_CORE_6=bit.lshift(1,6) +M.FMOD_THREAD_AFFINITY_CORE_7=bit.lshift(1,7) +M.FMOD_THREAD_AFFINITY_CORE_8=bit.lshift(1,8) +M.FMOD_THREAD_AFFINITY_CORE_9=bit.lshift(1,9) +M.FMOD_THREAD_AFFINITY_CORE_10=bit.lshift(1,10) +M.FMOD_THREAD_AFFINITY_CORE_11=bit.lshift(1,11) +M.FMOD_THREAD_AFFINITY_CORE_12=bit.lshift(1,12) +M.FMOD_THREAD_AFFINITY_CORE_13=bit.lshift(1,13) +M.FMOD_THREAD_AFFINITY_CORE_14=bit.lshift(1,14) +M.FMOD_THREAD_AFFINITY_CORE_15=bit.lshift(1,15) +M.FMOD_PRESET_OFF=ffi.new("FMOD_REVERB_PROPERTIES", 1000,7,11,5000,100,100,100,250,0,20,96,-80.0) +M.FMOD_PRESET_GENERIC=ffi.new("FMOD_REVERB_PROPERTIES", 1500,7,11,5000,83,100,100,250,0,14500,96,-8.0) +M.FMOD_PRESET_PADDEDCELL=ffi.new("FMOD_REVERB_PROPERTIES", 170,1,2,5000,10,100,100,250,0,160,84,-7.8) +M.FMOD_PRESET_ROOM=ffi.new("FMOD_REVERB_PROPERTIES", 400,2,3,5000,83,100,100,250,0,6050,88,-9.4) +M.FMOD_PRESET_BATHROOM=ffi.new("FMOD_REVERB_PROPERTIES", 1500,7,11,5000,54,100,60,250,0,2900,83,0.5) +M.FMOD_PRESET_LIVINGROOM=ffi.new("FMOD_REVERB_PROPERTIES", 500,3,4,5000,10,100,100,250,0,160,58,-19.0) +M.FMOD_PRESET_STONEROOM=ffi.new("FMOD_REVERB_PROPERTIES", 2300,12,17,5000,64,100,100,250,0,7800,71,-8.5) +M.FMOD_PRESET_AUDITORIUM=ffi.new("FMOD_REVERB_PROPERTIES", 4300,20,30,5000,59,100,100,250,0,5850,64,-11.7) +M.FMOD_PRESET_CONCERTHALL=ffi.new("FMOD_REVERB_PROPERTIES", 3900,20,29,5000,70,100,100,250,0,5650,80,-9.8) +M.FMOD_PRESET_CAVE=ffi.new("FMOD_REVERB_PROPERTIES", 2900,15,22,5000,100,100,100,250,0,20000,59,-11.3) +M.FMOD_PRESET_ARENA=ffi.new("FMOD_REVERB_PROPERTIES", 7200,20,30,5000,33,100,100,250,0,4500,80,-9.6) +M.FMOD_PRESET_HANGAR=ffi.new("FMOD_REVERB_PROPERTIES", 10000,20,30,5000,23,100,100,250,0,3400,72,-7.4) +M.FMOD_PRESET_CARPETTEDHALLWAY=ffi.new("FMOD_REVERB_PROPERTIES", 300,2,30,5000,10,100,100,250,0,500,56,-24.0) +M.FMOD_PRESET_HALLWAY=ffi.new("FMOD_REVERB_PROPERTIES", 1500,7,11,5000,59,100,100,250,0,7800,87,-5.5) +M.FMOD_PRESET_STONECORRIDOR=ffi.new("FMOD_REVERB_PROPERTIES", 270,13,20,5000,79,100,100,250,0,9000,86,-6.0) +M.FMOD_PRESET_ALLEY=ffi.new("FMOD_REVERB_PROPERTIES", 1500,7,11,5000,86,100,100,250,0,8300,80,-9.8) +M.FMOD_PRESET_FOREST=ffi.new("FMOD_REVERB_PROPERTIES", 1500,162,88,5000,54,79,100,250,0,760,94,-12.3) +M.FMOD_PRESET_CITY=ffi.new("FMOD_REVERB_PROPERTIES", 1500,7,11,5000,67,50,100,250,0,4050,66,-26.0) +M.FMOD_PRESET_MOUNTAINS=ffi.new("FMOD_REVERB_PROPERTIES", 1500,300,100,5000,21,27,100,250,0,1220,82,-24.0) +M.FMOD_PRESET_QUARRY=ffi.new("FMOD_REVERB_PROPERTIES", 1500,61,25,5000,83,100,100,250,0,3400,100,-5.0) +M.FMOD_PRESET_PLAIN=ffi.new("FMOD_REVERB_PROPERTIES", 1500,179,100,5000,50,21,100,250,0,1670,65,-28.0) +M.FMOD_PRESET_PARKINGLOT=ffi.new("FMOD_REVERB_PROPERTIES", 1700,8,12,5000,100,100,100,250,0,20000,56,-19.5) +M.FMOD_PRESET_SEWERPIPE=ffi.new("FMOD_REVERB_PROPERTIES", 2800,14,21,5000,14,80,60,250,0,3400,66,1.2) +M.FMOD_PRESET_UNDERWATER=ffi.new("FMOD_REVERB_PROPERTIES", 1500,7,11,5000,10,100,100,250,0,500,92,7.0) +M.FMOD_MAX_CHANNEL_WIDTH=32 +M.FMOD_MAX_SYSTEMS=8 +M.FMOD_MAX_LISTENERS=8 +M.FMOD_REVERB_MAXINSTANCES=4 +M.FMOD_CODEC_PLUGIN_VERSION=1 +M.FMOD_CODEC_SEEK_METHOD_SET=0 +M.FMOD_CODEC_SEEK_METHOD_CURRENT=1 +M.FMOD_CODEC_SEEK_METHOD_END=2 +M.FMOD_DSP_LOUDNESS_METER_HISTOGRAM_SAMPLES=66 +M.FMOD_PLUGIN_SDK_VERSION=110 +M.FMOD_DSP_GETPARAM_VALUESTR_LENGTH=32 +M.FMOD_OUTPUT_PLUGIN_VERSION=5 +M.FMOD_OUTPUT_METHOD_MIX_DIRECT=0 +M.FMOD_OUTPUT_METHOD_MIX_BUFFERED=1 +M.FMOD_STUDIO_LOAD_MEMORY_ALIGNMENT=32 +M.FMOD_STUDIO_INIT_NORMAL=0x00000000 +M.FMOD_STUDIO_INIT_LIVEUPDATE=0x00000001 +M.FMOD_STUDIO_INIT_ALLOW_MISSING_PLUGINS=0x00000002 +M.FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE=0x00000004 +M.FMOD_STUDIO_INIT_DEFERRED_CALLBACKS=0x00000008 +M.FMOD_STUDIO_INIT_LOAD_FROM_UPDATE=0x00000010 +M.FMOD_STUDIO_INIT_MEMORY_TRACKING=0x00000020 +M.FMOD_STUDIO_PARAMETER_READONLY=0x00000001 +M.FMOD_STUDIO_PARAMETER_AUTOMATIC=0x00000002 +M.FMOD_STUDIO_PARAMETER_GLOBAL=0x00000004 +M.FMOD_STUDIO_PARAMETER_DISCRETE=0x00000008 +M.FMOD_STUDIO_PARAMETER_LABELED=0x00000010 +M.FMOD_STUDIO_SYSTEM_CALLBACK_PREUPDATE=0x00000001 +M.FMOD_STUDIO_SYSTEM_CALLBACK_POSTUPDATE=0x00000002 +M.FMOD_STUDIO_SYSTEM_CALLBACK_BANK_UNLOAD=0x00000004 +M.FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_CONNECTED=0x00000008 +M.FMOD_STUDIO_SYSTEM_CALLBACK_LIVEUPDATE_DISCONNECTED=0x00000010 +M.FMOD_STUDIO_SYSTEM_CALLBACK_ALL=0xFFFFFFFF +M.FMOD_STUDIO_EVENT_CALLBACK_CREATED=0x00000001 +M.FMOD_STUDIO_EVENT_CALLBACK_DESTROYED=0x00000002 +M.FMOD_STUDIO_EVENT_CALLBACK_STARTING=0x00000004 +M.FMOD_STUDIO_EVENT_CALLBACK_STARTED=0x00000008 +M.FMOD_STUDIO_EVENT_CALLBACK_RESTARTED=0x00000010 +M.FMOD_STUDIO_EVENT_CALLBACK_STOPPED=0x00000020 +M.FMOD_STUDIO_EVENT_CALLBACK_START_FAILED=0x00000040 +M.FMOD_STUDIO_EVENT_CALLBACK_CREATE_PROGRAMMER_SOUND=0x00000080 +M.FMOD_STUDIO_EVENT_CALLBACK_DESTROY_PROGRAMMER_SOUND=0x00000100 +M.FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_CREATED=0x00000200 +M.FMOD_STUDIO_EVENT_CALLBACK_PLUGIN_DESTROYED=0x00000400 +M.FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_MARKER=0x00000800 +M.FMOD_STUDIO_EVENT_CALLBACK_TIMELINE_BEAT=0x00001000 +M.FMOD_STUDIO_EVENT_CALLBACK_SOUND_PLAYED=0x00002000 +M.FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED=0x00004000 +M.FMOD_STUDIO_EVENT_CALLBACK_REAL_TO_VIRTUAL=0x00008000 +M.FMOD_STUDIO_EVENT_CALLBACK_VIRTUAL_TO_REAL=0x00010000 +M.FMOD_STUDIO_EVENT_CALLBACK_START_EVENT_COMMAND=0x00020000 +M.FMOD_STUDIO_EVENT_CALLBACK_NESTED_TIMELINE_BEAT=0x00040000 +M.FMOD_STUDIO_EVENT_CALLBACK_ALL=0xFFFFFFFF +M.FMOD_STUDIO_LOAD_BANK_NORMAL=0x00000000 +M.FMOD_STUDIO_LOAD_BANK_NONBLOCKING=0x00000001 +M.FMOD_STUDIO_LOAD_BANK_DECOMPRESS_SAMPLES=0x00000002 +M.FMOD_STUDIO_LOAD_BANK_UNENCRYPTED=0x00000004 +M.FMOD_STUDIO_COMMANDCAPTURE_NORMAL=0x00000000 +M.FMOD_STUDIO_COMMANDCAPTURE_FILEFLUSH=0x00000001 +M.FMOD_STUDIO_COMMANDCAPTURE_SKIP_INITIAL_STATE=0x00000002 +M.FMOD_STUDIO_COMMANDREPLAY_NORMAL=0x00000000 +M.FMOD_STUDIO_COMMANDREPLAY_SKIP_CLEANUP=0x00000001 +M.FMOD_STUDIO_COMMANDREPLAY_FAST_FORWARD=0x00000002 +M.FMOD_STUDIO_COMMANDREPLAY_SKIP_BANK_LOAD=0x00000004 diff --git a/assets/fmod20221/enums.lua b/assets/fmod20221/enums.lua new file mode 100644 index 00000000..998b7e50 --- /dev/null +++ b/assets/fmod20221/enums.lua @@ -0,0 +1,397 @@ +local path=(...):gsub("[^%.]*$", "") +local r=require; local function require(m) return r(path..m) end + +---@class FMOD.master +local M=require("master") +local C=M.C + +M.FMOD_THREAD_TYPE_MIXER=C.FMOD_THREAD_TYPE_MIXER +M.FMOD_THREAD_TYPE_FEEDER=C.FMOD_THREAD_TYPE_FEEDER +M.FMOD_THREAD_TYPE_STREAM=C.FMOD_THREAD_TYPE_STREAM +M.FMOD_THREAD_TYPE_FILE=C.FMOD_THREAD_TYPE_FILE +M.FMOD_THREAD_TYPE_NONBLOCKING=C.FMOD_THREAD_TYPE_NONBLOCKING +M.FMOD_THREAD_TYPE_RECORD=C.FMOD_THREAD_TYPE_RECORD +M.FMOD_THREAD_TYPE_GEOMETRY=C.FMOD_THREAD_TYPE_GEOMETRY +M.FMOD_THREAD_TYPE_PROFILER=C.FMOD_THREAD_TYPE_PROFILER +M.FMOD_THREAD_TYPE_STUDIO_UPDATE=C.FMOD_THREAD_TYPE_STUDIO_UPDATE +M.FMOD_THREAD_TYPE_STUDIO_LOAD_BANK=C.FMOD_THREAD_TYPE_STUDIO_LOAD_BANK +M.FMOD_THREAD_TYPE_STUDIO_LOAD_SAMPLE=C.FMOD_THREAD_TYPE_STUDIO_LOAD_SAMPLE +M.FMOD_THREAD_TYPE_CONVOLUTION1=C.FMOD_THREAD_TYPE_CONVOLUTION1 +M.FMOD_THREAD_TYPE_CONVOLUTION2=C.FMOD_THREAD_TYPE_CONVOLUTION2 +M.FMOD_THREAD_TYPE_MAX=C.FMOD_THREAD_TYPE_MAX +M.FMOD_THREAD_TYPE_FORCEINT=C.FMOD_THREAD_TYPE_FORCEINT +M.FMOD_OK=C.FMOD_OK +M.FMOD_ERR_BADCOMMAND=C.FMOD_ERR_BADCOMMAND +M.FMOD_ERR_CHANNEL_ALLOC=C.FMOD_ERR_CHANNEL_ALLOC +M.FMOD_ERR_CHANNEL_STOLEN=C.FMOD_ERR_CHANNEL_STOLEN +M.FMOD_ERR_DMA=C.FMOD_ERR_DMA +M.FMOD_ERR_DSP_CONNECTION=C.FMOD_ERR_DSP_CONNECTION +M.FMOD_ERR_DSP_DONTPROCESS=C.FMOD_ERR_DSP_DONTPROCESS +M.FMOD_ERR_DSP_FORMAT=C.FMOD_ERR_DSP_FORMAT +M.FMOD_ERR_DSP_INUSE=C.FMOD_ERR_DSP_INUSE +M.FMOD_ERR_DSP_NOTFOUND=C.FMOD_ERR_DSP_NOTFOUND +M.FMOD_ERR_DSP_RESERVED=C.FMOD_ERR_DSP_RESERVED +M.FMOD_ERR_DSP_SILENCE=C.FMOD_ERR_DSP_SILENCE +M.FMOD_ERR_DSP_TYPE=C.FMOD_ERR_DSP_TYPE +M.FMOD_ERR_FILE_BAD=C.FMOD_ERR_FILE_BAD +M.FMOD_ERR_FILE_COULDNOTSEEK=C.FMOD_ERR_FILE_COULDNOTSEEK +M.FMOD_ERR_FILE_DISKEJECTED=C.FMOD_ERR_FILE_DISKEJECTED +M.FMOD_ERR_FILE_EOF=C.FMOD_ERR_FILE_EOF +M.FMOD_ERR_FILE_ENDOFDATA=C.FMOD_ERR_FILE_ENDOFDATA +M.FMOD_ERR_FILE_NOTFOUND=C.FMOD_ERR_FILE_NOTFOUND +M.FMOD_ERR_FORMAT=C.FMOD_ERR_FORMAT +M.FMOD_ERR_HEADER_MISMATCH=C.FMOD_ERR_HEADER_MISMATCH +M.FMOD_ERR_HTTP=C.FMOD_ERR_HTTP +M.FMOD_ERR_HTTP_ACCESS=C.FMOD_ERR_HTTP_ACCESS +M.FMOD_ERR_HTTP_PROXY_AUTH=C.FMOD_ERR_HTTP_PROXY_AUTH +M.FMOD_ERR_HTTP_SERVER_ERROR=C.FMOD_ERR_HTTP_SERVER_ERROR +M.FMOD_ERR_HTTP_TIMEOUT=C.FMOD_ERR_HTTP_TIMEOUT +M.FMOD_ERR_INITIALIZATION=C.FMOD_ERR_INITIALIZATION +M.FMOD_ERR_INITIALIZED=C.FMOD_ERR_INITIALIZED +M.FMOD_ERR_INTERNAL=C.FMOD_ERR_INTERNAL +M.FMOD_ERR_INVALID_FLOAT=C.FMOD_ERR_INVALID_FLOAT +M.FMOD_ERR_INVALID_HANDLE=C.FMOD_ERR_INVALID_HANDLE +M.FMOD_ERR_INVALID_PARAM=C.FMOD_ERR_INVALID_PARAM +M.FMOD_ERR_INVALID_POSITION=C.FMOD_ERR_INVALID_POSITION +M.FMOD_ERR_INVALID_SPEAKER=C.FMOD_ERR_INVALID_SPEAKER +M.FMOD_ERR_INVALID_SYNCPOINT=C.FMOD_ERR_INVALID_SYNCPOINT +M.FMOD_ERR_INVALID_THREAD=C.FMOD_ERR_INVALID_THREAD +M.FMOD_ERR_INVALID_VECTOR=C.FMOD_ERR_INVALID_VECTOR +M.FMOD_ERR_MAXAUDIBLE=C.FMOD_ERR_MAXAUDIBLE +M.FMOD_ERR_MEMORY=C.FMOD_ERR_MEMORY +M.FMOD_ERR_MEMORY_CANTPOINT=C.FMOD_ERR_MEMORY_CANTPOINT +M.FMOD_ERR_NEEDS3D=C.FMOD_ERR_NEEDS3D +M.FMOD_ERR_NEEDSHARDWARE=C.FMOD_ERR_NEEDSHARDWARE +M.FMOD_ERR_NET_CONNECT=C.FMOD_ERR_NET_CONNECT +M.FMOD_ERR_NET_SOCKET_ERROR=C.FMOD_ERR_NET_SOCKET_ERROR +M.FMOD_ERR_NET_URL=C.FMOD_ERR_NET_URL +M.FMOD_ERR_NET_WOULD_BLOCK=C.FMOD_ERR_NET_WOULD_BLOCK +M.FMOD_ERR_NOTREADY=C.FMOD_ERR_NOTREADY +M.FMOD_ERR_OUTPUT_ALLOCATED=C.FMOD_ERR_OUTPUT_ALLOCATED +M.FMOD_ERR_OUTPUT_CREATEBUFFER=C.FMOD_ERR_OUTPUT_CREATEBUFFER +M.FMOD_ERR_OUTPUT_DRIVERCALL=C.FMOD_ERR_OUTPUT_DRIVERCALL +M.FMOD_ERR_OUTPUT_FORMAT=C.FMOD_ERR_OUTPUT_FORMAT +M.FMOD_ERR_OUTPUT_INIT=C.FMOD_ERR_OUTPUT_INIT +M.FMOD_ERR_OUTPUT_NODRIVERS=C.FMOD_ERR_OUTPUT_NODRIVERS +M.FMOD_ERR_PLUGIN=C.FMOD_ERR_PLUGIN +M.FMOD_ERR_PLUGIN_MISSING=C.FMOD_ERR_PLUGIN_MISSING +M.FMOD_ERR_PLUGIN_RESOURCE=C.FMOD_ERR_PLUGIN_RESOURCE +M.FMOD_ERR_PLUGIN_VERSION=C.FMOD_ERR_PLUGIN_VERSION +M.FMOD_ERR_RECORD=C.FMOD_ERR_RECORD +M.FMOD_ERR_REVERB_CHANNELGROUP=C.FMOD_ERR_REVERB_CHANNELGROUP +M.FMOD_ERR_REVERB_INSTANCE=C.FMOD_ERR_REVERB_INSTANCE +M.FMOD_ERR_SUBSOUNDS=C.FMOD_ERR_SUBSOUNDS +M.FMOD_ERR_SUBSOUND_ALLOCATED=C.FMOD_ERR_SUBSOUND_ALLOCATED +M.FMOD_ERR_SUBSOUND_CANTMOVE=C.FMOD_ERR_SUBSOUND_CANTMOVE +M.FMOD_ERR_TAGNOTFOUND=C.FMOD_ERR_TAGNOTFOUND +M.FMOD_ERR_TOOMANYCHANNELS=C.FMOD_ERR_TOOMANYCHANNELS +M.FMOD_ERR_TRUNCATED=C.FMOD_ERR_TRUNCATED +M.FMOD_ERR_UNIMPLEMENTED=C.FMOD_ERR_UNIMPLEMENTED +M.FMOD_ERR_UNINITIALIZED=C.FMOD_ERR_UNINITIALIZED +M.FMOD_ERR_UNSUPPORTED=C.FMOD_ERR_UNSUPPORTED +M.FMOD_ERR_VERSION=C.FMOD_ERR_VERSION +M.FMOD_ERR_EVENT_ALREADY_LOADED=C.FMOD_ERR_EVENT_ALREADY_LOADED +M.FMOD_ERR_EVENT_LIVEUPDATE_BUSY=C.FMOD_ERR_EVENT_LIVEUPDATE_BUSY +M.FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH=C.FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH +M.FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT=C.FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT +M.FMOD_ERR_EVENT_NOTFOUND=C.FMOD_ERR_EVENT_NOTFOUND +M.FMOD_ERR_STUDIO_UNINITIALIZED=C.FMOD_ERR_STUDIO_UNINITIALIZED +M.FMOD_ERR_STUDIO_NOT_LOADED=C.FMOD_ERR_STUDIO_NOT_LOADED +M.FMOD_ERR_INVALID_STRING=C.FMOD_ERR_INVALID_STRING +M.FMOD_ERR_ALREADY_LOCKED=C.FMOD_ERR_ALREADY_LOCKED +M.FMOD_ERR_NOT_LOCKED=C.FMOD_ERR_NOT_LOCKED +M.FMOD_ERR_RECORD_DISCONNECTED=C.FMOD_ERR_RECORD_DISCONNECTED +M.FMOD_ERR_TOOMANYSAMPLES=C.FMOD_ERR_TOOMANYSAMPLES +M.FMOD_RESULT_FORCEINT=C.FMOD_RESULT_FORCEINT +M.FMOD_CHANNELCONTROL_CHANNEL=C.FMOD_CHANNELCONTROL_CHANNEL +M.FMOD_CHANNELCONTROL_CHANNELGROUP=C.FMOD_CHANNELCONTROL_CHANNELGROUP +M.FMOD_CHANNELCONTROL_MAX=C.FMOD_CHANNELCONTROL_MAX +M.FMOD_CHANNELCONTROL_FORCEINT=C.FMOD_CHANNELCONTROL_FORCEINT +M.FMOD_OUTPUTTYPE_AUTODETECT=C.FMOD_OUTPUTTYPE_AUTODETECT +M.FMOD_OUTPUTTYPE_UNKNOWN=C.FMOD_OUTPUTTYPE_UNKNOWN +M.FMOD_OUTPUTTYPE_NOSOUND=C.FMOD_OUTPUTTYPE_NOSOUND +M.FMOD_OUTPUTTYPE_WAVWRITER=C.FMOD_OUTPUTTYPE_WAVWRITER +M.FMOD_OUTPUTTYPE_NOSOUND_NRT=C.FMOD_OUTPUTTYPE_NOSOUND_NRT +M.FMOD_OUTPUTTYPE_WAVWRITER_NRT=C.FMOD_OUTPUTTYPE_WAVWRITER_NRT +M.FMOD_OUTPUTTYPE_WASAPI=C.FMOD_OUTPUTTYPE_WASAPI +M.FMOD_OUTPUTTYPE_ASIO=C.FMOD_OUTPUTTYPE_ASIO +M.FMOD_OUTPUTTYPE_PULSEAUDIO=C.FMOD_OUTPUTTYPE_PULSEAUDIO +M.FMOD_OUTPUTTYPE_ALSA=C.FMOD_OUTPUTTYPE_ALSA +M.FMOD_OUTPUTTYPE_COREAUDIO=C.FMOD_OUTPUTTYPE_COREAUDIO +M.FMOD_OUTPUTTYPE_AUDIOTRACK=C.FMOD_OUTPUTTYPE_AUDIOTRACK +M.FMOD_OUTPUTTYPE_OPENSL=C.FMOD_OUTPUTTYPE_OPENSL +M.FMOD_OUTPUTTYPE_AUDIOOUT=C.FMOD_OUTPUTTYPE_AUDIOOUT +M.FMOD_OUTPUTTYPE_AUDIO3D=C.FMOD_OUTPUTTYPE_AUDIO3D +M.FMOD_OUTPUTTYPE_WEBAUDIO=C.FMOD_OUTPUTTYPE_WEBAUDIO +M.FMOD_OUTPUTTYPE_NNAUDIO=C.FMOD_OUTPUTTYPE_NNAUDIO +M.FMOD_OUTPUTTYPE_WINSONIC=C.FMOD_OUTPUTTYPE_WINSONIC +M.FMOD_OUTPUTTYPE_AAUDIO=C.FMOD_OUTPUTTYPE_AAUDIO +M.FMOD_OUTPUTTYPE_AUDIOWORKLET=C.FMOD_OUTPUTTYPE_AUDIOWORKLET +M.FMOD_OUTPUTTYPE_PHASE=C.FMOD_OUTPUTTYPE_PHASE +M.FMOD_OUTPUTTYPE_OHAUDIO=C.FMOD_OUTPUTTYPE_OHAUDIO +M.FMOD_OUTPUTTYPE_MAX=C.FMOD_OUTPUTTYPE_MAX +M.FMOD_OUTPUTTYPE_FORCEINT=C.FMOD_OUTPUTTYPE_FORCEINT +M.FMOD_DEBUG_MODE_TTY=C.FMOD_DEBUG_MODE_TTY +M.FMOD_DEBUG_MODE_FILE=C.FMOD_DEBUG_MODE_FILE +M.FMOD_DEBUG_MODE_CALLBACK=C.FMOD_DEBUG_MODE_CALLBACK +M.FMOD_DEBUG_MODE_FORCEINT=C.FMOD_DEBUG_MODE_FORCEINT +M.FMOD_SPEAKERMODE_DEFAULT=C.FMOD_SPEAKERMODE_DEFAULT +M.FMOD_SPEAKERMODE_RAW=C.FMOD_SPEAKERMODE_RAW +M.FMOD_SPEAKERMODE_MONO=C.FMOD_SPEAKERMODE_MONO +M.FMOD_SPEAKERMODE_STEREO=C.FMOD_SPEAKERMODE_STEREO +M.FMOD_SPEAKERMODE_QUAD=C.FMOD_SPEAKERMODE_QUAD +M.FMOD_SPEAKERMODE_SURROUND=C.FMOD_SPEAKERMODE_SURROUND +M.FMOD_SPEAKERMODE_5POINT1=C.FMOD_SPEAKERMODE_5POINT1 +M.FMOD_SPEAKERMODE_7POINT1=C.FMOD_SPEAKERMODE_7POINT1 +M.FMOD_SPEAKERMODE_7POINT1POINT4=C.FMOD_SPEAKERMODE_7POINT1POINT4 +M.FMOD_SPEAKERMODE_MAX=C.FMOD_SPEAKERMODE_MAX +M.FMOD_SPEAKERMODE_FORCEINT=C.FMOD_SPEAKERMODE_FORCEINT +M.FMOD_SPEAKER_NONE=C.FMOD_SPEAKER_NONE +M.FMOD_SPEAKER_FRONT_LEFT=C.FMOD_SPEAKER_FRONT_LEFT +M.FMOD_SPEAKER_FRONT_RIGHT=C.FMOD_SPEAKER_FRONT_RIGHT +M.FMOD_SPEAKER_FRONT_CENTER=C.FMOD_SPEAKER_FRONT_CENTER +M.FMOD_SPEAKER_LOW_FREQUENCY=C.FMOD_SPEAKER_LOW_FREQUENCY +M.FMOD_SPEAKER_SURROUND_LEFT=C.FMOD_SPEAKER_SURROUND_LEFT +M.FMOD_SPEAKER_SURROUND_RIGHT=C.FMOD_SPEAKER_SURROUND_RIGHT +M.FMOD_SPEAKER_BACK_LEFT=C.FMOD_SPEAKER_BACK_LEFT +M.FMOD_SPEAKER_BACK_RIGHT=C.FMOD_SPEAKER_BACK_RIGHT +M.FMOD_SPEAKER_TOP_FRONT_LEFT=C.FMOD_SPEAKER_TOP_FRONT_LEFT +M.FMOD_SPEAKER_TOP_FRONT_RIGHT=C.FMOD_SPEAKER_TOP_FRONT_RIGHT +M.FMOD_SPEAKER_TOP_BACK_LEFT=C.FMOD_SPEAKER_TOP_BACK_LEFT +M.FMOD_SPEAKER_TOP_BACK_RIGHT=C.FMOD_SPEAKER_TOP_BACK_RIGHT +M.FMOD_SPEAKER_MAX=C.FMOD_SPEAKER_MAX +M.FMOD_SPEAKER_FORCEINT=C.FMOD_SPEAKER_FORCEINT +M.FMOD_CHANNELORDER_DEFAULT=C.FMOD_CHANNELORDER_DEFAULT +M.FMOD_CHANNELORDER_WAVEFORMAT=C.FMOD_CHANNELORDER_WAVEFORMAT +M.FMOD_CHANNELORDER_PROTOOLS=C.FMOD_CHANNELORDER_PROTOOLS +M.FMOD_CHANNELORDER_ALLMONO=C.FMOD_CHANNELORDER_ALLMONO +M.FMOD_CHANNELORDER_ALLSTEREO=C.FMOD_CHANNELORDER_ALLSTEREO +M.FMOD_CHANNELORDER_ALSA=C.FMOD_CHANNELORDER_ALSA +M.FMOD_CHANNELORDER_MAX=C.FMOD_CHANNELORDER_MAX +M.FMOD_CHANNELORDER_FORCEINT=C.FMOD_CHANNELORDER_FORCEINT +M.FMOD_PLUGINTYPE_OUTPUT=C.FMOD_PLUGINTYPE_OUTPUT +M.FMOD_PLUGINTYPE_CODEC=C.FMOD_PLUGINTYPE_CODEC +M.FMOD_PLUGINTYPE_DSP=C.FMOD_PLUGINTYPE_DSP +M.FMOD_PLUGINTYPE_MAX=C.FMOD_PLUGINTYPE_MAX +M.FMOD_PLUGINTYPE_FORCEINT=C.FMOD_PLUGINTYPE_FORCEINT +M.FMOD_SOUND_TYPE_UNKNOWN=C.FMOD_SOUND_TYPE_UNKNOWN +M.FMOD_SOUND_TYPE_AIFF=C.FMOD_SOUND_TYPE_AIFF +M.FMOD_SOUND_TYPE_ASF=C.FMOD_SOUND_TYPE_ASF +M.FMOD_SOUND_TYPE_DLS=C.FMOD_SOUND_TYPE_DLS +M.FMOD_SOUND_TYPE_FLAC=C.FMOD_SOUND_TYPE_FLAC +M.FMOD_SOUND_TYPE_FSB=C.FMOD_SOUND_TYPE_FSB +M.FMOD_SOUND_TYPE_IT=C.FMOD_SOUND_TYPE_IT +M.FMOD_SOUND_TYPE_MIDI=C.FMOD_SOUND_TYPE_MIDI +M.FMOD_SOUND_TYPE_MOD=C.FMOD_SOUND_TYPE_MOD +M.FMOD_SOUND_TYPE_MPEG=C.FMOD_SOUND_TYPE_MPEG +M.FMOD_SOUND_TYPE_OGGVORBIS=C.FMOD_SOUND_TYPE_OGGVORBIS +M.FMOD_SOUND_TYPE_PLAYLIST=C.FMOD_SOUND_TYPE_PLAYLIST +M.FMOD_SOUND_TYPE_RAW=C.FMOD_SOUND_TYPE_RAW +M.FMOD_SOUND_TYPE_S3M=C.FMOD_SOUND_TYPE_S3M +M.FMOD_SOUND_TYPE_USER=C.FMOD_SOUND_TYPE_USER +M.FMOD_SOUND_TYPE_WAV=C.FMOD_SOUND_TYPE_WAV +M.FMOD_SOUND_TYPE_XM=C.FMOD_SOUND_TYPE_XM +M.FMOD_SOUND_TYPE_XMA=C.FMOD_SOUND_TYPE_XMA +M.FMOD_SOUND_TYPE_AUDIOQUEUE=C.FMOD_SOUND_TYPE_AUDIOQUEUE +M.FMOD_SOUND_TYPE_AT9=C.FMOD_SOUND_TYPE_AT9 +M.FMOD_SOUND_TYPE_VORBIS=C.FMOD_SOUND_TYPE_VORBIS +M.FMOD_SOUND_TYPE_MEDIA_FOUNDATION=C.FMOD_SOUND_TYPE_MEDIA_FOUNDATION +M.FMOD_SOUND_TYPE_MEDIACODEC=C.FMOD_SOUND_TYPE_MEDIACODEC +M.FMOD_SOUND_TYPE_FADPCM=C.FMOD_SOUND_TYPE_FADPCM +M.FMOD_SOUND_TYPE_OPUS=C.FMOD_SOUND_TYPE_OPUS +M.FMOD_SOUND_TYPE_MAX=C.FMOD_SOUND_TYPE_MAX +M.FMOD_SOUND_TYPE_FORCEINT=C.FMOD_SOUND_TYPE_FORCEINT +M.FMOD_SOUND_FORMAT_NONE=C.FMOD_SOUND_FORMAT_NONE +M.FMOD_SOUND_FORMAT_PCM8=C.FMOD_SOUND_FORMAT_PCM8 +M.FMOD_SOUND_FORMAT_PCM16=C.FMOD_SOUND_FORMAT_PCM16 +M.FMOD_SOUND_FORMAT_PCM24=C.FMOD_SOUND_FORMAT_PCM24 +M.FMOD_SOUND_FORMAT_PCM32=C.FMOD_SOUND_FORMAT_PCM32 +M.FMOD_SOUND_FORMAT_PCMFLOAT=C.FMOD_SOUND_FORMAT_PCMFLOAT +M.FMOD_SOUND_FORMAT_BITSTREAM=C.FMOD_SOUND_FORMAT_BITSTREAM +M.FMOD_SOUND_FORMAT_MAX=C.FMOD_SOUND_FORMAT_MAX +M.FMOD_SOUND_FORMAT_FORCEINT=C.FMOD_SOUND_FORMAT_FORCEINT +M.FMOD_OPENSTATE_READY=C.FMOD_OPENSTATE_READY +M.FMOD_OPENSTATE_LOADING=C.FMOD_OPENSTATE_LOADING +M.FMOD_OPENSTATE_ERROR=C.FMOD_OPENSTATE_ERROR +M.FMOD_OPENSTATE_CONNECTING=C.FMOD_OPENSTATE_CONNECTING +M.FMOD_OPENSTATE_BUFFERING=C.FMOD_OPENSTATE_BUFFERING +M.FMOD_OPENSTATE_SEEKING=C.FMOD_OPENSTATE_SEEKING +M.FMOD_OPENSTATE_PLAYING=C.FMOD_OPENSTATE_PLAYING +M.FMOD_OPENSTATE_SETPOSITION=C.FMOD_OPENSTATE_SETPOSITION +M.FMOD_OPENSTATE_MAX=C.FMOD_OPENSTATE_MAX +M.FMOD_OPENSTATE_FORCEINT=C.FMOD_OPENSTATE_FORCEINT +M.FMOD_SOUNDGROUP_BEHAVIOR_FAIL=C.FMOD_SOUNDGROUP_BEHAVIOR_FAIL +M.FMOD_SOUNDGROUP_BEHAVIOR_MUTE=C.FMOD_SOUNDGROUP_BEHAVIOR_MUTE +M.FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST=C.FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST +M.FMOD_SOUNDGROUP_BEHAVIOR_MAX=C.FMOD_SOUNDGROUP_BEHAVIOR_MAX +M.FMOD_SOUNDGROUP_BEHAVIOR_FORCEINT=C.FMOD_SOUNDGROUP_BEHAVIOR_FORCEINT +M.FMOD_CHANNELCONTROL_CALLBACK_END=C.FMOD_CHANNELCONTROL_CALLBACK_END +M.FMOD_CHANNELCONTROL_CALLBACK_VIRTUALVOICE=C.FMOD_CHANNELCONTROL_CALLBACK_VIRTUALVOICE +M.FMOD_CHANNELCONTROL_CALLBACK_SYNCPOINT=C.FMOD_CHANNELCONTROL_CALLBACK_SYNCPOINT +M.FMOD_CHANNELCONTROL_CALLBACK_OCCLUSION=C.FMOD_CHANNELCONTROL_CALLBACK_OCCLUSION +M.FMOD_CHANNELCONTROL_CALLBACK_MAX=C.FMOD_CHANNELCONTROL_CALLBACK_MAX +M.FMOD_CHANNELCONTROL_CALLBACK_FORCEINT=C.FMOD_CHANNELCONTROL_CALLBACK_FORCEINT +M.FMOD_CHANNELCONTROL_DSP_HEAD=C.FMOD_CHANNELCONTROL_DSP_HEAD +M.FMOD_CHANNELCONTROL_DSP_FADER=C.FMOD_CHANNELCONTROL_DSP_FADER +M.FMOD_CHANNELCONTROL_DSP_TAIL=C.FMOD_CHANNELCONTROL_DSP_TAIL +M.FMOD_CHANNELCONTROL_DSP_FORCEINT=C.FMOD_CHANNELCONTROL_DSP_FORCEINT +M.FMOD_ERRORCALLBACK_INSTANCETYPE_NONE=C.FMOD_ERRORCALLBACK_INSTANCETYPE_NONE +M.FMOD_ERRORCALLBACK_INSTANCETYPE_SYSTEM=C.FMOD_ERRORCALLBACK_INSTANCETYPE_SYSTEM +M.FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNEL=C.FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNEL +M.FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELGROUP=C.FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELGROUP +M.FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELCONTROL=C.FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELCONTROL +M.FMOD_ERRORCALLBACK_INSTANCETYPE_SOUND=C.FMOD_ERRORCALLBACK_INSTANCETYPE_SOUND +M.FMOD_ERRORCALLBACK_INSTANCETYPE_SOUNDGROUP=C.FMOD_ERRORCALLBACK_INSTANCETYPE_SOUNDGROUP +M.FMOD_ERRORCALLBACK_INSTANCETYPE_DSP=C.FMOD_ERRORCALLBACK_INSTANCETYPE_DSP +M.FMOD_ERRORCALLBACK_INSTANCETYPE_DSPCONNECTION=C.FMOD_ERRORCALLBACK_INSTANCETYPE_DSPCONNECTION +M.FMOD_ERRORCALLBACK_INSTANCETYPE_GEOMETRY=C.FMOD_ERRORCALLBACK_INSTANCETYPE_GEOMETRY +M.FMOD_ERRORCALLBACK_INSTANCETYPE_REVERB3D=C.FMOD_ERRORCALLBACK_INSTANCETYPE_REVERB3D +M.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_SYSTEM=C.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_SYSTEM +M.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTDESCRIPTION=C + .FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTDESCRIPTION +M.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTINSTANCE=C.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTINSTANCE +M.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_PARAMETERINSTANCE=C + .FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_PARAMETERINSTANCE +M.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BUS=C.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BUS +M.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_VCA=C.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_VCA +M.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BANK=C.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BANK +M.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_COMMANDREPLAY=C.FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_COMMANDREPLAY +M.FMOD_ERRORCALLBACK_INSTANCETYPE_FORCEINT=C.FMOD_ERRORCALLBACK_INSTANCETYPE_FORCEINT +M.FMOD_DSP_RESAMPLER_DEFAULT=C.FMOD_DSP_RESAMPLER_DEFAULT +M.FMOD_DSP_RESAMPLER_NOINTERP=C.FMOD_DSP_RESAMPLER_NOINTERP +M.FMOD_DSP_RESAMPLER_LINEAR=C.FMOD_DSP_RESAMPLER_LINEAR +M.FMOD_DSP_RESAMPLER_CUBIC=C.FMOD_DSP_RESAMPLER_CUBIC +M.FMOD_DSP_RESAMPLER_SPLINE=C.FMOD_DSP_RESAMPLER_SPLINE +M.FMOD_DSP_RESAMPLER_MAX=C.FMOD_DSP_RESAMPLER_MAX +M.FMOD_DSP_RESAMPLER_FORCEINT=C.FMOD_DSP_RESAMPLER_FORCEINT +M.FMOD_DSP_CALLBACK_DATAPARAMETERRELEASE=C.FMOD_DSP_CALLBACK_DATAPARAMETERRELEASE +M.FMOD_DSP_CALLBACK_MAX=C.FMOD_DSP_CALLBACK_MAX +M.FMOD_DSP_CALLBACK_FORCEINT=C.FMOD_DSP_CALLBACK_FORCEINT +M.FMOD_DSPCONNECTION_TYPE_STANDARD=C.FMOD_DSPCONNECTION_TYPE_STANDARD +M.FMOD_DSPCONNECTION_TYPE_SIDECHAIN=C.FMOD_DSPCONNECTION_TYPE_SIDECHAIN +M.FMOD_DSPCONNECTION_TYPE_SEND=C.FMOD_DSPCONNECTION_TYPE_SEND +M.FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN=C.FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN +M.FMOD_DSPCONNECTION_TYPE_MAX=C.FMOD_DSPCONNECTION_TYPE_MAX +M.FMOD_DSPCONNECTION_TYPE_FORCEINT=C.FMOD_DSPCONNECTION_TYPE_FORCEINT +M.FMOD_TAGTYPE_UNKNOWN=C.FMOD_TAGTYPE_UNKNOWN +M.FMOD_TAGTYPE_ID3V1=C.FMOD_TAGTYPE_ID3V1 +M.FMOD_TAGTYPE_ID3V2=C.FMOD_TAGTYPE_ID3V2 +M.FMOD_TAGTYPE_VORBISCOMMENT=C.FMOD_TAGTYPE_VORBISCOMMENT +M.FMOD_TAGTYPE_SHOUTCAST=C.FMOD_TAGTYPE_SHOUTCAST +M.FMOD_TAGTYPE_ICECAST=C.FMOD_TAGTYPE_ICECAST +M.FMOD_TAGTYPE_ASF=C.FMOD_TAGTYPE_ASF +M.FMOD_TAGTYPE_MIDI=C.FMOD_TAGTYPE_MIDI +M.FMOD_TAGTYPE_PLAYLIST=C.FMOD_TAGTYPE_PLAYLIST +M.FMOD_TAGTYPE_FMOD=C.FMOD_TAGTYPE_FMOD +M.FMOD_TAGTYPE_USER=C.FMOD_TAGTYPE_USER +M.FMOD_TAGTYPE_MAX=C.FMOD_TAGTYPE_MAX +M.FMOD_TAGTYPE_FORCEINT=C.FMOD_TAGTYPE_FORCEINT +M.FMOD_TAGDATATYPE_BINARY=C.FMOD_TAGDATATYPE_BINARY +M.FMOD_TAGDATATYPE_INT=C.FMOD_TAGDATATYPE_INT +M.FMOD_TAGDATATYPE_FLOAT=C.FMOD_TAGDATATYPE_FLOAT +M.FMOD_TAGDATATYPE_STRING=C.FMOD_TAGDATATYPE_STRING +M.FMOD_TAGDATATYPE_STRING_UTF16=C.FMOD_TAGDATATYPE_STRING_UTF16 +M.FMOD_TAGDATATYPE_STRING_UTF16BE=C.FMOD_TAGDATATYPE_STRING_UTF16BE +M.FMOD_TAGDATATYPE_STRING_UTF8=C.FMOD_TAGDATATYPE_STRING_UTF8 +M.FMOD_TAGDATATYPE_MAX=C.FMOD_TAGDATATYPE_MAX +M.FMOD_TAGDATATYPE_FORCEINT=C.FMOD_TAGDATATYPE_FORCEINT +M.FMOD_PORT_TYPE_MUSIC=C.FMOD_PORT_TYPE_MUSIC +M.FMOD_PORT_TYPE_COPYRIGHT_MUSIC=C.FMOD_PORT_TYPE_COPYRIGHT_MUSIC +M.FMOD_PORT_TYPE_VOICE=C.FMOD_PORT_TYPE_VOICE +M.FMOD_PORT_TYPE_CONTROLLER=C.FMOD_PORT_TYPE_CONTROLLER +M.FMOD_PORT_TYPE_PERSONAL=C.FMOD_PORT_TYPE_PERSONAL +M.FMOD_PORT_TYPE_VIBRATION=C.FMOD_PORT_TYPE_VIBRATION +M.FMOD_PORT_TYPE_AUX=C.FMOD_PORT_TYPE_AUX +M.FMOD_PORT_TYPE_MAX=C.FMOD_PORT_TYPE_MAX +M.FMOD_PORT_TYPE_FORCEINT=C.FMOD_PORT_TYPE_FORCEINT +M.FMOD_DSP_FADER_GAIN=C.FMOD_DSP_FADER_GAIN +M.FMOD_DSP_FADER_OVERALL_GAIN=C.FMOD_DSP_FADER_OVERALL_GAIN +M.FMOD_DSP_MULTIBAND_EQ_A_FILTER=C.FMOD_DSP_MULTIBAND_EQ_A_FILTER +M.FMOD_DSP_MULTIBAND_EQ_A_FREQUENCY=C.FMOD_DSP_MULTIBAND_EQ_A_FREQUENCY +M.FMOD_DSP_MULTIBAND_EQ_A_Q=C.FMOD_DSP_MULTIBAND_EQ_A_Q +M.FMOD_DSP_MULTIBAND_EQ_A_GAIN=C.FMOD_DSP_MULTIBAND_EQ_A_GAIN +M.FMOD_DSP_MULTIBAND_EQ_B_FILTER=C.FMOD_DSP_MULTIBAND_EQ_B_FILTER +M.FMOD_DSP_MULTIBAND_EQ_B_FREQUENCY=C.FMOD_DSP_MULTIBAND_EQ_B_FREQUENCY +M.FMOD_DSP_MULTIBAND_EQ_B_Q=C.FMOD_DSP_MULTIBAND_EQ_B_Q +M.FMOD_DSP_MULTIBAND_EQ_B_GAIN=C.FMOD_DSP_MULTIBAND_EQ_B_GAIN +M.FMOD_DSP_MULTIBAND_EQ_C_FILTER=C.FMOD_DSP_MULTIBAND_EQ_C_FILTER +M.FMOD_DSP_MULTIBAND_EQ_C_FREQUENCY=C.FMOD_DSP_MULTIBAND_EQ_C_FREQUENCY +M.FMOD_DSP_MULTIBAND_EQ_C_Q=C.FMOD_DSP_MULTIBAND_EQ_C_Q +M.FMOD_DSP_MULTIBAND_EQ_C_GAIN=C.FMOD_DSP_MULTIBAND_EQ_C_GAIN +M.FMOD_DSP_MULTIBAND_EQ_D_FILTER=C.FMOD_DSP_MULTIBAND_EQ_D_FILTER +M.FMOD_DSP_MULTIBAND_EQ_D_FREQUENCY=C.FMOD_DSP_MULTIBAND_EQ_D_FREQUENCY +M.FMOD_DSP_MULTIBAND_EQ_D_Q=C.FMOD_DSP_MULTIBAND_EQ_D_Q +M.FMOD_DSP_MULTIBAND_EQ_D_GAIN=C.FMOD_DSP_MULTIBAND_EQ_D_GAIN +M.FMOD_DSP_MULTIBAND_EQ_E_FILTER=C.FMOD_DSP_MULTIBAND_EQ_E_FILTER +M.FMOD_DSP_MULTIBAND_EQ_E_FREQUENCY=C.FMOD_DSP_MULTIBAND_EQ_E_FREQUENCY +M.FMOD_DSP_MULTIBAND_EQ_E_Q=C.FMOD_DSP_MULTIBAND_EQ_E_Q +M.FMOD_DSP_MULTIBAND_EQ_E_GAIN=C.FMOD_DSP_MULTIBAND_EQ_E_GAIN +M.FMOD_DSP_MULTIBAND_EQ_FILTER_DISABLED=C.FMOD_DSP_MULTIBAND_EQ_FILTER_DISABLED +M.FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_12DB=C.FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_12DB +M.FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_24DB=C.FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_24DB +M.FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_48DB=C.FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_48DB +M.FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_12DB=C.FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_12DB +M.FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_24DB=C.FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_24DB +M.FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_48DB=C.FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_48DB +M.FMOD_DSP_MULTIBAND_EQ_FILTER_LOWSHELF=C.FMOD_DSP_MULTIBAND_EQ_FILTER_LOWSHELF +M.FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHSHELF=C.FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHSHELF +M.FMOD_DSP_MULTIBAND_EQ_FILTER_PEAKING=C.FMOD_DSP_MULTIBAND_EQ_FILTER_PEAKING +M.FMOD_DSP_MULTIBAND_EQ_FILTER_BANDPASS=C.FMOD_DSP_MULTIBAND_EQ_FILTER_BANDPASS +M.FMOD_DSP_MULTIBAND_EQ_FILTER_NOTCH=C.FMOD_DSP_MULTIBAND_EQ_FILTER_NOTCH +M.FMOD_DSP_MULTIBAND_EQ_FILTER_ALLPASS=C.FMOD_DSP_MULTIBAND_EQ_FILTER_ALLPASS +M.FMOD_DSP_PAN_SURROUND_DEFAULT=C.FMOD_DSP_PAN_SURROUND_DEFAULT +M.FMOD_DSP_PAN_SURROUND_ROTATION_NOT_BIASED=C.FMOD_DSP_PAN_SURROUND_ROTATION_NOT_BIASED +M.FMOD_DSP_PAN_SURROUND_FLAGS_FORCEINT=C.FMOD_DSP_PAN_SURROUND_FLAGS_FORCEINT +M.FMOD_STUDIO_LOADING_STATE_UNLOADING=C.FMOD_STUDIO_LOADING_STATE_UNLOADING +M.FMOD_STUDIO_LOADING_STATE_UNLOADED=C.FMOD_STUDIO_LOADING_STATE_UNLOADED +M.FMOD_STUDIO_LOADING_STATE_LOADING=C.FMOD_STUDIO_LOADING_STATE_LOADING +M.FMOD_STUDIO_LOADING_STATE_LOADED=C.FMOD_STUDIO_LOADING_STATE_LOADED +M.FMOD_STUDIO_LOADING_STATE_ERROR=C.FMOD_STUDIO_LOADING_STATE_ERROR +M.FMOD_STUDIO_LOADING_STATE_FORCEINT=C.FMOD_STUDIO_LOADING_STATE_FORCEINT +M.FMOD_STUDIO_LOAD_MEMORY=C.FMOD_STUDIO_LOAD_MEMORY +M.FMOD_STUDIO_LOAD_MEMORY_POINT=C.FMOD_STUDIO_LOAD_MEMORY_POINT +M.FMOD_STUDIO_LOAD_MEMORY_FORCEINT=C.FMOD_STUDIO_LOAD_MEMORY_FORCEINT +M.FMOD_STUDIO_PARAMETER_GAME_CONTROLLED=C.FMOD_STUDIO_PARAMETER_GAME_CONTROLLED +M.FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE=C.FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE +M.FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_CONE_ANGLE=C.FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_CONE_ANGLE +M.FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_ORIENTATION=C.FMOD_STUDIO_PARAMETER_AUTOMATIC_EVENT_ORIENTATION +M.FMOD_STUDIO_PARAMETER_AUTOMATIC_DIRECTION=C.FMOD_STUDIO_PARAMETER_AUTOMATIC_DIRECTION +M.FMOD_STUDIO_PARAMETER_AUTOMATIC_ELEVATION=C.FMOD_STUDIO_PARAMETER_AUTOMATIC_ELEVATION +M.FMOD_STUDIO_PARAMETER_AUTOMATIC_LISTENER_ORIENTATION=C.FMOD_STUDIO_PARAMETER_AUTOMATIC_LISTENER_ORIENTATION +M.FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED=C.FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED +M.FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED_ABSOLUTE=C.FMOD_STUDIO_PARAMETER_AUTOMATIC_SPEED_ABSOLUTE +M.FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE_NORMALIZED=C.FMOD_STUDIO_PARAMETER_AUTOMATIC_DISTANCE_NORMALIZED +M.FMOD_STUDIO_PARAMETER_MAX=C.FMOD_STUDIO_PARAMETER_MAX +M.FMOD_STUDIO_PARAMETER_FORCEINT=C.FMOD_STUDIO_PARAMETER_FORCEINT +M.FMOD_STUDIO_USER_PROPERTY_TYPE_INTEGER=C.FMOD_STUDIO_USER_PROPERTY_TYPE_INTEGER +M.FMOD_STUDIO_USER_PROPERTY_TYPE_BOOLEAN=C.FMOD_STUDIO_USER_PROPERTY_TYPE_BOOLEAN +M.FMOD_STUDIO_USER_PROPERTY_TYPE_FLOAT=C.FMOD_STUDIO_USER_PROPERTY_TYPE_FLOAT +M.FMOD_STUDIO_USER_PROPERTY_TYPE_STRING=C.FMOD_STUDIO_USER_PROPERTY_TYPE_STRING +M.FMOD_STUDIO_USER_PROPERTY_TYPE_FORCEINT=C.FMOD_STUDIO_USER_PROPERTY_TYPE_FORCEINT +M.FMOD_STUDIO_EVENT_PROPERTY_CHANNELPRIORITY=C.FMOD_STUDIO_EVENT_PROPERTY_CHANNELPRIORITY +M.FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_DELAY=C.FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_DELAY +M.FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_LOOKAHEAD=C.FMOD_STUDIO_EVENT_PROPERTY_SCHEDULE_LOOKAHEAD +M.FMOD_STUDIO_EVENT_PROPERTY_MINIMUM_DISTANCE=C.FMOD_STUDIO_EVENT_PROPERTY_MINIMUM_DISTANCE +M.FMOD_STUDIO_EVENT_PROPERTY_MAXIMUM_DISTANCE=C.FMOD_STUDIO_EVENT_PROPERTY_MAXIMUM_DISTANCE +M.FMOD_STUDIO_EVENT_PROPERTY_COOLDOWN=C.FMOD_STUDIO_EVENT_PROPERTY_COOLDOWN +M.FMOD_STUDIO_EVENT_PROPERTY_MAX=C.FMOD_STUDIO_EVENT_PROPERTY_MAX +M.FMOD_STUDIO_EVENT_PROPERTY_FORCEINT=C.FMOD_STUDIO_EVENT_PROPERTY_FORCEINT +M.FMOD_STUDIO_PLAYBACK_PLAYING=C.FMOD_STUDIO_PLAYBACK_PLAYING +M.FMOD_STUDIO_PLAYBACK_SUSTAINING=C.FMOD_STUDIO_PLAYBACK_SUSTAINING +M.FMOD_STUDIO_PLAYBACK_STOPPED=C.FMOD_STUDIO_PLAYBACK_STOPPED +M.FMOD_STUDIO_PLAYBACK_STARTING=C.FMOD_STUDIO_PLAYBACK_STARTING +M.FMOD_STUDIO_PLAYBACK_STOPPING=C.FMOD_STUDIO_PLAYBACK_STOPPING +M.FMOD_STUDIO_PLAYBACK_FORCEINT=C.FMOD_STUDIO_PLAYBACK_FORCEINT +M.FMOD_STUDIO_STOP_ALLOWFADEOUT=C.FMOD_STUDIO_STOP_ALLOWFADEOUT +M.FMOD_STUDIO_STOP_IMMEDIATE=C.FMOD_STUDIO_STOP_IMMEDIATE +M.FMOD_STUDIO_STOP_FORCEINT=C.FMOD_STUDIO_STOP_FORCEINT +M.FMOD_STUDIO_INSTANCETYPE_NONE=C.FMOD_STUDIO_INSTANCETYPE_NONE +M.FMOD_STUDIO_INSTANCETYPE_SYSTEM=C.FMOD_STUDIO_INSTANCETYPE_SYSTEM +M.FMOD_STUDIO_INSTANCETYPE_EVENTDESCRIPTION=C.FMOD_STUDIO_INSTANCETYPE_EVENTDESCRIPTION +M.FMOD_STUDIO_INSTANCETYPE_EVENTINSTANCE=C.FMOD_STUDIO_INSTANCETYPE_EVENTINSTANCE +M.FMOD_STUDIO_INSTANCETYPE_PARAMETERINSTANCE=C.FMOD_STUDIO_INSTANCETYPE_PARAMETERINSTANCE +M.FMOD_STUDIO_INSTANCETYPE_BUS=C.FMOD_STUDIO_INSTANCETYPE_BUS +M.FMOD_STUDIO_INSTANCETYPE_VCA=C.FMOD_STUDIO_INSTANCETYPE_VCA +M.FMOD_STUDIO_INSTANCETYPE_BANK=C.FMOD_STUDIO_INSTANCETYPE_BANK +M.FMOD_STUDIO_INSTANCETYPE_COMMANDREPLAY=C.FMOD_STUDIO_INSTANCETYPE_COMMANDREPLAY +M.FMOD_STUDIO_INSTANCETYPE_FORCEINT=C.FMOD_STUDIO_INSTANCETYPE_FORCEINT diff --git a/assets/fmod20221/errors.lua b/assets/fmod20221/errors.lua new file mode 100644 index 00000000..54ff2eb9 --- /dev/null +++ b/assets/fmod20221/errors.lua @@ -0,0 +1,90 @@ +local path=(...):gsub("[^%.]*$", "") +local r=require; local function require(m) return r(path..m) end + +---@class FMOD.master +local M=require("master") + +M.errorString={ + [M.FMOD_OK]="No errors.", + [M.FMOD_ERR_BADCOMMAND]="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).", + [M.FMOD_ERR_CHANNEL_ALLOC]="Error trying to allocate a channel.", + [M.FMOD_ERR_CHANNEL_STOLEN]="The specified channel has been reused to play another sound.", + [M.FMOD_ERR_DMA]="DMA Failure. See debug output for more information.", + [M.FMOD_ERR_DSP_CONNECTION]="DSP connection error. Connection possibly caused a cyclic dependency connected dsps with incompatible buffer counts.", + [M.FMOD_ERR_DSP_DONTPROCESS]="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.", + [M.FMOD_ERR_DSP_FORMAT]="DSP Format error. A DSP unit may have attempted to connect to this network with the wrong format, a matrix may have been set with the wrong size if the target unit has a specified channel map.", + [M.FMOD_ERR_DSP_INUSE]="DSP is already in the mixer's DSP network. It must be removed before being reinserted released.", + [M.FMOD_ERR_DSP_NOTFOUND]="DSP connection error. Couldn't find the DSP unit specified.", + [M.FMOD_ERR_DSP_RESERVED]="DSP operation error. Cannot perform operation on this DSP as it is reserved by the system.", + [M.FMOD_ERR_DSP_SILENCE]="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.", + [M.FMOD_ERR_DSP_TYPE]="DSP operation cannot be performed on a DSP of this type.", + [M.FMOD_ERR_FILE_BAD]="Error loading file.", + [M.FMOD_ERR_FILE_COULDNOTSEEK]="Couldn't perform seek operation. This is a limitation of the medium (ie netstreams) the file format.", + [M.FMOD_ERR_FILE_DISKEJECTED]="Media was ejected while reading.", + [M.FMOD_ERR_FILE_EOF]="End of file unexpectedly reached while trying to read essential data (truncated?).", + [M.FMOD_ERR_FILE_ENDOFDATA]="End of current chunk reached while trying to read data.", + [M.FMOD_ERR_FILE_NOTFOUND]="File not found.", + [M.FMOD_ERR_FORMAT]="Unsupported file audio format.", + [M.FMOD_ERR_HEADER_MISMATCH]="There is a version mismatch between the FMOD header and either the FMOD Studio library the FMOD Low Level library.", + [M.FMOD_ERR_HTTP]="A HTTP error occurred. This is a catch-all for HTTP errors not listed elsewhere.", + [M.FMOD_ERR_HTTP_ACCESS]="The specified resource requires authentication is forbidden.", + [M.FMOD_ERR_HTTP_PROXY_AUTH]="Proxy authentication is required to access the specified resource.", + [M.FMOD_ERR_HTTP_SERVER_ERROR]="A HTTP server error occurred.", + [M.FMOD_ERR_HTTP_TIMEOUT]="The HTTP request timed out.", + [M.FMOD_ERR_INITIALIZATION]="FMOD was not initialized correctly to support this function.", + [M.FMOD_ERR_INITIALIZED]="Cannot call this command after System::init.", + [M.FMOD_ERR_INTERNAL]="An error occured in the FMOD system. Use the logging version of FMOD for more information.", + [M.FMOD_ERR_INVALID_FLOAT]="Value passed in was a NaN, Inf denormalized float.", + [M.FMOD_ERR_INVALID_HANDLE]="An invalid object handle was used.", + [M.FMOD_ERR_INVALID_PARAM]="An invalid parameter was passed to this function.", + [M.FMOD_ERR_INVALID_POSITION]="An invalid seek position was passed to this function.", + [M.FMOD_ERR_INVALID_SPEAKER]="An invalid speaker was passed to this function based on the current speaker mode.", + [M.FMOD_ERR_INVALID_SYNCPOINT]="The syncpoint did not come from this sound handle.", + [M.FMOD_ERR_INVALID_THREAD]="Tried to call a function on a thread that is not supported.", + [M.FMOD_ERR_INVALID_VECTOR]="The vectors passed in are not unit length, perpendicular.", + [M.FMOD_ERR_MAXAUDIBLE]="Reached maximum audible playback count for this sound's soundgroup.", + [M.FMOD_ERR_MEMORY]="Not enough memory resources.", + [M.FMOD_ERR_MEMORY_CANTPOINT]="Can't use FMOD_OPENMEMORY_POINT on non PCM source data, non mp3/xma/adpcm data if FMOD_CREATECOMPRESSEDSAMPLE was used.", + [M.FMOD_ERR_NEEDS3D]="Tried to call a command on a 2d sound when the command was meant for 3d sound.", + [M.FMOD_ERR_NEEDSHARDWARE]="Tried to use a feature that requires hardware support.", + [M.FMOD_ERR_NET_CONNECT]="Couldn't connect to the specified host.", + [M.FMOD_ERR_NET_SOCKET_ERROR]="A socket error occurred. This is a catch-all for socket-related errors not listed elsewhere.", + [M.FMOD_ERR_NET_URL]="The specified URL couldn't be resolved.", + [M.FMOD_ERR_NET_WOULD_BLOCK]="Operation on a non-blocking socket could not complete immediately.", + [M.FMOD_ERR_NOTREADY]="Operation could not be performed because specified sound/DSP connection is not ready.", + [M.FMOD_ERR_OUTPUT_ALLOCATED]="Error initializing output device, but more specifically, the output device is already in use and cannot be reused.", + [M.FMOD_ERR_OUTPUT_CREATEBUFFER]="Error creating hardware sound buffer.", + [M.FMOD_ERR_OUTPUT_DRIVERCALL]="A call to a standard soundcard driver failed, which could possibly mean a bug in the driver resources were missing exhausted.", + [M.FMOD_ERR_OUTPUT_FORMAT]="Soundcard does not support the specified format.", + [M.FMOD_ERR_OUTPUT_INIT]="Error initializing output device.", + [M.FMOD_ERR_OUTPUT_NODRIVERS]="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.", + [M.FMOD_ERR_PLUGIN]="An unspecified error has been returned from a plugin.", + [M.FMOD_ERR_PLUGIN_MISSING]="A requested output, dsp unit type codec was not available.", + [M.FMOD_ERR_PLUGIN_RESOURCE]="A resource that the plugin requires cannot be allocated found. (ie the DLS file for MIDI playback)", + [M.FMOD_ERR_PLUGIN_VERSION]="A plugin was built with an unsupported SDK version.", + [M.FMOD_ERR_RECORD]="An error occurred trying to initialize the recording device.", + [M.FMOD_ERR_REVERB_CHANNELGROUP]="Reverb properties cannot be set on this channel because a parent channelgroup owns the reverb connection.", + [M.FMOD_ERR_REVERB_INSTANCE]="Specified instance in FMOD_REVERB_PROPERTIES couldn't be set. Most likely because it is an invalid instance number the reverb doesn't exist.", + [M.FMOD_ERR_SUBSOUNDS]="The error occurred because the sound referenced contains subsounds when it shouldn't have, it doesn't contain subsounds when it should have. The operation may also not be able to be performed on a parent sound.", + [M.FMOD_ERR_SUBSOUND_ALLOCATED]="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.", + [M.FMOD_ERR_SUBSOUND_CANTMOVE]="Shared subsounds cannot be replaced moved from their parent stream, such as when the parent stream is an FSB file.", + [M.FMOD_ERR_TAGNOTFOUND]="The specified tag could not be found there are no tags.", + [M.FMOD_ERR_TOOMANYCHANNELS]="The sound created exceeds the allowable input channel count. This can be increased using the 'maxinputchannels' parameter in System::setSoftwareFormat.", + [M.FMOD_ERR_TRUNCATED]="The retrieved string is too long to fit in the supplied buffer and has been truncated.", + [M.FMOD_ERR_UNIMPLEMENTED]="Something in FMOD hasn't been implemented when it should be. Contact support.", + [M.FMOD_ERR_UNINITIALIZED]="This command failed because System::init System::setDriver was not called.", + [M.FMOD_ERR_UNSUPPORTED]="A command issued was not supported by this object. Possibly a plugin without certain callbacks specified.", + [M.FMOD_ERR_VERSION]="The version number of this file format is not supported.", + [M.FMOD_ERR_EVENT_ALREADY_LOADED]="The specified bank has already been loaded.", + [M.FMOD_ERR_EVENT_LIVEUPDATE_BUSY]="The live update connection failed due to the game already being connected.", + [M.FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH]="The live update connection failed due to the game data being out of sync with the tool.", + [M.FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT]="The live update connection timed out.", + [M.FMOD_ERR_EVENT_NOTFOUND]="The requested event, parameter, bus vca could not be found.", + [M.FMOD_ERR_STUDIO_UNINITIALIZED]="The Studio::System object is not yet initialized.", + [M.FMOD_ERR_STUDIO_NOT_LOADED]="The specified resource is not loaded, so it can't be unloaded.", + [M.FMOD_ERR_INVALID_STRING]="An invalid string was passed to this function.", + [M.FMOD_ERR_ALREADY_LOCKED]="The specified resource is already locked.", + [M.FMOD_ERR_NOT_LOCKED]="The specified resource is not locked, so it can't be unlocked.", + [M.FMOD_ERR_RECORD_DISCONNECTED]="The specified recording driver has been disconnected.", + [M.FMOD_ERR_TOOMANYSAMPLES]="The length provided exceeds the allowable limit.", +} diff --git a/assets/fmod20221/init.lua b/assets/fmod20221/init.lua new file mode 100644 index 00000000..4a941a9c --- /dev/null +++ b/assets/fmod20221/init.lua @@ -0,0 +1,286 @@ +local ffi=require("ffi") +local path=(...):gsub(".init$", "").."." +local r=require; local function require(m) return r(path..m) end + +require("cdef") + +---@class FMOD.master +local M=require("master") + +-- search for fmod shared libraries in package.cpath +local fmodPath=package.searchpath("fmod", package.cpath) +local fmodstudioPath=package.searchpath("fmodstudio", package.cpath) +assert(fmodPath and fmodstudioPath, "FMOD shared libraries not found!") + +-- pretend to load libfmod through Lua (it's going to fail but not raise any errors) so that its location is known when loading libfmodstudio through ffi +-- package.loadlib(paths.fmod, "") + +M.C=ffi.load(fmodPath) +M.C2=ffi.load(fmodstudioPath) + +require("enums") +require("constants") +require("wrap") +require("errors") + +-------------------------- + +M.studio=M.newStudio() +M.core=M.studio:getCoreSystem() + +local studio,core=M.studio,M.core + +---@param args {maxChannel:number, DSPBufferLength:number, DSPBufferCount:number, studioFlag:FMOD.Const, coreFlag:FMOD.Const} +function M.init(args) + core:setDSPBufferSize(8,8) + studio:initialize(args.maxChannel,args.studioFlag,args.coreFlag) + TASK.new(function() + while true do + studio:update() + coroutine.yield() + end + end) +end + +---@param bankPath string +---@param flag? FMOD.Const +function M.loadBank(bankPath,flag) + if not studio then return end + flag=flag or M.FMOD_STUDIO_LOAD_BANK_NORMAL + local bank=studio:loadBankFile(bankPath,flag) + if bankPath:sub(-5)=='.bank' then + bankPath=bankPath:sub(1,-5)..'strings.bank' + studio:loadBankFile(bankPath,flag) + end + return bank +end + +---@type table +local musicLib={} +function M.registerMusic(map) + for k,v in next,map do + local desc,res=studio:getEvent(v) + assert(res==M.FMOD_OK,M.errorString[res]) + musicLib[k]=desc + end +end + +---@type table +local effectLib={} +function M.registerEffect(map) + for k,v in next,map do + local desc,res=studio:getEvent(v) + assert(res==M.FMOD_OK,M.errorString[res]) + effectLib[k]=desc + end +end + +local vocalLib={} +function M.registerVocal(map) +end + +-- Volume things below need three parameters in your fmod project (mainVolume not included) +M.mainVolume=1 +M.musicVolume=1 +M.effectVolume=1 +M.vocalVolume=1 +function M.setMainVolume(v) + M.mainVolume=v + studio:setParameterByName("MusicVolume",M.mainVolume*M.musicVolume,true) + studio:setParameterByName("EffectVolume",M.mainVolume*M.effectVolume,true) + studio:setParameterByName("VocalVolume",M.mainVolume*M.vocalVolume,true) +end +function M.setMusicVolume(v) + M.musicVolume=v + studio:setParameterByName("MusicVolume",M.mainVolume*M.musicVolume,true) +end +function M.setEffectVolume(v) + M.effectVolume=v + studio:setParameterByName("EffectVolume",M.mainVolume*M.effectVolume,true) +end +function M.setVocalVolume(v) + M.vocalVolume=v + studio:setParameterByName("VocalVolume",M.mainVolume*M.vocalVolume,true) +end + +local playingEvent ---@type FMOD.Studio.EventInstance? +---@param name string +---@param args? {instant?:boolean, volume?:number, pitch?:number, tune?:number, fine?:number, pos?:table, param?:table} +---@return FMOD.Studio.EventInstance? +function M.playMusic(name,args) + FMOD.stopMusic() + local desc=musicLib[name] + if not desc then + MSG.new('warn',"No BGM named "..name) + return + end + local event,res=desc:createInstance() + assert(res==M.FMOD_OK,M.errorString[res]) + playingEvent=event + + if not(type(args)=='table' and args.instant==true) then + event:setParameterByName("fade",0,true) + event:setParameterByName("fade",1,false) + end + + if args then + assert(type(args)=='table',"args must be table") + if args.volume then event:setVolume(args.volume) end + if args.pitch then + event:setPitch(args.pitch) + elseif args.tune then + event:setPitch(1.0594630943592953^args.tune) + elseif args.fine then + event:setPitch(1.0594630943592953^(args.fine/100)) + end + if args.param then + assert(type(args.param)=='table',"initParam must be table") + if type(args.param[1])~='table' then args.param={args.param} end + for i=1,#args.param do + event:setParameterByName(args.param[i][1],args.param[i][2],args.param[i][3]==true) + end + end + end + + event:start() + return event +end + +---@param time? number +function M.stopMusic(time) + if not playingEvent then return end + time=time or 0.626 + local e=playingEvent + playingEvent=nil + if time<=0 then + e:stop(M.FMOD_STUDIO_STOP_IMMEDIATE) + else + TASK.new(function() + local startTime=love.timer.getTime() + while true do + coroutine.yield() + local v=1-(love.timer.getTime()-startTime)/time + if v<=0 then break end + e:setParameterByName("fade",v,true) + end + e:stop(M.FMOD_STUDIO_STOP_IMMEDIATE) + end) + end +end + +---@param name string +---@param value number +---@param instant? boolean only `true` take effect +function M.setMusicParam(name,value,instant) + if not playingEvent then return end + playingEvent:setParameterByName(name,value,instant==true) +end + +---@param time number seconds +function M.seekMusic(time) + if not playingEvent then return end + playingEvent:setTimelinePosition(time*1000) +end + +---@return number? +function M.tellMusic() + if not playingEvent then return end + return (playingEvent:getTimelinePosition()) +end + +---@return FMOD.Studio.EventInstance? +function M.getPlaying() + return playingEvent +end + +---priority: pitch>tune>fine +--- +---pos:{x,y,z} +--- +---param:{"paramName", 0, true?} +---@param name string +---@param args? {volume?:number, pitch?:number, tune?:number, fine?:number, pos?:table, param?:table} +---@return FMOD.Studio.EventInstance? +function M.playEffect(name,args) + local desc=effectLib[name] + if not desc then + MSG.new('warn',"No SE named "..name) + return + end + local event,res=desc:createInstance() + assert(res==M.FMOD_OK,M.errorString[res]) + + if args then + assert(type(args)=='table',"args must be table") + if args.volume then event:setVolume(args.volume) end + if args.pitch then + event:setPitch(args.pitch) + elseif args.tune then + event:setPitch(1.0594630943592953^args.tune) + elseif args.fine then + event:setPitch(1.0594630943592953^(args.fine/100)) + end + -- if args.pos then + -- local pos=ffi.new('FMOD_VECTOR',args.pos) + -- local vel=ffi.new('FMOD_VECTOR',{x=0,y=0,z=0}) + -- local fwd=ffi.new('FMOD_VECTOR',{x=0,y=0,z=0}) + -- local up=ffi.new('FMOD_VECTOR',{x=0,y=0,z=0}) + -- local attr=ffi.new('FMOD_3D_ATTRIBUTES',{ + -- position=pos, + -- velocity=vel, + -- forward=fwd, + -- up=up, + -- }) + -- event:set3DAttributes(attr) + -- end + if args.param then + local p=args.param + assert(type(p)=='table',"args.param must be table") + if type(p[1])~='table' then p={p} end + for i=1,#p do + event:setParameterByName(p[i][1],p[i][2],p[i][3]==true) + end + end + end + + event:start() + return event +end + +---@param event string +---@param name string +---@param value number +---@param instant? boolean only `true` take effect +function M.setEffectParam(event,name,value,instant) + local desc=effectLib[event] + if not desc then return end + local l,c=desc:getInstanceList(desc:getInstanceCount()) + for i=1,c do + l[i-1]:setParameterByName(name,value,instant==true) + end +end + +---@param name string +function M.keyOffEffect(name) + local desc=effectLib[name] + if not desc then return end + local l,c=desc:getInstanceList(desc:getInstanceCount()) + for i=1,c do + l[i-1]:keyOff() + end +end + +---@param name string +---@param instant? boolean only `true` take effect +function M.stopEffect(name,instant) + local desc=effectLib[name] + if not desc then return end + local l,c=desc:getInstanceList(desc:getInstanceCount()) + for i=1,c do + l[i-1]:stop(instant and M.FMOD_STUDIO_STOP_IMMEDIATE or M.FMOD_STUDIO_STOP_ALLOWFADEOUT) + end +end + +-------------------------- + +return M diff --git a/assets/fmod20221/master.lua b/assets/fmod20221/master.lua new file mode 100644 index 00000000..a5647075 --- /dev/null +++ b/assets/fmod20221/master.lua @@ -0,0 +1 @@ +return {} diff --git a/assets/fmod20221/wrap.lua b/assets/fmod20221/wrap.lua new file mode 100644 index 00000000..fa3be603 --- /dev/null +++ b/assets/fmod20221/wrap.lua @@ -0,0 +1,3887 @@ +local ffi=require("ffi") +local path=(...):gsub("[^%.]*$", "") +local r=require; local function require(m) return r(path..m) end + +---@alias FMOD.GUID FMOD.GUID +---@alias FMOD.Result FMOD.Result +---@alias FMOD.Const FMOD.Const +---@alias FMOD.Enum FMOD.Enum + +---@class FMOD.master +local M=require("master") +local C=M.C +local C2=M.C2 + +--------------------- +-- manual wrapping -- +--------------------- + +---@return FMOD.Core.System,FMOD.Result +function M.newCore(i1) + i1=i1 or M.FMOD_VERSION + local p=ffi.new("FMOD_SYSTEM*[1]") + local result=C.FMOD_System_Create(p, i1) + return p[0],result +end + +---@return FMOD.Studio.System,FMOD.Result +function M.newStudio(i1) + i1=i1 or M.FMOD_VERSION + local p=ffi.new("FMOD_STUDIO_SYSTEM*[1]") + local result=C2.FMOD_Studio_System_Create(p, i1) + return p[0],result +end + +---@return FMOD.GUID,FMOD.Result +function M.parseID(i1) + local p=ffi.new("FMOD_GUID[1]") + local result=C2.FMOD_Studio_ParseID(i1, p) + return p[0],result +end + +-------------------------- +-- begin generated code -- +-------------------------- + +---@class FMOD.Core +local core={} +core.System={} ---@class FMOD.Core.System +core.Sound={} ---@class FMOD.Core.Sound +core.ChannelControl={} ---@class FMOD.Core.ChannelControl +core.Channel={} ---@class FMOD.Core.Channel +core.ChannelGroup={} ---@class FMOD.Core.ChannelGroup +core.SoundGroup={} ---@class FMOD.Core.SoundGroup +core.DSP={} ---@class FMOD.Core.DSP +core.DSPConnection={} ---@class FMOD.Core.DSPConnection +core.Geometry={} ---@class FMOD.Core.Geometry +core.Reverb3D={} ---@class FMOD.Core.Reverb3D + +---@class FMOD.Studio +local studio={} +studio.System={} ---@class FMOD.Studio.System +studio.EventDescription={} ---@class FMOD.Studio.EventDescription +studio.EventInstance={} ---@class FMOD.Studio.EventInstance +studio.Bus={} ---@class FMOD.Studio.Bus +studio.VCA={} ---@class FMOD.Studio.VCA +studio.Bank={} ---@class FMOD.Studio.Bank +studio.CommandReplay={} ---@class FMOD.Studio.CommandReplay + +---@return FMOD.Result +function core.System:release() + local result=C.FMOD_System_Release(self) + return result +end + +---@return FMOD.Result +function core.System:setOutput(i1) + local result=C.FMOD_System_SetOutput(self,i1) + return result +end + +---@return any,FMOD.Result +function core.System:getOutput() + local o1=ffi.new("FMOD_OUTPUTTYPE[1]") + local result=C.FMOD_System_GetOutput(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.System:getNumDrivers() + local o1=ffi.new("int[1]") + local result=C.FMOD_System_GetNumDrivers(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:getDriverInfo(i1,i2,i3,i4,i5,i6,i7) + local result=C.FMOD_System_GetDriverInfo(self,i1,i2,i3,i4,i5,i6,i7) + return result +end + +---@return FMOD.Result +function core.System:setDriver(i1) + local result=C.FMOD_System_SetDriver(self,i1) + return result +end + +---@return number,FMOD.Result +function core.System:getDriver() + local o1=ffi.new("int[1]") + local result=C.FMOD_System_GetDriver(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:setSoftwareChannels(i1) + local result=C.FMOD_System_SetSoftwareChannels(self,i1) + return result +end + +---@return number,FMOD.Result +function core.System:getSoftwareChannels() + local o1=ffi.new("int[1]") + local result=C.FMOD_System_GetSoftwareChannels(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:setSoftwareFormat(i1,i2,i3) + local result=C.FMOD_System_SetSoftwareFormat(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.System:getSoftwareFormat(i1,i2,i3) + local result=C.FMOD_System_GetSoftwareFormat(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.System:setDSPBufferSize(i1,i2) + local result=C.FMOD_System_SetDSPBufferSize(self,i1,i2) + return result +end + +---@return number,number,FMOD.Result +function core.System:getDSPBufferSize() + local o1=ffi.new("unsigned int[1]") + local o2=ffi.new("int[1]") + local result=C.FMOD_System_GetDSPBufferSize(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.System:setFileSystem(i1,i2,i3,i4,i5,i6,i7) + local result=C.FMOD_System_SetFileSystem(self,i1,i2,i3,i4,i5,i6,i7) + return result +end + +---@return FMOD.Result +function core.System:attachFileSystem(i1,i2,i3,i4) + local result=C.FMOD_System_AttachFileSystem(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function core.System:setAdvancedSettings(i1) + local result=C.FMOD_System_SetAdvancedSettings(self,i1) + return result +end + +---@return any,FMOD.Result +function core.System:getAdvancedSettings() + local o1=ffi.new("FMOD_ADVANCEDSETTINGS[1]") + local result=C.FMOD_System_GetAdvancedSettings(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:setCallback(i1,i2) + local result=C.FMOD_System_SetCallback(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.System:setPluginPath(i1) + local result=C.FMOD_System_SetPluginPath(self,i1) + return result +end + +---@return number,FMOD.Result +function core.System:loadPlugin(i1,i2) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_System_LoadPlugin(self,i1,o1,i2) + return o1[0],result +end + +---@return FMOD.Result +function core.System:unloadPlugin(i1) + local result=C.FMOD_System_UnloadPlugin(self,i1) + return result +end + +---@return FMOD.Result +function core.System:getNumNestedPlugins(i1,i2) + local result=C.FMOD_System_GetNumNestedPlugins(self,i1,i2) + return result +end + +---@return number,FMOD.Result +function core.System:getNestedPlugin(i1,i2) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_System_GetNestedPlugin(self,i1,i2,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.System:getNumPlugins(i1) + local o1=ffi.new("int[1]") + local result=C.FMOD_System_GetNumPlugins(self,i1,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.System:getPluginHandle(i1,i2) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_System_GetPluginHandle(self,i1,i2,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:getPluginInfo(i1,i2,i3,i4,i5) + local result=C.FMOD_System_GetPluginInfo(self,i1,i2,i3,i4,i5) + return result +end + +---@return FMOD.Result +function core.System:setOutputByPlugin(i1) + local result=C.FMOD_System_SetOutputByPlugin(self,i1) + return result +end + +---@return number,FMOD.Result +function core.System:getOutputByPlugin() + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_System_GetOutputByPlugin(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:createDSPByPlugin(i1) + local o1=ffi.new("FMOD_DSP*[1]") + local result=C.FMOD_System_CreateDSPByPlugin(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:getDSPInfoByPlugin(i1) + local o1=ffi.new("const FMOD_DSP_DESCRIPTION*[1]") + local result=C.FMOD_System_GetDSPInfoByPlugin(self,i1,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.System:registerCodec(i1,i2) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_System_RegisterCodec(self,i1,o1,i2) + return o1[0],result +end + +---@return number,FMOD.Result +function core.System:registerDSP(i1) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_System_RegisterDSP(self,i1,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.System:registerOutput(i1) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_System_RegisterOutput(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:init(i1,i2,i3) + local result=C.FMOD_System_Init(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.System:close() + local result=C.FMOD_System_Close(self) + return result +end + +---@return FMOD.Result +function core.System:update() + local result=C.FMOD_System_Update(self) + return result +end + +---@return FMOD.Result +function core.System:setSpeakerPosition(i1,i2,i3,i4) + local result=C.FMOD_System_SetSpeakerPosition(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function core.System:getSpeakerPosition(i1,i2,i3,i4) + local result=C.FMOD_System_GetSpeakerPosition(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function core.System:setStreamBufferSize(i1,i2) + local result=C.FMOD_System_SetStreamBufferSize(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.System:getStreamBufferSize(i1,i2) + local result=C.FMOD_System_GetStreamBufferSize(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.System:set3DSettings(i1,i2,i3) + local result=C.FMOD_System_Set3DSettings(self,i1,i2,i3) + return result +end + +---@return number,number,number,FMOD.Result +function core.System:get3DSettings() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local o3=ffi.new("float[1]") + local result=C.FMOD_System_Get3DSettings(self,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return number,FMOD.Result +function core.System:set3DNumListeners() + local o1=ffi.new("int[1]") + local result=C.FMOD_System_Set3DNumListeners(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.System:get3DNumListeners() + local o1=ffi.new("int[1]") + local result=C.FMOD_System_Get3DNumListeners(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:set3DListenerAttributes(i1,i2,i3,i4,i5) + local result=C.FMOD_System_Set3DListenerAttributes(self,i1,i2,i3,i4,i5) + return result +end + +---@return any,any,any,any,FMOD.Result +function core.System:get3DListenerAttributes(i1) + local o1=ffi.new("FMOD_VECTOR[1]") + local o2=ffi.new("FMOD_VECTOR[1]") + local o3=ffi.new("FMOD_VECTOR[1]") + local o4=ffi.new("FMOD_VECTOR[1]") + local result=C.FMOD_System_Get3DListenerAttributes(self,i1,o1,o2,o3,o4) + return o1[0],o2[0],o3[0],o4[0],result +end + +---@return FMOD.Result +function core.System:set3DRolloffCallback(i1) + local result=C.FMOD_System_Set3DRolloffCallback(self,i1) + return result +end + +---@return FMOD.Result +function core.System:mixerSuspend() + local result=C.FMOD_System_MixerSuspend(self) + return result +end + +---@return FMOD.Result +function core.System:mixerResume() + local result=C.FMOD_System_MixerResume(self) + return result +end + +---@return number,FMOD.Result +function core.System:getDefaultMixMatrix(i1,i2,i3) + local o1=ffi.new("float[1]") + local result=C.FMOD_System_GetDefaultMixMatrix(self,i1,i2,o1,i3) + return o1[0],result +end + +---@return number,FMOD.Result +function core.System:getSpeakerModeChannels(i1) + local o1=ffi.new("int[1]") + local result=C.FMOD_System_GetSpeakerModeChannels(self,i1,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.System:getVersion() + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_System_GetVersion(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:getOutputHandle() + local o1=ffi.new("void*[1]") + local result=C.FMOD_System_GetOutputHandle(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:getChannelsPlaying(i1,i2) + local result=C.FMOD_System_GetChannelsPlaying(self,i1,i2) + return result +end + +---@return any,FMOD.Result +function core.System:getCPUUsage() + local o1=ffi.new("FMOD_CPU_USAGE[1]") + local result=C.FMOD_System_GetCPUUsage(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:getFileUsage(i1,i2,i3) + local result=C.FMOD_System_GetFileUsage(self,i1,i2,i3) + return result +end + +---@return any,FMOD.Result +function core.System:createSound(i1,i2,i3) + local o1=ffi.new("FMOD_SOUND*[1]") + local result=C.FMOD_System_CreateSound(self,i1,i2,i3,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:createStream(i1,i2,i3) + local o1=ffi.new("FMOD_SOUND*[1]") + local result=C.FMOD_System_CreateStream(self,i1,i2,i3,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:createDSP(i1) + local o1=ffi.new("FMOD_DSP*[1]") + local result=C.FMOD_System_CreateDSP(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:createDSPByType(i1) + local o1=ffi.new("FMOD_DSP*[1]") + local result=C.FMOD_System_CreateDSPByType(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:createChannelGroup(i1) + local o1=ffi.new("FMOD_CHANNELGROUP*[1]") + local result=C.FMOD_System_CreateChannelGroup(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:createSoundGroup(i1) + local o1=ffi.new("FMOD_SOUNDGROUP*[1]") + local result=C.FMOD_System_CreateSoundGroup(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Core.Reverb3D,FMOD.Result +function core.System:createReverb3D() + local o1=ffi.new("FMOD_REVERB3D*[1]") + local result=C.FMOD_System_CreateReverb3D(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:playSound(i1,i2,i3,i4) + local result=C.FMOD_System_PlaySound(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function core.System:playDSP(i1,i2,i3,i4) + local result=C.FMOD_System_PlayDSP(self,i1,i2,i3,i4) + return result +end + +---@return any,FMOD.Result +function core.System:getChannel(i1) + local o1=ffi.new("FMOD_CHANNEL*[1]") + local result=C.FMOD_System_GetChannel(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:getDSPInfoByType(i1) + local o1=ffi.new("const FMOD_DSP_DESCRIPTION*[1]") + local result=C.FMOD_System_GetDSPInfoByType(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:getMasterChannelGroup() + local o1=ffi.new("FMOD_CHANNELGROUP*[1]") + local result=C.FMOD_System_GetMasterChannelGroup(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:getMasterSoundGroup() + local o1=ffi.new("FMOD_SOUNDGROUP*[1]") + local result=C.FMOD_System_GetMasterSoundGroup(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:attachChannelGroupToPort(i1,i2,i3,i4) + local result=C.FMOD_System_AttachChannelGroupToPort(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function core.System:detachChannelGroupFromPort(i1) + local result=C.FMOD_System_DetachChannelGroupFromPort(self,i1) + return result +end + +---@return FMOD.Result +function core.System:setReverbProperties(i1,i2) + local result=C.FMOD_System_SetReverbProperties(self,i1,i2) + return result +end + +---@return any,FMOD.Result +function core.System:getReverbProperties(i1) + local o1=ffi.new("FMOD_REVERB_PROPERTIES[1]") + local result=C.FMOD_System_GetReverbProperties(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:lockDSP() + local result=C.FMOD_System_LockDSP(self) + return result +end + +---@return FMOD.Result +function core.System:unlockDSP() + local result=C.FMOD_System_UnlockDSP(self) + return result +end + +---@return FMOD.Result +function core.System:getRecordNumDrivers(i1,i2) + local result=C.FMOD_System_GetRecordNumDrivers(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.System:getRecordDriverInfo(i1,i2,i3,i4,i5,i6,i7,i8) + local result=C.FMOD_System_GetRecordDriverInfo(self,i1,i2,i3,i4,i5,i6,i7,i8) + return result +end + +---@return number,FMOD.Result +function core.System:getRecordPosition(i1) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_System_GetRecordPosition(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:recordStart(i1,i2,i3) + local result=C.FMOD_System_RecordStart(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.System:recordStop(i1) + local result=C.FMOD_System_RecordStop(self,i1) + return result +end + +---@return FMOD.Result +function core.System:isRecording(i1,i2) + local result=C.FMOD_System_IsRecording(self,i1,i2) + return result +end + +---@return FMOD.Core.Geometry,FMOD.Result +function core.System:createGeometry(i1,i2) + local o1=ffi.new("FMOD_GEOMETRY*[1]") + local result=C.FMOD_System_CreateGeometry(self,i1,i2,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:setGeometrySettings(i1) + local result=C.FMOD_System_SetGeometrySettings(self,i1) + return result +end + +---@return number,FMOD.Result +function core.System:getGeometrySettings() + local o1=ffi.new("float[1]") + local result=C.FMOD_System_GetGeometrySettings(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.System:loadGeometry(i1,i2) + local o1=ffi.new("FMOD_GEOMETRY*[1]") + local result=C.FMOD_System_LoadGeometry(self,i1,i2,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:getGeometryOcclusion(i1,i2,i3,i4) + local result=C.FMOD_System_GetGeometryOcclusion(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function core.System:setNetworkProxy(i1) + local result=C.FMOD_System_SetNetworkProxy(self,i1) + return result +end + +---@return string,FMOD.Result +function core.System:getNetworkProxy() + local o1=ffi.new("char[256]") + local result=C.FMOD_System_GetNetworkProxy(self,o1,256) + return ffi.string(o1),result +end + +---@return FMOD.Result +function core.System:setNetworkTimeout(i1) + local result=C.FMOD_System_SetNetworkTimeout(self,i1) + return result +end + +---@return number,FMOD.Result +function core.System:getNetworkTimeout() + local o1=ffi.new("int[1]") + local result=C.FMOD_System_GetNetworkTimeout(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.System:setUserData(i1) + local result=C.FMOD_System_SetUserData(self,i1) + return result +end + +---@return any,FMOD.Result +function core.System:getUserData() + local o1=ffi.new("void*[1]") + local result=C.FMOD_System_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Sound:release() + local result=C.FMOD_Sound_Release(self) + return result +end + +---@return any,FMOD.Result +function core.Sound:getSystemObject() + local o1=ffi.new("FMOD_SYSTEM*[1]") + local result=C.FMOD_Sound_GetSystemObject(self,o1) + return o1[0],result +end + +---@return any,any,number,number,FMOD.Result +function core.Sound:lock(i1,i2) + local o1=ffi.new("void*[1]") + local o2=ffi.new("void*[1]") + local o3=ffi.new("unsigned int[1]") + local o4=ffi.new("unsigned int[1]") + local result=C.FMOD_Sound_Lock(self,i1,i2,o1,o2,o3,o4) + return o1[0],o2[0],o3[0],o4[0],result +end + +---@return FMOD.Result +function core.Sound:unlock(i1,i2,i3,i4) + local result=C.FMOD_Sound_Unlock(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function core.Sound:setDefaults(i1,i2) + local result=C.FMOD_Sound_SetDefaults(self,i1,i2) + return result +end + +---@return number,number,FMOD.Result +function core.Sound:getDefaults() + local o1=ffi.new("float[1]") + local o2=ffi.new("int[1]") + local result=C.FMOD_Sound_GetDefaults(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.Sound:set3DMinMaxDistance(i1,i2) + local result=C.FMOD_Sound_Set3DMinMaxDistance(self,i1,i2) + return result +end + +---@return number,number,FMOD.Result +function core.Sound:get3DMinMaxDistance() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C.FMOD_Sound_Get3DMinMaxDistance(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.Sound:set3DConeSettings(i1,i2,i3) + local result=C.FMOD_Sound_Set3DConeSettings(self,i1,i2,i3) + return result +end + +---@return number,number,number,FMOD.Result +function core.Sound:get3DConeSettings() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local o3=ffi.new("float[1]") + local result=C.FMOD_Sound_Get3DConeSettings(self,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return FMOD.Result +function core.Sound:set3DCustomRolloff(i1,i2) + local result=C.FMOD_Sound_Set3DCustomRolloff(self,i1,i2) + return result +end + +---@return any,number,FMOD.Result +function core.Sound:get3DCustomRolloff() + local o1=ffi.new("FMOD_VECTOR*[1]") + local o2=ffi.new("int[1]") + local result=C.FMOD_Sound_Get3DCustomRolloff(self,o1,o2) + return o1[0],o2[0],result +end + +---@return any,FMOD.Result +function core.Sound:getSubSound(i1) + local o1=ffi.new("FMOD_SOUND*[1]") + local result=C.FMOD_Sound_GetSubSound(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.Sound:getSubSoundParent() + local o1=ffi.new("FMOD_SOUND*[1]") + local result=C.FMOD_Sound_GetSubSoundParent(self,o1) + return o1[0],result +end + +---@return string,FMOD.Result +function core.Sound:getName() + local o1=ffi.new("char[256]") + local result=C.FMOD_Sound_GetName(self,o1,256) + return ffi.string(o1),result +end + +---@return number,FMOD.Result +function core.Sound:getLength(i1) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_Sound_GetLength(self,o1,i1) + return o1[0],result +end + +---@return any,any,number,number,FMOD.Result +function core.Sound:getFormat() + local o1=ffi.new("FMOD_SOUND_TYPE[1]") + local o2=ffi.new("FMOD_SOUND_FORMAT[1]") + local o3=ffi.new("int[1]") + local o4=ffi.new("int[1]") + local result=C.FMOD_Sound_GetFormat(self,o1,o2,o3,o4) + return o1[0],o2[0],o3[0],o4[0],result +end + +---@return number,FMOD.Result +function core.Sound:getNumSubSounds() + local o1=ffi.new("int[1]") + local result=C.FMOD_Sound_GetNumSubSounds(self,o1) + return o1[0],result +end + +---@return number,number,FMOD.Result +function core.Sound:getNumTags() + local o1=ffi.new("int[1]") + local o2=ffi.new("int[1]") + local result=C.FMOD_Sound_GetNumTags(self,o1,o2) + return o1[0],o2[0],result +end + +---@return any,FMOD.Result +function core.Sound:getTag(i1,i2) + local o1=ffi.new("FMOD_TAG[1]") + local result=C.FMOD_Sound_GetTag(self,i1,i2,o1) + return o1[0],result +end + +---@return any,number,number,number,FMOD.Result +function core.Sound:getOpenState() + local o1=ffi.new("FMOD_OPENSTATE[1]") + local o2=ffi.new("unsigned int[1]") + local o3=ffi.new("FMOD_BOOL[1]") + local o4=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Sound_GetOpenState(self,o1,o2,o3,o4) + return o1[0],o2[0],o3[0],o4[0],result +end + +---@return number,FMOD.Result +function core.Sound:readData(i1,i2) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_Sound_ReadData(self,i1,i2,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Sound:seekData(i1) + local result=C.FMOD_Sound_SeekData(self,i1) + return result +end + +---@return FMOD.Result +function core.Sound:setSoundGroup(i1) + local result=C.FMOD_Sound_SetSoundGroup(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Sound:getSoundGroup() + local o1=ffi.new("FMOD_SOUNDGROUP*[1]") + local result=C.FMOD_Sound_GetSoundGroup(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.Sound:getNumSyncPoints() + local o1=ffi.new("int[1]") + local result=C.FMOD_Sound_GetNumSyncPoints(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.Sound:getSyncPoint(i1) + local o1=ffi.new("FMOD_SYNCPOINT*[1]") + local result=C.FMOD_Sound_GetSyncPoint(self,i1,o1) + return o1[0],result +end + +---Warning: string wrongly retrieved +---@return any,number,FMOD.Result +function core.Sound:getSyncPointInfo(i1,i2,i3) + local o1=ffi.new("char[1]") + local o2=ffi.new("unsigned int[1]") + local result=C.FMOD_Sound_GetSyncPointInfo(self,i1,o1,i2,o2,i3) + return o1[0],o2[0],result +end + +---@return any,FMOD.Result +function core.Sound:addSyncPoint(i1,i2,i3) + local o1=ffi.new("FMOD_SYNCPOINT*[1]") + local result=C.FMOD_Sound_AddSyncPoint(self,i1,i2,i3,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Sound:deleteSyncPoint(i1) + local result=C.FMOD_Sound_DeleteSyncPoint(self,i1) + return result +end + +---@return FMOD.Result +function core.Sound:setMode(i1) + local result=C.FMOD_Sound_SetMode(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Sound:getMode() + local o1=ffi.new("FMOD_MODE[1]") + local result=C.FMOD_Sound_GetMode(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Sound:setLoopCount(i1) + local result=C.FMOD_Sound_SetLoopCount(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Sound:getLoopCount() + local o1=ffi.new("int[1]") + local result=C.FMOD_Sound_GetLoopCount(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Sound:setLoopPoints(i1,i2,i3,i4) + local result=C.FMOD_Sound_SetLoopPoints(self,i1,i2,i3,i4) + return result +end + +---@return number,number,FMOD.Result +function core.Sound:getLoopPoints(i1,i2) + local o1=ffi.new("unsigned int[1]") + local o2=ffi.new("unsigned int[1]") + local result=C.FMOD_Sound_GetLoopPoints(self,o1,i1,o2,i2) + return o1[0],o2[0],result +end + +---@return number,FMOD.Result +function core.Sound:getMusicNumChannels() + local o1=ffi.new("int[1]") + local result=C.FMOD_Sound_GetMusicNumChannels(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Sound:setMusicChannelVolume(i1,i2) + local result=C.FMOD_Sound_SetMusicChannelVolume(self,i1,i2) + return result +end + +---@return number,FMOD.Result +function core.Sound:getMusicChannelVolume(i1) + local o1=ffi.new("float[1]") + local result=C.FMOD_Sound_GetMusicChannelVolume(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Sound:setMusicSpeed(i1) + local result=C.FMOD_Sound_SetMusicSpeed(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Sound:getMusicSpeed() + local o1=ffi.new("float[1]") + local result=C.FMOD_Sound_GetMusicSpeed(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Sound:setUserData(i1) + local result=C.FMOD_Sound_SetUserData(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Sound:getUserData() + local o1=ffi.new("void*[1]") + local result=C.FMOD_Sound_GetUserData(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.Channel:getSystemObject() + local o1=ffi.new("FMOD_SYSTEM*[1]") + local result=C.FMOD_Channel_GetSystemObject(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:stop() + local result=C.FMOD_Channel_Stop(self) + return result +end + +---@return FMOD.Result +function core.Channel:setPaused(i1) + local result=C.FMOD_Channel_SetPaused(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getPaused() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Channel_GetPaused(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setVolume(i1) + local result=C.FMOD_Channel_SetVolume(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getVolume() + local o1=ffi.new("float[1]") + local result=C.FMOD_Channel_GetVolume(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setVolumeRamp(i1) + local result=C.FMOD_Channel_SetVolumeRamp(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getVolumeRamp() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Channel_GetVolumeRamp(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.Channel:getAudibility() + local o1=ffi.new("float[1]") + local result=C.FMOD_Channel_GetAudibility(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setPitch(i1) + local result=C.FMOD_Channel_SetPitch(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getPitch() + local o1=ffi.new("float[1]") + local result=C.FMOD_Channel_GetPitch(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setMute(i1) + local result=C.FMOD_Channel_SetMute(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getMute() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Channel_GetMute(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setReverbProperties(i1,i2) + local result=C.FMOD_Channel_SetReverbProperties(self,i1,i2) + return result +end + +---@return number,FMOD.Result +function core.Channel:getReverbProperties(i1) + local o1=ffi.new("float[1]") + local result=C.FMOD_Channel_GetReverbProperties(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setLowPassGain(i1) + local result=C.FMOD_Channel_SetLowPassGain(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getLowPassGain() + local o1=ffi.new("float[1]") + local result=C.FMOD_Channel_GetLowPassGain(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setMode(i1) + local result=C.FMOD_Channel_SetMode(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Channel:getMode() + local o1=ffi.new("FMOD_MODE[1]") + local result=C.FMOD_Channel_GetMode(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setCallback(i1) + local result=C.FMOD_Channel_SetCallback(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:isPlaying() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Channel_IsPlaying(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setPan(i1) + local result=C.FMOD_Channel_SetPan(self,i1) + return result +end + +---@return FMOD.Result +function core.Channel:setMixLevelsOutput(i1,i2,i3,i4,i5,i6,i7,i8) + local result=C.FMOD_Channel_SetMixLevelsOutput(self,i1,i2,i3,i4,i5,i6,i7,i8) + return result +end + +---@return FMOD.Result +function core.Channel:setMixLevelsInput(i1,i2) + local result=C.FMOD_Channel_SetMixLevelsInput(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.Channel:setMixMatrix(i1,i2,i3,i4) + local result=C.FMOD_Channel_SetMixMatrix(self,i1,i2,i3,i4) + return result +end + +---@return number,number,number,number,FMOD.Result +function core.Channel:getMixMatrix() + local o1=ffi.new("float[1]") + local o2=ffi.new("int[1]") + local o3=ffi.new("int[1]") + local o4=ffi.new("int[1]") + local result=C.FMOD_Channel_GetMixMatrix(self,o1,o2,o3,o4) + return o1[0],o2[0],o3[0],o4[0],result +end + +---@return number,number,FMOD.Result +function core.Channel:getDSPClock() + local o1=ffi.new("unsigned long long int[1]") + local o2=ffi.new("unsigned long long int[1]") + local result=C.FMOD_Channel_GetDSPClock(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.Channel:setDelay(i1,i2,i3) + local result=C.FMOD_Channel_SetDelay(self,i1,i2,i3) + return result +end + +---@return number,number,number,FMOD.Result +function core.Channel:getDelay() + local o1=ffi.new("unsigned long long int[1]") + local o2=ffi.new("unsigned long long int[1]") + local o3=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Channel_GetDelay(self,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return FMOD.Result +function core.Channel:addFadePoint(i1,i2) + local result=C.FMOD_Channel_AddFadePoint(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.Channel:setFadePointRamp(i1,i2) + local result=C.FMOD_Channel_SetFadePointRamp(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.Channel:removeFadePoints(i1,i2) + local result=C.FMOD_Channel_RemoveFadePoints(self,i1,i2) + return result +end + +---@return number,number,number,FMOD.Result +function core.Channel:getFadePoints() + local o1=ffi.new("unsigned int[1]") + local o2=ffi.new("unsigned long long int[1]") + local o3=ffi.new("float[1]") + local result=C.FMOD_Channel_GetFadePoints(self,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return any,FMOD.Result +function core.Channel:getDSP(i1) + local o1=ffi.new("FMOD_DSP*[1]") + local result=C.FMOD_Channel_GetDSP(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:addDSP(i1,i2) + local result=C.FMOD_Channel_AddDSP(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.Channel:removeDSP(i1) + local result=C.FMOD_Channel_RemoveDSP(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getNumDSPs() + local o1=ffi.new("int[1]") + local result=C.FMOD_Channel_GetNumDSPs(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setDSPIndex(i1,i2) + local result=C.FMOD_Channel_SetDSPIndex(self,i1,i2) + return result +end + +---@return number,FMOD.Result +function core.Channel:getDSPIndex(i1) + local o1=ffi.new("int[1]") + local result=C.FMOD_Channel_GetDSPIndex(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:set3DAttributes(i1,i2) + local result=C.FMOD_Channel_Set3DAttributes(self,i1,i2) + return result +end + +---@return any,any,FMOD.Result +function core.Channel:get3DAttributes() + local o1=ffi.new("FMOD_VECTOR[1]") + local o2=ffi.new("FMOD_VECTOR[1]") + local result=C.FMOD_Channel_Get3DAttributes(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.Channel:set3DMinMaxDistance(i1,i2) + local result=C.FMOD_Channel_Set3DMinMaxDistance(self,i1,i2) + return result +end + +---@return number,number,FMOD.Result +function core.Channel:get3DMinMaxDistance() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C.FMOD_Channel_Get3DMinMaxDistance(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.Channel:set3DConeSettings(i1,i2,i3) + local result=C.FMOD_Channel_Set3DConeSettings(self,i1,i2,i3) + return result +end + +---@return number,number,number,FMOD.Result +function core.Channel:get3DConeSettings() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local o3=ffi.new("float[1]") + local result=C.FMOD_Channel_Get3DConeSettings(self,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return FMOD.Result +function core.Channel:set3DConeOrientation(i1) + local result=C.FMOD_Channel_Set3DConeOrientation(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Channel:get3DConeOrientation() + local o1=ffi.new("FMOD_VECTOR[1]") + local result=C.FMOD_Channel_Get3DConeOrientation(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:set3DCustomRolloff(i1,i2) + local result=C.FMOD_Channel_Set3DCustomRolloff(self,i1,i2) + return result +end + +---@return any,number,FMOD.Result +function core.Channel:get3DCustomRolloff() + local o1=ffi.new("FMOD_VECTOR*[1]") + local o2=ffi.new("int[1]") + local result=C.FMOD_Channel_Get3DCustomRolloff(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.Channel:set3DOcclusion(i1,i2) + local result=C.FMOD_Channel_Set3DOcclusion(self,i1,i2) + return result +end + +---@return number,number,FMOD.Result +function core.Channel:get3DOcclusion() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C.FMOD_Channel_Get3DOcclusion(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.Channel:set3DSpread(i1) + local result=C.FMOD_Channel_Set3DSpread(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:get3DSpread() + local o1=ffi.new("float[1]") + local result=C.FMOD_Channel_Get3DSpread(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:set3DLevel(i1) + local result=C.FMOD_Channel_Set3DLevel(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:get3DLevel() + local o1=ffi.new("float[1]") + local result=C.FMOD_Channel_Get3DLevel(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:set3DDopplerLevel(i1) + local result=C.FMOD_Channel_Set3DDopplerLevel(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:get3DDopplerLevel() + local o1=ffi.new("float[1]") + local result=C.FMOD_Channel_Get3DDopplerLevel(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:set3DDistanceFilter(i1,i2,i3) + local result=C.FMOD_Channel_Set3DDistanceFilter(self,i1,i2,i3) + return result +end + +---@return number,number,number,FMOD.Result +function core.Channel:get3DDistanceFilter() + local o1=ffi.new("FMOD_BOOL[1]") + local o2=ffi.new("float[1]") + local o3=ffi.new("float[1]") + local result=C.FMOD_Channel_Get3DDistanceFilter(self,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return FMOD.Result +function core.Channel:setUserData(i1) + local result=C.FMOD_Channel_SetUserData(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Channel:getUserData() + local o1=ffi.new("void*[1]") + local result=C.FMOD_Channel_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setFrequency(i1) + local result=C.FMOD_Channel_SetFrequency(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getFrequency() + local o1=ffi.new("float[1]") + local result=C.FMOD_Channel_GetFrequency(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setPriority(i1) + local result=C.FMOD_Channel_SetPriority(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getPriority() + local o1=ffi.new("int[1]") + local result=C.FMOD_Channel_GetPriority(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setPosition(i1,i2) + local result=C.FMOD_Channel_SetPosition(self,i1,i2) + return result +end + +---@return number,FMOD.Result +function core.Channel:getPosition(i1) + local o1=ffi.new("unsigned int[1]") + local result=C.FMOD_Channel_GetPosition(self,o1,i1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setChannelGroup(i1) + local result=C.FMOD_Channel_SetChannelGroup(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Channel:getChannelGroup() + local o1=ffi.new("FMOD_CHANNELGROUP*[1]") + local result=C.FMOD_Channel_GetChannelGroup(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setLoopCount(i1) + local result=C.FMOD_Channel_SetLoopCount(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Channel:getLoopCount() + local o1=ffi.new("int[1]") + local result=C.FMOD_Channel_GetLoopCount(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Channel:setLoopPoints(i1,i2,i3,i4) + local result=C.FMOD_Channel_SetLoopPoints(self,i1,i2,i3,i4) + return result +end + +---@return number,number,FMOD.Result +function core.Channel:getLoopPoints(i1,i2) + local o1=ffi.new("unsigned int[1]") + local o2=ffi.new("unsigned int[1]") + local result=C.FMOD_Channel_GetLoopPoints(self,o1,i1,o2,i2) + return o1[0],o2[0],result +end + +---@return number,FMOD.Result +function core.Channel:isVirtual() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Channel_IsVirtual(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.Channel:getCurrentSound() + local o1=ffi.new("FMOD_SOUND*[1]") + local result=C.FMOD_Channel_GetCurrentSound(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.Channel:getIndex() + local o1=ffi.new("int[1]") + local result=C.FMOD_Channel_GetIndex(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.ChannelGroup:getSystemObject(i1) + local result=C.FMOD_ChannelGroup_GetSystemObject(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:stop() + local result=C.FMOD_ChannelGroup_Stop(self) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setPaused(i1) + local result=C.FMOD_ChannelGroup_SetPaused(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getPaused(i1) + local result=C.FMOD_ChannelGroup_GetPaused(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setVolume(i1) + local result=C.FMOD_ChannelGroup_SetVolume(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getVolume(i1) + local result=C.FMOD_ChannelGroup_GetVolume(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setVolumeRamp(i1) + local result=C.FMOD_ChannelGroup_SetVolumeRamp(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getVolumeRamp(i1) + local result=C.FMOD_ChannelGroup_GetVolumeRamp(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getAudibility(i1) + local result=C.FMOD_ChannelGroup_GetAudibility(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setPitch(i1) + local result=C.FMOD_ChannelGroup_SetPitch(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getPitch(i1) + local result=C.FMOD_ChannelGroup_GetPitch(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setMute(i1) + local result=C.FMOD_ChannelGroup_SetMute(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getMute(i1) + local result=C.FMOD_ChannelGroup_GetMute(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setReverbProperties(i1,i2) + local result=C.FMOD_ChannelGroup_SetReverbProperties(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getReverbProperties(i1,i2) + local result=C.FMOD_ChannelGroup_GetReverbProperties(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setLowPassGain(i1) + local result=C.FMOD_ChannelGroup_SetLowPassGain(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getLowPassGain(i1) + local result=C.FMOD_ChannelGroup_GetLowPassGain(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setMode(i1) + local result=C.FMOD_ChannelGroup_SetMode(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getMode(i1) + local result=C.FMOD_ChannelGroup_GetMode(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setCallback(i1) + local result=C.FMOD_ChannelGroup_SetCallback(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:isPlaying(i1) + local result=C.FMOD_ChannelGroup_IsPlaying(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setPan(i1) + local result=C.FMOD_ChannelGroup_SetPan(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setMixLevelsOutput(i1,i2,i3,i4,i5,i6,i7,i8) + local result=C.FMOD_ChannelGroup_SetMixLevelsOutput(self,i1,i2,i3,i4,i5,i6,i7,i8) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setMixLevelsInput(i1,i2) + local result=C.FMOD_ChannelGroup_SetMixLevelsInput(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setMixMatrix(i1,i2,i3,i4) + local result=C.FMOD_ChannelGroup_SetMixMatrix(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getMixMatrix(i1,i2,i3,i4) + local result=C.FMOD_ChannelGroup_GetMixMatrix(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getDSPClock(i1,i2) + local result=C.FMOD_ChannelGroup_GetDSPClock(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setDelay(i1,i2,i3) + local result=C.FMOD_ChannelGroup_SetDelay(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getDelay(i1,i2,i3) + local result=C.FMOD_ChannelGroup_GetDelay(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:addFadePoint(i1,i2) + local result=C.FMOD_ChannelGroup_AddFadePoint(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setFadePointRamp(i1,i2) + local result=C.FMOD_ChannelGroup_SetFadePointRamp(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:removeFadePoints(i1,i2) + local result=C.FMOD_ChannelGroup_RemoveFadePoints(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getFadePoints(i1,i2,i3) + local result=C.FMOD_ChannelGroup_GetFadePoints(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getDSP(i1,i2) + local result=C.FMOD_ChannelGroup_GetDSP(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:addDSP(i1,i2) + local result=C.FMOD_ChannelGroup_AddDSP(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:removeDSP(i1) + local result=C.FMOD_ChannelGroup_RemoveDSP(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getNumDSPs(i1) + local result=C.FMOD_ChannelGroup_GetNumDSPs(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setDSPIndex(i1,i2) + local result=C.FMOD_ChannelGroup_SetDSPIndex(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getDSPIndex(i1,i2) + local result=C.FMOD_ChannelGroup_GetDSPIndex(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DAttributes(i1,i2) + local result=C.FMOD_ChannelGroup_Set3DAttributes(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DAttributes(i1,i2) + local result=C.FMOD_ChannelGroup_Get3DAttributes(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DMinMaxDistance(i1,i2) + local result=C.FMOD_ChannelGroup_Set3DMinMaxDistance(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DMinMaxDistance(i1,i2) + local result=C.FMOD_ChannelGroup_Get3DMinMaxDistance(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DConeSettings(i1,i2,i3) + local result=C.FMOD_ChannelGroup_Set3DConeSettings(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DConeSettings(i1,i2,i3) + local result=C.FMOD_ChannelGroup_Get3DConeSettings(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DConeOrientation(i1) + local result=C.FMOD_ChannelGroup_Set3DConeOrientation(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DConeOrientation(i1) + local result=C.FMOD_ChannelGroup_Get3DConeOrientation(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DCustomRolloff(i1,i2) + local result=C.FMOD_ChannelGroup_Set3DCustomRolloff(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DCustomRolloff(i1,i2) + local result=C.FMOD_ChannelGroup_Get3DCustomRolloff(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DOcclusion(i1,i2) + local result=C.FMOD_ChannelGroup_Set3DOcclusion(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DOcclusion(i1,i2) + local result=C.FMOD_ChannelGroup_Get3DOcclusion(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DSpread(i1) + local result=C.FMOD_ChannelGroup_Set3DSpread(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DSpread(i1) + local result=C.FMOD_ChannelGroup_Get3DSpread(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DLevel(i1) + local result=C.FMOD_ChannelGroup_Set3DLevel(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DLevel(i1) + local result=C.FMOD_ChannelGroup_Get3DLevel(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DDopplerLevel(i1) + local result=C.FMOD_ChannelGroup_Set3DDopplerLevel(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DDopplerLevel(i1) + local result=C.FMOD_ChannelGroup_Get3DDopplerLevel(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:set3DDistanceFilter(i1,i2,i3) + local result=C.FMOD_ChannelGroup_Set3DDistanceFilter(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:get3DDistanceFilter(i1,i2,i3) + local result=C.FMOD_ChannelGroup_Get3DDistanceFilter(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:setUserData(i1) + local result=C.FMOD_ChannelGroup_SetUserData(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:getUserData(i1) + local result=C.FMOD_ChannelGroup_GetUserData(self,i1) + return result +end + +---@return FMOD.Result +function core.ChannelGroup:release() + local result=C.FMOD_ChannelGroup_Release(self) + return result +end + +---@return any,FMOD.Result +function core.ChannelGroup:addGroup(i1,i2) + local o1=ffi.new("FMOD_DSPCONNECTION*[1]") + local result=C.FMOD_ChannelGroup_AddGroup(self,i1,i2,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.ChannelGroup:getNumGroups() + local o1=ffi.new("int[1]") + local result=C.FMOD_ChannelGroup_GetNumGroups(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.ChannelGroup:getGroup(i1) + local o1=ffi.new("FMOD_CHANNELGROUP*[1]") + local result=C.FMOD_ChannelGroup_GetGroup(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.ChannelGroup:getParentGroup() + local o1=ffi.new("FMOD_CHANNELGROUP*[1]") + local result=C.FMOD_ChannelGroup_GetParentGroup(self,o1) + return o1[0],result +end + +---@return string,FMOD.Result +function core.ChannelGroup:getName(i1) + local o1=ffi.new("char[256]") + local result=C.FMOD_ChannelGroup_GetName(self,o1,256) + return ffi.string(o1),result +end + +---@return number,FMOD.Result +function core.ChannelGroup:getNumChannels() + local o1=ffi.new("int[1]") + local result=C.FMOD_ChannelGroup_GetNumChannels(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.ChannelGroup:getChannel(i1) + local o1=ffi.new("FMOD_CHANNEL*[1]") + local result=C.FMOD_ChannelGroup_GetChannel(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.SoundGroup:release() + local result=C.FMOD_SoundGroup_Release(self) + return result +end + +---@return any,FMOD.Result +function core.SoundGroup:getSystemObject() + local o1=ffi.new("FMOD_SYSTEM*[1]") + local result=C.FMOD_SoundGroup_GetSystemObject(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.SoundGroup:setMaxAudible(i1) + local result=C.FMOD_SoundGroup_SetMaxAudible(self,i1) + return result +end + +---@return number,FMOD.Result +function core.SoundGroup:getMaxAudible() + local o1=ffi.new("int[1]") + local result=C.FMOD_SoundGroup_GetMaxAudible(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.SoundGroup:setMaxAudibleBehavior(i1) + local result=C.FMOD_SoundGroup_SetMaxAudibleBehavior(self,i1) + return result +end + +---@return any,FMOD.Result +function core.SoundGroup:getMaxAudibleBehavior() + local o1=ffi.new("FMOD_SOUNDGROUP_BEHAVIOR[1]") + local result=C.FMOD_SoundGroup_GetMaxAudibleBehavior(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.SoundGroup:setMuteFadeSpeed(i1) + local result=C.FMOD_SoundGroup_SetMuteFadeSpeed(self,i1) + return result +end + +---@return number,FMOD.Result +function core.SoundGroup:getMuteFadeSpeed() + local o1=ffi.new("float[1]") + local result=C.FMOD_SoundGroup_GetMuteFadeSpeed(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.SoundGroup:setVolume(i1) + local result=C.FMOD_SoundGroup_SetVolume(self,i1) + return result +end + +---@return number,FMOD.Result +function core.SoundGroup:getVolume() + local o1=ffi.new("float[1]") + local result=C.FMOD_SoundGroup_GetVolume(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.SoundGroup:stop() + local result=C.FMOD_SoundGroup_Stop(self) + return result +end + +---@return string,FMOD.Result +function core.SoundGroup:getName(i1) + local o1=ffi.new("char[256]") + local result=C.FMOD_SoundGroup_GetName(self,o1,256) + return ffi.string(o1),result +end + +---@return number,FMOD.Result +function core.SoundGroup:getNumSounds() + local o1=ffi.new("int[1]") + local result=C.FMOD_SoundGroup_GetNumSounds(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.SoundGroup:getSound(i1) + local o1=ffi.new("FMOD_SOUND*[1]") + local result=C.FMOD_SoundGroup_GetSound(self,i1,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.SoundGroup:getNumPlaying() + local o1=ffi.new("int[1]") + local result=C.FMOD_SoundGroup_GetNumPlaying(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.SoundGroup:setUserData(i1) + local result=C.FMOD_SoundGroup_SetUserData(self,i1) + return result +end + +---@return any,FMOD.Result +function core.SoundGroup:getUserData() + local o1=ffi.new("void*[1]") + local result=C.FMOD_SoundGroup_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.DSP:release() + local result=C.FMOD_DSP_Release(self) + return result +end + +---@return any,FMOD.Result +function core.DSP:getSystemObject() + local o1=ffi.new("FMOD_SYSTEM*[1]") + local result=C.FMOD_DSP_GetSystemObject(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.DSP:addInput(i1,i2) + local o1=ffi.new("FMOD_DSPCONNECTION*[1]") + local result=C.FMOD_DSP_AddInput(self,i1,o1,i2) + return o1[0],result +end + +---@return FMOD.Result +function core.DSP:disconnectFrom(i1,i2) + local result=C.FMOD_DSP_DisconnectFrom(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.DSP:disconnectAll(i1,i2) + local result=C.FMOD_DSP_DisconnectAll(self,i1,i2) + return result +end + +---@return number,FMOD.Result +function core.DSP:getNumInputs() + local o1=ffi.new("int[1]") + local result=C.FMOD_DSP_GetNumInputs(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.DSP:getNumOutputs() + local o1=ffi.new("int[1]") + local result=C.FMOD_DSP_GetNumOutputs(self,o1) + return o1[0],result +end + +---@return any,any,FMOD.Result +function core.DSP:getInput(i1) + local o1=ffi.new("FMOD_DSP*[1]") + local o2=ffi.new("FMOD_DSPCONNECTION*[1]") + local result=C.FMOD_DSP_GetInput(self,i1,o1,o2) + return o1[0],o2[0],result +end + +---@return any,any,FMOD.Result +function core.DSP:getOutput(i1) + local o1=ffi.new("FMOD_DSP*[1]") + local o2=ffi.new("FMOD_DSPCONNECTION*[1]") + local result=C.FMOD_DSP_GetOutput(self,i1,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.DSP:setActive(i1) + local result=C.FMOD_DSP_SetActive(self,i1) + return result +end + +---@return number,FMOD.Result +function core.DSP:getActive() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_DSP_GetActive(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.DSP:setBypass(i1) + local result=C.FMOD_DSP_SetBypass(self,i1) + return result +end + +---@return number,FMOD.Result +function core.DSP:getBypass() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_DSP_GetBypass(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.DSP:setWetDryMix(i1,i2,i3) + local result=C.FMOD_DSP_SetWetDryMix(self,i1,i2,i3) + return result +end + +---@return number,number,number,FMOD.Result +function core.DSP:getWetDryMix() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local o3=ffi.new("float[1]") + local result=C.FMOD_DSP_GetWetDryMix(self,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return FMOD.Result +function core.DSP:setChannelFormat(i1,i2,i3) + local result=C.FMOD_DSP_SetChannelFormat(self,i1,i2,i3) + return result +end + +---@return any,number,any,FMOD.Result +function core.DSP:getChannelFormat() + local o1=ffi.new("FMOD_CHANNELMASK[1]") + local o2=ffi.new("int[1]") + local o3=ffi.new("FMOD_SPEAKERMODE[1]") + local result=C.FMOD_DSP_GetChannelFormat(self,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return any,number,any,FMOD.Result +function core.DSP:getOutputChannelFormat(i1,i2,i3) + local o1=ffi.new("FMOD_CHANNELMASK[1]") + local o2=ffi.new("int[1]") + local o3=ffi.new("FMOD_SPEAKERMODE[1]") + local result=C.FMOD_DSP_GetOutputChannelFormat(self,i1,i2,i3,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return FMOD.Result +function core.DSP:reset() + local result=C.FMOD_DSP_Reset(self) + return result +end + +---@return FMOD.Result +function core.DSP:setCallback(i1) + local result=C.FMOD_DSP_SetCallback(self,i1) + return result +end + +---@return FMOD.Result +function core.DSP:setParameterFloat(i1,i2) + local result=C.FMOD_DSP_SetParameterFloat(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.DSP:setParameterInt(i1,i2) + local result=C.FMOD_DSP_SetParameterInt(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.DSP:setParameterBool(i1,i2) + local result=C.FMOD_DSP_SetParameterBool(self,i1,i2) + return result +end + +---@return FMOD.Result +function core.DSP:setParameterData(i1,i2,i3) + local result=C.FMOD_DSP_SetParameterData(self,i1,i2,i3) + return result +end + +---Warning: string wrongly retrieved +---@return number,any,FMOD.Result +function core.DSP:getParameterFloat(i1,i2) + local o1=ffi.new("float[1]") + local o2=ffi.new("char[1]") + local result=C.FMOD_DSP_GetParameterFloat(self,i1,o1,o2,i2) + return o1[0],o2[0],result +end + +---Warning: string wrongly retrieved +---@return number,any,FMOD.Result +function core.DSP:getParameterInt(i1,i2) + local o1=ffi.new("int[1]") + local o2=ffi.new("char[1]") + local result=C.FMOD_DSP_GetParameterInt(self,i1,o1,o2,i2) + return o1[0],o2[0],result +end + +---Warning: string wrongly retrieved +---@return number,any,FMOD.Result +function core.DSP:getParameterBool(i1,i2) + local o1=ffi.new("FMOD_BOOL[1]") + local o2=ffi.new("char[1]") + local result=C.FMOD_DSP_GetParameterBool(self,i1,o1,o2,i2) + return o1[0],o2[0],result +end + +---Warning: string wrongly retrieved +---@return any,number,any,FMOD.Result +function core.DSP:getParameterData(i1,i2) + local o1=ffi.new("void*[1]") + local o2=ffi.new("unsigned int[1]") + local o3=ffi.new("char[1]") + local result=C.FMOD_DSP_GetParameterData(self,i1,o1,o2,o3,i2) + return o1[0],o2[0],o3[0],result +end + +---@return number,FMOD.Result +function core.DSP:getNumParameters() + local o1=ffi.new("int[1]") + local result=C.FMOD_DSP_GetNumParameters(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.DSP:getParameterInfo(i1) + local o1=ffi.new("FMOD_DSP_PARAMETER_DESC*[1]") + local result=C.FMOD_DSP_GetParameterInfo(self,i1,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.DSP:getDataParameterIndex(i1) + local o1=ffi.new("int[1]") + local result=C.FMOD_DSP_GetDataParameterIndex(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.DSP:showConfigDialog(i1,i2) + local result=C.FMOD_DSP_ShowConfigDialog(self,i1,i2) + return result +end + +---Warning: string wrongly retrieved +---@return any,number,number,number,number,FMOD.Result +function core.DSP:getInfo() + local o1=ffi.new("char[1]") + local o2=ffi.new("unsigned int[1]") + local o3=ffi.new("int[1]") + local o4=ffi.new("int[1]") + local o5=ffi.new("int[1]") + local result=C.FMOD_DSP_GetInfo(self,o1,o2,o3,o4,o5) + return o1[0],o2[0],o3[0],o4[0],o5[0],result +end + +---@return any,FMOD.Result +function core.DSP:getType() + local o1=ffi.new("FMOD_DSP_TYPE[1]") + local result=C.FMOD_DSP_GetType(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.DSP:getIdle() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_DSP_GetIdle(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.DSP:setUserData(i1) + local result=C.FMOD_DSP_SetUserData(self,i1) + return result +end + +---@return any,FMOD.Result +function core.DSP:getUserData() + local o1=ffi.new("void*[1]") + local result=C.FMOD_DSP_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.DSP:setMeteringEnabled(i1,i2) + local result=C.FMOD_DSP_SetMeteringEnabled(self,i1,i2) + return result +end + +---@return number,number,FMOD.Result +function core.DSP:getMeteringEnabled() + local o1=ffi.new("FMOD_BOOL[1]") + local o2=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_DSP_GetMeteringEnabled(self,o1,o2) + return o1[0],o2[0],result +end + +---@return any,any,FMOD.Result +function core.DSP:getMeteringInfo() + local o1=ffi.new("FMOD_DSP_METERING_INFO[1]") + local o2=ffi.new("FMOD_DSP_METERING_INFO[1]") + local result=C.FMOD_DSP_GetMeteringInfo(self,o1,o2) + return o1[0],o2[0],result +end + +---@return number,number,FMOD.Result +function core.DSP:getCPUUsage() + local o1=ffi.new("unsigned int[1]") + local o2=ffi.new("unsigned int[1]") + local result=C.FMOD_DSP_GetCPUUsage(self,o1,o2) + return o1[0],o2[0],result +end + +---@return any,FMOD.Result +function core.DSPConnection:getInput() + local o1=ffi.new("FMOD_DSP*[1]") + local result=C.FMOD_DSPConnection_GetInput(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function core.DSPConnection:getOutput() + local o1=ffi.new("FMOD_DSP*[1]") + local result=C.FMOD_DSPConnection_GetOutput(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.DSPConnection:setMix(i1) + local result=C.FMOD_DSPConnection_SetMix(self,i1) + return result +end + +---@return number,FMOD.Result +function core.DSPConnection:getMix() + local o1=ffi.new("float[1]") + local result=C.FMOD_DSPConnection_GetMix(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.DSPConnection:setMixMatrix(i1,i2,i3,i4) + local result=C.FMOD_DSPConnection_SetMixMatrix(self,i1,i2,i3,i4) + return result +end + +---@return number,number,number,FMOD.Result +function core.DSPConnection:getMixMatrix(i1) + local o1=ffi.new("float[1]") + local o2=ffi.new("int[1]") + local o3=ffi.new("int[1]") + local result=C.FMOD_DSPConnection_GetMixMatrix(self,o1,o2,o3,i1) + return o1[0],o2[0],o3[0],result +end + +---@return any,FMOD.Result +function core.DSPConnection:getType() + local o1=ffi.new("FMOD_DSPCONNECTION_TYPE[1]") + local result=C.FMOD_DSPConnection_GetType(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.DSPConnection:setUserData(i1) + local result=C.FMOD_DSPConnection_SetUserData(self,i1) + return result +end + +---@return any,FMOD.Result +function core.DSPConnection:getUserData() + local o1=ffi.new("void*[1]") + local result=C.FMOD_DSPConnection_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Geometry:release() + local result=C.FMOD_Geometry_Release(self) + return result +end + +---@return number,FMOD.Result +function core.Geometry:addPolygon(i1,i2,i3,i4,i5) + local o1=ffi.new("int[1]") + local result=C.FMOD_Geometry_AddPolygon(self,i1,i2,i3,i4,i5,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function core.Geometry:getNumPolygons() + local o1=ffi.new("int[1]") + local result=C.FMOD_Geometry_GetNumPolygons(self,o1) + return o1[0],result +end + +---@return number,number,FMOD.Result +function core.Geometry:getMaxPolygons() + local o1=ffi.new("int[1]") + local o2=ffi.new("int[1]") + local result=C.FMOD_Geometry_GetMaxPolygons(self,o1,o2) + return o1[0],o2[0],result +end + +---@return number,FMOD.Result +function core.Geometry:getPolygonNumVertices(i1) + local o1=ffi.new("int[1]") + local result=C.FMOD_Geometry_GetPolygonNumVertices(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Geometry:setPolygonVertex(i1,i2,i3) + local result=C.FMOD_Geometry_SetPolygonVertex(self,i1,i2,i3) + return result +end + +---@return any,FMOD.Result +function core.Geometry:getPolygonVertex(i1,i2) + local o1=ffi.new("FMOD_VECTOR[1]") + local result=C.FMOD_Geometry_GetPolygonVertex(self,i1,i2,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Geometry:setPolygonAttributes(i1,i2,i3,i4) + local result=C.FMOD_Geometry_SetPolygonAttributes(self,i1,i2,i3,i4) + return result +end + +---@return number,number,number,FMOD.Result +function core.Geometry:getPolygonAttributes(i1) + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local o3=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Geometry_GetPolygonAttributes(self,i1,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return FMOD.Result +function core.Geometry:setActive(i1) + local result=C.FMOD_Geometry_SetActive(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Geometry:getActive() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Geometry_GetActive(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Geometry:setRotation(i1,i2) + local result=C.FMOD_Geometry_SetRotation(self,i1,i2) + return result +end + +---@return any,any,FMOD.Result +function core.Geometry:getRotation() + local o1=ffi.new("FMOD_VECTOR[1]") + local o2=ffi.new("FMOD_VECTOR[1]") + local result=C.FMOD_Geometry_GetRotation(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.Geometry:setPosition(i1) + local result=C.FMOD_Geometry_SetPosition(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Geometry:getPosition() + local o1=ffi.new("FMOD_VECTOR[1]") + local result=C.FMOD_Geometry_GetPosition(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Geometry:setScale(i1) + local result=C.FMOD_Geometry_SetScale(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Geometry:getScale() + local o1=ffi.new("FMOD_VECTOR[1]") + local result=C.FMOD_Geometry_GetScale(self,o1) + return o1[0],result +end + +---@return any,number,FMOD.Result +function core.Geometry:save() + local o1=ffi.new("void[1]") + local o2=ffi.new("int[1]") + local result=C.FMOD_Geometry_Save(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function core.Geometry:setUserData(i1) + local result=C.FMOD_Geometry_SetUserData(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Geometry:getUserData() + local o1=ffi.new("void*[1]") + local result=C.FMOD_Geometry_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Reverb3D:release() + local result=C.FMOD_Reverb3D_Release(self) + return result +end + +---@return FMOD.Result +function core.Reverb3D:set3DAttributes(i1,i2,i3) + local result=C.FMOD_Reverb3D_Set3DAttributes(self,i1,i2,i3) + return result +end + +---@return any,number,number,FMOD.Result +function core.Reverb3D:get3DAttributes() + local o1=ffi.new("FMOD_VECTOR[1]") + local o2=ffi.new("float[1]") + local o3=ffi.new("float[1]") + local result=C.FMOD_Reverb3D_Get3DAttributes(self,o1,o2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return FMOD.Result +function core.Reverb3D:setProperties(i1) + local result=C.FMOD_Reverb3D_SetProperties(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Reverb3D:getProperties() + local o1=ffi.new("FMOD_REVERB_PROPERTIES[1]") + local result=C.FMOD_Reverb3D_GetProperties(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Reverb3D:setActive(i1) + local result=C.FMOD_Reverb3D_SetActive(self,i1) + return result +end + +---@return number,FMOD.Result +function core.Reverb3D:getActive() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C.FMOD_Reverb3D_GetActive(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function core.Reverb3D:setUserData(i1) + local result=C.FMOD_Reverb3D_SetUserData(self,i1) + return result +end + +---@return any,FMOD.Result +function core.Reverb3D:getUserData() + local o1=ffi.new("void*[1]") + local result=C.FMOD_Reverb3D_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.System:isValid() + local result=C2.FMOD_Studio_System_IsValid(self) + return result +end + +---@return FMOD.Result +function studio.System:setAdvancedSettings(i1) + local result=C2.FMOD_Studio_System_SetAdvancedSettings(self,i1) + return result +end + +---@return any,FMOD.Result +function studio.System:getAdvancedSettings() + local o1=ffi.new("FMOD_STUDIO_ADVANCEDSETTINGS[1]") + local result=C2.FMOD_Studio_System_GetAdvancedSettings(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.System:initialize(i1,i2,i3,i4) + local result=C2.FMOD_Studio_System_Initialize(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function studio.System:release() + local result=C2.FMOD_Studio_System_Release(self) + return result +end + +---@return FMOD.Result +function studio.System:update() + local result=C2.FMOD_Studio_System_Update(self) + return result +end + +---@return FMOD.Core.System,FMOD.Result +function studio.System:getCoreSystem() + local o1=ffi.new("FMOD_SYSTEM*[1]") + local result=C2.FMOD_Studio_System_GetCoreSystem(self,o1) + return o1[0],result +end + +---@return FMOD.Studio.EventDescription,FMOD.Result +function studio.System:getEvent(i1) + local o1=ffi.new("FMOD_STUDIO_EVENTDESCRIPTION*[1]") + local result=C2.FMOD_Studio_System_GetEvent(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Studio.Bus,FMOD.Result +function studio.System:getBus(i1) + local o1=ffi.new("FMOD_STUDIO_BUS*[1]") + local result=C2.FMOD_Studio_System_GetBus(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Studio.VCA,FMOD.Result +function studio.System:getVCA(i1) + local o1=ffi.new("FMOD_STUDIO_VCA*[1]") + local result=C2.FMOD_Studio_System_GetVCA(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Studio.Bank,FMOD.Result +function studio.System:getBank(i1) + local o1=ffi.new("FMOD_STUDIO_BANK*[1]") + local result=C2.FMOD_Studio_System_GetBank(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Studio.EventDescription,FMOD.Result +function studio.System:getEventByID(i1) + local o1=ffi.new("FMOD_STUDIO_EVENTDESCRIPTION*[1]") + local result=C2.FMOD_Studio_System_GetEventByID(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Studio.Bus,FMOD.Result +function studio.System:getBusByID(i1) + local o1=ffi.new("FMOD_STUDIO_BUS*[1]") + local result=C2.FMOD_Studio_System_GetBusByID(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Studio.VCA,FMOD.Result +function studio.System:getVCAByID(i1) + local o1=ffi.new("FMOD_STUDIO_VCA*[1]") + local result=C2.FMOD_Studio_System_GetVCAByID(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Studio.Bank,FMOD.Result +function studio.System:getBankByID(i1) + local o1=ffi.new("FMOD_STUDIO_BANK*[1]") + local result=C2.FMOD_Studio_System_GetBankByID(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.System:getSoundInfo(i1) + local o1=ffi.new("FMOD_STUDIO_SOUND_INFO[1]") + local result=C2.FMOD_Studio_System_GetSoundInfo(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.System:getParameterDescriptionByName(i1) + local o1=ffi.new("FMOD_STUDIO_PARAMETER_DESCRIPTION[1]") + local result=C2.FMOD_Studio_System_GetParameterDescriptionByName(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.System:getParameterDescriptionByID(i1) + local o1=ffi.new("FMOD_STUDIO_PARAMETER_DESCRIPTION[1]") + local result=C2.FMOD_Studio_System_GetParameterDescriptionByID(self,i1,o1) + return o1[0],result +end + +---Warning: string wrongly retrieved +---@return any,number,FMOD.Result +function studio.System:getParameterLabelByName(i1,i2,i3) + local o1=ffi.new("char[1]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_System_GetParameterLabelByName(self,i1,i2,o1,i3,o2) + return o1[0],o2[0],result +end + +---Warning: string wrongly retrieved +---@return any,number,FMOD.Result +function studio.System:getParameterLabelByID(i1,i2,i3) + local o1=ffi.new("char[1]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_System_GetParameterLabelByID(self,i1,i2,o1,i3,o2) + return o1[0],o2[0],result +end + +---@return number,number,FMOD.Result +function studio.System:getParameterByID(i1) + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_System_GetParameterByID(self,i1,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.System:setParameterByID(i1,i2,i3) + local result=C2.FMOD_Studio_System_SetParameterByID(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function studio.System:setParameterByIDWithLabel(i1,i2,i3) + local result=C2.FMOD_Studio_System_SetParameterByIDWithLabel(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function studio.System:setParametersByIDs(i1,i2,i3,i4) + local result=C2.FMOD_Studio_System_SetParametersByIDs(self,i1,i2,i3,i4) + return result +end + +---@return number,number,FMOD.Result +function studio.System:getParameterByName(i1) + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_System_GetParameterByName(self,i1,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.System:setParameterByName(i1,i2,i3) + local result=C2.FMOD_Studio_System_SetParameterByName(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function studio.System:setParameterByNameWithLabel(i1,i2,i3) + local result=C2.FMOD_Studio_System_SetParameterByNameWithLabel(self,i1,i2,i3) + return result +end + +---@return any,FMOD.Result +function studio.System:lookupID(i1) + local o1=ffi.new("FMOD_GUID[1]") + local result=C2.FMOD_Studio_System_LookupID(self,i1,o1) + return o1[0],result +end + +---Warning: string wrongly retrieved +---@return any,number,FMOD.Result +function studio.System:lookupPath(i1,i2) + local o1=ffi.new("char[1]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_System_LookupPath(self,i1,o1,i2,o2) + return o1[0],o2[0],result +end + +---@return number,FMOD.Result +function studio.System:getNumListeners() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_System_GetNumListeners(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.System:setNumListeners(i1) + local result=C2.FMOD_Studio_System_SetNumListeners(self,i1) + return result +end + +---@return any,any,FMOD.Result +function studio.System:getListenerAttributes(i1) + local o1=ffi.new("FMOD_3D_ATTRIBUTES[1]") + local o2=ffi.new("FMOD_VECTOR[1]") + local result=C2.FMOD_Studio_System_GetListenerAttributes(self,i1,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.System:setListenerAttributes(i1,i2,i3) + local result=C2.FMOD_Studio_System_SetListenerAttributes(self,i1,i2,i3) + return result +end + +---@return number,FMOD.Result +function studio.System:getListenerWeight(i1) + local o1=ffi.new("float[1]") + local result=C2.FMOD_Studio_System_GetListenerWeight(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.System:setListenerWeight(i1,i2) + local result=C2.FMOD_Studio_System_SetListenerWeight(self,i1,i2) + return result +end + +---@return FMOD.Studio.Bank,FMOD.Result +function studio.System:loadBankFile(i1,i2) + local o1=ffi.new("FMOD_STUDIO_BANK*[1]") + local result=C2.FMOD_Studio_System_LoadBankFile(self,i1,i2,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.System:loadBankMemory(i1,i2,i3,i4) + local o1=ffi.new("FMOD_STUDIO_BANK*[1]") + local result=C2.FMOD_Studio_System_LoadBankMemory(self,i1,i2,i3,i4,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.System:loadBankCustom(i1,i2) + local o1=ffi.new("FMOD_STUDIO_BANK*[1]") + local result=C2.FMOD_Studio_System_LoadBankCustom(self,i1,i2,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.System:registerPlugin(i1) + local result=C2.FMOD_Studio_System_RegisterPlugin(self,i1) + return result +end + +---@return FMOD.Result +function studio.System:unregisterPlugin(i1) + local result=C2.FMOD_Studio_System_UnregisterPlugin(self,i1) + return result +end + +---@return FMOD.Result +function studio.System:unloadAll() + local result=C2.FMOD_Studio_System_UnloadAll(self) + return result +end + +---@return FMOD.Result +function studio.System:flushCommands() + local result=C2.FMOD_Studio_System_FlushCommands(self) + return result +end + +---@return FMOD.Result +function studio.System:flushSampleLoading() + local result=C2.FMOD_Studio_System_FlushSampleLoading(self) + return result +end + +---@return FMOD.Result +function studio.System:startCommandCapture(i1,i2) + local result=C2.FMOD_Studio_System_StartCommandCapture(self,i1,i2) + return result +end + +---@return FMOD.Result +function studio.System:stopCommandCapture() + local result=C2.FMOD_Studio_System_StopCommandCapture(self) + return result +end + +---@return any,FMOD.Result +function studio.System:loadCommandReplay(i1,i2) + local o1=ffi.new("FMOD_STUDIO_COMMANDREPLAY*[1]") + local result=C2.FMOD_Studio_System_LoadCommandReplay(self,i1,i2,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.System:getBankCount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_System_GetBankCount(self,o1) + return o1[0],result +end + +---@return any,number,FMOD.Result +function studio.System:getBankList(i1) + local o1=ffi.new("FMOD_STUDIO_BANK*[?]", i1) + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_System_GetBankList(self,o1,i1,o2) + return o1,o2[0],result +end + +---@return number,FMOD.Result +function studio.System:getParameterDescriptionCount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_System_GetParameterDescriptionCount(self,o1) + return o1[0],result +end + +---@return any,number,FMOD.Result +function studio.System:getParameterDescriptionList(i1) + local o1=ffi.new("FMOD_STUDIO_PARAMETER_DESCRIPTION[?]", i1) + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_System_GetParameterDescriptionList(self,o1,i1,o2) + return o1,o2[0],result +end + +---@return any,any,FMOD.Result +function studio.System:getCPUUsage() + local o1=ffi.new("FMOD_STUDIO_CPU_USAGE[1]") + local o2=ffi.new("FMOD_CPU_USAGE[1]") + local result=C2.FMOD_Studio_System_GetCPUUsage(self,o1,o2) + return o1[0],o2[0],result +end + +---@return any,FMOD.Result +function studio.System:getBufferUsage() + local o1=ffi.new("FMOD_STUDIO_BUFFER_USAGE[1]") + local result=C2.FMOD_Studio_System_GetBufferUsage(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.System:resetBufferUsage() + local result=C2.FMOD_Studio_System_ResetBufferUsage(self) + return result +end + +---@return FMOD.Result +function studio.System:setCallback(i1,i2) + local result=C2.FMOD_Studio_System_SetCallback(self,i1,i2) + return result +end + +---@return FMOD.Result +function studio.System:setUserData(i1) + local result=C2.FMOD_Studio_System_SetUserData(self,i1) + return result +end + +---@return any,FMOD.Result +function studio.System:getUserData() + local o1=ffi.new("void*[1]") + local result=C2.FMOD_Studio_System_GetUserData(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.System:getMemoryUsage() + local o1=ffi.new("FMOD_STUDIO_MEMORY_USAGE[1]") + local result=C2.FMOD_Studio_System_GetMemoryUsage(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventDescription:isValid() + local result=C2.FMOD_Studio_EventDescription_IsValid(self) + return result +end + +---@return FMOD.GUID,FMOD.Result +function studio.EventDescription:getID() + local o1=ffi.new("FMOD_GUID[1]") + local result=C2.FMOD_Studio_EventDescription_GetID(self,o1) + return o1[0],result +end + +---@return string?,FMOD.Result +function studio.EventDescription:getPath() + local o1=ffi.new("char[0]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventDescription_GetPath(self,o1,0,o2) + if result~=M.FMOD_OK then return nil,result end + o1=ffi.new("char[?]",o2[0]) + result=C2.FMOD_Studio_EventDescription_GetPath(self,o1,o2[0],o2) + return ffi.string(o1),result +end + +---@return number,FMOD.Result +function studio.EventDescription:getParameterDescriptionCount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventDescription_GetParameterDescriptionCount(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.EventDescription:getParameterDescriptionByIndex(i1) + local o1=ffi.new("FMOD_STUDIO_PARAMETER_DESCRIPTION[1]") + local result=C2.FMOD_Studio_EventDescription_GetParameterDescriptionByIndex(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.EventDescription:getParameterDescriptionByName(i1) + local o1=ffi.new("FMOD_STUDIO_PARAMETER_DESCRIPTION[1]") + local result=C2.FMOD_Studio_EventDescription_GetParameterDescriptionByName(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.EventDescription:getParameterDescriptionByID(i1) + local o1=ffi.new("FMOD_STUDIO_PARAMETER_DESCRIPTION[1]") + local result=C2.FMOD_Studio_EventDescription_GetParameterDescriptionByID(self,i1,o1) + return o1[0],result +end + +---Warning: string wrongly retrieved +---@return any,number,FMOD.Result +function studio.EventDescription:getParameterLabelByIndex(i1,i2,i3) + local o1=ffi.new("char[1]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventDescription_GetParameterLabelByIndex(self,i1,i2,o1,i3,o2) + return o1[0],o2[0],result +end + +---Warning: string wrongly retrieved +---@return any,number,FMOD.Result +function studio.EventDescription:getParameterLabelByName(i1,i2,i3) + local o1=ffi.new("char[1]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventDescription_GetParameterLabelByName(self,i1,i2,o1,i3,o2) + return o1[0],o2[0],result +end + +---Warning: string wrongly retrieved +---@return any,number,FMOD.Result +function studio.EventDescription:getParameterLabelByID(i1,i2,i3) + local o1=ffi.new("char[1]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventDescription_GetParameterLabelByID(self,i1,i2,o1,i3,o2) + return o1[0],o2[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:getUserPropertyCount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventDescription_GetUserPropertyCount(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.EventDescription:getUserPropertyByIndex(i1) + local o1=ffi.new("FMOD_STUDIO_USER_PROPERTY[1]") + local result=C2.FMOD_Studio_EventDescription_GetUserPropertyByIndex(self,i1,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.EventDescription:getUserProperty(i1) + local o1=ffi.new("FMOD_STUDIO_USER_PROPERTY[1]") + local result=C2.FMOD_Studio_EventDescription_GetUserProperty(self,i1,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:getLength() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventDescription_GetLength(self,o1) + return o1[0],result +end + +---@return number,number,FMOD.Result +function studio.EventDescription:getMinMaxDistance() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_EventDescription_GetMinMaxDistance(self,o1,o2) + return o1[0],o2[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:getSoundSize() + local o1=ffi.new("float[1]") + local result=C2.FMOD_Studio_EventDescription_GetSoundSize(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:isSnapshot() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_EventDescription_IsSnapshot(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:isOneshot() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_EventDescription_IsOneshot(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:isStream() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_EventDescription_IsStream(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:is3D() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_EventDescription_Is3D(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:isDopplerEnabled() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_EventDescription_IsDopplerEnabled(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:hasSustainPoint() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_EventDescription_HasSustainPoint(self,o1) + return o1[0],result +end + +---@return FMOD.Studio.EventInstance,FMOD.Result +function studio.EventDescription:createInstance() + local o1=ffi.new("FMOD_STUDIO_EVENTINSTANCE*[1]") + local result=C2.FMOD_Studio_EventDescription_CreateInstance(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.EventDescription:getInstanceCount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventDescription_GetInstanceCount(self,o1) + return o1[0],result +end + +---@return table,number,FMOD.Result +function studio.EventDescription:getInstanceList(i1) + local o1=ffi.new("FMOD_STUDIO_EVENTINSTANCE*[?]", i1) + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventDescription_GetInstanceList(self,o1,i1,o2) + return o1,o2[0],result +end + +---@return FMOD.Result +function studio.EventDescription:loadSampleData() + local result=C2.FMOD_Studio_EventDescription_LoadSampleData(self) + return result +end + +---@return FMOD.Result +function studio.EventDescription:unloadSampleData() + local result=C2.FMOD_Studio_EventDescription_UnloadSampleData(self) + return result +end + +---@return any,FMOD.Result +function studio.EventDescription:getSampleLoadingState() + local o1=ffi.new("FMOD_STUDIO_LOADING_STATE[1]") + local result=C2.FMOD_Studio_EventDescription_GetSampleLoadingState(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventDescription:releaseAllInstances() + local result=C2.FMOD_Studio_EventDescription_ReleaseAllInstances(self) + return result +end + +---@return FMOD.Result +function studio.EventDescription:setCallback(i1,i2) + local result=C2.FMOD_Studio_EventDescription_SetCallback(self,i1,i2) + return result +end + +---@return any,FMOD.Result +function studio.EventDescription:getUserData() + local o1=ffi.new("void*[1]") + local result=C2.FMOD_Studio_EventDescription_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventDescription:setUserData(i1) + local result=C2.FMOD_Studio_EventDescription_SetUserData(self,i1) + return result +end + +---@return FMOD.Result +function studio.EventInstance:isValid() + local result=C2.FMOD_Studio_EventInstance_IsValid(self) + return result +end + +---@return any,FMOD.Result +function studio.EventInstance:getDescription() + local o1=ffi.new("FMOD_STUDIO_EVENTDESCRIPTION*[1]") + local result=C2.FMOD_Studio_EventInstance_GetDescription(self,o1) + return o1[0],result +end + +---@return number,number,FMOD.Result +function studio.EventInstance:getVolume() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_EventInstance_GetVolume(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setVolume(i1) + local result=C2.FMOD_Studio_EventInstance_SetVolume(self,i1) + return result +end + +---@return number,number,FMOD.Result +function studio.EventInstance:getPitch() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_EventInstance_GetPitch(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setPitch(i1) + local result=C2.FMOD_Studio_EventInstance_SetPitch(self,i1) + return result +end + +---@return any,FMOD.Result +function studio.EventInstance:get3DAttributes() + local o1=ffi.new("FMOD_3D_ATTRIBUTES[1]") + local result=C2.FMOD_Studio_EventInstance_Get3DAttributes(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventInstance:set3DAttributes(i1) + local result=C2.FMOD_Studio_EventInstance_Set3DAttributes(self,i1) + return result +end + +---@return number,FMOD.Result +function studio.EventInstance:getListenerMask() + local o1=ffi.new("unsigned int[1]") + local result=C2.FMOD_Studio_EventInstance_GetListenerMask(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setListenerMask(i1) + local result=C2.FMOD_Studio_EventInstance_SetListenerMask(self,i1) + return result +end + +---@return number,FMOD.Result +function studio.EventInstance:getProperty(i1) + local o1=ffi.new("float[1]") + local result=C2.FMOD_Studio_EventInstance_GetProperty(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setProperty(i1,i2) + local result=C2.FMOD_Studio_EventInstance_SetProperty(self,i1,i2) + return result +end + +---@return number,FMOD.Result +function studio.EventInstance:getReverbLevel(i1) + local o1=ffi.new("float[1]") + local result=C2.FMOD_Studio_EventInstance_GetReverbLevel(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setReverbLevel(i1,i2) + local result=C2.FMOD_Studio_EventInstance_SetReverbLevel(self,i1,i2) + return result +end + +---@return number,FMOD.Result +function studio.EventInstance:getPaused() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_EventInstance_GetPaused(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setPaused(i1) + local result=C2.FMOD_Studio_EventInstance_SetPaused(self,i1) + return result +end + +---@return FMOD.Result +function studio.EventInstance:start() + local result=C2.FMOD_Studio_EventInstance_Start(self) + return result +end + +---@return FMOD.Result +function studio.EventInstance:stop(i1) + local result=C2.FMOD_Studio_EventInstance_Stop(self,i1) + return result +end + +---@return number,FMOD.Result +function studio.EventInstance:getTimelinePosition() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_EventInstance_GetTimelinePosition(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setTimelinePosition(i1) + local result=C2.FMOD_Studio_EventInstance_SetTimelinePosition(self,i1) + return result +end + +---@return any,FMOD.Result +function studio.EventInstance:getPlaybackState() + local o1=ffi.new("FMOD_STUDIO_PLAYBACK_STATE[1]") + local result=C2.FMOD_Studio_EventInstance_GetPlaybackState(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.EventInstance:getChannelGroup() + local o1=ffi.new("FMOD_CHANNELGROUP*[1]") + local result=C2.FMOD_Studio_EventInstance_GetChannelGroup(self,o1) + return o1[0],result +end + +---@return number,number,FMOD.Result +function studio.EventInstance:getMinMaxDistance() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_EventInstance_GetMinMaxDistance(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.EventInstance:release() + local result=C2.FMOD_Studio_EventInstance_Release(self) + return result +end + +---@return number,FMOD.Result +function studio.EventInstance:isVirtual() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_EventInstance_IsVirtual(self,o1) + return o1[0],result +end + +---@return number,number,FMOD.Result +function studio.EventInstance:getParameterByName(i1) + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_EventInstance_GetParameterByName(self,i1,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setParameterByName(i1,i2,i3) + local result=C2.FMOD_Studio_EventInstance_SetParameterByName(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function studio.EventInstance:setParameterByNameWithLabel(i1,i2,i3) + local result=C2.FMOD_Studio_EventInstance_SetParameterByNameWithLabel(self,i1,i2,i3) + return result +end + +---@return number,number,FMOD.Result +function studio.EventInstance:getParameterByID(i1) + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_EventInstance_GetParameterByID(self,i1,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setParameterByID(i1,i2,i3) + local result=C2.FMOD_Studio_EventInstance_SetParameterByID(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function studio.EventInstance:setParameterByIDWithLabel(i1,i2,i3) + local result=C2.FMOD_Studio_EventInstance_SetParameterByIDWithLabel(self,i1,i2,i3) + return result +end + +---@return FMOD.Result +function studio.EventInstance:setParametersByIDs(i1,i2,i3,i4) + local result=C2.FMOD_Studio_EventInstance_SetParametersByIDs(self,i1,i2,i3,i4) + return result +end + +---@return FMOD.Result +function studio.EventInstance:keyOff() + local result=C2.FMOD_Studio_EventInstance_KeyOff(self) + return result +end + +---@return FMOD.Result +function studio.EventInstance:setCallback(i1,i2) + local result=C2.FMOD_Studio_EventInstance_SetCallback(self,i1,i2) + return result +end + +---@return any,FMOD.Result +function studio.EventInstance:getUserData() + local o1=ffi.new("void*[1]") + local result=C2.FMOD_Studio_EventInstance_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.EventInstance:setUserData(i1) + local result=C2.FMOD_Studio_EventInstance_SetUserData(self,i1) + return result +end + +---@return number,number,FMOD.Result +function studio.EventInstance:getCPUUsage() + local o1=ffi.new("unsigned int[1]") + local o2=ffi.new("unsigned int[1]") + local result=C2.FMOD_Studio_EventInstance_GetCPUUsage(self,o1,o2) + return o1[0],o2[0],result +end + +---@return any,FMOD.Result +function studio.EventInstance:getMemoryUsage() + local o1=ffi.new("FMOD_STUDIO_MEMORY_USAGE[1]") + local result=C2.FMOD_Studio_EventInstance_GetMemoryUsage(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.Bus:isValid() + local result=C2.FMOD_Studio_Bus_IsValid(self) + return result +end + +---@return FMOD.GUID,FMOD.Result +function studio.Bus:getID() + local o1=ffi.new("FMOD_GUID[1]") + local result=C2.FMOD_Studio_Bus_GetID(self,o1) + return o1[0],result +end + +---@return string?,FMOD.Result +function studio.Bus:getPath() + local o1=ffi.new("char[0]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bus_GetPath(self,o1,0,o2) + if result~=M.FMOD_OK then return nil,result end + o1=ffi.new("char[?]",o2[0]) + result=C2.FMOD_Studio_Bus_GetPath(self,o1,o2[0],o2) + return ffi.string(o1),result +end + +---@return number,number,FMOD.Result +function studio.Bus:getVolume() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_Bus_GetVolume(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.Bus:setVolume(i1) + local result=C2.FMOD_Studio_Bus_SetVolume(self,i1) + return result +end + +---@return number,FMOD.Result +function studio.Bus:getPaused() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_Bus_GetPaused(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.Bus:setPaused(i1) + local result=C2.FMOD_Studio_Bus_SetPaused(self,i1) + return result +end + +---@return number,FMOD.Result +function studio.Bus:getMute() + local o1=ffi.new("FMOD_BOOL[1]") + local result=C2.FMOD_Studio_Bus_GetMute(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.Bus:setMute(i1) + local result=C2.FMOD_Studio_Bus_SetMute(self,i1) + return result +end + +---@return FMOD.Result +function studio.Bus:stopAllEvents(i1) + local result=C2.FMOD_Studio_Bus_StopAllEvents(self,i1) + return result +end + +---@return any,FMOD.Result +function studio.Bus:getPortIndex() + local o1=ffi.new("FMOD_PORT_INDEX[1]") + local result=C2.FMOD_Studio_Bus_GetPortIndex(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.Bus:setPortIndex(i1) + local result=C2.FMOD_Studio_Bus_SetPortIndex(self,i1) + return result +end + +---@return FMOD.Result +function studio.Bus:lockChannelGroup() + local result=C2.FMOD_Studio_Bus_LockChannelGroup(self) + return result +end + +---@return FMOD.Result +function studio.Bus:unlockChannelGroup() + local result=C2.FMOD_Studio_Bus_UnlockChannelGroup(self) + return result +end + +---@return any,FMOD.Result +function studio.Bus:getChannelGroup() + local o1=ffi.new("FMOD_CHANNELGROUP*[1]") + local result=C2.FMOD_Studio_Bus_GetChannelGroup(self,o1) + return o1[0],result +end + +---@return number,number,FMOD.Result +function studio.Bus:getCPUUsage() + local o1=ffi.new("unsigned int[1]") + local o2=ffi.new("unsigned int[1]") + local result=C2.FMOD_Studio_Bus_GetCPUUsage(self,o1,o2) + return o1[0],o2[0],result +end + +---@return any,FMOD.Result +function studio.Bus:getMemoryUsage() + local o1=ffi.new("FMOD_STUDIO_MEMORY_USAGE[1]") + local result=C2.FMOD_Studio_Bus_GetMemoryUsage(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.VCA:isValid() + local result=C2.FMOD_Studio_VCA_IsValid(self) + return result +end + +---@return FMOD.GUID,FMOD.Result +function studio.VCA:getID() + local o1=ffi.new("FMOD_GUID[1]") + local result=C2.FMOD_Studio_VCA_GetID(self,o1) + return o1[0],result +end + +---@return string?,FMOD.Result +function studio.VCA:getPath() + local o1=ffi.new("char[0]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_VCA_GetPath(self,o1,0,o2) + if result~=M.FMOD_OK then return nil,result end + o1=ffi.new("char[?]",o2[0]) + result=C2.FMOD_Studio_VCA_GetPath(self,o1,o2[0],o2) + return ffi.string(o1),result +end + +---@return number,number,FMOD.Result +function studio.VCA:getVolume() + local o1=ffi.new("float[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_VCA_GetVolume(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.VCA:setVolume(i1) + local result=C2.FMOD_Studio_VCA_SetVolume(self,i1) + return result +end + +---@return FMOD.Result +function studio.Bank:isValid() + local result=C2.FMOD_Studio_Bank_IsValid(self) + return result +end + +---@return FMOD.GUID,FMOD.Result +function studio.Bank:getID() + local o1=ffi.new("FMOD_GUID[1]") + local result=C2.FMOD_Studio_Bank_GetID(self,o1) + return o1[0],result +end + +---@return string?,FMOD.Result +function studio.Bank:getPath() + local o1=ffi.new("char[0]") + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bank_GetPath(self,o1,0,o2) + if result~=M.FMOD_OK then return nil,result end + o1=ffi.new("char[?]",o2[0]) + result=C2.FMOD_Studio_Bank_GetPath(self,o1,o2[0],o2) + return ffi.string(o1),result +end + +---@return FMOD.Result +function studio.Bank:unload() + local result=C2.FMOD_Studio_Bank_Unload(self) + return result +end + +---@return FMOD.Result +function studio.Bank:loadSampleData() + local result=C2.FMOD_Studio_Bank_LoadSampleData(self) + return result +end + +---@return FMOD.Result +function studio.Bank:unloadSampleData() + local result=C2.FMOD_Studio_Bank_UnloadSampleData(self) + return result +end + +---@return any,FMOD.Result +function studio.Bank:getLoadingState() + local o1=ffi.new("FMOD_STUDIO_LOADING_STATE[1]") + local result=C2.FMOD_Studio_Bank_GetLoadingState(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.Bank:getSampleLoadingState() + local o1=ffi.new("FMOD_STUDIO_LOADING_STATE[1]") + local result=C2.FMOD_Studio_Bank_GetSampleLoadingState(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.Bank:getStringCount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bank_GetStringCount(self,o1) + return o1[0],result +end + +---Warning: string wrongly retrieved +---@return any,any,number,FMOD.Result +function studio.Bank:getStringInfo(i1,i2) + local o1=ffi.new("FMOD_GUID[1]") + local o2=ffi.new("char[1]") + local o3=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bank_GetStringInfo(self,i1,o1,o2,i2,o3) + return o1[0],o2[0],o3[0],result +end + +---@return number,FMOD.Result +function studio.Bank:getEventCount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bank_GetEventCount(self,o1) + return o1[0],result +end + +---@return table,number,FMOD.Result +function studio.Bank:getEventList(i1) + local o1=ffi.new("FMOD_STUDIO_EVENTDESCRIPTION*[?]", i1) + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bank_GetEventList(self,o1,i1,o2) + return o1,o2[0],result +end + +---@return number,FMOD.Result +function studio.Bank:getBusCount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bank_GetBusCount(self,o1) + return o1[0],result +end + +---@return any,number,FMOD.Result +function studio.Bank:getBusList(i1) + local o1=ffi.new("FMOD_STUDIO_BUS*[?]", i1) + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bank_GetBusList(self,o1,i1,o2) + return o1,o2[0],result +end + +---@return number,FMOD.Result +function studio.Bank:getVCACount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bank_GetVCACount(self,o1) + return o1[0],result +end + +---@return any,number,FMOD.Result +function studio.Bank:getVCAList(i1) + local o1=ffi.new("FMOD_STUDIO_VCA*[?]", i1) + local o2=ffi.new("int[1]") + local result=C2.FMOD_Studio_Bank_GetVCAList(self,o1,i1,o2) + return o1,o2[0],result +end + +---@return any,FMOD.Result +function studio.Bank:getUserData() + local o1=ffi.new("void*[1]") + local result=C2.FMOD_Studio_Bank_GetUserData(self,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.Bank:setUserData(i1) + local result=C2.FMOD_Studio_Bank_SetUserData(self,i1) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:isValid() + local result=C2.FMOD_Studio_CommandReplay_IsValid(self) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:getSystem(i1) + local result=C2.FMOD_Studio_CommandReplay_GetSystem(self,i1) + return result +end + +---@return number,FMOD.Result +function studio.CommandReplay:getLength() + local o1=ffi.new("float[1]") + local result=C2.FMOD_Studio_CommandReplay_GetLength(self,o1) + return o1[0],result +end + +---@return number,FMOD.Result +function studio.CommandReplay:getCommandCount() + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_CommandReplay_GetCommandCount(self,o1) + return o1[0],result +end + +---@return any,FMOD.Result +function studio.CommandReplay:getCommandInfo(i1) + local o1=ffi.new("FMOD_STUDIO_COMMAND_INFO[1]") + local result=C2.FMOD_Studio_CommandReplay_GetCommandInfo(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.CommandReplay:getCommandString(i1,i2,i3) + local result=C2.FMOD_Studio_CommandReplay_GetCommandString(self,i1,i2,i3) + return result +end + +---@return number,FMOD.Result +function studio.CommandReplay:getCommandAtTime(i1) + local o1=ffi.new("int[1]") + local result=C2.FMOD_Studio_CommandReplay_GetCommandAtTime(self,i1,o1) + return o1[0],result +end + +---@return FMOD.Result +function studio.CommandReplay:setBankPath(i1) + local result=C2.FMOD_Studio_CommandReplay_SetBankPath(self,i1) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:start() + local result=C2.FMOD_Studio_CommandReplay_Start(self) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:stop() + local result=C2.FMOD_Studio_CommandReplay_Stop(self) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:seekToTime(i1) + local result=C2.FMOD_Studio_CommandReplay_SeekToTime(self,i1) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:seekToCommand(i1) + local result=C2.FMOD_Studio_CommandReplay_SeekToCommand(self,i1) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:getPaused(i1) + local result=C2.FMOD_Studio_CommandReplay_GetPaused(self,i1) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:setPaused(i1) + local result=C2.FMOD_Studio_CommandReplay_SetPaused(self,i1) + return result +end + +---@return any,FMOD.Result +function studio.CommandReplay:getPlaybackState() + local o1=ffi.new("FMOD_STUDIO_PLAYBACK_STATE[1]") + local result=C2.FMOD_Studio_CommandReplay_GetPlaybackState(self,o1) + return o1[0],result +end + +---@return number,number,FMOD.Result +function studio.CommandReplay:getCurrentCommand() + local o1=ffi.new("int[1]") + local o2=ffi.new("float[1]") + local result=C2.FMOD_Studio_CommandReplay_GetCurrentCommand(self,o1,o2) + return o1[0],o2[0],result +end + +---@return FMOD.Result +function studio.CommandReplay:release() + local result=C2.FMOD_Studio_CommandReplay_Release(self) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:setFrameCallback(i1) + local result=C2.FMOD_Studio_CommandReplay_SetFrameCallback(self,i1) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:setLoadBankCallback(i1) + local result=C2.FMOD_Studio_CommandReplay_SetLoadBankCallback(self,i1) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:setCreateInstanceCallback(i1) + local result=C2.FMOD_Studio_CommandReplay_SetCreateInstanceCallback(self,i1) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:getUserData(i1) + local result=C2.FMOD_Studio_CommandReplay_GetUserData(self,i1) + return result +end + +---@return FMOD.Result +function studio.CommandReplay:setUserData(i1) + local result=C2.FMOD_Studio_CommandReplay_SetUserData(self,i1) + return result +end + +for _,v in next,core do v.__index=v end +for _,v in next,studio do v.__index=v end +ffi.metatype("FMOD_SYSTEM", core.System) +ffi.metatype("FMOD_SOUND", core.Sound) +ffi.metatype("FMOD_CHANNELCONTROL", core.ChannelControl) +ffi.metatype("FMOD_CHANNEL", core.Channel) +ffi.metatype("FMOD_CHANNELGROUP", core.ChannelGroup) +ffi.metatype("FMOD_SOUNDGROUP", core.SoundGroup) +ffi.metatype("FMOD_DSP", core.DSP) +ffi.metatype("FMOD_DSPCONNECTION", core.DSPConnection) +ffi.metatype("FMOD_GEOMETRY", core.Geometry) +ffi.metatype("FMOD_REVERB3D", core.Reverb3D) +ffi.metatype("FMOD_STUDIO_SYSTEM", studio.System) +ffi.metatype("FMOD_STUDIO_EVENTDESCRIPTION", studio.EventDescription) +ffi.metatype("FMOD_STUDIO_EVENTINSTANCE", studio.EventInstance) +ffi.metatype("FMOD_STUDIO_BUS", studio.Bus) +ffi.metatype("FMOD_STUDIO_VCA", studio.VCA) +ffi.metatype("FMOD_STUDIO_BANK", studio.Bank) +ffi.metatype("FMOD_STUDIO_COMMANDREPLAY", studio.CommandReplay) diff --git a/assets/game/gemPlayer.lua b/assets/game/gemPlayer.lua index 31951ec2..3508ba09 100644 --- a/assets/game/gemPlayer.lua +++ b/assets/game/gemPlayer.lua @@ -9,8 +9,6 @@ local max,min=math.max,math.min local floor=math.floor local ins,rem=table.insert,table.remove -local inst=SFX.playSample - ---@class Techmino.Player.gem: Techmino.Player ---@field field any[][] local GP=setmetatable({},{__index=require'assets.game.basePlayer',__metatable=true}) @@ -50,52 +48,48 @@ local GP=setmetatable({},{__index=require'assets.game.basePlayer',__metatable=tr local defaultSoundFunc={ countDown=function(num) if num==0 then -- 6, 3+6+6 - inst('bass',.8,'A3') - inst('lead',.9,'A4','E5','A5') + playSample('sine',{'A3',.8}) + playSample('square',{'A4',.9},{'E5',.9},{'A5',.9}) elseif num==1 then -- 5, 3+7 - inst('bass',.9,'G3') - inst('lead',.9,'B4','E5') + playSample('sine',{'G3',.9}) + playSample('square',{'B4',.9},{'E5',.9}) elseif num==2 then -- 4, 6+2 - inst('bass','F3') - inst('lead',.8,'A4','D5') + playSample('sine',{'F3'}) + playSample('square',{'A4',.8},{'D5',.8}) elseif num==3 then -- 6+6 - inst('bass',.9,'A3','E4') - inst('lead',.8,'A4') + playSample('sine',{'A3',.9},{'E4',.9}) + playSample('square',{'A4',.8}) elseif num==4 then -- 5+7, 5 - inst('bass',.9,'G3','B3') - inst('lead',.6,'G4') + playSample('sine',{'G3',.9},{'B3',.9}) + playSample('square',{'G4',.6}) elseif num==5 then -- 4+6, 4 - inst('bass',.8,'F3','A3') - inst('lead',.3,'F4') + playSample('sine',{'F3',.8},{'A3',.8}) + playSample('square',{'F4',.3}) elseif num<=10 then - inst('bass',2.2-num/5,'A2','E3') + playSample('sine',{'A2',2.2-num/5},{'E3',2.2-num/5}) end end, - move= function() SFX.play('move') end, - move_failed= function() SFX.play('move_failed') end, - swap= function() SFX.play('rotate') end, - swap_failed= function() SFX.play('tuck') end, - twist= function() SFX.play('rotate') end, - twist_failed= function() SFX.play('tuck') end, - move_back= function() SFX.play('rotate_failed') end, - touch= function() SFX.play('lock') end, + move= function() FMOD.playEffect('move') end, + move_failed= function() FMOD.playEffect('move_failed') end, + swap= function() FMOD.playEffect('rotate') end, + swap_failed= function() FMOD.playEffect('tuck') end, + twist= function() FMOD.playEffect('rotate') end, + twist_failed= function() FMOD.playEffect('tuck') end, + move_back= function() FMOD.playEffect('rotate_failed') end, + touch= function() FMOD.playEffect('lock') end, clear=function(lines) - SFX.play( + FMOD.playEffect( lines==1 and 'clear_1' or lines==2 and 'clear_2' or lines==3 and 'clear_3' or lines==4 and 'clear_4' or 'clear_5' ) - if lines>=3 then - BGM.set('all','highgain',.26+1/lines,0) - BGM.set('all','highgain',1,min((lines)^1.5/5,2.6)) - end end, combo= function() end, chain= function() end, - win= function() SFX.play('win') end, - fail= function() SFX.play('fail') end, + win= function() FMOD.playEffect('win') end, + fail= function() FMOD.playEffect('fail') end, } GP.scriptCmd={ } diff --git a/assets/game/glicko2.lua b/assets/game/glicko2.lua new file mode 100644 index 00000000..3ca38be5 --- /dev/null +++ b/assets/game/glicko2.lua @@ -0,0 +1,24 @@ +---@diagnostic disable + +-- Glicko2 lua implementation + +---@class playerInfo +---@field rating number +---@field deviation number +---@field volatility number + +---@class matchInfo +---@field p1 playerInfo +---@field p2 playerInfo +---@field score1 number +---@field score2 number +local match={} +function match:settle() + self.p1=self:_settleP(self.p1,self.p2,self.score1,self.score2) + self.p2=self:_settleP(self.p2,self.p1,self.score2,self.score1) +end + +---@return playerInfo +function match:_settleP(p1,p2,s1,s2) + return +end diff --git a/assets/game/mechanicLib/init.lua b/assets/game/mechanicLib/init.lua index 3cd89b37..12f61256 100644 --- a/assets/game/mechanicLib/init.lua +++ b/assets/game/mechanicLib/init.lua @@ -7,6 +7,7 @@ local mechLib={ common={ timer=require'assets.game.mechanicLib.common.timer', finish=require'assets.game.mechanicLib.common.finish', + characterAnim=require'assets.game.mechanicLib.common.characterAnim', }, mino={ -- Basic diff --git a/assets/game/mechanicLib/mino/misc.lua b/assets/game/mechanicLib/mino/misc.lua index 1378902e..5fa83ec0 100644 --- a/assets/game/mechanicLib/mino/misc.lua +++ b/assets/game/mechanicLib/mino/misc.lua @@ -5,7 +5,7 @@ local gc=love.graphics local misc={} function misc.interior_soundEvent_countDown(num) - SFX.playSample('lead',num>0 and 'E4' or 'E5') + playSample('square',{num>0 and 'E4' or 'E5'}) end function misc.invincible_event_afterLock(P) diff --git a/assets/game/mechanicLib/mino/music.lua b/assets/game/mechanicLib/mino/music.lua index 51d6e37c..358b6f00 100644 --- a/assets/game/mechanicLib/mino/music.lua +++ b/assets/game/mechanicLib/mino/music.lua @@ -1,512 +1,216 @@ ---@type Techmino.Mech.mino local music={} -do -- sprint_40 - local bgmTransP1,bgmTransP2=10,30 - function music.sprint_40_afterClear(P) - if not P.isMain then return true end - local pt=P.modeData.stat.line - if pt>bgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptmd.marathon_lastLevel then - if md.marathon_lastLevel<15 then - BGM.set(bgmPack('propel','a1','a3','b3'),'volume',math.min(md.level/15,1)^2) - end - if md.level>=22 then - BGM.set(bgmPack('propel','p'),'volume',math.min(.2+(md.level-20)*.8,1),6.26) - PROGRESS.setModeState('mino_stdMap','hypersonic_lo') - end - if md.level>=25 and md.marathon_lastLevel<25 then - BGM.set(bgmPack('propel','a1','a3'),'volume',0,26) - end - md.marathon_lastLevel=md.level - else - if not md.marathon_lastAscend then md.marathon_lastAscend=0 end - if md.ascend>md.marathon_lastAscend then - print(md.ascend) - if md.ascend==1 then - BGM.set('all','volume',0,.26) - BGM.set(bgmPack('propel','m','b2','b3','p'),'volume',1,.26) - elseif md.ascend==2 then - BGM.set('all','volume',0,.26) - BGM.set(bgmPack('propel','b1','b2','p'),'volume',1,.26) - elseif md.ascend==3 then - BGM.set('all','volume',0,.26) - BGM.set(bgmPack('propel','a1','a2','a3'),'volume',1,.26) - BGM.set(bgmPack('propel','p'),'volume',.42,.26) - elseif md.ascend==4 then - BGM.set('all','volume',0,.26) - BGM.set('all','pitch',1.5,.26) - BGM.set(bgmPack('propel','p'),'volume',.626,.26) - else - BGM.set('all','volume',1,.26) - BGM.set(bgmPack('propel','p'),'volume',0,.26) - BGM.set('all','pitch',math.min(md.ascend/2-.5,32),.26) - end - end - end - end -end - -do -- techrash_easy - local bgmTransP1,bgmTransP2=4,10 - function music.techrash_easy_afterClear(P) - if not P.isMain then return true end - local pt=P.modeData.techrash - if pt>bgmTransP1 and pt<=bgmTransP2 then - BGM.set(bgmList['way'].add,'volume',math.min((pt-bgmTransP1)/(bgmTransP2-bgmTransP1),1),2.6) - end - end -end - -do -- hypersonic_lo - local bgmTransP1,bgmTransP2=100,300 - function music.hypersonic_lo_afterSpawn(P) - if not P.isMain then return true end - local pt=P.modeData.point - if pt>bgmTransP1 and ptbgmTransP1 and pt<=bgmTransP2 then - BGM.set(bgmList['way'].add,'volume',math.min((pt-bgmTransP1)/(bgmTransP2-bgmTransP1),1),2.6) - end - end -end - -do -- hypersonic_hi - local bgmTransP1,bgmTransP2=100,500 - function music.hypersonic_hi_afterSpawn(P) - if not P.isMain then return true end - local pt=P.modeData.point - if pt>bgmTransP1 and ptbgmTransP1 and pt=2 then - BGM.set(bgmPack('secret7th','m1'),'volume',1,26) - P.modeData.hypersonic_bgmTransition1=true - end - end - if not P.modeData.hypersonic_bgmTransition2 then - if P.modeData.level>=9 then - BGM.set(bgmPack('secret7th','m2','a'),'volume',0,26) - P.modeData.hypersonic_bgmTransition2=true - end - end - end -end - -do -- hypersonic_ti - local bgmTransP1,bgmTransP2=200,600 - function music.hypersonic_ti_afterSpawn(P) - if not P.isMain then return true end - local pt=P.modeData.point - if pt>bgmTransP1 and ptbgmTransP1 and pt<=bgmTransP2 then - BGM.set(bgmList['oxygen'].add,'volume',math.min((pt-bgmTransP1)/(bgmTransP2-bgmTransP1),1),2.6) - end - end -end - -do -- dig_shale - local bgmTransP1,bgmTransP2=10,30 - function music.dig_shale_afterClear(P) - if not P.isMain then return true end - local pt=P.modeData.lineDig - if pt>bgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and pt<=bgmTransP2 then - BGM.set(bgmList['here'].add,'volume',math.min((pt-bgmTransP1)/(bgmTransP2-bgmTransP1),1),2.6) - end - end -end - -do -- survivor_cheese - local bgmTransP1,bgmTransP2=30,80 - function music.survivor_cheese_afterClear(P) - if not P.isMain then return true end - local pt=P.modeData.wave - if pt>bgmTransP1 and pt<=bgmTransP2 then - BGM.set(bgmList['here'].add,'volume',math.min((pt-bgmTransP1)/(bgmTransP2-bgmTransP1),1),2.6) - end - end -end - -do -- survivor_spike - local bgmTransP1,bgmTransP2=10,30 - function music.survivor_spike_afterClear(P) - if not P.isMain then return true end - local pt=P.modeData.wave - if pt>bgmTransP1 and pt<=bgmTransP2 then - BGM.set(bgmList['here'].add,'volume',math.min((pt-bgmTransP1)/(bgmTransP2-bgmTransP1),1),2.6) - end - end -end - -do -- backfire_100 - local bgmTransP1,bgmTransP2=40,75 - function music.backfire_100_afterClear(P) - if not P.isMain then return true end - local pt=P.modeData.stat.line - if pt>bgmTransP1 and ptbgmTransP1 and ptbgmTransP1 and pt0 then P:say{ @@ -117,7 +117,7 @@ function stack.switch(P) md.stack_dropDelay,md.stack_lockDelay=nil,nil P.particles.boardSmoke:pause() - BGM.set('all','highgain',1,.1) + FMOD.stopEffect('music_highcut') end end @@ -166,8 +166,8 @@ function stack.event_afterLock(P) md.stack_highestLine=md.stack_highestLine+1 md.stackTextHeight=400-(md.stack_highestLine+.5)*(400/P.settings.fieldW)/2 if not md._stackTextHeight then md._stackTextHeight=md.stackTextHeight end - SFX.playSample('bass',min((20-md.stack_lines)/10,1),scale[md.stack_lines]) - SFX.playSample('lead',min(md.stack_lines/10,1),scale[md.stack_lines]) + playSample('triangle',{scale[md.stack_lines],min((20-md.stack_lines)/10,1)}) + playSample('square',{scale[md.stack_lines],min(md.stack_lines/10,1)}) -- or 9.5-tone scale end end @@ -196,8 +196,8 @@ function stack.event_afterLock_noFall(P) end end md.stack_lines=md.stack_lines+1 - SFX.playSample('bass',(20-md.stack_lines)/10,scale[md.stack_lines]) - SFX.playSample('lead',min(md.stack_lines/10,1),scale[md.stack_lines]) + playSample('sine',{scale[md.stack_lines],(20-md.stack_lines)/10}) + playSample('square',{scale[md.stack_lines],min(md.stack_lines/10,1)}) end end end diff --git a/assets/game/minoPlayer.lua b/assets/game/minoPlayer.lua index ecce078c..c6c2acd7 100644 --- a/assets/game/minoPlayer.lua +++ b/assets/game/minoPlayer.lua @@ -9,7 +9,6 @@ local floor,ceil=math.floor,math.ceil local ins,rem=table.insert,table.remove local clamp,expApproach=MATH.clamp,MATH.expApproach -local inst=SFX.playSample ---@class Techmino.Player.mino: Techmino.Player ---@field field Techmino.RectField @@ -20,108 +19,104 @@ local MP=setmetatable({},{__index=require'assets.game.basePlayer',__metatable=tr local defaultSoundFunc={ countDown=function(num) if num==0 then -- 6, 3+6+6 - inst('bass',.8,'A3') - inst('lead',.9,'A4','E5','A5') + playSample('sine',{'A3',.8}) + playSample('square',{'A4',.9},{'E5',.9},{'A5',.9}) elseif num==1 then -- 5, 3+7 - inst('bass',.9,'G3') - inst('lead',.9,'B4','E5') + playSample('sine',{'G3',.9}) + playSample('square',{'B4',.9},{'E5',.9}) elseif num==2 then -- 4, 6+2 - inst('bass','F3') - inst('lead',.8,'A4','D5') + playSample('sine',{'F3'}) + playSample('square',{'A4',.8},{'D5',.8}) elseif num==3 then -- 6+6 - inst('bass',.9,'A3','E4') - inst('lead',.8,'A4') + playSample('sine',{'A3',.9},{'E4',.9}) + playSample('square',{'A4',.8}) elseif num==4 then -- 5+7, 5 - inst('bass',.9,'G3','B3') - inst('lead',.6,'G4') + playSample('sine',{'G3',.9},{'B3',.9}) + playSample('square',{'G4',.6}) elseif num==5 then -- 4+6, 4 - inst('bass',.8,'F3','A3') - inst('lead',.3,'F4') + playSample('sine',{'F3',.8},{'A3',.8}) + playSample('square',{'F4',.3}) elseif num<=10 then - inst('bass',2.1626-num/5,'A2','E3') + playSample('sine',{'A2',2.2-num/5},{'E3',2.2-num/5}) end end, - move= function() SFX.play('move',.6) end, - move_down= function() SFX.play('move_down',.6) end, - move_failed= function() SFX.play('move_failed') end, - tuck= function() SFX.play('tuck') end, - rotate= function() SFX.play('rotate') end, - initrotate= function() SFX.play('initrotate') end, - rotate_locked= function() SFX.play('rotate_locked') end, - rotate_corners= function() SFX.play('rotate_corners') end, - rotate_failed= function() SFX.play('rotate_failed') end, - rotate_special= function() SFX.play('rotate_special') end, - hold= function() SFX.play('hold') end, - inithold= function() SFX.play('inithold') end, - touch= function() SFX.play('touch') end, - drop= function() SFX.play('drop') end, - lock= function() SFX.play('lock') end, - b2b= function(lv) SFX.play('b2b_'..min(lv,10)) end, - b2b_break= function() SFX.play('b2b_break') end, + move= function() FMOD.playEffect('move') end, + move_down= function() FMOD.playEffect('move_down') end, + move_failed= function() FMOD.playEffect('move_failed') end, + tuck= function() FMOD.playEffect('tuck') end, + rotate= function() FMOD.playEffect('rotate') end, + rotate_init= function() FMOD.playEffect('rotate_init') end, + rotate_locked= function() FMOD.playEffect('rotate_locked') end, + rotate_corners= function() FMOD.playEffect('rotate_corners') end, + rotate_failed= function() FMOD.playEffect('rotate_failed') end, + rotate_special= function() FMOD.playEffect('rotate_special') end, + hold= function() FMOD.playEffect('hold') end, + hold_init= function() FMOD.playEffect('hold_init') end, + touch= function() FMOD.playEffect('touch') end, + drop= function() FMOD.playEffect('drop') end, + lock= function() FMOD.playEffect('lock') end, + b2b= function(lv) FMOD.playEffect('b2b_'..min(lv,10)) end, + b2b_break= function() FMOD.playEffect('b2b_break') end, clear=function(lines) - SFX.play( + FMOD.playEffect( lines<=6 and 'clear_'..lines or lines<=18 and 'clear_'..(lines-lines%2) or lines<=22 and 'clear_'..lines or lines<=26 and 'clear_'..(lines-lines%2) or 'clear_26' ) - if lines>=3 then - BGM.set('all','highgain',.26+1/lines,0) - BGM.set('all','highgain',1,min((lines)^1.5/5,2.6)) - end end, spin=function(lines) - if lines==0 then SFX.play('spin_0') - elseif lines==1 then SFX.play('spin_1') - elseif lines==2 then SFX.play('spin_2') - elseif lines==3 then SFX.play('spin_3') - elseif lines==4 then SFX.play('spin_4') - else SFX.play('spin_mega') + if lines==0 then FMOD.playEffect('spin_0') + elseif lines==1 then FMOD.playEffect('spin_1') + elseif lines==2 then FMOD.playEffect('spin_2') + elseif lines==3 then FMOD.playEffect('spin_3') + elseif lines==4 then FMOD.playEffect('spin_4') + else FMOD.playEffect('spin_mega') end end, combo=setmetatable({ - function() inst('bass',.70,'A2') end, -- 1 - function() inst('bass',.75,'C3') end, -- 2 - function() inst('bass',.80,'D3') end, -- 3 - function() inst('bass',.85,'E3') end, -- 4 - function() inst('bass',.90,'G3') end, -- 5 - function() inst('bass',.90,'A3') inst('lead',.20,'A2') end, -- 6 - function() inst('bass',.75,'C4') inst('lead',.40,'C3') end, -- 7 - function() inst('bass',.60,'D4') inst('lead',.60,'D3') end, -- 8 - function() inst('bass',.40,'E4') inst('lead',.75,'E3') end, -- 9 - function() inst('bass',.20,'G4') inst('lead',.90,'G3') end, -- 10 - function() inst('bass',.20,'A4') inst('lead',.85,'A3') end, -- 11 - function() inst('bass',.40,'A4') inst('lead',.80,'C4') end, -- 12 - function() inst('bass',.60,'A4') inst('lead',.75,'D4') end, -- 13 - function() inst('bass',.75,'A4') inst('lead',.70,'E4') end, -- 14 - function() inst('bass',.90,'A4') inst('lead',.65,'G4') end, -- 15 - function() inst('bass',.90,'A4') inst('bass',.70,'E5') inst('lead','A4') end, -- 16 - function() inst('bass',.85,'A4') inst('bass',.75,'E5') inst('lead','C5') end, -- 17 - function() inst('bass',.80,'A4') inst('bass',.80,'E5') inst('lead','D5') end, -- 18 - function() inst('bass',.75,'A4') inst('bass',.85,'E5') inst('lead','E5') end, -- 19 - function() inst('bass',.70,'A4') inst('bass',.90,'E5') inst('lead','G5') end, -- 20 + function() playSample('sine',{'A2',.70,420}) end, -- 1 + function() playSample('sine',{'C3',.75,410}) end, -- 2 + function() playSample('sine',{'D3',.80,400}) end, -- 3 + function() playSample('sine',{'E3',.85,390}) end, -- 4 + function() playSample('sine',{'G3',.90,380}) end, -- 5 + function() playSample('sine',{'A3',.90,370},'square',{'A2',.20,420,620}) end, -- 6 + function() playSample('sine',{'C4',.75,360},'square',{'C3',.40,400,620}) end, -- 7 + function() playSample('sine',{'D4',.60,350},'square',{'D3',.60,380,620}) end, -- 8 + function() playSample('sine',{'E4',.40,340},'square',{'E3',.75,360,620}) end, -- 9 + function() playSample('sine',{'G4',.20,330},'square',{'G3',.90,340,620}) end, -- 10 + function() playSample('sine',{'A4',.20,320},'square',{'A3',.85,320,620}) end, -- 11 + function() playSample('sine',{'A4',.40,310},'square',{'C4',.80,300,620}) end, -- 12 + function() playSample('sine',{'A4',.60,300},'square',{'D4',.75,280,620}) end, -- 13 + function() playSample('sine',{'A4',.75,290},'square',{'E4',.70,270,620}) end, -- 14 + function() playSample('sine',{'A4',.90,280},'square',{'G4',.65,260,640}) end, -- 15 + function() playSample('sine',{'A4',.90,270},{'E5',.70},'square',{'A4',1,250,660}) end, -- 16 + function() playSample('sine',{'A4',.85,260},{'E5',.75},'square',{'C5',1,240,680}) end, -- 17 + function() playSample('sine',{'A4',.80,250},{'E5',.80},'square',{'D5',1,230,700}) end, -- 18 + function() playSample('sine',{'A4',.75,240},{'E5',.85},'square',{'E5',1,220,720}) end, -- 19 + function() playSample('sine',{'A4',.70,230},{'E5',.90},'square',{'G5',1,210,740}) end, -- 20 },{__call=function(self,combo) if self[combo] then self[combo]() else - inst('bass',.626,'A4') + playSample('sine',{'A4',.626-.01*combo,430-10*combo}) local phase=(combo-21)%12 - inst('lead',1-((11-phase)/12)^2,40+phase) -- E4+ - inst('lead',1-((11-phase)/12)^2,45+phase) -- A4+ - inst('lead',1-(phase/12)^2, 52+phase) -- E5+ - inst('lead',1-(phase/12)^2, 57+phase) -- A5+ + playSample('square',{40+phase,1-((11-phase)/12)^2,400-10*combo,700+20*combo}) -- E4+ + playSample('square',{45+phase,1-((11-phase)/12)^2,400-10*combo,700+20*combo}) -- A4+ + playSample('square',{52+phase,1-(phase/12)^2,400-10*combo,700+20*combo}) -- E5+ + playSample('square',{57+phase,1-(phase/12)^2,400-10*combo,700+20*combo}) -- A5+ end end,__metatable=true}), - frenzy= function() SFX.play('frenzy') end, - allClear= function() SFX.play('clear_all') end, - halfClear= function() SFX.play('clear_half') end, - suffocate= function() SFX.play('suffocate') end, - desuffocate= function() SFX.play('desuffocate') end, - reach= function() SFX.play('beep_rise') end, - notice= function() SFX.play('beep_notice') end, - win= function() SFX.play('win') end, - fail= function() SFX.play('fail') end, + frenzy= function() FMOD.playEffect('frenzy') end, + allClear= function() FMOD.playEffect('clear_all') end, + halfClear= function() FMOD.playEffect('clear_half') end, + suffocate= function() FMOD.playEffect('suffocate') end, + desuffocate= function() FMOD.playEffect('desuffocate') end, + reach= function() FMOD.playEffect('beep_rise') end, + notice= function() FMOD.playEffect('beep_notice') end, + win= function() FMOD.playEffect('win') end, + fail= function() FMOD.playEffect('fail') end, } MP.scriptCmd={ clearHold=function(P) P:clearHold() end, @@ -401,7 +396,7 @@ function MP:moveHand(action,A,B,C,D) end end end - self:playSound(D and 'initrotate' or 'rotate') + self:playSound(D and 'rotate_init' or 'rotate') if SET.particles then self:createRotateEffect(C,D) end @@ -1038,7 +1033,7 @@ function MP:hold(ifInit) end self.holdTime=self.holdTime+1 - self:playSound(ifInit and 'inithold' or 'hold') + self:playSound(ifInit and 'hold_init' or 'hold') end function MP:hold_hold() if not self.settings.holdKeepState then diff --git a/assets/game/minomap.lua b/assets/game/minomap.lua index 7b41beee..5c355521 100644 --- a/assets/game/minomap.lua +++ b/assets/game/minomap.lua @@ -260,7 +260,7 @@ end local function _selectMode(m) selected=m if m then - SFX.play('map_select') + FMOD.playEffect('map_select') end end local function _enterMode(m) @@ -268,7 +268,7 @@ local function _enterMode(m) if love.filesystem.getInfo('assets/game/mode/mino/exterior/'..m.name..'.lua') then enterFX.timer=0 enterFX.x,enterFX.y,enterFX.r=m.x,m.y,m.r - SFX.play('map_enter') + FMOD.playEffect('map_enter') SCN.go('game_out','fade','mino/exterior/'..m.name) else MSG.new('warn',"Mode file not exist") @@ -343,7 +343,7 @@ function map:update(dt) cam.x0,cam.y0=-a.x,-a.y cam.k0,cam.a0=1,0 if TASK.lock('minomap_unlockSound',.26) then - SFX.play(a.sound) + FMOD.playEffect(a.sound) end end else diff --git a/assets/game/mode/mino/exterior/ac_easy.lua b/assets/game/mode/mino/exterior/ac_easy.lua index 03ad3450..57f091b2 100644 --- a/assets/game/mode/mino/exterior/ac_easy.lua +++ b/assets/game/mode/mino/exterior/ac_easy.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('truth','full') + playBgm('truth',true) end, settings={mino={ nextSlot=8, diff --git a/assets/game/mode/mino/exterior/backfire_100.lua b/assets/game/mode/mino/exterior/backfire_100.lua index 4edc1ef6..a2b3496a 100644 --- a/assets/game/mode/mino/exterior/backfire_100.lua +++ b/assets/game/mode/mino/exterior/backfire_100.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('echo','base') + playBgm('echo') end, settings={mino={ atkSys='nextgen', diff --git a/assets/game/mode/mino/exterior/backfire_amplify_100.lua b/assets/game/mode/mino/exterior/backfire_amplify_100.lua index 30c2d6b8..95d16412 100644 --- a/assets/game/mode/mino/exterior/backfire_amplify_100.lua +++ b/assets/game/mode/mino/exterior/backfire_amplify_100.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('echo','base') + playBgm('echo') end, settings={mino={ atkSys='nextgen', diff --git a/assets/game/mode/mino/exterior/backfire_cheese_100.lua b/assets/game/mode/mino/exterior/backfire_cheese_100.lua index aa8ed739..82741df8 100644 --- a/assets/game/mode/mino/exterior/backfire_cheese_100.lua +++ b/assets/game/mode/mino/exterior/backfire_cheese_100.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('echo','base') + playBgm('echo') end, settings={mino={ atkSys='nextgen', diff --git a/assets/game/mode/mino/exterior/combo_practice.lua b/assets/game/mode/mino/exterior/combo_practice.lua index 63b9a48f..9d019692 100644 --- a/assets/game/mode/mino/exterior/combo_practice.lua +++ b/assets/game/mode/mino/exterior/combo_practice.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('oxygen','base') + playBgm('oxygen') end, settings={mino={ spawnDelay=60, diff --git a/assets/game/mode/mino/exterior/dig_100.lua b/assets/game/mode/mino/exterior/dig_100.lua index 18e4034e..457c8b03 100644 --- a/assets/game/mode/mino/exterior/dig_100.lua +++ b/assets/game/mode/mino/exterior/dig_100.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','base') + playBgm('way') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/dig_40.lua b/assets/game/mode/mino/exterior/dig_40.lua index f7dc07c9..23a06af7 100644 --- a/assets/game/mode/mino/exterior/dig_40.lua +++ b/assets/game/mode/mino/exterior/dig_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','base') + playBgm('way') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/dig_400.lua b/assets/game/mode/mino/exterior/dig_400.lua index a6ebdae2..21896f27 100644 --- a/assets/game/mode/mino/exterior/dig_400.lua +++ b/assets/game/mode/mino/exterior/dig_400.lua @@ -4,7 +4,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','base') + playBgm('way') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/dig_checker.lua b/assets/game/mode/mino/exterior/dig_checker.lua index f872cfd4..d7cd0080 100644 --- a/assets/game/mode/mino/exterior/dig_checker.lua +++ b/assets/game/mode/mino/exterior/dig_checker.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','simp') + playBgm('way') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/dig_practice.lua b/assets/game/mode/mino/exterior/dig_practice.lua index 0098e654..3a12044a 100644 --- a/assets/game/mode/mino/exterior/dig_practice.lua +++ b/assets/game/mode/mino/exterior/dig_practice.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','simp') + playBgm('way') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/dig_shale.lua b/assets/game/mode/mino/exterior/dig_shale.lua index 48e15625..31bb2d69 100644 --- a/assets/game/mode/mino/exterior/dig_shale.lua +++ b/assets/game/mode/mino/exterior/dig_shale.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','base') + playBgm('way') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/dig_volcanics.lua b/assets/game/mode/mino/exterior/dig_volcanics.lua index c6807b66..90841e48 100644 --- a/assets/game/mode/mino/exterior/dig_volcanics.lua +++ b/assets/game/mode/mino/exterior/dig_volcanics.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','base') + playBgm('way') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/hypersonic_hd.lua b/assets/game/mode/mino/exterior/hypersonic_hd.lua index ead2673b..d096281d 100644 --- a/assets/game/mode/mino/exterior/hypersonic_hd.lua +++ b/assets/game/mode/mino/exterior/hypersonic_hd.lua @@ -3,10 +3,8 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('secret7th','base') - BGM.set('secret7th/melody1','volume',0,0) - BGM.set('all','pitch',2^(-1/12),0) - BGM.set('all','seek',MATH.roundUnit(BGM.tell(),60/130)) + playBgm('secret7th_hidden') + FMOD.seekMusic(MATH.roundUnit(FMOD.tellMusic(),60/130)) end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/hypersonic_hi.lua b/assets/game/mode/mino/exterior/hypersonic_hi.lua index 8a2f35af..147dd314 100644 --- a/assets/game/mode/mino/exterior/hypersonic_hi.lua +++ b/assets/game/mode/mino/exterior/hypersonic_hi.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('secret7th','base') + playBgm('secret7th') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/hypersonic_lo.lua b/assets/game/mode/mino/exterior/hypersonic_lo.lua index 054d45a1..03b99346 100644 --- a/assets/game/mode/mino/exterior/hypersonic_lo.lua +++ b/assets/game/mode/mino/exterior/hypersonic_lo.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('secret8th','base') + playBgm('secret8th') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/hypersonic_ti.lua b/assets/game/mode/mino/exterior/hypersonic_ti.lua index eb843ff6..3ffff5c4 100644 --- a/assets/game/mode/mino/exterior/hypersonic_ti.lua +++ b/assets/game/mode/mino/exterior/hypersonic_ti.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('distortion','base') + playBgm('distortion') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/marathon.lua b/assets/game/mode/mino/exterior/marathon.lua index 8d0c876e..12b5dbc7 100644 --- a/assets/game/mode/mino/exterior/marathon.lua +++ b/assets/game/mode/mino/exterior/marathon.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('propel','base') + playBgm('propel_marathon') end, settings={mino={ spawnDelay=130, diff --git a/assets/game/mode/mino/exterior/sprint_10.lua b/assets/game/mode/mino/exterior/sprint_10.lua index 8b412da1..402eed3b 100644 --- a/assets/game/mode/mino/exterior/sprint_10.lua +++ b/assets/game/mode/mino/exterior/sprint_10.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','full') + playBgm('race',true) end, settings={mino={ seqType='bag7_sprint', diff --git a/assets/game/mode/mino/exterior/sprint_1000.lua b/assets/game/mode/mino/exterior/sprint_1000.lua index 1f21a972..224bed44 100644 --- a/assets/game/mode/mino/exterior/sprint_1000.lua +++ b/assets/game/mode/mino/exterior/sprint_1000.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/sprint_200.lua b/assets/game/mode/mino/exterior/sprint_200.lua index 47f21b64..a5eeed38 100644 --- a/assets/game/mode/mino/exterior/sprint_200.lua +++ b/assets/game/mode/mino/exterior/sprint_200.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/sprint_40.lua b/assets/game/mode/mino/exterior/sprint_40.lua index 18290b72..bdef1ab4 100644 --- a/assets/game/mode/mino/exterior/sprint_40.lua +++ b/assets/game/mode/mino/exterior/sprint_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ -- skin='touhou.mino_reimu', diff --git a/assets/game/mode/mino/exterior/sprint_big_80.lua b/assets/game/mode/mino/exterior/sprint_big_80.lua index a47ff9f1..09b3d0cc 100644 --- a/assets/game/mode/mino/exterior/sprint_big_80.lua +++ b/assets/game/mode/mino/exterior/sprint_big_80.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ fieldW=6, diff --git a/assets/game/mode/mino/exterior/sprint_blind_40.lua b/assets/game/mode/mino/exterior/sprint_blind_40.lua index 150c4370..5e8416d6 100644 --- a/assets/game/mode/mino/exterior/sprint_blind_40.lua +++ b/assets/game/mode/mino/exterior/sprint_blind_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ pieceVisTime=120, diff --git a/assets/game/mode/mino/exterior/sprint_delay_20.lua b/assets/game/mode/mino/exterior/sprint_delay_20.lua index 213f7433..59efd164 100644 --- a/assets/game/mode/mino/exterior/sprint_delay_20.lua +++ b/assets/game/mode/mino/exterior/sprint_delay_20.lua @@ -3,11 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - BGM.play{ - 'race/accompany1', - 'race/decoration', - 'race/drum', - } + playBgm('race_delay') end, settings={mino={ inputDelay=620, diff --git a/assets/game/mode/mino/exterior/sprint_dizzy_40.lua b/assets/game/mode/mino/exterior/sprint_dizzy_40.lua index 48dd2f90..11214e3a 100644 --- a/assets/game/mode/mino/exterior/sprint_dizzy_40.lua +++ b/assets/game/mode/mino/exterior/sprint_dizzy_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/sprint_drought_40.lua b/assets/game/mode/mino/exterior/sprint_drought_40.lua index 7c817d51..a1db7b5e 100644 --- a/assets/game/mode/mino/exterior/sprint_drought_40.lua +++ b/assets/game/mode/mino/exterior/sprint_drought_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ seqType='bag6p6_drought', diff --git a/assets/game/mode/mino/exterior/sprint_fix_20.lua b/assets/game/mode/mino/exterior/sprint_fix_20.lua index b0b39af7..c4fb2311 100644 --- a/assets/game/mode/mino/exterior/sprint_fix_20.lua +++ b/assets/game/mode/mino/exterior/sprint_fix_20.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ maxFreshChance=30, diff --git a/assets/game/mode/mino/exterior/sprint_flip_40.lua b/assets/game/mode/mino/exterior/sprint_flip_40.lua index 545a200e..224d0931 100644 --- a/assets/game/mode/mino/exterior/sprint_flip_40.lua +++ b/assets/game/mode/mino/exterior/sprint_flip_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/sprint_float_40.lua b/assets/game/mode/mino/exterior/sprint_float_40.lua index f95416d0..a8930bd3 100644 --- a/assets/game/mode/mino/exterior/sprint_float_40.lua +++ b/assets/game/mode/mino/exterior/sprint_float_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ clearRule='line_float', diff --git a/assets/game/mode/mino/exterior/sprint_flood_40.lua b/assets/game/mode/mino/exterior/sprint_flood_40.lua index 9169480e..ab7d4b8a 100644 --- a/assets/game/mode/mino/exterior/sprint_flood_40.lua +++ b/assets/game/mode/mino/exterior/sprint_flood_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ seqType='bag7p6_flood', diff --git a/assets/game/mode/mino/exterior/sprint_hide_40.lua b/assets/game/mode/mino/exterior/sprint_hide_40.lua index 3f8c0f3a..16b3faf9 100644 --- a/assets/game/mode/mino/exterior/sprint_hide_40.lua +++ b/assets/game/mode/mino/exterior/sprint_hide_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/sprint_invis_40.lua b/assets/game/mode/mino/exterior/sprint_invis_40.lua index 58439966..ab158da1 100644 --- a/assets/game/mode/mino/exterior/sprint_invis_40.lua +++ b/assets/game/mode/mino/exterior/sprint_invis_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ pieceVisTime=260, diff --git a/assets/game/mode/mino/exterior/sprint_lock_20.lua b/assets/game/mode/mino/exterior/sprint_lock_20.lua index 9136a554..23fbc908 100644 --- a/assets/game/mode/mino/exterior/sprint_lock_20.lua +++ b/assets/game/mode/mino/exterior/sprint_lock_20.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ dropDelay=1200, diff --git a/assets/game/mode/mino/exterior/sprint_low_40.lua b/assets/game/mode/mino/exterior/sprint_low_40.lua index b525cab2..d8124145 100644 --- a/assets/game/mode/mino/exterior/sprint_low_40.lua +++ b/assets/game/mode/mino/exterior/sprint_low_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ spawnH=4, diff --git a/assets/game/mode/mino/exterior/sprint_mph_40.lua b/assets/game/mode/mino/exterior/sprint_mph_40.lua index 7a0c1a57..ea00d482 100644 --- a/assets/game/mode/mino/exterior/sprint_mph_40.lua +++ b/assets/game/mode/mino/exterior/sprint_mph_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ nextSlot=0, diff --git a/assets/game/mode/mino/exterior/sprint_obstacle_20.lua b/assets/game/mode/mino/exterior/sprint_obstacle_20.lua index 975f0723..11ccc64a 100644 --- a/assets/game/mode/mino/exterior/sprint_obstacle_20.lua +++ b/assets/game/mode/mino/exterior/sprint_obstacle_20.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/sprint_pento_40.lua b/assets/game/mode/mino/exterior/sprint_pento_40.lua index ade10521..bb228cb4 100644 --- a/assets/game/mode/mino/exterior/sprint_pento_40.lua +++ b/assets/game/mode/mino/exterior/sprint_pento_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('beat5th','base') + playBgm('beat5th') end, settings={mino={ seqType='bag8_pentoEZ_p4fromBag10_pentoHD', diff --git a/assets/game/mode/mino/exterior/sprint_randctrl_40.lua b/assets/game/mode/mino/exterior/sprint_randctrl_40.lua index 6dfe6607..a2522b15 100644 --- a/assets/game/mode/mino/exterior/sprint_randctrl_40.lua +++ b/assets/game/mode/mino/exterior/sprint_randctrl_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/sprint_small_20.lua b/assets/game/mode/mino/exterior/sprint_small_20.lua index a640a9d5..35f92229 100644 --- a/assets/game/mode/mino/exterior/sprint_small_20.lua +++ b/assets/game/mode/mino/exterior/sprint_small_20.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ fieldW=15, diff --git a/assets/game/mode/mino/exterior/sprint_sym_40.lua b/assets/game/mode/mino/exterior/sprint_sym_40.lua index 1b487eef..169ccd6e 100644 --- a/assets/game/mode/mino/exterior/sprint_sym_40.lua +++ b/assets/game/mode/mino/exterior/sprint_sym_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/sprint_wind_40.lua b/assets/game/mode/mino/exterior/sprint_wind_40.lua index 2b15e938..23856ca1 100644 --- a/assets/game/mode/mino/exterior/sprint_wind_40.lua +++ b/assets/game/mode/mino/exterior/sprint_wind_40.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race','base') + playBgm('race') end, settings={mino={ dropDelay=20, diff --git a/assets/game/mode/mino/exterior/survivor_b2b.lua b/assets/game/mode/mino/exterior/survivor_b2b.lua index 7e9f802f..49e17a05 100644 --- a/assets/game/mode/mino/exterior/survivor_b2b.lua +++ b/assets/game/mode/mino/exterior/survivor_b2b.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('here','base') + playBgm('here') end, settings={mino={ atkSys='modern', diff --git a/assets/game/mode/mino/exterior/survivor_cheese.lua b/assets/game/mode/mino/exterior/survivor_cheese.lua index 5ec43a21..e3f21fe0 100644 --- a/assets/game/mode/mino/exterior/survivor_cheese.lua +++ b/assets/game/mode/mino/exterior/survivor_cheese.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('here','base') + playBgm('here') end, settings={mino={ atkSys='basic', diff --git a/assets/game/mode/mino/exterior/survivor_spike.lua b/assets/game/mode/mino/exterior/survivor_spike.lua index 70a13d2f..d3b01ad3 100644 --- a/assets/game/mode/mino/exterior/survivor_spike.lua +++ b/assets/game/mode/mino/exterior/survivor_spike.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('here','base') + playBgm('here') end, settings={mino={ atkSys='nextgen', diff --git a/assets/game/mode/mino/exterior/techrash_easy.lua b/assets/game/mode/mino/exterior/techrash_easy.lua index baf4348e..866fdd3b 100644 --- a/assets/game/mode/mino/exterior/techrash_easy.lua +++ b/assets/game/mode/mino/exterior/techrash_easy.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','base') + playBgm('way') end, settings={mino={ seqType=mechLib.mino.techrashChallenge.easy_seqType, diff --git a/assets/game/mode/mino/exterior/techrash_hard.lua b/assets/game/mode/mino/exterior/techrash_hard.lua index f17d503f..48040589 100644 --- a/assets/game/mode/mino/exterior/techrash_hard.lua +++ b/assets/game/mode/mino/exterior/techrash_hard.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','base') + playBgm('way') end, settings={mino={ event={ diff --git a/assets/game/mode/mino/exterior/tsd_easy.lua b/assets/game/mode/mino/exterior/tsd_easy.lua index bfb4adb2..c14583eb 100644 --- a/assets/game/mode/mino/exterior/tsd_easy.lua +++ b/assets/game/mode/mino/exterior/tsd_easy.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','simp') + playBgm('way') end, settings={mino={ spin_immobile=true, diff --git a/assets/game/mode/mino/exterior/tsd_hard.lua b/assets/game/mode/mino/exterior/tsd_hard.lua index 37e9a537..0bae9053 100644 --- a/assets/game/mode/mino/exterior/tsd_hard.lua +++ b/assets/game/mode/mino/exterior/tsd_hard.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','simp') + playBgm('way') end, settings={mino={ spin_immobile=true, diff --git a/assets/game/mode/mino/exterior/ultra.lua b/assets/game/mode/mino/exterior/ultra.lua index d219aa36..0dac9423 100644 --- a/assets/game/mode/mino/exterior/ultra.lua +++ b/assets/game/mode/mino/exterior/ultra.lua @@ -3,8 +3,8 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('sakura','','-noloop') - BGM.set('all','seek',0) + playBgm('sakura') + FMOD.seekMusic(0) end, settings={mino={ event={ diff --git a/assets/game/mode/mino/interior/dig.lua b/assets/game/mode/mino/interior/dig.lua index fc50f215..d4408630 100644 --- a/assets/game/mode/mino/interior/dig.lua +++ b/assets/game/mode/mino/interior/dig.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('way','simp') + playBgm('way') BG.set('none') end, settings={mino={ diff --git a/assets/game/mode/mino/interior/marathon.lua b/assets/game/mode/mino/interior/marathon.lua index 494a9861..67506c0d 100644 --- a/assets/game/mode/mino/interior/marathon.lua +++ b/assets/game/mode/mino/interior/marathon.lua @@ -6,7 +6,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('push',PROGRESS.get('main')==1 and 'simp' or 'base') + playBgm('push') end, settings={mino={ skin='mino_interior', @@ -29,7 +29,7 @@ return { while md.stat.line>=md.lineTarget do if md.lineTarget<200 then if PROGRESS.get('main')>=2 and md.lineTarget<=150 and P.isMain then - BGM.set(bgmList['push'].add,'volume',(md.lineTarget/150)^2,2.6) + FMOD.setMusicParam('intensity',(md.lineTarget/150)^2) end P.settings.dropDelay=dropSpeed[md.lineTarget/10+1] md.lineTarget=md.lineTarget+10 diff --git a/assets/game/mode/mino/interior/sprint.lua b/assets/game/mode/mino/interior/sprint.lua index fd7cc121..eb4423bf 100644 --- a/assets/game/mode/mino/interior/sprint.lua +++ b/assets/game/mode/mino/interior/sprint.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('race',PROGRESS.get('main')==1 and 'simp' or 'base') + playBgm('race') BG.set('none') end, settings={mino={ @@ -18,7 +18,7 @@ return { mechLib.mino.sprint.event_afterClear[40], function(P) if PROGRESS.get('main')>=2 and P.modeData.stat.line>10 and P.isMain then - BGM.set(bgmList['race'].add,'volume',math.min((P.modeData.stat.line-10)/20,1),2.6) + FMOD.setMusicParam('intensity',math.min((P.modeData.stat.line-10)/20,1)) end end, }, diff --git a/assets/game/mode/mino/interior/tutorial/1.basic.lua b/assets/game/mode/mino/interior/tutorial/1.basic.lua index 822154f9..7e1c1ebe 100644 --- a/assets/game/mode/mino/interior/tutorial/1.basic.lua +++ b/assets/game/mode/mino/interior/tutorial/1.basic.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('space','simp') + playBgm('space') end, settings={mino={ skin='mino_interior', diff --git a/assets/game/mode/mino/interior/tutorial/2.sequence.lua b/assets/game/mode/mino/interior/tutorial/2.sequence.lua index d448bd0f..d58a5e27 100644 --- a/assets/game/mode/mino/interior/tutorial/2.sequence.lua +++ b/assets/game/mode/mino/interior/tutorial/2.sequence.lua @@ -3,7 +3,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('space','simp') + playBgm('space') end, settings={mino={ skin='mino_interior', diff --git a/assets/game/mode/mino/interior/tutorial/4.stackBasic.lua b/assets/game/mode/mino/interior/tutorial/4.stackBasic.lua index bd7f4ab6..b40d95f8 100644 --- a/assets/game/mode/mino/interior/tutorial/4.stackBasic.lua +++ b/assets/game/mode/mino/interior/tutorial/4.stackBasic.lua @@ -27,7 +27,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('space','simp') + playBgm('space') end, settings={mino={ skin='mino_interior', diff --git a/assets/game/mode/mino/interior/tutorial/5.twoRotatingKey.lua b/assets/game/mode/mino/interior/tutorial/5.twoRotatingKey.lua index c0312166..c8109fb0 100644 --- a/assets/game/mode/mino/interior/tutorial/5.twoRotatingKey.lua +++ b/assets/game/mode/mino/interior/tutorial/5.twoRotatingKey.lua @@ -58,7 +58,7 @@ return { initialize=function() GAME.newPlayer(1,'mino') GAME.setMain(1) - playBgm('space','full') + playBgm('space',true) end, settings={mino={ skin='mino_interior', diff --git a/assets/game/mode/test/battle.lua b/assets/game/mode/test/battle.lua index d539f40c..3d4f1d93 100644 --- a/assets/game/mode/test/battle.lua +++ b/assets/game/mode/test/battle.lua @@ -5,7 +5,7 @@ return { GAME.newPlayer(2,'mino') GAME.newPlayer(3,'puyo') GAME.setMain(1) - playBgm('battle','base') + playBgm('battle') end, settings={ mino={ diff --git a/assets/game/puyoPlayer.lua b/assets/game/puyoPlayer.lua index f852c629..3e328358 100644 --- a/assets/game/puyoPlayer.lua +++ b/assets/game/puyoPlayer.lua @@ -10,8 +10,6 @@ local max,min=math.max,math.min local floor=math.floor local ins,rem=table.insert,table.remove -local inst=SFX.playSample - ---@class Techmino.Player.puyo: Techmino.Player ---@field field Techmino.RectField local PP=setmetatable({},{__index=require'assets.game.basePlayer',__metatable=true}) @@ -21,39 +19,39 @@ local PP=setmetatable({},{__index=require'assets.game.basePlayer',__metatable=tr local defaultSoundFunc={ countDown=function(num) if num==0 then -- 6, 3+6+6 - inst('bass',.8,'A3') - inst('lead',.9,'A4','E5','A5') + playSample('sine',{'A3',.8}) + playSample('square',{'A4',.9},{'E5',.9},{'A5',.9}) elseif num==1 then -- 5, 3+7 - inst('bass',.9,'G3') - inst('lead',.9,'B4','E5') + playSample('sine',{'G3',.9}) + playSample('square',{'B4',.9},{'E5',.9}) elseif num==2 then -- 4, 6+2 - inst('bass','F3') - inst('lead',.8,'A4','D5') + playSample('sine',{'F3'}) + playSample('square',{'A4',.8},{'D5',.8}) elseif num==3 then -- 6+6 - inst('bass',.9,'A3','E4') - inst('lead',.8,'A4') + playSample('sine',{'A3',.9},{'E4',.9}) + playSample('square',{'A4',.8}) elseif num==4 then -- 5+7, 5 - inst('bass',.9,'G3','B3') - inst('lead',.6,'G4') + playSample('sine',{'G3',.9},{'B3',.9}) + playSample('square',{'G4',.6}) elseif num==5 then -- 4+6, 4 - inst('bass',.8,'F3','A3') - inst('lead',.3,'F4') + playSample('sine',{'F3',.8},{'A3',.8}) + playSample('square',{'F4',.3}) elseif num<=10 then - inst('bass',2.2-num/5,'A2','E3') + playSample('sine',{'A2',2.2-num/5},{'E3',2.2-num/5}) end end, - move= function() SFX.play('move',.6) end, - move_down= function() SFX.play('move_down',.6) end, - move_failed= function() SFX.play('move_failed') end, - rotate= function() SFX.play('rotate') end, - initrotate= function() SFX.play('initrotate') end, - rotate_failed= function() SFX.play('rotate_failed') end, - rotate_special= function() SFX.play('rotate_special') end, - touch= function() SFX.play('touch') end, - drop= function() SFX.play('drop') end, - lock= function() SFX.play('lock') end, + move= function() FMOD.playEffect('move') end, + move_down= function() FMOD.playEffect('move_down') end, + move_failed= function() FMOD.playEffect('move_failed') end, + rotate= function() FMOD.playEffect('rotate') end, + rotate_init= function() FMOD.playEffect('rotate_init') end, + rotate_failed= function() FMOD.playEffect('rotate_failed') end, + rotate_special= function() FMOD.playEffect('rotate_special') end, + touch= function() FMOD.playEffect('touch') end, + drop= function() FMOD.playEffect('drop') end, + lock= function() FMOD.playEffect('lock') end, clear=function(lines) - SFX.play( + FMOD.playEffect( lines==1 and 'clear_1' or lines==2 and 'clear_2' or lines==3 and 'clear_3' or @@ -62,46 +60,46 @@ local defaultSoundFunc={ ) end, chain=setmetatable({ - function() inst('bass',.70,'A2') end, -- 1 chain - function() inst('bass',.75,'C3') end, -- 2 chain - function() inst('bass',.80,'D3') end, -- 3 chain - function() inst('bass',.85,'E3') end, -- 4 chain - function() inst('bass',.90,'G3') end, -- 5 chain - function() inst('bass',.90,'A3') inst('lead',.20,'A2') end, -- 6 chain - function() inst('bass',.75,'C4') inst('lead',.40,'C3') end, -- 7 chain - function() inst('bass',.60,'D4') inst('lead',.60,'D3') end, -- 8 chain - function() inst('bass',.40,'E4') inst('lead',.75,'E3') end, -- 9 chain - function() inst('bass',.20,'G4') inst('lead',.90,'G3') end, -- 10 chain - function() inst('bass',.20,'A4') inst('lead',.85,'A3') end, -- 11 chain - function() inst('bass',.40,'A4') inst('lead',.80,'C4') end, -- 12 chain - function() inst('bass',.60,'A4') inst('lead',.75,'D4') end, -- 13 chain - function() inst('bass',.75,'A4') inst('lead',.70,'E4') end, -- 14 chain - function() inst('bass',.90,'A4') inst('lead',.65,'G4') end, -- 15 chain - function() inst('bass',.90,'A4') inst('bass',.70,'E5') inst('lead','A4') end, -- 16 chain - function() inst('bass',.85,'A4') inst('bass',.75,'E5') inst('lead','C5') end, -- 17 chain - function() inst('bass',.80,'A4') inst('bass',.80,'E5') inst('lead','D5') end, -- 18 chain - function() inst('bass',.75,'A4') inst('bass',.85,'E5') inst('lead','E5') end, -- 19 chain - function() inst('bass',.70,'A4') inst('bass',.90,'E5') inst('lead','G5') end, -- 20 chain + function() playSample('sine',{'A2',.70,420}) end, -- 1 + function() playSample('sine',{'C3',.75,410}) end, -- 2 + function() playSample('sine',{'D3',.80,400}) end, -- 3 + function() playSample('sine',{'E3',.85,390}) end, -- 4 + function() playSample('sine',{'G3',.90,380}) end, -- 5 + function() playSample('sine',{'A3',.90,370},'square',{'A2',.20,420,620}) end, -- 6 + function() playSample('sine',{'C4',.75,360},'square',{'C3',.40,400,620}) end, -- 7 + function() playSample('sine',{'D4',.60,350},'square',{'D3',.60,380,620}) end, -- 8 + function() playSample('sine',{'E4',.40,340},'square',{'E3',.75,360,620}) end, -- 9 + function() playSample('sine',{'G4',.20,330},'square',{'G3',.90,340,620}) end, -- 10 + function() playSample('sine',{'A4',.20,320},'square',{'A3',.85,320,620}) end, -- 11 + function() playSample('sine',{'A4',.40,310},'square',{'C4',.80,300,620}) end, -- 12 + function() playSample('sine',{'A4',.60,300},'square',{'D4',.75,280,620}) end, -- 13 + function() playSample('sine',{'A4',.75,290},'square',{'E4',.70,270,620}) end, -- 14 + function() playSample('sine',{'A4',.90,280},'square',{'G4',.65,260,640}) end, -- 15 + function() playSample('sine',{'A4',.90,270},{'E5',.70},'square',{'A4',1,250,660}) end, -- 16 + function() playSample('sine',{'A4',.85,260},{'E5',.75},'square',{'C5',1,240,680}) end, -- 17 + function() playSample('sine',{'A4',.80,250},{'E5',.80},'square',{'D5',1,230,700}) end, -- 18 + function() playSample('sine',{'A4',.75,240},{'E5',.85},'square',{'E5',1,220,720}) end, -- 19 + function() playSample('sine',{'A4',.70,230},{'E5',.90},'square',{'G5',1,210,740}) end, -- 20 },{__call=function(self,chain) if self[chain] then self[chain]() else - inst('bass',.626,'A4') + playSample('sine',{'A4',.626-.01*chain,430-10*chain}) local phase=(chain-21)%12 - inst('lead',1-((11-phase)/12)^2,40+phase) -- E4+ - inst('lead',1-((11-phase)/12)^2,45+phase) -- A4+ - inst('lead',1-(phase/12)^2, 52+phase) -- E5+ - inst('lead',1-(phase/12)^2, 57+phase) -- A5+ + playSample('square',{40+phase,1-((11-phase)/12)^2,400-10*chain,700+20*chain}) -- E4+ + playSample('square',{45+phase,1-((11-phase)/12)^2,400-10*chain,700+20*chain}) -- A4+ + playSample('square',{52+phase,1-(phase/12)^2,400-10*chain,700+20*chain}) -- E5+ + playSample('square',{57+phase,1-(phase/12)^2,400-10*chain,700+20*chain}) -- A5+ end end,__metatable=true}), - frenzy= function() SFX.play('frenzy') end, - allClear= function() SFX.play('clear_all') end, - suffocate= function() SFX.play('suffocate') end, - desuffocate= function() SFX.play('desuffocate') end, - reach= function() SFX.play('beep_rise') end, - notice= function() SFX.play('beep_notice') end, - win= function() SFX.play('win') end, - fail= function() SFX.play('fail') end, + frenzy= function() FMOD.playEffect('frenzy') end, + allClear= function() FMOD.playEffect('clear_all') end, + suffocate= function() FMOD.playEffect('suffocate') end, + desuffocate= function() FMOD.playEffect('desuffocate') end, + reach= function() FMOD.playEffect('beep_rise') end, + notice= function() FMOD.playEffect('beep_notice') end, + win= function() FMOD.playEffect('win') end, + fail= function() FMOD.playEffect('fail') end, } PP.scriptCmd={ } @@ -260,7 +258,7 @@ function PP:moveHand(action,A,B,C) if self.handX%1~=0 or self.handY%1~=0 then error("EUREKA! Decimal position") end if action=='rotate' then - self:playSound(C and 'initrotate' or 'rotate') + self:playSound(C and 'rotate_init' or 'rotate') self:checkLanding() end diff --git a/assets/game/rotsys_mino/trs.lua b/assets/game/rotsys_mino/trs.lua index 74589237..c0115fc2 100644 --- a/assets/game/rotsys_mino/trs.lua +++ b/assets/game/rotsys_mino/trs.lua @@ -203,7 +203,7 @@ TRS[6]={ C.direction=(C.direction+(dir=='R' and 1 or dir=='L' and 3 or dir=='F' and 2))%4 end if not transformed then - self:playSound(ifInit and 'initrotate' or 'rotate') + self:playSound(ifInit and 'rotate_init' or 'rotate') if self.settings.particles then self:createRotateEffect(dir,ifInit) end diff --git a/assets/gamefunc.lua b/assets/gamefunc.lua index ee16faa1..7241eec8 100644 --- a/assets/gamefunc.lua +++ b/assets/gamefunc.lua @@ -6,66 +6,41 @@ function sureCheck(event) end end -local _bgmPlaying,_bgmMode ----@param mode 'full'|'simp'|'base'|''|nil ----@param args? string -function playBgm(name,mode,args) - if not args then args='' end - - if bgmList[name][1] then - if not STRING.sArg(args,'-noProgress') then - PROGRESS.setBgmUnlocked(name,1) - end - BGM.play(bgmList[name],args) - else - if mode=='simp' and PROGRESS.getBgmUnlocked(name)==2 then - mode='base' - else - if not STRING.sArg(args,'-noProgress') then - PROGRESS.setBgmUnlocked(name,mode=='simp' and 1 or 2) - end - end - if mode=='simp' then - BGM.play(bgmList[name].base,args) - elseif mode=='base' then - if not TABLE.compare(BGM.getPlaying(),bgmList[name].full) then - BGM.play(bgmList[name].full,args) - BGM.set(bgmList[name].add,'volume',0,0) - else - BGM.set(bgmList[name].add,'volume',0,1) - end - else -- if mode=='full' then - BGM.play(bgmList[name].full,args) - end - end - _bgmPlaying,_bgmMode=name,mode - if not STRING.sArg(args,'-keepEffects') then - BGM.set('all','highgain',1,.1) - BGM.set('all','lowgain',1,.1) - BGM.set('all','pitch',1,.1) - end +local _bgmPlaying ---@type string +---@param full? boolean +---@param noProgress? boolean +function playBgm(name,full,noProgress) + if name==_bgmPlaying then return end + if not noProgress then PROGRESS.setBgmUnlocked(name,1) end + FMOD.playMusic(name,not full and {param={"intensity",0,true}} or nil) + _bgmPlaying=name end function getBgm() - return _bgmPlaying,_bgmMode -end - -local trackNick={ - m='melody', - a='accompany', - d='decoration', - b='bass', - p='drum', - s='sfx', -} ----@param name string ----@param ... string m/a/d/b/p/s(N) ----@return string[] -function bgmPack(name,...) - local tracks={...} - for i=1,#tracks do - tracks[i]=name..'/'..trackNick[tracks[i]:sub(1,1)]..tracks[i]:sub(2) + return _bgmPlaying +end +function playSample(...) + local l={...} + local inst + for i=1,#l do + if type(l[i])=='string' then + inst=l[i]..'_wave' + elseif type(l[i])=='table' then + local note=l[i][1] + if type(note)=='string' then note=SFX.getTuneHeight(l[i][1]) end + local vol=l[i][2] or 1 + local len=l[i][3] or 420 + local rel=l[i][4] or 620 + local event=FMOD.playEffect(inst,{ + tune=note-33, + volume=vol, + param={'release',rel*1.0594630943592953^(note-33)}, + }) + TASK.new(function () + DEBUG.yieldT(len/1000) + event:stop(FMOD.FMOD_STUDIO_STOP_ALLOWFADEOUT) + end) + end end - return tracks end local interiorModeMeta={ diff --git a/assets/music/1980s.ogg b/assets/music/1980s.ogg deleted file mode 100644 index 26147ba7..00000000 Binary files a/assets/music/1980s.ogg and /dev/null differ diff --git a/assets/music/8-bit happiness/accompany.ogg b/assets/music/8-bit happiness/accompany.ogg deleted file mode 100644 index b9a0991c..00000000 Binary files a/assets/music/8-bit happiness/accompany.ogg and /dev/null differ diff --git a/assets/music/8-bit happiness/bass.ogg b/assets/music/8-bit happiness/bass.ogg deleted file mode 100644 index 2bd978c2..00000000 Binary files a/assets/music/8-bit happiness/bass.ogg and /dev/null differ diff --git a/assets/music/8-bit happiness/drum.ogg b/assets/music/8-bit happiness/drum.ogg deleted file mode 100644 index 5d142ef7..00000000 Binary files a/assets/music/8-bit happiness/drum.ogg and /dev/null differ diff --git a/assets/music/8-bit happiness/melody.ogg b/assets/music/8-bit happiness/melody.ogg deleted file mode 100644 index dbf6eee7..00000000 Binary files a/assets/music/8-bit happiness/melody.ogg and /dev/null differ diff --git a/assets/music/8-bit happiness/sfx.ogg b/assets/music/8-bit happiness/sfx.ogg deleted file mode 100644 index 6389accc..00000000 Binary files a/assets/music/8-bit happiness/sfx.ogg and /dev/null differ diff --git a/assets/music/8-bit sadness/bass.ogg b/assets/music/8-bit sadness/bass.ogg deleted file mode 100644 index 96fd3d89..00000000 Binary files a/assets/music/8-bit sadness/bass.ogg and /dev/null differ diff --git a/assets/music/8-bit sadness/decoration.ogg b/assets/music/8-bit sadness/decoration.ogg deleted file mode 100644 index 60c74488..00000000 Binary files a/assets/music/8-bit sadness/decoration.ogg and /dev/null differ diff --git a/assets/music/8-bit sadness/melody.ogg b/assets/music/8-bit sadness/melody.ogg deleted file mode 100644 index ec826534..00000000 Binary files a/assets/music/8-bit sadness/melody.ogg and /dev/null differ diff --git a/assets/music/8-bit sadness/sfx.ogg b/assets/music/8-bit sadness/sfx.ogg deleted file mode 100644 index df35c267..00000000 Binary files a/assets/music/8-bit sadness/sfx.ogg and /dev/null differ diff --git a/assets/music/battle/bass.ogg b/assets/music/battle/bass.ogg deleted file mode 100644 index 845f2843..00000000 Binary files a/assets/music/battle/bass.ogg and /dev/null differ diff --git a/assets/music/battle/decoration1.ogg b/assets/music/battle/decoration1.ogg deleted file mode 100644 index 823562de..00000000 Binary files a/assets/music/battle/decoration1.ogg and /dev/null differ diff --git a/assets/music/battle/decoration2.ogg b/assets/music/battle/decoration2.ogg deleted file mode 100644 index 8b85768c..00000000 Binary files a/assets/music/battle/decoration2.ogg and /dev/null differ diff --git a/assets/music/battle/drum.ogg b/assets/music/battle/drum.ogg deleted file mode 100644 index 8754e286..00000000 Binary files a/assets/music/battle/drum.ogg and /dev/null differ diff --git a/assets/music/battle/melody.ogg b/assets/music/battle/melody.ogg deleted file mode 100644 index 8d81599a..00000000 Binary files a/assets/music/battle/melody.ogg and /dev/null differ diff --git a/assets/music/battle/sfx.ogg b/assets/music/battle/sfx.ogg deleted file mode 100644 index 4b1ba35d..00000000 Binary files a/assets/music/battle/sfx.ogg and /dev/null differ diff --git a/assets/music/beat5th/accompany1.ogg b/assets/music/beat5th/accompany1.ogg deleted file mode 100644 index 730a9b8d..00000000 Binary files a/assets/music/beat5th/accompany1.ogg and /dev/null differ diff --git a/assets/music/beat5th/accompany2.ogg b/assets/music/beat5th/accompany2.ogg deleted file mode 100644 index 04156946..00000000 Binary files a/assets/music/beat5th/accompany2.ogg and /dev/null differ diff --git a/assets/music/beat5th/bass.ogg b/assets/music/beat5th/bass.ogg deleted file mode 100644 index 904470af..00000000 Binary files a/assets/music/beat5th/bass.ogg and /dev/null differ diff --git a/assets/music/beat5th/decoration.ogg b/assets/music/beat5th/decoration.ogg deleted file mode 100644 index d028a517..00000000 Binary files a/assets/music/beat5th/decoration.ogg and /dev/null differ diff --git a/assets/music/beat5th/drum.ogg b/assets/music/beat5th/drum.ogg deleted file mode 100644 index 84c7ca12..00000000 Binary files a/assets/music/beat5th/drum.ogg and /dev/null differ diff --git a/assets/music/beat5th/melody1.ogg b/assets/music/beat5th/melody1.ogg deleted file mode 100644 index 81611ea5..00000000 Binary files a/assets/music/beat5th/melody1.ogg and /dev/null differ diff --git a/assets/music/beat5th/melody2.ogg b/assets/music/beat5th/melody2.ogg deleted file mode 100644 index 969f5836..00000000 Binary files a/assets/music/beat5th/melody2.ogg and /dev/null differ diff --git a/assets/music/blank orchestra.ogg b/assets/music/blank orchestra.ogg deleted file mode 100644 index a5efea4a..00000000 Binary files a/assets/music/blank orchestra.ogg and /dev/null differ diff --git a/assets/music/blank/bass.ogg b/assets/music/blank/bass.ogg deleted file mode 100644 index e620792e..00000000 Binary files a/assets/music/blank/bass.ogg and /dev/null differ diff --git a/assets/music/blank/decoration.ogg b/assets/music/blank/decoration.ogg deleted file mode 100644 index 75a811f4..00000000 Binary files a/assets/music/blank/decoration.ogg and /dev/null differ diff --git a/assets/music/blank/drum.ogg b/assets/music/blank/drum.ogg deleted file mode 100644 index e1f72428..00000000 Binary files a/assets/music/blank/drum.ogg and /dev/null differ diff --git a/assets/music/blank/melody.ogg b/assets/music/blank/melody.ogg deleted file mode 100644 index e5535941..00000000 Binary files a/assets/music/blank/melody.ogg and /dev/null differ diff --git a/assets/music/blox/bass.ogg b/assets/music/blox/bass.ogg deleted file mode 100644 index 5c675cdd..00000000 Binary files a/assets/music/blox/bass.ogg and /dev/null differ diff --git a/assets/music/blox/decoration1.ogg b/assets/music/blox/decoration1.ogg deleted file mode 100644 index 75eb1aa6..00000000 Binary files a/assets/music/blox/decoration1.ogg and /dev/null differ diff --git a/assets/music/blox/decoration2.ogg b/assets/music/blox/decoration2.ogg deleted file mode 100644 index 10f9477d..00000000 Binary files a/assets/music/blox/decoration2.ogg and /dev/null differ diff --git a/assets/music/blox/drum.ogg b/assets/music/blox/drum.ogg deleted file mode 100644 index 560fa89a..00000000 Binary files a/assets/music/blox/drum.ogg and /dev/null differ diff --git a/assets/music/blox/melody.ogg b/assets/music/blox/melody.ogg deleted file mode 100644 index 27bd2031..00000000 Binary files a/assets/music/blox/melody.ogg and /dev/null differ diff --git a/assets/music/blox/sfx.ogg b/assets/music/blox/sfx.ogg deleted file mode 100644 index a75fe084..00000000 Binary files a/assets/music/blox/sfx.ogg and /dev/null differ diff --git a/assets/music/distortion/accompany1.ogg b/assets/music/distortion/accompany1.ogg deleted file mode 100644 index 6404ed87..00000000 Binary files a/assets/music/distortion/accompany1.ogg and /dev/null differ diff --git a/assets/music/distortion/accompany2.ogg b/assets/music/distortion/accompany2.ogg deleted file mode 100644 index ae27052c..00000000 Binary files a/assets/music/distortion/accompany2.ogg and /dev/null differ diff --git a/assets/music/distortion/bass.ogg b/assets/music/distortion/bass.ogg deleted file mode 100644 index 3bdc7370..00000000 Binary files a/assets/music/distortion/bass.ogg and /dev/null differ diff --git a/assets/music/distortion/decoration.ogg b/assets/music/distortion/decoration.ogg deleted file mode 100644 index 0df69c0c..00000000 Binary files a/assets/music/distortion/decoration.ogg and /dev/null differ diff --git a/assets/music/distortion/melody.ogg b/assets/music/distortion/melody.ogg deleted file mode 100644 index 97902e23..00000000 Binary files a/assets/music/distortion/melody.ogg and /dev/null differ diff --git a/assets/music/distortion/sfx1.ogg b/assets/music/distortion/sfx1.ogg deleted file mode 100644 index d05dd72e..00000000 Binary files a/assets/music/distortion/sfx1.ogg and /dev/null differ diff --git a/assets/music/distortion/sfx2.ogg b/assets/music/distortion/sfx2.ogg deleted file mode 100644 index f3b0a31b..00000000 Binary files a/assets/music/distortion/sfx2.ogg and /dev/null differ diff --git a/assets/music/down/accompany.ogg b/assets/music/down/accompany.ogg deleted file mode 100644 index c5fc7df3..00000000 Binary files a/assets/music/down/accompany.ogg and /dev/null differ diff --git a/assets/music/down/bass1.ogg b/assets/music/down/bass1.ogg deleted file mode 100644 index 2ea5193c..00000000 Binary files a/assets/music/down/bass1.ogg and /dev/null differ diff --git a/assets/music/down/bass2.ogg b/assets/music/down/bass2.ogg deleted file mode 100644 index a2bb0383..00000000 Binary files a/assets/music/down/bass2.ogg and /dev/null differ diff --git a/assets/music/down/drum.ogg b/assets/music/down/drum.ogg deleted file mode 100644 index 86a3d918..00000000 Binary files a/assets/music/down/drum.ogg and /dev/null differ diff --git a/assets/music/down/melody.ogg b/assets/music/down/melody.ogg deleted file mode 100644 index 5c4435bd..00000000 Binary files a/assets/music/down/melody.ogg and /dev/null differ diff --git a/assets/music/down/sfx.ogg b/assets/music/down/sfx.ogg deleted file mode 100644 index f615a2ce..00000000 Binary files a/assets/music/down/sfx.ogg and /dev/null differ diff --git a/assets/music/dream/accompany.ogg b/assets/music/dream/accompany.ogg deleted file mode 100644 index 56feb1e9..00000000 Binary files a/assets/music/dream/accompany.ogg and /dev/null differ diff --git a/assets/music/dream/bass.ogg b/assets/music/dream/bass.ogg deleted file mode 100644 index 54ef616f..00000000 Binary files a/assets/music/dream/bass.ogg and /dev/null differ diff --git a/assets/music/dream/decoration.ogg b/assets/music/dream/decoration.ogg deleted file mode 100644 index fd556a47..00000000 Binary files a/assets/music/dream/decoration.ogg and /dev/null differ diff --git a/assets/music/dream/drum.ogg b/assets/music/dream/drum.ogg deleted file mode 100644 index f1d24689..00000000 Binary files a/assets/music/dream/drum.ogg and /dev/null differ diff --git a/assets/music/dream/melody.ogg b/assets/music/dream/melody.ogg deleted file mode 100644 index cf3db361..00000000 Binary files a/assets/music/dream/melody.ogg and /dev/null differ diff --git a/assets/music/dream/sfx.ogg b/assets/music/dream/sfx.ogg deleted file mode 100644 index eefe1aba..00000000 Binary files a/assets/music/dream/sfx.ogg and /dev/null differ diff --git a/assets/music/echo/bass1.ogg b/assets/music/echo/bass1.ogg deleted file mode 100644 index 119178b6..00000000 Binary files a/assets/music/echo/bass1.ogg and /dev/null differ diff --git a/assets/music/echo/bass2.ogg b/assets/music/echo/bass2.ogg deleted file mode 100644 index d7190a6a..00000000 Binary files a/assets/music/echo/bass2.ogg and /dev/null differ diff --git a/assets/music/echo/drum.ogg b/assets/music/echo/drum.ogg deleted file mode 100644 index f9a65100..00000000 Binary files a/assets/music/echo/drum.ogg and /dev/null differ diff --git a/assets/music/echo/melody1.ogg b/assets/music/echo/melody1.ogg deleted file mode 100644 index b3273f6f..00000000 Binary files a/assets/music/echo/melody1.ogg and /dev/null differ diff --git a/assets/music/echo/melody2.ogg b/assets/music/echo/melody2.ogg deleted file mode 100644 index 62384324..00000000 Binary files a/assets/music/echo/melody2.ogg and /dev/null differ diff --git a/assets/music/echo/sfx.ogg b/assets/music/echo/sfx.ogg deleted file mode 100644 index 7f99751f..00000000 Binary files a/assets/music/echo/sfx.ogg and /dev/null differ diff --git a/assets/music/empty.ogg b/assets/music/empty.ogg deleted file mode 100644 index 8d4ba0b6..00000000 Binary files a/assets/music/empty.ogg and /dev/null differ diff --git a/assets/music/exploration/accompany.ogg b/assets/music/exploration/accompany.ogg deleted file mode 100644 index 18cf1835..00000000 Binary files a/assets/music/exploration/accompany.ogg and /dev/null differ diff --git a/assets/music/exploration/bass1.ogg b/assets/music/exploration/bass1.ogg deleted file mode 100644 index 00981e9c..00000000 Binary files a/assets/music/exploration/bass1.ogg and /dev/null differ diff --git a/assets/music/exploration/bass2.ogg b/assets/music/exploration/bass2.ogg deleted file mode 100644 index f0f09c2b..00000000 Binary files a/assets/music/exploration/bass2.ogg and /dev/null differ diff --git a/assets/music/exploration/decoration.ogg b/assets/music/exploration/decoration.ogg deleted file mode 100644 index 4a18304e..00000000 Binary files a/assets/music/exploration/decoration.ogg and /dev/null differ diff --git a/assets/music/exploration/melody1.ogg b/assets/music/exploration/melody1.ogg deleted file mode 100644 index a707c109..00000000 Binary files a/assets/music/exploration/melody1.ogg and /dev/null differ diff --git a/assets/music/exploration/melody2.ogg b/assets/music/exploration/melody2.ogg deleted file mode 100644 index fc0860fc..00000000 Binary files a/assets/music/exploration/melody2.ogg and /dev/null differ diff --git a/assets/music/exploration/sfx.ogg b/assets/music/exploration/sfx.ogg deleted file mode 100644 index 0084fc23..00000000 Binary files a/assets/music/exploration/sfx.ogg and /dev/null differ diff --git a/assets/music/far/accompany.ogg b/assets/music/far/accompany.ogg deleted file mode 100644 index d25afde0..00000000 Binary files a/assets/music/far/accompany.ogg and /dev/null differ diff --git a/assets/music/far/bass.ogg b/assets/music/far/bass.ogg deleted file mode 100644 index 02a40f7d..00000000 Binary files a/assets/music/far/bass.ogg and /dev/null differ diff --git a/assets/music/far/decoration.ogg b/assets/music/far/decoration.ogg deleted file mode 100644 index b88720bd..00000000 Binary files a/assets/music/far/decoration.ogg and /dev/null differ diff --git a/assets/music/far/drum1.ogg b/assets/music/far/drum1.ogg deleted file mode 100644 index da541436..00000000 Binary files a/assets/music/far/drum1.ogg and /dev/null differ diff --git a/assets/music/far/drum2.ogg b/assets/music/far/drum2.ogg deleted file mode 100644 index 7fcd0fd4..00000000 Binary files a/assets/music/far/drum2.ogg and /dev/null differ diff --git a/assets/music/far/melody.ogg b/assets/music/far/melody.ogg deleted file mode 100644 index 1ad285a2..00000000 Binary files a/assets/music/far/melody.ogg and /dev/null differ diff --git a/assets/music/far/sfx.ogg b/assets/music/far/sfx.ogg deleted file mode 100644 index c53342ca..00000000 Binary files a/assets/music/far/sfx.ogg and /dev/null differ diff --git a/assets/music/gallery/accompany1.ogg b/assets/music/gallery/accompany1.ogg deleted file mode 100644 index 57460490..00000000 Binary files a/assets/music/gallery/accompany1.ogg and /dev/null differ diff --git a/assets/music/gallery/accompany2.ogg b/assets/music/gallery/accompany2.ogg deleted file mode 100644 index a197fb56..00000000 Binary files a/assets/music/gallery/accompany2.ogg and /dev/null differ diff --git a/assets/music/gallery/bass.ogg b/assets/music/gallery/bass.ogg deleted file mode 100644 index 79e86c9c..00000000 Binary files a/assets/music/gallery/bass.ogg and /dev/null differ diff --git a/assets/music/gallery/decoration.ogg b/assets/music/gallery/decoration.ogg deleted file mode 100644 index bd40772e..00000000 Binary files a/assets/music/gallery/decoration.ogg and /dev/null differ diff --git a/assets/music/gallery/drum.ogg b/assets/music/gallery/drum.ogg deleted file mode 100644 index a1f1f8ef..00000000 Binary files a/assets/music/gallery/drum.ogg and /dev/null differ diff --git a/assets/music/gallery/melody1.ogg b/assets/music/gallery/melody1.ogg deleted file mode 100644 index 77d3e127..00000000 Binary files a/assets/music/gallery/melody1.ogg and /dev/null differ diff --git a/assets/music/gallery/melody2.ogg b/assets/music/gallery/melody2.ogg deleted file mode 100644 index 32eeb4b5..00000000 Binary files a/assets/music/gallery/melody2.ogg and /dev/null differ diff --git a/assets/music/here/accompany1.ogg b/assets/music/here/accompany1.ogg deleted file mode 100644 index 9d35f31c..00000000 Binary files a/assets/music/here/accompany1.ogg and /dev/null differ diff --git a/assets/music/here/accompany2.ogg b/assets/music/here/accompany2.ogg deleted file mode 100644 index 7302bd7e..00000000 Binary files a/assets/music/here/accompany2.ogg and /dev/null differ diff --git a/assets/music/here/accompany3.ogg b/assets/music/here/accompany3.ogg deleted file mode 100644 index 02afa761..00000000 Binary files a/assets/music/here/accompany3.ogg and /dev/null differ diff --git a/assets/music/here/bass.ogg b/assets/music/here/bass.ogg deleted file mode 100644 index 26f7eb2a..00000000 Binary files a/assets/music/here/bass.ogg and /dev/null differ diff --git a/assets/music/here/decoration.ogg b/assets/music/here/decoration.ogg deleted file mode 100644 index 7a2008b5..00000000 Binary files a/assets/music/here/decoration.ogg and /dev/null differ diff --git a/assets/music/here/drum.ogg b/assets/music/here/drum.ogg deleted file mode 100644 index 9739edda..00000000 Binary files a/assets/music/here/drum.ogg and /dev/null differ diff --git a/assets/music/here/melody1.ogg b/assets/music/here/melody1.ogg deleted file mode 100644 index fb72cc6a..00000000 Binary files a/assets/music/here/melody1.ogg and /dev/null differ diff --git a/assets/music/here/melody2.ogg b/assets/music/here/melody2.ogg deleted file mode 100644 index e2595b04..00000000 Binary files a/assets/music/here/melody2.ogg and /dev/null differ diff --git a/assets/music/hope/bass.ogg b/assets/music/hope/bass.ogg deleted file mode 100644 index e1c48b19..00000000 Binary files a/assets/music/hope/bass.ogg and /dev/null differ diff --git a/assets/music/hope/decoration.ogg b/assets/music/hope/decoration.ogg deleted file mode 100644 index 4bc1f5c3..00000000 Binary files a/assets/music/hope/decoration.ogg and /dev/null differ diff --git a/assets/music/hope/drum.ogg b/assets/music/hope/drum.ogg deleted file mode 100644 index 8d97fe44..00000000 Binary files a/assets/music/hope/drum.ogg and /dev/null differ diff --git a/assets/music/hope/melody1.ogg b/assets/music/hope/melody1.ogg deleted file mode 100644 index c29729cc..00000000 Binary files a/assets/music/hope/melody1.ogg and /dev/null differ diff --git a/assets/music/hope/melody2.ogg b/assets/music/hope/melody2.ogg deleted file mode 100644 index 2421e18e..00000000 Binary files a/assets/music/hope/melody2.ogg and /dev/null differ diff --git a/assets/music/hope/sfx.ogg b/assets/music/hope/sfx.ogg deleted file mode 100644 index 1f9c2ceb..00000000 Binary files a/assets/music/hope/sfx.ogg and /dev/null differ diff --git a/assets/music/infinite/bass.ogg b/assets/music/infinite/bass.ogg deleted file mode 100644 index 9422c694..00000000 Binary files a/assets/music/infinite/bass.ogg and /dev/null differ diff --git a/assets/music/infinite/decoration.ogg b/assets/music/infinite/decoration.ogg deleted file mode 100644 index 96ba9b61..00000000 Binary files a/assets/music/infinite/decoration.ogg and /dev/null differ diff --git a/assets/music/infinite/drum.ogg b/assets/music/infinite/drum.ogg deleted file mode 100644 index 4b978dc8..00000000 Binary files a/assets/music/infinite/drum.ogg and /dev/null differ diff --git a/assets/music/infinite/melody1.ogg b/assets/music/infinite/melody1.ogg deleted file mode 100644 index 6ffe916c..00000000 Binary files a/assets/music/infinite/melody1.ogg and /dev/null differ diff --git a/assets/music/infinite/melody2.ogg b/assets/music/infinite/melody2.ogg deleted file mode 100644 index 54aad7ee..00000000 Binary files a/assets/music/infinite/melody2.ogg and /dev/null differ diff --git a/assets/music/infinitesimal/accompany1.ogg b/assets/music/infinitesimal/accompany1.ogg deleted file mode 100644 index bceaf126..00000000 Binary files a/assets/music/infinitesimal/accompany1.ogg and /dev/null differ diff --git a/assets/music/infinitesimal/accompany2.ogg b/assets/music/infinitesimal/accompany2.ogg deleted file mode 100644 index 4b6ad43f..00000000 Binary files a/assets/music/infinitesimal/accompany2.ogg and /dev/null differ diff --git a/assets/music/infinitesimal/accompany3.ogg b/assets/music/infinitesimal/accompany3.ogg deleted file mode 100644 index 123a39d2..00000000 Binary files a/assets/music/infinitesimal/accompany3.ogg and /dev/null differ diff --git a/assets/music/infinitesimal/bass1.ogg b/assets/music/infinitesimal/bass1.ogg deleted file mode 100644 index 14c3e373..00000000 Binary files a/assets/music/infinitesimal/bass1.ogg and /dev/null differ diff --git a/assets/music/infinitesimal/bass2.ogg b/assets/music/infinitesimal/bass2.ogg deleted file mode 100644 index 83da6fba..00000000 Binary files a/assets/music/infinitesimal/bass2.ogg and /dev/null differ diff --git a/assets/music/infinitesimal/drum.ogg b/assets/music/infinitesimal/drum.ogg deleted file mode 100644 index ee93b0a9..00000000 Binary files a/assets/music/infinitesimal/drum.ogg and /dev/null differ diff --git a/assets/music/infinitesimal/melody1.ogg b/assets/music/infinitesimal/melody1.ogg deleted file mode 100644 index 412a4bf3..00000000 Binary files a/assets/music/infinitesimal/melody1.ogg and /dev/null differ diff --git a/assets/music/infinitesimal/melody2.ogg b/assets/music/infinitesimal/melody2.ogg deleted file mode 100644 index 20ee0a56..00000000 Binary files a/assets/music/infinitesimal/melody2.ogg and /dev/null differ diff --git a/assets/music/infinitesimal/sfx.ogg b/assets/music/infinitesimal/sfx.ogg deleted file mode 100644 index e3f859a3..00000000 Binary files a/assets/music/infinitesimal/sfx.ogg and /dev/null differ diff --git a/assets/music/jazz nihilism.ogg b/assets/music/jazz nihilism.ogg deleted file mode 100644 index fc5f41d4..00000000 Binary files a/assets/music/jazz nihilism.ogg and /dev/null differ diff --git a/assets/music/lounge/accompany.ogg b/assets/music/lounge/accompany.ogg deleted file mode 100644 index 0261a5f4..00000000 Binary files a/assets/music/lounge/accompany.ogg and /dev/null differ diff --git a/assets/music/lounge/bass.ogg b/assets/music/lounge/bass.ogg deleted file mode 100644 index b8a13008..00000000 Binary files a/assets/music/lounge/bass.ogg and /dev/null differ diff --git a/assets/music/lounge/drum.ogg b/assets/music/lounge/drum.ogg deleted file mode 100644 index 8284dd75..00000000 Binary files a/assets/music/lounge/drum.ogg and /dev/null differ diff --git a/assets/music/lounge/melody.ogg b/assets/music/lounge/melody.ogg deleted file mode 100644 index eb7b7bbe..00000000 Binary files a/assets/music/lounge/melody.ogg and /dev/null differ diff --git a/assets/music/lounge/sfx.ogg b/assets/music/lounge/sfx.ogg deleted file mode 100644 index 8f215391..00000000 Binary files a/assets/music/lounge/sfx.ogg and /dev/null differ diff --git a/assets/music/minoes/accompany.ogg b/assets/music/minoes/accompany.ogg deleted file mode 100644 index 1f71faa4..00000000 Binary files a/assets/music/minoes/accompany.ogg and /dev/null differ diff --git a/assets/music/minoes/bass.ogg b/assets/music/minoes/bass.ogg deleted file mode 100644 index bf3a598b..00000000 Binary files a/assets/music/minoes/bass.ogg and /dev/null differ diff --git a/assets/music/minoes/decoration.ogg b/assets/music/minoes/decoration.ogg deleted file mode 100644 index 0938e5b6..00000000 Binary files a/assets/music/minoes/decoration.ogg and /dev/null differ diff --git a/assets/music/minoes/drum.ogg b/assets/music/minoes/drum.ogg deleted file mode 100644 index 5028568b..00000000 Binary files a/assets/music/minoes/drum.ogg and /dev/null differ diff --git a/assets/music/minoes/melody.ogg b/assets/music/minoes/melody.ogg deleted file mode 100644 index cda3cb82..00000000 Binary files a/assets/music/minoes/melody.ogg and /dev/null differ diff --git a/assets/music/minoes/sfx.ogg b/assets/music/minoes/sfx.ogg deleted file mode 100644 index f74c2a5f..00000000 Binary files a/assets/music/minoes/sfx.ogg and /dev/null differ diff --git a/assets/music/moonbeam/accompany.ogg b/assets/music/moonbeam/accompany.ogg deleted file mode 100644 index 54fde71a..00000000 Binary files a/assets/music/moonbeam/accompany.ogg and /dev/null differ diff --git a/assets/music/moonbeam/bass.ogg b/assets/music/moonbeam/bass.ogg deleted file mode 100644 index 71e521e4..00000000 Binary files a/assets/music/moonbeam/bass.ogg and /dev/null differ diff --git a/assets/music/moonbeam/drum.ogg b/assets/music/moonbeam/drum.ogg deleted file mode 100644 index 177a9600..00000000 Binary files a/assets/music/moonbeam/drum.ogg and /dev/null differ diff --git a/assets/music/moonbeam/melody.ogg b/assets/music/moonbeam/melody.ogg deleted file mode 100644 index a026d8c6..00000000 Binary files a/assets/music/moonbeam/melody.ogg and /dev/null differ diff --git a/assets/music/new era/accompany.ogg b/assets/music/new era/accompany.ogg deleted file mode 100644 index 0abdeabd..00000000 Binary files a/assets/music/new era/accompany.ogg and /dev/null differ diff --git a/assets/music/new era/bass.ogg b/assets/music/new era/bass.ogg deleted file mode 100644 index a7b86e9b..00000000 Binary files a/assets/music/new era/bass.ogg and /dev/null differ diff --git a/assets/music/new era/decoration.ogg b/assets/music/new era/decoration.ogg deleted file mode 100644 index 42cb4b75..00000000 Binary files a/assets/music/new era/decoration.ogg and /dev/null differ diff --git a/assets/music/new era/drum.ogg b/assets/music/new era/drum.ogg deleted file mode 100644 index 4f0e5f9d..00000000 Binary files a/assets/music/new era/drum.ogg and /dev/null differ diff --git a/assets/music/new era/melody.ogg b/assets/music/new era/melody.ogg deleted file mode 100644 index 03d0ea7d..00000000 Binary files a/assets/music/new era/melody.ogg and /dev/null differ diff --git a/assets/music/nil/accompany1.ogg b/assets/music/nil/accompany1.ogg deleted file mode 100644 index 4f54a3ef..00000000 Binary files a/assets/music/nil/accompany1.ogg and /dev/null differ diff --git a/assets/music/nil/accompany2.ogg b/assets/music/nil/accompany2.ogg deleted file mode 100644 index e6e13eaa..00000000 Binary files a/assets/music/nil/accompany2.ogg and /dev/null differ diff --git a/assets/music/nil/accompany3.ogg b/assets/music/nil/accompany3.ogg deleted file mode 100644 index 2af07223..00000000 Binary files a/assets/music/nil/accompany3.ogg and /dev/null differ diff --git a/assets/music/nil/bass1.ogg b/assets/music/nil/bass1.ogg deleted file mode 100644 index 749366b7..00000000 Binary files a/assets/music/nil/bass1.ogg and /dev/null differ diff --git a/assets/music/nil/bass2.ogg b/assets/music/nil/bass2.ogg deleted file mode 100644 index 9091d152..00000000 Binary files a/assets/music/nil/bass2.ogg and /dev/null differ diff --git a/assets/music/nil/decoration1.ogg b/assets/music/nil/decoration1.ogg deleted file mode 100644 index aa688ba7..00000000 Binary files a/assets/music/nil/decoration1.ogg and /dev/null differ diff --git a/assets/music/nil/decoration2.ogg b/assets/music/nil/decoration2.ogg deleted file mode 100644 index e614f15b..00000000 Binary files a/assets/music/nil/decoration2.ogg and /dev/null differ diff --git a/assets/music/nil/decoration3.ogg b/assets/music/nil/decoration3.ogg deleted file mode 100644 index d8f04fab..00000000 Binary files a/assets/music/nil/decoration3.ogg and /dev/null differ diff --git a/assets/music/nil/melody1.ogg b/assets/music/nil/melody1.ogg deleted file mode 100644 index fefd8326..00000000 Binary files a/assets/music/nil/melody1.ogg and /dev/null differ diff --git a/assets/music/nil/melody2.ogg b/assets/music/nil/melody2.ogg deleted file mode 100644 index 22391be5..00000000 Binary files a/assets/music/nil/melody2.ogg and /dev/null differ diff --git a/assets/music/nil/sfx.ogg b/assets/music/nil/sfx.ogg deleted file mode 100644 index 94f561be..00000000 Binary files a/assets/music/nil/sfx.ogg and /dev/null differ diff --git a/assets/music/none/accompany.ogg b/assets/music/none/accompany.ogg deleted file mode 100644 index cc0ef2b0..00000000 Binary files a/assets/music/none/accompany.ogg and /dev/null differ diff --git a/assets/music/none/bass.ogg b/assets/music/none/bass.ogg deleted file mode 100644 index 06505560..00000000 Binary files a/assets/music/none/bass.ogg and /dev/null differ diff --git a/assets/music/none/decoration.ogg b/assets/music/none/decoration.ogg deleted file mode 100644 index 1da759cc..00000000 Binary files a/assets/music/none/decoration.ogg and /dev/null differ diff --git a/assets/music/none/drum.ogg b/assets/music/none/drum.ogg deleted file mode 100644 index 25c8b6ee..00000000 Binary files a/assets/music/none/drum.ogg and /dev/null differ diff --git a/assets/music/none/melody1.ogg b/assets/music/none/melody1.ogg deleted file mode 100644 index 2ae06e10..00000000 Binary files a/assets/music/none/melody1.ogg and /dev/null differ diff --git a/assets/music/none/melody2.ogg b/assets/music/none/melody2.ogg deleted file mode 100644 index 5e1382df..00000000 Binary files a/assets/music/none/melody2.ogg and /dev/null differ diff --git a/assets/music/none/melody3.ogg b/assets/music/none/melody3.ogg deleted file mode 100644 index 43efc73c..00000000 Binary files a/assets/music/none/melody3.ogg and /dev/null differ diff --git a/assets/music/none/sfx.ogg b/assets/music/none/sfx.ogg deleted file mode 100644 index e8abf77a..00000000 Binary files a/assets/music/none/sfx.ogg and /dev/null differ diff --git a/assets/music/null/accompany1.ogg b/assets/music/null/accompany1.ogg deleted file mode 100644 index 0efb9474..00000000 Binary files a/assets/music/null/accompany1.ogg and /dev/null differ diff --git a/assets/music/null/accompany2.ogg b/assets/music/null/accompany2.ogg deleted file mode 100644 index 8dc89672..00000000 Binary files a/assets/music/null/accompany2.ogg and /dev/null differ diff --git a/assets/music/null/accompany3.ogg b/assets/music/null/accompany3.ogg deleted file mode 100644 index 95b5f6b1..00000000 Binary files a/assets/music/null/accompany3.ogg and /dev/null differ diff --git a/assets/music/null/bass.ogg b/assets/music/null/bass.ogg deleted file mode 100644 index 76946395..00000000 Binary files a/assets/music/null/bass.ogg and /dev/null differ diff --git a/assets/music/null/melody1.ogg b/assets/music/null/melody1.ogg deleted file mode 100644 index 6a89cc8e..00000000 Binary files a/assets/music/null/melody1.ogg and /dev/null differ diff --git a/assets/music/null/melody2.ogg b/assets/music/null/melody2.ogg deleted file mode 100644 index b2bf3b21..00000000 Binary files a/assets/music/null/melody2.ogg and /dev/null differ diff --git a/assets/music/overzero/accompany.ogg b/assets/music/overzero/accompany.ogg deleted file mode 100644 index bc198ebf..00000000 Binary files a/assets/music/overzero/accompany.ogg and /dev/null differ diff --git a/assets/music/overzero/bass.ogg b/assets/music/overzero/bass.ogg deleted file mode 100644 index f5f780f4..00000000 Binary files a/assets/music/overzero/bass.ogg and /dev/null differ diff --git a/assets/music/overzero/decoration.ogg b/assets/music/overzero/decoration.ogg deleted file mode 100644 index dfe03c52..00000000 Binary files a/assets/music/overzero/decoration.ogg and /dev/null differ diff --git a/assets/music/overzero/drum.ogg b/assets/music/overzero/drum.ogg deleted file mode 100644 index 10b10b0b..00000000 Binary files a/assets/music/overzero/drum.ogg and /dev/null differ diff --git a/assets/music/overzero/melody.ogg b/assets/music/overzero/melody.ogg deleted file mode 100644 index 4cee5bb6..00000000 Binary files a/assets/music/overzero/melody.ogg and /dev/null differ diff --git a/assets/music/overzero/sfx.ogg b/assets/music/overzero/sfx.ogg deleted file mode 100644 index b85afec9..00000000 Binary files a/assets/music/overzero/sfx.ogg and /dev/null differ diff --git a/assets/music/oxygen/accompany.ogg b/assets/music/oxygen/accompany.ogg deleted file mode 100644 index 6b2f09d5..00000000 Binary files a/assets/music/oxygen/accompany.ogg and /dev/null differ diff --git a/assets/music/oxygen/bass.ogg b/assets/music/oxygen/bass.ogg deleted file mode 100644 index 8edae40c..00000000 Binary files a/assets/music/oxygen/bass.ogg and /dev/null differ diff --git a/assets/music/oxygen/decoration.ogg b/assets/music/oxygen/decoration.ogg deleted file mode 100644 index 1065ae4f..00000000 Binary files a/assets/music/oxygen/decoration.ogg and /dev/null differ diff --git a/assets/music/oxygen/drum.ogg b/assets/music/oxygen/drum.ogg deleted file mode 100644 index 5b43ade9..00000000 Binary files a/assets/music/oxygen/drum.ogg and /dev/null differ diff --git a/assets/music/oxygen/melody.ogg b/assets/music/oxygen/melody.ogg deleted file mode 100644 index 558427c8..00000000 Binary files a/assets/music/oxygen/melody.ogg and /dev/null differ diff --git a/assets/music/oxygen/sfx.ogg b/assets/music/oxygen/sfx.ogg deleted file mode 100644 index 6e192c87..00000000 Binary files a/assets/music/oxygen/sfx.ogg and /dev/null differ diff --git a/assets/music/peak/bass.ogg b/assets/music/peak/bass.ogg deleted file mode 100644 index 4f7c0e7c..00000000 Binary files a/assets/music/peak/bass.ogg and /dev/null differ diff --git a/assets/music/peak/decoration.ogg b/assets/music/peak/decoration.ogg deleted file mode 100644 index ac419a37..00000000 Binary files a/assets/music/peak/decoration.ogg and /dev/null differ diff --git a/assets/music/peak/drum.ogg b/assets/music/peak/drum.ogg deleted file mode 100644 index 711c10f7..00000000 Binary files a/assets/music/peak/drum.ogg and /dev/null differ diff --git a/assets/music/peak/melody.ogg b/assets/music/peak/melody.ogg deleted file mode 100644 index 85e88be1..00000000 Binary files a/assets/music/peak/melody.ogg and /dev/null differ diff --git a/assets/music/peak/sfx.ogg b/assets/music/peak/sfx.ogg deleted file mode 100644 index da09ac5f..00000000 Binary files a/assets/music/peak/sfx.ogg and /dev/null differ diff --git a/assets/music/pressure/accompany.ogg b/assets/music/pressure/accompany.ogg deleted file mode 100644 index a58b3827..00000000 Binary files a/assets/music/pressure/accompany.ogg and /dev/null differ diff --git a/assets/music/pressure/bass.ogg b/assets/music/pressure/bass.ogg deleted file mode 100644 index ea910ad7..00000000 Binary files a/assets/music/pressure/bass.ogg and /dev/null differ diff --git a/assets/music/pressure/decoration.ogg b/assets/music/pressure/decoration.ogg deleted file mode 100644 index 23bb352d..00000000 Binary files a/assets/music/pressure/decoration.ogg and /dev/null differ diff --git a/assets/music/pressure/drum1.ogg b/assets/music/pressure/drum1.ogg deleted file mode 100644 index 422c46ed..00000000 Binary files a/assets/music/pressure/drum1.ogg and /dev/null differ diff --git a/assets/music/pressure/drum2.ogg b/assets/music/pressure/drum2.ogg deleted file mode 100644 index 554e03fa..00000000 Binary files a/assets/music/pressure/drum2.ogg and /dev/null differ diff --git a/assets/music/pressure/melody1.ogg b/assets/music/pressure/melody1.ogg deleted file mode 100644 index 53e7e5dc..00000000 Binary files a/assets/music/pressure/melody1.ogg and /dev/null differ diff --git a/assets/music/pressure/melody2.ogg b/assets/music/pressure/melody2.ogg deleted file mode 100644 index 92376029..00000000 Binary files a/assets/music/pressure/melody2.ogg and /dev/null differ diff --git a/assets/music/propel/accompany1.ogg b/assets/music/propel/accompany1.ogg deleted file mode 100644 index 7963b48e..00000000 Binary files a/assets/music/propel/accompany1.ogg and /dev/null differ diff --git a/assets/music/propel/accompany2.ogg b/assets/music/propel/accompany2.ogg deleted file mode 100644 index a674bcb0..00000000 Binary files a/assets/music/propel/accompany2.ogg and /dev/null differ diff --git a/assets/music/propel/accompany3.ogg b/assets/music/propel/accompany3.ogg deleted file mode 100644 index f1217306..00000000 Binary files a/assets/music/propel/accompany3.ogg and /dev/null differ diff --git a/assets/music/propel/bass1.ogg b/assets/music/propel/bass1.ogg deleted file mode 100644 index 3735a6cd..00000000 Binary files a/assets/music/propel/bass1.ogg and /dev/null differ diff --git a/assets/music/propel/bass2.ogg b/assets/music/propel/bass2.ogg deleted file mode 100644 index 23c353d2..00000000 Binary files a/assets/music/propel/bass2.ogg and /dev/null differ diff --git a/assets/music/propel/bass3.ogg b/assets/music/propel/bass3.ogg deleted file mode 100644 index 061126e5..00000000 Binary files a/assets/music/propel/bass3.ogg and /dev/null differ diff --git a/assets/music/propel/drum.ogg b/assets/music/propel/drum.ogg deleted file mode 100644 index 9ba7e911..00000000 Binary files a/assets/music/propel/drum.ogg and /dev/null differ diff --git a/assets/music/propel/melody.ogg b/assets/music/propel/melody.ogg deleted file mode 100644 index df725874..00000000 Binary files a/assets/music/propel/melody.ogg and /dev/null differ diff --git a/assets/music/push/accompany.ogg b/assets/music/push/accompany.ogg deleted file mode 100644 index 8e12a706..00000000 Binary files a/assets/music/push/accompany.ogg and /dev/null differ diff --git a/assets/music/push/bass.ogg b/assets/music/push/bass.ogg deleted file mode 100644 index b442dcae..00000000 Binary files a/assets/music/push/bass.ogg and /dev/null differ diff --git a/assets/music/push/decoration.ogg b/assets/music/push/decoration.ogg deleted file mode 100644 index e5b8ef87..00000000 Binary files a/assets/music/push/decoration.ogg and /dev/null differ diff --git a/assets/music/push/melody.ogg b/assets/music/push/melody.ogg deleted file mode 100644 index 6934ca48..00000000 Binary files a/assets/music/push/melody.ogg and /dev/null differ diff --git a/assets/music/push/sfx.ogg b/assets/music/push/sfx.ogg deleted file mode 100644 index 2a520cf9..00000000 Binary files a/assets/music/push/sfx.ogg and /dev/null differ diff --git a/assets/music/race remix.ogg b/assets/music/race remix.ogg deleted file mode 100644 index 060b0cbb..00000000 Binary files a/assets/music/race remix.ogg and /dev/null differ diff --git a/assets/music/race/accompany1.ogg b/assets/music/race/accompany1.ogg deleted file mode 100644 index c8ebeceb..00000000 Binary files a/assets/music/race/accompany1.ogg and /dev/null differ diff --git a/assets/music/race/accompany2.ogg b/assets/music/race/accompany2.ogg deleted file mode 100644 index fdd826d9..00000000 Binary files a/assets/music/race/accompany2.ogg and /dev/null differ diff --git a/assets/music/race/decoration.ogg b/assets/music/race/decoration.ogg deleted file mode 100644 index f3f305b5..00000000 Binary files a/assets/music/race/decoration.ogg and /dev/null differ diff --git a/assets/music/race/drum.ogg b/assets/music/race/drum.ogg deleted file mode 100644 index f6f1b0c7..00000000 Binary files a/assets/music/race/drum.ogg and /dev/null differ diff --git a/assets/music/race/melody.ogg b/assets/music/race/melody.ogg deleted file mode 100644 index bdf2392d..00000000 Binary files a/assets/music/race/melody.ogg and /dev/null differ diff --git a/assets/music/reason/accompany1.ogg b/assets/music/reason/accompany1.ogg deleted file mode 100644 index fa75b3e5..00000000 Binary files a/assets/music/reason/accompany1.ogg and /dev/null differ diff --git a/assets/music/reason/accompany2.ogg b/assets/music/reason/accompany2.ogg deleted file mode 100644 index 17723041..00000000 Binary files a/assets/music/reason/accompany2.ogg and /dev/null differ diff --git a/assets/music/reason/bass.ogg b/assets/music/reason/bass.ogg deleted file mode 100644 index cf5cc6db..00000000 Binary files a/assets/music/reason/bass.ogg and /dev/null differ diff --git a/assets/music/reason/drum.ogg b/assets/music/reason/drum.ogg deleted file mode 100644 index 357bb779..00000000 Binary files a/assets/music/reason/drum.ogg and /dev/null differ diff --git a/assets/music/reason/melody.ogg b/assets/music/reason/melody.ogg deleted file mode 100644 index f25ca838..00000000 Binary files a/assets/music/reason/melody.ogg and /dev/null differ diff --git a/assets/music/rectification/accompany1.ogg b/assets/music/rectification/accompany1.ogg deleted file mode 100644 index 50e2a266..00000000 Binary files a/assets/music/rectification/accompany1.ogg and /dev/null differ diff --git a/assets/music/rectification/accompany2.ogg b/assets/music/rectification/accompany2.ogg deleted file mode 100644 index 1ca0f83b..00000000 Binary files a/assets/music/rectification/accompany2.ogg and /dev/null differ diff --git a/assets/music/rectification/bass.ogg b/assets/music/rectification/bass.ogg deleted file mode 100644 index 3b7759d5..00000000 Binary files a/assets/music/rectification/bass.ogg and /dev/null differ diff --git a/assets/music/rectification/decoration.ogg b/assets/music/rectification/decoration.ogg deleted file mode 100644 index 54bca605..00000000 Binary files a/assets/music/rectification/decoration.ogg and /dev/null differ diff --git a/assets/music/rectification/drum.ogg b/assets/music/rectification/drum.ogg deleted file mode 100644 index 5688976c..00000000 Binary files a/assets/music/rectification/drum.ogg and /dev/null differ diff --git a/assets/music/rectification/melody.ogg b/assets/music/rectification/melody.ogg deleted file mode 100644 index 50b475f5..00000000 Binary files a/assets/music/rectification/melody.ogg and /dev/null differ diff --git a/assets/music/reminiscence/bass.ogg b/assets/music/reminiscence/bass.ogg deleted file mode 100644 index febfac52..00000000 Binary files a/assets/music/reminiscence/bass.ogg and /dev/null differ diff --git a/assets/music/reminiscence/drum.ogg b/assets/music/reminiscence/drum.ogg deleted file mode 100644 index 93f8b606..00000000 Binary files a/assets/music/reminiscence/drum.ogg and /dev/null differ diff --git a/assets/music/reminiscence/melody1.ogg b/assets/music/reminiscence/melody1.ogg deleted file mode 100644 index 545f3960..00000000 Binary files a/assets/music/reminiscence/melody1.ogg and /dev/null differ diff --git a/assets/music/reminiscence/melody2.ogg b/assets/music/reminiscence/melody2.ogg deleted file mode 100644 index 95f2cacb..00000000 Binary files a/assets/music/reminiscence/melody2.ogg and /dev/null differ diff --git a/assets/music/reminiscence/melody3.ogg b/assets/music/reminiscence/melody3.ogg deleted file mode 100644 index 3afbf523..00000000 Binary files a/assets/music/reminiscence/melody3.ogg and /dev/null differ diff --git a/assets/music/sakura.ogg b/assets/music/sakura.ogg deleted file mode 100644 index 3f35efe1..00000000 Binary files a/assets/music/sakura.ogg and /dev/null differ diff --git a/assets/music/secret7th remix.ogg b/assets/music/secret7th remix.ogg deleted file mode 100644 index 3570164e..00000000 Binary files a/assets/music/secret7th remix.ogg and /dev/null differ diff --git a/assets/music/secret7th/accompany.ogg b/assets/music/secret7th/accompany.ogg deleted file mode 100644 index df1e0fc1..00000000 Binary files a/assets/music/secret7th/accompany.ogg and /dev/null differ diff --git a/assets/music/secret7th/bass.ogg b/assets/music/secret7th/bass.ogg deleted file mode 100644 index 12ccf8f3..00000000 Binary files a/assets/music/secret7th/bass.ogg and /dev/null differ diff --git a/assets/music/secret7th/drum.ogg b/assets/music/secret7th/drum.ogg deleted file mode 100644 index f561e9fb..00000000 Binary files a/assets/music/secret7th/drum.ogg and /dev/null differ diff --git a/assets/music/secret7th/melody1.ogg b/assets/music/secret7th/melody1.ogg deleted file mode 100644 index bbeae801..00000000 Binary files a/assets/music/secret7th/melody1.ogg and /dev/null differ diff --git a/assets/music/secret7th/melody2.ogg b/assets/music/secret7th/melody2.ogg deleted file mode 100644 index ff769ef3..00000000 Binary files a/assets/music/secret7th/melody2.ogg and /dev/null differ diff --git a/assets/music/secret7th/sfx.ogg b/assets/music/secret7th/sfx.ogg deleted file mode 100644 index 70b98cd0..00000000 Binary files a/assets/music/secret7th/sfx.ogg and /dev/null differ diff --git a/assets/music/secret8th remix/accompany.ogg b/assets/music/secret8th remix/accompany.ogg deleted file mode 100644 index 275c8465..00000000 Binary files a/assets/music/secret8th remix/accompany.ogg and /dev/null differ diff --git a/assets/music/secret8th remix/bass1.ogg b/assets/music/secret8th remix/bass1.ogg deleted file mode 100644 index 9f7189b3..00000000 Binary files a/assets/music/secret8th remix/bass1.ogg and /dev/null differ diff --git a/assets/music/secret8th remix/bass2.ogg b/assets/music/secret8th remix/bass2.ogg deleted file mode 100644 index ef88f8d8..00000000 Binary files a/assets/music/secret8th remix/bass2.ogg and /dev/null differ diff --git a/assets/music/secret8th remix/drum.ogg b/assets/music/secret8th remix/drum.ogg deleted file mode 100644 index 5b2a46b6..00000000 Binary files a/assets/music/secret8th remix/drum.ogg and /dev/null differ diff --git a/assets/music/secret8th remix/melody1.ogg b/assets/music/secret8th remix/melody1.ogg deleted file mode 100644 index fc9ce247..00000000 Binary files a/assets/music/secret8th remix/melody1.ogg and /dev/null differ diff --git a/assets/music/secret8th remix/melody2.ogg b/assets/music/secret8th remix/melody2.ogg deleted file mode 100644 index 71189b2a..00000000 Binary files a/assets/music/secret8th remix/melody2.ogg and /dev/null differ diff --git a/assets/music/secret8th remix/melody3.ogg b/assets/music/secret8th remix/melody3.ogg deleted file mode 100644 index d968e558..00000000 Binary files a/assets/music/secret8th remix/melody3.ogg and /dev/null differ diff --git a/assets/music/secret8th remix/melody4.ogg b/assets/music/secret8th remix/melody4.ogg deleted file mode 100644 index 0d8b3c45..00000000 Binary files a/assets/music/secret8th remix/melody4.ogg and /dev/null differ diff --git a/assets/music/secret8th remix/sfx.ogg b/assets/music/secret8th remix/sfx.ogg deleted file mode 100644 index 94736cb8..00000000 Binary files a/assets/music/secret8th remix/sfx.ogg and /dev/null differ diff --git a/assets/music/secret8th/bass.ogg b/assets/music/secret8th/bass.ogg deleted file mode 100644 index ace8de54..00000000 Binary files a/assets/music/secret8th/bass.ogg and /dev/null differ diff --git a/assets/music/secret8th/drum1.ogg b/assets/music/secret8th/drum1.ogg deleted file mode 100644 index a5a68d1a..00000000 Binary files a/assets/music/secret8th/drum1.ogg and /dev/null differ diff --git a/assets/music/secret8th/drum2.ogg b/assets/music/secret8th/drum2.ogg deleted file mode 100644 index 93f533b9..00000000 Binary files a/assets/music/secret8th/drum2.ogg and /dev/null differ diff --git a/assets/music/secret8th/melody1.ogg b/assets/music/secret8th/melody1.ogg deleted file mode 100644 index 2e75afcd..00000000 Binary files a/assets/music/secret8th/melody1.ogg and /dev/null differ diff --git a/assets/music/secret8th/melody2.ogg b/assets/music/secret8th/melody2.ogg deleted file mode 100644 index 5c407e68..00000000 Binary files a/assets/music/secret8th/melody2.ogg and /dev/null differ diff --git a/assets/music/secret8th/melody3.ogg b/assets/music/secret8th/melody3.ogg deleted file mode 100644 index eaa7bd73..00000000 Binary files a/assets/music/secret8th/melody3.ogg and /dev/null differ diff --git a/assets/music/shift/accompany.ogg b/assets/music/shift/accompany.ogg deleted file mode 100644 index 1f880618..00000000 Binary files a/assets/music/shift/accompany.ogg and /dev/null differ diff --git a/assets/music/shift/bass.ogg b/assets/music/shift/bass.ogg deleted file mode 100644 index 87c6bc59..00000000 Binary files a/assets/music/shift/bass.ogg and /dev/null differ diff --git a/assets/music/shift/drum.ogg b/assets/music/shift/drum.ogg deleted file mode 100644 index 84716096..00000000 Binary files a/assets/music/shift/drum.ogg and /dev/null differ diff --git a/assets/music/shift/melody1.ogg b/assets/music/shift/melody1.ogg deleted file mode 100644 index 0b676a7f..00000000 Binary files a/assets/music/shift/melody1.ogg and /dev/null differ diff --git a/assets/music/shift/melody2.ogg b/assets/music/shift/melody2.ogg deleted file mode 100644 index b1cf72c7..00000000 Binary files a/assets/music/shift/melody2.ogg and /dev/null differ diff --git a/assets/music/shift/melody3.ogg b/assets/music/shift/melody3.ogg deleted file mode 100644 index 4617b47d..00000000 Binary files a/assets/music/shift/melody3.ogg and /dev/null differ diff --git a/assets/music/shift/sfx.ogg b/assets/music/shift/sfx.ogg deleted file mode 100644 index dc0c7920..00000000 Binary files a/assets/music/shift/sfx.ogg and /dev/null differ diff --git a/assets/music/shining terminal/bass1.ogg b/assets/music/shining terminal/bass1.ogg deleted file mode 100644 index a70c31c9..00000000 Binary files a/assets/music/shining terminal/bass1.ogg and /dev/null differ diff --git a/assets/music/shining terminal/bass2.ogg b/assets/music/shining terminal/bass2.ogg deleted file mode 100644 index d7ec920a..00000000 Binary files a/assets/music/shining terminal/bass2.ogg and /dev/null differ diff --git a/assets/music/shining terminal/decoration.ogg b/assets/music/shining terminal/decoration.ogg deleted file mode 100644 index 653a8577..00000000 Binary files a/assets/music/shining terminal/decoration.ogg and /dev/null differ diff --git a/assets/music/shining terminal/drum1.ogg b/assets/music/shining terminal/drum1.ogg deleted file mode 100644 index f73ff8fa..00000000 Binary files a/assets/music/shining terminal/drum1.ogg and /dev/null differ diff --git a/assets/music/shining terminal/drum2.ogg b/assets/music/shining terminal/drum2.ogg deleted file mode 100644 index 145c9112..00000000 Binary files a/assets/music/shining terminal/drum2.ogg and /dev/null differ diff --git a/assets/music/shining terminal/melody1.ogg b/assets/music/shining terminal/melody1.ogg deleted file mode 100644 index e7ca8b31..00000000 Binary files a/assets/music/shining terminal/melody1.ogg and /dev/null differ diff --git a/assets/music/shining terminal/melody2.ogg b/assets/music/shining terminal/melody2.ogg deleted file mode 100644 index 61d0c0af..00000000 Binary files a/assets/music/shining terminal/melody2.ogg and /dev/null differ diff --git a/assets/music/shining terminal/sfx.ogg b/assets/music/shining terminal/sfx.ogg deleted file mode 100644 index 8c70a222..00000000 Binary files a/assets/music/shining terminal/sfx.ogg and /dev/null differ diff --git a/assets/music/sine/accompany1.ogg b/assets/music/sine/accompany1.ogg deleted file mode 100644 index d2cb3740..00000000 Binary files a/assets/music/sine/accompany1.ogg and /dev/null differ diff --git a/assets/music/sine/accompany2.ogg b/assets/music/sine/accompany2.ogg deleted file mode 100644 index f4d8cba7..00000000 Binary files a/assets/music/sine/accompany2.ogg and /dev/null differ diff --git a/assets/music/sine/bass.ogg b/assets/music/sine/bass.ogg deleted file mode 100644 index 2e3a4d2d..00000000 Binary files a/assets/music/sine/bass.ogg and /dev/null differ diff --git a/assets/music/sine/drum.ogg b/assets/music/sine/drum.ogg deleted file mode 100644 index b0b1bacd..00000000 Binary files a/assets/music/sine/drum.ogg and /dev/null differ diff --git a/assets/music/sine/melody1.ogg b/assets/music/sine/melody1.ogg deleted file mode 100644 index 848071c4..00000000 Binary files a/assets/music/sine/melody1.ogg and /dev/null differ diff --git a/assets/music/sine/melody2.ogg b/assets/music/sine/melody2.ogg deleted file mode 100644 index d6f2e709..00000000 Binary files a/assets/music/sine/melody2.ogg and /dev/null differ diff --git a/assets/music/space/accompany.ogg b/assets/music/space/accompany.ogg deleted file mode 100644 index ee544e27..00000000 Binary files a/assets/music/space/accompany.ogg and /dev/null differ diff --git a/assets/music/space/bass.ogg b/assets/music/space/bass.ogg deleted file mode 100644 index 28e50903..00000000 Binary files a/assets/music/space/bass.ogg and /dev/null differ diff --git a/assets/music/space/decoration.ogg b/assets/music/space/decoration.ogg deleted file mode 100644 index a418da8f..00000000 Binary files a/assets/music/space/decoration.ogg and /dev/null differ diff --git a/assets/music/space/melody1.ogg b/assets/music/space/melody1.ogg deleted file mode 100644 index a22ff5a6..00000000 Binary files a/assets/music/space/melody1.ogg and /dev/null differ diff --git a/assets/music/space/melody2.ogg b/assets/music/space/melody2.ogg deleted file mode 100644 index 54ed7e4a..00000000 Binary files a/assets/music/space/melody2.ogg and /dev/null differ diff --git a/assets/music/spring festival/accompany.ogg b/assets/music/spring festival/accompany.ogg deleted file mode 100644 index 3960a2ce..00000000 Binary files a/assets/music/spring festival/accompany.ogg and /dev/null differ diff --git a/assets/music/spring festival/bass.ogg b/assets/music/spring festival/bass.ogg deleted file mode 100644 index 650b048d..00000000 Binary files a/assets/music/spring festival/bass.ogg and /dev/null differ diff --git a/assets/music/spring festival/drum1.ogg b/assets/music/spring festival/drum1.ogg deleted file mode 100644 index fc756e3a..00000000 Binary files a/assets/music/spring festival/drum1.ogg and /dev/null differ diff --git a/assets/music/spring festival/drum2.ogg b/assets/music/spring festival/drum2.ogg deleted file mode 100644 index 0af10c07..00000000 Binary files a/assets/music/spring festival/drum2.ogg and /dev/null differ diff --git a/assets/music/spring festival/melody.ogg b/assets/music/spring festival/melody.ogg deleted file mode 100644 index 8287cd4f..00000000 Binary files a/assets/music/spring festival/melody.ogg and /dev/null differ diff --git a/assets/music/storm/accompany.ogg b/assets/music/storm/accompany.ogg deleted file mode 100644 index 4cfa51b4..00000000 Binary files a/assets/music/storm/accompany.ogg and /dev/null differ diff --git a/assets/music/storm/bass.ogg b/assets/music/storm/bass.ogg deleted file mode 100644 index 29fe0f21..00000000 Binary files a/assets/music/storm/bass.ogg and /dev/null differ diff --git a/assets/music/storm/drum1.ogg b/assets/music/storm/drum1.ogg deleted file mode 100644 index 334f1deb..00000000 Binary files a/assets/music/storm/drum1.ogg and /dev/null differ diff --git a/assets/music/storm/drum2.ogg b/assets/music/storm/drum2.ogg deleted file mode 100644 index 871dabbd..00000000 Binary files a/assets/music/storm/drum2.ogg and /dev/null differ diff --git a/assets/music/storm/melody.ogg b/assets/music/storm/melody.ogg deleted file mode 100644 index 93a76310..00000000 Binary files a/assets/music/storm/melody.ogg and /dev/null differ diff --git a/assets/music/storm/sfx.ogg b/assets/music/storm/sfx.ogg deleted file mode 100644 index da270fd1..00000000 Binary files a/assets/music/storm/sfx.ogg and /dev/null differ diff --git a/assets/music/subspace/bass.ogg b/assets/music/subspace/bass.ogg deleted file mode 100644 index 7c63558d..00000000 Binary files a/assets/music/subspace/bass.ogg and /dev/null differ diff --git a/assets/music/subspace/drum1.ogg b/assets/music/subspace/drum1.ogg deleted file mode 100644 index 8d4d0181..00000000 Binary files a/assets/music/subspace/drum1.ogg and /dev/null differ diff --git a/assets/music/subspace/drum2.ogg b/assets/music/subspace/drum2.ogg deleted file mode 100644 index a1286f2e..00000000 Binary files a/assets/music/subspace/drum2.ogg and /dev/null differ diff --git a/assets/music/subspace/melody1.ogg b/assets/music/subspace/melody1.ogg deleted file mode 100644 index 5a86fe53..00000000 Binary files a/assets/music/subspace/melody1.ogg and /dev/null differ diff --git a/assets/music/subspace/melody2.ogg b/assets/music/subspace/melody2.ogg deleted file mode 100644 index 7d0b34e5..00000000 Binary files a/assets/music/subspace/melody2.ogg and /dev/null differ diff --git a/assets/music/subzero/accompany1.ogg b/assets/music/subzero/accompany1.ogg deleted file mode 100644 index de2c51fc..00000000 Binary files a/assets/music/subzero/accompany1.ogg and /dev/null differ diff --git a/assets/music/subzero/accompany2.ogg b/assets/music/subzero/accompany2.ogg deleted file mode 100644 index 669fa04c..00000000 Binary files a/assets/music/subzero/accompany2.ogg and /dev/null differ diff --git a/assets/music/subzero/accompany3.ogg b/assets/music/subzero/accompany3.ogg deleted file mode 100644 index 15862dfd..00000000 Binary files a/assets/music/subzero/accompany3.ogg and /dev/null differ diff --git a/assets/music/subzero/accompany4.ogg b/assets/music/subzero/accompany4.ogg deleted file mode 100644 index 533b482a..00000000 Binary files a/assets/music/subzero/accompany4.ogg and /dev/null differ diff --git a/assets/music/subzero/bass1.ogg b/assets/music/subzero/bass1.ogg deleted file mode 100644 index 1b113357..00000000 Binary files a/assets/music/subzero/bass1.ogg and /dev/null differ diff --git a/assets/music/subzero/bass2.ogg b/assets/music/subzero/bass2.ogg deleted file mode 100644 index c7563ded..00000000 Binary files a/assets/music/subzero/bass2.ogg and /dev/null differ diff --git a/assets/music/subzero/bass3.ogg b/assets/music/subzero/bass3.ogg deleted file mode 100644 index 8b6d1bfa..00000000 Binary files a/assets/music/subzero/bass3.ogg and /dev/null differ diff --git a/assets/music/subzero/drum.ogg b/assets/music/subzero/drum.ogg deleted file mode 100644 index d5bfd5a4..00000000 Binary files a/assets/music/subzero/drum.ogg and /dev/null differ diff --git a/assets/music/subzero/melody1.ogg b/assets/music/subzero/melody1.ogg deleted file mode 100644 index 6c15f9c2..00000000 Binary files a/assets/music/subzero/melody1.ogg and /dev/null differ diff --git a/assets/music/subzero/melody2.ogg b/assets/music/subzero/melody2.ogg deleted file mode 100644 index 65e7e67e..00000000 Binary files a/assets/music/subzero/melody2.ogg and /dev/null differ diff --git a/assets/music/subzero/sfx.ogg b/assets/music/subzero/sfx.ogg deleted file mode 100644 index 0135b879..00000000 Binary files a/assets/music/subzero/sfx.ogg and /dev/null differ diff --git a/assets/music/sugar fairy/accompany.ogg b/assets/music/sugar fairy/accompany.ogg deleted file mode 100644 index 6f99f301..00000000 Binary files a/assets/music/sugar fairy/accompany.ogg and /dev/null differ diff --git a/assets/music/sugar fairy/bass.ogg b/assets/music/sugar fairy/bass.ogg deleted file mode 100644 index 070c2b17..00000000 Binary files a/assets/music/sugar fairy/bass.ogg and /dev/null differ diff --git a/assets/music/sugar fairy/drum.ogg b/assets/music/sugar fairy/drum.ogg deleted file mode 100644 index 40bec3f5..00000000 Binary files a/assets/music/sugar fairy/drum.ogg and /dev/null differ diff --git a/assets/music/sugar fairy/melody.ogg b/assets/music/sugar fairy/melody.ogg deleted file mode 100644 index 81b96079..00000000 Binary files a/assets/music/sugar fairy/melody.ogg and /dev/null differ diff --git a/assets/music/super7th.ogg b/assets/music/super7th.ogg deleted file mode 100644 index 9984d8bc..00000000 Binary files a/assets/music/super7th.ogg and /dev/null differ diff --git a/assets/music/supercritical/accompany.ogg b/assets/music/supercritical/accompany.ogg deleted file mode 100644 index 2d302c17..00000000 Binary files a/assets/music/supercritical/accompany.ogg and /dev/null differ diff --git a/assets/music/supercritical/bass.ogg b/assets/music/supercritical/bass.ogg deleted file mode 100644 index db529012..00000000 Binary files a/assets/music/supercritical/bass.ogg and /dev/null differ diff --git a/assets/music/supercritical/decoration.ogg b/assets/music/supercritical/decoration.ogg deleted file mode 100644 index 49a7ab00..00000000 Binary files a/assets/music/supercritical/decoration.ogg and /dev/null differ diff --git a/assets/music/supercritical/drum1.ogg b/assets/music/supercritical/drum1.ogg deleted file mode 100644 index b97fd2bc..00000000 Binary files a/assets/music/supercritical/drum1.ogg and /dev/null differ diff --git a/assets/music/supercritical/drum2.ogg b/assets/music/supercritical/drum2.ogg deleted file mode 100644 index f73eb159..00000000 Binary files a/assets/music/supercritical/drum2.ogg and /dev/null differ diff --git a/assets/music/supercritical/melody.ogg b/assets/music/supercritical/melody.ogg deleted file mode 100644 index 4025c5cd..00000000 Binary files a/assets/music/supercritical/melody.ogg and /dev/null differ diff --git a/assets/music/there/accompany1.ogg b/assets/music/there/accompany1.ogg deleted file mode 100644 index 50620602..00000000 Binary files a/assets/music/there/accompany1.ogg and /dev/null differ diff --git a/assets/music/there/accompany2.ogg b/assets/music/there/accompany2.ogg deleted file mode 100644 index ab93cacc..00000000 Binary files a/assets/music/there/accompany2.ogg and /dev/null differ diff --git a/assets/music/there/bass.ogg b/assets/music/there/bass.ogg deleted file mode 100644 index 61bbf141..00000000 Binary files a/assets/music/there/bass.ogg and /dev/null differ diff --git a/assets/music/there/decoration1.ogg b/assets/music/there/decoration1.ogg deleted file mode 100644 index e03a6fc1..00000000 Binary files a/assets/music/there/decoration1.ogg and /dev/null differ diff --git a/assets/music/there/decoration2.ogg b/assets/music/there/decoration2.ogg deleted file mode 100644 index 57f00288..00000000 Binary files a/assets/music/there/decoration2.ogg and /dev/null differ diff --git a/assets/music/there/decoration3.ogg b/assets/music/there/decoration3.ogg deleted file mode 100644 index 78debf65..00000000 Binary files a/assets/music/there/decoration3.ogg and /dev/null differ diff --git a/assets/music/there/drum.ogg b/assets/music/there/drum.ogg deleted file mode 100644 index a4fd3ab7..00000000 Binary files a/assets/music/there/drum.ogg and /dev/null differ diff --git a/assets/music/there/melody1.ogg b/assets/music/there/melody1.ogg deleted file mode 100644 index b072dce0..00000000 Binary files a/assets/music/there/melody1.ogg and /dev/null differ diff --git a/assets/music/there/melody2.ogg b/assets/music/there/melody2.ogg deleted file mode 100644 index b86b0535..00000000 Binary files a/assets/music/there/melody2.ogg and /dev/null differ diff --git a/assets/music/there/sfx.ogg b/assets/music/there/sfx.ogg deleted file mode 100644 index ea06f0f3..00000000 Binary files a/assets/music/there/sfx.ogg and /dev/null differ diff --git a/assets/music/truth/accompany.ogg b/assets/music/truth/accompany.ogg deleted file mode 100644 index 9e514fd7..00000000 Binary files a/assets/music/truth/accompany.ogg and /dev/null differ diff --git a/assets/music/truth/bass.ogg b/assets/music/truth/bass.ogg deleted file mode 100644 index 2b94d997..00000000 Binary files a/assets/music/truth/bass.ogg and /dev/null differ diff --git a/assets/music/truth/drum.ogg b/assets/music/truth/drum.ogg deleted file mode 100644 index d985b44a..00000000 Binary files a/assets/music/truth/drum.ogg and /dev/null differ diff --git a/assets/music/truth/melody1.ogg b/assets/music/truth/melody1.ogg deleted file mode 100644 index db1c0dee..00000000 Binary files a/assets/music/truth/melody1.ogg and /dev/null differ diff --git a/assets/music/truth/melody2.ogg b/assets/music/truth/melody2.ogg deleted file mode 100644 index 02171d80..00000000 Binary files a/assets/music/truth/melody2.ogg and /dev/null differ diff --git a/assets/music/truth/sfx1.ogg b/assets/music/truth/sfx1.ogg deleted file mode 100644 index c12df962..00000000 Binary files a/assets/music/truth/sfx1.ogg and /dev/null differ diff --git a/assets/music/truth/sfx2.ogg b/assets/music/truth/sfx2.ogg deleted file mode 100644 index 54ed8217..00000000 Binary files a/assets/music/truth/sfx2.ogg and /dev/null differ diff --git a/assets/music/vacuum/accompany.ogg b/assets/music/vacuum/accompany.ogg deleted file mode 100644 index 92d3ab00..00000000 Binary files a/assets/music/vacuum/accompany.ogg and /dev/null differ diff --git a/assets/music/vacuum/bass.ogg b/assets/music/vacuum/bass.ogg deleted file mode 100644 index e4656052..00000000 Binary files a/assets/music/vacuum/bass.ogg and /dev/null differ diff --git a/assets/music/vacuum/drum.ogg b/assets/music/vacuum/drum.ogg deleted file mode 100644 index 41c454ea..00000000 Binary files a/assets/music/vacuum/drum.ogg and /dev/null differ diff --git a/assets/music/vacuum/melody1.ogg b/assets/music/vacuum/melody1.ogg deleted file mode 100644 index 20dbe5a4..00000000 Binary files a/assets/music/vacuum/melody1.ogg and /dev/null differ diff --git a/assets/music/vacuum/melody2.ogg b/assets/music/vacuum/melody2.ogg deleted file mode 100644 index e84dc17a..00000000 Binary files a/assets/music/vacuum/melody2.ogg and /dev/null differ diff --git a/assets/music/vacuum/melody3.ogg b/assets/music/vacuum/melody3.ogg deleted file mode 100644 index ba8c8c33..00000000 Binary files a/assets/music/vacuum/melody3.ogg and /dev/null differ diff --git a/assets/music/vacuum/sfx.ogg b/assets/music/vacuum/sfx.ogg deleted file mode 100644 index d76f26b5..00000000 Binary files a/assets/music/vacuum/sfx.ogg and /dev/null differ diff --git a/assets/music/vanifish/accompany1.ogg b/assets/music/vanifish/accompany1.ogg deleted file mode 100644 index b3945fe2..00000000 Binary files a/assets/music/vanifish/accompany1.ogg and /dev/null differ diff --git a/assets/music/vanifish/accompany2.ogg b/assets/music/vanifish/accompany2.ogg deleted file mode 100644 index d08fbc23..00000000 Binary files a/assets/music/vanifish/accompany2.ogg and /dev/null differ diff --git a/assets/music/vanifish/accompany3.ogg b/assets/music/vanifish/accompany3.ogg deleted file mode 100644 index 597741b4..00000000 Binary files a/assets/music/vanifish/accompany3.ogg and /dev/null differ diff --git a/assets/music/vanifish/bass.ogg b/assets/music/vanifish/bass.ogg deleted file mode 100644 index 67d8278b..00000000 Binary files a/assets/music/vanifish/bass.ogg and /dev/null differ diff --git a/assets/music/vanifish/drum.ogg b/assets/music/vanifish/drum.ogg deleted file mode 100644 index cd878042..00000000 Binary files a/assets/music/vanifish/drum.ogg and /dev/null differ diff --git a/assets/music/vanifish/melody.ogg b/assets/music/vanifish/melody.ogg deleted file mode 100644 index 9cfa80a6..00000000 Binary files a/assets/music/vanifish/melody.ogg and /dev/null differ diff --git a/assets/music/vanifish/sfx.ogg b/assets/music/vanifish/sfx.ogg deleted file mode 100644 index b2850061..00000000 Binary files a/assets/music/vanifish/sfx.ogg and /dev/null differ diff --git a/assets/music/vapor/accompany.ogg b/assets/music/vapor/accompany.ogg deleted file mode 100644 index bb874b73..00000000 Binary files a/assets/music/vapor/accompany.ogg and /dev/null differ diff --git a/assets/music/vapor/bass.ogg b/assets/music/vapor/bass.ogg deleted file mode 100644 index 3285fd94..00000000 Binary files a/assets/music/vapor/bass.ogg and /dev/null differ diff --git a/assets/music/vapor/drum.ogg b/assets/music/vapor/drum.ogg deleted file mode 100644 index 27ba5e56..00000000 Binary files a/assets/music/vapor/drum.ogg and /dev/null differ diff --git a/assets/music/vapor/melody.ogg b/assets/music/vapor/melody.ogg deleted file mode 100644 index 7240521c..00000000 Binary files a/assets/music/vapor/melody.ogg and /dev/null differ diff --git a/assets/music/vapor/sfx.ogg b/assets/music/vapor/sfx.ogg deleted file mode 100644 index e1dd5eb2..00000000 Binary files a/assets/music/vapor/sfx.ogg and /dev/null differ diff --git a/assets/music/venus/accompany.ogg b/assets/music/venus/accompany.ogg deleted file mode 100644 index 53862700..00000000 Binary files a/assets/music/venus/accompany.ogg and /dev/null differ diff --git a/assets/music/venus/bass.ogg b/assets/music/venus/bass.ogg deleted file mode 100644 index 975d74f9..00000000 Binary files a/assets/music/venus/bass.ogg and /dev/null differ diff --git a/assets/music/venus/drum.ogg b/assets/music/venus/drum.ogg deleted file mode 100644 index fa6ad8c8..00000000 Binary files a/assets/music/venus/drum.ogg and /dev/null differ diff --git a/assets/music/venus/melody.ogg b/assets/music/venus/melody.ogg deleted file mode 100644 index faeb3757..00000000 Binary files a/assets/music/venus/melody.ogg and /dev/null differ diff --git a/assets/music/venus/sfx.ogg b/assets/music/venus/sfx.ogg deleted file mode 100644 index e462b601..00000000 Binary files a/assets/music/venus/sfx.ogg and /dev/null differ diff --git a/assets/music/warped/accompany.ogg b/assets/music/warped/accompany.ogg deleted file mode 100644 index ff10d01a..00000000 Binary files a/assets/music/warped/accompany.ogg and /dev/null differ diff --git a/assets/music/warped/bass.ogg b/assets/music/warped/bass.ogg deleted file mode 100644 index 09127c7e..00000000 Binary files a/assets/music/warped/bass.ogg and /dev/null differ diff --git a/assets/music/warped/drum.ogg b/assets/music/warped/drum.ogg deleted file mode 100644 index 20efdfc0..00000000 Binary files a/assets/music/warped/drum.ogg and /dev/null differ diff --git a/assets/music/warped/melody1.ogg b/assets/music/warped/melody1.ogg deleted file mode 100644 index fa74af42..00000000 Binary files a/assets/music/warped/melody1.ogg and /dev/null differ diff --git a/assets/music/warped/melody2.ogg b/assets/music/warped/melody2.ogg deleted file mode 100644 index 21a7e61d..00000000 Binary files a/assets/music/warped/melody2.ogg and /dev/null differ diff --git a/assets/music/warped/sfx.ogg b/assets/music/warped/sfx.ogg deleted file mode 100644 index eb1dbd80..00000000 Binary files a/assets/music/warped/sfx.ogg and /dev/null differ diff --git a/assets/music/waterfall/accompany.ogg b/assets/music/waterfall/accompany.ogg deleted file mode 100644 index 6984e0ab..00000000 Binary files a/assets/music/waterfall/accompany.ogg and /dev/null differ diff --git a/assets/music/waterfall/bass.ogg b/assets/music/waterfall/bass.ogg deleted file mode 100644 index f4e2db88..00000000 Binary files a/assets/music/waterfall/bass.ogg and /dev/null differ diff --git a/assets/music/waterfall/drum.ogg b/assets/music/waterfall/drum.ogg deleted file mode 100644 index 836f6906..00000000 Binary files a/assets/music/waterfall/drum.ogg and /dev/null differ diff --git a/assets/music/waterfall/melody1.ogg b/assets/music/waterfall/melody1.ogg deleted file mode 100644 index 44ef91b9..00000000 Binary files a/assets/music/waterfall/melody1.ogg and /dev/null differ diff --git a/assets/music/waterfall/melody2.ogg b/assets/music/waterfall/melody2.ogg deleted file mode 100644 index 00c2b332..00000000 Binary files a/assets/music/waterfall/melody2.ogg and /dev/null differ diff --git a/assets/music/waterfall/sfx.ogg b/assets/music/waterfall/sfx.ogg deleted file mode 100644 index 6ddadb16..00000000 Binary files a/assets/music/waterfall/sfx.ogg and /dev/null differ diff --git a/assets/music/way/bass.ogg b/assets/music/way/bass.ogg deleted file mode 100644 index 3d46e1d5..00000000 Binary files a/assets/music/way/bass.ogg and /dev/null differ diff --git a/assets/music/way/drum.ogg b/assets/music/way/drum.ogg deleted file mode 100644 index 5c3405a1..00000000 Binary files a/assets/music/way/drum.ogg and /dev/null differ diff --git a/assets/music/way/melody1.ogg b/assets/music/way/melody1.ogg deleted file mode 100644 index f6ce0b99..00000000 Binary files a/assets/music/way/melody1.ogg and /dev/null differ diff --git a/assets/music/way/melody2.ogg b/assets/music/way/melody2.ogg deleted file mode 100644 index 80a35882..00000000 Binary files a/assets/music/way/melody2.ogg and /dev/null differ diff --git a/assets/music/xmas/accompany1.ogg b/assets/music/xmas/accompany1.ogg deleted file mode 100644 index 58bb4659..00000000 Binary files a/assets/music/xmas/accompany1.ogg and /dev/null differ diff --git a/assets/music/xmas/accompany2.ogg b/assets/music/xmas/accompany2.ogg deleted file mode 100644 index 6f0ce99b..00000000 Binary files a/assets/music/xmas/accompany2.ogg and /dev/null differ diff --git a/assets/music/xmas/bass.ogg b/assets/music/xmas/bass.ogg deleted file mode 100644 index 8d8f33a8..00000000 Binary files a/assets/music/xmas/bass.ogg and /dev/null differ diff --git a/assets/music/xmas/drum.ogg b/assets/music/xmas/drum.ogg deleted file mode 100644 index fdc6f772..00000000 Binary files a/assets/music/xmas/drum.ogg and /dev/null differ diff --git a/assets/music/xmas/melody.ogg b/assets/music/xmas/melody.ogg deleted file mode 100644 index 67eaea3f..00000000 Binary files a/assets/music/xmas/melody.ogg and /dev/null differ diff --git a/assets/progress.lua b/assets/progress.lua index fdb087f5..18cb392e 100644 --- a/assets/progress.lua +++ b/assets/progress.lua @@ -205,7 +205,7 @@ function PROGRESS.transcendTo(n) coverAlpha=0, noDefaultDraw=true, init=function() - BGM.stop() + FMOD.stopMusic() end, update=function(_,t) if WAIT.state=='wait' and t>=2.6 then @@ -237,11 +237,11 @@ function PROGRESS.transcendTo(n) if t<1.626 then sumT=sumT+dt if sumT>=.1 then - BGM.set('all','seek',BGM.tell()-.1) + FMOD.seekMusic(FMOD.tellMusic()-.1) sumT=sumT-.1 end - elseif t<2 and BGM.isPlaying() then - BGM.stop(0) + elseif t<2 and FMOD.getPlaying() then + FMOD.stopMusic(0) end if WAIT.state=='wait' and t>=2.6 then PROGRESS.setMain(3) @@ -290,7 +290,7 @@ function PROGRESS.quit() end, } elseif prgs.main<=4 then - BGM.stop() + FMOD.stopMusic() local t=1 WAIT.setDefaultDraw(NULL) WAIT{ @@ -399,7 +399,7 @@ function PROGRESS.setModeState(style,name,state,force) PROGRESS.save() if state==0 and state>orgState then if TASK.lock('minomap_unlockSound_background',2.6) then - SFX.play('map_unlock_background') + FMOD.playEffect('map_unlock_background') MSG.new('check',Text.new_level_unlocked,2.6) end end diff --git a/assets/sample/bass/1.ogg b/assets/sample/bass/1.ogg deleted file mode 100644 index 387669f9..00000000 Binary files a/assets/sample/bass/1.ogg and /dev/null differ diff --git a/assets/sample/bass/10.ogg b/assets/sample/bass/10.ogg deleted file mode 100644 index 970b4480..00000000 Binary files a/assets/sample/bass/10.ogg and /dev/null differ diff --git a/assets/sample/bass/11.ogg b/assets/sample/bass/11.ogg deleted file mode 100644 index c5bee6d5..00000000 Binary files a/assets/sample/bass/11.ogg and /dev/null differ diff --git a/assets/sample/bass/12.ogg b/assets/sample/bass/12.ogg deleted file mode 100644 index 59cfb10e..00000000 Binary files a/assets/sample/bass/12.ogg and /dev/null differ diff --git a/assets/sample/bass/13.ogg b/assets/sample/bass/13.ogg deleted file mode 100644 index 415727e3..00000000 Binary files a/assets/sample/bass/13.ogg and /dev/null differ diff --git a/assets/sample/bass/14.ogg b/assets/sample/bass/14.ogg deleted file mode 100644 index 743d43af..00000000 Binary files a/assets/sample/bass/14.ogg and /dev/null differ diff --git a/assets/sample/bass/15.ogg b/assets/sample/bass/15.ogg deleted file mode 100644 index 0ac755b0..00000000 Binary files a/assets/sample/bass/15.ogg and /dev/null differ diff --git a/assets/sample/bass/16.ogg b/assets/sample/bass/16.ogg deleted file mode 100644 index 7dee96d8..00000000 Binary files a/assets/sample/bass/16.ogg and /dev/null differ diff --git a/assets/sample/bass/17.ogg b/assets/sample/bass/17.ogg deleted file mode 100644 index 282c0d29..00000000 Binary files a/assets/sample/bass/17.ogg and /dev/null differ diff --git a/assets/sample/bass/18.ogg b/assets/sample/bass/18.ogg deleted file mode 100644 index 693580fc..00000000 Binary files a/assets/sample/bass/18.ogg and /dev/null differ diff --git a/assets/sample/bass/19.ogg b/assets/sample/bass/19.ogg deleted file mode 100644 index 4f859b24..00000000 Binary files a/assets/sample/bass/19.ogg and /dev/null differ diff --git a/assets/sample/bass/2.ogg b/assets/sample/bass/2.ogg deleted file mode 100644 index 53d570cf..00000000 Binary files a/assets/sample/bass/2.ogg and /dev/null differ diff --git a/assets/sample/bass/20.ogg b/assets/sample/bass/20.ogg deleted file mode 100644 index 0156068e..00000000 Binary files a/assets/sample/bass/20.ogg and /dev/null differ diff --git a/assets/sample/bass/21.ogg b/assets/sample/bass/21.ogg deleted file mode 100644 index f4596e0d..00000000 Binary files a/assets/sample/bass/21.ogg and /dev/null differ diff --git a/assets/sample/bass/22.ogg b/assets/sample/bass/22.ogg deleted file mode 100644 index a8531361..00000000 Binary files a/assets/sample/bass/22.ogg and /dev/null differ diff --git a/assets/sample/bass/23.ogg b/assets/sample/bass/23.ogg deleted file mode 100644 index 6aa0990a..00000000 Binary files a/assets/sample/bass/23.ogg and /dev/null differ diff --git a/assets/sample/bass/24.ogg b/assets/sample/bass/24.ogg deleted file mode 100644 index 20085fd0..00000000 Binary files a/assets/sample/bass/24.ogg and /dev/null differ diff --git a/assets/sample/bass/25.ogg b/assets/sample/bass/25.ogg deleted file mode 100644 index 3c85ed50..00000000 Binary files a/assets/sample/bass/25.ogg and /dev/null differ diff --git a/assets/sample/bass/26.ogg b/assets/sample/bass/26.ogg deleted file mode 100644 index b44eca46..00000000 Binary files a/assets/sample/bass/26.ogg and /dev/null differ diff --git a/assets/sample/bass/27.ogg b/assets/sample/bass/27.ogg deleted file mode 100644 index da8b1e4e..00000000 Binary files a/assets/sample/bass/27.ogg and /dev/null differ diff --git a/assets/sample/bass/28.ogg b/assets/sample/bass/28.ogg deleted file mode 100644 index c3307555..00000000 Binary files a/assets/sample/bass/28.ogg and /dev/null differ diff --git a/assets/sample/bass/3.ogg b/assets/sample/bass/3.ogg deleted file mode 100644 index f60b28ca..00000000 Binary files a/assets/sample/bass/3.ogg and /dev/null differ diff --git a/assets/sample/bass/4.ogg b/assets/sample/bass/4.ogg deleted file mode 100644 index fd9c9b21..00000000 Binary files a/assets/sample/bass/4.ogg and /dev/null differ diff --git a/assets/sample/bass/5.ogg b/assets/sample/bass/5.ogg deleted file mode 100644 index c5dd1c2e..00000000 Binary files a/assets/sample/bass/5.ogg and /dev/null differ diff --git a/assets/sample/bass/6.ogg b/assets/sample/bass/6.ogg deleted file mode 100644 index 812da23c..00000000 Binary files a/assets/sample/bass/6.ogg and /dev/null differ diff --git a/assets/sample/bass/7.ogg b/assets/sample/bass/7.ogg deleted file mode 100644 index 7c97936b..00000000 Binary files a/assets/sample/bass/7.ogg and /dev/null differ diff --git a/assets/sample/bass/8.ogg b/assets/sample/bass/8.ogg deleted file mode 100644 index 98f728ef..00000000 Binary files a/assets/sample/bass/8.ogg and /dev/null differ diff --git a/assets/sample/bass/9.ogg b/assets/sample/bass/9.ogg deleted file mode 100644 index ea6ae3aa..00000000 Binary files a/assets/sample/bass/9.ogg and /dev/null differ diff --git a/assets/sample/lead/1.ogg b/assets/sample/lead/1.ogg deleted file mode 100644 index f8bd74bb..00000000 Binary files a/assets/sample/lead/1.ogg and /dev/null differ diff --git a/assets/sample/lead/10.ogg b/assets/sample/lead/10.ogg deleted file mode 100644 index 00faea0f..00000000 Binary files a/assets/sample/lead/10.ogg and /dev/null differ diff --git a/assets/sample/lead/11.ogg b/assets/sample/lead/11.ogg deleted file mode 100644 index c04b2140..00000000 Binary files a/assets/sample/lead/11.ogg and /dev/null differ diff --git a/assets/sample/lead/12.ogg b/assets/sample/lead/12.ogg deleted file mode 100644 index 9642f006..00000000 Binary files a/assets/sample/lead/12.ogg and /dev/null differ diff --git a/assets/sample/lead/13.ogg b/assets/sample/lead/13.ogg deleted file mode 100644 index 26ae2ccd..00000000 Binary files a/assets/sample/lead/13.ogg and /dev/null differ diff --git a/assets/sample/lead/14.ogg b/assets/sample/lead/14.ogg deleted file mode 100644 index 2e42eed8..00000000 Binary files a/assets/sample/lead/14.ogg and /dev/null differ diff --git a/assets/sample/lead/15.ogg b/assets/sample/lead/15.ogg deleted file mode 100644 index 5d15516a..00000000 Binary files a/assets/sample/lead/15.ogg and /dev/null differ diff --git a/assets/sample/lead/16.ogg b/assets/sample/lead/16.ogg deleted file mode 100644 index 011663b8..00000000 Binary files a/assets/sample/lead/16.ogg and /dev/null differ diff --git a/assets/sample/lead/17.ogg b/assets/sample/lead/17.ogg deleted file mode 100644 index ada36265..00000000 Binary files a/assets/sample/lead/17.ogg and /dev/null differ diff --git a/assets/sample/lead/18.ogg b/assets/sample/lead/18.ogg deleted file mode 100644 index c48d24ae..00000000 Binary files a/assets/sample/lead/18.ogg and /dev/null differ diff --git a/assets/sample/lead/19.ogg b/assets/sample/lead/19.ogg deleted file mode 100644 index 7a4661e6..00000000 Binary files a/assets/sample/lead/19.ogg and /dev/null differ diff --git a/assets/sample/lead/2.ogg b/assets/sample/lead/2.ogg deleted file mode 100644 index bb954722..00000000 Binary files a/assets/sample/lead/2.ogg and /dev/null differ diff --git a/assets/sample/lead/20.ogg b/assets/sample/lead/20.ogg deleted file mode 100644 index 8f83f416..00000000 Binary files a/assets/sample/lead/20.ogg and /dev/null differ diff --git a/assets/sample/lead/21.ogg b/assets/sample/lead/21.ogg deleted file mode 100644 index d720d403..00000000 Binary files a/assets/sample/lead/21.ogg and /dev/null differ diff --git a/assets/sample/lead/22.ogg b/assets/sample/lead/22.ogg deleted file mode 100644 index d4a95cf6..00000000 Binary files a/assets/sample/lead/22.ogg and /dev/null differ diff --git a/assets/sample/lead/23.ogg b/assets/sample/lead/23.ogg deleted file mode 100644 index 1eee3b58..00000000 Binary files a/assets/sample/lead/23.ogg and /dev/null differ diff --git a/assets/sample/lead/24.ogg b/assets/sample/lead/24.ogg deleted file mode 100644 index 9cc05fe6..00000000 Binary files a/assets/sample/lead/24.ogg and /dev/null differ diff --git a/assets/sample/lead/25.ogg b/assets/sample/lead/25.ogg deleted file mode 100644 index e0bb7930..00000000 Binary files a/assets/sample/lead/25.ogg and /dev/null differ diff --git a/assets/sample/lead/26.ogg b/assets/sample/lead/26.ogg deleted file mode 100644 index 6ed1db52..00000000 Binary files a/assets/sample/lead/26.ogg and /dev/null differ diff --git a/assets/sample/lead/27.ogg b/assets/sample/lead/27.ogg deleted file mode 100644 index 4a836bb6..00000000 Binary files a/assets/sample/lead/27.ogg and /dev/null differ diff --git a/assets/sample/lead/28.ogg b/assets/sample/lead/28.ogg deleted file mode 100644 index 64301e7b..00000000 Binary files a/assets/sample/lead/28.ogg and /dev/null differ diff --git a/assets/sample/lead/3.ogg b/assets/sample/lead/3.ogg deleted file mode 100644 index f034c6d0..00000000 Binary files a/assets/sample/lead/3.ogg and /dev/null differ diff --git a/assets/sample/lead/4.ogg b/assets/sample/lead/4.ogg deleted file mode 100644 index a455b8b9..00000000 Binary files a/assets/sample/lead/4.ogg and /dev/null differ diff --git a/assets/sample/lead/5.ogg b/assets/sample/lead/5.ogg deleted file mode 100644 index 6bd054d5..00000000 Binary files a/assets/sample/lead/5.ogg and /dev/null differ diff --git a/assets/sample/lead/6.ogg b/assets/sample/lead/6.ogg deleted file mode 100644 index 6c0defbe..00000000 Binary files a/assets/sample/lead/6.ogg and /dev/null differ diff --git a/assets/sample/lead/7.ogg b/assets/sample/lead/7.ogg deleted file mode 100644 index 079e7a69..00000000 Binary files a/assets/sample/lead/7.ogg and /dev/null differ diff --git a/assets/sample/lead/8.ogg b/assets/sample/lead/8.ogg deleted file mode 100644 index 60256445..00000000 Binary files a/assets/sample/lead/8.ogg and /dev/null differ diff --git a/assets/sample/lead/9.ogg b/assets/sample/lead/9.ogg deleted file mode 100644 index 5dc09c72..00000000 Binary files a/assets/sample/lead/9.ogg and /dev/null differ diff --git a/assets/scene/app_15p.lua b/assets/scene/app_15p.lua index f62e8b68..aa327670 100644 --- a/assets/scene/app_15p.lua +++ b/assets/scene/app_15p.lua @@ -120,10 +120,10 @@ local function tapBoard(x,y,key) if checkBoard(b) then state=2 time=love.timer.getTime()-startTime - SFX.play('win') + FMOD.playEffect('win') return end - SFX.play('touch') + FMOD.playEffect('touch') end end end diff --git a/assets/scene/app_2048.lua b/assets/scene/app_2048.lua index 2591c7c8..369dcf0e 100644 --- a/assets/scene/app_2048.lua +++ b/assets/scene/app_2048.lua @@ -119,14 +119,14 @@ local function newTile() -- Die. state=2 - SFX.play(maxTile>=10 and 'win' or 'fail') + FMOD.playEffect(maxTile>=10 and 'win' or 'fail') end local function freshMaxTile() maxTile=maxTile+1 if maxTile==12 then skipper.cd=0 end - SFX.play('reach') + FMOD.playEffect('reach') table.insert(progress,("%s - %.3fs"):format(tileName[maxTile],love.timer.getTime()-startTime)) end local function squash(L) @@ -221,9 +221,9 @@ local function skip() skipper.cd=1024 skipper.used=true newTile() - SFX.play('hold') + FMOD.playEffect('hold') else - SFX.play('finesseError') + FMOD.playEffect('finesseError') end end end @@ -309,7 +309,7 @@ function scene.keyDown(key,isRep) if skipper.cd and skipper.cd>0 then skipper.cd=skipper.cd-1 if skipper.cd==0 then - SFX.play('spin_0') + FMOD.playEffect('spin_0') end end newTile() @@ -322,7 +322,7 @@ function scene.keyDown(key,isRep) } move=move+1 if not autoPressing then - SFX.play('touch') + FMOD.playEffect('touch') end end end diff --git a/assets/scene/app_AtoZ.lua b/assets/scene/app_AtoZ.lua index 54466c4c..bda5223f 100644 --- a/assets/scene/app_AtoZ.lua +++ b/assets/scene/app_AtoZ.lua @@ -57,18 +57,18 @@ function scene.keyDown(key,isRep) style='score', duration=.4, } - SFX.play('touch') + FMOD.playEffect('touch') if progress==2 then state=1 startTime=love.timer.getTime() elseif progress>#targetString then time=love.timer.getTime()-startTime state=2 - SFX.play('reach') + FMOD.playEffect('reach') end elseif progress>1 then mistake=mistake+1 - SFX.play('finesseError') + FMOD.playEffect('finesseError') end end elseif key=='left' or key=='right' then diff --git a/assets/scene/app_UTTT.lua b/assets/scene/app_UTTT.lua index a21f399a..a543ed86 100644 --- a/assets/scene/app_UTTT.lua +++ b/assets/scene/app_UTTT.lua @@ -58,7 +58,7 @@ local function full(L) end local function place(X,x) board[X][x]=round - SFX.play('touch') + FMOD.playEffect('touch') lastX,lastx=X,x curX,curx=nil placeTime=love.timer.getTime() @@ -66,7 +66,7 @@ local function place(X,x) score[X]=round if checkBoard(score,round) then gameover=round - SFX.play('win') + FMOD.playEffect('win') return else if full(score) then @@ -74,10 +74,10 @@ local function place(X,x) return end end - SFX.play('reach') + FMOD.playEffect('reach') else if full(board[X]) then - SFX.play('emit') + FMOD.playEffect('emit') score[X]=true if full(score) then gameover=true diff --git a/assets/scene/app_calc.lua b/assets/scene/app_calc.lua index d20b3725..789c3aee 100644 --- a/assets/scene/app_calc.lua +++ b/assets/scene/app_calc.lua @@ -17,12 +17,9 @@ end function scene.enter() BG.set('none') - BGM.stop() + FMOD.stopMusic() reg,val,sym=false,"0",false end -function scene.leave() - BGM.play() -end scene.mouseDown=NULL function scene.keyDown(key) diff --git a/assets/scene/app_cubefield.lua b/assets/scene/app_cubefield.lua index d2491388..b25f869a 100644 --- a/assets/scene/app_cubefield.lua +++ b/assets/scene/app_cubefield.lua @@ -37,9 +37,9 @@ local function hurt(i) speed=speed*.5 moveDir=0 score=floor(score) - SFX.play('clear_4') + FMOD.playEffect('clear_4') else - SFX.play('clear_2') + FMOD.playEffect('clear_2') end end @@ -185,7 +185,7 @@ function scene.update(dt) speed=speed+.2 end level=level+1 - SFX.play('warn_1') + FMOD.playEffect('warn_1') end sunH=sunH+.01 elseif menu==1 then diff --git a/assets/scene/app_dropper.lua b/assets/scene/app_dropper.lua index 8b23e10e..f7c2dc5c 100644 --- a/assets/scene/app_dropper.lua +++ b/assets/scene/app_dropper.lua @@ -50,7 +50,7 @@ function scene.keyDown(key,isRep) move.x=move.x-10 end end - SFX.play('hold') + FMOD.playEffect('hold') state='drop' elseif state=='dead' then move.x,move.y,move.l=1e99,0,0 @@ -77,7 +77,7 @@ function scene.update() if state=='move' then move.x=move.x+speed if speed<0 and move.x<=0 or speed>0 and move.x+move.l>=1280 then - SFX.play('lock') + FMOD.playEffect('lock') speed=-speed end elseif state=='drop' then @@ -88,9 +88,9 @@ function scene.update() state='die' else move.y=660 - SFX.play('clear_1') + FMOD.playEffect('clear_1') if floor>0 and move.x==base.x then - SFX.play('ren_mega') + FMOD.playEffect('ren_mega') end state='shorten' end diff --git a/assets/scene/app_dtw.lua b/assets/scene/app_dtw.lua index e1a3e440..dd6d26a7 100644 --- a/assets/scene/app_dtw.lua +++ b/assets/scene/app_dtw.lua @@ -212,7 +212,7 @@ local function touch(n) t=t:sub(1,p-1)..t:sub(p+1) if #t>0 then pos[1]=tonumber(t) - SFX.play('lock') + FMOD.playEffect('lock') else rem(pos,1) while #pos<7 do generator[mode]() end @@ -227,19 +227,19 @@ local function touch(n) end time=love.timer.getTime()-startTime state=2 - SFX.play('win') + FMOD.playEffect('win') else - SFX.play('reach',.5) + FMOD.playEffect('reach',{volume=.5}) end end height=height+120 - SFX.play('lock') + FMOD.playEffect('lock') end else time=love.timer.getTime()-startTime state=2 diePos=n - SFX.play('clear_2') + FMOD.playEffect('clear_2') end end function scene.keyDown(key,isRep) @@ -289,7 +289,7 @@ function scene.update(dt) rollSpeed=rollSpeed+.00355 if height<-120 then state=2 - SFX.play('clear_2') + FMOD.playEffect('clear_2') end else height=height*.6 diff --git a/assets/scene/app_link.lua b/assets/scene/app_link.lua index 679c7207..fce09f02 100644 --- a/assets/scene/app_link.lua +++ b/assets/scene/app_link.lua @@ -200,8 +200,8 @@ local function tap(x,y) -- Check win if field.remain==0 then if noComboBreak then - SFX.play('emit') - SFX.play('clear_4') + FMOD.playEffect('emit') + FMOD.playEffect('clear_4') TEXT:add("FULL COMBO",640,360,100,'beat',.626) comboTime=comboTime+3 score=floor(score*1.1) @@ -214,13 +214,13 @@ local function tap(x,y) level=level+1 if levels[level] then resetBoard() - SFX.play('reach') + FMOD.playEffect('reach') else state=2 - SFX.play('win') + FMOD.playEffect('win') end else - SFX.play( + FMOD.playEffect( combo<50 and 'clear_1' or combo<100 and 'clear_2' or 'clear_3',.8 @@ -229,12 +229,12 @@ local function tap(x,y) selX,selY=false,false else selX,selY=x,y - SFX.play('lock',.9) + FMOD.playEffect('lock',{volume=.9}) end else if field[y][x] and (x~=selX or y~=selY) then selX,selY=x,y - SFX.play('lock',.8) + FMOD.playEffect('lock',{volume=.8}) end end end diff --git a/assets/scene/app_mahjong.lua b/assets/scene/app_mahjong.lua index e775635f..13d73550 100644 --- a/assets/scene/app_mahjong.lua +++ b/assets/scene/app_mahjong.lua @@ -95,8 +95,8 @@ local function _throwCard() if hand[selected] and #pool<40 then ins(pool,rem(hand,selected)) table.sort(hand) - SFX.play('hold') - SFX.play('lock') + FMOD.playEffect('hold') + FMOD.playEffect('lock') if #pool<40 then ins(hand,(TABLE.popRandom(deck))) end diff --git a/assets/scene/app_memorize.lua b/assets/scene/app_memorize.lua index 12944580..101a8930 100644 --- a/assets/scene/app_memorize.lua +++ b/assets/scene/app_memorize.lua @@ -51,7 +51,7 @@ function scene.keyDown(key,isRep) if input==showNum then level=level+1 freshLevel() - SFX.play('reach') + FMOD.playEffect('reach') end elseif key=='space' or key=='backspace' then input="" @@ -68,7 +68,7 @@ function scene.update(dt) if inputTime<=0 then inputTime=0 state=1 - SFX.play('finesseError_long',.6) + FMOD.playEffect('finesseError_long',{volume=.6}) end end end diff --git a/assets/scene/app_piano.lua b/assets/scene/app_piano.lua index 467ac177..dcc09733 100644 --- a/assets/scene/app_piano.lua +++ b/assets/scene/app_piano.lua @@ -1,20 +1,21 @@ local gc=love.graphics local kb=love.keyboard -local instList={'lead','bell','bass'} +local instList={'square_wave','triangle_wave','sine_wave'} local keys={ - ['1']=61,['2']=63,['3']=65,['4']=66,['5']=68,['6']=70,['7']=72,['8']=73,['9']=75,['0']=77,['-']=78,['=']=80,['backspace']=82, - ['q']=49,['w']=51,['e']=53,['r']=54,['t']=56,['y']=58,['u']=60,['i']=61,['o']=63,['p']=65,['[']=66,[']']=68,['\\']=70, - ['a']=37,['s']=39,['d']=41,['f']=42,['g']=44,['h']=46,['j']=48,['k']=49,['l']=51,[';']=53,["'"]=54,['return']=56, - ['z']=25,['x']=27,['c']=29,['v']=30,['b']=32,['n']=34,['m']=36,[',']=37,['.']=39,['/']=41, + ['1']=57,['2']=59,['3']=61,['4']=62,['5']=64,['6']=66,['7']=68,['8']=69,['9']=71,['0']=73,['-']=74,['=']=76,['backspace']=78, + ['q']=45,['w']=47,['e']=49,['r']=50,['t']=52,['y']=54,['u']=56,['i']=57,['o']=59,['p']=61,['[']=62,[']']=64,['\\']=66, + ['a']=33,['s']=35,['d']=37,['f']=38,['g']=40,['h']=42,['j']=44,['k']=45,['l']=47,[';']=49,["'"]=50,['return']=52, + ['z']=21,['x']=23,['c']=25,['v']=26,['b']=28,['n']=30,['m']=32,[',']=33,['.']=35,['/']=37, } +local activeEventMap={} local inst local offset local scene={} function scene.enter() - inst='lead' + inst='square_wave' offset=0 end @@ -28,8 +29,19 @@ function scene.keyDown(key,isRep) local note=keys[key]+offset if kb.isDown('lshift','rshift') then note=note+1 end if kb.isDown('lctrl','rctrl') then note=note-1 end - SFX.playSample(inst,note) - TEXT:add(SFX.getNoteName(note),math.random(150,1130),math.random(140,500),60,'score',.8) + activeEventMap[key]=FMOD.playEffect(inst,{ + tune=note-21, + volume=1, + param={'release',1000*1.0594630943592953^(note-21)}, + }) + TEXT:add{ + text=SFX.getNoteName(note), + x=math.random(150,1130), + y=math.random(140,500), + fontSize=60, + style='score', + duration=.8, + } elseif key=='tab' then inst=TABLE.next(instList,inst) elseif key=='lalt' then @@ -40,6 +52,12 @@ function scene.keyDown(key,isRep) SCN.back() end end +function scene.keyUp(key) + if keys[key] and activeEventMap[key] then + activeEventMap[key]:stop(FMOD.FMOD_STUDIO_STOP_ALLOWFADEOUT) + activeEventMap[key]=false + end +end function scene.draw() FONT.set(30) diff --git a/assets/scene/app_polyforge.lua b/assets/scene/app_polyforge.lua index 79b786b7..af818a3a 100644 --- a/assets/scene/app_polyforge.lua +++ b/assets/scene/app_polyforge.lua @@ -55,19 +55,19 @@ function scene.keyDown(key,isRep) if hit[c]==0 then hit[c]=1 count=count+1 - SFX.play(side<26 and 'ren_'..rnd(5) or 'ren_'..rnd(6,11)) + FMOD.playEffect(side<26 and 'ren_'..rnd(5) or 'ren_'..rnd(6,11)) if count>=12 then - SFX.play('ren_mega',(count-11)/15) + FMOD.playEffect('ren_mega',{volume=(count-11)/15}) end if count==side then state=1 - SFX.play('spin_0') + FMOD.playEffect('spin_0') else - SFX.play('lock') + FMOD.playEffect('lock') end else hit[c]=2 - SFX.play('emit') + FMOD.playEffect('emit') needReset=true state=1 end diff --git a/assets/scene/app_pong.lua b/assets/scene/app_pong.lua index 4c56f9df..c2b3aa0f 100644 --- a/assets/scene/app_pong.lua +++ b/assets/scene/app_pong.lua @@ -53,7 +53,7 @@ function scene.keyDown(key,isRep) vx,vy=0,0 ry=0 p1.score,p2.score=0,0 - SFX.play('hold') + FMOD.playEffect('hold') elseif key=='w' or key=='s' then p1.y0=false elseif key=='up' or key=='down' then @@ -123,7 +123,7 @@ function scene.update() vx=-vx-(vx>0 and .05 or -.5) vy=vy+d*.08+P.vy*.5 ry=P.vy - SFX.play('collect') + FMOD.playEffect('collect') else state=2 end @@ -131,14 +131,14 @@ function scene.update() if by<30 or by>690 then by=by<30 and 30 or 690 vy,ry=-vy,-ry - SFX.play('collect') + FMOD.playEffect('collect') end elseif state==2 then -- Game over if bx<-120 or bx>1400 or by<-40 or by>760 then P=bx>640 and p1 or p2 P.score=P.score+1 TEXT:add("+1",P==p1 and 470 or 810,226,50,'score') - SFX.play('reach') + FMOD.playEffect('reach') state=0 bx,by=640,360 diff --git a/assets/scene/app_schulteG.lua b/assets/scene/app_schulteG.lua index 23fda746..6e4bdaff 100644 --- a/assets/scene/app_schulteG.lua +++ b/assets/scene/app_schulteG.lua @@ -50,11 +50,11 @@ local function tapBoard(x,y) if board[x]==progress+1 then progress=progress+1 if progress=6 then @@ -101,10 +101,10 @@ local function merge() maxTile<=8 and 3 or maxTile<=11 and 4 or 5 - SFX.play('reach') + FMOD.playEffect('reach') end if chosen>=5 then - SFX.play( + FMOD.playEffect( chosen>=9 and 'ren_mega' or chosen>=8 and 'spin_3' or chosen>=7 and 'spin_2' or @@ -202,10 +202,10 @@ function scene.update() for i=1,4 do for j=1,5 do if board[i][j]==board[i+1][j] then return end end end for i=1,5 do for j=1,4 do if board[i][j]==board[i][j+1] then return end end end state=2 - SFX.play('fail') + FMOD.playEffect('fail') else fallingTimer=fast and 4 or 5 - SFX.play('touch') + FMOD.playEffect('touch') end end elseif fast and ( diff --git a/assets/scene/app_triple.lua b/assets/scene/app_triple.lua index c692ba8d..55024e7c 100644 --- a/assets/scene/app_triple.lua +++ b/assets/scene/app_triple.lua @@ -124,7 +124,7 @@ end function player:click(y,x) if y==1 and x==1 then self.nexts[1],self.hold=self.hold,self.nexts[1] - SFX.play('hold') + FMOD.playEffect('hold') if not self.nexts[1] then rem(self.nexts,1) ins(self.nexts,self:newTile()) @@ -144,13 +144,13 @@ function player:click(y,x) if self.nexts[1]==-2 then self.board[y][x]=0 - SFX.play('clear_2') + FMOD.playEffect('clear_2') rem(self.nexts,1) ins(self.nexts,self:newTile()) newMergeFX(y,x,-2) else self.board[y][x]=rem(self.nexts,1) - SFX.play('touch') + FMOD.playEffect('touch') local cur,merged repeat @@ -168,7 +168,7 @@ function player:click(y,x) if self.maxTile>=6 then ins(self.progress,("%s - %.3fs"):format(self.maxTile,love.timer.getTime()-player.startTime)) end - SFX.play('reach') + FMOD.playEffect('reach') end local getScore=4^cur*count @@ -185,9 +185,9 @@ function player:click(y,x) self.selectX,self.selectY=false,false if merged then - SFX.play('lock') + FMOD.playEffect('lock') if cur>=4 then - SFX.play( + FMOD.playEffect( cur>=8 and 'ren_mega' or cur>=7 and 'spin_3' or cur>=6 and 'spin_2' or @@ -202,7 +202,7 @@ function player:click(y,x) end end self.state=2 - SFX.play('fail') + FMOD.playEffect('fail') end end else diff --git a/assets/scene/dictionary.lua b/assets/scene/dictionary.lua index 162304b3..7e546c69 100644 --- a/assets/scene/dictionary.lua +++ b/assets/scene/dictionary.lua @@ -57,7 +57,7 @@ local enDict=FILE.load('assets/language/dict_en.lua','-lua -canskip') local listBox,inputBox,linkButton,copyButton local function close() quiting=true - SFX.play('dict_close') + FMOD.playEffect('dict_close') end local function selectItem(item) selected=item @@ -95,12 +95,12 @@ end local function openLink() if selected.link then love.system.openURL(selected.link) - SFX.play('dict_link') + FMOD.playEffect('dict_link') end end local function copyText() love.system.setClipboardText(("%s:\n%s\n==Techmino Dict==\n"):format(selected.titleFull,selected.content)) - SFX.play('dict_copy') + FMOD.playEffect('dict_copy') copyButton:setVisible(false) end local function freshWidgetPos() @@ -258,7 +258,7 @@ function scene.enter() aboveScene=SCN.scenes[SCN.stack[#SCN.stack-1]] or NONE searchTimer,lastSearchText=0,'' inputBox._value='' - SFX.play('dict_open') + FMOD.playEffect('dict_open') freshWidgetPos() selectItem(false) @@ -341,7 +341,7 @@ function scene.keyDown(key,isRep) local sel=listBox:getItem() listBox:arrowKey(key) if listBox:getItem()~=sel then - SFX.play(listBox.sound_select) + FMOD.playEffect(listBox.sound_select) end end elseif act=='help' or act=='back' then @@ -364,7 +364,7 @@ function scene.keyDown(key,isRep) if act=='select' then if selected~=listBox:getItem() and listBox:getItem() then listBox.code() - SFX.play(listBox.sound_click) + FMOD.playEffect(listBox.sound_click) end elseif key=='home' then listBox:scroll(-1e99) diff --git a/assets/scene/error.lua b/assets/scene/error.lua index 491dc1c6..712e9ce0 100644 --- a/assets/scene/error.lua +++ b/assets/scene/error.lua @@ -14,6 +14,7 @@ local texts={ local scene={} function scene.enter() + FMOD.stopMusic() time=0 err=Zenitha.getErr('#') or { scene="NULL", diff --git a/assets/scene/game_out.lua b/assets/scene/game_out.lua index 51409737..b348f6bf 100644 --- a/assets/scene/game_out.lua +++ b/assets/scene/game_out.lua @@ -33,7 +33,7 @@ local function sysAction(action) end elseif action=='back' then if canPause() then - SFX.play('pause') + FMOD.playEffect('pause') SCN.swapTo('pause_out','none') else SCN.back() diff --git a/assets/scene/keyset_press.lua b/assets/scene/keyset_press.lua index 6f484b21..ce6677b0 100644 --- a/assets/scene/keyset_press.lua +++ b/assets/scene/keyset_press.lua @@ -25,13 +25,13 @@ function scene.keyDown(key,isRep) local L=KEYMAP[mode]:getKeys(act) if L then TABLE.cut(L) end result=Text.keyset_deleted - SFX.play('beep_down') + FMOD.playEffect('beep_down') else escTimerWTF=false result=key KEYMAP[mode]:remKey(key) KEYMAP[mode]:addKey(act,key) - SFX.play('beep_rise') + FMOD.playEffect('beep_rise') end end diff --git a/assets/scene/main_in.lua b/assets/scene/main_in.lua index fda62f3e..32f37f48 100644 --- a/assets/scene/main_in.lua +++ b/assets/scene/main_in.lua @@ -90,12 +90,12 @@ scene.widgetList={ {name='LangSel',type='button', pos={.5,.5},x=-270,y=320,w=400,h=100,text=CHAR.icon.language, fontSize=70,lineWidth=4,cornerR=0,code=WIDGET.c_goScn('lang_in','none')}, {name='GameSet',type='button', pos={.5,.5},x=270, y=320,w=400,h=100,text=LANG'main_in_settings', fontSize=40,lineWidth=4,cornerR=0,sound_trigger=false,code=function() if PROGRESS.get('main')<=2 or isCtrlPressed() then - SFX.play('button_norm') + FMOD.playEffect('button_norm') SCN.go('setting_in','none') else consoleClickCount=consoleClickCount+1 - SFX.play('move_failed') - SFX.play('suffocate',nil,nil,consoleClickCount-5.626) + FMOD.playEffect('move_failed') + FMOD.playEffect('suffocate',{tune=consoleClickCount-5.626}) if consoleClickCount==6 then consoleClickCount=0 SCN.go('_console') diff --git a/assets/scene/musicroom.lua b/assets/scene/musicroom.lua index 44770fe0..0c404881 100644 --- a/assets/scene/musicroom.lua +++ b/assets/scene/musicroom.lua @@ -64,7 +64,7 @@ local musicListBox do else fullband=nil end - playBgm(selected,fullband==nil and 'simp' or fullband and 'full' or 'base',noProgress and '-noProgress' or '') + playBgm(selected,fullband,noProgress) end end musicListBox=WIDGET.new(musicListBox) @@ -144,7 +144,7 @@ function scene.keyDown(key,isRep) if BGM.isPlaying() then BGM.stop(.26) else - playBgm(selected,fullband and 'full' or 'base',noProgress and '-noProgress' or '') + playBgm(selected,fullband,noProgress) end progressBar:reset() elseif key=='tab' then diff --git a/assets/scene/pause_in.lua b/assets/scene/pause_in.lua index 95c35029..7d8cf610 100644 --- a/assets/scene/pause_in.lua +++ b/assets/scene/pause_in.lua @@ -59,8 +59,8 @@ scene.widgetList={ if PROGRESS.get('main')<=2 or isCtrlPressed() then sysAction('setting') else - SFX.play('move_failed') - SFX.play('suffocate',nil,nil,MATH.rand(-6,2)) + FMOD.playEffect('move_failed') + FMOD.playEffect('suffocate',{tune=MATH.rand(-6,2)}) end end, }, diff --git a/assets/scene/pause_out.lua b/assets/scene/pause_out.lua index e2fb7915..d0ba99bd 100644 --- a/assets/scene/pause_out.lua +++ b/assets/scene/pause_out.lua @@ -15,16 +15,16 @@ end local function sysAction(action) if action=='quit' then - SFX.play('pause_quit') + FMOD.playEffect('pause_quit') SCN.back() elseif action=='back' then - SFX.play('unpause') + FMOD.playEffect('unpause') SCN.swapTo('game_out','none') elseif action=='restart' then - SFX.play('pause_restart') + FMOD.playEffect('pause_restart') SCN.swapTo('game_out',nil,GAME.mode.name) elseif action=='setting' then - SFX.play('pause_setting') + FMOD.playEffect('pause_setting') SCN.go('setting_out') end end diff --git a/assets/scene/simulation.lua b/assets/scene/simulation.lua index 4954466a..18f3a250 100644 --- a/assets/scene/simulation.lua +++ b/assets/scene/simulation.lua @@ -145,7 +145,7 @@ function scene.keyDown(key,isRep) if subjectFocused then if not sims[subjectFocused].trigTimer then sims[subjectFocused].trigTimer=0 - SFX.play('simulation_select') + FMOD.playEffect('simulation_select') end end elseif KEYMAP.sys:getAction(key)=='back' then diff --git a/assets/scene/tutorial_rotate.lua b/assets/scene/tutorial_rotate.lua index c13e149f..7a850ef5 100644 --- a/assets/scene/tutorial_rotate.lua +++ b/assets/scene/tutorial_rotate.lua @@ -108,14 +108,14 @@ local function endGame(passLevel) inPoint=.1, outPoint=0, } - if passLevel>0 then SFX.play('win') end + if passLevel>0 then FMOD.playEffect('win') end autoQuitInterior() end function scene.enter() texts=TEXT.new() reset() - playBgm('space','simp') + playBgm('space') end function scene.leave() @@ -129,7 +129,7 @@ function scene.keyDown(key,isRep) if not controlCD then action=KEYMAP.mino:getAction(key) if action and action:find('rotate')==1 then - SFX.play('rotate') + FMOD.playEffect('rotate') if action=='rotateCW' then handMat=TABLE.rotate(handMat,'L') @@ -165,11 +165,11 @@ function scene.keyDown(key,isRep) end level=level+1 time=parTime[level] - SFX.play('beep_notice') + FMOD.playEffect('beep_notice') end else -- Correct - SFX.play('beep_rise') + FMOD.playEffect('beep_rise') end else -- Punishment @@ -217,7 +217,7 @@ function scene.update(dt) PROGRESS.setTutorialPassed(6) end elseif totalTime>passTime then - SFX.play('fail') + FMOD.playEffect('fail') endGame(0) end end diff --git a/assets/scene/tutorial_shape.lua b/assets/scene/tutorial_shape.lua index 8c359541..d7c7ff1d 100644 --- a/assets/scene/tutorial_shape.lua +++ b/assets/scene/tutorial_shape.lua @@ -134,24 +134,24 @@ local function answer(option) if time>parTime[1] then -- Just pass endGame(1) - SFX.play('win') + FMOD.playEffect('win') else level=2 time=parTime[2] - SFX.play('beep_notice') + FMOD.playEffect('beep_notice') end PROGRESS.setTutorialPassed(3) elseif level==2 then -- Cleared endGame(2) - SFX.play('win') + FMOD.playEffect('win') end else -- Correct - SFX.play('beep_rise') + FMOD.playEffect('beep_rise') end else - SFX.play('fail') + FMOD.playEffect('fail') end newQuestion() end @@ -159,7 +159,7 @@ end function scene.enter() texts=TEXT.new() reset() - playBgm('space','simp') + playBgm('space') end function scene.leave() texts=nil @@ -188,10 +188,10 @@ function scene.update(dt) if time==0 then if level==1 then endGame(0) - SFX.play('fail') + FMOD.playEffect('fail') else endGame(1) - SFX.play('win') + FMOD.playEffect('win') end end end diff --git a/assets/settings.lua b/assets/settings.lua index 9c0dd943..7e5e6efc 100644 --- a/assets/settings.lua +++ b/assets/settings.lua @@ -59,10 +59,10 @@ local settings={ } local settingTriggers={ -- Changing values in SETTINGS.system will trigger these functions (if exist). -- Audio - mainVol= function(v) love.audio.setVolume(v) end, - bgmVol= function(v) BGM.setVol(v) end, - sfxVol= function(v) SFX.setVol(v) end, - vocVol= function(v) VOC.setVol(v) end, + mainVol= function(v) FMOD.setMainVolume(v) end, + bgmVol= function(v) FMOD.setMusicVolume(v) end, + sfxVol= function(v) FMOD.setEffectVolume(v) end, + vocVol= function(v) FMOD.setVocalVolume(v) end, -- Video fullscreen= function(v) love.window.setFullscreen(v); love.resize(love.graphics.getWidth(),love.graphics.getHeight()) end, diff --git a/assets/sfx/b2b_0.ogg b/assets/sfx/b2b_0.ogg deleted file mode 100644 index 4507503b..00000000 Binary files a/assets/sfx/b2b_0.ogg and /dev/null differ diff --git a/assets/sfx/b2b_1.ogg b/assets/sfx/b2b_1.ogg deleted file mode 100644 index a4188784..00000000 Binary files a/assets/sfx/b2b_1.ogg and /dev/null differ diff --git a/assets/sfx/b2b_10.ogg b/assets/sfx/b2b_10.ogg deleted file mode 100644 index 3d432d0c..00000000 Binary files a/assets/sfx/b2b_10.ogg and /dev/null differ diff --git a/assets/sfx/b2b_2.ogg b/assets/sfx/b2b_2.ogg deleted file mode 100644 index de3035cf..00000000 Binary files a/assets/sfx/b2b_2.ogg and /dev/null differ diff --git a/assets/sfx/b2b_3.ogg b/assets/sfx/b2b_3.ogg deleted file mode 100644 index cff37ef8..00000000 Binary files a/assets/sfx/b2b_3.ogg and /dev/null differ diff --git a/assets/sfx/b2b_4.ogg b/assets/sfx/b2b_4.ogg deleted file mode 100644 index d39301df..00000000 Binary files a/assets/sfx/b2b_4.ogg and /dev/null differ diff --git a/assets/sfx/b2b_5.ogg b/assets/sfx/b2b_5.ogg deleted file mode 100644 index d4caa45e..00000000 Binary files a/assets/sfx/b2b_5.ogg and /dev/null differ diff --git a/assets/sfx/b2b_6.ogg b/assets/sfx/b2b_6.ogg deleted file mode 100644 index ece19085..00000000 Binary files a/assets/sfx/b2b_6.ogg and /dev/null differ diff --git a/assets/sfx/b2b_7.ogg b/assets/sfx/b2b_7.ogg deleted file mode 100644 index 84ea1987..00000000 Binary files a/assets/sfx/b2b_7.ogg and /dev/null differ diff --git a/assets/sfx/b2b_8.ogg b/assets/sfx/b2b_8.ogg deleted file mode 100644 index cc91cc15..00000000 Binary files a/assets/sfx/b2b_8.ogg and /dev/null differ diff --git a/assets/sfx/b2b_9.ogg b/assets/sfx/b2b_9.ogg deleted file mode 100644 index df48852f..00000000 Binary files a/assets/sfx/b2b_9.ogg and /dev/null differ diff --git a/assets/sfx/b2b_break.ogg b/assets/sfx/b2b_break.ogg deleted file mode 100644 index 74e98d57..00000000 Binary files a/assets/sfx/b2b_break.ogg and /dev/null differ diff --git a/assets/sfx/beep_down.ogg b/assets/sfx/beep_down.ogg deleted file mode 100644 index 9ad51ed3..00000000 Binary files a/assets/sfx/beep_down.ogg and /dev/null differ diff --git a/assets/sfx/beep_notice.ogg b/assets/sfx/beep_notice.ogg deleted file mode 100644 index 03d438a5..00000000 Binary files a/assets/sfx/beep_notice.ogg and /dev/null differ diff --git a/assets/sfx/beep_rise.ogg b/assets/sfx/beep_rise.ogg deleted file mode 100644 index 765685ec..00000000 Binary files a/assets/sfx/beep_rise.ogg and /dev/null differ diff --git a/assets/sfx/button_back.ogg b/assets/sfx/button_back.ogg deleted file mode 100644 index d002797e..00000000 Binary files a/assets/sfx/button_back.ogg and /dev/null differ diff --git a/assets/sfx/button_norm.ogg b/assets/sfx/button_norm.ogg deleted file mode 100644 index 75bdd0b5..00000000 Binary files a/assets/sfx/button_norm.ogg and /dev/null differ diff --git a/assets/sfx/check_off.ogg b/assets/sfx/check_off.ogg deleted file mode 100644 index 4bb7b6f6..00000000 Binary files a/assets/sfx/check_off.ogg and /dev/null differ diff --git a/assets/sfx/check_on.ogg b/assets/sfx/check_on.ogg deleted file mode 100644 index 74c0a380..00000000 Binary files a/assets/sfx/check_on.ogg and /dev/null differ diff --git a/assets/sfx/clear_1.ogg b/assets/sfx/clear_1.ogg deleted file mode 100644 index 0d15a20b..00000000 Binary files a/assets/sfx/clear_1.ogg and /dev/null differ diff --git a/assets/sfx/clear_10.ogg b/assets/sfx/clear_10.ogg deleted file mode 100644 index f9baf1a0..00000000 Binary files a/assets/sfx/clear_10.ogg and /dev/null differ diff --git a/assets/sfx/clear_12.ogg b/assets/sfx/clear_12.ogg deleted file mode 100644 index 6927d8ad..00000000 Binary files a/assets/sfx/clear_12.ogg and /dev/null differ diff --git a/assets/sfx/clear_14.ogg b/assets/sfx/clear_14.ogg deleted file mode 100644 index 293502e7..00000000 Binary files a/assets/sfx/clear_14.ogg and /dev/null differ diff --git a/assets/sfx/clear_16.ogg b/assets/sfx/clear_16.ogg deleted file mode 100644 index c6c231ff..00000000 Binary files a/assets/sfx/clear_16.ogg and /dev/null differ diff --git a/assets/sfx/clear_18.ogg b/assets/sfx/clear_18.ogg deleted file mode 100644 index f3696a93..00000000 Binary files a/assets/sfx/clear_18.ogg and /dev/null differ diff --git a/assets/sfx/clear_19.ogg b/assets/sfx/clear_19.ogg deleted file mode 100644 index f1e2f556..00000000 Binary files a/assets/sfx/clear_19.ogg and /dev/null differ diff --git a/assets/sfx/clear_2.ogg b/assets/sfx/clear_2.ogg deleted file mode 100644 index 91ec2623..00000000 Binary files a/assets/sfx/clear_2.ogg and /dev/null differ diff --git a/assets/sfx/clear_20.ogg b/assets/sfx/clear_20.ogg deleted file mode 100644 index 26d995b1..00000000 Binary files a/assets/sfx/clear_20.ogg and /dev/null differ diff --git a/assets/sfx/clear_21.ogg b/assets/sfx/clear_21.ogg deleted file mode 100644 index 1dbf9dd2..00000000 Binary files a/assets/sfx/clear_21.ogg and /dev/null differ diff --git a/assets/sfx/clear_22.ogg b/assets/sfx/clear_22.ogg deleted file mode 100644 index bd381785..00000000 Binary files a/assets/sfx/clear_22.ogg and /dev/null differ diff --git a/assets/sfx/clear_24.ogg b/assets/sfx/clear_24.ogg deleted file mode 100644 index d94c5e26..00000000 Binary files a/assets/sfx/clear_24.ogg and /dev/null differ diff --git a/assets/sfx/clear_26.ogg b/assets/sfx/clear_26.ogg deleted file mode 100644 index 3eb3c62a..00000000 Binary files a/assets/sfx/clear_26.ogg and /dev/null differ diff --git a/assets/sfx/clear_3.ogg b/assets/sfx/clear_3.ogg deleted file mode 100644 index a0d0a049..00000000 Binary files a/assets/sfx/clear_3.ogg and /dev/null differ diff --git a/assets/sfx/clear_4.ogg b/assets/sfx/clear_4.ogg deleted file mode 100644 index e9c7b9a7..00000000 Binary files a/assets/sfx/clear_4.ogg and /dev/null differ diff --git a/assets/sfx/clear_5.ogg b/assets/sfx/clear_5.ogg deleted file mode 100644 index cf41c058..00000000 Binary files a/assets/sfx/clear_5.ogg and /dev/null differ diff --git a/assets/sfx/clear_6.ogg b/assets/sfx/clear_6.ogg deleted file mode 100644 index c9006786..00000000 Binary files a/assets/sfx/clear_6.ogg and /dev/null differ diff --git a/assets/sfx/clear_8.ogg b/assets/sfx/clear_8.ogg deleted file mode 100644 index 96e1f861..00000000 Binary files a/assets/sfx/clear_8.ogg and /dev/null differ diff --git a/assets/sfx/clear_all.ogg b/assets/sfx/clear_all.ogg deleted file mode 100644 index 6c8b4037..00000000 Binary files a/assets/sfx/clear_all.ogg and /dev/null differ diff --git a/assets/sfx/clear_half.ogg b/assets/sfx/clear_half.ogg deleted file mode 100644 index 4af2cc8c..00000000 Binary files a/assets/sfx/clear_half.ogg and /dev/null differ diff --git a/assets/sfx/desuffocate.ogg b/assets/sfx/desuffocate.ogg deleted file mode 100644 index 3af52168..00000000 Binary files a/assets/sfx/desuffocate.ogg and /dev/null differ diff --git a/assets/sfx/dict_close.ogg b/assets/sfx/dict_close.ogg deleted file mode 100644 index c7d603c2..00000000 Binary files a/assets/sfx/dict_close.ogg and /dev/null differ diff --git a/assets/sfx/dict_copy.ogg b/assets/sfx/dict_copy.ogg deleted file mode 100644 index cd968c93..00000000 Binary files a/assets/sfx/dict_copy.ogg and /dev/null differ diff --git a/assets/sfx/dict_link.ogg b/assets/sfx/dict_link.ogg deleted file mode 100644 index 932f9eb8..00000000 Binary files a/assets/sfx/dict_link.ogg and /dev/null differ diff --git a/assets/sfx/dict_open.ogg b/assets/sfx/dict_open.ogg deleted file mode 100644 index 96f0daf5..00000000 Binary files a/assets/sfx/dict_open.ogg and /dev/null differ diff --git a/assets/sfx/drop.ogg b/assets/sfx/drop.ogg deleted file mode 100644 index 92bed62a..00000000 Binary files a/assets/sfx/drop.ogg and /dev/null differ diff --git a/assets/sfx/fail.ogg b/assets/sfx/fail.ogg deleted file mode 100644 index e3568b11..00000000 Binary files a/assets/sfx/fail.ogg and /dev/null differ diff --git a/assets/sfx/frenzy.ogg b/assets/sfx/frenzy.ogg deleted file mode 100644 index cee48fff..00000000 Binary files a/assets/sfx/frenzy.ogg and /dev/null differ diff --git a/assets/sfx/hold.ogg b/assets/sfx/hold.ogg deleted file mode 100644 index e9f93c40..00000000 Binary files a/assets/sfx/hold.ogg and /dev/null differ diff --git a/assets/sfx/inithold.ogg b/assets/sfx/inithold.ogg deleted file mode 100644 index bf7e415c..00000000 Binary files a/assets/sfx/inithold.ogg and /dev/null differ diff --git a/assets/sfx/initrotate.ogg b/assets/sfx/initrotate.ogg deleted file mode 100644 index a5b42b08..00000000 Binary files a/assets/sfx/initrotate.ogg and /dev/null differ diff --git a/assets/sfx/inputBox_bksp.ogg b/assets/sfx/inputBox_bksp.ogg deleted file mode 100644 index e7ae56a9..00000000 Binary files a/assets/sfx/inputBox_bksp.ogg and /dev/null differ diff --git a/assets/sfx/inputBox_clear.ogg b/assets/sfx/inputBox_clear.ogg deleted file mode 100644 index eba8e2e8..00000000 Binary files a/assets/sfx/inputBox_clear.ogg and /dev/null differ diff --git a/assets/sfx/inputBox_input.ogg b/assets/sfx/inputBox_input.ogg deleted file mode 100644 index 996b4875..00000000 Binary files a/assets/sfx/inputBox_input.ogg and /dev/null differ diff --git a/assets/sfx/listBox_click.ogg b/assets/sfx/listBox_click.ogg deleted file mode 100644 index addad3f9..00000000 Binary files a/assets/sfx/listBox_click.ogg and /dev/null differ diff --git a/assets/sfx/listBox_select.ogg b/assets/sfx/listBox_select.ogg deleted file mode 100644 index 6728e516..00000000 Binary files a/assets/sfx/listBox_select.ogg and /dev/null differ diff --git a/assets/sfx/lock.ogg b/assets/sfx/lock.ogg deleted file mode 100644 index a428fe3f..00000000 Binary files a/assets/sfx/lock.ogg and /dev/null differ diff --git a/assets/sfx/map_enter.ogg b/assets/sfx/map_enter.ogg deleted file mode 100644 index 5b7afe63..00000000 Binary files a/assets/sfx/map_enter.ogg and /dev/null differ diff --git a/assets/sfx/map_pass_1.ogg b/assets/sfx/map_pass_1.ogg deleted file mode 100644 index 7bb9c077..00000000 Binary files a/assets/sfx/map_pass_1.ogg and /dev/null differ diff --git a/assets/sfx/map_pass_2.ogg b/assets/sfx/map_pass_2.ogg deleted file mode 100644 index 1ae6789e..00000000 Binary files a/assets/sfx/map_pass_2.ogg and /dev/null differ diff --git a/assets/sfx/map_pass_3.ogg b/assets/sfx/map_pass_3.ogg deleted file mode 100644 index 2e081fa0..00000000 Binary files a/assets/sfx/map_pass_3.ogg and /dev/null differ diff --git a/assets/sfx/map_pass_4.ogg b/assets/sfx/map_pass_4.ogg deleted file mode 100644 index 819f2352..00000000 Binary files a/assets/sfx/map_pass_4.ogg and /dev/null differ diff --git a/assets/sfx/map_pass_5.ogg b/assets/sfx/map_pass_5.ogg deleted file mode 100644 index e0af36ef..00000000 Binary files a/assets/sfx/map_pass_5.ogg and /dev/null differ diff --git a/assets/sfx/map_select.ogg b/assets/sfx/map_select.ogg deleted file mode 100644 index 08c84e1e..00000000 Binary files a/assets/sfx/map_select.ogg and /dev/null differ diff --git a/assets/sfx/map_unlock.ogg b/assets/sfx/map_unlock.ogg deleted file mode 100644 index 0a3b04bb..00000000 Binary files a/assets/sfx/map_unlock.ogg and /dev/null differ diff --git a/assets/sfx/map_unlock_background.ogg b/assets/sfx/map_unlock_background.ogg deleted file mode 100644 index 0e13d44c..00000000 Binary files a/assets/sfx/map_unlock_background.ogg and /dev/null differ diff --git a/assets/sfx/map_unlock_secret.ogg b/assets/sfx/map_unlock_secret.ogg deleted file mode 100644 index 09958f13..00000000 Binary files a/assets/sfx/map_unlock_secret.ogg and /dev/null differ diff --git a/assets/sfx/move.ogg b/assets/sfx/move.ogg deleted file mode 100644 index 030ff8c6..00000000 Binary files a/assets/sfx/move.ogg and /dev/null differ diff --git a/assets/sfx/move_down.ogg b/assets/sfx/move_down.ogg deleted file mode 100644 index ba2ead06..00000000 Binary files a/assets/sfx/move_down.ogg and /dev/null differ diff --git a/assets/sfx/move_failed.ogg b/assets/sfx/move_failed.ogg deleted file mode 100644 index aec7aef1..00000000 Binary files a/assets/sfx/move_failed.ogg and /dev/null differ diff --git a/assets/sfx/notice_down.ogg b/assets/sfx/notice_down.ogg deleted file mode 100644 index e236c53b..00000000 Binary files a/assets/sfx/notice_down.ogg and /dev/null differ diff --git a/assets/sfx/notice_up.ogg b/assets/sfx/notice_up.ogg deleted file mode 100644 index 2f5b7bed..00000000 Binary files a/assets/sfx/notice_up.ogg and /dev/null differ diff --git a/assets/sfx/pause.ogg b/assets/sfx/pause.ogg deleted file mode 100644 index b344aa51..00000000 Binary files a/assets/sfx/pause.ogg and /dev/null differ diff --git a/assets/sfx/pause_quit.ogg b/assets/sfx/pause_quit.ogg deleted file mode 100644 index 9c0dd72a..00000000 Binary files a/assets/sfx/pause_quit.ogg and /dev/null differ diff --git a/assets/sfx/pause_restart.ogg b/assets/sfx/pause_restart.ogg deleted file mode 100644 index ee2b7159..00000000 Binary files a/assets/sfx/pause_restart.ogg and /dev/null differ diff --git a/assets/sfx/pause_setting.ogg b/assets/sfx/pause_setting.ogg deleted file mode 100644 index af126564..00000000 Binary files a/assets/sfx/pause_setting.ogg and /dev/null differ diff --git a/assets/sfx/rotate.ogg b/assets/sfx/rotate.ogg deleted file mode 100644 index ec3c7587..00000000 Binary files a/assets/sfx/rotate.ogg and /dev/null differ diff --git a/assets/sfx/rotate_corners.ogg b/assets/sfx/rotate_corners.ogg deleted file mode 100644 index 099251f0..00000000 Binary files a/assets/sfx/rotate_corners.ogg and /dev/null differ diff --git a/assets/sfx/rotate_failed.ogg b/assets/sfx/rotate_failed.ogg deleted file mode 100644 index 18fb3680..00000000 Binary files a/assets/sfx/rotate_failed.ogg and /dev/null differ diff --git a/assets/sfx/rotate_locked.ogg b/assets/sfx/rotate_locked.ogg deleted file mode 100644 index 36e77fc7..00000000 Binary files a/assets/sfx/rotate_locked.ogg and /dev/null differ diff --git a/assets/sfx/rotate_special.ogg b/assets/sfx/rotate_special.ogg deleted file mode 100644 index 352db307..00000000 Binary files a/assets/sfx/rotate_special.ogg and /dev/null differ diff --git a/assets/sfx/selector.ogg b/assets/sfx/selector.ogg deleted file mode 100644 index f5efc2e2..00000000 Binary files a/assets/sfx/selector.ogg and /dev/null differ diff --git a/assets/sfx/simulation_select.ogg b/assets/sfx/simulation_select.ogg deleted file mode 100644 index a5542b7f..00000000 Binary files a/assets/sfx/simulation_select.ogg and /dev/null differ diff --git a/assets/sfx/slider_drag.ogg b/assets/sfx/slider_drag.ogg deleted file mode 100644 index 767ceeab..00000000 Binary files a/assets/sfx/slider_drag.ogg and /dev/null differ diff --git a/assets/sfx/slider_fill_drag.ogg b/assets/sfx/slider_fill_drag.ogg deleted file mode 100644 index 74c82ab5..00000000 Binary files a/assets/sfx/slider_fill_drag.ogg and /dev/null differ diff --git a/assets/sfx/spin_0.ogg b/assets/sfx/spin_0.ogg deleted file mode 100644 index fa12d2e1..00000000 Binary files a/assets/sfx/spin_0.ogg and /dev/null differ diff --git a/assets/sfx/spin_1.ogg b/assets/sfx/spin_1.ogg deleted file mode 100644 index d87bbc40..00000000 Binary files a/assets/sfx/spin_1.ogg and /dev/null differ diff --git a/assets/sfx/spin_2.ogg b/assets/sfx/spin_2.ogg deleted file mode 100644 index 37bd7b55..00000000 Binary files a/assets/sfx/spin_2.ogg and /dev/null differ diff --git a/assets/sfx/spin_3.ogg b/assets/sfx/spin_3.ogg deleted file mode 100644 index fd19a615..00000000 Binary files a/assets/sfx/spin_3.ogg and /dev/null differ diff --git a/assets/sfx/spin_4.ogg b/assets/sfx/spin_4.ogg deleted file mode 100644 index 7bb6636f..00000000 Binary files a/assets/sfx/spin_4.ogg and /dev/null differ diff --git a/assets/sfx/spin_mega.ogg b/assets/sfx/spin_mega.ogg deleted file mode 100644 index 837a4943..00000000 Binary files a/assets/sfx/spin_mega.ogg and /dev/null differ diff --git a/assets/sfx/suffocate.ogg b/assets/sfx/suffocate.ogg deleted file mode 100644 index 0be2bb98..00000000 Binary files a/assets/sfx/suffocate.ogg and /dev/null differ diff --git a/assets/sfx/touch.ogg b/assets/sfx/touch.ogg deleted file mode 100644 index 5fc51588..00000000 Binary files a/assets/sfx/touch.ogg and /dev/null differ diff --git a/assets/sfx/tuck.ogg b/assets/sfx/tuck.ogg deleted file mode 100644 index 8937c3e4..00000000 Binary files a/assets/sfx/tuck.ogg and /dev/null differ diff --git a/assets/sfx/unpause.ogg b/assets/sfx/unpause.ogg deleted file mode 100644 index fffdabb1..00000000 Binary files a/assets/sfx/unpause.ogg and /dev/null differ diff --git a/assets/sfx/win.ogg b/assets/sfx/win.ogg deleted file mode 100644 index bf3cc6b1..00000000 Binary files a/assets/sfx/win.ogg and /dev/null differ diff --git a/assets/skin/gem_template.lua b/assets/skin/gem_template.lua index 12af7e41..0367b9cc 100644 --- a/assets/skin/gem_template.lua +++ b/assets/skin/gem_template.lua @@ -210,7 +210,7 @@ end function S.drawStartingCounter(readyDelay) gc_push('transform') - local num=math.floor((readyDelay-S.getTime())/1000)+1 + local num=math.ceil((readyDelay-S.getTime())/1000) local r,g,b local d=1-S.getTime()%1000/1000 -- from .999 to 0 diff --git a/assets/skin/mino_template.lua b/assets/skin/mino_template.lua index 7616e407..8ce4fec3 100644 --- a/assets/skin/mino_template.lua +++ b/assets/skin/mino_template.lua @@ -265,7 +265,7 @@ end function S.drawStartingCounter(readyDelay) gc_push('transform') - local num=math.floor((readyDelay-S.getTime())/1000)+1 + local num=math.ceil((readyDelay-S.getTime())/1000) local r,g,b local d=1-S.getTime()%1000/1000 -- from .999 to 0 @@ -282,9 +282,9 @@ function S.drawStartingCounter(readyDelay) -- Warping number gc_push('transform') gc_scale((1.5-d*.6)^1.5) - gc_setColor(r,g,b,d) + gc_setColor(r,g,b,d/(.5+num/3)) GC.mStr(num,0,-70) - gc_setColor(1,1,1,1.5*d-0.5) + gc_setColor(1,1,1,(1.5*d-0.5)/(.5+num/3)) GC.mStr(num,0,-70) gc_pop() diff --git a/main.lua b/main.lua index 56be1949..a6f29825 100644 --- a/main.lua +++ b/main.lua @@ -36,11 +36,11 @@ love.setDeprecationOutput(false) love.keyboard.setTextInput(false) -------------------------------------------------------------- -- Create directories -for _,v in next,{'conf','progress','replay','cache','lib'} do +for _,v in next,{'conf','progress','replay','cache','lib','soundbank'} do local info=love.filesystem.getInfo(v) if not info then love.filesystem.createDirectory(v) - elseif info.type~='directory' then + elseif info.type~='directory' and info.type~='symlink' then love.filesystem.remove(v) love.filesystem.createDirectory(v) end @@ -58,6 +58,7 @@ SKIN=require'assets.skin' CHAR=require'assets.char' SETTINGS=require'assets.settings' bgmList=require'assets.bgmlist' +FMOD=require("assets.fmod20221") DEBUG.checkLoadTime("Load game modules") -------------------------------------------------------------- -- Config Zenitha @@ -125,7 +126,6 @@ FONT.load{ galaxy_thin="assets/fonts/26FGalaxySans-Thin.otf", } SCR.setSize(1600,1000) -BGM.setMaxSources(16) VOC.setDiversion(.62) WIDGET.setDefaultOption{ base={ @@ -165,7 +165,6 @@ WIDGET.setDefaultOption{ }, } ---[Attention] Not loading IMG/SFX/BGM files here, just read file paths IMG.init{ actionIcons={ texture='assets/image/action_icon.png', @@ -219,40 +218,7 @@ IMG.init{ }, title_techmino='assets/image/title_techmino.png', } -SFX.load((function() - local path='assets/sfx/' - local L={} - for _,v in next,love.filesystem.getDirectoryItems(path) do - if FILE.isSafe(path..v) then - L[v:sub(1,-5)]=path..v - end - end - return L -end)()) -SFX.loadSample{name='bass',path='assets/sample/bass',base='A2'} -- A2~C5 -SFX.loadSample{name='lead',path='assets/sample/lead',base='A3'} -- A3~C6 -BGM.load((function() - local path='assets/music/' - local L={} - for _,dir in next,love.filesystem.getDirectoryItems(path) do - if love.filesystem.getInfo(path..dir).type=='directory' then - for _,file in next,love.filesystem.getDirectoryItems(path..dir) do - local fullPath=path..dir..'/'..file - if FILE.isSafe(fullPath) then - L[dir..'/'..file:sub(1,-5)]=fullPath - end - end - elseif love.filesystem.getInfo(path..dir).type=='file' then - local fullPath=path..dir - if FILE.isSafe(fullPath) then - L[dir:sub(1,-5)]=fullPath - end - end - end - return L -end)()) -VOC.init{} LANG.add{ en='assets/language/lang_en.lua', zh='assets/language/lang_zh.lua', @@ -411,4 +377,44 @@ SCN.addSwap('fastFadeHeader',{ }) DEBUG.checkLoadTime("Load shaders/BGs/SCNs/skins") -------------------------------------------------------------- +FMOD.init{ + maxChannel=64, + DSPBufferLength=8, + DSPBufferCount=8, + studioFlag=FMOD.FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE, + coreFlag=FMOD.FMOD_INIT_NORMAL, +} +FMOD.registerMusic((function() + local bankMusic=FMOD.loadBank(love.filesystem.getSaveDirectory().."/soundbank/Master.bank") + assert(bankMusic,"bank load failed") + local L={} + local l,c=bankMusic:getEventList(bankMusic:getEventCount()) + for i=1,c do + local path=assert(l[i-1]:getPath()) + local name=path:match("/([^/]+)$"):lower() + L[name]=path + end + return L +end)()) +FMOD.registerEffect((function() + local bankEffect=FMOD.loadBank(love.filesystem.getSaveDirectory().."/soundbank/Effect.bank") + assert(bankEffect,"bank load failed") + local L={} + local l,c=bankEffect:getEventList(bankEffect:getEventCount()) + for i=1,c do + local path=assert(l[i-1]:getPath()) + local name=path:match("/([^/]+)$"):lower() + L[name]=path + end + return L +end)()) +-- Hijack the original SFX module, use FMOD instead +SFX[('play')]=function(name,vol,pos,tune) + FMOD.playEffect(name,{ + volume=vol, + tune=tune, + }) +end +DEBUG.checkLoadTime("Load FMod and Bank") +-------------------------------------------------------------- DEBUG.logLoadTime()