forked from MoonsideGames/FAudioGMS
change static sound API
parent
2568e9869b
commit
8fee2bcba9
363
src/FAudioGMS.c
363
src/FAudioGMS.c
|
@ -535,72 +535,6 @@ double FAudioGMS_StaticSound_LoadWAV(char *filePath)
|
||||||
return (double)sound->id;
|
return (double)sound->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FAudioGMS_INTERNAL_SoundInstance_SetLowPassFilter(FAudioGMS_SoundInstance* instance, float lowPassFilter, float Q)
|
|
||||||
{
|
|
||||||
FAudioFilterParameters p;
|
|
||||||
p.Type = FAudioLowPassFilter;
|
|
||||||
p.Frequency = SDL_max(0.0, SDL_min(1.0, lowPassFilter));
|
|
||||||
p.OneOverQ = 1.0f / Q;
|
|
||||||
|
|
||||||
FAudioVoice_SetFilterParameters(instance->handle, &p, 0);
|
|
||||||
|
|
||||||
instance->lowPassFilter = 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, Q);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void FAudioGMS_INTERNAL_SoundInstance_SetHighPassFilter(FAudioGMS_SoundInstance* instance, float highPassFilter, float Q)
|
|
||||||
{
|
|
||||||
FAudioFilterParameters p;
|
|
||||||
p.Type = FAudioHighPassFilter;
|
|
||||||
p.Frequency = SDL_max(0.0, SDL_min(1.0, highPassFilter));
|
|
||||||
p.OneOverQ = 1.0f / Q;
|
|
||||||
|
|
||||||
FAudioVoice_SetFilterParameters(instance->handle, &p, 0);
|
|
||||||
|
|
||||||
instance->highPassFilter = 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, Q);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void FAudioGMS_INTERNAL_SoundInstance_SetBandPassFilter(FAudioGMS_SoundInstance* instance, float bandPassFilter, float Q)
|
|
||||||
{
|
|
||||||
FAudioFilterParameters p;
|
|
||||||
p.Type = FAudioBandPassFilter;
|
|
||||||
p.Frequency = SDL_max(0.0, SDL_min(1.0, bandPassFilter));
|
|
||||||
p.OneOverQ = 1.0f / Q;
|
|
||||||
|
|
||||||
FAudioVoice_SetFilterParameters(instance->handle, &p, 0);
|
|
||||||
|
|
||||||
instance->bandPassFilter = 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, Q);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void FAudioGMS_INTERNAL_SoundInstance_SetPan(FAudioGMS_SoundInstance* instance, float pan)
|
static void FAudioGMS_INTERNAL_SoundInstance_SetPan(FAudioGMS_SoundInstance* instance, float pan)
|
||||||
{
|
{
|
||||||
instance->pan = pan;
|
instance->pan = pan;
|
||||||
|
@ -656,35 +590,6 @@ static void FAudioGMS_INTERNAL_SoundInstance_SetProperties(FAudioGMS_SoundInstan
|
||||||
FAudioGMS_INTERNAL_SoundInstance_SetVolume(instance, volume);
|
FAudioGMS_INTERNAL_SoundInstance_SetVolume(instance, volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FAudioGMS_INTERNAL_Apply3D(FAudioGMS_SoundInstance* instance)
|
|
||||||
{
|
|
||||||
F3DAUDIO_EMITTER* emitter = instance->emitter;
|
|
||||||
|
|
||||||
if (emitter == NULL)
|
|
||||||
{
|
|
||||||
Log("Sound instance does not have 3D data! Did you forget to initialize?");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
F3DAudioCalculate(
|
|
||||||
device->handle3D,
|
|
||||||
&device->listener,
|
|
||||||
emitter,
|
|
||||||
F3DAUDIO_CALCULATE_MATRIX | F3DAUDIO_CALCULATE_DOPPLER,
|
|
||||||
&instance->dspSettings
|
|
||||||
);
|
|
||||||
|
|
||||||
FAudioGMS_INTERNAL_SoundInstance_UpdatePitch(instance);
|
|
||||||
FAudioVoice_SetOutputMatrix(
|
|
||||||
instance->handle,
|
|
||||||
device->masteringVoice,
|
|
||||||
instance->dspSettings.SrcChannelCount,
|
|
||||||
instance->dspSettings.DstChannelCount,
|
|
||||||
instance->dspSettings.pMatrixCoefficients,
|
|
||||||
0
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_Init(
|
static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_Init(
|
||||||
uint32_t channelCount,
|
uint32_t channelCount,
|
||||||
uint32_t samplesPerSecond,
|
uint32_t samplesPerSecond,
|
||||||
|
@ -771,7 +676,7 @@ static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_Init(
|
||||||
}
|
}
|
||||||
|
|
||||||
static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound(
|
static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound(
|
||||||
FAudioGMS_StaticSound *staticSound
|
FAudioGMS_StaticSound* staticSound
|
||||||
) {
|
) {
|
||||||
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_SoundInstance_Init(
|
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_SoundInstance_Init(
|
||||||
staticSound->channels,
|
staticSound->channels,
|
||||||
|
@ -785,6 +690,118 @@ static FAudioGMS_SoundInstance* FAudioGMS_INTERNAL_SoundInstance_CreateFromStati
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double FAudioGMS_StaticSound_CreateSoundInstance(double staticSoundID)
|
||||||
|
{
|
||||||
|
RETURN_ON_NULL_DEVICE()
|
||||||
|
FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID);
|
||||||
|
|
||||||
|
if (staticSound != NULL)
|
||||||
|
{
|
||||||
|
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound(staticSound);
|
||||||
|
return instance->id;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log("Invalid static sound ID!");
|
||||||
|
return -1.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void FAudioGMS_INTERNAL_SoundInstance_SetLowPassFilter(FAudioGMS_SoundInstance* instance, float lowPassFilter, float Q)
|
||||||
|
{
|
||||||
|
FAudioFilterParameters p;
|
||||||
|
p.Type = FAudioLowPassFilter;
|
||||||
|
p.Frequency = SDL_max(0.0, SDL_min(1.0, lowPassFilter));
|
||||||
|
p.OneOverQ = 1.0f / Q;
|
||||||
|
|
||||||
|
FAudioVoice_SetFilterParameters(instance->handle, &p, 0);
|
||||||
|
|
||||||
|
instance->lowPassFilter = 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, Q);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void FAudioGMS_INTERNAL_SoundInstance_SetHighPassFilter(FAudioGMS_SoundInstance* instance, float highPassFilter, float Q)
|
||||||
|
{
|
||||||
|
FAudioFilterParameters p;
|
||||||
|
p.Type = FAudioHighPassFilter;
|
||||||
|
p.Frequency = SDL_max(0.0, SDL_min(1.0, highPassFilter));
|
||||||
|
p.OneOverQ = 1.0f / Q;
|
||||||
|
|
||||||
|
FAudioVoice_SetFilterParameters(instance->handle, &p, 0);
|
||||||
|
|
||||||
|
instance->highPassFilter = 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, Q);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void FAudioGMS_INTERNAL_SoundInstance_SetBandPassFilter(FAudioGMS_SoundInstance* instance, float bandPassFilter, float Q)
|
||||||
|
{
|
||||||
|
FAudioFilterParameters p;
|
||||||
|
p.Type = FAudioBandPassFilter;
|
||||||
|
p.Frequency = SDL_max(0.0, SDL_min(1.0, bandPassFilter));
|
||||||
|
p.OneOverQ = 1.0f / Q;
|
||||||
|
|
||||||
|
FAudioVoice_SetFilterParameters(instance->handle, &p, 0);
|
||||||
|
|
||||||
|
instance->bandPassFilter = 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, Q);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void FAudioGMS_INTERNAL_Apply3D(FAudioGMS_SoundInstance* instance)
|
||||||
|
{
|
||||||
|
F3DAUDIO_EMITTER* emitter = instance->emitter;
|
||||||
|
|
||||||
|
if (emitter == NULL)
|
||||||
|
{
|
||||||
|
Log("Sound instance does not have 3D data! Did you forget to initialize?");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
F3DAudioCalculate(
|
||||||
|
device->handle3D,
|
||||||
|
&device->listener,
|
||||||
|
emitter,
|
||||||
|
F3DAUDIO_CALCULATE_MATRIX | F3DAUDIO_CALCULATE_DOPPLER,
|
||||||
|
&instance->dspSettings
|
||||||
|
);
|
||||||
|
|
||||||
|
FAudioGMS_INTERNAL_SoundInstance_UpdatePitch(instance);
|
||||||
|
FAudioVoice_SetOutputMatrix(
|
||||||
|
instance->handle,
|
||||||
|
device->masteringVoice,
|
||||||
|
instance->dspSettings.SrcChannelCount,
|
||||||
|
instance->dspSettings.DstChannelCount,
|
||||||
|
instance->dspSettings.pMatrixCoefficients,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
static void FAudioGMS_INTERNAL_SoundInstance_AddBuffer(FAudioGMS_SoundInstance* instance)
|
static void FAudioGMS_INTERNAL_SoundInstance_AddBuffer(FAudioGMS_SoundInstance* instance)
|
||||||
{
|
{
|
||||||
uint32_t requestedSampleCount = instance->format.nSamplesPerSec / 4;
|
uint32_t requestedSampleCount = instance->format.nSamplesPerSec / 4;
|
||||||
|
@ -867,7 +884,7 @@ double FAudioGMS_StreamingSound_LoadOGG(char* filePath)
|
||||||
return instance->id;
|
return instance->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FAudioGMS_INTERNAL_StaticSound_AddEmitter(FAudioGMS_SoundInstance* instance, float x, float y, float z)
|
static void FAudioGMS_INTERNAL_SoundInstance_AddEmitter(FAudioGMS_SoundInstance* instance, float x, float y, float z)
|
||||||
{
|
{
|
||||||
instance->is3D = 1;
|
instance->is3D = 1;
|
||||||
|
|
||||||
|
@ -937,84 +954,6 @@ static void FAudioGMS_INTERNAL_SoundInstance_Play(FAudioGMS_SoundInstance* insta
|
||||||
instance->soundState = SoundState_Playing;
|
instance->soundState = SoundState_Playing;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FAudioGMS_StaticSound_PlayOneOff(double staticSoundID, double pan, double pitch, double volume)
|
|
||||||
{
|
|
||||||
RETURN_ON_NULL_DEVICE()
|
|
||||||
FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID);
|
|
||||||
|
|
||||||
if (staticSound != NULL)
|
|
||||||
{
|
|
||||||
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound(staticSound);
|
|
||||||
instance->destroyOnFinish = 1;
|
|
||||||
FAudioGMS_INTERNAL_SoundInstance_SetProperties(instance, pan, pitch, volume);
|
|
||||||
FAudioGMS_INTERNAL_SoundInstance_Play(instance);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Log("StaticSound_PlayOneOff: Invalid static sound ID! Did you destroy this sound?");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FAudioGMS_StaticSound_PlayOneOffSpatial(double staticSoundID, double x, double y, double z, double pitch, double volume)
|
|
||||||
{
|
|
||||||
RETURN_ON_NULL_DEVICE()
|
|
||||||
FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID);
|
|
||||||
|
|
||||||
if (staticSound != NULL)
|
|
||||||
{
|
|
||||||
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound(staticSound);
|
|
||||||
instance->destroyOnFinish = 1;
|
|
||||||
FAudioGMS_INTERNAL_SoundInstance_SetProperties(instance, 0, pitch, volume);
|
|
||||||
FAudioGMS_INTERNAL_StaticSound_AddEmitter(instance, x, y, z);
|
|
||||||
FAudioGMS_INTERNAL_SoundInstance_Play(instance);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Log("StaticSound_PlayOneOffSpatial: Invalid static sound ID! Did you destroy this sound?");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
double FAudioGMS_StaticSound_Play(double staticSoundID, double pan, double pitch, double volume, double loop)
|
|
||||||
{
|
|
||||||
RETURN_ON_NULL_DEVICE(-1.0)
|
|
||||||
FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID);
|
|
||||||
|
|
||||||
if (staticSound != NULL)
|
|
||||||
{
|
|
||||||
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound(staticSound);
|
|
||||||
instance->loop = (uint8_t)loop;
|
|
||||||
FAudioGMS_INTERNAL_SoundInstance_SetProperties(instance, pan, pitch, volume);
|
|
||||||
FAudioGMS_INTERNAL_SoundInstance_Play(instance);
|
|
||||||
return (double)instance->id;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Log("StaticSound_Play: Invalid static sound ID! Did you destroy this sound?");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
double FAudioGMS_StaticSound_PlaySpatial(double staticSoundID, double x, double y, double z, double pitch, double volume, double loop)
|
|
||||||
{
|
|
||||||
RETURN_ON_NULL_DEVICE(-1.0)
|
|
||||||
FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID);
|
|
||||||
|
|
||||||
if (staticSound != NULL)
|
|
||||||
{
|
|
||||||
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_SoundInstance_CreateFromStaticSound(staticSound);
|
|
||||||
instance->loop = (uint8_t)loop;
|
|
||||||
FAudioGMS_INTERNAL_SoundInstance_SetProperties(instance, 0, pitch, volume);
|
|
||||||
FAudioGMS_INTERNAL_StaticSound_AddEmitter(instance, x, y, z);
|
|
||||||
FAudioGMS_INTERNAL_SoundInstance_Play(instance);
|
|
||||||
return (double)instance->id;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Log("StaticSound_PlaySpatial: Invalid static sound ID! Did you destroy this sound?");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FAudioGMS_SoundInstance_Play(double soundInstanceID, double loop)
|
void FAudioGMS_SoundInstance_Play(double soundInstanceID, double loop)
|
||||||
{
|
{
|
||||||
RETURN_ON_NULL_DEVICE()
|
RETURN_ON_NULL_DEVICE()
|
||||||
|
@ -1079,7 +1018,7 @@ void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double pan)
|
||||||
RETURN_ON_NULL_DEVICE()
|
RETURN_ON_NULL_DEVICE()
|
||||||
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID);
|
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID);
|
||||||
|
|
||||||
if (instance != NULL)
|
if (instance != NULL && !instance->is3D)
|
||||||
{
|
{
|
||||||
FAudioGMS_INTERNAL_SoundInstance_SetPan(instance, pan);
|
FAudioGMS_INTERNAL_SoundInstance_SetPan(instance, pan);
|
||||||
}
|
}
|
||||||
|
@ -1117,20 +1056,35 @@ void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, dou
|
||||||
{
|
{
|
||||||
if (!instance->is3D)
|
if (!instance->is3D)
|
||||||
{
|
{
|
||||||
Log("Not a 3D sound!");
|
FAudioGMS_INTERNAL_SoundInstance_AddEmitter(instance, x, y, z);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
instance->emitter->Velocity.x = x - instance->emitter->Position.x;
|
|
||||||
instance->emitter->Velocity.y = y - instance->emitter->Position.y;
|
|
||||||
instance->emitter->Velocity.z = z - instance->emitter->Position.z;
|
|
||||||
|
|
||||||
instance->emitter->Position.x = x;
|
instance->emitter->Position.x = x;
|
||||||
instance->emitter->Position.y = y;
|
instance->emitter->Position.y = y;
|
||||||
instance->emitter->Position.z = z;
|
instance->emitter->Position.z = z;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FAudioGMS_SoundInstance_Set3DVelocity(double soundInstanceID, double xVelocity, double yVelocity, double zVelocity)
|
||||||
|
{
|
||||||
|
RETURN_ON_NULL_DEVICE()
|
||||||
|
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID);
|
||||||
|
|
||||||
|
if (instance != NULL)
|
||||||
|
{
|
||||||
|
if (!instance->is3D)
|
||||||
|
{
|
||||||
|
Log("Not a 3D sound!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
instance->emitter->Velocity.x;
|
||||||
|
instance->emitter->Velocity.y;
|
||||||
|
instance->emitter->Velocity.z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME: this will die horribly if position is greater than total length */
|
||||||
void FAudioGMS_SoundInstance_SetTrackPositionInSeconds(double soundInstanceID, double trackPositionInSeconds)
|
void FAudioGMS_SoundInstance_SetTrackPositionInSeconds(double soundInstanceID, double trackPositionInSeconds)
|
||||||
{
|
{
|
||||||
RETURN_ON_NULL_DEVICE()
|
RETURN_ON_NULL_DEVICE()
|
||||||
|
@ -1252,15 +1206,19 @@ double FAudioGMS_SoundInstance_GetTrackPositionInSeconds(double soundInstanceID)
|
||||||
void FAudioGMS_SetListenerPosition(double x, double y, double z)
|
void FAudioGMS_SetListenerPosition(double x, double y, double z)
|
||||||
{
|
{
|
||||||
RETURN_ON_NULL_DEVICE()
|
RETURN_ON_NULL_DEVICE()
|
||||||
device->listener.Velocity.x = x - device->listener.Position.x;
|
|
||||||
device->listener.Velocity.y = y - device->listener.Position.y;
|
|
||||||
device->listener.Velocity.z = z - device->listener.Position.z;
|
|
||||||
|
|
||||||
device->listener.Position.x = x;
|
device->listener.Position.x = x;
|
||||||
device->listener.Position.y = y;
|
device->listener.Position.y = y;
|
||||||
device->listener.Position.z = z;
|
device->listener.Position.z = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FAudioGMS_SetListenerVelocity(double xVelocity, double yVelocity, double zVelocity)
|
||||||
|
{
|
||||||
|
RETURN_ON_NULL_DEVICE()
|
||||||
|
device->listener.Velocity.x = xVelocity;
|
||||||
|
device->listener.Velocity.y = yVelocity;
|
||||||
|
device->listener.Velocity.z = zVelocity;
|
||||||
|
}
|
||||||
|
|
||||||
static void FAudioGMS_INTERNAL_SoundInstance_Destroy(FAudioGMS_SoundInstance* instance)
|
static void FAudioGMS_INTERNAL_SoundInstance_Destroy(FAudioGMS_SoundInstance* instance)
|
||||||
{
|
{
|
||||||
if (instance != NULL)
|
if (instance != NULL)
|
||||||
|
@ -1459,23 +1417,26 @@ void FAudioGMS_EffectChain_AddReverb(
|
||||||
|
|
||||||
static void FAudioGMS_INTERNAL_SoundInstance_SetEffectGain(FAudioGMS_SoundInstance *instance, float effectGain)
|
static void FAudioGMS_INTERNAL_SoundInstance_SetEffectGain(FAudioGMS_SoundInstance *instance, float effectGain)
|
||||||
{
|
{
|
||||||
float* outputMatrix = instance->dspSettings.pMatrixCoefficients;
|
if (instance->effectChainAttached)
|
||||||
|
|
||||||
outputMatrix[0] = effectGain;
|
|
||||||
if (instance->dspSettings.SrcChannelCount == 2)
|
|
||||||
{
|
{
|
||||||
outputMatrix[1] = effectGain;
|
float* outputMatrix = instance->dspSettings.pMatrixCoefficients;
|
||||||
|
|
||||||
|
outputMatrix[0] = effectGain;
|
||||||
|
if (instance->dspSettings.SrcChannelCount == 2)
|
||||||
|
{
|
||||||
|
outputMatrix[1] = effectGain;
|
||||||
|
}
|
||||||
|
|
||||||
|
FAudioVoice_SetOutputMatrix(
|
||||||
|
instance->handle,
|
||||||
|
instance->effectVoice,
|
||||||
|
instance->dspSettings.SrcChannelCount,
|
||||||
|
1,
|
||||||
|
outputMatrix,
|
||||||
|
0);
|
||||||
|
|
||||||
|
instance->effectGain = effectGain;
|
||||||
}
|
}
|
||||||
|
|
||||||
FAudioVoice_SetOutputMatrix(
|
|
||||||
instance->handle,
|
|
||||||
instance->effectVoice,
|
|
||||||
instance->dspSettings.SrcChannelCount,
|
|
||||||
1,
|
|
||||||
outputMatrix,
|
|
||||||
0);
|
|
||||||
|
|
||||||
instance->effectGain = effectGain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FAudioGMS_SoundInstance_SetEffectGain(double soundInstanceID, double effectGain)
|
void FAudioGMS_SoundInstance_SetEffectGain(double soundInstanceID, double effectGain)
|
||||||
|
|
|
@ -42,13 +42,10 @@ extern "C" {
|
||||||
FAUDIOGMSAPI void FAudioGMS_Init(double spatialDistanceScale, double timestep);
|
FAUDIOGMSAPI void FAudioGMS_Init(double spatialDistanceScale, double timestep);
|
||||||
|
|
||||||
FAUDIOGMSAPI double FAudioGMS_StaticSound_LoadWAV(char *filePath); /* returns a static sound ID */
|
FAUDIOGMSAPI double FAudioGMS_StaticSound_LoadWAV(char *filePath); /* returns a static sound ID */
|
||||||
FAUDIOGMSAPI void FAudioGMS_StaticSound_PlayOneOff(double staticSoundID, double pan, double pitch, double volume); /* automatically frees itself when done! */
|
FAUDIOGMSAPI double FAudioGMS_StaticSound_CreateSoundInstance(double staticSoundID); /* returns a sound instance ID */
|
||||||
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! */
|
|
||||||
FAUDIOGMSAPI void FAudioGMS_StaticSound_Destroy(double staticSoundID);
|
FAUDIOGMSAPI void FAudioGMS_StaticSound_Destroy(double staticSoundID);
|
||||||
|
|
||||||
FAUDIOGMSAPI double FAudioGMS_StreamingSound_LoadOGG(char* filepath); /* returns a sound instance */
|
FAUDIOGMSAPI double FAudioGMS_StreamingSound_LoadOGG(char* filepath); /* returns a sound instance ID */
|
||||||
|
|
||||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Play(double soundInstanceID, double loop);
|
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Play(double soundInstanceID, double loop);
|
||||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Pause(double soundInstanceID);
|
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Pause(double soundInstanceID);
|
||||||
|
@ -58,6 +55,7 @@ FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double
|
||||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch);
|
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch);
|
||||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolume(double soundInstanceID, double volume);
|
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_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_SetTrackPositionInSeconds(double soundInstanceID, double trackPositionInSeconds);
|
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetTrackPositionInSeconds(double soundInstanceID, double trackPositionInSeconds);
|
||||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolumeOverTime(double soundInstanceID, double volume, double milliseconds);
|
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_SetLowPassFilter(double soundInstanceID, double lowPassFilter, double Q);
|
||||||
|
@ -101,6 +99,7 @@ FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectChain(double soundInstanceID,
|
||||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectGain(double soundInstanceID, double effectGain);
|
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetEffectGain(double soundInstanceID, double effectGain);
|
||||||
|
|
||||||
FAUDIOGMSAPI void FAudioGMS_SetListenerPosition(double x, double y, double z);
|
FAUDIOGMSAPI void FAudioGMS_SetListenerPosition(double x, double y, double z);
|
||||||
|
FAUDIOGMSAPI void FAudioGMS_SetListenerVelocity(double xVelocity, double yVelocity, double zVelocity);
|
||||||
|
|
||||||
FAUDIOGMSAPI void FAudioGMS_StopAll();
|
FAUDIOGMSAPI void FAudioGMS_StopAll();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue