1 module fmod.fmod; 2 3 public import fmod.common; 4 public import fmod.errors; 5 6 extern (C) { 7 FMOD_RESULT FMOD_Memory_Initialize (void* poolmem, int poollen, FMOD_MEMORY_ALLOC_CALLBACK useralloc, FMOD_MEMORY_REALLOC_CALLBACK userrealloc, FMOD_MEMORY_FREE_CALLBACK userfree, uint memtypeflags); 8 FMOD_RESULT FMOD_Memory_GetStats (int* currentalloced, int* maxalloced, int blocking); 9 FMOD_RESULT FMOD_Debug_Initialize (uint flags, FMOD_DEBUG_MODE mode, FMOD_DEBUG_CALLBACK callback, const(char)* filename); 10 FMOD_RESULT FMOD_File_SetDiskBusy (int busy); 11 FMOD_RESULT FMOD_File_GetDiskBusy (int* busy); 12 13 // FMOD_System 14 FMOD_RESULT FMOD_System_Create (FMOD_SYSTEM** system); 15 FMOD_RESULT FMOD_System_Release (FMOD_SYSTEM* system); 16 FMOD_RESULT FMOD_System_SetOutput (FMOD_SYSTEM* system, FMOD_OUTPUTTYPE output); 17 FMOD_RESULT FMOD_System_GetOutput (FMOD_SYSTEM* system, FMOD_OUTPUTTYPE* output); 18 FMOD_RESULT FMOD_System_GetNumDrivers (FMOD_SYSTEM* system, int* numdrivers); 19 FMOD_RESULT FMOD_System_GetDriverInfo (FMOD_SYSTEM* system, int id, char* name, int namelen, FMOD_GUID* guid, int* systemrate, FMOD_SPEAKERMODE* speakermode, int* speakermodechannels); 20 FMOD_RESULT FMOD_System_SetDriver (FMOD_SYSTEM* system, int driver); 21 FMOD_RESULT FMOD_System_GetDriver (FMOD_SYSTEM* system, int* driver); 22 FMOD_RESULT FMOD_System_SetSoftwareChannels (FMOD_SYSTEM* system, int numsoftwarechannels); 23 FMOD_RESULT FMOD_System_GetSoftwareChannels (FMOD_SYSTEM* system, int* numsoftwarechannels); 24 FMOD_RESULT FMOD_System_SetSoftwareFormat (FMOD_SYSTEM* system, int samplerate, FMOD_SPEAKERMODE speakermode, int numrawspeakers); 25 FMOD_RESULT FMOD_System_GetSoftwareFormat (FMOD_SYSTEM* system, int* samplerate, FMOD_SPEAKERMODE* speakermode, int* numrawspeakers); 26 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); 27 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); 28 FMOD_RESULT FMOD_System_SetAdvancedSettings (FMOD_SYSTEM* system, FMOD_ADVANCEDSETTINGS* settings); 29 FMOD_RESULT FMOD_System_GetAdvancedSettings (FMOD_SYSTEM* system, FMOD_ADVANCEDSETTINGS* settings); 30 FMOD_RESULT FMOD_System_SetCallback (FMOD_SYSTEM* system, FMOD_SYSTEM_CALLBACK callback, uint callbackmask); 31 FMOD_RESULT FMOD_System_SetPluginPath (FMOD_SYSTEM* system, const(char)* path); 32 FMOD_RESULT FMOD_System_LoadPlugin (FMOD_SYSTEM* system, const(char)* filename, uint* handle, uint priority); 33 FMOD_RESULT FMOD_System_UnloadPlugin (FMOD_SYSTEM* system, uint handle); 34 FMOD_RESULT FMOD_System_GetNumPlugins (FMOD_SYSTEM* system, FMOD_PLUGINTYPE plugintype, int* numplugins); 35 FMOD_RESULT FMOD_System_GetPluginHandle (FMOD_SYSTEM* system, FMOD_PLUGINTYPE plugintype, int index, uint* handle); 36 FMOD_RESULT FMOD_System_GetPluginInfo (FMOD_SYSTEM* system, uint handle, FMOD_PLUGINTYPE* plugintype, char* name, int namelen, uint* version_); 37 FMOD_RESULT FMOD_System_SetOutputByPlugin (FMOD_SYSTEM* system, uint handle); 38 FMOD_RESULT FMOD_System_GetOutputByPlugin (FMOD_SYSTEM* system, uint* handle); 39 FMOD_RESULT FMOD_System_Init (FMOD_SYSTEM* system, int maxchannels, uint flags, void* extradriverdata); 40 FMOD_RESULT FMOD_System_Close (FMOD_SYSTEM* system); 41 FMOD_RESULT FMOD_System_Update (FMOD_SYSTEM* system); 42 FMOD_RESULT FMOD_System_SetSpeakerPosition (FMOD_SYSTEM* system, FMOD_SPEAKER speaker, float x, float y, int active); 43 FMOD_RESULT FMOD_System_GetSpeakerPosition (FMOD_SYSTEM* system, FMOD_SPEAKER speaker, float* x, float* y, int* active); 44 FMOD_RESULT FMOD_System_SetStreamBufferSize (FMOD_SYSTEM* system, uint filebuffersize, uint filebuffersizetype); 45 FMOD_RESULT FMOD_System_GetStreamBufferSize (FMOD_SYSTEM* system, uint* filebuffersize, uint* filebuffersizetype); 46 FMOD_RESULT FMOD_System_Set3DSettings (FMOD_SYSTEM* system, float dopplerscale, float distancefactor, float rolloffscale); 47 FMOD_RESULT FMOD_System_Get3DSettings (FMOD_SYSTEM* system, float* dopplerscale, float* distancefactor, float* rolloffscale); 48 FMOD_RESULT FMOD_System_Set3DNumListeners (FMOD_SYSTEM* system, int numlisteners); 49 FMOD_RESULT FMOD_System_Get3DNumListeners (FMOD_SYSTEM* system, int* numlisteners); 50 FMOD_RESULT FMOD_System_CreateSound (FMOD_SYSTEM* system, const(char)* name_or_data, uint mode, FMOD_CREATESOUNDEXINFO* exinfo, FMOD_SOUND** sound); 51 FMOD_RESULT FMOD_System_PlaySound (FMOD_SYSTEM* system, FMOD_SOUND* sound, FMOD_CHANNELGROUP* channelgroup, int paused, FMOD_CHANNEL** channel); 52 53 // TO BE IMPLEMENTTED: 54 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); 55 FMOD_RESULT FMOD_System_Get3DListenerAttributes (FMOD_SYSTEM* system, int listener, FMOD_VECTOR* pos, FMOD_VECTOR* vel, FMOD_VECTOR* forward, FMOD_VECTOR* up); 56 FMOD_RESULT FMOD_System_Set3DRolloffCallback (FMOD_SYSTEM* system, FMOD_3D_ROLLOFF_CALLBACK callback); 57 FMOD_RESULT FMOD_System_MixerSuspend (FMOD_SYSTEM* system); 58 FMOD_RESULT FMOD_System_MixerResume (FMOD_SYSTEM* system); 59 FMOD_RESULT FMOD_System_GetDefaultMixMatrix (FMOD_SYSTEM* system, FMOD_SPEAKERMODE sourcespeakermode, FMOD_SPEAKERMODE targetspeakermode, float* matrix, int matrixhop); 60 FMOD_RESULT FMOD_System_GetSpeakerModeChannels (FMOD_SYSTEM* system, FMOD_SPEAKERMODE mode, int* channels); 61 FMOD_RESULT FMOD_System_GetVersion (FMOD_SYSTEM* system, uint* version_); 62 FMOD_RESULT FMOD_System_GetOutputHandle (FMOD_SYSTEM* system, void** handle); 63 FMOD_RESULT FMOD_System_GetChannelsPlaying (FMOD_SYSTEM* system, int* channels); 64 FMOD_RESULT FMOD_System_GetCPUUsage (FMOD_SYSTEM* system, float* dsp, float* stream, float* geometry, float* update, float* total); 65 FMOD_RESULT FMOD_System_GetSoundRAM (FMOD_SYSTEM* system, int* currentalloced, int* maxalloced, int* total); 66 FMOD_RESULT FMOD_System_CreateChannelGroup (FMOD_SYSTEM* system, const(char)* name, FMOD_CHANNELGROUP** channelgroup); 67 FMOD_RESULT FMOD_System_CreateSoundGroup (FMOD_SYSTEM* system, const(char)* name, FMOD_SOUNDGROUP** soundgroup); 68 FMOD_RESULT FMOD_System_CreateReverb3D (FMOD_SYSTEM* system, FMOD_REVERB3D** reverb); 69 FMOD_RESULT FMOD_System_CreateStream (FMOD_SYSTEM* system, const(char)* name_or_data, uint mode, FMOD_CREATESOUNDEXINFO* exinfo, FMOD_SOUND** sound); 70 FMOD_RESULT FMOD_System_GetChannel (FMOD_SYSTEM* system, int channelid, FMOD_CHANNEL** channel); 71 FMOD_RESULT FMOD_System_GetMasterChannelGroup (FMOD_SYSTEM* system, FMOD_CHANNELGROUP** channelgroup); 72 FMOD_RESULT FMOD_System_GetMasterSoundGroup (FMOD_SYSTEM* system, FMOD_SOUNDGROUP** soundgroup); 73 FMOD_RESULT FMOD_System_AttachChannelGroupToPort (FMOD_SYSTEM* system, uint portType, ulong portIndex, FMOD_CHANNELGROUP* channelgroup, int passThru); 74 FMOD_RESULT FMOD_System_DetachChannelGroupFromPort (FMOD_SYSTEM* system, FMOD_CHANNELGROUP* channelgroup); 75 FMOD_RESULT FMOD_System_SetReverbProperties (FMOD_SYSTEM* system, int instance, const(FMOD_REVERB_PROPERTIES)* prop); 76 FMOD_RESULT FMOD_System_GetReverbProperties (FMOD_SYSTEM* system, int instance, FMOD_REVERB_PROPERTIES* prop); 77 FMOD_RESULT FMOD_System_GetRecordNumDrivers (FMOD_SYSTEM* system, int* numdrivers, int* numconnected); 78 FMOD_RESULT FMOD_System_GetRecordDriverInfo (FMOD_SYSTEM* system, int id, char* name, int namelen, FMOD_GUID* guid, int* systemrate, FMOD_SPEAKERMODE* speakermode, int* speakermodechannels, uint* state); 79 FMOD_RESULT FMOD_System_GetRecordPosition (FMOD_SYSTEM* system, int id, uint* position); 80 FMOD_RESULT FMOD_System_RecordStart (FMOD_SYSTEM* system, int id, FMOD_SOUND* sound, int loop); 81 FMOD_RESULT FMOD_System_RecordStop (FMOD_SYSTEM* system, int id); 82 FMOD_RESULT FMOD_System_IsRecording (FMOD_SYSTEM* system, int id, int* recording); 83 FMOD_RESULT FMOD_System_CreateGeometry (FMOD_SYSTEM* system, int maxpolygons, int maxvertices, FMOD_GEOMETRY** geometry); 84 FMOD_RESULT FMOD_System_SetGeometrySettings (FMOD_SYSTEM* system, float maxworldsize); 85 FMOD_RESULT FMOD_System_GetGeometrySettings (FMOD_SYSTEM* system, float* maxworldsize); 86 FMOD_RESULT FMOD_System_LoadGeometry (FMOD_SYSTEM* system, const(void)* data, int datasize, FMOD_GEOMETRY** geometry); 87 FMOD_RESULT FMOD_System_GetGeometryOcclusion (FMOD_SYSTEM* system, const(FMOD_VECTOR)* listener, const(FMOD_VECTOR)* source, float* direct, float* reverb); 88 FMOD_RESULT FMOD_System_SetNetworkProxy (FMOD_SYSTEM* system, const(char)* proxy); 89 FMOD_RESULT FMOD_System_GetNetworkProxy (FMOD_SYSTEM* system, char* proxy, int proxylen); 90 FMOD_RESULT FMOD_System_SetNetworkTimeout (FMOD_SYSTEM* system, int timeout); 91 FMOD_RESULT FMOD_System_GetNetworkTimeout (FMOD_SYSTEM* system, int* timeout); 92 FMOD_RESULT FMOD_System_SetUserData (FMOD_SYSTEM* system, void* userdata); 93 FMOD_RESULT FMOD_System_GetUserData (FMOD_SYSTEM* system, void** userdata); 94 FMOD_RESULT FMOD_Sound_Release (FMOD_SOUND* sound); 95 FMOD_RESULT FMOD_Sound_GetSystemObject (FMOD_SOUND* sound, FMOD_SYSTEM** system); 96 FMOD_RESULT FMOD_Sound_Lock (FMOD_SOUND* sound, uint offset, uint length, void** ptr1, void** ptr2, uint* len1, uint* len2); 97 FMOD_RESULT FMOD_Sound_Unlock (FMOD_SOUND* sound, void* ptr1, void* ptr2, uint len1, uint len2); 98 FMOD_RESULT FMOD_Sound_SetDefaults (FMOD_SOUND* sound, float frequency, int priority); 99 FMOD_RESULT FMOD_Sound_GetDefaults (FMOD_SOUND* sound, float* frequency, int* priority); 100 FMOD_RESULT FMOD_Sound_Set3DMinMaxDistance (FMOD_SOUND* sound, float min, float max); 101 FMOD_RESULT FMOD_Sound_Get3DMinMaxDistance (FMOD_SOUND* sound, float* min, float* max); 102 FMOD_RESULT FMOD_Sound_Set3DConeSettings (FMOD_SOUND* sound, float insideconeangle, float outsideconeangle, float outsidevolume); 103 FMOD_RESULT FMOD_Sound_Get3DConeSettings (FMOD_SOUND* sound, float* insideconeangle, float* outsideconeangle, float* outsidevolume); 104 FMOD_RESULT FMOD_Sound_Set3DCustomRolloff (FMOD_SOUND* sound, FMOD_VECTOR* points, int numpoints); 105 FMOD_RESULT FMOD_Sound_Get3DCustomRolloff (FMOD_SOUND* sound, FMOD_VECTOR** points, int* numpoints); 106 FMOD_RESULT FMOD_Sound_SetSubSound (FMOD_SOUND* sound, int index, FMOD_SOUND* subsound); 107 FMOD_RESULT FMOD_Sound_GetSubSound (FMOD_SOUND* sound, int index, FMOD_SOUND** subsound); 108 FMOD_RESULT FMOD_Sound_GetSubSoundParent (FMOD_SOUND* sound, FMOD_SOUND** parentsound); 109 FMOD_RESULT FMOD_Sound_GetName (FMOD_SOUND* sound, char* name, int namelen); 110 FMOD_RESULT FMOD_Sound_GetLength (FMOD_SOUND* sound, uint* length, uint lengthtype); 111 FMOD_RESULT FMOD_Sound_GetFormat (FMOD_SOUND* sound, FMOD_SOUND_TYPE* type, FMOD_SOUND_FORMAT* format, int* channels, int* bits); 112 FMOD_RESULT FMOD_Sound_GetNumSubSounds (FMOD_SOUND* sound, int* numsubsounds); 113 FMOD_RESULT FMOD_Sound_GetNumTags (FMOD_SOUND* sound, int* numtags, int* numtagsupdated); 114 FMOD_RESULT FMOD_Sound_GetTag (FMOD_SOUND* sound, const(char)* name, int index, FMOD_TAG* tag); 115 FMOD_RESULT FMOD_Sound_GetOpenState (FMOD_SOUND* sound, FMOD_OPENSTATE* openstate, uint* percentbuffered, int* starving, int* diskbusy); 116 FMOD_RESULT FMOD_Sound_ReadData (FMOD_SOUND* sound, void* buffer, uint lenbytes, uint* read); 117 FMOD_RESULT FMOD_Sound_SeekData (FMOD_SOUND* sound, uint pcm); 118 FMOD_RESULT FMOD_Sound_SetSoundGroup (FMOD_SOUND* sound, FMOD_SOUNDGROUP* soundgroup); 119 FMOD_RESULT FMOD_Sound_GetSoundGroup (FMOD_SOUND* sound, FMOD_SOUNDGROUP** soundgroup); 120 FMOD_RESULT FMOD_Sound_GetNumSyncPoints (FMOD_SOUND* sound, int* numsyncpoints); 121 FMOD_RESULT FMOD_Sound_GetSyncPoint (FMOD_SOUND* sound, int index, FMOD_SYNCPOINT** point); 122 FMOD_RESULT FMOD_Sound_GetSyncPointInfo (FMOD_SOUND* sound, FMOD_SYNCPOINT* point, char* name, int namelen, uint* offset, uint offsettype); 123 FMOD_RESULT FMOD_Sound_AddSyncPoint (FMOD_SOUND* sound, uint offset, uint offsettype, const(char)* name, FMOD_SYNCPOINT** point); 124 FMOD_RESULT FMOD_Sound_DeleteSyncPoint (FMOD_SOUND* sound, FMOD_SYNCPOINT* point); 125 FMOD_RESULT FMOD_Sound_SetMode (FMOD_SOUND* sound, uint mode); 126 FMOD_RESULT FMOD_Sound_GetMode (FMOD_SOUND* sound, uint* mode); 127 FMOD_RESULT FMOD_Sound_SetLoopCount (FMOD_SOUND* sound, int loopcount); 128 FMOD_RESULT FMOD_Sound_GetLoopCount (FMOD_SOUND* sound, int* loopcount); 129 FMOD_RESULT FMOD_Sound_SetLoopPoints (FMOD_SOUND* sound, uint loopstart, uint loopstarttype, uint loopend, uint loopendtype); 130 FMOD_RESULT FMOD_Sound_GetLoopPoints (FMOD_SOUND* sound, uint* loopstart, uint loopstarttype, uint* loopend, uint loopendtype); 131 FMOD_RESULT FMOD_Sound_GetMusicNumChannels (FMOD_SOUND* sound, int* numchannels); 132 FMOD_RESULT FMOD_Sound_SetMusicChannelVolume (FMOD_SOUND* sound, int channel, float volume); 133 FMOD_RESULT FMOD_Sound_GetMusicChannelVolume (FMOD_SOUND* sound, int channel, float* volume); 134 FMOD_RESULT FMOD_Sound_SetMusicSpeed (FMOD_SOUND* sound, float speed); 135 FMOD_RESULT FMOD_Sound_GetMusicSpeed (FMOD_SOUND* sound, float* speed); 136 FMOD_RESULT FMOD_Sound_SetUserData (FMOD_SOUND* sound, void* userdata); 137 FMOD_RESULT FMOD_Sound_GetUserData (FMOD_SOUND* sound, void** userdata); 138 FMOD_RESULT FMOD_Channel_GetSystemObject (FMOD_CHANNEL* channel, FMOD_SYSTEM** system); 139 FMOD_RESULT FMOD_Channel_Stop (FMOD_CHANNEL* channel); 140 FMOD_RESULT FMOD_Channel_SetPaused (FMOD_CHANNEL* channel, int paused); 141 FMOD_RESULT FMOD_Channel_GetPaused (FMOD_CHANNEL* channel, int* paused); 142 FMOD_RESULT FMOD_Channel_SetVolume (FMOD_CHANNEL* channel, float volume); 143 FMOD_RESULT FMOD_Channel_GetVolume (FMOD_CHANNEL* channel, float* volume); 144 FMOD_RESULT FMOD_Channel_SetVolumeRamp (FMOD_CHANNEL* channel, int ramp); 145 FMOD_RESULT FMOD_Channel_GetVolumeRamp (FMOD_CHANNEL* channel, int* ramp); 146 FMOD_RESULT FMOD_Channel_GetAudibility (FMOD_CHANNEL* channel, float* audibility); 147 FMOD_RESULT FMOD_Channel_SetPitch (FMOD_CHANNEL* channel, float pitch); 148 FMOD_RESULT FMOD_Channel_GetPitch (FMOD_CHANNEL* channel, float* pitch); 149 FMOD_RESULT FMOD_Channel_SetMute (FMOD_CHANNEL* channel, int mute); 150 FMOD_RESULT FMOD_Channel_GetMute (FMOD_CHANNEL* channel, int* mute); 151 FMOD_RESULT FMOD_Channel_SetReverbProperties (FMOD_CHANNEL* channel, int instance, float wet); 152 FMOD_RESULT FMOD_Channel_GetReverbProperties (FMOD_CHANNEL* channel, int instance, float* wet); 153 FMOD_RESULT FMOD_Channel_SetLowPassGain (FMOD_CHANNEL* channel, float gain); 154 FMOD_RESULT FMOD_Channel_GetLowPassGain (FMOD_CHANNEL* channel, float* gain); 155 FMOD_RESULT FMOD_Channel_SetMode (FMOD_CHANNEL* channel, uint mode); 156 FMOD_RESULT FMOD_Channel_GetMode (FMOD_CHANNEL* channel, uint* mode); 157 FMOD_RESULT FMOD_Channel_SetCallback (FMOD_CHANNEL* channel, FMOD_CHANNELCONTROL_CALLBACK callback); 158 FMOD_RESULT FMOD_Channel_IsPlaying (FMOD_CHANNEL* channel, int* isplaying); 159 FMOD_RESULT FMOD_Channel_SetPan (FMOD_CHANNEL* channel, float pan); 160 FMOD_RESULT FMOD_Channel_SetMixLevelsOutput (FMOD_CHANNEL* channel, float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); 161 FMOD_RESULT FMOD_Channel_SetMixLevelsInput (FMOD_CHANNEL* channel, float* levels, int numlevels); 162 FMOD_RESULT FMOD_Channel_SetMixMatrix (FMOD_CHANNEL* channel, float* matrix, int outchannels, int inchannels, int inchannel_hop); 163 FMOD_RESULT FMOD_Channel_GetMixMatrix (FMOD_CHANNEL* channel, float* matrix, int* outchannels, int* inchannels, int inchannel_hop); 164 FMOD_RESULT FMOD_Channel_SetDelay (FMOD_CHANNEL* channel, ulong dspclock_start, ulong dspclock_end, int stopchannels); 165 FMOD_RESULT FMOD_Channel_GetDelay (FMOD_CHANNEL* channel, ulong* dspclock_start, ulong* dspclock_end, int* stopchannels); 166 FMOD_RESULT FMOD_Channel_AddFadePoint (FMOD_CHANNEL* channel, ulong dspclock, float volume); 167 FMOD_RESULT FMOD_Channel_SetFadePointRamp (FMOD_CHANNEL* channel, ulong dspclock, float volume); 168 FMOD_RESULT FMOD_Channel_RemoveFadePoints (FMOD_CHANNEL* channel, ulong dspclock_start, ulong dspclock_end); 169 FMOD_RESULT FMOD_Channel_GetFadePoints (FMOD_CHANNEL* channel, uint* numpoints, ulong* point_dspclock, float* point_volume); 170 FMOD_RESULT FMOD_Channel_Set3DAttributes (FMOD_CHANNEL* channel, const(FMOD_VECTOR)* pos, const(FMOD_VECTOR)* vel, const(FMOD_VECTOR)* alt_pan_pos); 171 FMOD_RESULT FMOD_Channel_Get3DAttributes (FMOD_CHANNEL* channel, FMOD_VECTOR* pos, FMOD_VECTOR* vel, FMOD_VECTOR* alt_pan_pos); 172 FMOD_RESULT FMOD_Channel_Set3DMinMaxDistance (FMOD_CHANNEL* channel, float mindistance, float maxdistance); 173 FMOD_RESULT FMOD_Channel_Get3DMinMaxDistance (FMOD_CHANNEL* channel, float* mindistance, float* maxdistance); 174 FMOD_RESULT FMOD_Channel_Set3DConeSettings (FMOD_CHANNEL* channel, float insideconeangle, float outsideconeangle, float outsidevolume); 175 FMOD_RESULT FMOD_Channel_Get3DConeSettings (FMOD_CHANNEL* channel, float* insideconeangle, float* outsideconeangle, float* outsidevolume); 176 FMOD_RESULT FMOD_Channel_Set3DConeOrientation (FMOD_CHANNEL* channel, FMOD_VECTOR* orientation); 177 FMOD_RESULT FMOD_Channel_Get3DConeOrientation (FMOD_CHANNEL* channel, FMOD_VECTOR* orientation); 178 FMOD_RESULT FMOD_Channel_Set3DCustomRolloff (FMOD_CHANNEL* channel, FMOD_VECTOR* points, int numpoints); 179 FMOD_RESULT FMOD_Channel_Get3DCustomRolloff (FMOD_CHANNEL* channel, FMOD_VECTOR** points, int* numpoints); 180 FMOD_RESULT FMOD_Channel_Set3DOcclusion (FMOD_CHANNEL* channel, float directocclusion, float reverbocclusion); 181 FMOD_RESULT FMOD_Channel_Get3DOcclusion (FMOD_CHANNEL* channel, float* directocclusion, float* reverbocclusion); 182 FMOD_RESULT FMOD_Channel_Set3DSpread (FMOD_CHANNEL* channel, float angle); 183 FMOD_RESULT FMOD_Channel_Get3DSpread (FMOD_CHANNEL* channel, float* angle); 184 FMOD_RESULT FMOD_Channel_Set3DLevel (FMOD_CHANNEL* channel, float level); 185 FMOD_RESULT FMOD_Channel_Get3DLevel (FMOD_CHANNEL* channel, float* level); 186 FMOD_RESULT FMOD_Channel_Set3DDopplerLevel (FMOD_CHANNEL* channel, float level); 187 FMOD_RESULT FMOD_Channel_Get3DDopplerLevel (FMOD_CHANNEL* channel, float* level); 188 FMOD_RESULT FMOD_Channel_Set3DDistanceFilter (FMOD_CHANNEL* channel, int custom, float customLevel, float centerFreq); 189 FMOD_RESULT FMOD_Channel_Get3DDistanceFilter (FMOD_CHANNEL* channel, int* custom, float* customLevel, float* centerFreq); 190 FMOD_RESULT FMOD_Channel_SetUserData (FMOD_CHANNEL* channel, void* userdata); 191 FMOD_RESULT FMOD_Channel_GetUserData (FMOD_CHANNEL* channel, void** userdata); 192 FMOD_RESULT FMOD_Channel_SetFrequency (FMOD_CHANNEL* channel, float frequency); 193 FMOD_RESULT FMOD_Channel_GetFrequency (FMOD_CHANNEL* channel, float* frequency); 194 FMOD_RESULT FMOD_Channel_SetPriority (FMOD_CHANNEL* channel, int priority); 195 FMOD_RESULT FMOD_Channel_GetPriority (FMOD_CHANNEL* channel, int* priority); 196 FMOD_RESULT FMOD_Channel_SetPosition (FMOD_CHANNEL* channel, uint position, uint postype); 197 FMOD_RESULT FMOD_Channel_GetPosition (FMOD_CHANNEL* channel, uint* position, uint postype); 198 FMOD_RESULT FMOD_Channel_SetChannelGroup (FMOD_CHANNEL* channel, FMOD_CHANNELGROUP* channelgroup); 199 FMOD_RESULT FMOD_Channel_GetChannelGroup (FMOD_CHANNEL* channel, FMOD_CHANNELGROUP** channelgroup); 200 FMOD_RESULT FMOD_Channel_SetLoopCount (FMOD_CHANNEL* channel, int loopcount); 201 FMOD_RESULT FMOD_Channel_GetLoopCount (FMOD_CHANNEL* channel, int* loopcount); 202 FMOD_RESULT FMOD_Channel_SetLoopPoints (FMOD_CHANNEL* channel, uint loopstart, uint loopstarttype, uint loopend, uint loopendtype); 203 FMOD_RESULT FMOD_Channel_GetLoopPoints (FMOD_CHANNEL* channel, uint* loopstart, uint loopstarttype, uint* loopend, uint loopendtype); 204 FMOD_RESULT FMOD_Channel_IsVirtual (FMOD_CHANNEL* channel, int* isvirtual); 205 FMOD_RESULT FMOD_Channel_GetCurrentSound (FMOD_CHANNEL* channel, FMOD_SOUND** sound); 206 FMOD_RESULT FMOD_Channel_GetIndex (FMOD_CHANNEL* channel, int* index); 207 FMOD_RESULT FMOD_ChannelGroup_GetSystemObject (FMOD_CHANNELGROUP* channelgroup, FMOD_SYSTEM** system); 208 FMOD_RESULT FMOD_ChannelGroup_Stop (FMOD_CHANNELGROUP* channelgroup); 209 FMOD_RESULT FMOD_ChannelGroup_SetPaused (FMOD_CHANNELGROUP* channelgroup, int paused); 210 FMOD_RESULT FMOD_ChannelGroup_GetPaused (FMOD_CHANNELGROUP* channelgroup, int* paused); 211 FMOD_RESULT FMOD_ChannelGroup_SetVolume (FMOD_CHANNELGROUP* channelgroup, float volume); 212 FMOD_RESULT FMOD_ChannelGroup_GetVolume (FMOD_CHANNELGROUP* channelgroup, float* volume); 213 FMOD_RESULT FMOD_ChannelGroup_SetVolumeRamp (FMOD_CHANNELGROUP* channelgroup, int ramp); 214 FMOD_RESULT FMOD_ChannelGroup_GetVolumeRamp (FMOD_CHANNELGROUP* channelgroup, int* ramp); 215 FMOD_RESULT FMOD_ChannelGroup_GetAudibility (FMOD_CHANNELGROUP* channelgroup, float* audibility); 216 FMOD_RESULT FMOD_ChannelGroup_SetPitch (FMOD_CHANNELGROUP* channelgroup, float pitch); 217 FMOD_RESULT FMOD_ChannelGroup_GetPitch (FMOD_CHANNELGROUP* channelgroup, float* pitch); 218 FMOD_RESULT FMOD_ChannelGroup_SetMute (FMOD_CHANNELGROUP* channelgroup, int mute); 219 FMOD_RESULT FMOD_ChannelGroup_GetMute (FMOD_CHANNELGROUP* channelgroup, int* mute); 220 FMOD_RESULT FMOD_ChannelGroup_SetReverbProperties (FMOD_CHANNELGROUP* channelgroup, int instance, float wet); 221 FMOD_RESULT FMOD_ChannelGroup_GetReverbProperties (FMOD_CHANNELGROUP* channelgroup, int instance, float* wet); 222 FMOD_RESULT FMOD_ChannelGroup_SetLowPassGain (FMOD_CHANNELGROUP* channelgroup, float gain); 223 FMOD_RESULT FMOD_ChannelGroup_GetLowPassGain (FMOD_CHANNELGROUP* channelgroup, float* gain); 224 FMOD_RESULT FMOD_ChannelGroup_SetMode (FMOD_CHANNELGROUP* channelgroup, uint mode); 225 FMOD_RESULT FMOD_ChannelGroup_GetMode (FMOD_CHANNELGROUP* channelgroup, uint* mode); 226 FMOD_RESULT FMOD_ChannelGroup_SetCallback (FMOD_CHANNELGROUP* channelgroup, FMOD_CHANNELCONTROL_CALLBACK callback); 227 FMOD_RESULT FMOD_ChannelGroup_IsPlaying (FMOD_CHANNELGROUP* channelgroup, int* isplaying); 228 FMOD_RESULT FMOD_ChannelGroup_SetPan (FMOD_CHANNELGROUP* channelgroup, float pan); 229 FMOD_RESULT FMOD_ChannelGroup_SetMixLevelsOutput (FMOD_CHANNELGROUP* channelgroup, float frontleft, float frontright, float center, float lfe, float surroundleft, float surroundright, float backleft, float backright); 230 FMOD_RESULT FMOD_ChannelGroup_SetMixLevelsInput (FMOD_CHANNELGROUP* channelgroup, float* levels, int numlevels); 231 FMOD_RESULT FMOD_ChannelGroup_SetMixMatrix (FMOD_CHANNELGROUP* channelgroup, float* matrix, int outchannels, int inchannels, int inchannel_hop); 232 FMOD_RESULT FMOD_ChannelGroup_GetMixMatrix (FMOD_CHANNELGROUP* channelgroup, float* matrix, int* outchannels, int* inchannels, int inchannel_hop); 233 FMOD_RESULT FMOD_ChannelGroup_SetDelay (FMOD_CHANNELGROUP* channelgroup, ulong dspclock_start, ulong dspclock_end, int stopchannels); 234 FMOD_RESULT FMOD_ChannelGroup_GetDelay (FMOD_CHANNELGROUP* channelgroup, ulong* dspclock_start, ulong* dspclock_end, int* stopchannels); 235 FMOD_RESULT FMOD_ChannelGroup_AddFadePoint (FMOD_CHANNELGROUP* channelgroup, ulong dspclock, float volume); 236 FMOD_RESULT FMOD_ChannelGroup_SetFadePointRamp (FMOD_CHANNELGROUP* channelgroup, ulong dspclock, float volume); 237 FMOD_RESULT FMOD_ChannelGroup_RemoveFadePoints (FMOD_CHANNELGROUP* channelgroup, ulong dspclock_start, ulong dspclock_end); 238 FMOD_RESULT FMOD_ChannelGroup_GetFadePoints (FMOD_CHANNELGROUP* channelgroup, uint* numpoints, ulong* point_dspclock, float* point_volume); 239 FMOD_RESULT FMOD_ChannelGroup_Set3DAttributes (FMOD_CHANNELGROUP* channelgroup, const(FMOD_VECTOR)* pos, const(FMOD_VECTOR)* vel, const(FMOD_VECTOR)* alt_pan_pos); 240 FMOD_RESULT FMOD_ChannelGroup_Get3DAttributes (FMOD_CHANNELGROUP* channelgroup, FMOD_VECTOR* pos, FMOD_VECTOR* vel, FMOD_VECTOR* alt_pan_pos); 241 FMOD_RESULT FMOD_ChannelGroup_Set3DMinMaxDistance (FMOD_CHANNELGROUP* channelgroup, float mindistance, float maxdistance); 242 FMOD_RESULT FMOD_ChannelGroup_Get3DMinMaxDistance (FMOD_CHANNELGROUP* channelgroup, float* mindistance, float* maxdistance); 243 FMOD_RESULT FMOD_ChannelGroup_Set3DConeSettings (FMOD_CHANNELGROUP* channelgroup, float insideconeangle, float outsideconeangle, float outsidevolume); 244 FMOD_RESULT FMOD_ChannelGroup_Get3DConeSettings (FMOD_CHANNELGROUP* channelgroup, float* insideconeangle, float* outsideconeangle, float* outsidevolume); 245 FMOD_RESULT FMOD_ChannelGroup_Set3DConeOrientation (FMOD_CHANNELGROUP* channelgroup, FMOD_VECTOR* orientation); 246 FMOD_RESULT FMOD_ChannelGroup_Get3DConeOrientation (FMOD_CHANNELGROUP* channelgroup, FMOD_VECTOR* orientation); 247 FMOD_RESULT FMOD_ChannelGroup_Set3DCustomRolloff (FMOD_CHANNELGROUP* channelgroup, FMOD_VECTOR* points, int numpoints); 248 FMOD_RESULT FMOD_ChannelGroup_Get3DCustomRolloff (FMOD_CHANNELGROUP* channelgroup, FMOD_VECTOR** points, int* numpoints); 249 FMOD_RESULT FMOD_ChannelGroup_Set3DOcclusion (FMOD_CHANNELGROUP* channelgroup, float directocclusion, float reverbocclusion); 250 FMOD_RESULT FMOD_ChannelGroup_Get3DOcclusion (FMOD_CHANNELGROUP* channelgroup, float* directocclusion, float* reverbocclusion); 251 FMOD_RESULT FMOD_ChannelGroup_Set3DSpread (FMOD_CHANNELGROUP* channelgroup, float angle); 252 FMOD_RESULT FMOD_ChannelGroup_Get3DSpread (FMOD_CHANNELGROUP* channelgroup, float* angle); 253 FMOD_RESULT FMOD_ChannelGroup_Set3DLevel (FMOD_CHANNELGROUP* channelgroup, float level); 254 FMOD_RESULT FMOD_ChannelGroup_Get3DLevel (FMOD_CHANNELGROUP* channelgroup, float* level); 255 FMOD_RESULT FMOD_ChannelGroup_Set3DDopplerLevel (FMOD_CHANNELGROUP* channelgroup, float level); 256 FMOD_RESULT FMOD_ChannelGroup_Get3DDopplerLevel (FMOD_CHANNELGROUP* channelgroup, float* level); 257 FMOD_RESULT FMOD_ChannelGroup_Set3DDistanceFilter (FMOD_CHANNELGROUP* channelgroup, int custom, float customLevel, float centerFreq); 258 FMOD_RESULT FMOD_ChannelGroup_Get3DDistanceFilter (FMOD_CHANNELGROUP* channelgroup, int* custom, float* customLevel, float* centerFreq); 259 FMOD_RESULT FMOD_ChannelGroup_SetUserData (FMOD_CHANNELGROUP* channelgroup, void* userdata); 260 FMOD_RESULT FMOD_ChannelGroup_GetUserData (FMOD_CHANNELGROUP* channelgroup, void** userdata); 261 FMOD_RESULT FMOD_ChannelGroup_Release (FMOD_CHANNELGROUP* channelgroup); 262 FMOD_RESULT FMOD_ChannelGroup_GetNumGroups (FMOD_CHANNELGROUP* channelgroup, int* numgroups); 263 FMOD_RESULT FMOD_ChannelGroup_GetGroup (FMOD_CHANNELGROUP* channelgroup, int index, FMOD_CHANNELGROUP** group); 264 FMOD_RESULT FMOD_ChannelGroup_GetParentGroup (FMOD_CHANNELGROUP* channelgroup, FMOD_CHANNELGROUP** group); 265 FMOD_RESULT FMOD_ChannelGroup_GetName (FMOD_CHANNELGROUP* channelgroup, char* name, int namelen); 266 FMOD_RESULT FMOD_ChannelGroup_GetNumChannels (FMOD_CHANNELGROUP* channelgroup, int* numchannels); 267 FMOD_RESULT FMOD_ChannelGroup_GetChannel (FMOD_CHANNELGROUP* channelgroup, int index, FMOD_CHANNEL** channel); 268 FMOD_RESULT FMOD_SoundGroup_Release (FMOD_SOUNDGROUP* soundgroup); 269 FMOD_RESULT FMOD_SoundGroup_GetSystemObject (FMOD_SOUNDGROUP* soundgroup, FMOD_SYSTEM** system); 270 FMOD_RESULT FMOD_SoundGroup_SetMaxAudible (FMOD_SOUNDGROUP* soundgroup, int maxaudible); 271 FMOD_RESULT FMOD_SoundGroup_GetMaxAudible (FMOD_SOUNDGROUP* soundgroup, int* maxaudible); 272 FMOD_RESULT FMOD_SoundGroup_SetMaxAudibleBehavior (FMOD_SOUNDGROUP* soundgroup, FMOD_SOUNDGROUP_BEHAVIOR behavior); 273 FMOD_RESULT FMOD_SoundGroup_GetMaxAudibleBehavior (FMOD_SOUNDGROUP* soundgroup, FMOD_SOUNDGROUP_BEHAVIOR* behavior); 274 FMOD_RESULT FMOD_SoundGroup_SetMuteFadeSpeed (FMOD_SOUNDGROUP* soundgroup, float speed); 275 FMOD_RESULT FMOD_SoundGroup_GetMuteFadeSpeed (FMOD_SOUNDGROUP* soundgroup, float* speed); 276 FMOD_RESULT FMOD_SoundGroup_SetVolume (FMOD_SOUNDGROUP* soundgroup, float volume); 277 FMOD_RESULT FMOD_SoundGroup_GetVolume (FMOD_SOUNDGROUP* soundgroup, float* volume); 278 FMOD_RESULT FMOD_SoundGroup_Stop (FMOD_SOUNDGROUP* soundgroup); 279 FMOD_RESULT FMOD_SoundGroup_GetName (FMOD_SOUNDGROUP* soundgroup, char* name, int namelen); 280 FMOD_RESULT FMOD_SoundGroup_GetNumSounds (FMOD_SOUNDGROUP* soundgroup, int* numsounds); 281 FMOD_RESULT FMOD_SoundGroup_GetSound (FMOD_SOUNDGROUP* soundgroup, int index, FMOD_SOUND** sound); 282 FMOD_RESULT FMOD_SoundGroup_GetNumPlaying (FMOD_SOUNDGROUP* soundgroup, int* numplaying); 283 FMOD_RESULT FMOD_SoundGroup_SetUserData (FMOD_SOUNDGROUP* soundgroup, void* userdata); 284 FMOD_RESULT FMOD_SoundGroup_GetUserData (FMOD_SOUNDGROUP* soundgroup, void** userdata); 285 FMOD_RESULT FMOD_Geometry_Release (FMOD_GEOMETRY* geometry); 286 FMOD_RESULT FMOD_Geometry_AddPolygon (FMOD_GEOMETRY* geometry, float directocclusion, float reverbocclusion, int doublesided, int numvertices, const(FMOD_VECTOR)* vertices, int* polygonindex); 287 FMOD_RESULT FMOD_Geometry_GetNumPolygons (FMOD_GEOMETRY* geometry, int* numpolygons); 288 FMOD_RESULT FMOD_Geometry_GetMaxPolygons (FMOD_GEOMETRY* geometry, int* maxpolygons, int* maxvertices); 289 FMOD_RESULT FMOD_Geometry_GetPolygonNumVertices (FMOD_GEOMETRY* geometry, int index, int* numvertices); 290 FMOD_RESULT FMOD_Geometry_SetPolygonVertex (FMOD_GEOMETRY* geometry, int index, int vertexindex, const(FMOD_VECTOR)* vertex); 291 FMOD_RESULT FMOD_Geometry_GetPolygonVertex (FMOD_GEOMETRY* geometry, int index, int vertexindex, FMOD_VECTOR* vertex); 292 FMOD_RESULT FMOD_Geometry_SetPolygonAttributes (FMOD_GEOMETRY* geometry, int index, float directocclusion, float reverbocclusion, int doublesided); 293 FMOD_RESULT FMOD_Geometry_GetPolygonAttributes (FMOD_GEOMETRY* geometry, int index, float* directocclusion, float* reverbocclusion, int* doublesided); 294 FMOD_RESULT FMOD_Geometry_SetActive (FMOD_GEOMETRY* geometry, int active); 295 FMOD_RESULT FMOD_Geometry_GetActive (FMOD_GEOMETRY* geometry, int* active); 296 FMOD_RESULT FMOD_Geometry_SetRotation (FMOD_GEOMETRY* geometry, const(FMOD_VECTOR)* forward, const(FMOD_VECTOR)* up); 297 FMOD_RESULT FMOD_Geometry_GetRotation (FMOD_GEOMETRY* geometry, FMOD_VECTOR* forward, FMOD_VECTOR* up); 298 FMOD_RESULT FMOD_Geometry_SetPosition (FMOD_GEOMETRY* geometry, const(FMOD_VECTOR)* position); 299 FMOD_RESULT FMOD_Geometry_GetPosition (FMOD_GEOMETRY* geometry, FMOD_VECTOR* position); 300 FMOD_RESULT FMOD_Geometry_SetScale (FMOD_GEOMETRY* geometry, const(FMOD_VECTOR)* scale); 301 FMOD_RESULT FMOD_Geometry_GetScale (FMOD_GEOMETRY* geometry, FMOD_VECTOR* scale); 302 FMOD_RESULT FMOD_Geometry_Save (FMOD_GEOMETRY* geometry, void* data, int* datasize); 303 FMOD_RESULT FMOD_Geometry_SetUserData (FMOD_GEOMETRY* geometry, void* userdata); 304 FMOD_RESULT FMOD_Geometry_GetUserData (FMOD_GEOMETRY* geometry, void** userdata); 305 FMOD_RESULT FMOD_Reverb3D_Release (FMOD_REVERB3D* reverb3d); 306 FMOD_RESULT FMOD_Reverb3D_Set3DAttributes (FMOD_REVERB3D* reverb3d, const(FMOD_VECTOR)* position, float mindistance, float maxdistance); 307 FMOD_RESULT FMOD_Reverb3D_Get3DAttributes (FMOD_REVERB3D* reverb3d, FMOD_VECTOR* position, float* mindistance, float* maxdistance); 308 FMOD_RESULT FMOD_Reverb3D_SetProperties (FMOD_REVERB3D* reverb3d, const(FMOD_REVERB_PROPERTIES)* properties); 309 FMOD_RESULT FMOD_Reverb3D_GetProperties (FMOD_REVERB3D* reverb3d, FMOD_REVERB_PROPERTIES* properties); 310 FMOD_RESULT FMOD_Reverb3D_SetActive (FMOD_REVERB3D* reverb3d, int active); 311 FMOD_RESULT FMOD_Reverb3D_GetActive (FMOD_REVERB3D* reverb3d, int* active); 312 FMOD_RESULT FMOD_Reverb3D_SetUserData (FMOD_REVERB3D* reverb3d, void* userdata); 313 FMOD_RESULT FMOD_Reverb3D_GetUserData (FMOD_REVERB3D* reverb3d, void** userdata); 314 } 315 316 // Wraps SoftwareFormat calls 317 struct SoftwareFormat { 318 int samplerate; 319 int numrawspeakers; 320 FMOD_SPEAKERMODE speakermode; 321 } 322 323 struct SpeakerPosition { 324 FMOD_SPEAKER speaker; 325 float x, y; 326 bool active; 327 } 328 329 struct StreamBufferSize { 330 uint filebuffersize, filebuffersizetype; 331 } 332 333 struct Settings3D { 334 float dopplerscale, distancefactor, rolloffscale; 335 } 336 337 /* 338 Wraps the FMOD_System C struct 339 */ 340 class System { 341 FMOD_SYSTEM *sys; 342 343 this() { 344 assert(FMOD_System_Create(&this.sys) == FMOD_RESULT.OK); 345 } 346 347 ~this() { 348 assert(FMOD_System_Release(this.sys) == FMOD_RESULT.OK); 349 } 350 351 void SetOutput(FMOD_OUTPUTTYPE output) { 352 assert(FMOD_System_SetOutput(this.sys, output) == FMOD_RESULT.OK); 353 } 354 355 FMOD_OUTPUTTYPE GetOutput() { 356 FMOD_OUTPUTTYPE output; 357 assert(FMOD_System_GetOutput(this.sys, &output) == FMOD_RESULT.OK); 358 return output; 359 } 360 361 int GetNumDrivers() { 362 int num; 363 assert(FMOD_System_GetNumDrivers(this.sys, &num) == FMOD_RESULT.OK); 364 return num; 365 } 366 367 void SetDriver(int driver) { 368 assert(FMOD_System_SetDriver(this.sys, driver) == FMOD_RESULT.OK); 369 } 370 371 int GetDriver() { 372 int driver; 373 assert(FMOD_System_GetDriver(this.sys, &driver) == FMOD_RESULT.OK); 374 return driver; 375 } 376 377 void SetSoftwareChannels(int num) { 378 assert(FMOD_System_SetSoftwareChannels(this.sys, num) == FMOD_RESULT.OK); 379 } 380 381 int GetSoftwareChannels() { 382 int num; 383 assert(FMOD_System_GetSoftwareChannels(this.sys, &num) == FMOD_RESULT.OK); 384 return num; 385 } 386 387 void SetSoftwareFormat(SoftwareFormat *fmt) { 388 assert(FMOD_System_SetSoftwareFormat(this.sys, 389 fmt.samplerate, fmt.speakermode, fmt.numrawspeakers) == FMOD_RESULT.OK); 390 } 391 392 SoftwareFormat GetSoftwareFormat() { 393 SoftwareFormat fmt; 394 assert(FMOD_System_GetSoftwareFormat(this.sys, 395 &fmt.samplerate, &fmt.speakermode, &fmt.numrawspeakers) == FMOD_RESULT.OK); 396 return fmt; 397 } 398 399 void SetAdvancedSettings(FMOD_ADVANCEDSETTINGS *settings) { 400 assert(FMOD_System_SetAdvancedSettings(this.sys, settings) == FMOD_RESULT.OK); 401 } 402 403 FMOD_ADVANCEDSETTINGS GetAdvancedSettings() { 404 FMOD_ADVANCEDSETTINGS settings; 405 assert(FMOD_System_GetAdvancedSettings(this.sys, &settings) == FMOD_RESULT.OK); 406 return settings; 407 } 408 409 void init(int maxchannels, uint flags, void *extradriverdata) { 410 assert(FMOD_System_Init(this.sys, maxchannels, flags, extradriverdata) == FMOD_RESULT.OK); 411 } 412 413 void close() { 414 assert(FMOD_System_Close(this.sys) == FMOD_RESULT.OK); 415 } 416 417 void update() { 418 assert(FMOD_System_Update(this.sys) == FMOD_RESULT.OK); 419 } 420 421 void SetSpeakerPosition(SpeakerPosition *pos) { 422 assert(FMOD_System_SetSpeakerPosition(this.sys, 423 pos.speaker, pos.x, pos.y, cast(int)pos.active) == FMOD_RESULT.OK); 424 } 425 426 SpeakerPosition GetSpeakerPosition() { 427 SpeakerPosition pos; 428 int active; 429 430 assert(FMOD_System_GetSpeakerPosition(this.sys, pos.speaker, &pos.x, &pos.y, &active) == FMOD_RESULT.OK); 431 pos.active = cast(bool)active; 432 return pos; 433 } 434 435 void SetStreamBufferSize(StreamBufferSize *size) { 436 assert(FMOD_System_SetStreamBufferSize(this.sys, 437 size.filebuffersize, size.filebuffersizetype) == FMOD_RESULT.OK); 438 } 439 440 StreamBufferSize GetStreamBufferSize() { 441 StreamBufferSize size; 442 assert(FMOD_System_GetStreamBufferSize(this.sys, 443 &size.filebuffersize, &size.filebuffersizetype) == FMOD_RESULT.OK); 444 return size; 445 } 446 447 void Set3DSettings(Settings3D *settings) { 448 assert(FMOD_System_Set3DSettings(this.sys, 449 settings.dopplerscale, settings.distancefactor, settings.rolloffscale) == FMOD_RESULT.OK); 450 } 451 452 Settings3D Get3DSettings() { 453 Settings3D settings; 454 assert(FMOD_System_Get3DSettings(this.sys, 455 &settings.dopplerscale, &settings.distancefactor, &settings.rolloffscale) == FMOD_RESULT.OK); 456 return settings; 457 } 458 459 void Set3DNumListeners(int num) { 460 assert(FMOD_System_Set3DNumListeners(this.sys, num) == FMOD_RESULT.OK); 461 } 462 463 int Get3DNumListeners() { 464 int num; 465 assert(FMOD_System_Get3DNumListeners(this.sys, &num) == FMOD_RESULT.OK); 466 return num; 467 } 468 469 Sound CreateSound(string name_or_data, uint mode=0, FMOD_CREATESOUNDEXINFO *exinfo=null) { 470 return new Sound(this, name_or_data, mode, exinfo); 471 } 472 } 473 474 class Sound { 475 FMOD_SOUND *sound; 476 System sys; 477 478 this(System sys, string name, uint mode, FMOD_CREATESOUNDEXINFO *exinfo) { 479 this.sys = sys; 480 assert(FMOD_System_CreateSound(this.sys.sys, name.ptr, mode, exinfo, &this.sound) == FMOD_RESULT.OK); 481 } 482 483 void play(FMOD_CHANNELGROUP *group=null, bool paused=false, FMOD_CHANNEL *channel=null) { 484 assert(FMOD_System_PlaySound(this.sys.sys, this.sound, group, cast(int)paused, &channel) == FMOD_RESULT.OK); 485 } 486 } 487 488 /* 489 FMOD_RESULT FMOD_System_SetDSPBufferSize (FMOD_SYSTEM* system, uint bufferlength, int numbuffers); 490 FMOD_RESULT FMOD_System_GetDSPBufferSize (FMOD_SYSTEM* system, uint* bufferlength, int* numbuffers); 491 FMOD_RESULT FMOD_System_CreateDSPByPlugin (FMOD_SYSTEM* system, uint handle, FMOD_DSP** dsp); 492 FMOD_RESULT FMOD_System_GetDSPInfoByPlugin (FMOD_SYSTEM* system, uint handle, const(FMOD_DSP_DESCRIPTION*)* description); 493 FMOD_RESULT FMOD_System_RegisterCodec (FMOD_SYSTEM* system, FMOD_CODEC_DESCRIPTION* description, uint* handle, uint priority); 494 FMOD_RESULT FMOD_System_RegisterDSP (FMOD_SYSTEM* system, const(FMOD_DSP_DESCRIPTION)* description, uint* handle); 495 FMOD_RESULT FMOD_System_RegisterOutput (FMOD_SYSTEM* system, const(FMOD_OUTPUT_DESCRIPTION)* description, uint* handle); 496 FMOD_RESULT FMOD_System_CreateDSP (FMOD_SYSTEM* system, const(FMOD_DSP_DESCRIPTION)* description, FMOD_DSP** dsp); 497 FMOD_RESULT FMOD_System_CreateDSPByType (FMOD_SYSTEM* system, FMOD_DSP_TYPE type, FMOD_DSP** dsp); 498 FMOD_RESULT FMOD_System_PlayDSP (FMOD_SYSTEM* system, FMOD_DSP* dsp, FMOD_CHANNELGROUP* channelgroup, int paused, FMOD_CHANNEL** channel); 499 FMOD_RESULT FMOD_System_LockDSP (FMOD_SYSTEM* system); 500 FMOD_RESULT FMOD_System_UnlockDSP (FMOD_SYSTEM* system); 501 FMOD_RESULT FMOD_Channel_GetDSPClock (FMOD_CHANNEL* channel, ulong* dspclock, ulong* parentclock); 502 FMOD_RESULT FMOD_Channel_GetDSP (FMOD_CHANNEL* channel, int index, FMOD_DSP** dsp); 503 FMOD_RESULT FMOD_Channel_AddDSP (FMOD_CHANNEL* channel, int index, FMOD_DSP* dsp); 504 FMOD_RESULT FMOD_Channel_RemoveDSP (FMOD_CHANNEL* channel, FMOD_DSP* dsp); 505 FMOD_RESULT FMOD_Channel_GetNumDSPs (FMOD_CHANNEL* channel, int* numdsps); 506 FMOD_RESULT FMOD_Channel_SetDSPIndex (FMOD_CHANNEL* channel, FMOD_DSP* dsp, int index); 507 FMOD_RESULT FMOD_Channel_GetDSPIndex (FMOD_CHANNEL* channel, FMOD_DSP* dsp, int* index); 508 FMOD_RESULT FMOD_Channel_OverridePanDSP (FMOD_CHANNEL* channel, FMOD_DSP* pan); 509 FMOD_RESULT FMOD_ChannelGroup_GetDSPClock (FMOD_CHANNELGROUP* channelgroup, ulong* dspclock, ulong* parentclock); 510 FMOD_RESULT FMOD_ChannelGroup_GetDSP (FMOD_CHANNELGROUP* channelgroup, int index, FMOD_DSP** dsp); 511 FMOD_RESULT FMOD_ChannelGroup_AddDSP (FMOD_CHANNELGROUP* channelgroup, int index, FMOD_DSP* dsp); 512 FMOD_RESULT FMOD_ChannelGroup_RemoveDSP (FMOD_CHANNELGROUP* channelgroup, FMOD_DSP* dsp); 513 FMOD_RESULT FMOD_ChannelGroup_GetNumDSPs (FMOD_CHANNELGROUP* channelgroup, int* numdsps); 514 FMOD_RESULT FMOD_ChannelGroup_SetDSPIndex (FMOD_CHANNELGROUP* channelgroup, FMOD_DSP* dsp, int index); 515 FMOD_RESULT FMOD_ChannelGroup_GetDSPIndex (FMOD_CHANNELGROUP* channelgroup, FMOD_DSP* dsp, int* index); 516 FMOD_RESULT FMOD_ChannelGroup_OverridePanDSP (FMOD_CHANNELGROUP* channelgroup, FMOD_DSP* pan); 517 FMOD_RESULT FMOD_ChannelGroup_AddGroup (FMOD_CHANNELGROUP* channelgroup, FMOD_CHANNELGROUP* group, int propagatedspclock, FMOD_DSPCONNECTION** connection); 518 FMOD_RESULT FMOD_DSP_Release (FMOD_DSP* dsp); 519 FMOD_RESULT FMOD_DSP_GetSystemObject (FMOD_DSP* dsp, FMOD_SYSTEM** system); 520 FMOD_RESULT FMOD_DSP_AddInput (FMOD_DSP* dsp, FMOD_DSP* input, FMOD_DSPCONNECTION** connection, FMOD_DSPCONNECTION_TYPE type); 521 FMOD_RESULT FMOD_DSP_DisconnectFrom (FMOD_DSP* dsp, FMOD_DSP* target, FMOD_DSPCONNECTION* connection); 522 FMOD_RESULT FMOD_DSP_DisconnectAll (FMOD_DSP* dsp, int inputs, int outputs); 523 FMOD_RESULT FMOD_DSP_GetNumInputs (FMOD_DSP* dsp, int* numinputs); 524 FMOD_RESULT FMOD_DSP_GetNumOutputs (FMOD_DSP* dsp, int* numoutputs); 525 FMOD_RESULT FMOD_DSP_GetInput (FMOD_DSP* dsp, int index, FMOD_DSP** input, FMOD_DSPCONNECTION** inputconnection); 526 FMOD_RESULT FMOD_DSP_GetOutput (FMOD_DSP* dsp, int index, FMOD_DSP** output, FMOD_DSPCONNECTION** outputconnection); 527 FMOD_RESULT FMOD_DSP_SetActive (FMOD_DSP* dsp, int active); 528 FMOD_RESULT FMOD_DSP_GetActive (FMOD_DSP* dsp, int* active); 529 FMOD_RESULT FMOD_DSP_SetBypass (FMOD_DSP* dsp, int bypass); 530 FMOD_RESULT FMOD_DSP_GetBypass (FMOD_DSP* dsp, int* bypass); 531 FMOD_RESULT FMOD_DSP_SetWetDryMix (FMOD_DSP* dsp, float prewet, float postwet, float dry); 532 FMOD_RESULT FMOD_DSP_GetWetDryMix (FMOD_DSP* dsp, float* prewet, float* postwet, float* dry); 533 FMOD_RESULT FMOD_DSP_SetChannelFormat (FMOD_DSP* dsp, uint channelmask, int numchannels, FMOD_SPEAKERMODE source_speakermode); 534 FMOD_RESULT FMOD_DSP_GetChannelFormat (FMOD_DSP* dsp, uint* channelmask, int* numchannels, FMOD_SPEAKERMODE* source_speakermode); 535 FMOD_RESULT FMOD_DSP_GetOutputChannelFormat (FMOD_DSP* dsp, uint inmask, int inchannels, FMOD_SPEAKERMODE inspeakermode, uint* outmask, int* outchannels, FMOD_SPEAKERMODE* outspeakermode); 536 FMOD_RESULT FMOD_DSP_Reset (FMOD_DSP* dsp); 537 FMOD_RESULT FMOD_DSP_SetParameterFloat (FMOD_DSP* dsp, int index, float value); 538 FMOD_RESULT FMOD_DSP_SetParameterInt (FMOD_DSP* dsp, int index, int value); 539 FMOD_RESULT FMOD_DSP_SetParameterBool (FMOD_DSP* dsp, int index, int value); 540 FMOD_RESULT FMOD_DSP_SetParameterData (FMOD_DSP* dsp, int index, void* data, uint length); 541 FMOD_RESULT FMOD_DSP_GetParameterFloat (FMOD_DSP* dsp, int index, float* value, char* valuestr, int valuestrlen); 542 FMOD_RESULT FMOD_DSP_GetParameterInt (FMOD_DSP* dsp, int index, int* value, char* valuestr, int valuestrlen); 543 FMOD_RESULT FMOD_DSP_GetParameterBool (FMOD_DSP* dsp, int index, int* value, char* valuestr, int valuestrlen); 544 FMOD_RESULT FMOD_DSP_GetParameterData (FMOD_DSP* dsp, int index, void** data, uint* length, char* valuestr, int valuestrlen); 545 FMOD_RESULT FMOD_DSP_GetNumParameters (FMOD_DSP* dsp, int* numparams); 546 FMOD_RESULT FMOD_DSP_GetParameterInfo (FMOD_DSP* dsp, int index, FMOD_DSP_PARAMETER_DESC** desc); 547 FMOD_RESULT FMOD_DSP_GetDataParameterIndex (FMOD_DSP* dsp, int datatype, int* index); 548 FMOD_RESULT FMOD_DSP_ShowConfigDialog (FMOD_DSP* dsp, void* hwnd, int show); 549 FMOD_RESULT FMOD_DSP_GetInfo (FMOD_DSP* dsp, char* name, uint* version_, int* channels, int* configwidth, int* configheight); 550 FMOD_RESULT FMOD_DSP_GetType (FMOD_DSP* dsp, FMOD_DSP_TYPE* type); 551 FMOD_RESULT FMOD_DSP_GetIdle (FMOD_DSP* dsp, int* idle); 552 FMOD_RESULT FMOD_DSP_SetUserData (FMOD_DSP* dsp, void* userdata); 553 FMOD_RESULT FMOD_DSP_GetUserData (FMOD_DSP* dsp, void** userdata); 554 FMOD_RESULT FMOD_DSP_SetMeteringEnabled (FMOD_DSP* dsp, int inputEnabled, int outputEnabled); 555 FMOD_RESULT FMOD_DSP_GetMeteringEnabled (FMOD_DSP* dsp, int* inputEnabled, int* outputEnabled); 556 FMOD_RESULT FMOD_DSP_GetMeteringInfo (FMOD_DSP* dsp, FMOD_DSP_METERING_INFO* inputInfo, FMOD_DSP_METERING_INFO* outputInfo); 557 FMOD_RESULT FMOD_DSPConnection_GetInput (FMOD_DSPCONNECTION* dspconnection, FMOD_DSP** input); 558 FMOD_RESULT FMOD_DSPConnection_GetOutput (FMOD_DSPCONNECTION* dspconnection, FMOD_DSP** output); 559 FMOD_RESULT FMOD_DSPConnection_SetMix (FMOD_DSPCONNECTION* dspconnection, float volume); 560 FMOD_RESULT FMOD_DSPConnection_GetMix (FMOD_DSPCONNECTION* dspconnection, float* volume); 561 FMOD_RESULT FMOD_DSPConnection_SetMixMatrix (FMOD_DSPCONNECTION* dspconnection, float* matrix, int outchannels, int inchannels, int inchannel_hop); 562 FMOD_RESULT FMOD_DSPConnection_GetMixMatrix (FMOD_DSPCONNECTION* dspconnection, float* matrix, int* outchannels, int* inchannels, int inchannel_hop); 563 FMOD_RESULT FMOD_DSPConnection_GetType (FMOD_DSPCONNECTION* dspconnection, FMOD_DSPCONNECTION_TYPE* type); 564 FMOD_RESULT FMOD_DSPConnection_SetUserData (FMOD_DSPCONNECTION* dspconnection, void* userdata); 565 FMOD_RESULT FMOD_DSPConnection_GetUserData (FMOD_DSPCONNECTION* dspconnection, void** userdata); 566 */