From 26952167e940e900cd0e1fa7452c4f163640cbe3 Mon Sep 17 00:00:00 2001 From: sanine Date: Tue, 30 Aug 2022 23:56:05 -0500 Subject: add stereo panning --- src/channel.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/channel.c') diff --git a/src/channel.c b/src/channel.c index a29e7f7..d039701 100644 --- a/src/channel.c +++ b/src/channel.c @@ -106,8 +106,15 @@ void channel_get_next_sample(float *left, float *right, struct channel_t *chan) float l, r; l = chan->sound.left[chan->pos]; r = chan->sound.right[chan->pos]; - *left = volume * l; - *right = volume * r; + + float pan_l = ((float)p_atomic_int_get(&(chan->pan_left)))/128; + float pan_r = ((float)p_atomic_int_get(&(chan->pan_right)))/128; + float gain_ll, gain_lr, gain_rl, gain_rr; + pan_gain(&gain_ll, &gain_lr, pan_l); + pan_gain(&gain_rl, &gain_rr, pan_r); + + *left = volume * ((gain_ll * l) + (gain_rl * r)); + *right = volume * ((gain_lr * l) + (gain_rr * r)); } chan->pos += 1; -- cgit v1.2.1