-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathFMOD.pb
2009 lines (2004 loc) · 175 KB
/
FMOD.pb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
;==============================================================================
; ** FMOD.pb
;------------------------------------------------------------------------------
; This module represents an FMOD header to import the sound library.
; http://00laboratories.com/
;==============================================================================
IncludeFile #PB_Compiler_File + "i" ;- PBHGEN
;--------------------------------------------------------------------------
Global DLL_FMOD.i ; DLL Handle
;--------------------------------------------------------------------------
; 0xaaaabbcc -> aaaa = major version number. bb = minor version number. cc = development version number.
#FMOD_VERSION = $00010515
;--------------------------------------------------------------------------
Enumeration
#FMOD_OK ; No errors.
#FMOD_ERR_BADCOMMAND ; Tried to call a function on a data type that does not allow this type of functionality (ie calling Sound::lock on a streaming sound).
#FMOD_ERR_CHANNEL_ALLOC ; Error trying to allocate a channel.
#FMOD_ERR_CHANNEL_STOLEN ; The specified channel has been reused to play another sound.
#FMOD_ERR_DMA ; DMA Failure. See debug output for more information.
#FMOD_ERR_DSP_CONNECTION ; DSP connection error. Connection possibly caused a cyclic dependency or connected dsps with incompatible buffer counts.
#FMOD_ERR_DSP_DONTPROCESS ; DSP return code from a DSP process query callback. Tells mixer not to call the process callback and therefore not consume CPU. Use this to optimize the DSP graph.
#FMOD_ERR_DSP_FORMAT ; DSP Format error. A DSP unit may have attempted to connect to this network with the wrong format, or a matrix may have been set with the wrong size if the target unit has a specified channel map.
#FMOD_ERR_DSP_INUSE ; DSP is already in the mixer's DSP network. It must be removed before being reinserted or released.
#FMOD_ERR_DSP_NOTFOUND ; DSP connection error. Couldn't find the DSP unit specified.
#FMOD_ERR_DSP_RESERVED ; DSP operation error. Cannot perform operation on this DSP as it is reserved by the system.
#FMOD_ERR_DSP_SILENCE ; DSP return code from a DSP process query callback. Tells mixer silence would be produced from read, so go idle and not consume CPU. Use this to optimize the DSP graph.
#FMOD_ERR_DSP_TYPE ; DSP operation cannot be performed on a DSP of this type.
#FMOD_ERR_FILE_BAD ; Error loading file.
#FMOD_ERR_FILE_COULDNOTSEEK ; Couldn't perform seek operation. This is a limitation of the medium (ie netstreams) or the file format.
#FMOD_ERR_FILE_DISKEJECTED ; Media was ejected while reading.
#FMOD_ERR_FILE_EOF ; End of file unexpectedly reached while trying to read essential data (truncated?).
#FMOD_ERR_FILE_ENDOFDATA ; End of current chunk reached while trying to read data.
#FMOD_ERR_FILE_NOTFOUND ; File not found.
#FMOD_ERR_FORMAT ; Unsupported file or audio format.
#FMOD_ERR_HEADER_MISMATCH ; There is a version mismatch between the FMOD header and either the FMOD Studio library or the FMOD Low Level library.
#FMOD_ERR_HTTP ; A HTTP error occurred. This is a catch-all for HTTP errors not listed elsewhere.
#FMOD_ERR_HTTP_ACCESS ; The specified resource requires authentication or is forbidden.
#FMOD_ERR_HTTP_PROXY_AUTH ; Proxy authentication is required to access the specified resource.
#FMOD_ERR_HTTP_SERVER_ERROR ; A HTTP server error occurred.
#FMOD_ERR_HTTP_TIMEOUT ; The HTTP request timed out.
#FMOD_ERR_INITIALIZATION ; FMOD was not initialized correctly to support this function.
#FMOD_ERR_INITIALIZED ; Cannot call this command after System::init.
#FMOD_ERR_INTERNAL ; An error occurred that wasn't supposed to. Contact support.
#FMOD_ERR_INVALID_FLOAT ; Value passed in was a NaN, Inf or denormalized float.
#FMOD_ERR_INVALID_HANDLE ; An invalid object handle was used.
#FMOD_ERR_INVALID_PARAM ; An invalid parameter was passed to this function.
#FMOD_ERR_INVALID_POSITION ; An invalid seek position was passed to this function.
#FMOD_ERR_INVALID_SPEAKER ; An invalid speaker was passed to this function based on the current speaker mode.
#FMOD_ERR_INVALID_SYNCPOINT ; The syncpoint did not come from this sound handle.
#FMOD_ERR_INVALID_THREAD ; Tried to call a function on a thread that is not supported.
#FMOD_ERR_INVALID_VECTOR ; The vectors passed in are not unit length, or perpendicular.
#FMOD_ERR_MAXAUDIBLE ; Reached maximum audible playback count for this sound's soundgroup.
#FMOD_ERR_MEMORY ; Not enough memory or resources.
#FMOD_ERR_MEMORY_CANTPOINT ; Can't use #FMOD_OPENMEMORY_POINT on non PCM source data, or non mp3/xma/adpcm data if #FMOD_CREATECOMPRESSEDSAMPLE was used.
#FMOD_ERR_NEEDS3D ; Tried to call a command on a 2d sound when the command was meant for 3d sound.
#FMOD_ERR_NEEDSHARDWARE ; Tried to use a feature that requires hardware support.
#FMOD_ERR_NET_CONNECT ; Couldn't connect to the specified host.
#FMOD_ERR_NET_SOCKET_ERROR ; A socket error occurred. This is a catch-all for socket-related errors not listed elsewhere.
#FMOD_ERR_NET_URL ; The specified URL couldn't be resolved.
#FMOD_ERR_NET_WOULD_BLOCK ; Operation on a non-blocking socket could not complete immediately.
#FMOD_ERR_NOTREADY ; Operation could not be performed because specified sound/DSP connection is not ready.
#FMOD_ERR_OUTPUT_ALLOCATED ; Error initializing output device, but more specifically, the output device is already in use and cannot be reused.
#FMOD_ERR_OUTPUT_CREATEBUFFER ; Error creating hardware sound buffer.
#FMOD_ERR_OUTPUT_DRIVERCALL ; A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted.
#FMOD_ERR_OUTPUT_FORMAT ; Soundcard does not support the specified format.
#FMOD_ERR_OUTPUT_INIT ; Error initializing output device.
#FMOD_ERR_OUTPUT_NODRIVERS ; The output device has no drivers installed. If pre-init, #FMOD_OUTPUT_NOSOUND is selected as the output mode. If post-init, the function just fails.
#FMOD_ERR_PLUGIN ; An unspecified error has been returned from a plugin.
#FMOD_ERR_PLUGIN_MISSING ; A requested output, dsp unit type or codec was not available.
#FMOD_ERR_PLUGIN_RESOURCE ; A resource that the plugin requires cannot be found. (ie the DLS file for MIDI playback)
#FMOD_ERR_PLUGIN_VERSION ; A plugin was built with an unsupported SDK version.
#FMOD_ERR_RECORD ; An error occurred trying to initialize the recording device.
#FMOD_ERR_REVERB_CHANNELGROUP ; Reverb properties cannot be set on this channel because a parent channelgroup owns the reverb connection.
#FMOD_ERR_REVERB_INSTANCE ; Specified instance in #FMOD_REVERB_PROPERTIES couldn't be set. Most likely because it is an invalid instance number or the reverb doesn't exist.
#FMOD_ERR_SUBSOUNDS ; The error occurred because the sound referenced contains subsounds when it shouldn't have, or it doesn't contain subsounds when it should have. The operation may also not be able to be performed on a parent sound.
#FMOD_ERR_SUBSOUND_ALLOCATED ; This subsound is already being used by another sound, you cannot have more than one parent to a sound. Null out the other parent's entry first.
#FMOD_ERR_SUBSOUND_CANTMOVE ; Shared subsounds cannot be replaced or moved from their parent stream, such as when the parent stream is an FSB file.
#FMOD_ERR_TAGNOTFOUND ; The specified tag could not be found or there are no tags.
#FMOD_ERR_TOOMANYCHANNELS ; The sound created exceeds the allowable input channel count. This can be increased using the 'maxinputchannels' parameter in System::setSoftwareFormat.
#FMOD_ERR_TRUNCATED ; The retrieved string is too long to fit in the supplied buffer and has been truncated.
#FMOD_ERR_UNIMPLEMENTED ; Something in FMOD hasn't been implemented when it should be! contact support!
#FMOD_ERR_UNINITIALIZED ; This command failed because System::init or System::setDriver was not called.
#FMOD_ERR_UNSUPPORTED ; A command issued was not supported by this object. Possibly a plugin without certain callbacks specified.
#FMOD_ERR_VERSION ; The version number of this file format is not supported.
#FMOD_ERR_EVENT_ALREADY_LOADED ; The specified bank has already been loaded.
#FMOD_ERR_EVENT_LIVEUPDATE_BUSY ; The live update connection failed due to the game already being connected.
#FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH ; The live update connection failed due to the game data being out of sync with the tool.
#FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT ; The live update connection timed out.
#FMOD_ERR_EVENT_NOTFOUND ; The requested event, bus or vca could not be found.
#FMOD_ERR_STUDIO_UNINITIALIZED ; The Studio::System object is not yet initialized.
#FMOD_ERR_STUDIO_NOT_LOADED ; The specified resource is not loaded, so it can't be unloaded.
;--------------------------------------------------------------------------
#FMOD_ERR_INVALID_STRING ; An invalid string was passed to this function.
#FMOD_ERR_ALREADY_LOCKED ; The specified resource is already locked.
#FMOD_ERR_NOT_LOCKED ; The specified resource is not locked, so it can't be unlocked.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration ; FMOD_CHANNELCONTROL_TYPE
#FMOD_CHANNELCONTROL_CHANNEL
#FMOD_CHANNELCONTROL_CHANNELGROUP
EndEnumeration
;--------------------------------------------------------------------------
Structure FMOD_VECTOR
X.f ; X co-ordinate in 3D space.
Y.f ; Y co-ordinate in 3D space.
Z.f ; Z co-ordinate in 3D space.
EndStructure
;--------------------------------------------------------------------------
Structure FMOD_3D_ATTRIBUTES
Position.FMOD_VECTOR
Velocity.FMOD_VECTOR
Forward.FMOD_VECTOR
Up.FMOD_VECTOR
EndStructure
;--------------------------------------------------------------------------
Structure FMOD_GUID
Data1.l ; Specifies the first 8 hexadecimal digits of the GUID.
Data2.u ; Specifies the first group of 4 hexadecimal digits.
Data3.u ; Specifies the second group of 4 hexadecimal digits.
Data4.a[8] ; Array of 8 bytes. The first 2 bytes contain the third group of 4 hexadecimal digits. The remaining 6 bytes contain the final 12 hexadecimal digits.
EndStructure
;--------------------------------------------------------------------------
Macro FMOD_ASYNCREADINFO : : EndMacro ; PureBasic IDE Suggestion Helper.
Prototype __proto_FMOD_ASYNCREADINFO_DONE(*info#FMOD_ASYNCREADINFO, result.l)
UndefineMacro FMOD_ASYNCREADINFO
Structure FMOD_ASYNCREADINFO
*handle ; [r] The file handle that was filled out in the open callback.
offset.l ; [r] Seek position, make sure you read from this file offset.
sizebytes.l ; [r] how many bytes requested for read.
priority.l ; [r] 0 = low importance. 100 = extremely important (ie 'must read now or stuttering may occur').
*userdata ; [r/w] User data pointer specific to this request. Initially 0, can be ignored or set by the user. Not related to the file's main userdata member.
*buffer ; [w] Buffer to read file data into.
bytesread.l ; [w] Fill this in before setting result code to tell FMOD how many bytes were read.
*done.__proto_FMOD_ASYNCREADINFO_DONE ; [r] FMOD file system wake up function. Call this when user file read is finished. Pass result of file read as a parameter.
EndStructure
;--------------------------------------------------------------------------
Enumeration
#FMOD_OUTPUTTYPE_AUTODETECT ; Picks the best output mode for the platform. This is the default.
;--------------------------------------------------------------------------
#FMOD_OUTPUTTYPE_UNKNOWN ; All - 3rd party plugin, unknown. This is for use with System::getOutput only.
#FMOD_OUTPUTTYPE_NOSOUND ; All - Perform all mixing but discard the final output.
#FMOD_OUTPUTTYPE_WAVWRITER ; All - Writes output to a .wav file.
#FMOD_OUTPUTTYPE_NOSOUND_NRT ; All - Non-realtime version of #FMOD_OUTPUTTYPE_NOSOUND. User can drive mixer with System::update at whatever rate they want.
#FMOD_OUTPUTTYPE_WAVWRITER_NRT; All - Non-realtime version of #FMOD_OUTPUTTYPE_WAVWRITER. User can drive mixer with System::update at whatever rate they want.
;--------------------------------------------------------------------------
#FMOD_OUTPUTTYPE_DSOUND ; Win - Direct Sound. (Default on Windows XP and below)
#FMOD_OUTPUTTYPE_WINMM ; Win - Windows Multimedia.
#FMOD_OUTPUTTYPE_WASAPI ; Win/WinStore/XboxOne - Windows Audio Session API. (Default on Windows Vista and above, Xbox One and Windows Store Applications)
#FMOD_OUTPUTTYPE_ASIO ; Win - Low latency ASIO 2.0.
#FMOD_OUTPUTTYPE_PULSEAUDIO ; Linux - Pulse Audio. (Default on Linux if available)
#FMOD_OUTPUTTYPE_ALSA ; Linux - Advanced Linux Sound Architecture. (Default on Linux if PulseAudio isn't available)
#FMOD_OUTPUTTYPE_COREAUDIO ; Mac/iOS - Core Audio. (Default on Mac and iOS)
#FMOD_OUTPUTTYPE_XBOX360 ; Xbox 360 - XAudio. (Default on Xbox 360)
#FMOD_OUTPUTTYPE_PS3 ; PS3 - Audio Out. (Default on PS3)
#FMOD_OUTPUTTYPE_AUDIOTRACK ; Android - Java Audio Track. (Default on Android 2.2 and below)
#FMOD_OUTPUTTYPE_OPENSL ; Android - OpenSL ES. (Default on Android 2.3 and above)
#FMOD_OUTPUTTYPE_WIIU ; Wii U - AX. (Default on Wii U)
#FMOD_OUTPUTTYPE_AUDIOOUT ; PS4/PSVita - Audio Out. (Default on PS4 and PS Vita)
;--------------------------------------------------------------------------
#FMOD_OUTPUTTYPE_MAX ; Maximum number of output types supported.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration
#FMOD_DEBUG_MODE_TTY ; Default log location per platform, i.e. Visual Studio output window, stderr, LogCat, etc
#FMOD_DEBUG_MODE_FILE ; Write log to specified file path
#FMOD_DEBUG_MODE_CALLBACK ; Call specified callback with log information
EndEnumeration
;--------------------------------------------------------------------------
#FMOD_DEBUG_LEVEL_NONE = $00000000 ; Disable all messages
#FMOD_DEBUG_LEVEL_ERROR = $00000001 ; Enable only error messages.
#FMOD_DEBUG_LEVEL_WARNING = $00000002 ; Enable warning and error messages.
#FMOD_DEBUG_LEVEL_LOG = $00000004 ; Enable informational, warning and error messages (default).
#FMOD_DEBUG_TYPE_MEMORY = $00000100 ; Verbose logging for memory operations, only use this if you are debugging a memory related issue.
#FMOD_DEBUG_TYPE_FILE = $00000200 ; Verbose logging for file access, only use this if you are debugging a file related issue.
#FMOD_DEBUG_TYPE_CODEC = $00000400 ; Verbose logging for codec initialization, only use this if you are debugging a codec related issue.
#FMOD_DEBUG_TYPE_TRACE = $00000800 ; Verbose logging for internal errors, use this for tracking the origin of error codes.
#FMOD_DEBUG_DISPLAY_TIMESTAMPS = $00010000 ; Display the time stamp of the log message in milliseconds.
#FMOD_DEBUG_DISPLAY_LINENUMBERS = $00020000 ; Display the source code file and line number for where the message originated.
#FMOD_DEBUG_DISPLAY_THREAD = $00040000 ; Display the thread ID of the calling function that generated the message.
;--------------------------------------------------------------------------
#FMOD_MEMORY_NORMAL = $00000000 ; Standard memory.
#FMOD_MEMORY_STREAM_FILE = $00000001 ; Stream file buffer, size controllable with System::setStreamBufferSize.
#FMOD_MEMORY_STREAM_DECODE = $00000002 ; Stream decode buffer, size controllable with FMOD_CREATESOUNDEXINFO::decodebuffersize.
#FMOD_MEMORY_SAMPLEDATA = $00000004 ; Sample data buffer. Raw audio data, usually PCM/MPEG/ADPCM/XMA data.
#FMOD_MEMORY_DSP_BUFFER = $00000008 ; DSP memory block allocated when more than 1 output exists on a DSP node.
#FMOD_MEMORY_PLUGIN = $00000010 ; Memory allocated by a third party plugin.
#FMOD_MEMORY_XBOX360_PHYSICAL = $00100000 ; Requires XPhysicalAlloc / XPhysicalFree.
#FMOD_MEMORY_PERSISTENT = $00200000 ; Persistent memory. Memory will be freed when System::release is called.
#FMOD_MEMORY_SECONDARY = $00400000 ; Secondary memory. Allocation should be in secondary memory. For example RSX on the PS3.
#FMOD_MEMORY_ALL = $FFFFFFFF
;--------------------------------------------------------------------------
Enumeration
#FMOD_SPEAKERMODE_DEFAULT ; Default speaker mode based on operating system/output mode. Windows = control panel setting, Xbox = 5.1, PS3 = 7.1 etc.
#FMOD_SPEAKERMODE_RAW ; There is no specific speakermode. Sound channels are mapped in order of input to output. Use System::setSoftwareFormat to specify speaker count. See remarks for more information.
#FMOD_SPEAKERMODE_MONO ; The speakers are monaural.
#FMOD_SPEAKERMODE_STEREO ; The speakers are stereo.
#FMOD_SPEAKERMODE_QUAD ; 4 speaker setup. This includes front left, front right, surround left, surround right.
#FMOD_SPEAKERMODE_SURROUND ; 5 speaker setup. This includes front left, front right, center, surround left, surround right.
#FMOD_SPEAKERMODE_5POINT1 ; 5.1 speaker setup. This includes front left, front right, center, surround left, surround right and an LFE speaker.
#FMOD_SPEAKERMODE_7POINT1 ; 7.1 speaker setup. This includes front left, front right, center, surround left, surround right, back left, back right and an LFE speaker.
;--------------------------------------------------------------------------
#FMOD_SPEAKERMODE_MAX ; Maximum number of speaker modes supported.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration
#FMOD_SPEAKER_FRONT_LEFT
#FMOD_SPEAKER_FRONT_RIGHT
#FMOD_SPEAKER_FRONT_CENTER
#FMOD_SPEAKER_LOW_FREQUENCY
#FMOD_SPEAKER_SURROUND_LEFT
#FMOD_SPEAKER_SURROUND_RIGHT
#FMOD_SPEAKER_BACK_LEFT
#FMOD_SPEAKER_BACK_RIGHT
;--------------------------------------------------------------------------
#FMOD_SPEAKER_MAX ; Maximum number of speaker types supported.
EndEnumeration
;--------------------------------------------------------------------------
#FMOD_CHANNELMASK_FRONT_LEFT = $00000001
#FMOD_CHANNELMASK_FRONT_RIGHT = $00000002
#FMOD_CHANNELMASK_FRONT_CENTER = $00000004
#FMOD_CHANNELMASK_LOW_FREQUENCY = $00000008
#FMOD_CHANNELMASK_SURROUND_LEFT = $00000010
#FMOD_CHANNELMASK_SURROUND_RIGHT = $00000020
#FMOD_CHANNELMASK_BACK_LEFT = $00000040
#FMOD_CHANNELMASK_BACK_RIGHT = $00000080
#FMOD_CHANNELMASK_BACK_CENTER = $00000100
;--------------------------------------------------------------------------
#FMOD_CHANNELMASK_MONO = (#FMOD_CHANNELMASK_FRONT_LEFT)
#FMOD_CHANNELMASK_STEREO = (#FMOD_CHANNELMASK_FRONT_LEFT | #FMOD_CHANNELMASK_FRONT_RIGHT)
#FMOD_CHANNELMASK_LRC = (#FMOD_CHANNELMASK_FRONT_LEFT | #FMOD_CHANNELMASK_FRONT_RIGHT | #FMOD_CHANNELMASK_FRONT_CENTER)
#FMOD_CHANNELMASK_QUAD = (#FMOD_CHANNELMASK_FRONT_LEFT | #FMOD_CHANNELMASK_FRONT_RIGHT | #FMOD_CHANNELMASK_SURROUND_LEFT | #FMOD_CHANNELMASK_SURROUND_RIGHT)
#FMOD_CHANNELMASK_SURROUND = (#FMOD_CHANNELMASK_FRONT_LEFT | #FMOD_CHANNELMASK_FRONT_RIGHT | #FMOD_CHANNELMASK_FRONT_CENTER | #FMOD_CHANNELMASK_SURROUND_LEFT | #FMOD_CHANNELMASK_SURROUND_RIGHT)
#FMOD_CHANNELMASK_5POINT1 = (#FMOD_CHANNELMASK_FRONT_LEFT | #FMOD_CHANNELMASK_FRONT_RIGHT | #FMOD_CHANNELMASK_FRONT_CENTER | #FMOD_CHANNELMASK_LOW_FREQUENCY | #FMOD_CHANNELMASK_SURROUND_LEFT | #FMOD_CHANNELMASK_SURROUND_RIGHT)
#FMOD_CHANNELMASK_5POINT1_REARS = (#FMOD_CHANNELMASK_FRONT_LEFT | #FMOD_CHANNELMASK_FRONT_RIGHT | #FMOD_CHANNELMASK_FRONT_CENTER | #FMOD_CHANNELMASK_LOW_FREQUENCY | #FMOD_CHANNELMASK_BACK_LEFT | #FMOD_CHANNELMASK_BACK_RIGHT)
#FMOD_CHANNELMASK_7POINT0 = (#FMOD_CHANNELMASK_FRONT_LEFT | #FMOD_CHANNELMASK_FRONT_RIGHT | #FMOD_CHANNELMASK_FRONT_CENTER | #FMOD_CHANNELMASK_SURROUND_LEFT | #FMOD_CHANNELMASK_SURROUND_RIGHT| #FMOD_CHANNELMASK_BACK_LEFT | #FMOD_CHANNELMASK_BACK_RIGHT)
#FMOD_CHANNELMASK_7POINT1 = (#FMOD_CHANNELMASK_FRONT_LEFT | #FMOD_CHANNELMASK_FRONT_RIGHT | #FMOD_CHANNELMASK_FRONT_CENTER | #FMOD_CHANNELMASK_LOW_FREQUENCY | #FMOD_CHANNELMASK_SURROUND_LEFT | #FMOD_CHANNELMASK_SURROUND_RIGHT | #FMOD_CHANNELMASK_BACK_LEFT | #FMOD_CHANNELMASK_BACK_RIGHT)
;--------------------------------------------------------------------------
Enumeration
#FMOD_CHANNELORDER_DEFAULT ; Left, Right, Center, LFE, Surround Left, Surround Right, Back Left, Back Right (see FMOD_SPEAKER enumeration)
#FMOD_CHANNELORDER_WAVEFORMAT ; Left, Right, Center, LFE, Back Left, Back Right, Surround Left, Surround Right (as per Microsoft .wav WAVEFORMAT structure master order)
#FMOD_CHANNELORDER_PROTOOLS ; Left, Center, Right, Surround Left, Surround Right, LFE
#FMOD_CHANNELORDER_ALLMONO ; Mono, Mono, Mono, Mono, Mono, Mono, ... (each channel all the way up to 32 channels are treated as if they were mono)
#FMOD_CHANNELORDER_ALLSTEREO ; Left, Right, Left, Right, Left, Right, ... (each pair of channels is treated as stereo all the way up to 32 channels)
#FMOD_CHANNELORDER_ALSA ; Left, Right, Surround Left, Surround Right, Center, LFE (as per Linux ALSA channel order)
;--------------------------------------------------------------------------
#FMOD_CHANNELORDER_MAX ; Maximum number of channel orderings supported.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration
#FMOD_PLUGINTYPE_OUTPUT ; The plugin type is an output module. FMOD mixed audio will play through one of these devices
#FMOD_PLUGINTYPE_CODEC ; The plugin type is a file format codec. FMOD will use these codecs to load file formats for playback.
#FMOD_PLUGINTYPE_DSP ; The plugin type is a DSP unit. FMOD will use these plugins as part of its DSP network to apply effects to output or generate sound in realtime.
;--------------------------------------------------------------------------
#FMOD_PLUGINTYPE_MAX ; Maximum number of plugin types supported.
EndEnumeration
;--------------------------------------------------------------------------
#FMOD_INIT_NORMAL = $00000000 ; Initialize normally
#FMOD_INIT_STREAM_FROM_UPDATE = $00000001 ; No stream thread is created internally. Streams are driven from System::update. Mainly used with non-realtime outputs.
#FMOD_INIT_MIX_FROM_UPDATE = $00000002 ; Win/PS3/Xbox 360 Only - FMOD Mixer thread is woken up to do a mix when System::update is called rather than waking periodically on its own timer.
#FMOD_INIT_3D_RIGHTHANDED = $00000004 ; FMOD will treat +X as right, +Y as up and +Z as backwards (towards you).
#FMOD_INIT_CHANNEL_LOWPASS = $00000100 ; All FMOD_3D based voices will add a software lowpass filter effect into the DSP chain which is automatically used when Channel::set3DOcclusion is used or the geometry API. This also causes sounds to sound duller when the sound goes behind the listener, as a fake HRTF style effect. Use System::setAdvancedSettings to disable or adjust cutoff frequency for this feature.
#FMOD_INIT_CHANNEL_DISTANCEFILTER = $00000200 ; All FMOD_3D based voices will add a software lowpass and highpass filter effect into the DSP chain which will act as a distance-automated bandpass filter. Use System::setAdvancedSettings to adjust the center frequency.
#FMOD_INIT_PROFILE_ENABLE = $00010000 ; Enable TCP/IP based host which allows FMOD Designer or FMOD Profiler to connect to it, and view memory, CPU and the DSP network graph in real-time.
#FMOD_INIT_VOL0_BECOMES_VIRTUAL = $00020000 ; Any sounds that are 0 volume will go virtual and not be processed except for having their positions updated virtually. Use System::setAdvancedSettings to adjust what volume besides zero to switch to virtual at.
#FMOD_INIT_GEOMETRY_USECLOSEST = $00040000 ; With the geometry engine, only process the closest polygon rather than accumulating all polygons the sound to listener line intersects.
#FMOD_INIT_PREFER_DOLBY_DOWNMIX = $00080000 ; When using FMOD_SPEAKERMODE_5POINT1 with a stereo output device, use the Dolby Pro Logic II downmix algorithm instead of the SRS Circle Surround algorithm.
#FMOD_INIT_THREAD_UNSAFE = $00100000 ; Disables thread safety for API calls. Only use this if FMOD low level is being called from a single thread, and if Studio API is not being used!
#FMOD_INIT_PROFILE_METER_ALL = $00200000 ; Slower, but adds level metering for every single DSP unit in the graph. Use DSP::setMeteringEnabled to turn meters off individually.
;--------------------------------------------------------------------------
Enumeration
#FMOD_SOUND_TYPE_UNKNOWN ; 3rd party / unknown plugin format.
#FMOD_SOUND_TYPE_AIFF ; AIFF.
#FMOD_SOUND_TYPE_ASF ; Microsoft Advanced Systems Format (ie WMA/ASF/WMV).
#FMOD_SOUND_TYPE_AT3 ; Sony ATRAC 3 format
#FMOD_SOUND_TYPE_DLS ; Sound font / downloadable sound bank.
#FMOD_SOUND_TYPE_FLAC ; FLAC lossless codec.
#FMOD_SOUND_TYPE_FSB ; FMOD Sample Bank.
#FMOD_SOUND_TYPE_GCADPCM ; Nintendo GameCube/Wii ADPCM
#FMOD_SOUND_TYPE_IT ; Impulse Tracker.
#FMOD_SOUND_TYPE_MIDI ; MIDI. extracodecdata is a pointer to an #FMOD_MIDI_EXTRACODECDATA structure.
#FMOD_SOUND_TYPE_MOD ; Protracker / Fasttracker MOD.
#FMOD_SOUND_TYPE_MPEG ; MP2/MP3 MPEG.
#FMOD_SOUND_TYPE_OGGVORBIS ; Ogg vorbis.
#FMOD_SOUND_TYPE_PLAYLIST ; Information only from ASX/PLS/M3U/WAX playlists
#FMOD_SOUND_TYPE_RAW ; Raw PCM data.
#FMOD_SOUND_TYPE_S3M ; ScreamTracker 3.
#FMOD_SOUND_TYPE_USER ; User created sound.
#FMOD_SOUND_TYPE_WAV ; Microsoft WAV.
#FMOD_SOUND_TYPE_XM ; FastTracker 2 XM.
#FMOD_SOUND_TYPE_XMA ; Xbox360 XMA
#FMOD_SOUND_TYPE_VAG ; PlayStation Portable ADPCM VAG format.
#FMOD_SOUND_TYPE_AUDIOQUEUE ; iPhone hardware decoder, supports AAC, ALAC and MP3. extracodecdata is a pointer to an #FMOD_AUDIOQUEUE_EXTRACODECDATA structure.
#FMOD_SOUND_TYPE_XWMA ; Xbox360 XWMA
#FMOD_SOUND_TYPE_BCWAV ; 3DS BCWAV container format for DSP ADPCM and PCM
#FMOD_SOUND_TYPE_AT9 ; PS4 / PSVita ATRAC 9 format
#FMOD_SOUND_TYPE_VORBIS ; Vorbis
#FMOD_SOUND_TYPE_MEDIA_FOUNDATION ; Windows Store Application built in system codecs
#FMOD_SOUND_TYPE_MEDIACODEC ; Android MediaCodec
;--------------------------------------------------------------------------
#FMOD_SOUND_TYPE_MAX ; Maximum number of sound types supported.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration
#FMOD_SOUND_FORMAT_NONE ; Unitialized / unknown.
#FMOD_SOUND_FORMAT_PCM8 ; 8bit integer PCM data.
#FMOD_SOUND_FORMAT_PCM16 ; 16bit integer PCM data.
#FMOD_SOUND_FORMAT_PCM24 ; 24bit integer PCM data.
#FMOD_SOUND_FORMAT_PCM32 ; 32bit integer PCM data.
#FMOD_SOUND_FORMAT_PCMFLOAT ; 32bit floating point PCM data.
#FMOD_SOUND_FORMAT_GCADPCM ; Compressed Nintendo 3DS/Wii DSP data.
#FMOD_SOUND_FORMAT_IMAADPCM ; Compressed IMA ADPCM data.
#FMOD_SOUND_FORMAT_VAG ; Compressed PlayStation Portable ADPCM data.
#FMOD_SOUND_FORMAT_HEVAG ; Compressed PSVita ADPCM data.
#FMOD_SOUND_FORMAT_XMA ; Compressed Xbox360 XMA data.
#FMOD_SOUND_FORMAT_MPEG ; Compressed MPEG layer 2 or 3 data.
#FMOD_SOUND_FORMAT_CELT ; Compressed CELT data.
#FMOD_SOUND_FORMAT_AT9 ; Compressed PSVita ATRAC9 data.
#FMOD_SOUND_FORMAT_XWMA ; Compressed Xbox360 xWMA data.
#FMOD_SOUND_FORMAT_VORBIS ; Compressed Vorbis data.
;--------------------------------------------------------------------------
#FMOD_SOUND_FORMAT_MAX ; Maximum number of sound formats supported.
EndEnumeration
;--------------------------------------------------------------------------
#FMOD_DEFAULT = $00000000 ; Default for all modes listed below. FMOD_LOOP_OFF, FMOD_2D, FMOD_3D_WORLDRELATIVE, FMOD_3D_INVERSEROLLOFF
#FMOD_LOOP_OFF = $00000001 ; For non looping sounds. (DEFAULT). Overrides FMOD_LOOP_NORMAL / FMOD_LOOP_BIDI.
#FMOD_LOOP_NORMAL = $00000002 ; For forward looping sounds.
#FMOD_LOOP_BIDI = $00000004 ; For bidirectional looping sounds. (only works on software mixed static sounds).
#FMOD_2D = $00000008 ; Ignores any 3d processing. (DEFAULT).
#FMOD_3D = $00000010 ; Makes the sound positionable in 3D. Overrides FMOD_2D.
#FMOD_CREATESTREAM = $00000080 ; Decompress at runtime, streaming from the source provided (ie from disk). Overrides FMOD_CREATESAMPLE and FMOD_CREATECOMPRESSEDSAMPLE. Note a stream can only be played once at a time due to a stream only having 1 stream buffer and file handle. Open multiple streams to have them play concurrently.
#FMOD_CREATESAMPLE = $00000100 ; Decompress at loadtime, decompressing or decoding whole file into memory as the target sample format (ie PCM). Fastest for playback and most flexible.
#FMOD_CREATECOMPRESSEDSAMPLE = $00000200 ; Load MP2/MP3/IMAADPCM/CELT/Vorbis/AT9 or XMA into memory and leave it compressed. CELT/Vorbis/AT9 encoding only supported in the FSB file format. During playback the FMOD software mixer will decode it in realtime as a 'compressed sample'. Overrides FMOD_CREATESAMPLE. If the sound data is not one of the supported formats, it will behave as if it was created with FMOD_CREATESAMPLE and decode the sound into PCM.
#FMOD_OPENUSER = $00000400 ; Opens a user created static sample or stream. Use FMOD_CREATESOUNDEXINFO to specify format and/or read callbacks. If a user created 'sample' is created with no read callback, the sample will be empty. Use Sound::lock and Sound::unlock to place sound data into the sound if this is the case.
#FMOD_OPENMEMORY = $00000800 ; "name_or_data" will be interpreted as a pointer to memory instead of filename for creating sounds. Use FMOD_CREATESOUNDEXINFO to specify length. If used with FMOD_CREATESAMPLE or FMOD_CREATECOMPRESSEDSAMPLE, FMOD duplicates the memory into its own buffers. Your own buffer can be freed after open. If used with FMOD_CREATESTREAM, FMOD will stream out of the buffer whose pointer you passed in. In this case, your own buffer should not be freed until you have finished with and released the stream.
#FMOD_OPENMEMORY_POINT = $10000000 ; "name_or_data" will be interpreted as a pointer to memory instead of filename for creating sounds. Use FMOD_CREATESOUNDEXINFO to specify length. This differs to FMOD_OPENMEMORY in that it uses the memory as is, without duplicating the memory into its own buffers. Cannot be freed after open, only after Sound::release. Will not work if the data is compressed and FMOD_CREATECOMPRESSEDSAMPLE is not used.
#FMOD_OPENRAW = $00001000 ; Will ignore file format and treat as raw pcm. Use FMOD_CREATESOUNDEXINFO to specify format. Requires at least defaultfrequency, numchannels and format to be specified before it will open. Must be little endian data.
#FMOD_OPENONLY = $00002000 ; Just open the file, dont prebuffer or read. Good for fast opens for info, or when sound::readData is to be used.
#FMOD_ACCURATETIME = $00004000 ; For System::createSound - for accurate Sound::getLength/Channel::setPosition on VBR MP3, and MOD/S3M/XM/IT/MIDI files. Scans file first, so takes longer to open. FMOD_OPENONLY does not affect this.
#FMOD_MPEGSEARCH = $00008000 ; For corrupted / bad MP3 files. This will search all the way through the file until it hits a valid MPEG header. Normally only searches for 4k.
#FMOD_NONBLOCKING = $00010000 ; For opening sounds and getting streamed subsounds (seeking) asyncronously. Use Sound::getOpenState to poll the state of the sound as it opens or retrieves the subsound in the background.
#FMOD_UNIQUE = $00020000 ; Unique sound, can only be played one at a time
#FMOD_3D_HEADRELATIVE = $00040000 ; Make the sound's position, velocity and orientation relative to the listener.
#FMOD_3D_WORLDRELATIVE = $00080000 ; Make the sound's position, velocity and orientation absolute (relative to the world). (DEFAULT)
#FMOD_3D_INVERSEROLLOFF = $00100000 ; This sound will follow the inverse rolloff model where mindistance = full volume, maxdistance = where sound stops attenuating, and rolloff is fixed according to the global rolloff factor. (DEFAULT)
#FMOD_3D_LINEARROLLOFF = $00200000 ; This sound will follow a linear rolloff model where mindistance = full volume, maxdistance = silence.
#FMOD_3D_LINEARSQUAREROLLOFF = $00400000 ; This sound will follow a linear-square rolloff model where mindistance = full volume, maxdistance = silence.
#FMOD_3D_INVERSETAPEREDROLLOFF = $00800000 ; This sound will follow the inverse rolloff model at distances close to mindistance and a linear-square rolloff close to maxdistance.
#FMOD_3D_CUSTOMROLLOFF = $04000000 ; This sound will follow a rolloff model defined by Sound::set3DCustomRolloff / Channel::set3DCustomRolloff.
#FMOD_3D_IGNOREGEOMETRY = $40000000 ; Is not affect by geometry occlusion. If not specified in Sound::setMode, or Channel::setMode, the flag is cleared and it is affected by geometry again.
; Unused = $01000000 Used to be FMOD_UNICODE
#FMOD_IGNORETAGS = $02000000 ; Skips id3v2/asf/etc tag checks when opening a sound, to reduce seek/read overhead when opening files (helps with CD performance).
#FMOD_LOWMEM = $08000000 ; Removes some features from samples to give a lower memory overhead, like Sound::getName. See remarks.
#FMOD_LOADSECONDARYRAM = $20000000 ; Load sound into the secondary RAM of supported platform. On PS3, sounds will be loaded into RSX/VRAM.
#FMOD_VIRTUAL_PLAYFROMSTART = $80000000 ; For sounds that start virtual (due to being quiet or low importance), instead of swapping back to audible, and playing at the correct offset according to time, this flag makes the sound play from the start.
;--------------------------------------------------------------------------
Enumeration
#FMOD_OPENSTATE_READY ; Opened and ready to play.
#FMOD_OPENSTATE_LOADING ; Initial load in progress.
#FMOD_OPENSTATE_ERROR ; Failed to open - file not found, out of memory etc. See return value of Sound::getOpenState for what happened.
#FMOD_OPENSTATE_CONNECTING ; Connecting to remote host (internet sounds only).
#FMOD_OPENSTATE_BUFFERING ; Buffering data.
#FMOD_OPENSTATE_SEEKING ; Seeking to subsound and re-flushing stream buffer.
#FMOD_OPENSTATE_PLAYING ; Ready and playing, but not possible to release at this time without stalling the main thread.
#FMOD_OPENSTATE_SETPOSITION ; Seeking within a stream to a different position.
;--------------------------------------------------------------------------
#FMOD_OPENSTATE_MAX ; Maximum number of open state types.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration
#FMOD_SOUNDGROUP_BEHAVIOR_FAIL ; Any sound played that puts the sound count over the SoundGroup::setMaxAudible setting, will simply fail during System::playSound.
#FMOD_SOUNDGROUP_BEHAVIOR_MUTE ; Any sound played that puts the sound count over the SoundGroup::setMaxAudible setting, will be silent, then if another sound in the group stops the sound that was silent before becomes audible again.
#FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST ; Any sound played that puts the sound count over the SoundGroup::setMaxAudible setting, will steal the quietest / least important sound playing in the group.
;--------------------------------------------------------------------------
#FMOD_SOUNDGROUP_BEHAVIOR_MAX ; Maximum number of sound group behaviors.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration
#FMOD_CHANNELCONTROL_CALLBACK_END ; Called when a sound ends.
#FMOD_CHANNELCONTROL_CALLBACK_VIRTUALVOICE ; Called when a voice is swapped out or swapped in.
#FMOD_CHANNELCONTROL_CALLBACK_SYNCPOINT ; Called when a syncpoint is encountered. Can be from wav file markers.
#FMOD_CHANNELCONTROL_CALLBACK_OCCLUSION ; Called when the channel has its geometry occlusion value calculated. Can be used to clamp or change the value.
;--------------------------------------------------------------------------
#FMOD_CHANNELCONTROL_CALLBACK_MAX ; Maximum number of callback types supported.
EndEnumeration
;--------------------------------------------------------------------------
#FMOD_CHANNELCONTROL_DSP_HEAD = -1 ; Head of the DSP chain. Equivalent of index 0.
#FMOD_CHANNELCONTROL_DSP_FADER = -2 ; Built in fader DSP.
#FMOD_CHANNELCONTROL_DSP_PANNER = -3 ; Built in panner DSP.
#FMOD_CHANNELCONTROL_DSP_TAIL = -4 ; Tail of the DSP chain. Equivalent of the number of dsps minus 1.
;--------------------------------------------------------------------------
Enumeration
#FMOD_ERRORCALLBACK_INSTANCETYPE_NONE
#FMOD_ERRORCALLBACK_INSTANCETYPE_SYSTEM
#FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNEL
#FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELGROUP
#FMOD_ERRORCALLBACK_INSTANCETYPE_CHANNELCONTROL
#FMOD_ERRORCALLBACK_INSTANCETYPE_SOUND
#FMOD_ERRORCALLBACK_INSTANCETYPE_SOUNDGROUP
#FMOD_ERRORCALLBACK_INSTANCETYPE_DSP
#FMOD_ERRORCALLBACK_INSTANCETYPE_DSPCONNECTION
#FMOD_ERRORCALLBACK_INSTANCETYPE_GEOMETRY
#FMOD_ERRORCALLBACK_INSTANCETYPE_REVERB3D
#FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_SYSTEM
#FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTDESCRIPTION
#FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_EVENTINSTANCE
#FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_PARAMETERINSTANCE
#FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_CUEINSTANCE
#FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BUS
#FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_VCA
#FMOD_ERRORCALLBACK_INSTANCETYPE_STUDIO_BANK
EndEnumeration
;--------------------------------------------------------------------------
Structure FMOD_ERRORCALLBACK_INFO
result.l ; Error code result.
instancetype.l ; Type of instance the error occurred on.
*instance ; Instance pointer.
*functionname ; Function that the error occurred on.
*functionparams ; Function parameters that the error ocurred on.
EndStructure
;--------------------------------------------------------------------------
#FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED = $00000001 ; Called from System::update when the enumerated list of devices has changed.
#FMOD_SYSTEM_CALLBACK_DEVICELOST = $00000002 ; Called from System::update when an output device has been lost due to control panel parameter changes and FMOD cannot automatically recover.
#FMOD_SYSTEM_CALLBACK_MEMORYALLOCATIONFAILED = $00000004 ; Called directly when a memory allocation fails somewhere in FMOD. (NOTE - 'system' will be NULL in this callback type.)
#FMOD_SYSTEM_CALLBACK_THREADCREATED = $00000008 ; Called directly when a thread is created.
#FMOD_SYSTEM_CALLBACK_BADDSPCONNECTION = $00000010 ; Called when a bad connection was made with DSP::addInput. Usually called from mixer thread because that is where the connections are made.
#FMOD_SYSTEM_CALLBACK_PREMIX = $00000020 ; Called each tick before a mix update happens.
#FMOD_SYSTEM_CALLBACK_POSTMIX = $00000040 ; Called each tick after a mix update happens.
#FMOD_SYSTEM_CALLBACK_ERROR = $00000080 ; Called when each API function returns an error code, including delayed async functions.
#FMOD_SYSTEM_CALLBACK_MIDMIX = $00000100 ; Called each tick in mix update after clocks have been updated before the main mix occurs.
#FMOD_SYSTEM_CALLBACK_THREADDESTROYED = $00000200 ; Called directly when a thread is destroyed.
#FMOD_SYSTEM_CALLBACK_PREUPDATE = $00000400 ; Called at start of System::update function.
#FMOD_SYSTEM_CALLBACK_POSTUPDATE = $00000800 ; Called at end of System::update function.
;--------------------------------------------------------------------------
Prototype.l FMOD_DEBUG_CALLBACK (flags.l, file.p-ascii, line.l, func.p-ascii, message.p-ascii)
;--------------------------------------------------------------------------
Prototype.l FMOD_SYSTEM_CALLBACK (*system, type.l, *commanddata1, *commanddata2, *userdata)
;--------------------------------------------------------------------------
Prototype.l FMOD_CHANNELCONTROL_CALLBACK (*channelcontrol, controltype.l, callbacktype.l, *commanddata1, *commanddata2)
;--------------------------------------------------------------------------
Prototype.l FMOD_SOUND_NONBLOCK_CALLBACK (*sound, result.l)
Prototype.l FMOD_SOUND_PCMREAD_CALLBACK (*sound, *data, datalen.l)
Prototype.l FMOD_SOUND_PCMSETPOS_CALLBACK (*sound, subsound.l, position.l, postype.l)
;--------------------------------------------------------------------------
Prototype.l FMOD_FILE_OPEN_CALLBACK (name.p-ascii, *filesize, *purebasic_warning_doublepointer_handle, *userdata)
Prototype.l FMOD_FILE_CLOSE_CALLBACK (*handle, *userdata)
Prototype.l FMOD_FILE_READ_CALLBACK (*handle, *buffer, sizebytes.l, *bytesread, *userdata)
Prototype.l FMOD_FILE_SEEK_CALLBACK (*handle, pos.l, *userdata)
Prototype.l FMOD_FILE_ASYNCREAD_CALLBACK (*info.FMOD_ASYNCREADINFO, *userdata)
Prototype.l FMOD_FILE_ASYNCCANCEL_CALLBACK(*info.FMOD_ASYNCREADINFO, *userdata)
;--------------------------------------------------------------------------
Prototype.i FMOD_MEMORY_ALLOC_CALLBACK (size.l, type.l, sourcestr.p-ascii)
Prototype.i FMOD_MEMORY_REALLOC_CALLBACK (*ptr, size.l, type.l, sourcestr.p-ascii)
Prototype FMOD_MEMORY_FREE_CALLBACK (*ptr, type.l, sourcestr.p-ascii)
;--------------------------------------------------------------------------
Prototype.f FMOD_3D_ROLLOFF_CALLBACK (*channelcontrol, distance.f)
;--------------------------------------------------------------------------
Enumeration
#FMOD_DSP_RESAMPLER_DEFAULT ; Default interpolation method. Currently equal to #FMOD_DSP_RESAMPLER_LINEAR.
#FMOD_DSP_RESAMPLER_NOINTERP ; No interpolation. High frequency aliasing hiss will be audible depending on the sample rate of the sound.
#FMOD_DSP_RESAMPLER_LINEAR ; Linear interpolation (default method). Fast and good quality, causes very slight lowpass effect on low frequency sounds.
#FMOD_DSP_RESAMPLER_CUBIC ; Cubic interpolation. Slower than linear interpolation but better quality.
#FMOD_DSP_RESAMPLER_SPLINE ; 5 point spline interpolation. Slowest resampling method but best quality.
;--------------------------------------------------------------------------
#FMOD_DSP_RESAMPLER_MAX ; Maximum number of resample methods supported.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration
#FMOD_DSPCONNECTION_TYPE_STANDARD ; Default connection type. Audio is mixed from the input to the output DSP's audible buffer.
#FMOD_DSPCONNECTION_TYPE_SIDECHAIN ; Sidechain connection type. Audio is mixed from the input to the output DSP's sidechain buffer.
#FMOD_DSPCONNECTION_TYPE_SEND ; Send connection type. Audio is mixed from the input to the output DSP's audible buffer, but the input is NOT executed, only copied from. A standard connection or sidechain needs to make an input execute to generate data.
#FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN ; Send sidechain connection type. Audio is mixed from the input to the output DSP's sidechain buffer, but the input is NOT executed, only copied from. A standard connection or sidechain needs to make an input execute to generate data.
;--------------------------------------------------------------------------
#FMOD_DSPCONNECTION_TYPE_MAX ; Maximum number of DSP connection types supported.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration
#FMOD_TAGTYPE_UNKNOWN
#FMOD_TAGTYPE_ID3V1
#FMOD_TAGTYPE_ID3V2
#FMOD_TAGTYPE_VORBISCOMMENT
#FMOD_TAGTYPE_SHOUTCAST
#FMOD_TAGTYPE_ICECAST
#FMOD_TAGTYPE_ASF
#FMOD_TAGTYPE_MIDI
#FMOD_TAGTYPE_PLAYLIST
#FMOD_TAGTYPE_FMOD
#FMOD_TAGTYPE_USER
;--------------------------------------------------------------------------
#FMOD_TAGTYPE_MAX ; Maximum number of tag types supported.
EndEnumeration
;--------------------------------------------------------------------------
Enumeration
#FMOD_TAGDATATYPE_BINARY
#FMOD_TAGDATATYPE_INT
#FMOD_TAGDATATYPE_FLOAT
#FMOD_TAGDATATYPE_STRING
#FMOD_TAGDATATYPE_STRING_UTF16
#FMOD_TAGDATATYPE_STRING_UTF16BE
#FMOD_TAGDATATYPE_STRING_UTF8
#FMOD_TAGDATATYPE_CDTOC
;--------------------------------------------------------------------------
#FMOD_TAGDATATYPE_MAX ; Maximum number of tag datatypes supported.
EndEnumeration
;--------------------------------------------------------------------------
Structure FMOD_TAG
type.l ; [r] The type of this tag.
datatype.l ; [r] The type of data that this tag contains
*name ; [r] The name of this tag i.e. "TITLE", "ARTIST" etc.
*data ; [r] Pointer to the tag data - its format is determined by the datatype member
datalen.l ; [r] Length of the data contained in this tag
updated.l ; [r] True if this tag has been updated since last being accessed with Sound::getTag
EndStructure
;--------------------------------------------------------------------------
#FMOD_TIMEUNIT_MS = $00000001 ; Milliseconds.
#FMOD_TIMEUNIT_PCM = $00000002 ; PCM samples, related to milliseconds * samplerate / 1000.
#FMOD_TIMEUNIT_PCMBYTES = $00000004 ; Bytes, related to PCM samples * channels * datawidth (ie 16bit = 2 bytes).
#FMOD_TIMEUNIT_RAWBYTES = $00000008 ; Raw file bytes of (compressed) sound data (does not include headers). Only used by Sound::getLength and Channel::getPosition.
#FMOD_TIMEUNIT_PCMFRACTION = $00000010 ; Fractions of 1 PCM sample. Unsigned int range 0 to 0xFFFFFFFF. Used for sub-sample granularity for DSP purposes.
#FMOD_TIMEUNIT_MODORDER = $00000100 ; MOD/S3M/XM/IT. Order in a sequenced module format. Use Sound::getFormat to determine the PCM format being decoded to.
#FMOD_TIMEUNIT_MODROW = $00000200 ; MOD/S3M/XM/IT. Current row in a sequenced module format. Sound::getLength will return the number of rows in the currently playing or seeked to pattern.
#FMOD_TIMEUNIT_MODPATTERN = $00000400 ; MOD/S3M/XM/IT. Current pattern in a sequenced module format. Sound::getLength will return the number of patterns in the song and Channel::getPosition will return the currently playing pattern.
#FMOD_TIMEUNIT_BUFFERED = $10000000 ; Time value as seen by buffered stream. This is always ahead of audible time, and is only used for processing.
;--------------------------------------------------------------------------
#FMOD_PORT_INDEX_NONE = -1 ; Use when a port index is not required
;--------------------------------------------------------------------------
Structure FMOD_CREATESOUNDEXINFO
cbsize.l ; [w] Size of this structure. This is used so the structure can be expanded in the future and still work on older versions of FMOD Studio.
length.l ; [w] Optional. Specify 0 to ignore. Number of bytes to load starting at 'fileoffset', or size of sound to create (if FMOD_OPENUSER is used). Required if loading from memory. If 0 is specified, then it will use the size of the file (unless loading from memory then an error will be returned).
fileoffset.l ; [w] Optional. Specify 0 to ignore. Offset from start of the file to start loading from. This is useful for loading files from inside big data files.
numchannels.l ; [w] Optional. Specify 0 to ignore. Number of channels in a sound mandatory if FMOD_OPENUSER or FMOD_OPENRAW is used.
defaultfrequency.l ; [w] Optional. Specify 0 to ignore. Default frequency of sound in Hz, mandatory if FMOD_OPENUSER or FMOD_OPENRAW is used. Other formats use the frequency determined by the file format.
format.l ; [w] Optional. Specify 0 or FMOD_SOUND_FORMAT_NONE to ignore. Format of the sound, mandatory if FMOD_OPENUSER or FMOD_OPENRAW is used. Other formats use the format determined by the file format.
decodebuffersize.l ; [w] Optional. Specify 0 to ignore. For streams. This determines the size of the double buffer (in PCM samples) that a stream uses. Use this for user created streams if you want to determine the size of the callback buffer passed to you. Specify 0 to use FMOD's default size which is currently equivalent to 400ms of the sound format created/loaded.
initialsubsound.l ; [w] Optional. Specify 0 to ignore. In a multi-sample file format such as .FSB/.DLS, specify the initial subsound to seek to, only if FMOD_CREATESTREAM is used.
numsubsounds.l ; [w] Optional. Specify 0 to ignore or have no subsounds. In a sound created with FMOD_OPENUSER, specify the number of subsounds that are accessable with Sound::getSubSound. If not created with FMOD_OPENUSER, this will limit the number of subsounds loaded within a multi-subsound file. If using FSB, then if FMOD_CREATESOUNDEXINFO::inclusionlist is used, this will shuffle subsounds down so that there are not any gaps. It will mean that the indices of the sounds will be different.
*inclusionlist ; [w] Optional. Specify 0 to ignore. In a multi-sample format such as .FSB/.DLS it may be desirable to specify only a subset of sounds to be loaded out of the whole file. This is an array of subsound indices to load into memory when created.
inclusionlistnum.l ; [w] Optional. Specify 0 to ignore. This is the number of integers contained within the inclusionlist array.
pcmreadcallback.FMOD_SOUND_PCMREAD_CALLBACK ; [w] Optional. Specify 0 to ignore. Callback to 'piggyback' on FMOD's read functions and accept or even write PCM data while FMOD is opening the sound. Used for user sounds created with FMOD_OPENUSER or for capturing decoded data as FMOD reads it.
pcmsetposcallback.FMOD_SOUND_PCMSETPOS_CALLBACK ; [w] Optional. Specify 0 to ignore. Callback for when the user calls a seeking function such as Channel::setTime or Channel::setPosition within a multi-sample sound, and for when it is opened.
nonblockcallback.FMOD_SOUND_NONBLOCK_CALLBACK ; [w] Optional. Specify 0 to ignore. Callback for successful completion, or error while loading a sound that used the FMOD_NONBLOCKING flag. Also called duing seeking, when setPosition is called or a stream is restarted.
*dlsname ; [w] Optional. Specify 0 to ignore. Filename for a DLS sample set when loading a MIDI file. If not specified, on Windows it will attempt to open /windows/system32/drivers/gm.dls or /windows/system32/drivers/etc/gm.dls, on Mac it will attempt to load /System/Library/Components/CoreAudio.component/Contents/Resources/gs_instruments.dls, otherwise the MIDI will fail to open. Current DLS support is for level 1 of the specification.
*encryptionkey ; [w] Optional. Specify 0 to ignore. Key for encrypted FSB file. Without this key an encrypted FSB file will not load.
maxpolyphony.l ; [w] Optional. Specify 0 to ignore. For sequenced formats with dynamic channel allocation such as .MID and .IT, this specifies the maximum voice count allowed while playing. .IT defaults to 64. .MID defaults to 32.
*userdata ; [w] Optional. Specify 0 to ignore. This is user data to be attached to the sound during creation. Access via Sound::getUserData. Note: This is not passed to FMOD_FILE_OPEN_CALLBACK - use fileuserdata for that.
suggestedsoundtype.l ; [w] Optional. Specify 0 or FMOD_SOUND_TYPE_UNKNOWN to ignore. Instead of scanning all codec types, use this to speed up loading by making it jump straight to this codec.
fileuseropen.FMOD_FILE_OPEN_CALLBACK ; [w] Optional. Specify 0 to ignore. Callback for opening this file.
fileuserclose.FMOD_FILE_CLOSE_CALLBACK ; [w] Optional. Specify 0 to ignore. Callback for closing this file.
fileuserread.FMOD_FILE_READ_CALLBACK ; [w] Optional. Specify 0 to ignore. Callback for reading from this file.
fileuserseek.FMOD_FILE_SEEK_CALLBACK ; [w] Optional. Specify 0 to ignore. Callback for seeking within this file.
fileuserasyncread.FMOD_FILE_ASYNCREAD_CALLBACK ; [w] Optional. Specify 0 to ignore. Callback for seeking within this file.
fileuserasynccancel.FMOD_FILE_ASYNCCANCEL_CALLBACK ; [w] Optional. Specify 0 to ignore. Callback for seeking within this file.
*fileuserdata ; [w] Optional. Specify 0 to ignore. User data to be passed into the file callbacks.
channelorder.l ; [w] Optional. Specify 0 to ignore. Use this to differ the way fmod maps multichannel sounds to speakers. See FMOD_CHANNELORDER for more.
channelmask.l ; [w] Optional. Specify 0 to ignore. Use this to specify which channels map to which speakers. See FMOD_CHANNELMASK for more.
*initialsoundgroup.FMOD_SOUNDGROUP ; [w] Optional. Specify 0 to ignore. Specify a sound group if required, to put sound in as it is created.
initialseekposition.l ; [w] Optional. Specify 0 to ignore. For streams. Specify an initial position to seek the stream to.
initialseekpostype.l ; [w] Optional. Specify 0 to ignore. For streams. Specify the time unit for the position set in initialseekposition.
ignoresetfilesystem.l ; [w] Optional. Specify 0 to ignore. Set to 1 to use fmod's built in file system. Ignores setFileSystem callbacks and also FMOD_CREATESOUNEXINFO file callbacks. Useful for specific cases where you don't want to use your own file system but want to use fmod's file system (ie net streaming).
audioqueuepolicy.l ; [w] Optional. Specify 0 or FMOD_AUDIOQUEUE_CODECPOLICY_DEFAULT to ignore. Policy used to determine whether hardware or software is used for decoding, see FMOD_AUDIOQUEUE_CODECPOLICY for options (iOS >= 3.0 required, otherwise only hardware is available)
minmidigranularity.l ; [w] Optional. Specify 0 to ignore. Allows you to set a minimum desired MIDI mixer granularity. Values smaller than 512 give greater than default accuracy at the cost of more CPU and vice versa. Specify 0 for default (512 samples).
nonblockthreadid.l ; [w] Optional. Specify 0 to ignore. Specifies a thread index to execute non blocking load on. Allows for up to 5 threads to be used for loading at once. This is to avoid one load blocking another. Maximum value = 4.
EndStructure
;--------------------------------------------------------------------------
Structure FMOD_REVERB_PROPERTIES
DecayTime.f ; [r/w] 0.0 20000.0 1500.0 Reverberation decay time in ms
EarlyDelay.f ; [r/w] 0.0 300.0 7.0 Initial reflection delay time
LateDelay.f ; [r/w] 0.0 100 11.0 Late reverberation delay time relative to initial reflection
HFReference.f ; [r/w] 20.0 20000.0 5000 Reference high frequency (hz)
HFDecayRatio.f ; [r/w] 10.0 100.0 50.0 High-frequency to mid-frequency decay time ratio
Diffusion.f ; [r/w] 0.0 100.0 100.0 Value that controls the echo density in the late reverberation decay.
Density.f ; [r/w] 0.0 100.0 100.0 Value that controls the modal density in the late reverberation decay
LowShelfFrequency.f ; [r/w] 20.0 1000.0 250.0 Reference low frequency (hz)
LowShelfGain.f ; [r/w] -36.0 12.0 0.0 Relative room effect level at low frequencies
HighCut.f ; [r/w] 20.0 20000.0 20000.0 Relative room effect level at high frequencies
EarlyLateMix.f ; [r/w] 0.0 100.0 50.0 Early reflections level relative to room effect
WetLevel.f ; [r/w] -80.0 20.0 -6.0 Room effect level (at mid frequencies)
EndStructure
;--------------------------------------------------------------------------
; #define FMOD_PRESET_OFF { 1000, 7, 11, 5000, 100, 100, 100, 250, 0, 20, 96, -80.0f }
Global FMOD_PRESET_OFF.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_OFF
\DecayTime = 1000
\EarlyDelay = 7
\LateDelay = 11
\HFReference = 5000
\HFDecayRatio = 100
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 20
\EarlyLateMix = 96
\WetLevel = -80.0
EndWith
; #define FMOD_PRESET_GENERIC { 1500, 7, 11, 5000, 83, 100, 100, 250, 0, 14500, 96, -8.0f }
Global FMOD_PRESET_GENERIC.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_GENERIC
\DecayTime = 1500
\EarlyDelay = 7
\LateDelay = 11
\HFReference = 5000
\HFDecayRatio = 83
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 14500
\EarlyLateMix = 96
\WetLevel = -8.0
EndWith
; #define FMOD_PRESET_PADDEDCELL { 170, 1, 2, 5000, 10, 100, 100, 250, 0, 160, 84, -7.8f }
Global FMOD_PRESET_PADDEDCELL.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_PADDEDCELL
\DecayTime = 170
\EarlyDelay = 1
\LateDelay = 2
\HFReference = 5000
\HFDecayRatio = 10
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 160
\EarlyLateMix = 84
\WetLevel = -7.8
EndWith
; #define FMOD_PRESET_ROOM { 400, 2, 3, 5000, 83, 100, 100, 250, 0, 6050, 88, -9.4f }
Global FMOD_PRESET_ROOM.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_ROOM
\DecayTime = 400
\EarlyDelay = 2
\LateDelay = 3
\HFReference = 5000
\HFDecayRatio = 83
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 6050
\EarlyLateMix = 88
\WetLevel = -9.4
EndWith
; #define FMOD_PRESET_BATHROOM { 1500, 7, 11, 5000, 54, 100, 60, 250, 0, 2900, 83, 0.5f }
Global FMOD_PRESET_BATHROOM.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_BATHROOM
\DecayTime = 1500
\EarlyDelay = 7
\LateDelay = 11
\HFReference = 5000
\HFDecayRatio = 54
\Diffusion = 100
\Density = 60
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 2900
\EarlyLateMix = 83
\WetLevel = 0.5
EndWith
; #define FMOD_PRESET_LIVINGROOM { 500, 3, 4, 5000, 10, 100, 100, 250, 0, 160, 58, -19.0f }
Global FMOD_PRESET_LIVINGROOM.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_LIVINGROOM
\DecayTime = 500
\EarlyDelay = 3
\LateDelay = 4
\HFReference = 5000
\HFDecayRatio = 10
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 160
\EarlyLateMix = 58
\WetLevel = -19.0
EndWith
; #define FMOD_PRESET_STONEROOM { 2300, 12, 17, 5000, 64, 100, 100, 250, 0, 7800, 71, -8.5f }
Global FMOD_PRESET_STONEROOM.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_STONEROOM
\DecayTime = 2300
\EarlyDelay = 12
\LateDelay = 17
\HFReference = 5000
\HFDecayRatio = 64
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 7800
\EarlyLateMix = 71
\WetLevel = -8.5
EndWith
; #define FMOD_PRESET_AUDITORIUM { 4300, 20, 30, 5000, 59, 100, 100, 250, 0, 5850, 64, -11.7f }
Global FMOD_PRESET_AUDITORIUM.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_AUDITORIUM
\DecayTime = 4300
\EarlyDelay = 20
\LateDelay = 30
\HFReference = 5000
\HFDecayRatio = 59
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 5850
\EarlyLateMix = 64
\WetLevel = -11.7
EndWith
; #define FMOD_PRESET_CONCERTHALL { 3900, 20, 29, 5000, 70, 100, 100, 250, 0, 5650, 80, -9.8f }
Global FMOD_PRESET_CONCERTHALL.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_CONCERTHALL
\DecayTime = 3900
\EarlyDelay = 20
\LateDelay = 29
\HFReference = 5000
\HFDecayRatio = 70
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 5650
\EarlyLateMix = 80
\WetLevel = -9.8
EndWith
; #define FMOD_PRESET_CAVE { 2900, 15, 22, 5000, 100, 100, 100, 250, 0, 20000, 59, -11.3f }
Global FMOD_PRESET_CAVE.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_CAVE
\DecayTime = 2900
\EarlyDelay = 15
\LateDelay = 22
\HFReference = 5000
\HFDecayRatio = 100
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 20000
\EarlyLateMix = 59
\WetLevel = -11.3
EndWith
; #define FMOD_PRESET_ARENA { 7200, 20, 30, 5000, 33, 100, 100, 250, 0, 4500, 80, -9.6f }
Global FMOD_PRESET_ARENA.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_ARENA
\DecayTime = 7200
\EarlyDelay = 20
\LateDelay = 30
\HFReference = 5000
\HFDecayRatio = 33
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 4500
\EarlyLateMix = 80
\WetLevel = -9.6
EndWith
; #define FMOD_PRESET_HANGAR { 10000, 20, 30, 5000, 23, 100, 100, 250, 0, 3400, 72, -7.4f }
Global FMOD_PRESET_HANGAR.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_HANGAR
\DecayTime = 10000
\EarlyDelay = 20
\LateDelay = 30
\HFReference = 5000
\HFDecayRatio = 23
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 3400
\EarlyLateMix = 72
\WetLevel = -7.4
EndWith
; #define FMOD_PRESET_CARPETTEDHALLWAY { 300, 2, 30, 5000, 10, 100, 100, 250, 0, 500, 56, -24.0f }
Global FMOD_PRESET_CARPETTEDHALLWAY.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_CARPETTEDHALLWAY
\DecayTime = 300
\EarlyDelay = 2
\LateDelay = 30
\HFReference = 5000
\HFDecayRatio = 10
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 500
\EarlyLateMix = 56
\WetLevel = -24.0
EndWith
; #define FMOD_PRESET_HALLWAY { 1500, 7, 11, 5000, 59, 100, 100, 250, 0, 7800, 87, -5.5f }
Global FMOD_PRESET_HALLWAY.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_HALLWAY
\DecayTime = 1500
\EarlyDelay = 7
\LateDelay = 11
\HFReference = 5000
\HFDecayRatio = 59
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 7800
\EarlyLateMix = 87
\WetLevel = -5.5
EndWith
; #define FMOD_PRESET_STONECORRIDOR { 270, 13, 20, 5000, 79, 100, 100, 250, 0, 9000, 86, -6.0f }
Global FMOD_PRESET_STONECORRIDOR.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_STONECORRIDOR
\DecayTime = 270
\EarlyDelay = 13
\LateDelay = 20
\HFReference = 5000
\HFDecayRatio = 79
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 9000
\EarlyLateMix = 86
\WetLevel = -6.0
EndWith
; #define FMOD_PRESET_ALLEY { 1500, 7, 11, 5000, 86, 100, 100, 250, 0, 8300, 80, -9.8f }
Global FMOD_PRESET_ALLEY.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_ALLEY
\DecayTime = 1500
\EarlyDelay = 7
\LateDelay = 11
\HFReference = 5000
\HFDecayRatio = 86
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 8300
\EarlyLateMix = 80
\WetLevel = -9.8
EndWith
; #define FMOD_PRESET_FOREST { 1500, 162, 88, 5000, 54, 79, 100, 250, 0, 760, 94, -12.3f }
Global FMOD_PRESET_FOREST.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_FOREST
\DecayTime = 1500
\EarlyDelay = 162
\LateDelay = 88
\HFReference = 5000
\HFDecayRatio = 54
\Diffusion = 79
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 760
\EarlyLateMix = 94
\WetLevel = -12.3
EndWith
; #define FMOD_PRESET_CITY { 1500, 7, 11, 5000, 67, 50, 100, 250, 0, 4050, 66, -26.0f }
Global FMOD_PRESET_CITY.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_CITY
\DecayTime = 1500
\EarlyDelay = 7
\LateDelay = 11
\HFReference = 5000
\HFDecayRatio = 67
\Diffusion = 50
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 4050
\EarlyLateMix = 66
\WetLevel = -26.0
EndWith
; #define FMOD_PRESET_MOUNTAINS { 1500, 300, 100, 5000, 21, 27, 100, 250, 0, 1220, 82, -24.0f }
Global FMOD_PRESET_MOUNTAINS.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_MOUNTAINS
\DecayTime = 1500
\EarlyDelay = 300
\LateDelay = 100
\HFReference = 5000
\HFDecayRatio = 21
\Diffusion = 27
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 1220
\EarlyLateMix = 82
\WetLevel = -24.0
EndWith
; #define FMOD_PRESET_QUARRY { 1500, 61, 25, 5000, 83, 100, 100, 250, 0, 3400, 100, -5.0f }
Global FMOD_PRESET_QUARRY.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_QUARRY
\DecayTime = 1500
\EarlyDelay = 61
\LateDelay = 25
\HFReference = 5000
\HFDecayRatio = 83
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 3400
\EarlyLateMix = 100
\WetLevel = -5.0
EndWith
; #define FMOD_PRESET_PLAIN { 1500, 179, 100, 5000, 50, 21, 100, 250, 0, 1670, 65, -28.0f }
Global FMOD_PRESET_PLAIN.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_PLAIN
\DecayTime = 1500
\EarlyDelay = 179
\LateDelay = 100
\HFReference = 5000
\HFDecayRatio = 50
\Diffusion = 21
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 1670
\EarlyLateMix = 65
\WetLevel = -28.0
EndWith
; #define FMOD_PRESET_PARKINGLOT { 1700, 8, 12, 5000, 100, 100, 100, 250, 0, 20000, 56, -19.5f }
Global FMOD_PRESET_PARKINGLOT.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_PARKINGLOT
\DecayTime = 1700
\EarlyDelay = 8
\LateDelay = 12
\HFReference = 5000
\HFDecayRatio = 100
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 20000
\EarlyLateMix = 56
\WetLevel = -19.5
EndWith
; #define FMOD_PRESET_SEWERPIPE { 2800, 14, 21, 5000, 14, 80, 60, 250, 0, 3400, 66, 1.2f }
Global FMOD_PRESET_SEWERPIPE.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_SEWERPIPE
\DecayTime = 2800
\EarlyDelay = 14
\LateDelay = 21
\HFReference = 5000
\HFDecayRatio = 14
\Diffusion = 80
\Density = 60
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 3400
\EarlyLateMix = 66
\WetLevel = -1.2
EndWith
; #define FMOD_PRESET_UNDERWATER { 1500, 7, 11, 5000, 10, 100, 100, 250, 0, 500, 92, 7.0f }
Global FMOD_PRESET_UNDERWATER.FMOD_REVERB_PROPERTIES
With FMOD_PRESET_UNDERWATER
\DecayTime = 1500
\EarlyDelay = 7
\LateDelay = 11
\HFReference = 5000
\HFDecayRatio = 10
\Diffusion = 100
\Density = 100
\LowShelfFrequency = 250
\LowShelfGain = 0
\HighCut = 500
\EarlyLateMix = 92
\WetLevel = -7.0
EndWith
;--------------------------------------------------------------------------
Structure FMOD_ADVANCEDSETTINGS
cbSize.l ; [w] Size of this structure. Use sizeof(FMOD_ADVANCEDSETTINGS) NOTE: This must be set before calling System::getAdvancedSettings or System::setAdvancedSettings!
maxMPEGCodecs.l ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. MPEG codecs consume 30,528 bytes per instance and this number will determine how many MPEG channels can be played simultaneously. Default = 32.
maxADPCMCodecs.l ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. ADPCM codecs consume 3,128 bytes per instance and this number will determine how many ADPCM channels can be played simultaneously. Default = 32.
maxXMACodecs.l ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. XMA codecs consume 14,836 bytes per instance and this number will determine how many XMA channels can be played simultaneously. Default = 32.
maxCELTCodecs.l ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. CELT codecs consume 25,408 bytes per instance and this number will determine how many CELT channels can be played simultaneously. Default = 32.
maxVorbisCodecs.l ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. Vorbis codecs consume 23,256 bytes per instance and this number will determine how many Vorbis channels can be played simultaneously. Default = 32.
maxAT9Codecs.l ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. AT9 codecs consume 8,720 bytes per instance and this number will determine how many AT9 channels can be played simultaneously. Default = 32.
maxPCMCodecs.l ; [r/w] Optional. Specify 0 to ignore. For use with PS3 only. PCM codecs consume 12,672 bytes per instance and this number will determine how many streams and PCM voices can be played simultaneously. Default = 16.
ASIONumChannels.l ; [r/w] Optional. Specify 0 to ignore. Number of channels available on the ASIO device.
*purebasic_doublepointer_ASIOChannelList; [r/w] Optional. Specify 0 to ignore. Pointer to an array of strings (number of entries defined by ASIONumChannels) with ASIO channel names.
*ASIOSpeakerList.FMOD_SPEAKER; [r/w] Optional. Specify 0 to ignore. Pointer to a list of speakers that the ASIO channels map to. This can be called after System::init to remap ASIO output.
HRTFMinAngle.f ; [r/w] Optional. For use with FMOD_INIT_HRTF_LOWPASS. The angle range (0-360) of a 3D sound in relation to the listener, at which the HRTF function begins to have an effect. 0 = in front of the listener. 180 = from 90 degrees to the left of the listener to 90 degrees to the right. 360 = behind the listener. Default = 180.0.
HRTFMaxAngle.f ; [r/w] Optional. For use with FMOD_INIT_HRTF_LOWPASS. The angle range (0-360) of a 3D sound in relation to the listener, at which the HRTF function has maximum effect. 0 = front of the listener. 180 = from 90 degrees to the left of the listener to 90 degrees to the right. 360 = behind the listener. Default = 360.0.
HRTFFreq.f ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_INIT_HRTF_LOWPASS. The cutoff frequency of the HRTF's lowpass filter function when at maximum effect. (i.e. at HRTFMaxAngle). Default = 4000.0.
vol0virtualvol.f ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_INIT_VOL0_BECOMES_VIRTUAL. If this flag is used, and the volume is below this, then the sound will become virtual. Use this value to raise the threshold to a different point where a sound goes virtual.
defaultDecodeBufferSize.l ; [r/w] Optional. Specify 0 to ignore. For streams. This determines the default size of the double buffer (in milliseconds) that a stream uses. Default = 400ms
profilePort.u ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_INIT_PROFILE_ENABLE. Specify the port to listen on for connections by the profiler application.
geometryMaxFadeTime.l ; [r/w] Optional. Specify 0 to ignore. The maximum time in miliseconds it takes for a channel to fade to the new level when its occlusion changes.
distanceFilterCenterFreq.f ; [r/w] Optional. Specify 0 to ignore. For use with FMOD_INIT_DISTANCE_FILTERING. The default center frequency in Hz for the distance filtering effect. Default = 1500.0.
reverb3Dinstance.l ; [r/w] Optional. Specify 0 to ignore. Out of 0 to 3, 3d reverb spheres will create a phyical reverb unit on this instance slot. See FMOD_REVERB_PROPERTIES.
DSPBufferPoolSize.l ; [r/w] Optional. Specify 0 to ignore. Number of buffers in DSP buffer pool. Each buffer will be DSPBlockSize * sizeof(float) * SpeakerModeChannelCount. ie 7.1 @ 1024 DSP block size = 8 * 1024 * 4 = 32kb. Default = 8.
stackSizeStream.l ; [r/w] Optional. Specify 0 to ignore. Specify the stack size for the FMOD Stream thread in bytes. Useful for custom codecs that use excess stack. Default 49,152 (48kb)
stackSizeNonBlocking.l ; [r/w] Optional. Specify 0 to ignore. Specify the stack size for the FMOD_NONBLOCKING loading thread. Useful for custom codecs that use excess stack. Default 65,536 (64kb)
stackSizeMixer.l ; [r/w] Optional. Specify 0 to ignore. Specify the stack size for the FMOD mixer thread. Useful for custom dsps that use excess stack. Default 49,152 (48kb)
resamplerMethod.l ; [r/w] Optional. Specify 0 to ignore. Resampling method used with fmod's software mixer. See FMOD_DSP_RESAMPLER for details on methods.
commandQueueSize.l ; [r/w] Optional. Specify 0 to ignore. Specify the command queue size for thread safe processing. Default 2048 (2kb)
randomSeed.l ; [r/w] Optional. Specify 0 to ignore. Seed value that FMOD will use to initialize its internal random number generators.
EndStructure
;--------------------------------------------------------------------------
Structure FMOD_CODEC_WAVEFORMAT
name.a[256]; [in] Name of sound.
format.l; [in] Format for (decompressed) codec output, ie FMOD_SOUND_FORMAT_PCM8, FMOD_SOUND_FORMAT_PCM16.
channels.l; [in] Number of channels used by codec, ie mono = 1, stereo = 2.
frequency.l; [in] Default frequency in hz of the codec, ie 44100.