/* 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 * */ #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 */ FAUDIOGMSAPI void FAudioGMS_Init(double spatialDistanceScale, double timestep); FAUDIOGMSAPI double FAudioGMS_StaticSound_LoadWAV( char *filePath); /* returns a static sound ID */ FAUDIOGMSAPI double FAudioGMS_StaticSound_CreateSoundInstance( double staticSoundID); /* returns a sound instance ID */ FAUDIOGMSAPI void FAudioGMS_StaticSound_Destroy(double staticSoundID); /* returns a sound instance ID */ FAUDIOGMSAPI double FAudioGMS_StreamingSound_LoadOGG( char *filepath, double bufferSizeInBytes); /* if 0 is passed we will use a sensible default*/ FAUDIOGMSAPI void FAudioGMS_SoundInstance_Play(double soundInstanceID); FAUDIOGMSAPI void FAudioGMS_SoundInstance_Pause(double soundInstanceID); FAUDIOGMSAPI void FAudioGMS_SoundInstance_Stop(double soundInstanceID); FAUDIOGMSAPI void FAudioGMS_SoundInstance_QueueSyncPlay(double soundInstanceID); FAUDIOGMSAPI void FAudioGMS_SoundInstance_SyncPlay(); FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPlayRegion( double soundInstanceID, double startInMilliseconds, double endInMilliseconds); FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetLoop(double soundInstanceID, double loop); 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); FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DPosition( double soundInstanceID, double x, double y, double z); FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DVelocity( double soundInstanceID, double xVelocity, double yVelocity, double zVelocity); FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DOrientation( double soundInstanceID, double xFront, double yFront, double zFront, double xTop, double yTop, double zTop); FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetTrackPositionInSeconds( double soundInstanceID, double trackPositionInSeconds); FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolumeOverTime( double soundInstanceID, double volume, double milliseconds); 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); FAUDIOGMSAPI void FAudioGMS_SoundInstance_QueueSoundInstance( double soundInstanceID, double queueSoundInstanceID); FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetPitch(double soundInstanceID); FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetVolume(double soundInstanceID); FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetTrackLengthInSeconds(double soundInstanceID); FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetTrackPositionInSeconds(double soundInstanceID); FAUDIOGMSAPI void FAudioGMS_SoundInstance_Destroy(double soundInstanceID); FAUDIOGMSAPI void FAudioGMS_SoundInstance_DestroyWhenFinished(double soundInstanceID); 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); /* * 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! */ FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectChain( double soundInstanceID, double effectChainID, double effectGain); FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectGain( double soundInstanceID, double effectGain); FAUDIOGMSAPI void FAudioGMS_SetMasteringEffectChain(double effectChainID, double effectGain); FAUDIOGMSAPI void FAudioGMS_SetMasteringEffectGain(double effectGain); FAUDIOGMSAPI void FAudioGMS_SetListenerPosition(double x, double y, double z); FAUDIOGMSAPI void FAudioGMS_SetListenerVelocity( double xVelocity, double yVelocity, double zVelocity); FAUDIOGMSAPI void FAudioGMS_SetListenerOrientation( double xFront, double yFront, double zFront, double xTop, double yTop, double zTop); FAUDIOGMSAPI void FAudioGMS_PauseAll(); /* useful for mobile platforms, etc */ FAUDIOGMSAPI void FAudioGMS_ResumeAll(); /* same as above */ FAUDIOGMSAPI void FAudioGMS_StopAll(); FAUDIOGMSAPI void FAudioGMS_Update(); FAUDIOGMSAPI void FAudioGMS_Destroy(); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* FAUDIOGMS_H */