diff --git a/src/FAudioGMS.c b/src/FAudioGMS.c index af50922..b64536e 100644 --- a/src/FAudioGMS.c +++ b/src/FAudioGMS.c @@ -535,69 +535,69 @@ double FAudioGMS_StaticSound_LoadWAV(char *filePath) return (double)sound->id; } -static void FAudioGMS_INTERNAL_SoundInstance_SetLowPassFilter(FAudioGMS_SoundInstance* instance, float lowPassFilter) +static void FAudioGMS_INTERNAL_SoundInstance_SetLowPassFilter(FAudioGMS_SoundInstance* instance, float lowPassFilter, float Q) { FAudioFilterParameters p; p.Type = FAudioLowPassFilter; p.Frequency = lowPassFilter; - p.OneOverQ = 1.0f; + p.OneOverQ = 1.0f / Q; FAudioVoice_SetFilterParameters(instance->handle, &p, 0); instance->lowPassFilter = lowPassFilter; } -void FAudioGMS_SoundInstance_SetLowPassFilter(double soundInstanceID, double lowPassFilter) +void FAudioGMS_SoundInstance_SetLowPassFilter(double soundInstanceID, double lowPassFilter, double Q) { FAudioGMS_SoundInstance *instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); if (instance != NULL) { - FAudioGMS_INTERNAL_SoundInstance_SetLowPassFilter(instance, lowPassFilter); + FAudioGMS_INTERNAL_SoundInstance_SetLowPassFilter(instance, lowPassFilter, Q); } } -static void FAudioGMS_INTERNAL_SoundInstance_SetHighPassFilter(FAudioGMS_SoundInstance* instance, float highPassFilter) +static void FAudioGMS_INTERNAL_SoundInstance_SetHighPassFilter(FAudioGMS_SoundInstance* instance, float highPassFilter, float Q) { FAudioFilterParameters p; p.Type = FAudioHighPassFilter; p.Frequency = highPassFilter; - p.OneOverQ = 1.0f; + p.OneOverQ = 1.0f / Q; FAudioVoice_SetFilterParameters(instance->handle, &p, 0); instance->highPassFilter = highPassFilter; } -void FAudioGMS_SoundInstance_SetHighPassFilter(double soundInstanceID, double highPassFilter) +void FAudioGMS_SoundInstance_SetHighPassFilter(double soundInstanceID, double highPassFilter, double Q) { FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); if (instance != NULL) { - FAudioGMS_INTERNAL_SoundInstance_SetHighPassFilter(instance, highPassFilter); + FAudioGMS_INTERNAL_SoundInstance_SetHighPassFilter(instance, highPassFilter, Q); } } -static void FAudioGMS_INTERNAL_SoundInstance_SetBandPassFilter(FAudioGMS_SoundInstance* instance, float bandPassFilter) +static void FAudioGMS_INTERNAL_SoundInstance_SetBandPassFilter(FAudioGMS_SoundInstance* instance, float bandPassFilter, float Q) { FAudioFilterParameters p; p.Type = FAudioBandPassFilter; p.Frequency = bandPassFilter; - p.OneOverQ = 1.0f; + p.OneOverQ = 1.0f / Q; FAudioVoice_SetFilterParameters(instance->handle, &p, 0); instance->bandPassFilter = bandPassFilter; } -void FAudioGMS_SoundInstance_SetBandPassFilter(double soundInstanceID, double bandPassFilter) +void FAudioGMS_SoundInstance_SetBandPassFilter(double soundInstanceID, double bandPassFilter, double Q) { FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); if (instance != NULL) { - FAudioGMS_INTERNAL_SoundInstance_SetBandPassFilter(instance, bandPassFilter); + FAudioGMS_INTERNAL_SoundInstance_SetBandPassFilter(instance, bandPassFilter, Q); } } diff --git a/src/FAudioGMS.h b/src/FAudioGMS.h index 56d0dd9..c9b4531 100644 --- a/src/FAudioGMS.h +++ b/src/FAudioGMS.h @@ -60,9 +60,9 @@ FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolume(double soundInstanceID, doub FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, double y, double z); 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); -FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetHighPassFilter(double soundInstanceID, double highPassFilter); -FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetBandPassFilter(double soundInstanceID, double bandPassFilter); +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 double FAudioGMS_SoundInstance_GetPitch(double soundInstanceID); FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetVolume(double soundInstanceID);