Clean-up the weird buggy code

I'mma just assume each sound needs their struct preserving for some
reason.
This commit is contained in:
Clownacy 2020-04-17 21:48:34 +01:00
parent db14899b3e
commit b123e3743e

View file

@ -25,6 +25,7 @@ struct AudioBackend_Sound
unsigned short volume; unsigned short volume;
unsigned short pan_l; unsigned short pan_l;
unsigned short pan_r; unsigned short pan_r;
AXVoiceDeviceMixData mix_data[6];
}; };
static void (*organya_callback)(void); static void (*organya_callback)(void);
@ -174,12 +175,12 @@ void AudioBackend_PlaySound(AudioBackend_Sound *sound, bool looping)
AXVoiceVeData vol = {.volume = sound->volume}; AXVoiceVeData vol = {.volume = sound->volume};
AXSetVoiceVe(voice, &vol); AXSetVoiceVe(voice, &vol);
static AXVoiceDeviceMixData mix_data[1][6]; memset(sound->mix_data, 0, sizeof(sound->mix_data));
mix_data[0][0].bus[0].volume = sound->pan_l; sound->mix_data[0].bus[0].volume = sound->pan_l;
mix_data[0][1].bus[0].volume = sound->pan_r; sound->mix_data[1].bus[0].volume = sound->pan_r;
AXSetVoiceDeviceMix(voice, AX_DEVICE_TYPE_DRC, 0, mix_data[0]); AXSetVoiceDeviceMix(voice, AX_DEVICE_TYPE_DRC, 0, sound->mix_data);
AXSetVoiceDeviceMix(voice, AX_DEVICE_TYPE_TV, 0, mix_data[0]); AXSetVoiceDeviceMix(voice, AX_DEVICE_TYPE_TV, 0, sound->mix_data);
float srcratio = (float)sound->frequency / (float)AXGetInputSamplesPerSec(); float srcratio = (float)sound->frequency / (float)AXGetInputSamplesPerSec();
AXSetVoiceSrcRatio(voice, srcratio); AXSetVoiceSrcRatio(voice, srcratio);
@ -251,14 +252,13 @@ void AudioBackend_SetSoundPan(AudioBackend_Sound *sound, long pan)
sound->pan_l = (unsigned short)(0x8000 * MillibelToScale(-pan)); sound->pan_l = (unsigned short)(0x8000 * MillibelToScale(-pan));
sound->pan_r = (unsigned short)(0x8000 * MillibelToScale(pan)); sound->pan_r = (unsigned short)(0x8000 * MillibelToScale(pan));
static AXVoiceDeviceMixData mix_data[1][6];
mix_data[0][0].bus[0].volume = sound->pan_l;
mix_data[0][1].bus[0].volume = sound->pan_r;
if (sound->voice != NULL) if (sound->voice != NULL)
{ {
AXSetVoiceDeviceMix(sound->voice, AX_DEVICE_TYPE_DRC, 0, mix_data[0]); sound->mix_data[0].bus[0].volume = sound->pan_l;
AXSetVoiceDeviceMix(sound->voice, AX_DEVICE_TYPE_TV, 0, mix_data[0]); sound->mix_data[1].bus[0].volume = sound->pan_r;
AXSetVoiceDeviceMix(sound->voice, AX_DEVICE_TYPE_DRC, 0, sound->mix_data);
AXSetVoiceDeviceMix(sound->voice, AX_DEVICE_TYPE_TV, 0, sound->mix_data);
} }
} }