1 module fmod.common; 2 3 extern (C): 4 5 // Functions and such 6 alias void function (FMOD_ASYNCREADINFO*, FMOD_RESULT) FMOD_FILE_ASYNCDONE; 7 alias FMOD_RESULT function (uint, const(char)*, int, const(char)*, const(char)*) FMOD_DEBUG_CALLBACK; 8 alias FMOD_RESULT function (FMOD_SYSTEM*, uint, void*, void*, void*) FMOD_SYSTEM_CALLBACK; 9 alias FMOD_RESULT function (FMOD_CHANNELCONTROL*, FMOD_CHANNELCONTROL_TYPE, FMOD_CHANNELCONTROL_CALLBACK_TYPE, void*, void*) FMOD_CHANNELCONTROL_CALLBACK; 10 alias FMOD_RESULT function (FMOD_SOUND*, FMOD_RESULT) FMOD_SOUND_NONBLOCK_CALLBACK; 11 alias FMOD_RESULT function (FMOD_SOUND*, void*, uint) FMOD_SOUND_PCMREAD_CALLBACK; 12 alias FMOD_RESULT function (FMOD_SOUND*, int, uint, uint) FMOD_SOUND_PCMSETPOS_CALLBACK; 13 alias FMOD_RESULT function (const(char)*, uint*, void**, void*) FMOD_FILE_OPEN_CALLBACK; 14 alias FMOD_RESULT function (void*, void*) FMOD_FILE_CLOSE_CALLBACK; 15 alias FMOD_RESULT function (void*, void*, uint, uint*, void*) FMOD_FILE_READ_CALLBACK; 16 alias FMOD_RESULT function (void*, uint, void*) FMOD_FILE_SEEK_CALLBACK; 17 alias FMOD_RESULT function (FMOD_ASYNCREADINFO*, void*) FMOD_FILE_ASYNCREAD_CALLBACK; 18 alias FMOD_RESULT function (FMOD_ASYNCREADINFO*, void*) FMOD_FILE_ASYNCCANCEL_CALLBACK; 19 alias void* function (uint, uint, const(char)*) FMOD_MEMORY_ALLOC_CALLBACK; 20 alias void* function (void*, uint, uint, const(char)*) FMOD_MEMORY_REALLOC_CALLBACK; 21 alias void function (void*, uint, const(char)*) FMOD_MEMORY_FREE_CALLBACK; 22 alias float function (FMOD_CHANNELCONTROL*, float) FMOD_3D_ROLLOFF_CALLBACK; 23 24 enum FMOD_RESULT { 25 OK = 0, 26 ERR_BADCOMMAND = 1, 27 ERR_CHANNEL_ALLOC = 2, 28 ERR_CHANNEL_STOLEN = 3, 29 ERR_DMA = 4, 30 ERR_DSP_CONNECTION = 5, 31 ERR_DSP_DONTPROCESS = 6, 32 ERR_DSP_FORMAT = 7, 33 ERR_DSP_INUSE = 8, 34 ERR_DSP_NOTFOUND = 9, 35 ERR_DSP_RESERVED = 10, 36 ERR_DSP_SILENCE = 11, 37 ERR_DSP_TYPE = 12, 38 ERR_FILE_BAD = 13, 39 ERR_FILE_COULDNOTSEEK = 14, 40 ERR_FILE_DISKEJECTED = 15, 41 ERR_FILE_EOF = 16, 42 ERR_FILE_ENDOFDATA = 17, 43 ERR_FILE_NOTFOUND = 18, 44 ERR_FORMAT = 19, 45 ERR_HEADER_MISMATCH = 20, 46 ERR_HTTP = 21, 47 ERR_HTTP_ACCESS = 22, 48 ERR_HTTP_PROXY_AUTH = 23, 49 ERR_HTTP_SERVER_ERROR = 24, 50 ERR_HTTP_TIMEOUT = 25, 51 ERR_INITIALIZATION = 26, 52 ERR_INITIALIZED = 27, 53 ERR_INTERNAL = 28, 54 ERR_INVALID_FLOAT = 29, 55 ERR_INVALID_HANDLE = 30, 56 ERR_INVALID_PARAM = 31, 57 ERR_INVALID_POSITION = 32, 58 ERR_INVALID_SPEAKER = 33, 59 ERR_INVALID_SYNCPOINT = 34, 60 ERR_INVALID_THREAD = 35, 61 ERR_INVALID_VECTOR = 36, 62 ERR_MAXAUDIBLE = 37, 63 ERR_MEMORY = 38, 64 ERR_MEMORY_CANTPOINT = 39, 65 ERR_NEEDS3D = 40, 66 ERR_NEEDSHARDWARE = 41, 67 ERR_NET_CONNECT = 42, 68 ERR_NET_SOCKET_ERROR = 43, 69 ERR_NET_URL = 44, 70 ERR_NET_WOULD_BLOCK = 45, 71 ERR_NOTREADY = 46, 72 ERR_OUTPUT_ALLOCATED = 47, 73 ERR_OUTPUT_CREATEBUFFER = 48, 74 ERR_OUTPUT_DRIVERCALL = 49, 75 ERR_OUTPUT_FORMAT = 50, 76 ERR_OUTPUT_INIT = 51, 77 ERR_OUTPUT_NODRIVERS = 52, 78 ERR_PLUGIN = 53, 79 ERR_PLUGIN_MISSING = 54, 80 ERR_PLUGIN_RESOURCE = 55, 81 ERR_PLUGIN_VERSION = 56, 82 ERR_RECORD = 57, 83 ERR_REVERB_CHANNELGROUP = 58, 84 ERR_REVERB_INSTANCE = 59, 85 ERR_SUBSOUNDS = 60, 86 ERR_SUBSOUND_ALLOCATED = 61, 87 ERR_SUBSOUND_CANTMOVE = 62, 88 ERR_TAGNOTFOUND = 63, 89 ERR_TOOMANYCHANNELS = 64, 90 ERR_TRUNCATED = 65, 91 ERR_UNIMPLEMENTED = 66, 92 ERR_UNINITIALIZED = 67, 93 ERR_UNSUPPORTED = 68, 94 ERR_VERSION = 69, 95 ERR_EVENT_ALREADY_LOADED = 70, 96 ERR_EVENT_LIVEUPDATE_BUSY = 71, 97 ERR_EVENT_LIVEUPDATE_MISMATCH = 72, 98 ERR_EVENT_LIVEUPDATE_TIMEOUT = 73, 99 ERR_EVENT_NOTFOUND = 74, 100 ERR_STUDIO_UNINITIALIZED = 75, 101 ERR_STUDIO_NOT_LOADED = 76, 102 ERR_INVALID_STRING = 77, 103 ERR_ALREADY_LOCKED = 78, 104 ERR_NOT_LOCKED = 79, 105 RESULT_FORCEINT = 65536 106 } 107 108 enum FMOD_CHANNELCONTROL_TYPE { 109 CHANNEL = 0, 110 CHANNELGROUP = 1, 111 FORCEINT = 65536 112 } 113 114 enum FMOD_OUTPUTTYPE { 115 AUTODETECT = 0, 116 UNKNOWN = 1, 117 NOSOUND = 2, 118 WAVWRITER = 3, 119 NOSOUND_NRT = 4, 120 WAVWRITER_NRT = 5, 121 DSOUND = 6, 122 WINMM = 7, 123 WASAPI = 8, 124 ASIO = 9, 125 PULSEAUDIO = 10, 126 ALSA = 11, 127 COREAUDIO = 12, 128 XBOX360 = 13, 129 PS3 = 14, 130 AUDIOTRACK = 15, 131 OPENSL = 16, 132 WIIU = 17, 133 AUDIOOUT = 18, 134 MAX = 19, 135 FORCEINT = 65536 136 } 137 138 enum FMOD_DEBUG_MODE { 139 TTY = 0, 140 FILE = 1, 141 CALLBACK = 2, 142 FORCEINT = 65536 143 } 144 145 enum FMOD_SPEAKERMODE { 146 DEFAULT = 0, 147 RAW = 1, 148 MONO = 2, 149 STEREO = 3, 150 QUAD = 4, 151 SURROUND = 5, 152 FIVE_POINT1 = 6, 153 SEVEN_POINT1 = 7, 154 MAX = 8, 155 FORCEINT = 65536 156 } 157 158 enum FMOD_SPEAKER { 159 FRONT_LEFT = 0, 160 FRONT_RIGHT = 1, 161 FRONT_CENTER = 2, 162 LOW_FREQUENCY = 3, 163 SURROUND_LEFT = 4, 164 SURROUND_RIGHT = 5, 165 BACK_LEFT = 6, 166 BACK_RIGHT = 7, 167 MAX = 8, 168 FORCEINT = 65536 169 } 170 171 enum FMOD_CHANNELORDER { 172 DEFAULT = 0, 173 WAVEFORMAT = 1, 174 PROTOOLS = 2, 175 ALLMONO = 3, 176 ALLSTEREO = 4, 177 ALSA = 5, 178 MAX = 6, 179 FORCEINT = 65536 180 } 181 182 enum FMOD_PLUGINTYPE { 183 OUTPUT = 0, 184 CODEC = 1, 185 DSP = 2, 186 MAX = 3, 187 FORCEINT = 65536 188 } 189 190 enum FMOD_SOUND_TYPE { 191 UNKNOWN = 0, 192 AIFF = 1, 193 ASF = 2, 194 AT3 = 3, 195 DLS = 4, 196 FLAC = 5, 197 FSB = 6, 198 GCADPCM = 7, 199 IT = 8, 200 MIDI = 9, 201 MOD = 10, 202 MPEG = 11, 203 OGGVORBIS = 12, 204 PLAYLIST = 13, 205 RAW = 14, 206 S3M = 15, 207 USER = 16, 208 WAV = 17, 209 XM = 18, 210 XMA = 19, 211 VAG = 20, 212 AUDIOQUEUE = 21, 213 XWMA = 22, 214 BCWAV = 23, 215 AT9 = 24, 216 VORBIS = 25, 217 MEDIA_FOUNDATION = 26, 218 MEDIACODEC = 27, 219 FADPCM = 28, 220 MAX = 29, 221 FORCEINT = 65536 222 } 223 224 enum FMOD_SOUND_FORMAT { 225 NONE = 0, 226 PCM8 = 1, 227 PCM16 = 2, 228 PCM24 = 3, 229 PCM32 = 4, 230 PCMFLOAT = 5, 231 GCADPCM = 6, 232 IMAADPCM = 7, 233 VAG = 8, 234 HEVAG = 9, 235 XMA = 10, 236 MPEG = 11, 237 CELT = 12, 238 AT9 = 13, 239 XWMA = 14, 240 VORBIS = 15, 241 FADPCM = 16, 242 MAX = 17, 243 FORCEINT = 65536 244 } 245 246 enum FMOD_OPENSTATE { 247 READY = 0, 248 LOADING = 1, 249 ERROR = 2, 250 CONNECTING = 3, 251 BUFFERING = 4, 252 SEEKING = 5, 253 PLAYING = 6, 254 SETPOSITION = 7, 255 MAX = 8, 256 FORCEINT = 65536 257 } 258 259 enum FMOD_SOUNDGROUP_BEHAVIOR { 260 FAIL = 0, 261 MUTE = 1, 262 STEALLOWEST = 2, 263 MAX = 3, 264 FORCEINT = 65536 265 } 266 267 enum FMOD_CHANNELCONTROL_CALLBACK_TYPE { 268 END = 0, 269 VIRTUALVOICE = 1, 270 SYNCPOINT = 2, 271 OCCLUSION = 3, 272 MAX = 4, 273 FORCEINT = 65536 274 } 275 276 enum FMOD_CHANNELCONTROL_DSP { 277 HEAD = -1, 278 FADER = -2, 279 PANNER = -3, 280 TAIL = -4, 281 FORCEINT = 65536 282 } 283 284 enum FMOD_ERRORCALLBACK_INSTANCETYPE { 285 NONE = 0, 286 SYSTEM = 1, 287 CHANNEL = 2, 288 CHANNELGROUP = 3, 289 CHANNELCONTROL = 4, 290 SOUND = 5, 291 SOUNDGROUP = 6, 292 DSP = 7, 293 DSPCONNECTION = 8, 294 GEOMETRY = 9, 295 REVERB3D = 10, 296 STUDIO_SYSTEM = 11, 297 STUDIO_EVENTDESCRIPTION = 12, 298 STUDIO_EVENTINSTANCE = 13, 299 STUDIO_PARAMETERINSTANCE = 14, 300 STUDIO_CUEINSTANCE = 15, 301 STUDIO_BUS = 16, 302 STUDIO_VCA = 17, 303 STUDIO_BANK = 18, 304 STUDIO_COMMANDREPLAY = 19, 305 FORCEINT = 65536 306 } 307 308 enum FMOD_DSP_RESAMPLER { 309 DEFAULT = 0, 310 NOINTERP = 1, 311 LINEAR = 2, 312 CUBIC = 3, 313 SPLINE = 4, 314 MAX = 5, 315 FORCEINT = 65536 316 } 317 318 enum FMOD_DSPCONNECTION_TYPE { 319 STANDARD = 0, 320 SIDECHAIN = 1, 321 SEND = 2, 322 SEND_SIDECHAIN = 3, 323 MAX = 4, 324 FORCEINT = 65536 325 } 326 327 enum FMOD_TAGTYPE { 328 UNKNOWN = 0, 329 ID3V1 = 1, 330 ID3V2 = 2, 331 VORBISCOMMENT = 3, 332 SHOUTCAST = 4, 333 ICECAST = 5, 334 ASF = 6, 335 MIDI = 7, 336 PLAYLIST = 8, 337 FMOD = 9, 338 USER = 10, 339 MAX = 11, 340 FORCEINT = 65536 341 } 342 343 enum FMOD_TAGDATATYPE { 344 BINARY = 0, 345 INT = 1, 346 FLOAT = 2, 347 STRING = 3, 348 STRING_UTF16 = 4, 349 STRING_UTF16BE = 5, 350 STRING_UTF8 = 6, 351 CDTOC = 7, 352 MAX = 8, 353 FORCEINT = 65536 354 } 355 356 // TODO: finish this up 357 enum FMOD_INITFLAGS : uint { 358 NORMAL = 0, 359 } 360 361 struct FMOD_VECTOR { 362 float x; 363 float y; 364 float z; 365 } 366 367 struct FMOD_3D_ATTRIBUTES { 368 FMOD_VECTOR position; 369 FMOD_VECTOR velocity; 370 FMOD_VECTOR forward; 371 FMOD_VECTOR up; 372 } 373 374 struct FMOD_GUID { 375 uint Data1; 376 ushort Data2; 377 ushort Data3; 378 ubyte[8] Data4; 379 } 380 381 struct FMOD_ASYNCREADINFO { 382 void* handle; 383 uint offset; 384 uint sizebytes; 385 int priority; 386 void* userdata; 387 void* buffer; 388 uint bytesread; 389 FMOD_FILE_ASYNCDONE done; 390 } 391 392 struct FMOD_ERRORCALLBACK_INFO { 393 FMOD_RESULT result; 394 FMOD_ERRORCALLBACK_INSTANCETYPE instancetype; 395 void* instance; 396 const(char)* functionname; 397 const(char)* functionparams; 398 } 399 400 struct FMOD_TAG { 401 FMOD_TAGTYPE type; 402 FMOD_TAGDATATYPE datatype; 403 char* name; 404 void* data; 405 uint datalen; 406 int updated; 407 } 408 409 struct FMOD_CREATESOUNDEXINFO { 410 int cbsize; 411 uint length; 412 uint fileoffset; 413 int numchannels; 414 int defaultfrequency; 415 FMOD_SOUND_FORMAT format; 416 uint decodebuffersize; 417 int initialsubsound; 418 int numsubsounds; 419 int* inclusionlist; 420 int inclusionlistnum; 421 FMOD_SOUND_PCMREAD_CALLBACK pcmreadcallback; 422 FMOD_SOUND_PCMSETPOS_CALLBACK pcmsetposcallback; 423 FMOD_SOUND_NONBLOCK_CALLBACK nonblockcallback; 424 const(char)* dlsname; 425 const(char)* encryptionkey; 426 int maxpolyphony; 427 void* userdata; 428 FMOD_SOUND_TYPE suggestedsoundtype; 429 FMOD_FILE_OPEN_CALLBACK fileuseropen; 430 FMOD_FILE_CLOSE_CALLBACK fileuserclose; 431 FMOD_FILE_READ_CALLBACK fileuserread; 432 FMOD_FILE_SEEK_CALLBACK fileuserseek; 433 FMOD_FILE_ASYNCREAD_CALLBACK fileuserasyncread; 434 FMOD_FILE_ASYNCCANCEL_CALLBACK fileuserasynccancel; 435 void* fileuserdata; 436 FMOD_CHANNELORDER channelorder; 437 uint channelmask; 438 FMOD_SOUNDGROUP* initialsoundgroup; 439 uint initialseekposition; 440 uint initialseekpostype; 441 int ignoresetfilesystem; 442 uint audioqueuepolicy; 443 uint minmidigranularity; 444 int nonblockthreadid; 445 } 446 447 struct FMOD_REVERB_PROPERTIES { 448 float DecayTime; 449 float EarlyDelay; 450 float LateDelay; 451 float HFReference; 452 float HFDecayRatio; 453 float Diffusion; 454 float Density; 455 float LowShelfFrequency; 456 float LowShelfGain; 457 float HighCut; 458 float EarlyLateMix; 459 float WetLevel; 460 } 461 462 struct FMOD_ADVANCEDSETTINGS { 463 int cbSize; 464 int maxMPEGCodecs; 465 int maxADPCMCodecs; 466 int maxXMACodecs; 467 int maxVorbisCodecs; 468 int maxAT9Codecs; 469 int maxFADPCMCodecs; 470 int maxPCMCodecs; 471 int ASIONumChannels; 472 char** ASIOChannelList; 473 FMOD_SPEAKER* ASIOSpeakerList; 474 float HRTFMinAngle; 475 float HRTFMaxAngle; 476 float HRTFFreq; 477 float vol0virtualvol; 478 uint defaultDecodeBufferSize; 479 ushort profilePort; 480 uint geometryMaxFadeTime; 481 float distanceFilterCenterFreq; 482 int reverb3Dinstance; 483 int DSPBufferPoolSize; 484 uint stackSizeStream; 485 uint stackSizeNonBlocking; 486 uint stackSizeMixer; 487 FMOD_DSP_RESAMPLER resamplerMethod; 488 uint commandQueueSize; 489 uint randomSeed; 490 } 491 492 struct FMOD_SOUND; 493 struct FMOD_CHANNEL; 494 struct FMOD_DSPCONNECTION; 495 struct FMOD_CHANNELCONTROL; 496 struct FMOD_GEOMETRY; 497 struct FMOD_SYSTEM; 498 struct FMOD_REVERB3D; 499 struct FMOD_DSP; 500 struct FMOD_SYNCPOINT; 501 struct FMOD_CHANNELGROUP; 502 struct FMOD_SOUNDGROUP; 503 struct FMOD_POLYGON; 504