@@ -45,11 +45,14 @@ enum SOLOUD_ENUMS
4545 SOLOUD_WINMM = 4 ,
4646 SOLOUD_XAUDIO2 = 5 ,
4747 SOLOUD_WASAPI = 6 ,
48- SOLOUD_OSS = 7 ,
49- SOLOUD_OPENAL = 8 ,
50- SOLOUD_BACKEND_MAX = 9 ,
48+ SOLOUD_ALSA = 7 ,
49+ SOLOUD_OSS = 8 ,
50+ SOLOUD_OPENAL = 9 ,
51+ SOLOUD_NULLDRIVER = 10 ,
52+ SOLOUD_BACKEND_MAX = 11 ,
5153 SOLOUD_CLIP_ROUNDOFF = 1 ,
5254 SOLOUD_ENABLE_VISUALIZATION = 2 ,
55+ SOLOUD_LEFT_HANDED_3D = 4 ,
5356 BIQUADRESONANTFILTER_NONE = 0 ,
5457 BIQUADRESONANTFILTER_LOWPASS = 1 ,
5558 BIQUADRESONANTFILTER_HIGHPASS = 2 ,
@@ -80,6 +83,7 @@ enum SOLOUD_ENUMS
8083// Object handle typedefs
8184typedef void * Soloud ;
8285typedef void * AudioCollider ;
86+ typedef void * AudioAttenuator ;
8387typedef void * AudioSource ;
8488typedef void * BiquadResonantFilter ;
8589typedef void * LofiFilter ;
@@ -110,10 +114,15 @@ int Soloud_initEx(Soloud * aSoloud, unsigned int aFlags /* = Soloud::CLIP_ROUNDO
110114void Soloud_deinit (Soloud * aSoloud );
111115unsigned int Soloud_getVersion (Soloud * aSoloud );
112116const char * Soloud_getErrorString (Soloud * aSoloud , int aErrorCode );
117+ unsigned int Soloud_getBackendId (Soloud * aSoloud );
118+ const char * Soloud_getBackendString (Soloud * aSoloud );
119+ unsigned int Soloud_getBackendChannels (Soloud * aSoloud );
120+ unsigned int Soloud_getBackendSamplerate (Soloud * aSoloud );
121+ unsigned int Soloud_getBackendBufferSize (Soloud * aSoloud );
113122unsigned int Soloud_play (Soloud * aSoloud , AudioSource * aSound );
114- unsigned int Soloud_playEx (Soloud * aSoloud , AudioSource * aSound , float aVolume /* = 1.0f */ , float aPan /* = 0.0f */ , int aPaused /* = 0 */ , unsigned int aBus /* = 0 */ );
123+ unsigned int Soloud_playEx (Soloud * aSoloud , AudioSource * aSound , float aVolume /* = - 1.0f */ , float aPan /* = 0.0f */ , int aPaused /* = 0 */ , unsigned int aBus /* = 0 */ );
115124unsigned int Soloud_playClocked (Soloud * aSoloud , double aSoundTime , AudioSource * aSound );
116- unsigned int Soloud_playClockedEx (Soloud * aSoloud , double aSoundTime , AudioSource * aSound , float aVolume /* = 1.0f */ , float aPan /* = 0.0f */ , unsigned int aBus /* = 0 */ );
125+ unsigned int Soloud_playClockedEx (Soloud * aSoloud , double aSoundTime , AudioSource * aSound , float aVolume /* = - 1.0f */ , float aPan /* = 0.0f */ , unsigned int aBus /* = 0 */ );
117126unsigned int Soloud_play3d (Soloud * aSoloud , AudioSource * aSound , float aPosX , float aPosY , float aPosZ );
118127unsigned int Soloud_play3dEx (Soloud * aSoloud , AudioSource * aSound , float aPosX , float aPosY , float aPosZ , float aVelX /* = 0.0f */ , float aVelY /* = 0.0f */ , float aVelZ /* = 0.0f */ , float aVolume /* = 1.0f */ , int aPaused /* = 0 */ , unsigned int aBus /* = 0 */ );
119128unsigned int Soloud_play3dClocked (Soloud * aSoloud , double aSoundTime , AudioSource * aSound , float aPosX , float aPosY , float aPosZ );
@@ -133,10 +142,15 @@ float Soloud_getPan(Soloud * aSoloud, unsigned int aVoiceHandle);
133142float Soloud_getSamplerate (Soloud * aSoloud , unsigned int aVoiceHandle );
134143int Soloud_getProtectVoice (Soloud * aSoloud , unsigned int aVoiceHandle );
135144unsigned int Soloud_getActiveVoiceCount (Soloud * aSoloud );
145+ unsigned int Soloud_getVoiceCount (Soloud * aSoloud );
136146int Soloud_isValidVoiceHandle (Soloud * aSoloud , unsigned int aVoiceHandle );
137147float Soloud_getRelativePlaySpeed (Soloud * aSoloud , unsigned int aVoiceHandle );
138148float Soloud_getPostClipScaler (Soloud * aSoloud );
139149float Soloud_getGlobalVolume (Soloud * aSoloud );
150+ unsigned int Soloud_getMaxActiveVoiceCount (Soloud * aSoloud );
151+ int Soloud_getLooping (Soloud * aSoloud , unsigned int aVoiceHandle );
152+ void Soloud_setLooping (Soloud * aSoloud , unsigned int aVoiceHandle , int aLooping );
153+ int Soloud_setMaxActiveVoiceCount (Soloud * aSoloud , unsigned int aVoiceCount );
140154void Soloud_setGlobalVolume (Soloud * aSoloud , float aVolume );
141155void Soloud_setPostClipScaler (Soloud * aSoloud , float aScaler );
142156void Soloud_setPause (Soloud * aSoloud , unsigned int aVoiceHandle , int aPause );
@@ -185,6 +199,13 @@ void Soloud_set3dSourceVelocity(Soloud * aSoloud, unsigned int aVoiceHandle, flo
185199void Soloud_set3dSourceMinMaxDistance (Soloud * aSoloud , unsigned int aVoiceHandle , float aMinDistance , float aMaxDistance );
186200void Soloud_set3dSourceAttenuation (Soloud * aSoloud , unsigned int aVoiceHandle , unsigned int aAttenuationModel , float aAttenuationRolloffFactor );
187201void Soloud_set3dSourceDopplerFactor (Soloud * aSoloud , unsigned int aVoiceHandle , float aDopplerFactor );
202+ void Soloud_mix (Soloud * aSoloud , float * aBuffer , unsigned int aSamples );
203+
204+ /*
205+ * AudioAttenuator
206+ */
207+ void AudioAttenuator_destroy (AudioAttenuator * aAudioAttenuator );
208+ float AudioAttenuator_attenuate (AudioAttenuator * aAudioAttenuator , float aDistance , float aMinDistance , float aMaxDistance , float aRolloffFactor );
188209
189210/*
190211 * BiquadResonantFilter
@@ -217,6 +238,7 @@ unsigned int Bus_play3dClockedEx(Bus * aBus, double aSoundTime, AudioSource * aS
217238void Bus_setVisualizationEnable (Bus * aBus , int aEnable );
218239float * Bus_calcFFT (Bus * aBus );
219240float * Bus_getWave (Bus * aBus );
241+ void Bus_setVolume (Bus * aBus , float aVolume );
220242void Bus_setLooping (Bus * aBus , int aLoop );
221243void Bus_set3dMinMaxDistance (Bus * aBus , float aMinDistance , float aMaxDistance );
222244void Bus_set3dAttenuation (Bus * aBus , unsigned int aAttenuationModel , float aAttenuationRolloffFactor );
@@ -226,6 +248,7 @@ void Bus_set3dListenerRelative(Bus * aBus, int aListenerRelative);
226248void Bus_set3dDistanceDelay (Bus * aBus , int aDistanceDelay );
227249void Bus_set3dCollider (Bus * aBus , AudioCollider * aCollider );
228250void Bus_set3dColliderEx (Bus * aBus , AudioCollider * aCollider , int aUserData /* = 0 */ );
251+ void Bus_setAttenuator (Bus * aBus , AudioAttenuator * aAttenuator );
229252void Bus_stop (Bus * aBus );
230253
231254/*
@@ -248,6 +271,7 @@ FFTFilter * FFTFilter_create();
248271void Speech_destroy (Speech * aSpeech );
249272Speech * Speech_create ();
250273int Speech_setText (Speech * aSpeech , const char * aText );
274+ void Speech_setVolume (Speech * aSpeech , float aVolume );
251275void Speech_setLooping (Speech * aSpeech , int aLoop );
252276void Speech_set3dMinMaxDistance (Speech * aSpeech , float aMinDistance , float aMaxDistance );
253277void Speech_set3dAttenuation (Speech * aSpeech , unsigned int aAttenuationModel , float aAttenuationRolloffFactor );
@@ -257,6 +281,7 @@ void Speech_set3dListenerRelative(Speech * aSpeech, int aListenerRelative);
257281void Speech_set3dDistanceDelay (Speech * aSpeech , int aDistanceDelay );
258282void Speech_set3dCollider (Speech * aSpeech , AudioCollider * aCollider );
259283void Speech_set3dColliderEx (Speech * aSpeech , AudioCollider * aCollider , int aUserData /* = 0 */ );
284+ void Speech_setAttenuator (Speech * aSpeech , AudioAttenuator * aAttenuator );
260285void Speech_setFilter (Speech * aSpeech , unsigned int aFilterId , Filter * aFilter );
261286void Speech_stop (Speech * aSpeech );
262287
@@ -270,6 +295,7 @@ int Wav_loadMem(Wav * aWav, unsigned char * aMem, unsigned int aLength);
270295int Wav_loadMemEx (Wav * aWav , unsigned char * aMem , unsigned int aLength , int aCopy /* = false */ , int aTakeOwnership /* = true */ );
271296int Wav_loadFile (Wav * aWav , File * aFile );
272297double Wav_getLength (Wav * aWav );
298+ void Wav_setVolume (Wav * aWav , float aVolume );
273299void Wav_setLooping (Wav * aWav , int aLoop );
274300void Wav_set3dMinMaxDistance (Wav * aWav , float aMinDistance , float aMaxDistance );
275301void Wav_set3dAttenuation (Wav * aWav , unsigned int aAttenuationModel , float aAttenuationRolloffFactor );
@@ -279,6 +305,7 @@ void Wav_set3dListenerRelative(Wav * aWav, int aListenerRelative);
279305void Wav_set3dDistanceDelay (Wav * aWav , int aDistanceDelay );
280306void Wav_set3dCollider (Wav * aWav , AudioCollider * aCollider );
281307void Wav_set3dColliderEx (Wav * aWav , AudioCollider * aCollider , int aUserData /* = 0 */ );
308+ void Wav_setAttenuator (Wav * aWav , AudioAttenuator * aAttenuator );
282309void Wav_setFilter (Wav * aWav , unsigned int aFilterId , Filter * aFilter );
283310void Wav_stop (Wav * aWav );
284311
@@ -294,6 +321,7 @@ int WavStream_loadToMem(WavStream * aWavStream, const char * aFilename);
294321int WavStream_loadFile (WavStream * aWavStream , File * aFile );
295322int WavStream_loadFileToMem (WavStream * aWavStream , File * aFile );
296323double WavStream_getLength (WavStream * aWavStream );
324+ void WavStream_setVolume (WavStream * aWavStream , float aVolume );
297325void WavStream_setLooping (WavStream * aWavStream , int aLoop );
298326void WavStream_set3dMinMaxDistance (WavStream * aWavStream , float aMinDistance , float aMaxDistance );
299327void WavStream_set3dAttenuation (WavStream * aWavStream , unsigned int aAttenuationModel , float aAttenuationRolloffFactor );
@@ -303,6 +331,7 @@ void WavStream_set3dListenerRelative(WavStream * aWavStream, int aListenerRelati
303331void WavStream_set3dDistanceDelay (WavStream * aWavStream , int aDistanceDelay );
304332void WavStream_set3dCollider (WavStream * aWavStream , AudioCollider * aCollider );
305333void WavStream_set3dColliderEx (WavStream * aWavStream , AudioCollider * aCollider , int aUserData /* = 0 */ );
334+ void WavStream_setAttenuator (WavStream * aWavStream , AudioAttenuator * aAttenuator );
306335void WavStream_setFilter (WavStream * aWavStream , unsigned int aFilterId , Filter * aFilter );
307336void WavStream_stop (WavStream * aWavStream );
308337
@@ -325,6 +354,7 @@ int Sfxr_loadParamsMem(Sfxr * aSfxr, unsigned char * aMem, unsigned int aLength)
325354int Sfxr_loadParamsMemEx (Sfxr * aSfxr , unsigned char * aMem , unsigned int aLength , int aCopy /* = false */ , int aTakeOwnership /* = true */ );
326355int Sfxr_loadParamsFile (Sfxr * aSfxr , File * aFile );
327356int Sfxr_loadPreset (Sfxr * aSfxr , int aPresetNo , int aRandSeed );
357+ void Sfxr_setVolume (Sfxr * aSfxr , float aVolume );
328358void Sfxr_setLooping (Sfxr * aSfxr , int aLoop );
329359void Sfxr_set3dMinMaxDistance (Sfxr * aSfxr , float aMinDistance , float aMaxDistance );
330360void Sfxr_set3dAttenuation (Sfxr * aSfxr , unsigned int aAttenuationModel , float aAttenuationRolloffFactor );
@@ -334,6 +364,7 @@ void Sfxr_set3dListenerRelative(Sfxr * aSfxr, int aListenerRelative);
334364void Sfxr_set3dDistanceDelay (Sfxr * aSfxr , int aDistanceDelay );
335365void Sfxr_set3dCollider (Sfxr * aSfxr , AudioCollider * aCollider );
336366void Sfxr_set3dColliderEx (Sfxr * aSfxr , AudioCollider * aCollider , int aUserData /* = 0 */ );
367+ void Sfxr_setAttenuator (Sfxr * aSfxr , AudioAttenuator * aAttenuator );
337368void Sfxr_setFilter (Sfxr * aSfxr , unsigned int aFilterId , Filter * aFilter );
338369void Sfxr_stop (Sfxr * aSfxr );
339370
@@ -361,6 +392,7 @@ int Modplug_load(Modplug * aModplug, const char * aFilename);
361392int Modplug_loadMem (Modplug * aModplug , unsigned char * aMem , unsigned int aLength );
362393int Modplug_loadMemEx (Modplug * aModplug , unsigned char * aMem , unsigned int aLength , int aCopy /* = false */ , int aTakeOwnership /* = true */ );
363394int Modplug_loadFile (Modplug * aModplug , File * aFile );
395+ void Modplug_setVolume (Modplug * aModplug , float aVolume );
364396void Modplug_setLooping (Modplug * aModplug , int aLoop );
365397void Modplug_set3dMinMaxDistance (Modplug * aModplug , float aMinDistance , float aMaxDistance );
366398void Modplug_set3dAttenuation (Modplug * aModplug , unsigned int aAttenuationModel , float aAttenuationRolloffFactor );
@@ -370,6 +402,7 @@ void Modplug_set3dListenerRelative(Modplug * aModplug, int aListenerRelative);
370402void Modplug_set3dDistanceDelay (Modplug * aModplug , int aDistanceDelay );
371403void Modplug_set3dCollider (Modplug * aModplug , AudioCollider * aCollider );
372404void Modplug_set3dColliderEx (Modplug * aModplug , AudioCollider * aCollider , int aUserData /* = 0 */ );
405+ void Modplug_setAttenuator (Modplug * aModplug , AudioAttenuator * aAttenuator );
373406void Modplug_setFilter (Modplug * aModplug , unsigned int aFilterId , Filter * aFilter );
374407void Modplug_stop (Modplug * aModplug );
375408
@@ -384,6 +417,7 @@ int Monotone_load(Monotone * aMonotone, const char * aFilename);
384417int Monotone_loadMem (Monotone * aMonotone , unsigned char * aMem , unsigned int aLength );
385418int Monotone_loadMemEx (Monotone * aMonotone , unsigned char * aMem , unsigned int aLength , int aCopy /* = false */ , int aTakeOwnership /* = true */ );
386419int Monotone_loadFile (Monotone * aMonotone , File * aFile );
420+ void Monotone_setVolume (Monotone * aMonotone , float aVolume );
387421void Monotone_setLooping (Monotone * aMonotone , int aLoop );
388422void Monotone_set3dMinMaxDistance (Monotone * aMonotone , float aMinDistance , float aMaxDistance );
389423void Monotone_set3dAttenuation (Monotone * aMonotone , unsigned int aAttenuationModel , float aAttenuationRolloffFactor );
@@ -393,6 +427,7 @@ void Monotone_set3dListenerRelative(Monotone * aMonotone, int aListenerRelative)
393427void Monotone_set3dDistanceDelay (Monotone * aMonotone , int aDistanceDelay );
394428void Monotone_set3dCollider (Monotone * aMonotone , AudioCollider * aCollider );
395429void Monotone_set3dColliderEx (Monotone * aMonotone , AudioCollider * aCollider , int aUserData /* = 0 */ );
430+ void Monotone_setAttenuator (Monotone * aMonotone , AudioAttenuator * aAttenuator );
396431void Monotone_setFilter (Monotone * aMonotone , unsigned int aFilterId , Filter * aFilter );
397432void Monotone_stop (Monotone * aMonotone );
398433
@@ -407,6 +442,7 @@ int TedSid_loadMem(TedSid * aTedSid, unsigned char * aMem, unsigned int aLength)
407442int TedSid_loadMemEx (TedSid * aTedSid , unsigned char * aMem , unsigned int aLength , int aCopy /* = false */ , int aTakeOwnership /* = true */ );
408443int TedSid_loadFileToMem (TedSid * aTedSid , File * aFile );
409444int TedSid_loadFile (TedSid * aTedSid , File * aFile );
445+ void TedSid_setVolume (TedSid * aTedSid , float aVolume );
410446void TedSid_setLooping (TedSid * aTedSid , int aLoop );
411447void TedSid_set3dMinMaxDistance (TedSid * aTedSid , float aMinDistance , float aMaxDistance );
412448void TedSid_set3dAttenuation (TedSid * aTedSid , unsigned int aAttenuationModel , float aAttenuationRolloffFactor );
@@ -416,6 +452,7 @@ void TedSid_set3dListenerRelative(TedSid * aTedSid, int aListenerRelative);
416452void TedSid_set3dDistanceDelay (TedSid * aTedSid , int aDistanceDelay );
417453void TedSid_set3dCollider (TedSid * aTedSid , AudioCollider * aCollider );
418454void TedSid_set3dColliderEx (TedSid * aTedSid , AudioCollider * aCollider , int aUserData /* = 0 */ );
455+ void TedSid_setAttenuator (TedSid * aTedSid , AudioAttenuator * aAttenuator );
419456void TedSid_setFilter (TedSid * aTedSid , unsigned int aFilterId , Filter * aFilter );
420457void TedSid_stop (TedSid * aTedSid );
421458#ifdef __cplusplus
0 commit comments