From b0a2d1c625744b1050d7358fd8c4c64deabb5403 Mon Sep 17 00:00:00 2001 From: Saito Date: Sat, 25 Oct 2003 17:27:45 +0000 Subject: [PATCH] Bug fix. --- timidity/mix.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- timidity/playmidi.c | 2 +- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/timidity/mix.c b/timidity/mix.c index ac55f961..adaa82df 100644 --- a/timidity/mix.c +++ b/timidity/mix.c @@ -300,7 +300,11 @@ static inline void ramp_out(mix_t *sp, int32 *lp, int v, int32 c) int32 left, right, li, ri, i; /* silly warning about uninitialized s */ mix_t s = 0; - +#ifdef ENABLE_PAN_DELAY + Voice *vp = &voice[v]; + int32 pan_delay_wpt = vp->pan_delay_wpt, *pan_delay_buf = vp->pan_delay_buf; +#endif + left = voice[v].left_mix; li = -(left / c); if (! li) @@ -310,6 +314,48 @@ static inline void ramp_out(mix_t *sp, int32 *lp, int v, int32 c) #endif if (! (play_mode->encoding & PE_MONO)) { if (voice[v].panned == PANNED_MYSTERY) { +#ifdef ENABLE_PAN_DELAY + right = voice[v].right_mix; + ri = -(right / c); + if(vp->pan_delay_rpt == 0) { + for (i = 0; i < c; i++) { + left += li; + if (left < 0) + left = 0; + right += ri; + if (right < 0) + right = 0; + s = *sp++; + MIXATION(left); + MIXATION(right); + } + } else if(vp->panning < 64) { + for (i = 0; i < c; i++) { + left += li; + if (left < 0) + left = 0; + right += ri; + if (right < 0) + right = 0; + s = *sp++; + MIXATION(left); + DELAYED_MIXATION(right); + } + } else { + for (i = 0; i < c; i++) { + left += li; + if (left < 0) + left = 0; + right += ri; + if (right < 0) + right = 0; + s = *sp++; + DELAYED_MIXATION(left); + MIXATION(right); + } + } + vp->pan_delay_wpt = pan_delay_wpt; +#else right = voice[v].right_mix; ri = -(right / c); for (i = 0; i < c; i++) { @@ -323,6 +369,7 @@ static inline void ramp_out(mix_t *sp, int32 *lp, int v, int32 c) MIXATION(left); MIXATION(right); } +#endif /* ENABLE_PAN_DELAY */ } else if (voice[v].panned == PANNED_CENTER) for (i = 0; i < c; i++) { left += li; diff --git a/timidity/playmidi.c b/timidity/playmidi.c index db5a4ad7..ebf5cb24 100644 --- a/timidity/playmidi.c +++ b/timidity/playmidi.c @@ -2079,7 +2079,7 @@ static void start_note(MidiEvent *e, int i, int vid, int cnt) } voice[i].delay += pan_delay_diff * play_mode->rate / 1000; } - memset(voice[i].pan_delay_buf, 0, sizeof(voice[i].pan_delay_buf)); + memset(voice[i].pan_delay_buf, 0, sizeof(int32) * PAN_DELAY_BUF_MAX); if(voice[i].pan_delay_rpt < 2) {voice[i].pan_delay_rpt = 0;} voice[i].pan_delay_wpt = 0; #endif /* ENABLE_PAN_DELAY */ -- 2.11.0