1 /*
2  * Copyright (c) 2017 Derelict Developers
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the names 'Derelict', 'DerelictFmod', nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 module derelict.fmodstudio.fmodstudio;
33 
34 public
35 {
36 	import derelict.fmodstudio.common;
37 	import derelict.fmodstudio.funcs;
38 }
39 
40 private
41 {
42 	import derelict.util.loader;
43 
44 	version(darwin)
45 		version = MacOSX;
46 	version(OSX)
47 		version = MacOSX;
48 }
49 
50 private
51 {
52 	import derelict.util.loader;
53 	import derelict.util.system;
54 
55 	static if(Derelict_OS_Windows)
56 		enum libNames = "fmodstudio.dll";    
57 	else static if (Derelict_OS_Mac)
58 		enum libNames = "libfmodstudio.dylib";
59 	else static if (Derelict_OS_Linux)
60 		enum libNames = "libfmodstudio.so";
61 	else
62 		static assert(0, "Need to implement FMOD libNames for this operating system.");
63 }
64 
65 class DerelictFmodStudioLoader : SharedLibLoader
66 {
67 
68 	protected
69 	{
70 		override void loadSymbols()
71 		{
72 			bindFunc(cast(void**)&FMOD_Studio_ParseID, "FMOD_Studio_ParseID");
73 			bindFunc(cast(void**)&FMOD_Studio_System_Create, "FMOD_Studio_System_Create");
74 
75 			/*$ preserve end $*/
76 
77 			/*
78 			System
79 			*/
80 			bindFunc(cast(void**)&FMOD_Studio_System_IsValid, "FMOD_Studio_System_IsValid");
81 			bindFunc(cast(void**)&FMOD_Studio_System_SetAdvancedSettings, "FMOD_Studio_System_SetAdvancedSettings");
82 			bindFunc(cast(void**)&FMOD_Studio_System_GetAdvancedSettings, "FMOD_Studio_System_GetAdvancedSettings");
83 			bindFunc(cast(void**)&FMOD_Studio_System_Initialize, "FMOD_Studio_System_Initialize");
84 			bindFunc(cast(void**)&FMOD_Studio_System_Release, "FMOD_Studio_System_Release");
85 			bindFunc(cast(void**)&FMOD_Studio_System_Update, "FMOD_Studio_System_Update");
86 			bindFunc(cast(void**)&FMOD_Studio_System_GetLowLevelSystem, "FMOD_Studio_System_GetLowLevelSystem");
87 			bindFunc(cast(void**)&FMOD_Studio_System_GetEvent, "FMOD_Studio_System_GetEvent");
88 			bindFunc(cast(void**)&FMOD_Studio_System_GetBus, "FMOD_Studio_System_GetBus");
89 			bindFunc(cast(void**)&FMOD_Studio_System_GetVCA, "FMOD_Studio_System_GetVCA");
90 			bindFunc(cast(void**)&FMOD_Studio_System_GetBank, "FMOD_Studio_System_GetBank");
91 			bindFunc(cast(void**)&FMOD_Studio_System_GetEventByID, "FMOD_Studio_System_GetEventByID");
92 			bindFunc(cast(void**)&FMOD_Studio_System_GetBusByID, "FMOD_Studio_System_GetBusByID");
93 			bindFunc(cast(void**)&FMOD_Studio_System_GetVCAByID, "FMOD_Studio_System_GetVCAByID");
94 			bindFunc(cast(void**)&FMOD_Studio_System_GetBankByID, "FMOD_Studio_System_GetBankByID");
95 			bindFunc(cast(void**)&FMOD_Studio_System_GetSoundInfo, "FMOD_Studio_System_GetSoundInfo");
96 			bindFunc(cast(void**)&FMOD_Studio_System_LookupID, "FMOD_Studio_System_LookupID");
97 			bindFunc(cast(void**)&FMOD_Studio_System_LookupPath, "FMOD_Studio_System_LookupPath");
98 			bindFunc(cast(void**)&FMOD_Studio_System_GetNumListeners, "FMOD_Studio_System_GetNumListeners");
99 			bindFunc(cast(void**)&FMOD_Studio_System_SetNumListeners, "FMOD_Studio_System_SetNumListeners");
100 			bindFunc(cast(void**)&FMOD_Studio_System_GetListenerAttributes, "FMOD_Studio_System_GetListenerAttributes");
101 			bindFunc(cast(void**)&FMOD_Studio_System_SetListenerAttributes, "FMOD_Studio_System_SetListenerAttributes");
102 			bindFunc(cast(void**)&FMOD_Studio_System_GetListenerWeight, "FMOD_Studio_System_GetListenerWeight");
103 			bindFunc(cast(void**)&FMOD_Studio_System_SetListenerWeight, "FMOD_Studio_System_SetListenerWeight");
104 			bindFunc(cast(void**)&FMOD_Studio_System_LoadBankFile, "FMOD_Studio_System_LoadBankFile");
105 			bindFunc(cast(void**)&FMOD_Studio_System_LoadBankMemory, "FMOD_Studio_System_LoadBankMemory");
106 			bindFunc(cast(void**)&FMOD_Studio_System_LoadBankCustom, "FMOD_Studio_System_LoadBankCustom");
107 			bindFunc(cast(void**)&FMOD_Studio_System_RegisterPlugin, "FMOD_Studio_System_RegisterPlugin");
108 			bindFunc(cast(void**)&FMOD_Studio_System_UnregisterPlugin, "FMOD_Studio_System_UnregisterPlugin");
109 			bindFunc(cast(void**)&FMOD_Studio_System_UnloadAll, "FMOD_Studio_System_UnloadAll");
110 			bindFunc(cast(void**)&FMOD_Studio_System_FlushCommands, "FMOD_Studio_System_FlushCommands");
111 			bindFunc(cast(void**)&FMOD_Studio_System_FlushSampleLoading, "FMOD_Studio_System_FlushSampleLoading");
112 			bindFunc(cast(void**)&FMOD_Studio_System_StartCommandCapture, "FMOD_Studio_System_StartCommandCapture");
113 			bindFunc(cast(void**)&FMOD_Studio_System_StopCommandCapture, "FMOD_Studio_System_StopCommandCapture");
114 			bindFunc(cast(void**)&FMOD_Studio_System_LoadCommandReplay, "FMOD_Studio_System_LoadCommandReplay");
115 			bindFunc(cast(void**)&FMOD_Studio_System_GetBankCount, "FMOD_Studio_System_GetBankCount");
116 			bindFunc(cast(void**)&FMOD_Studio_System_GetBankList, "FMOD_Studio_System_GetBankList");
117 			bindFunc(cast(void**)&FMOD_Studio_System_GetCPUUsage, "FMOD_Studio_System_GetCPUUsage");
118 			bindFunc(cast(void**)&FMOD_Studio_System_GetBufferUsage, "FMOD_Studio_System_GetBufferUsage");
119 			bindFunc(cast(void**)&FMOD_Studio_System_ResetBufferUsage, "FMOD_Studio_System_ResetBufferUsage");
120 			bindFunc(cast(void**)&FMOD_Studio_System_SetCallback, "FMOD_Studio_System_SetCallback");
121 			bindFunc(cast(void**)&FMOD_Studio_System_SetUserData, "FMOD_Studio_System_SetUserData");
122 			bindFunc(cast(void**)&FMOD_Studio_System_GetUserData, "FMOD_Studio_System_GetUserData");
123 
124 			/*
125 			EventDescription
126 			*/
127 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_IsValid, "FMOD_Studio_EventDescription_IsValid");
128 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetID, "FMOD_Studio_EventDescription_GetID");
129 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetPath, "FMOD_Studio_EventDescription_GetPath");
130 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetParameterCount, "FMOD_Studio_EventDescription_GetParameterCount");
131 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetParameterByIndex, "FMOD_Studio_EventDescription_GetParameterByIndex");
132 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetParameter, "FMOD_Studio_EventDescription_GetParameter");
133 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetParameterValue, "FMOD_Studio_EventInstance_GetParameterValue");
134 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetUserPropertyCount, "FMOD_Studio_EventDescription_GetUserPropertyCount");
135 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetUserPropertyByIndex, "FMOD_Studio_EventDescription_GetUserPropertyByIndex");
136 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetUserProperty, "FMOD_Studio_EventDescription_GetUserProperty");
137 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetLength, "FMOD_Studio_EventDescription_GetLength");
138 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetMinimumDistance, "FMOD_Studio_EventDescription_GetMinimumDistance");
139 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetMaximumDistance, "FMOD_Studio_EventDescription_GetMaximumDistance");
140 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetSoundSize, "FMOD_Studio_EventDescription_GetSoundSize");
141 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_IsSnapshot, "FMOD_Studio_EventDescription_IsSnapshot");
142 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_IsOneshot, "FMOD_Studio_EventDescription_IsOneshot");
143 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_IsStream, "FMOD_Studio_EventDescription_IsStream");
144 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_Is3D, "FMOD_Studio_EventDescription_Is3D");
145 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_HasCue, "FMOD_Studio_EventDescription_HasCue");
146 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_CreateInstance, "FMOD_Studio_EventDescription_CreateInstance");
147 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetInstanceCount, "FMOD_Studio_EventDescription_GetInstanceCount");
148 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetInstanceList, "FMOD_Studio_EventDescription_GetInstanceList");
149 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_LoadSampleData, "FMOD_Studio_EventDescription_LoadSampleData");
150 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_UnloadSampleData, "FMOD_Studio_EventDescription_UnloadSampleData");
151 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetSampleLoadingState, "FMOD_Studio_EventDescription_GetSampleLoadingState");
152 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_ReleaseAllInstances, "FMOD_Studio_EventDescription_ReleaseAllInstances");
153 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_SetCallback, "FMOD_Studio_EventDescription_SetCallback");
154 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_GetUserData, "FMOD_Studio_EventDescription_GetUserData");
155 			bindFunc(cast(void**)&FMOD_Studio_EventDescription_SetUserData, "FMOD_Studio_EventDescription_SetUserData");
156 
157 			/*
158 			EventInstance
159 			*/
160 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_IsValid, "FMOD_Studio_EventInstance_IsValid");
161 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetDescription, "FMOD_Studio_EventInstance_GetDescription");
162 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetVolume, "FMOD_Studio_EventInstance_GetVolume");
163 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetVolume, "FMOD_Studio_EventInstance_SetVolume");
164 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetPitch, "FMOD_Studio_EventInstance_GetPitch");
165 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetPitch, "FMOD_Studio_EventInstance_SetPitch");
166 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_Get3DAttributes, "FMOD_Studio_EventInstance_Get3DAttributes");
167 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_Set3DAttributes, "FMOD_Studio_EventInstance_Set3DAttributes");
168 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetListenerMask, "FMOD_Studio_EventInstance_GetListenerMask");
169 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetListenerMask, "FMOD_Studio_EventInstance_SetListenerMask");
170 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetProperty, "FMOD_Studio_EventInstance_GetProperty");
171 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetProperty, "FMOD_Studio_EventInstance_SetProperty");
172 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetReverbLevel, "FMOD_Studio_EventInstance_GetReverbLevel");
173 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetReverbLevel, "FMOD_Studio_EventInstance_SetReverbLevel");
174 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetPaused, "FMOD_Studio_EventInstance_GetPaused");
175 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetPaused, "FMOD_Studio_EventInstance_SetPaused");
176 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_Start, "FMOD_Studio_EventInstance_Start");
177 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_Stop, "FMOD_Studio_EventInstance_Stop");
178 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetTimelinePosition, "FMOD_Studio_EventInstance_GetTimelinePosition");
179 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetTimelinePosition, "FMOD_Studio_EventInstance_SetTimelinePosition");
180 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetPlaybackState, "FMOD_Studio_EventInstance_GetPlaybackState");
181 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetChannelGroup, "FMOD_Studio_EventInstance_GetChannelGroup");
182 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_Release, "FMOD_Studio_EventInstance_Release");
183 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_IsVirtual, "FMOD_Studio_EventInstance_IsVirtual");
184 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetParameter, "FMOD_Studio_EventInstance_GetParameter");
185 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetParameterByIndex, "FMOD_Studio_EventInstance_GetParameterByIndex");
186 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetParameterCount, "FMOD_Studio_EventInstance_GetParameterCount");
187 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetParameterValue, "FMOD_Studio_EventInstance_SetParameterValue");
188 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetParameterValueByIndex, "FMOD_Studio_EventInstance_GetParameterValueByIndex");
189 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetParameterValueByIndex, "FMOD_Studio_EventInstance_SetParameterValueByIndex");
190 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_TriggerCue, "FMOD_Studio_EventInstance_TriggerCue");
191 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetCallback, "FMOD_Studio_EventInstance_SetCallback");
192 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_GetUserData, "FMOD_Studio_EventInstance_GetUserData");
193 			bindFunc(cast(void**)&FMOD_Studio_EventInstance_SetUserData, "FMOD_Studio_EventInstance_SetUserData");
194 
195 			/*
196 			ParameterInstance
197 			*/
198 			bindFunc(cast(void**)&FMOD_Studio_ParameterInstance_IsValid, "FMOD_Studio_ParameterInstance_IsValid");
199 			bindFunc(cast(void**)&FMOD_Studio_ParameterInstance_GetDescription, "FMOD_Studio_ParameterInstance_GetDescription");
200 			bindFunc(cast(void**)&FMOD_Studio_ParameterInstance_GetValue, "FMOD_Studio_ParameterInstance_GetValue");
201 			bindFunc(cast(void**)&FMOD_Studio_ParameterInstance_SetValue, "FMOD_Studio_ParameterInstance_SetValue");
202 
203 			/*
204 			Bus
205 			*/
206 			bindFunc(cast(void**)&FMOD_Studio_Bus_IsValid, "FMOD_Studio_Bus_IsValid");
207 			bindFunc(cast(void**)&FMOD_Studio_Bus_GetID, "FMOD_Studio_Bus_GetID");
208 			bindFunc(cast(void**)&FMOD_Studio_Bus_GetPath, "FMOD_Studio_Bus_GetPath");
209 			bindFunc(cast(void**)&FMOD_Studio_Bus_SetVolume, "FMOD_Studio_Bus_SetVolume");
210 			bindFunc(cast(void**)&FMOD_Studio_Bus_GetVolume, "FMOD_Studio_Bus_GetVolume");
211 			bindFunc(cast(void**)&FMOD_Studio_Bus_GetPaused, "FMOD_Studio_Bus_GetPaused");
212 			bindFunc(cast(void**)&FMOD_Studio_Bus_SetPaused, "FMOD_Studio_Bus_SetPaused");
213 			bindFunc(cast(void**)&FMOD_Studio_Bus_GetMute, "FMOD_Studio_Bus_GetMute");
214 			bindFunc(cast(void**)&FMOD_Studio_Bus_SetMute, "FMOD_Studio_Bus_SetMute");
215 			bindFunc(cast(void**)&FMOD_Studio_Bus_StopAllEvents, "FMOD_Studio_Bus_StopAllEvents");
216 			bindFunc(cast(void**)&FMOD_Studio_Bus_LockChannelGroup, "FMOD_Studio_Bus_LockChannelGroup");
217 			bindFunc(cast(void**)&FMOD_Studio_Bus_UnlockChannelGroup, "FMOD_Studio_Bus_UnlockChannelGroup");
218 			bindFunc(cast(void**)&FMOD_Studio_Bus_GetChannelGroup, "FMOD_Studio_Bus_GetChannelGroup");
219 
220 			/*
221 			VCA
222 			*/
223 			bindFunc(cast(void**)&FMOD_Studio_VCA_IsValid, "FMOD_Studio_VCA_IsValid");
224 			bindFunc(cast(void**)&FMOD_Studio_VCA_GetID, "FMOD_Studio_VCA_GetID");
225 			bindFunc(cast(void**)&FMOD_Studio_VCA_GetPath, "FMOD_Studio_VCA_GetPath");
226 			bindFunc(cast(void**)&FMOD_Studio_VCA_GetVolume, "FMOD_Studio_VCA_GetVolume");
227 			bindFunc(cast(void**)&FMOD_Studio_VCA_SetVolume, "FMOD_Studio_VCA_SetVolume");
228 
229 			/*
230 			Bank
231 			*/
232 			bindFunc(cast(void**)&FMOD_Studio_Bank_IsValid, "FMOD_Studio_Bank_IsValid");
233 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetID, "FMOD_Studio_Bank_GetID");
234 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetPath, "FMOD_Studio_Bank_GetPath");
235 			bindFunc(cast(void**)&FMOD_Studio_Bank_Unload, "FMOD_Studio_Bank_Unload");
236 			bindFunc(cast(void**)&FMOD_Studio_Bank_LoadSampleData, "FMOD_Studio_Bank_LoadSampleData");
237 			bindFunc(cast(void**)&FMOD_Studio_Bank_UnloadSampleData, "FMOD_Studio_Bank_UnloadSampleData");
238 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetLoadingState, "FMOD_Studio_Bank_GetLoadingState");
239 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetSampleLoadingState, "FMOD_Studio_Bank_GetSampleLoadingState");
240 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetStringCount, "FMOD_Studio_Bank_GetStringCount");
241 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetStringInfo, "FMOD_Studio_Bank_GetStringInfo");
242 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetEventCount, "FMOD_Studio_Bank_GetEventCount");
243 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetEventList, "FMOD_Studio_Bank_GetEventList");
244 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetBusCount, "FMOD_Studio_Bank_GetBusCount");
245 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetBusList, "FMOD_Studio_Bank_GetBusList");
246 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetVCACount, "FMOD_Studio_Bank_GetVCACount");
247 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetVCAList, "FMOD_Studio_Bank_GetVCAList");
248 			bindFunc(cast(void**)&FMOD_Studio_Bank_GetUserData, "FMOD_Studio_Bank_GetUserData");
249 			bindFunc(cast(void**)&FMOD_Studio_Bank_SetUserData, "FMOD_Studio_Bank_SetUserData");
250 
251 			/*
252 			Command playback information
253 			*/
254 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_IsValid, "FMOD_Studio_CommandReplay_IsValid");
255 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetSystem, "FMOD_Studio_CommandReplay_GetSystem");
256 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetLength, "FMOD_Studio_CommandReplay_GetLength");
257 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetCommandCount, "FMOD_Studio_CommandReplay_GetCommandCount");
258 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetCommandInfo, "FMOD_Studio_CommandReplay_GetCommandInfo");
259 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetCommandString, "FMOD_Studio_CommandReplay_GetCommandString");
260 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetCommandAtTime, "FMOD_Studio_CommandReplay_GetCommandAtTime");
261 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_SetBankPath, "FMOD_Studio_CommandReplay_SetBankPath");
262 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_Start, "FMOD_Studio_CommandReplay_Start");
263 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_Stop, "FMOD_Studio_CommandReplay_Stop");
264 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_SeekToTime, "FMOD_Studio_CommandReplay_SeekToTime");
265 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_SeekToCommand, "FMOD_Studio_CommandReplay_SeekToCommand");
266 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetPaused, "FMOD_Studio_CommandReplay_GetPaused");
267 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_SetPaused, "FMOD_Studio_CommandReplay_SetPaused");
268 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetPlaybackState, "FMOD_Studio_CommandReplay_GetPlaybackState");
269 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetCurrentCommand, "FMOD_Studio_CommandReplay_GetCurrentCommand");
270 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_Release, "FMOD_Studio_CommandReplay_Release");
271 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_SetFrameCallback, "FMOD_Studio_CommandReplay_SetFrameCallback");
272 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_SetLoadBankCallback, "FMOD_Studio_CommandReplay_SetLoadBankCallback");
273 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_SetCreateInstanceCallback, "FMOD_Studio_CommandReplay_SetCreateInstanceCallback");
274 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_GetUserData, "FMOD_Studio_CommandReplay_GetUserData");
275 			bindFunc(cast(void**)&FMOD_Studio_CommandReplay_SetUserData, "FMOD_Studio_CommandReplay_SetUserData");
276 		}
277 	}
278 
279 	public
280 	{
281 		this()
282 		{
283 			super(libNames);
284 		}
285 	}
286 }
287 
288 __gshared DerelictFmodStudioLoader DerelictFmodStudio;
289 
290 shared static this()
291 {
292 	DerelictFmodStudio = new DerelictFmodStudioLoader();
293 }