/'$ preserve start $'/

/' ============================================================================================ '/
/' FMOD Ex - Main C/C++ event/data driven system header file.                                   '/
/' Copyright (c), Firelight Technologies Pty, Ltd. 2004-2011.                                   '/
/'                                                                                              '/
/' This header is the base header for all other FMOD EventSystem headers. If you are            '/
/' programming in C use this exclusively, or if you are programming C++ use this in             '/
/' conjunction with FMOD_EVENT.HPP                                                              '/
/' ============================================================================================ '/

#ifndef __FMOD_EVENT_BI__
#define __FMOD_EVENT_BI__
#inclib "fmod_event"

#ifndef _FMOD_BI
#include "fmodex.bi"
#endif

/'
    FMOD EventSystem version number.  Check this against FMOD::FMOD_EventSystem_getVersion.
    &haaaabbcc -> aaaa = major version number.  bb = minor version number.  cc = development version number.
'/

#define FMOD_EVENT_VERSION &h00044408

/'
    FMOD event types
'/

type as FMOD_EVENTSYSTEM_     FMOD_EVENTSYSTEM
type as FMOD_EVENTPROJECT_    FMOD_EVENTPROJECT
type as FMOD_EVENTGROUP_      FMOD_EVENTGROUP
type as FMOD_EVENTCATEGORY_   FMOD_EVENTCATEGORY
type as FMOD_EVENT_           FMOD_EVENT
type as FMOD_EVENTPARAMETER_  FMOD_EVENTPARAMETER
type as FMOD_EVENTREVERB_     FMOD_EVENTREVERB
type as FMOD_EVENTQUEUE_      FMOD_EVENTQUEUE
type as FMOD_EVENTQUEUEENTRY_ FMOD_EVENTQUEUEENTRY
type as FMOD_MUSICPROMPT_     FMOD_MUSICPROMPT
type as FMOD_MUSICSYSTEM_     FMOD_MUSICSYSTEM
type as uinteger                FMOD_EVENT_INITFLAGS
type as uinteger                FMOD_EVENT_MODE
type as uinteger                FMOD_EVENT_STATE
type as uinteger                FMOD_MUSIC_ID
type as FMOD_MUSIC_ID               FMOD_MUSIC_CUE_ID
type as FMOD_MUSIC_ID               FMOD_MUSIC_PARAM_ID


/'
[DEFINE]
[
    [NAME]
    FMOD_EVENT_INITFLAGS

    [DESCRIPTION]   
    Initialization flags.  Use them with FMOD_EventSystem_init in the eventflags parameter to change various behaviour.

    [REMARKS]

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]
    FMOD_EventSystem_init
    FMOD_EventSystem_getEventByGUID
    FMOD_EVENT_SOUNDDEFINFO
    FMOD_EVENT_CALLBACKTYPE
]
'/
#define FMOD_EVENT_INIT_NORMAL                            &h00000000 /' All platforms - Initialize normally '/
#define FMOD_EVENT_INIT_USER_ASSETMANAGER                 &h00000001 /' All platforms - All wave data loading/freeing will be referred back to the programmer through the FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_CREATE/FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_RELEASE callback '/
#define FMOD_EVENT_INIT_FAIL_ON_MAXSTREAMS                &h00000002 /' All platforms - Events will fail if "Max streams" was reached when playing streamed banks, instead of going virtual. '/
#define FMOD_EVENT_INIT_DONTUSENAMES                      &h00000004 /' All platforms - All event/eventgroup/eventparameter/eventcategory/eventreverb names will be discarded on load. Use getXXXByIndex to access them. This may potentially save a lot of memory at runtime. '/
#define FMOD_EVENT_INIT_UPPERCASE_FILENAMES               &h00000008 /' All platforms - All FSB filenames will be translated to upper case before being used. '/
#define FMOD_EVENT_INIT_LOWERCASE_FILENAMES               &h00000080 /' All platforms - All FSB filenames will be translated to lower case before being used. '/
#define FMOD_EVENT_INIT_SEARCH_PLUGINS                    &h00000010 /' All platforms - Search the current directory for dsp/codec plugins on FMOD_EventSystem_init. '/
#define FMOD_EVENT_INIT_USE_GUIDS                         &h00000020 /' All platforms - Build an event GUID table when loading FEVs so that FMOD_EventSystem_getEventByGUID can be used. '/
#define FMOD_EVENT_INIT_DETAILED_SOUNDDEF_INFO            &h00000040 /' All platforms - Pass an FMOD_EVENT_SOUNDDEFINFO struct to FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_SELECTINDEX callbacks rather than just the sound definition name (uses more memory for sound definition waveform names). '/
#define FMOD_EVENT_INIT_RESETPARAMSTOMINIMUM              &h00000100 /' All platforms - Reset parameters to minimum value when getting an event instance instead of using the INFO_ONLY event's values. '/
#define FMOD_EVENT_INIT_ELEVATION_AFFECTS_LISTENER_ANGLE  &h00000200 /' All platforms - The listener angle event parameters will be affected by elevation, and not just horizontal components. '/
#define FMOD_EVENT_INIT_DONTUSELOWMEM                     &h00000400 /' All platforms - Instruct the event system to NOT use FMOD_LOWMEM when it opens .FSB files. Specify this flag if you need access to the names of individual subsounds in loaded .FSB files. Specifying this flag will make the event system use more memory. '/

/' [DEFINE_END] '/


/'
[DEFINE]
[
    [NAME] 
    FMOD_EVENT_MODE

    [DESCRIPTION]   
    Event data loading bitfields. Bitwise OR them together for controlling how event data is loaded.

    [REMARKS]
    FMOD_EVENT_NONBLOCKING_THREAD0-4.  This flag extends FMOD_EVENT_NONBLOCKING to allow multiple asynchronous loads to happen on different threads at the same time.<br>
    FMOD_EVENT_NONBLOCKING by itself will always execute on thread 0 by default.  Up to 5 simultaneous threads for loading at once are supported.<br>
    Only 1 flag should be specified at a time.  If multiple flags are specified an FMOD_ERR_INVALID_PARAM error will be returned.<br>
    FMOD_EVENT_NONBLOCKING_THREAD0-4 can be specified without the FMOD_EVENT_NONBLOCKING flag being used (it automatically includes it)

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]
    FMOD_EventGroup_loadEventData
    FMOD_EventGroup_getEvent
    FMOD_EventGroup_getEventByIndex
]
'/
#define FMOD_EVENT_DEFAULT               &h00000000  /' FMOD_EVENT_DEFAULT specifies default loading behaviour i.e. event data for the whole group is NOT cached and the function that initiated the loading process will block until loading is complete. '/
#define FMOD_EVENT_NONBLOCKING           &h00000001  /' For loading event data asynchronously. FMOD will use a thread to load the data.  Use FMOD_Event_getState to find out when loading is complete. '/
#define FMOD_EVENT_ERROR_ON_DISKACCESS   &h00000002  /' For FMOD_EventGroup_getEvent / FMOD_EventGroup_getEventByIndex.  If FMOD_EventGroup_loadEventData has accidently been forgotten this flag will return an FMOD_ERR_FILE_UNWANTED if the getEvent function tries to load data. '/
#define FMOD_EVENT_INFOONLY              &h00000004  /' For FMOD_EventGroup_getEvent / FMOD_EventGroup_getEventByIndex.  Don't allocate instances or load data, just get a handle to allow user to get information from the event. '/
#define FMOD_EVENT_USERDSP               &h00000008  /' For FMOD_EventGroup_getEvent / FMOD_EventGroup_getEventByIndex.  Tells FMOD that you plan to add your own DSP effects to this event's ChannelGroup at runtime. Omitting this flag will yield a small memory gain. '/

#define FMOD_EVENT_NONBLOCKING_THREAD0   (FMOD_EVENT_NONBLOCKING)               /' FMOD_EVENT_NONBLOCKING, execute on thread 0.  See remarks. (default) '/
#define FMOD_EVENT_NONBLOCKING_THREAD1   (FMOD_EVENT_NONBLOCKING or &h00010000)  /' FMOD_EVENT_NONBLOCKING, execute on thread 1.  See remarks. '/
#define FMOD_EVENT_NONBLOCKING_THREAD2   (FMOD_EVENT_NONBLOCKING or &h00020000)  /' FMOD_EVENT_NONBLOCKING, execute on thread 2.  See remarks. '/
#define FMOD_EVENT_NONBLOCKING_THREAD3   (FMOD_EVENT_NONBLOCKING or &h00040000)  /' FMOD_EVENT_NONBLOCKING, execute on thread 3.  See remarks. '/
#define FMOD_EVENT_NONBLOCKING_THREAD4   (FMOD_EVENT_NONBLOCKING or &h00080000)  /' FMOD_EVENT_NONBLOCKING, execute on thread 4.  See remarks. '/
#define FMOD_EVENT_NONBLOCKING_THREAD_MAX 5
/' [DEFINE_END] '/


/'
[DEFINE]
[
    [NAME] 
    FMOD_EVENT_STATE

    [DESCRIPTION]   
    These values describe what state an event is in.

    [REMARKS]    
    The flags below can be combined to set multiple states at once.  Use bitwise AND operations to test for these.
    An example of a combined flag set would be FMOD_EVENT_STATE_READY or FMOD_EVENT_STATE_PLAYING.

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]
    FMOD_Event_getState
    FMOD_EVENT_MODE
]
'/
#define FMOD_EVENT_STATE_READY           &h00000001  /' Event is ready to play. '/
#define FMOD_EVENT_STATE_LOADING         &h00000002  /' Loading in progress. '/
#define FMOD_EVENT_STATE_ERROR           &h00000004  /' Failed to open - file not found, out of memory etc.  See return value of FMOD_Event_getState for what happened. '/
#define FMOD_EVENT_STATE_PLAYING         &h00000008  /' Event has been started.  This will still be true even if there are no sounds active.  FMOD_Event_stop must be called or the event must stop itself using a 'one shot and stop event' parameter mode. '/
#define FMOD_EVENT_STATE_CHANNELSACTIVE  &h00000010  /' Event has active voices.  Use this if you want to detect if sounds are playing in the event or not. '/
#define FMOD_EVENT_STATE_INFOONLY        &h00000020  /' Event was loaded with the FMOD_EVENT_INFOONLY flag. '/
#define FMOD_EVENT_STATE_STARVING        &h00000040  /' Event is streaming but not being fed data in time, so may be stuttering. '/
#define FMOD_EVENT_STATE_NEEDSTOLOAD     &h00000080  /' Event still needs to load wavebank data. '/
/' [DEFINE_END] '/


/'
[ENUM]
[
	[DESCRIPTION]
    Property indices for FMOD_Event_getPropertyByIndex.
    
	[REMARKS]        

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

	[SEE_ALSO]
    FMOD_Event_getPropertyByIndex
]
'/
enum FMOD_EVENT_PROPERTY
    FMOD_EVENTPROPERTY_NAME = 0                        /' Type : zstring ptr     - (<b>Readonly</b>) Name of event. '/
    FMOD_EVENTPROPERTY_VOLUME                          /' Type : float     - Relative volume of event. '/
    FMOD_EVENTPROPERTY_VOLUMERANDOMIZATION             /' Type : float     - Random deviation in volume of event. '/
    FMOD_EVENTPROPERTY_PITCH                           /' Type : float     - Relative pitch of event in raw underlying units. '/
    FMOD_EVENTPROPERTY_PITCH_OCTAVES                   /' Type : float     - Relative pitch of event in octaves. '/
    FMOD_EVENTPROPERTY_PITCH_SEMITONES                 /' Type : float     - Relative pitch of event in semitones. '/
    FMOD_EVENTPROPERTY_PITCH_TONES                     /' Type : float     - Relative pitch of event in tones. '/
    FMOD_EVENTPROPERTY_PITCHRANDOMIZATION              /' Type : float     - Random deviation in pitch of event in raw underlying units. '/
    FMOD_EVENTPROPERTY_PITCHRANDOMIZATION_OCTAVES      /' Type : float     - Random deviation in pitch of event in octaves. '/
    FMOD_EVENTPROPERTY_PITCHRANDOMIZATION_SEMITONES    /' Type : float     - Random deviation in pitch of event in semitones. '/
    FMOD_EVENTPROPERTY_PITCHRANDOMIZATION_TONES        /' Type : float     - Random deviation in pitch of event in tones. '/
    FMOD_EVENTPROPERTY_PRIORITY                        /' type : integer       - Playback priority of event. '/
    FMOD_EVENTPROPERTY_MAX_PLAYBACKS                   /' type : integer       - (<b>Readonly</b>) Maximum simultaneous playbacks of event. '/
    FMOD_EVENTPROPERTY_MAX_PLAYBACKS_BEHAVIOR          /' type : integer       - 1 = steal oldest, 2 = steal newest, 3 = steal quietest, 4 = just fail, 5 = just fail if quietest. '/
    FMOD_EVENTPROPERTY_MODE                            /' Type : FMOD_MODE - Either FMOD_3D or FMOD_2D. '/
    FMOD_EVENTPROPERTY_3D_IGNORE_GEOMETRY              /' type : integer       - Ignore geometry for that event. 1 = yes,  0 = no. '/
    FMOD_EVENTPROPERTY_3D_ROLLOFF                      /' Type : FMOD_MODE - Either FMOD_3D_INVERSEROLLOFF, FMOD_3D_LINEARROLLOFF, FMOD_3D_LINEARSQUAREROLLOFF, or none for custom rolloff. '/
    FMOD_EVENTPROPERTY_3D_MINDISTANCE                  /' Type : float     - Minimum 3d distance of event. '/
    FMOD_EVENTPROPERTY_3D_MAXDISTANCE                  /' Type : float     - Maximum 3d distance of event.  Means different things depending on EVENTPROPERTY_3D_ROLLOFF. If event has custom rolloff, setting FMOD_EVENTPROPERTY_3D_MAXDISTANCE will scale the range of all distance parameters in this event e.g. set this property to 2.0 to double the range of all distance parameters, set it to 0.5 to halve the range of all distance parameters. '/
    FMOD_EVENTPROPERTY_3D_POSITION                     /' Type : FMOD_MODE - Either FMOD_3D_HEADRELATIVE or FMOD_3D_WORLDRELATIVE. '/
    FMOD_EVENTPROPERTY_3D_CONEINSIDEANGLE              /' Type : float     - Event cone inside angle.  0 to 360. '/
    FMOD_EVENTPROPERTY_3D_CONEOUTSIDEANGLE             /' Type : float     - Event cone outside angle.  0 to 360. '/
    FMOD_EVENTPROPERTY_3D_CONEOUTSIDEVOLUME            /' Type : float     - Event cone outside volume.  0 to 1.0. '/
    FMOD_EVENTPROPERTY_3D_DOPPLERSCALE                 /' Type : float     - Doppler scale where 0 = no doppler, 1.0 = normal doppler, 2.0 = double doppler etc. '/
    FMOD_EVENTPROPERTY_3D_SPEAKERSPREAD                /' Type : float     - Angle of spread for stereo/mutlichannel source. 0 to 360. '/
    FMOD_EVENTPROPERTY_3D_PANLEVEL                     /' Type : float     - 0 = sound pans according to speaker levels, 1 = sound pans according to 3D position. '/
    FMOD_EVENTPROPERTY_SPEAKER_L                       /' Type : float     - 2D event volume for front left speaker. '/
    FMOD_EVENTPROPERTY_SPEAKER_C                       /' Type : float     - 2D event volume for front center speaker. '/
    FMOD_EVENTPROPERTY_SPEAKER_R                       /' Type : float     - 2D event volume for front right speaker. '/
    FMOD_EVENTPROPERTY_SPEAKER_LS                      /' Type : float     - 2D event volume for side left speaker. '/
    FMOD_EVENTPROPERTY_SPEAKER_RS                      /' Type : float     - 2D event volume for side right speaker. '/
    FMOD_EVENTPROPERTY_SPEAKER_LR                      /' Type : float     - 2D event volume for back left speaker. '/
    FMOD_EVENTPROPERTY_SPEAKER_RR                      /' Type : float     - 2D event volume for back right speaker. '/
    FMOD_EVENTPROPERTY_SPEAKER_LFE                     /' Type : float     - 2D event volume for low frequency speaker. '/
    FMOD_EVENTPROPERTY_REVERBWETLEVEL                  /' Type : float     - Reverb gain for this event where 0 = full reverb, -60 = no reverb. '/
    FMOD_EVENTPROPERTY_ONESHOT                         /' type : integer       - Oneshot event - stops when no channels playing. 1 = yes, it's a oneshot  0 = no. it's not a oneshot. '/
    FMOD_EVENTPROPERTY_FADEIN                          /' type : integer       - Time in milliseconds over which to fade this event in when programmer starts it. 0 = no fade in. Cannot be set while the event is playing. '/
    FMOD_EVENTPROPERTY_FADEOUT                         /' type : integer       - Time in milliseconds over which to fade this event out when programmer stops it. 0 = no fade out. Cannot be set while the event is playing. '/
    FMOD_EVENTPROPERTY_REVERBDRYLEVEL                  /' Type : float     - Dry reverb gain for this event where 0 = full dry, -60 = no dry. '/
    FMOD_EVENTPROPERTY_TIMEOFFSET                      /' Type : float     - Time offset of sound start in seconds. '/
    FMOD_EVENTPROPERTY_SPAWNINTENSITY                  /' Type : float     - Multiplier for spawn frequency of all sounds in this event. '/
    FMOD_EVENTPROPERTY_SPAWNINTENSITY_RANDOMIZATION    /' Type : float     - Random deviation in spawn intensity of event. '/
    FMOD_EVENTPROPERTY_WII_CONTROLLERSPEAKERS          /' type : integer       - Wii/WiiU only. Use FMOD_WII_CONTROLLER from fmodwii.h or FMOD_WIIU_CONTROLLER from fmodwiiu.h to set which Wii Controller Speaker(s) to play this event on. '/
	FMOD_EVENTPROPERTY_3D_POSRANDOMIZATION_MIN         /' Type : uinteger   - Minimum radius of random deviation in the 3D position of event. '/
	FMOD_EVENTPROPERTY_3D_POSRANDOMIZATION_MAX         /' Type : uinteger   - Maximum radius of random deviation in the 3D position of event. '/
    FMOD_EVENTPROPERTY_EVENTTYPE                       /' type : integer       - (<b>Readonly</b>) 0 = simple event, 1 = complex event '/
    FMOD_EVENTPROPERTY_STEAL_PRIORITY                  /' type : integer       - 0 to 10000.  How important this event is in relation to other events in the project. This event will never steal an event with a higher steal priority than this. '/
    FMOD_EVENTPROPERTY_EFFECTS_AFFECT_REVERB           /' type : integer       - 0 = default (no), 1 = yes.  Alternate routing for reverb path of an event so it goes from the layer dsp unit instead of the channel. '/
    FMOD_EVENTPROPERTY_WILL_TERMINATE                  /' type : integer       - (<b>Readonly</b>) 0 = no, 1 = yes, 2 = unknown (current event state is too complex).  Whether this event will terminate (stop playing) by itself. If called on an event instance with this_instance = true, the prediction is based on the current state of that instance. This means parameter values, keyoffs etc. come into play. '/
    FMOD_EVENTPROPERTY_DSPCLOCKSTART_HI                /' Type : uinteger - High 32 bits of a 64 bit DSP clock value, for a start time for any sound in this event. '/
    FMOD_EVENTPROPERTY_DSPCLOCKSTART_LO                /' Type : uinteger - Low 32 bits of a 64 bit DSP clock value, for a start time for any sound in this event. '/
    FMOD_EVENTPROPERTY_3D_AUTO_DISTANCE_FILTERING      /' type : integer       - 0 = default (no), 1 = yes. Whether to automaically apply the distance effect to sounds in this event. '/
    FMOD_EVENTPROPERTY_3D_AUTO_DISTANCE_CENTER_FREQ    /' Type : float     - 10 to 22050. The center frequency for the distance effect.'/
    FMOD_EVENTPROPERTY_USER_BASE                        /' User created events start from here onwards. '/
end enum


/'
[ENUM]
[
	[DESCRIPTION]
    Event property types.
    
	[REMARKS]

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

	[SEE_ALSO]
    FMOD_Event_getPropertyByIndex
    FMOD_Event_getPropertyInfo
]
'/
enum FMOD_EVENTPROPERTY_TYPE
    FMOD_EVENTPROPERTY_TYPE_INT = 0                     /' Property is an int, uinteger or other type of equivalent size e.g. FMOD_MODE. '/
    FMOD_EVENTPROPERTY_TYPE_FLOAT                      /' Property is a float. '/
    FMOD_EVENTPROPERTY_TYPE_STRING                      /' Property is a zstring ptr . '/
end enum


/'
[ENUM]
[
	[DESCRIPTION]
    Pitch units for FMOD_Event_setPitch and FMOD_EventCategory_setPitch.
    
	[REMARKS]        

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

	[SEE_ALSO]
    FMOD_Event_setPitch
    FMOD_EventCategory_setPitch
]
'/
enum FMOD_EVENT_PITCHUNITS
    FMOD_EVENT_PITCHUNITS_RAW = 0      /' Pitch is specified in raw underlying units. '/
    FMOD_EVENT_PITCHUNITS_OCTAVES      /' Pitch is specified in units of octaves. '/
    FMOD_EVENT_PITCHUNITS_SEMITONES    /' Pitch is specified in units of semitones. '/
    FMOD_EVENT_PITCHUNITS_TONES         /' Pitch is specified in units of tones. '/
end enum


/'
[ENUM]
[
	[DESCRIPTION]
    Flags to pass to FMOD_EventGroup_loadEventData to determine what to load at the time of calling.
    
	[REMARKS]

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

	[SEE_ALSO]
    FMOD_EventGroup_loadEventData
]
'/
enum FMOD_EVENT_RESOURCE
    FMOD_EVENT_RESOURCE_STREAMS_AND_SAMPLES  /' Open all streams and load all banks into memory, under this group (recursive) '/
    FMOD_EVENT_RESOURCE_STREAMS              /' Open all streams under this group (recursive).  No samples are loaded. '/
    FMOD_EVENT_RESOURCE_SAMPLES               /' Load all banks into memory, under this group (recursive).  No streams are opened. '/
end enum


/'
[ENUM]
[
    [DESCRIPTION]   
    These callback types are used with FMOD_EVENT_CALLBACK.

    [REMARKS]
    <b>Note!</b> Currently the user must call FMOD_EventSystem_update for these callbacks to trigger!<p>

    When the event callback is called, 'param1' and 'param2' mean different things depending on the type of callback. Here is an explanation of what these parameters
    mean in what context :<p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_SYNCPOINT</b>
    <p>
    param1 = (zstring ptr ) name of sync point<br>
    param2 = (uinteger) PCM offset of sync point.<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_SYNCPOINT callback is generated from 'markers' embedded in .wav files.
    These can be created by placing 'markers' in the original source wavs using a tool such as Sound Forge or Cooledit.
    The wavs are then compiled into .FSB files when compiling the audio data using the FMOD designer tool.
    Callbacks will be automatically generated at the correct place in the timeline when these markers are encountered
    which makes it useful for synchronization, lip syncing etc.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_START</b>
    <p>
    param1 = (zstring ptr ) name of sound definition being started<br>
    param2 = (int) index of wave being started inside sound definition (ie for multi wave sound definitions)<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_START callback is generated each time a sound definition is played in an event.
    This happens every time a sound definition starts due to the event parameter entering the region specified in the 
    layer created by the sound designer.
    This also happens when sounds are randomly respawned using the random respawn feature in the sound definition 
    properties in FMOD designer.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_END</b>
    <p>
    param1 = (zstring ptr ) name of sound definition being stopped<br>
    param2 = (int) index of wave being stopped inside sound definition (ie for multi wave sound definitions)<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_END callback is generated when a one-shot sound definition inside an event ends, 
    or when a looping sound definition stops due to the event parameter leaving the region specified in the layer created 
    by the sound designer.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_STOLEN</b>
    <p>
    param1 = 0<br>
    param2 = 0<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_STOLEN callback is generated when a getEventXXX call needs to steal an event instance that is in use because 
    the event's "Max playbacks" has been exceeded. This callback is called before the event is stolen and before the event 
    is stopped (if it is playing). An FMOD_EVENT_CALLBACKTYPE_EVENTFINISHED callback will be generated when the stolen event is stopped i.e. <b>after</b>
    the FMOD_EVENT_CALLBACKTYPE_STOLEN. If the callback function returns FMOD_ERR_EVENT_FAILED, the event will <b>not</b>
    be stolen, and the returned value will be passed back as the return value of the getEventXXX call that triggered the steal attempt.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_EVENTFINISHED</b>
    <p>
    param1 = 0<br>
    param2 = 0<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_EVENTFINISHED callback is generated whenever an event is stopped for any reason including when the user
    calls FMOD_Event_stop().
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_NET_MODIFIED</b>
    <p>
    param1 = (FMOD_EVENT_PROPERTY) which property was modified<br>
    param2 = (float) the new property value<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_NET_MODIFIED callback is generated when someone has connected to your running application with 
    FMOD Designer and changed a property within this event, for example volume or pitch.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_CREATE</b>
    <p>
    param1 = (zstring ptr ) name of sound definition<br>
    param2 [in] = (integer ptr ) pointer to index of sound definition entry<br>
    param2 [out] = (Fmod_sound ptr ptr) pointer to a valid lower level API FMOD Sound handle<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_CREATE callback is generated when a "programmer" sound needs to be loaded.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_RELEASE</b>
    <p>
    param1 = (zstring ptr ) name of sound definition<br>
    param2 = (Fmod_sound ptr) the FMOD sound handle that was previously created in FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_CREATE<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_RELEASE callback is generated when a "programmer" sound needs to be unloaded.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_INFO</b>
    <p>
    param1 = (zstring ptr ) name of sound definition<br>
    param2 = (Fmod_sound ptr) the FMOD sound handle that FMOD will use for this sound definition<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_INFO callback is generated when a sound definition is loaded. It can be used to find
    information about the specific sound that will be played.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_EVENTSTARTED</b>
    <p>
    param1 = 0<br>
    param2 = 0<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_EVENTSTARTED callback is generated whenever an event is started. This callback will be called before any sounds in the event have begun to play.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_SELECTINDEX</b>
    <p>
    param1 = (zstring ptr ) name of sound definition if FMOD_EVENT_INIT_DETAILED_SOUNDDEF_INFO was not specified<br>
    param1 = (FMOD_EVENT_SOUNDDEFINFO ptr) sound definition info struct if FMOD_EVENT_INIT_DETAILED_SOUNDDEF_INFO was specified<br>
    param2 [in] = (integer ptr) pointer to number of entries in this sound definition<br>
    *param2 [out] = (int) index of sound definition entry to select<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_SELECTINDEX callback is generated when a sound definition entry needs to be chosen from a "ProgrammerSelected" sound definition.
    <p>&nbsp<p>

    <b>FMOD_EVENT_CALLBACKTYPE_OCCLUSION</b>
    <p>
    param1 = (float ptr) pointer to a floating point direct value that can be read and modified after the geometry engine has calculated it for this event's channel.<br>
    param2 = (float ptr) pointer to a floating point reverb value that can be read and modified after the geometry engine has calculated it for this event's channel.<br>
    <p>
    An FMOD_EVENT_CALLBACKTYPE_OCCLUSION callback is generated whenever an channel has its occlusion updated via the geometry system.
    <p>&nbsp<p>

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_Event_setCallback
    FMOD_EVENT_CALLBACK
    FMOD_EVENT_SOUNDDEFINFO
    FMOD_EVENT_INITFLAGS
    FMOD_EventSystem_update
]
'/
enum FMOD_EVENT_CALLBACKTYPE
    FMOD_EVENT_CALLBACKTYPE_SYNCPOINT            /' Called when a syncpoint is encountered. Can be from wav file markers. '/
    FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_START       /' Called when a sound definition inside an event is triggered. '/
    FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_END         /' Called when a sound definition inside an event ends or is stopped. '/
    FMOD_EVENT_CALLBACKTYPE_STOLEN               /' Called when a getEventXXX call steals an event instance that is in use. '/
    FMOD_EVENT_CALLBACKTYPE_EVENTFINISHED        /' Called when an event is stopped for any reason. '/
    FMOD_EVENT_CALLBACKTYPE_NET_MODIFIED         /' Called when a property of the event has been modified by a network-connected host. '/
    FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_CREATE      /' Called when a programmer sound definition entry is loaded. '/
    FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_RELEASE     /' Called when a programmer sound definition entry is unloaded. '/
    FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_INFO        /' Called when a sound definition entry is loaded. '/
    FMOD_EVENT_CALLBACKTYPE_EVENTSTARTED         /' Called when an event is started. '/
    FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_SELECTINDEX /' Called when a sound definition entry needs to be chosen from a "ProgrammerSelected" sound definition. '/
    FMOD_EVENT_CALLBACKTYPE_OCCLUSION             /' Called when an event's channel is occluded with the geometry engine. '/
end enum


/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure containing realtime information about a wavebank.

    [REMARKS]

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_EventSystem_getInfo
    FMOD_EVENT_SYSTEMINFO
]
'/
type FMOD_EVENT_WAVEBANKINFO
    as zstring * 256         name             /' [out] Name of this wave bank. '/
    as integer           streamrefcnt          /' [out] Number of stream references to this wave bank made by events in this event system. '/
    as integer           samplerefcnt          /' [out] Number of sample references to this wave bank made by events in this event system. '/
    as integer           numstreams            /' [out] Number of times this wave bank has been opened for streaming. '/
    as integer           maxstreams            /' [out] Maximum number of times this wave bank will be opened for streaming. '/
    as integer           streamsinuse          /' [out] Number of streams currently in use. '/
    as uinteger  streammemory          /' [out] Amount of memory (in bytes) used by streams. '/
    as uinteger  samplememory          /' [out] Amount of memory (in bytes) used by samples. '/
    as integer           type                  /' [out] 0 = stream from disk, 1 = load into memory, 2 = decompress into memory. '/
end type


/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure containing realtime information about an event system.

    [REMARKS]
    On entry, numplayingevents should be set to the number of elements in the playingevents array. If the actual
    number of playing events is greater than numplayingevents then the playingevents array will be filled with
    numplayingevents entries and numplayingevents will be set to the actual number of playing events on exit.
    In short, if numplayingevents on exit > numplayingevents on entry then the playingevents array wasn't large
    enough and some events were unable to be added to the array.

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_EventSystem_getInfo
    FMOD_EventProject_getInfo
    FMOD_EVENT_WAVEBANKINFO
]
'/
type FMOD_EVENT_SYSTEMINFO
    as integer                      numevents          /' [out] Total number of events in all event groups in this event system. '/
    as integer                      numinstances       /' [out] Total number of event instances in all event groups in this event system. '/
    as integer                      maxwavebanks       /' [in/out] Out, number of wavebanks loaded by the EventSystem.  In. Maximum size of array of wavebankinfo structures supplied by user.  Optional. '/
    as FMOD_EVENT_WAVEBANKINFO ptr wavebankinfo       /' [in] Pointer to array FMOD_EVENT_WAVEBANKINFO structures (max size defined by maxwavebanks).  FMOD will fill these in with detailed information on each wave bank. Optional. '/
    as integer                      numplayingevents   /' [in/out] On entry, maximum number of entries in playingevents array. On exit, actual number of entries in playingevents array, or if playingevents is null, then it is just the number of currently playing events. Optional. '/
    as FMOD_EVENT ptr ptr           playingevents      /' [in/out] Pointer to an array that will be filled with the event handles of all playing events. Optional. Specify 0 if not needed. Must be used in conjunction with numplayingevents. '/
    as integer                      numloadsqueued(FMOD_EVENT_NONBLOCKING_THREAD_MAX-1)  /' [out] Current number of sound banks queued for loading due to using FMOD_EVENT_NONBLOCKING flag.  Note there are multple possible loading threads depending on what the programmer specified with FMOD_EventGroup_loadEventData/getEvent/getEventByIndex.  Add all queue values together for total. '/
end type



/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure containing realtime information about an event project.

    [REMARKS]
    On entry, numplayingevents should be set to the number of elements in the playingevents array. If the actual
    number of playing events is greater than numplayingevents then the playingevents array will be filled with
    numplayingevents entries and numplayingevents will be set to the actual number of playing events on exit.
    In short, if numplayingevents on exit > numplayingevents on entry then the playingevents array wasn't large
    enough and some events were unable to be added to the array.

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]
    FMOD_EventProject_getInfo
    FMOD_EventSystem_getInfo
    FMOD_EVENT_WAVEBANKINFO
]
'/
type FMOD_EVENT_PROJECTINFO
    as integer                      index            /' [out] Index of the project. '/
    as zstring * 256                    name        /' [out] Name of the project. '/
    as integer                      numevents        /' [out] Total number of events in all event groups in this event project. '/
    as integer                      numinstances     /' [out] Total number of event instances in all event groups in this event project. '/
    as integer                      maxwavebanks     /' [in/out] Out, number of wavebanks loaded by the EventProject.  In. Maximum size of array of wavebankinfo structures supplied by user.  Optional. '/
    as FMOD_EVENT_WAVEBANKINFO ptr wavebankinfo     /' [in] Pointer to array FMOD_EVENT_WAVEBANKINFO structures (max size defined by maxwavebanks).  FMOD will fill these in with detailed information on each wave bank. Optional. '/
    as integer                      numplayingevents /' [in/out] On entry, maximum number of entries in playingevents array. On exit, actual number of entries in playingevents array, or if playingevents is null, then it is just the number of currently playing events. Optional. '/
    as FMOD_EVENT ptr ptr           playingevents    /' [in/out] Pointer to an array that will be filled with the event handles of all playing events. Optional. Specify 0 if not needed. Must be used in conjunction with numplayingevents. '/
end type

/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure containing extended information about an event.

    [REMARKS]
    This structure is optional!  Specify 0 or NULL in FMOD_Event_getInfo if you don't need it!<br>
    This structure has members that need to be initialized before FMOD_Event_getInfo is called. Always initialize this structure before calling FMOD_Event_getInfo!

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_Event_getInfo
    FMOD_GUID
]
'/
type FMOD_EVENT_INFO
    as integer                      memoryused        /' This member has been deprecated. '/
    as integer                      positionms        /' [out] Time passed in playback of this event instance in milliseconds. '/
    as integer                      lengthms          /' [out] Length in milliseconds of this event. Note: lengthms will be -1 if the length of the event can't be determined i.e. if it has looping sounds. '/
    as integer                      channelsplaying   /' [out] Number of channels currently playing in this event instance. '/
    as integer                      instancesactive   /' [out] Number of event instances currently in use. '/
    as integer                      maxwavebanks      /' [in/out] Out, number of wavebanks refered to by this event.  In. Maximum size of array of wavebankinfo structures supplied by user.  Optional. '/
    as FMOD_EVENT_WAVEBANKINFO ptr wavebankinfo      /' [in] Pointer to array FMOD_EVENT_WAVEBANKINFO structures (max size defined by maxwavebanks).  FMOD will fill these in with detailed information on each wave bank. Optional. '/
    as uinteger             projectid         /' [out] The runtime 'EventProject' wide unique identifier for this event. '/
    as uinteger             systemid          /' [out] The runtime 'EventSystem' wide unique identifier for this event.  This is calculated when single or multiple projects are loaded. '/
    as float                    audibility        /' [out] current audibility of event. '/
    as integer                      numinstances      /' [in/out] On entry, maximum number of entries in instances array. On exit, actual number of entries in instances array, or if instances is null, then it is just the number of instances of this event. Optional. '/
    as FMOD_EVENT  ptr ptr           instances         /' [in/out] Pointer to an array that will be filled with the current reference-counted event handles of all instances of this event. Optional. Specify 0 if not needed. Must be used in conjunction with numinstances. Note: Due to reference counting, the event instance handles returned here may be different between subsequent calls to this function. If you use these event handles, make sure your code is prepared for them to be invalid! '/
    as FMOD_GUID ptr              guid              /' [out] Pointer to a structure that will be filled with the event's GUID. Optional. Specify 0 if not needed. '/
end type


/'
[ENUM]
[
    [DESCRIPTION]   
    Sound definition entry types for FMOD_EVENT_SOUNDDEFINFO.

    [REMARKS]

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_EVENT_SOUNDDEFINFO
    FMOD_EVENT_CALLBACK
    FMOD_EVENT_CALLBACKTYPE
]
'/
enum FMOD_EVENT_SOUNDDEF_ENTRYTYPE
    FMOD_EVENT_SOUNDDEF_ENTRYTYPE_WAVETABLE           /' Waveform. '/
    FMOD_EVENT_SOUNDDEF_ENTRYTYPE_OSCILLATOR          /' Oscillator. '/
    FMOD_EVENT_SOUNDDEF_ENTRYTYPE_NULL                /' "Don't play" entry. '/
    FMOD_EVENT_SOUNDDEF_ENTRYTYPE_PROGRAMMER           /' Programmer sound. '/
end enum


/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure containing information about a sound definition.

    [REMARKS]
    This structure is passed as the param1 argument of all 
    FMOD_EVENT_CALLBACKTYPE_SOUNDDEF_SELECTINDEX callbacks if
    FMOD_EVENT_INIT_DETAILED_SOUNDDEF_INFO was passed to FMOD_EventSystem_init.

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_EVENT_CALLBACK
    FMOD_EVENT_CALLBACKTYPE
    FMOD_EventSystem_init
    FMOD_EVENT_INITFLAGS
    FMOD_EVENT_SOUNDDEF_ENTRYTYPE
]
'/
type FMOD_EVENT_SOUNDDEFINFO
    as zstring ptr                    name              /' The name of the sound definition. '/
    as integer                      numentries        /' The number of entries in the sound definition. '/
    as const zstring ptr ptr             entrynames        /' The names of the entries in the sound definition (an array of size numentries). Note that entrynames[i] will be null if entrytypes[i] is not FMOD_EVENT_SOUNDDEF_ENTRYTYPE_WAVETABLE. '/
    as FMOD_EVENT_SOUNDDEF_ENTRYTYPE ptr entrytypes  /' The types of the entries in the sound definition (an array of size numentries). '/
end type


/'
[STRUCTURE]
[
    [DESCRIPTION]
    Use this structure with FMOD_EventSystem_load when more control is needed over loading.

    [REMARKS]
    This structure is optional!  Specify 0 or NULL in FMOD_EventSystem_load if you don't need it!<br>
    <br>
    Members marked with [in] mean the user sets the value before passing it to the function.<br>
    Members marked with [out] mean FMOD sets the value to be used after the function exits.<br>
    Use sounddefentrylimit to limit the number of sound definition entries - and therefore the amount of wave data - loaded for each sound definition. This feature allows the programmer to implement a "low detail" setting at runtime without needing a seperate "low detail" set of assets.

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_EventSystem_load
]
'/
type FMOD_EVENT_LOADINFO
    as uinteger  size                         /' [in] Size of this structure.  This is used so the structure can be expanded in the future and still work on older versions of FMOD Ex. '/
    as zstring ptr         encryptionkey                /' [in] Optional. Specify 0 to ignore. Key, or 'password' to decrypt a bank.  A sound designer may have encrypted the audio data to protect their sound data from 'rippers'. '/
    as float         sounddefentrylimit           /' [in] Optional. Specify 0 to ignore. A value between 0 -> 1 that is multiplied with the number of sound definition entries in each sound definition in the project being loaded in order to programmatically reduce the number of sound definition entries used at runtime. '/
    as uinteger  loadfrommemory_length        /' [in] Optional. Specify 0 to ignore. Length of memory buffer pointed to by name_or_data parameter passed to FMOD_EventSystem_load. If this field is non-zero then the name_or_data parameter passed to FMOD_EventSystem_load will be interpreted as a pointer to a memory buffer containing the .fev data to load. If this field is zero the name_or_data parameter is interpreted as the filename of the .fev file to load. '/
    as FMOD_BOOL     override_category_vals       /' [in] Optional. If this member is set to true, newly-loaded categories will impart their properties (volume, pitch etc.) to existing categories of the same name. '/
    as uinteger  sizeof_instancepool_simple   /' [in] Optional. Specify 0 to ignore. If this value is non-zero, FMOD will create an instance pool for simple events with "sizeof_instancepool_simple" entries. Note: Event instance pools currently work for simple events only. Complex events will behave as normal and not be pooled. '/
end type


type FMOD_EVENT_CALLBACK as function(byval event as FMOD_EVENT ptr, byval type as FMOD_EVENT_CALLBACKTYPE, byval param1 as any ptr, _
byval param2 as any ptr, byval userdata as any ptr) as FMOD_RESULT


/'
[ENUM]
[
    [DESCRIPTION]   
    These callback types are used with FMOD_EVENTQUEUE_CALLBACK.

    [REMARKS]
    <b>Note!</b> Currently the user must call FMOD_EventSystem_update for these callbacks to trigger!<p>

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_EventQueue_setCallback
    FMOD_EVENTQUEUE_CALLBACK
    FMOD_EventSystem_update
]
'/
enum FMOD_EVENTQUEUE_CALLBACKTYPE
    FMOD_EVENTQUEUE_CALLBACKTYPE_PREPARE       /' Called when an entry is being prepared for playback '/
    FMOD_EVENTQUEUE_CALLBACKTYPE_ABOUTTOPLAY   /' Called when an entry is about to play '/
    FMOD_EVENTQUEUE_CALLBACKTYPE_FINISHED      /' Called when an entry has finished playing '/
    FMOD_EVENTQUEUE_CALLBACKTYPE_EXPIRED        /' Called when an entry has expired before being played. See EventQueueEntry::setExpiryTime '/
end enum


type FMOD_EVENTQUEUE_CALLBACK as function(byval type as FMOD_EVENTQUEUE_CALLBACKTYPE, byval queue as FMOD_EVENTQUEUE ptr, _
byval entry as FMOD_EVENTQUEUEENTRY ptr, byval callbackuserdata as any ptr) as FMOD_RESULT


/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure containing realtime information about the music system.

    [REMARKS]

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    fmod_MusicSystem_getInfo
]
'/
type FMOD_MUSIC_INFO
    as FMOD_BOOL               starving           /' [out] True if any streams in the music system are starving. '/
    as FMOD_BOOL               all_samples_loaded /' [out] True if all non-streaming samples in the music system are loaded, false otherwise. '/
end type


/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure used to hold information about music system entites.

    [REMARKS]

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_MUSIC_ITERATOR
]
'/
type FMOD_MUSIC_ENTITY
	as const zstring ptr name                       /' The name of the music entity as a null terminated string. '/
	as FMOD_MUSIC_ID id                       /' The ID of the music entity. '/
end type


/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure used to enumerate entities in the music system.

    [REMARKS]
    The music system provides methods to initialize and advance iterators. Iterator members should never need to be set manually.

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_MUSIC_ENTITY
    FMOD_MusicSystem_getCues
    FMOD_MusicSystem_getParameters
]
'/
type FMOD_MUSIC_ITERATOR
	as const FMOD_MUSIC_ENTITY ptr value         /' The music entity the iterator points to. A null value indicates an invalid iterator. '/
	as const zstring ptr filter                     /' The string used to filter music entities. '/
end type


/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure containing information about a music sample, for use with
    FMOD_MUSIC_CALLBACKTYPE_SEGMENT_CREATE and FMOD_MUSIC_CALLBACKTYPE_SEGMENT_RELEASE.

    [REMARKS]

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_MUSIC_CALLBACK
    FMOD_MUSIC_CALLBACKTYPE
]
'/
type FMOD_MUSIC_SAMPLE_INFO
    as uinteger  segment_id   /' The ID of the parent segment. '/
    as uinteger  index        /' The index of the sample within the parent segment. '/
    as const zstring   ptr filename     /' The filename of the sample.<br/> <b>Note:</b> If the sample was built by a version of FMOD Designer before 4.29.09, this field will be 0. '/
end type


/'
[STRUCTURE]
[
    [DESCRIPTION]
    Structure containing information about a music segment, for use with
    FMOD_MUSIC_CALLBACKTYPE_CHANNEL_CREATED and FMOD_MUSIC_CALLBACKTYPE_CHANNEL_DESTROYED.

    [REMARKS]

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_MUSIC_CALLBACK
    FMOD_MUSIC_CALLBACKTYPE
]
'/
type FMOD_MUSIC_SEGMENT_INFO
    as uinteger  segment_id   /' The ID of the segment. '/
    as uinteger  theme_id     /' The ID of the parent theme. '/
end type


/'
[ENUM]
[
    [DESCRIPTION]   
    These callback types are used with FMOD_MUSIC_CALLBACK.

    [REMARKS]
    <b>Note!</b>  Currently the user must call FMOD_EventSystem_update for these callbacks to trigger!<br />

    [PLATFORMS]
    Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android

    [SEE_ALSO]      
    FMOD_MusicSystem_setCallback
    FMOD_MUSIC_CALLBACK
    FMOD_EventSystem_update
]
'/
enum FMOD_MUSIC_CALLBACKTYPE
    FMOD_MUSIC_CALLBACKTYPE_SEGMENT_START       /' Called when a segment is started. '/
    FMOD_MUSIC_CALLBACKTYPE_SEGMENT_END         /' Called when a segment ends. '/
    FMOD_MUSIC_CALLBACKTYPE_SAMPLE_CREATE       /' Called when a segment needs a sound created. '/
    FMOD_MUSIC_CALLBACKTYPE_SAMPLE_RELEASE      /' Called when a segment is finished with a sound. '/
    FMOD_MUSIC_CALLBACKTYPE_CHANNEL_CREATED     /' Called when a channel is created to play a segment. '/
    FMOD_MUSIC_CALLBACKTYPE_CHANNEL_DESTROYED   /' Called when a segment channel is destroyed. '/
    FMOD_MUSIC_CALLBACKTYPE_RESET               /' Called when the system is reset '/
    FMOD_MUSIC_CALLBACKTYPE_BEAT                 /' Called each time a beat is passed (based on segment tempo and time signature) '/
end enum


type FMOD_MUSIC_CALLBACK as function(byval type_ as FMOD_MUSIC_CALLBACKTYPE, byval param1 as any ptr, byval param2 as any ptr, byval userdata as any ptr) as FMOD_RESULT


/' ========================================================================================== '/
/' FUNCTION PROTOTYPES                                                                        '/
/' ========================================================================================== '/
#if Defined(__fb_win32__)
Extern "windows"
#else
Extern "c"
#endif

/'
    FMOD EventSystem factory functions.  Use this to create an FMOD EventSystem Instance.  Below you will see FMOD_EventSystem_Init/Release to get started.
'/

declare function FMOD_EventSystem_Create(byval eventsystem as FMOD_EVENTSYSTEM ptr ptr) as FMOD_RESULT

/'
    'EventSystem' API
'/

/'
     Initialization / system functions.
'/

declare function FMOD_EventSystem_Init(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval maxchannels as integer, byval flags as FMOD_INITFLAGS, _
byval extradriverdata as any ptr, byval eventflags as FMOD_EVENT_INITFLAGS) as FMOD_RESULT
declare function FMOD_EventSystem_Release(byval eventsystem as FMOD_EVENTSYSTEM ptr) as FMOD_RESULT
declare function FMOD_EventSystem_Update(byval eventsystem as FMOD_EVENTSYSTEM ptr) as FMOD_RESULT
declare function FMOD_EventSystem_SetMediaPath(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval path as const zstring ptr) as FMOD_RESULT
declare function FMOD_EventSystem_SetPluginPath(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval path as const zstring ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetVersion(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval version as uinteger ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetInfo(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval info as FMOD_EVENT_SYSTEMINFO ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetSystemObject(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval system as FMOD_SYSTEM ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetMusicSystem(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval musicsystem as FMOD_MUSICSYSTEM ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_SetLanguage(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval language as const zstring ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetLanguage(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval language as zstring ptr) as FMOD_RESULT
declare function FMOD_EventSystem_RegisterDSP(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval description as FMOD_DSP_DESCRIPTION ptr, _
byval handle as uinteger ptr) as FMOD_RESULT

/'
     FEV load/unload.   
'/

declare function FMOD_EventSystem_Load(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval name_or_data as const zstring ptr, _
byval loadinfo as FMOD_EVENT_LOADINFO ptr, byval project as FMOD_EVENTPROJECT ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_Unload(byval eventsystem as FMOD_EVENTSYSTEM ptr) as FMOD_RESULT

/'
     Event,EventGroup,EventCategory Retrieval.
'/

declare function FMOD_EventSystem_GetProject(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval name_ as const zstring ptr, _
byval project as FMOD_EVENTPROJECT ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetProjectByIndex(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval index as integer, _
byval project as FMOD_EVENTPROJECT ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetNumProjects    (byval eventsystem as FMOD_EVENTSYSTEM ptr, byval numprojects as integer ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetCategory(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval name_ as const zstring ptr, _
byval category as FMOD_EVENTCATEGORY ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetCategoryByIndex(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval index as integer , _
byval category as FMOD_EVENTCATEGORY ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetMusicCategory(byval eventsystem as FMOD_EVENTSYSTEM ptr, _
byval category as FMOD_EVENTCATEGORY ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetNumCategories(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval numcategories as integer  ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetGroup(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval name_ as const zstring ptr , _
byval cacheevents as FMOD_BOOL, byval group as FMOD_EVENTGROUP ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetEvent(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval name_ as const zstring ptr, _
byval mode as FMOD_EVENT_MODE, byval event as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetEventBySystemID(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval systemid as uinteger, _
byval mode as FMOD_EVENT_MODE, byval event as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetEventByGUID(byval eventsystem as FMOD_EVENTSYSTEM ptr, guid as const FMOD_GUID ptr, _
byval mode as FMOD_EVENT_MODE, byval event as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetEventByGUIDString(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval guid as const zstring ptr, _
byval mode as FMOD_EVENT_MODE, byval event as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetNumEvents(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval numevents as integer ptr) as FMOD_RESULT

/'
     Reverb interfaces.
'/

declare function FMOD_EventSystem_SetReverbProperties(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval props as const FMOD_REVERB_PROPERTIES ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetReverbProperties(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval props as FMOD_REVERB_PROPERTIES ptr) as FMOD_RESULT

declare function FMOD_EventSystem_GetReverbPreset(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval name_ as const zstring ptr, _
byval props as FMOD_REVERB_PROPERTIES ptr, byval index as integer) as FMOD_RESULT
declare function FMOD_EventSystem_GetReverbPresetByIndex(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval index as const integer , _
byval props as FMOD_REVERB_PROPERTIES ptr, byval name_ as zstring ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetNumReverbPresets(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval numpresets as integer ptr) as FMOD_RESULT

declare function FMOD_EventSystem_CreateReverb(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval reverb as FMOD_EVENTREVERB ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_SetReverbAmbientProperties(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval props as FMOD_REVERB_PROPERTIES ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetReverbAmbientProperties(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval props as FMOD_REVERB_PROPERTIES ptr) as FMOD_RESULT

/'
     Event queue interfaces.
'/

declare function FMOD_EventSystem_CreateEventQueue  (byval eventsystem as FMOD_EVENTSYSTEM ptr, byval queue as FMOD_EVENTQUEUE ptr ptr) as FMOD_RESULT
declare function FMOD_EventSystem_CreateEventQueueEntry(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval event as FMOD_EVENT ptr, _
byval entry as FMOD_EVENTQUEUEENTRY ptr ptr) as FMOD_RESULT

/'
     3D Listener interface.
'/

declare function FMOD_EventSystem_Set3DNumListeners(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval numlisteners as integer) as FMOD_RESULT
declare function FMOD_EventSystem_Get3DNumListeners(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval numlisteners as integer ptr) as FMOD_RESULT
declare function FMOD_EventSystem_Set3DListenerAttributes(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval listener as integer, _
byval pos as const FMOD_VECTOR ptr, byval vel as const FMOD_VECTOR ptr, byval forward as const FMOD_VECTOR ptr, _
byval up as const FMOD_VECTOR ptr) as FMOD_RESULT
declare function FMOD_EventSystem_Get3DListenerAttributes(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval listener as integer, _
byval pos as FMOD_VECTOR ptr, byval vel as FMOD_VECTOR ptr, byval forward as FMOD_VECTOR ptr, byval up as FMOD_VECTOR ptr) as FMOD_RESULT

/'
     Get/set user data
'/

declare function FMOD_EventSystem_SetUserData(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_EventSystem_GetUserData(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval userdata as any ptr ptr) as FMOD_RESULT

/'
     Pre-loading FSB files (from disk or from memory, use FMOD_OPENMEMORY_POINT to point to pre-loaded memory) as FMOD_RESULT.
'/

declare function FMOD_EventSystem_PreloadFSB(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval filename as const zstring ptr, _
byval streaminstance as integer, byval sound as FMOD_SOUND ptr, byval unloadprevious as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventSystem_UnloadFSB(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval filename as const zstring ptr , _
byval streaminstance as integer) as FMOD_RESULT

declare function FMOD_EventSystem_GetMemoryInfo(byval eventsystem as FMOD_EVENTSYSTEM ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'EventProject' API
'/

declare function FMOD_EventProject_Release(byval eventproject as FMOD_EVENTPROJECT ptr) as FMOD_RESULT
declare function FMOD_EventProject_GetInfo(byval eventproject as FMOD_EVENTPROJECT ptr, byval info as FMOD_EVENT_PROJECTINFO ptr) as FMOD_RESULT
declare function FMOD_EventProject_GetGroup(byval eventproject as FMOD_EVENTPROJECT ptr, byval name_ as const zstring ptr, _
byval cacheevents as FMOD_BOOL, byval group as FMOD_EVENTGROUP ptr ptr) as FMOD_RESULT
declare function FMOD_EventProject_GetGroupByIndex(byval eventproject as FMOD_EVENTPROJECT ptr, byval index as integer, _
byval cacheevents as FMOD_BOOL, byval group as FMOD_EVENTGROUP ptr ptr) as FMOD_RESULT
declare function FMOD_EventProject_GetNumGroups(byval eventproject as FMOD_EVENTPROJECT ptr, byval numgroups as integer ptr) as FMOD_RESULT
declare function FMOD_EventProject_GetEvent(byval eventproject as FMOD_EVENTPROJECT ptr, byval name_ as const zstring ptr, _
byval mode as FMOD_EVENT_MODE, byval event as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventProject_GetEventByProjectID(byval eventproject as FMOD_EVENTPROJECT ptr, byval projectid as uinteger, _
byval mode as FMOD_EVENT_MODE, byval event as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventProject_GetNumEvents(byval eventproject as FMOD_EVENTPROJECT ptr, byval numevents as integer ptr) as FMOD_RESULT
declare function FMOD_EventProject_LoadSampleData(byval eventproject as FMOD_EVENTPROJECT ptr, byval eventid_array as integer ptr, _
byval sizeof_eventid_array as integer, byval groupname_array as zstring ptr ptr, byval sizeof_groupname_array as integer, _
byval eventmode as FMOD_EVENT_MODE) as FMOD_RESULT
declare function FMOD_EventProject_StopAllEvents(byval eventproject as FMOD_EVENTPROJECT ptr, byval immediate as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventProject_CancelAllLoads(byval eventproject as FMOD_EVENTPROJECT ptr) as FMOD_RESULT
declare function FMOD_EventProject_SetUserData(byval eventproject as FMOD_EVENTPROJECT ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_EventProject_GetUserData(byval eventproject as FMOD_EVENTPROJECT ptr, byval userdata as any ptr ptr) as FMOD_RESULT

declare function FMOD_EventProject_GetMemoryInfo(byval eventproject as FMOD_EVENTPROJECT ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'EventGroup' API
'/

declare function FMOD_EventGroup_GetInfo(byval eventgroup as FMOD_EVENTGROUP ptr, byval index as integer, byval name_ as zstring ptr ptr) as FMOD_RESULT
declare function FMOD_EventGroup_LoadEventData(byval eventgroup as FMOD_EVENTGROUP ptr, byval resource as FMOD_EVENT_RESOURCE, _
byval mode as FMOD_EVENT_MODE) as FMOD_RESULT
declare function FMOD_EventGroup_FreeEventData(byval eventgroup as FMOD_EVENTGROUP ptr, byval event as FMOD_EVENT ptr, _
byval waituntilready as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventGroup_GetGroup(byval eventgroup as FMOD_EVENTGROUP ptr, byval name_ as const zstring ptr, _
byval cacheevents as FMOD_BOOL, byval group as FMOD_EVENTGROUP ptr ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetGroupByIndex(byval eventgroup as FMOD_EVENTGROUP ptr, byval index as integer, _
byval cacheevents as FMOD_BOOL, byval group as FMOD_EVENTGROUP ptr ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetParentGroup(byval eventgroup as FMOD_EVENTGROUP ptr, byval group as FMOD_EVENTGROUP ptr ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetParentProject(byval eventgroup as FMOD_EVENTGROUP ptr, byval project as FMOD_EVENTPROJECT ptr ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetNumGroups(byval eventgroup as FMOD_EVENTGROUP ptr, byval numgroups as integer ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetEvent(byval eventgroup as FMOD_EVENTGROUP ptr, byval name_ as const zstring ptr, _
byval mode as FMOD_EVENT_MODE, byval event as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetEventByIndex(byval eventgroup as FMOD_EVENTGROUP ptr, byval index as integer , byval mode as FMOD_EVENT_MODE, _
byval event as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetNumEvents(byval eventgroup as FMOD_EVENTGROUP ptr, byval numevents as integer ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetProperty(byval eventgroup as FMOD_EVENTGROUP ptr, byval propertyname as const zstring ptr, _
byval value as any ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetPropertyByIndex(byval eventgroup as FMOD_EVENTGROUP ptr, byval propertyindex as integer, _
byval value as any ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetNumProperties(byval eventgroup as FMOD_EVENTGROUP ptr, byval numproperties as integer ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetState(byval eventgroup as FMOD_EVENTGROUP ptr, byval state as FMOD_EVENT_STATE ptr) as FMOD_RESULT
declare function FMOD_EventGroup_SetUserData(byval eventgroup as FMOD_EVENTGROUP ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_EventGroup_GetUserData(byval eventgroup as FMOD_EVENTGROUP ptr, byval userdata as any ptr ptr) as FMOD_RESULT

declare function FMOD_EventGroup_GetMemoryInfo(byval eventgroup as FMOD_EVENTGROUP ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'EventCategory' API
'/

declare function FMOD_EventCategory_GetInfo(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval index as integer ptr, _
byval name_ as zstring ptr ptr) as FMOD_RESULT
declare function FMOD_EventCategory_GetCategory(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval name_ as const zstring ptr , _
byval category as FMOD_EVENTCATEGORY ptr ptr) as FMOD_RESULT
declare function FMOD_EventCategory_GetCategoryByIndex(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval index as integer, _
byval category as FMOD_EVENTCATEGORY ptr ptr) as FMOD_RESULT
declare function FMOD_EventCategory_GetNumCategories(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval numcategories as integer ptr) as FMOD_RESULT
declare function FMOD_EventCategory_GetEventByIndex(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval index as integer, _
byval mode as FMOD_EVENT_MODE, byval event as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventCategory_GetNumEvents(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval numevents as integer ptr) as FMOD_RESULT
declare function FMOD_EventCategory_GetParentCategory(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval category as FMOD_EVENTCATEGORY ptr ptr) as FMOD_RESULT

declare function FMOD_EventCategory_StopAllEvents(byval eventcategory as FMOD_EVENTCATEGORY ptr) as FMOD_RESULT
declare function FMOD_EventCategory_SetVolume(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval volume as float) as FMOD_RESULT
declare function FMOD_EventCategory_GetVolume(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval volume as float ptr) as FMOD_RESULT
declare function FMOD_EventCategory_SetPitch(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval pitch as float, _
byval units as FMOD_EVENT_PITCHUNITS) as FMOD_RESULT
declare function FMOD_EventCategory_GetPitch(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval pitch as float ptr, _
byval units as FMOD_EVENT_PITCHUNITS) as FMOD_RESULT
declare function FMOD_EventCategory_SetPaused(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval paused as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventCategory_GetPaused(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval paused as FMOD_BOOL ptr) as FMOD_RESULT
declare function FMOD_EventCategory_SetMute(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval mute as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventCategory_GetMute(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval mute as FMOD_BOOL ptr) as FMOD_RESULT
declare function FMOD_EventCategory_GetChannelGroup(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval channelgroup as FMOD_CHANNELGROUP ptr ptr) as FMOD_RESULT
declare function FMOD_EventCategory_SetUserData     (byval eventcategory as FMOD_EVENTCATEGORY ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_EventCategory_GetUserData(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval userdata as any ptr ptr) as FMOD_RESULT

declare function FMOD_EventCategory_GetMemoryInfo(byval eventcategory as FMOD_EVENTCATEGORY ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'Event' API
'/

declare function FMOD_Event_Release(byval event as FMOD_EVENT ptr, byval freeeventdata as FMOD_BOOL, byval waituntilready as FMOD_BOOL) as FMOD_RESULT

declare function FMOD_Event_Start(byval event as FMOD_EVENT ptr) as FMOD_RESULT
declare function FMOD_Event_Stop(byval event as FMOD_EVENT ptr, byval immediate as FMOD_BOOL) as FMOD_RESULT

declare function FMOD_Event_GetInfo(byval event as FMOD_EVENT ptr, byval index as integer ptr, byval name_ as zstring ptr, _
byval info as FMOD_EVENT_INFO ptr) as FMOD_RESULT
declare function FMOD_Event_GetState(byval event as FMOD_EVENT ptr, byval state as FMOD_EVENT_STATE ptr) as FMOD_RESULT
declare function FMOD_Event_GetParentGroup(byval event as FMOD_EVENT ptr, byval group as FMOD_EVENTGROUP ptr ptr) as FMOD_RESULT
declare function FMOD_Event_GetChannelGroup(byval event as FMOD_EVENT ptr, byval channelgroup as FMOD_CHANNELGROUP ptr ptr) as FMOD_RESULT
declare function FMOD_Event_SetCallback(byval event as FMOD_EVENT ptr, byval callback as FMOD_EVENT_CALLBACK, byval userdata as any ptr) as FMOD_RESULT

declare function FMOD_Event_GetParameter(byval event as FMOD_EVENT ptr, byval name_ as const zstring ptr, _
byval parameter as FMOD_EVENTPARAMETER ptr ptr) as FMOD_RESULT
declare function FMOD_Event_GetParameterByIndex(byval event as FMOD_EVENT ptr, byval index as integer, _
byval parameter as FMOD_EVENTPARAMETER ptr ptr) as FMOD_RESULT
declare function FMOD_Event_GetNumParameters(byval event as FMOD_EVENT ptr, byval numparameters as integer ptr) as FMOD_RESULT
declare function FMOD_Event_GetProperty(byval event as FMOD_EVENT ptr, byval propertyname as const zstring ptr, byval value as any ptr,_
byval this_instance as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_Event_GetPropertyByIndex(byval event as FMOD_EVENT ptr, byval propertyindex as integer, byval value as any ptr, _
byval this_instance as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_Event_SetProperty(byval event as FMOD_EVENT ptr, byval propertyname as const zstring ptr, byval value as any ptr, _
byval this_instance as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_Event_SetPropertyByIndex(byval event as FMOD_EVENT ptr, byval propertyindex as integer, byval value as any ptr, _
byval this_instance as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_Event_GetNumProperties(byval event as FMOD_EVENT ptr, byval numproperties as integer ptr) as FMOD_RESULT
declare function FMOD_Event_GetPropertyInfo(byval event as FMOD_EVENT ptr, byval propertyindex as integer ptr, _
byval propertyname as zstring ptr ptr, byval type as FMOD_EVENTPROPERTY_TYPE ptr) as FMOD_RESULT
declare function FMOD_Event_GetCategory(byval event as FMOD_EVENT ptr, byval category as FMOD_EVENTCATEGORY ptr ptr) as FMOD_RESULT

declare function FMOD_Event_SetVolume(byval event as FMOD_EVENT ptr, byval volume as float) as FMOD_RESULT
declare function FMOD_Event_GetVolume(byval event as FMOD_EVENT ptr, byval volume as float ptr) as FMOD_RESULT
declare function FMOD_Event_SetPitch(byval event as FMOD_EVENT ptr, byval pitch as float, byval units as FMOD_EVENT_PITCHUNITS) as FMOD_RESULT
declare function FMOD_Event_GetPitch(byval event as FMOD_EVENT ptr, byval pitch as float ptr, byval units as FMOD_EVENT_PITCHUNITS) as FMOD_RESULT
declare function FMOD_Event_SetPaused(byval event as FMOD_EVENT ptr, byval paused as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_Event_GetPaused(byval event as FMOD_EVENT ptr, byval paused as FMOD_BOOL ptr) as FMOD_RESULT
declare function FMOD_Event_SetMute  (byval event as FMOD_EVENT ptr, byval mute as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_Event_GetMute  (byval event as FMOD_EVENT ptr, byval mute as FMOD_BOOL ptr) as FMOD_RESULT
declare function FMOD_Event_Set3DAttributes(byval event as FMOD_EVENT ptr, byval position as const FMOD_VECTOR ptr, _
byval velocity as const FMOD_VECTOR ptr, byval orientation as const FMOD_VECTOR ptr) as FMOD_RESULT
declare function FMOD_Event_Get3DAttributes(byval event as FMOD_EVENT ptr, byval position as FMOD_VECTOR ptr, byval velocity as FMOD_VECTOR ptr, _
byval orientation as FMOD_VECTOR ptr) as FMOD_RESULT
declare function FMOD_Event_Set3DOcclusion(byval event as FMOD_EVENT ptr, byval directocclusion as float, byval reverbocclusion as float) as FMOD_RESULT
declare function FMOD_Event_Get3DOcclusion(byval event as FMOD_EVENT ptr, byval directocclusion as float ptr, _
byval reverbocclusion as float ptr) as FMOD_RESULT
declare function FMOD_Event_SetReverbProperties(byval event as FMOD_EVENT ptr, byval props as const FMOD_REVERB_CHANNELPROPERTIES ptr) as FMOD_RESULT
declare function FMOD_Event_GetReverbProperties(byval event as FMOD_EVENT ptr, byval props as FMOD_REVERB_CHANNELPROPERTIES ptr) as FMOD_RESULT
declare function FMOD_Event_SetUserData(byval event as FMOD_EVENT ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_Event_GetUserData(byval event as FMOD_EVENT ptr, byval userdata as any ptr ptr) as FMOD_RESULT

declare function FMOD_Event_GetMemoryInfo(byval event as FMOD_EVENT ptr, byval memorybits as uinteger, byval event_memorybits as uinteger, _
byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'EventParameter' API
'/

declare function FMOD_EventParameter_GetInfo(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval index as integer ptr, _
byval name_ as zstring ptr ptr) as FMOD_RESULT
declare function FMOD_EventParameter_GetRange(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval rangemin as float ptr, _
byval rangemax as float ptr) as FMOD_RESULT
declare function FMOD_EventParameter_SetValue(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval value as float) as FMOD_RESULT
declare function FMOD_EventParameter_GetValue(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval value as float ptr) as FMOD_RESULT
declare function FMOD_EventParameter_SetVelocity(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval value as float) as FMOD_RESULT
declare function FMOD_EventParameter_GetVelocity    (byval eventparameter as FMOD_EVENTPARAMETER ptr, byval value as float ptr) as FMOD_RESULT
declare function FMOD_EventParameter_SetSeekSpeed(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval value as float) as FMOD_RESULT
declare function FMOD_EventParameter_GetSeekSpeed   (byval eventparameter as FMOD_EVENTPARAMETER ptr, byval value as float ptr) as FMOD_RESULT
declare function FMOD_EventParameter_SetUserData(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_EventParameter_GetUserData(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_EventParameter_KeyOff(byval eventparameter as FMOD_EVENTPARAMETER ptr) as FMOD_RESULT
declare function FMOD_EventParameter_DisableAutomation(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval disable as FMOD_BOOL) as FMOD_RESULT

declare function FMOD_EventParameter_GetMemoryInfo(byval eventparameter as FMOD_EVENTPARAMETER ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'EventReverb' API
'/

declare function FMOD_EventReverb_Release(byval eventreverb as FMOD_EVENTREVERB ptr) as FMOD_RESULT
declare function FMOD_EventReverb_Set3DAttributes(byval eventreverb as FMOD_EVENTREVERB ptr, byval position as const FMOD_VECTOR ptr, _
byval mindistance as float, byval maxdistance as float) as FMOD_RESULT
declare function FMOD_EventReverb_Get3DAttributes(byval eventreverb as FMOD_EVENTREVERB ptr, byval position as FMOD_VECTOR ptr, _
byval mindistance as float ptr, byval maxdistance as float ptr) as FMOD_RESULT
declare function FMOD_EventReverb_SetProperties(byval eventreverb as FMOD_EVENTREVERB ptr, byval props as const FMOD_REVERB_PROPERTIES ptr) as FMOD_RESULT
declare function FMOD_EventReverb_GetProperties(byval eventreverb as FMOD_EVENTREVERB ptr, byval props as FMOD_REVERB_PROPERTIES ptr) as FMOD_RESULT
declare function FMOD_EventReverb_SetActive(byval eventreverb as FMOD_EVENTREVERB ptr, byval active as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventReverb_GetActive(byval eventreverb as FMOD_EVENTREVERB ptr, byval active as FMOD_BOOL ptr) as FMOD_RESULT
declare function FMOD_EventReverb_SetUserData(byval eventreverb as FMOD_EVENTREVERB ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_EventReverb_GetUserData(byval eventreverb as FMOD_EVENTREVERB ptr, byval userdata as any ptr ptr) as FMOD_RESULT

declare function FMOD_EventReverb_GetMemoryInfo(byval eventreverb as FMOD_EVENTREVERB ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'EventQueue' API
'/

declare function FMOD_EventQueue_Release(byval eventqueue as FMOD_EVENTQUEUE ptr) as FMOD_RESULT
declare function FMOD_EventQueue_Add(byval eventqueue as FMOD_EVENTQUEUE ptr, byval entry as FMOD_EVENTQUEUEENTRY ptr, _
byval allow_duplicates as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventQueue_Remove(byval eventqueue as FMOD_EVENTQUEUE ptr, byval entry as FMOD_EVENTQUEUEENTRY ptr) as FMOD_RESULT
declare function FMOD_EventQueue_RemoveHead(byval eventqueue as FMOD_EVENTQUEUE ptr) as FMOD_RESULT
declare function FMOD_EventQueue_Clear(byval eventqueue as FMOD_EVENTQUEUE ptr, byval stopallevents as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventQueue_FindFirstEntry(byval eventqueue as FMOD_EVENTQUEUE ptr, byval entry as FMOD_EVENTQUEUEENTRY ptr ptr) as FMOD_RESULT
declare function FMOD_EventQueue_FindNextEntry(byval eventqueue as FMOD_EVENTQUEUE ptr, byval entry as FMOD_EVENTQUEUEENTRY ptr ptr) as FMOD_RESULT
declare function FMOD_EventQueue_SetPaused(byval eventqueue as FMOD_EVENTQUEUE ptr, byval paused as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventQueue_GetPaused(byval eventqueue as FMOD_EVENTQUEUE ptr, byval paused as FMOD_BOOL ptr) as FMOD_RESULT
declare function FMOD_EventQueue_IncludeDuckingCategory(byval eventqueue as FMOD_EVENTQUEUE ptr, byval category as FMOD_EVENTCATEGORY ptr, _
byval ducked_volume as float, byval unducked_volume as float, byval duck_time as uinteger, byval unduck_time as uinteger) as FMOD_RESULT
declare function FMOD_EventQueue_ExcludeDuckingCategory(byval eventqueue as FMOD_EVENTQUEUE ptr, byval category as FMOD_EVENTCATEGORY ptr) as FMOD_RESULT
declare function FMOD_EventQueue_SetCallback(byval eventqueue as FMOD_EVENTQUEUE ptr, byval callback as FMOD_EVENTQUEUE_CALLBACK, _
byval callbackuserdata as any ptr) as FMOD_RESULT
declare function FMOD_EventQueue_SetUserData(byval eventqueue as FMOD_EVENTQUEUE ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_EventQueue_GetUserData(byval eventqueue as FMOD_EVENTQUEUE ptr, byval userdata as any ptr ptr) as FMOD_RESULT
declare function FMOD_EventQueue_Dump(byval eventqueue as FMOD_EVENTQUEUE ptr) as FMOD_RESULT

declare function FMOD_EventQueue_GetMemoryInfo(byval eventqueue as FMOD_EVENTQUEUE ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'EventQueueEntry' API
'/

declare function FMOD_EventQueueEntry_Release(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr) as FMOD_RESULT
declare function FMOD_EventQueueEntry_GetInfoOnlyEvent(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval infoonlyevent as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventQueueEntry_GetRealEvent(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval realevent as FMOD_EVENT ptr ptr) as FMOD_RESULT
declare function FMOD_EventQueueEntry_SetPriority(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval priority as ubyte) as FMOD_RESULT
declare function FMOD_EventQueueEntry_GetPriority(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval priority as ubyte ptr) as FMOD_RESULT
declare function FMOD_EventQueueEntry_SetExpiryTime(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval expirytime as uinteger) as FMOD_RESULT
declare function FMOD_EventQueueEntry_GetExpiryTime(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval expirytime as uinteger ptr) as FMOD_RESULT
declare function FMOD_EventQueueEntry_SetDelayTime(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval delay as uinteger) as FMOD_RESULT
declare function FMOD_EventQueueEntry_GetDelayTime(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval delay as uinteger ptr) as FMOD_RESULT
declare function FMOD_EventQueueEntry_SetInterrupt(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval interrupt as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_EventQueueEntry_GetInterrupt(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval interrupt as FMOD_BOOL ptr) as FMOD_RESULT
declare function FMOD_EventQueueEntry_SetCrossfadeTime(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval crossfade as integer) as FMOD_RESULT
declare function FMOD_EventQueueEntry_GetCrossfadeTime(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval crossfade as integer ptr) as FMOD_RESULT
declare function FMOD_EventQueueEntry_SetUserData(byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval userdata as any ptr) as FMOD_RESULT
declare function FMOD_EventQueueEntry_GetUserData   (byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval userdata as any ptr ptr) as FMOD_RESULT

declare function FMOD_EventQueueEntry_GetMemoryInfo (byval eventqueueentry as FMOD_EVENTQUEUEENTRY ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'MusicSystem' API
'/

declare function FMOD_MusicSystem_Reset(byval musicsystem as FMOD_MUSICSYSTEM ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_SetVolume(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval volume as float) as FMOD_RESULT
declare function FMOD_MusicSystem_GetVolume(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval volume as float ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_SetReverbProperties(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval props as const FMOD_REVERB_CHANNELPROPERTIES ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_GetReverbProperties(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval props as FMOD_REVERB_CHANNELPROPERTIES ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_SetPaused(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval paused as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_MusicSystem_GetPaused(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval paused as FMOD_BOOL ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_SetMute(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval mute as FMOD_BOOL) as FMOD_RESULT
declare function FMOD_MusicSystem_GetMute(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval mute  as FMOD_BOOL ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_GetInfo(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval info as FMOD_MUSIC_INFO ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_PromptCue(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval id as FMOD_MUSIC_CUE_ID) as FMOD_RESULT
declare function FMOD_MusicSystem_PrepareCue(byval musicsystem as FMOD_MUSICSYSTEM ptr, id as FMOD_MUSIC_CUE_ID, _
byval prompt as FMOD_MUSICPROMPT ptr ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_GetParameterValue(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval id as FMOD_MUSIC_PARAM_ID, _
byval parameter as float ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_SetParameterValue(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval id as FMOD_MUSIC_PARAM_ID, _
byval parameter as float) as FMOD_RESULT

declare function FMOD_MusicSystem_GetCues(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval it as FMOD_MUSIC_ITERATOR ptr, _
byval filter as const zstring ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_GetNextCue(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval it as FMOD_MUSIC_ITERATOR ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_GetParameters(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval it as FMOD_MUSIC_ITERATOR ptr, _
byval filter as const zstring ptr) as FMOD_RESULT
declare function FMOD_MusicSystem_GetNextParameter(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval it as FMOD_MUSIC_ITERATOR ptr) as FMOD_RESULT

declare function FMOD_MusicSystem_LoadSoundData(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval resource as FMOD_EVENT_RESOURCE, _
byval mode as FMOD_EVENT_MODE) as FMOD_RESULT
declare function FMOD_MusicSystem_FreeSoundData(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval waituntilready as FMOD_BOOL) as FMOD_RESULT

declare function FMOD_MusicSystem_SetCallback(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval callback as FMOD_MUSIC_CALLBACK, _
byval userdata as any ptr) as FMOD_RESULT

declare function FMOD_MusicSystem_GetMemoryInfo(byval musicsystem as FMOD_MUSICSYSTEM ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT

/'
    'MusicPrompt' API
'/

declare function FMOD_MusicPrompt_Release(byval musicprompt as FMOD_MUSICPROMPT ptr) as FMOD_RESULT
declare function FMOD_MusicPrompt_Begin(byval musicprompt as FMOD_MUSICPROMPT ptr) as FMOD_RESULT
declare function FMOD_MusicPrompt_End(byval musicprompt as FMOD_MUSICPROMPT ptr) as FMOD_RESULT
declare function FMOD_MusicPrompt_IsActive(byval musicprompt as FMOD_MUSICPROMPT ptr, byval active as FMOD_BOOL ptr) as FMOD_RESULT

declare function FMOD_MusicPrompt_GetMemoryInfo     (byval musicprompt as FMOD_MUSICPROMPT ptr, byval memorybits as uinteger, _
byval event_memorybits as uinteger, byval memoryused as uinteger ptr, byval memoryused_details as FMOD_MEMORY_USAGE_DETAILS ptr) as FMOD_RESULT
end extern
#endif
