From 5218fa0b19214cc00f409167bec0339720d7f5cb Mon Sep 17 00:00:00 2001 From: Ompronce <88358700+Ompronce@users.noreply.github.com> Date: Thu, 20 Jan 2022 17:43:31 -0400 Subject: [PATCH] Refined and optimized CD audio filter on AdLib Gold sound card --- src/sound/snd_adlibgold.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/sound/snd_adlibgold.c b/src/sound/snd_adlibgold.c index 853e74f0e..4a94fc0d1 100644 --- a/src/sound/snd_adlibgold.c +++ b/src/sound/snd_adlibgold.c @@ -819,7 +819,17 @@ static void adgold_get_buffer(int32_t *buffer, int len, void *p) free(adgold_buffer); } -/*CD audio filter goes here*/ +static void +adgold_filter_cd_audio(int channel, double *buffer, void *p) +{ + adgold_t *adgold = (adgold_t *)p; + double c; + int aux = channel ? adgold->aux_vol_r : adgold->aux_vol_l; + int vol = channel ? adgold->vol_r : adgold->vol_l; + + c = ((((*buffer) * aux) / 4096.0) * vol) / 4096.0; + *buffer = c; +} static void adgold_input_msg(void *p, uint8_t *msg, uint32_t len) @@ -926,7 +936,7 @@ void *adgold_init(const device_t *info) sound_add_handler(adgold_get_buffer, adgold); - /*sound_set_cd_audio_filter(adgold_filter_cd_audio, adgold);*/ + sound_set_cd_audio_filter(adgold_filter_cd_audio, adgold); if (device_get_config_int("receive_input")) midi_in_handler(1, adgold_input_msg, adgold_input_sysex, adgold);