summary refs log tree commit diff stats
path: root/vendor/fmod/inc/fmod_studio.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/fmod/inc/fmod_studio.hpp')
-rw-r--r--vendor/fmod/inc/fmod_studio.hpp402
1 files changed, 402 insertions, 0 deletions
diff --git a/vendor/fmod/inc/fmod_studio.hpp b/vendor/fmod/inc/fmod_studio.hpp new file mode 100644 index 0000000..460f213 --- /dev/null +++ b/vendor/fmod/inc/fmod_studio.hpp
@@ -0,0 +1,402 @@
1/* ======================================================================================== */
2/* FMOD Studio API - C++ header file. */
3/* Copyright (c), Firelight Technologies Pty, Ltd. 2004-2021. */
4/* */
5/* Use this header in conjunction with fmod_studio_common.h (which contains all the */
6/* constants / callbacks) to develop using the C++ language. */
7/* */
8/* For more detail visit: */
9/* https://fmod.com/resources/documentation-api?version=2.0&page=page=studio-api.html */
10/* ======================================================================================== */
11#ifndef FMOD_STUDIO_HPP
12#define FMOD_STUDIO_HPP
13
14#include "fmod_studio_common.h"
15#include "fmod_studio.h"
16
17#include "fmod.hpp"
18
19namespace FMOD
20{
21
22namespace Studio
23{
24 typedef FMOD_GUID ID; // Deprecated. Please use FMOD_GUID type.
25
26 class System;
27 class EventDescription;
28 class EventInstance;
29 class Bus;
30 class VCA;
31 class Bank;
32 class CommandReplay;
33
34 inline FMOD_RESULT parseID(const char *idstring, FMOD_GUID *id) { return FMOD_Studio_ParseID(idstring, id); }
35
36 class System
37 {
38 private:
39 // Constructor made private so user cannot statically instance a System class. System::create must be used.
40 System();
41 System(const System &);
42
43 public:
44 static FMOD_RESULT F_API create(System **system, unsigned int headerversion = FMOD_VERSION);
45 FMOD_RESULT F_API setAdvancedSettings(FMOD_STUDIO_ADVANCEDSETTINGS *settings);
46 FMOD_RESULT F_API getAdvancedSettings(FMOD_STUDIO_ADVANCEDSETTINGS *settings);
47 FMOD_RESULT F_API initialize(int maxchannels, FMOD_STUDIO_INITFLAGS studioflags, FMOD_INITFLAGS flags, void *extradriverdata);
48 FMOD_RESULT F_API release();
49
50 // Handle validity
51 bool F_API isValid() const;
52
53 // Update processing
54 FMOD_RESULT F_API update();
55 FMOD_RESULT F_API flushCommands();
56 FMOD_RESULT F_API flushSampleLoading();
57
58 // Low-level API access
59 FMOD_RESULT F_API getCoreSystem(FMOD::System **system) const;
60
61 // Asset retrieval
62 FMOD_RESULT F_API getEvent(const char *path, EventDescription **event) const;
63 FMOD_RESULT F_API getBus(const char *path, Bus **bus) const;
64 FMOD_RESULT F_API getVCA(const char *path, VCA **vca) const;
65 FMOD_RESULT F_API getBank(const char *path, Bank **bank) const;
66 FMOD_RESULT F_API getEventByID(const FMOD_GUID *id, EventDescription **event) const;
67 FMOD_RESULT F_API getBusByID(const FMOD_GUID *id, Bus **bus) const;
68 FMOD_RESULT F_API getVCAByID(const FMOD_GUID *id, VCA **vca) const;
69 FMOD_RESULT F_API getBankByID(const FMOD_GUID *id, Bank **bank) const;
70 FMOD_RESULT F_API getSoundInfo(const char *key, FMOD_STUDIO_SOUND_INFO *info) const;
71 FMOD_RESULT F_API getParameterDescriptionByName(const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
72 FMOD_RESULT F_API getParameterDescriptionByID(FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
73 FMOD_RESULT F_API getParameterLabelByName(const char *name, int labelindex, char *label, int size, int *retrieved) const;
74 FMOD_RESULT F_API getParameterLabelByID(FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved) const;
75
76 // Global parameter control
77 FMOD_RESULT F_API getParameterByID(FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue = 0) const;
78 FMOD_RESULT F_API setParameterByID(FMOD_STUDIO_PARAMETER_ID id, float value, bool ignoreseekspeed = false);
79 FMOD_RESULT F_API setParameterByIDWithLabel(FMOD_STUDIO_PARAMETER_ID id, const char *label, bool ignoreseekspeed = false);
80 FMOD_RESULT F_API setParametersByIDs(const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, bool ignoreseekspeed = false);
81 FMOD_RESULT F_API getParameterByName(const char *name, float *value, float *finalvalue = 0) const;
82 FMOD_RESULT F_API setParameterByName(const char *name, float value, bool ignoreseekspeed = false);
83 FMOD_RESULT F_API setParameterByNameWithLabel(const char *name, const char *label, bool ignoreseekspeed = false);
84
85 // Path lookup
86 FMOD_RESULT F_API lookupID(const char *path, FMOD_GUID *id) const;
87 FMOD_RESULT F_API lookupPath(const FMOD_GUID *id, char *path, int size, int *retrieved) const;
88
89 // Listener control
90 FMOD_RESULT F_API getNumListeners(int *numlisteners);
91 FMOD_RESULT F_API setNumListeners(int numlisteners);
92 FMOD_RESULT F_API getListenerAttributes(int listener, FMOD_3D_ATTRIBUTES *attributes, FMOD_VECTOR *attenuationposition = 0) const;
93 FMOD_RESULT F_API setListenerAttributes(int listener, const FMOD_3D_ATTRIBUTES *attributes, const FMOD_VECTOR *attenuationposition = 0);
94 FMOD_RESULT F_API getListenerWeight(int listener, float *weight);
95 FMOD_RESULT F_API setListenerWeight(int listener, float weight);
96
97 // Bank control
98 FMOD_RESULT F_API loadBankFile(const char *filename, FMOD_STUDIO_LOAD_BANK_FLAGS flags, Bank **bank);
99 FMOD_RESULT F_API loadBankMemory(const char *buffer, int length, FMOD_STUDIO_LOAD_MEMORY_MODE mode, FMOD_STUDIO_LOAD_BANK_FLAGS flags, Bank **bank);
100 FMOD_RESULT F_API loadBankCustom(const FMOD_STUDIO_BANK_INFO *info, FMOD_STUDIO_LOAD_BANK_FLAGS flags, Bank **bank);
101 FMOD_RESULT F_API unloadAll();
102
103 // General functionality
104 FMOD_RESULT F_API getBufferUsage(FMOD_STUDIO_BUFFER_USAGE *usage) const;
105 FMOD_RESULT F_API resetBufferUsage();
106 FMOD_RESULT F_API registerPlugin(const FMOD_DSP_DESCRIPTION *description);
107 FMOD_RESULT F_API unregisterPlugin(const char *name);
108
109 // Enumeration
110 FMOD_RESULT F_API getBankCount(int *count) const;
111 FMOD_RESULT F_API getBankList(Bank **array, int capacity, int *count) const;
112 FMOD_RESULT F_API getParameterDescriptionCount(int *count) const;
113 FMOD_RESULT F_API getParameterDescriptionList(FMOD_STUDIO_PARAMETER_DESCRIPTION *array, int capacity, int *count) const;
114
115 // Command capture and replay
116 FMOD_RESULT F_API startCommandCapture(const char *filename, FMOD_STUDIO_COMMANDCAPTURE_FLAGS flags);
117 FMOD_RESULT F_API stopCommandCapture();
118 FMOD_RESULT F_API loadCommandReplay(const char *filename, FMOD_STUDIO_COMMANDREPLAY_FLAGS flags, CommandReplay **replay);
119
120 // Callbacks
121 FMOD_RESULT F_API setCallback(FMOD_STUDIO_SYSTEM_CALLBACK callback, FMOD_STUDIO_SYSTEM_CALLBACK_TYPE callbackmask = FMOD_STUDIO_SYSTEM_CALLBACK_ALL);
122 FMOD_RESULT F_API getUserData(void **userdata) const;
123 FMOD_RESULT F_API setUserData(void *userdata);
124
125 // Monitoring
126 FMOD_RESULT F_API getCPUUsage(FMOD_STUDIO_CPU_USAGE *usage, FMOD_CPU_USAGE *usage_core) const;
127 FMOD_RESULT F_API getMemoryUsage(FMOD_STUDIO_MEMORY_USAGE *memoryusage) const;
128 };
129
130 class EventDescription
131 {
132 private:
133 // Constructor made private so user cannot statically instance the class.
134 EventDescription();
135 EventDescription(const EventDescription &);
136
137 public:
138 // Handle validity
139 bool F_API isValid() const;
140
141 // Property access
142 FMOD_RESULT F_API getID(FMOD_GUID *id) const;
143 FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const;
144 FMOD_RESULT F_API getParameterDescriptionCount(int *count) const;
145 FMOD_RESULT F_API getParameterDescriptionByIndex(int index, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
146 FMOD_RESULT F_API getParameterDescriptionByName(const char *name, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
147 FMOD_RESULT F_API getParameterDescriptionByID(FMOD_STUDIO_PARAMETER_ID id, FMOD_STUDIO_PARAMETER_DESCRIPTION *parameter) const;
148 FMOD_RESULT F_API getParameterLabelByIndex(int index, int labelindex, char *label, int size, int *retrieved) const;
149 FMOD_RESULT F_API getParameterLabelByName(const char *name, int labelindex, char *label, int size, int *retrieved) const;
150 FMOD_RESULT F_API getParameterLabelByID(FMOD_STUDIO_PARAMETER_ID id, int labelindex, char *label, int size, int *retrieved) const;
151 FMOD_RESULT F_API getUserPropertyCount(int *count) const;
152 FMOD_RESULT F_API getUserPropertyByIndex(int index, FMOD_STUDIO_USER_PROPERTY *property) const;
153 FMOD_RESULT F_API getUserProperty(const char *name, FMOD_STUDIO_USER_PROPERTY *property) const;
154 FMOD_RESULT F_API getLength(int *length) const;
155 FMOD_RESULT F_API getMinMaxDistance(float *min, float *max) const;
156 FMOD_RESULT F_API getSoundSize(float *size) const;
157
158 FMOD_RESULT F_API isSnapshot(bool *snapshot) const;
159 FMOD_RESULT F_API isOneshot(bool *oneshot) const;
160 FMOD_RESULT F_API isStream(bool *isStream) const;
161 FMOD_RESULT F_API is3D(bool *is3d) const;
162 FMOD_RESULT F_API isDopplerEnabled(bool *doppler) const;
163 FMOD_RESULT F_API hasSustainPoint(bool *sustainPoint) const;
164
165 // Playback control
166 FMOD_RESULT F_API createInstance(EventInstance **instance) const;
167 FMOD_RESULT F_API getInstanceCount(int *count) const;
168 FMOD_RESULT F_API getInstanceList(EventInstance **array, int capacity, int *count) const;
169
170 // Sample data loading control
171 FMOD_RESULT F_API loadSampleData();
172 FMOD_RESULT F_API unloadSampleData();
173 FMOD_RESULT F_API getSampleLoadingState(FMOD_STUDIO_LOADING_STATE *state) const;
174
175 // Convenience functions
176 FMOD_RESULT F_API releaseAllInstances();
177
178 // Callbacks
179 FMOD_RESULT F_API setCallback(FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask = FMOD_STUDIO_EVENT_CALLBACK_ALL);
180 FMOD_RESULT F_API getUserData(void **userdata) const;
181 FMOD_RESULT F_API setUserData(void *userdata);
182 };
183
184 class EventInstance
185 {
186 private:
187 // Constructor made private so user cannot statically instance the class.
188 EventInstance();
189 EventInstance(const EventInstance &);
190
191 public:
192 // Handle validity
193 bool F_API isValid() const;
194
195 // Property access
196 FMOD_RESULT F_API getDescription(EventDescription **description) const;
197
198 // Playback control
199 FMOD_RESULT F_API getVolume(float *volume, float *finalvolume = 0) const;
200 FMOD_RESULT F_API setVolume(float volume);
201
202 FMOD_RESULT F_API getPitch(float *pitch, float *finalpitch = 0) const;
203 FMOD_RESULT F_API setPitch(float pitch);
204
205 FMOD_RESULT F_API get3DAttributes(FMOD_3D_ATTRIBUTES *attributes) const;
206 FMOD_RESULT F_API set3DAttributes(const FMOD_3D_ATTRIBUTES *attributes);
207
208 FMOD_RESULT F_API getListenerMask(unsigned int *mask) const;
209 FMOD_RESULT F_API setListenerMask(unsigned int mask);
210
211 FMOD_RESULT F_API getProperty(FMOD_STUDIO_EVENT_PROPERTY index, float *value) const;
212 FMOD_RESULT F_API setProperty(FMOD_STUDIO_EVENT_PROPERTY index, float value);
213
214 FMOD_RESULT F_API getReverbLevel(int index, float *level) const;
215 FMOD_RESULT F_API setReverbLevel(int index, float level);
216
217 FMOD_RESULT F_API getPaused(bool *paused) const;
218 FMOD_RESULT F_API setPaused(bool paused);
219
220 FMOD_RESULT F_API start();
221 FMOD_RESULT F_API stop(FMOD_STUDIO_STOP_MODE mode);
222
223 FMOD_RESULT F_API getTimelinePosition(int *position) const;
224 FMOD_RESULT F_API setTimelinePosition(int position);
225
226 FMOD_RESULT F_API getPlaybackState(FMOD_STUDIO_PLAYBACK_STATE *state) const;
227
228 FMOD_RESULT F_API getChannelGroup(ChannelGroup **group) const;
229
230 FMOD_RESULT F_API getMinMaxDistance(float *min, float *max) const;
231
232 FMOD_RESULT F_API release();
233
234 FMOD_RESULT F_API isVirtual(bool *virtualstate) const;
235
236 FMOD_RESULT F_API getParameterByID(FMOD_STUDIO_PARAMETER_ID id, float *value, float *finalvalue = 0) const;
237 FMOD_RESULT F_API setParameterByID(FMOD_STUDIO_PARAMETER_ID id, float value, bool ignoreseekspeed = false);
238 FMOD_RESULT F_API setParameterByIDWithLabel(FMOD_STUDIO_PARAMETER_ID id, const char* label, bool ignoreseekspeed = false);
239 FMOD_RESULT F_API setParametersByIDs(const FMOD_STUDIO_PARAMETER_ID *ids, float *values, int count, bool ignoreseekspeed = false);
240
241 FMOD_RESULT F_API getParameterByName(const char *name, float *value, float *finalvalue = 0) const;
242 FMOD_RESULT F_API setParameterByName(const char *name, float value, bool ignoreseekspeed = false);
243 FMOD_RESULT F_API setParameterByNameWithLabel(const char *name, const char* label, bool ignoreseekspeed = false);
244
245 FMOD_RESULT F_API keyOff();
246
247 // Monitoring
248 FMOD_RESULT F_API getCPUUsage(unsigned int *exclusive, unsigned int *inclusive) const;
249 FMOD_RESULT F_API getMemoryUsage(FMOD_STUDIO_MEMORY_USAGE *memoryusage) const;
250
251 // Callbacks
252 FMOD_RESULT F_API setCallback(FMOD_STUDIO_EVENT_CALLBACK callback, FMOD_STUDIO_EVENT_CALLBACK_TYPE callbackmask = FMOD_STUDIO_EVENT_CALLBACK_ALL);
253 FMOD_RESULT F_API getUserData(void **userdata) const;
254 FMOD_RESULT F_API setUserData(void *userdata);
255 };
256
257 class Bus
258 {
259 private:
260 // Constructor made private so user cannot statically instance the class.
261 Bus();
262 Bus(const Bus &);
263
264 public:
265 // Handle validity
266 bool F_API isValid() const;
267
268 // Property access
269 FMOD_RESULT F_API getID(FMOD_GUID *id) const;
270 FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const;
271
272 // Playback control
273 FMOD_RESULT F_API getVolume(float *volume, float *finalvolume = 0) const;
274 FMOD_RESULT F_API setVolume(float volume);
275
276 FMOD_RESULT F_API getPaused(bool *paused) const;
277 FMOD_RESULT F_API setPaused(bool paused);
278
279 FMOD_RESULT F_API getMute(bool *mute) const;
280 FMOD_RESULT F_API setMute(bool mute);
281
282 FMOD_RESULT F_API stopAllEvents(FMOD_STUDIO_STOP_MODE mode);
283
284 // Output port
285 FMOD_RESULT F_API getPortIndex(FMOD_PORT_INDEX *index) const;
286 FMOD_RESULT F_API setPortIndex(FMOD_PORT_INDEX index);
287
288 // Low-level API access
289 FMOD_RESULT F_API lockChannelGroup();
290 FMOD_RESULT F_API unlockChannelGroup();
291 FMOD_RESULT F_API getChannelGroup(FMOD::ChannelGroup **group) const;
292
293 // Monitoring
294 FMOD_RESULT F_API getCPUUsage(unsigned int *exclusive, unsigned int *inclusive) const;
295 FMOD_RESULT F_API getMemoryUsage(FMOD_STUDIO_MEMORY_USAGE *memoryusage) const;
296 };
297
298 class VCA
299 {
300 private:
301 // Constructor made private so user cannot statically instance the class.
302 VCA();
303 VCA(const VCA &);
304
305 public:
306 // Handle validity
307 bool F_API isValid() const;
308
309 // Property access
310 FMOD_RESULT F_API getID(FMOD_GUID *id) const;
311 FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const;
312
313 // Playback control
314 FMOD_RESULT F_API getVolume(float *volume, float *finalvolume = 0) const;
315 FMOD_RESULT F_API setVolume(float volume);
316 };
317
318 class Bank
319 {
320 private:
321 // Constructor made private so user cannot statically instance the class.
322 Bank();
323 Bank(const Bank &);
324
325 public:
326 // Handle validity
327 bool F_API isValid() const;
328
329 // Property access
330 FMOD_RESULT F_API getID(FMOD_GUID *id) const;
331 FMOD_RESULT F_API getPath(char *path, int size, int *retrieved) const;
332
333 // Loading control
334 FMOD_RESULT F_API unload();
335 FMOD_RESULT F_API loadSampleData();
336 FMOD_RESULT F_API unloadSampleData();
337
338 FMOD_RESULT F_API getLoadingState(FMOD_STUDIO_LOADING_STATE *state) const;
339 FMOD_RESULT F_API getSampleLoadingState(FMOD_STUDIO_LOADING_STATE *state) const;
340
341 // Enumeration
342 FMOD_RESULT F_API getStringCount(int *count) const;
343 FMOD_RESULT F_API getStringInfo(int index, FMOD_GUID *id, char *path, int size, int *retrieved) const;
344 FMOD_RESULT F_API getEventCount(int *count) const;
345 FMOD_RESULT F_API getEventList(EventDescription **array, int capacity, int *count) const;
346 FMOD_RESULT F_API getBusCount(int *count) const;
347 FMOD_RESULT F_API getBusList(Bus **array, int capacity, int *count) const;
348 FMOD_RESULT F_API getVCACount(int *count) const;
349 FMOD_RESULT F_API getVCAList(VCA **array, int capacity, int *count) const;
350
351 FMOD_RESULT F_API getUserData(void **userdata) const;
352 FMOD_RESULT F_API setUserData(void *userdata);
353 };
354
355 class CommandReplay
356 {
357 private:
358 // Constructor made private so user cannot statically instance the class.
359 CommandReplay();
360 CommandReplay(const CommandReplay &);
361
362 public:
363 // Handle validity
364 bool F_API isValid() const;
365
366 // Information query
367 FMOD_RESULT F_API getSystem(System **system) const;
368 FMOD_RESULT F_API getLength(float *length) const;
369
370 FMOD_RESULT F_API getCommandCount(int *count) const;
371 FMOD_RESULT F_API getCommandInfo(int commandindex, FMOD_STUDIO_COMMAND_INFO *info) const;
372 FMOD_RESULT F_API getCommandString(int commandindex, char *buffer, int length) const;
373 FMOD_RESULT F_API getCommandAtTime(float time, int *commandindex) const;
374
375 // Playback
376 FMOD_RESULT F_API setBankPath(const char *bankPath);
377 FMOD_RESULT F_API start();
378 FMOD_RESULT F_API stop();
379 FMOD_RESULT F_API seekToTime(float time);
380 FMOD_RESULT F_API seekToCommand(int commandindex);
381 FMOD_RESULT F_API getPaused(bool *paused) const;
382 FMOD_RESULT F_API setPaused(bool paused);
383 FMOD_RESULT F_API getPlaybackState(FMOD_STUDIO_PLAYBACK_STATE *state) const;
384 FMOD_RESULT F_API getCurrentCommand(int *commandindex, float *currenttime) const;
385
386 // Release
387 FMOD_RESULT F_API release();
388
389 // Callbacks
390 FMOD_RESULT F_API setFrameCallback(FMOD_STUDIO_COMMANDREPLAY_FRAME_CALLBACK callback);
391 FMOD_RESULT F_API setLoadBankCallback(FMOD_STUDIO_COMMANDREPLAY_LOAD_BANK_CALLBACK callback);
392 FMOD_RESULT F_API setCreateInstanceCallback(FMOD_STUDIO_COMMANDREPLAY_CREATE_INSTANCE_CALLBACK callback);
393
394 FMOD_RESULT F_API getUserData(void **userdata) const;
395 FMOD_RESULT F_API setUserData(void *userdata);
396 };
397
398} // namespace Studio
399
400} // namespace FMOD
401
402#endif //FMOD_STUDIO_HPP