2021-10-21 19:30:23 +00:00
/* FAudioGMS - Game Maker FAudio bindings in C
*
* Copyright ( c ) 2021 Evan Hemsley
*
* This software is provided ' as - is ' , without any express or implied warranty .
* In no event will the authors be held liable for any damages arising from
* the use of this software .
*
* Permission is granted to anyone to use this software for any purpose ,
* including commercial applications , and to alter it and redistribute it
* freely , subject to the following restrictions :
*
* 1. The origin of this software must not be misrepresented ; you must not
* claim that you wrote the original software . If you use this software in a
* product , an acknowledgment in the product documentation would be
* appreciated but is not required .
*
* 2. Altered source versions must be plainly marked as such , and must not be
* misrepresented as being the original software .
*
* 3. This notice may not be removed or altered from any source distribution .
*
* Evan " cosmonaut " Hemsley < evan @ moonside . games >
*
*/
# ifndef FAUDIOGMS_H
# define FAUDIOGMS_H
# ifdef _WIN32
# define FAUDIOGMSAPI __declspec(dllexport)
# define FAUDIOGMSCALL __cdecl
# else
# define FAUDIOGMSAPI
# define FAUDIOGMSCALL
# endif
# ifdef __cplusplus
extern " C " {
# endif /* __cplusplus */
2021-10-26 23:47:53 +00:00
FAUDIOGMSAPI void FAudioGMS_Init ( double spatialDistanceScale , double timestep ) ;
2021-10-21 19:30:23 +00:00
2021-10-23 02:34:16 +00:00
FAUDIOGMSAPI double FAudioGMS_StaticSound_LoadWAV ( char * filePath ) ; /* returns a static sound ID */
2021-10-27 22:35:42 +00:00
FAUDIOGMSAPI void FAudioGMS_StaticSound_PlayOneOff ( double staticSoundID , double pan , double pitch , double volume ) ; /* automatically frees itself when done! */
FAUDIOGMSAPI void FAudioGMS_StaticSound_PlayOneOffSpatial ( double staticSoundID , double x , double y , double z , double pitch , double volume ) ; /* automatically frees itself when done! */
FAUDIOGMSAPI double FAudioGMS_StaticSound_Play ( double staticSoundID , double pan , double pitch , double volume , double loop ) ; /* returns a sound instance ID. must be freed! */
FAUDIOGMSAPI double FAudioGMS_StaticSound_PlaySpatial ( double staticSoundID , double x , double y , double z , double pitch , double volume , double loop ) ; /* returns a sound instance ID. must be freed! */
2021-10-26 23:47:53 +00:00
FAUDIOGMSAPI void FAudioGMS_StaticSound_Destroy ( double staticSoundID ) ;
2021-10-22 00:09:24 +00:00
2021-10-25 07:27:38 +00:00
FAUDIOGMSAPI double FAudioGMS_StreamingSound_LoadOGG ( char * filepath ) ; /* returns a sound instance */
2021-10-26 23:47:53 +00:00
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Play ( double soundInstanceID , double loop ) ;
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Pause ( double soundInstanceID ) ;
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Stop ( double soundInstanceID ) ;
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPan ( double soundInstanceID , double pan ) ;
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPitch ( double soundInstanceID , double pitch ) ;
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolume ( double soundInstanceID , double volume ) ;
2021-10-24 23:12:42 +00:00
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DPosition ( double soundInstanceID , double x , double y , double z ) ;
2021-10-28 21:34:33 +00:00
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetTrackPositionInSeconds ( double soundInstanceID , double trackPositionInSeconds ) ;
2021-10-26 23:47:53 +00:00
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolumeOverTime ( double soundInstanceID , double volume , double milliseconds ) ;
2021-10-28 22:05:28 +00:00
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetLowPassFilter ( double soundInstanceID , double lowPassFilter , double Q ) ;
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetHighPassFilter ( double soundInstanceID , double highPassFilter , double Q ) ;
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetBandPassFilter ( double soundInstanceID , double bandPassFilter , double Q ) ;
2021-10-26 23:47:53 +00:00
FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetPitch ( double soundInstanceID ) ;
FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetVolume ( double soundInstanceID ) ;
FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetTrackLengthInSeconds ( double soundInstanceID ) ;
2021-10-28 21:34:33 +00:00
FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetTrackPositionInSeconds ( double soundInstanceID ) ;
2021-10-26 23:47:53 +00:00
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Destroy ( double soundInstanceID ) ;
FAUDIOGMSAPI void FAudioGMS_SoundInstance_DestroyWhenFinished ( double soundInstanceID ) ;
2021-10-24 23:12:42 +00:00
2021-10-27 22:35:42 +00:00
FAUDIOGMSAPI double FAudioGMS_EffectChain_Create ( ) ;
FAUDIOGMSAPI void FAudioGMS_EffectChain_AddDefaultReverb ( double effectChainID ) ;
FAUDIOGMSAPI void FAudioGMS_EffectChain_AddReverb (
double effectChainID ,
double wetDryMix ,
double reflectionsDelay ,
double reverbDelay ,
double earlyDiffusion ,
double lateDiffusion ,
double lowEQGain ,
double lowEQCutoff ,
double highEQGain ,
double highEQCutoff ,
double reflectionsGain ,
double reverbGain ,
double decayTime ,
double density ,
double roomSize
) ;
FAUDIOGMSAPI void FAudioGMS_EffectChain_Destroy ( double effectChainID ) ;
2021-10-28 21:58:48 +00:00
/*
* NOTE : Any changes to the effect chain will NOT apply after this is set !
* You MUST call SetEffectChain again if you make changes to the effect chain parameters !
*/
2021-10-27 22:35:42 +00:00
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectChain ( double soundInstanceID , double effectChainID , double effectGain ) ;
2021-10-28 21:58:48 +00:00
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectGain ( double soundInstanceID , double effectGain ) ;
2021-10-27 22:35:42 +00:00
2021-10-24 23:12:42 +00:00
FAUDIOGMSAPI void FAudioGMS_SetListenerPosition ( double x , double y , double z ) ;
2021-10-26 23:47:53 +00:00
FAUDIOGMSAPI void FAudioGMS_StopAll ( ) ;
2021-10-24 23:12:42 +00:00
FAUDIOGMSAPI void FAudioGMS_Update ( ) ;
2021-10-21 19:30:23 +00:00
FAUDIOGMSAPI void FAudioGMS_Destroy ( ) ;
# ifdef __cplusplus
}
# endif /* __cplusplus */
# endif /* FAUDIOGMS_H */