diff options
| author | Stepan Moskovchenko <stevenm@rockbox.org> | 2007-09-29 02:20:49 +0000 |
|---|---|---|
| committer | Stepan Moskovchenko <stevenm@rockbox.org> | 2007-09-29 02:20:49 +0000 |
| commit | d1e306077ff111e148400a0202b548ce9ed3d7bc (patch) | |
| tree | 33b48f84b9766c5c594377d202ebd94cf2817925 /apps | |
| parent | 23a89b06ab7ecff2086fa7a3862f66c066fef752 (diff) | |
| download | rockbox-d1e306077ff111e148400a0202b548ce9ed3d7bc.zip rockbox-d1e306077ff111e148400a0202b548ce9ed3d7bc.tar.gz rockbox-d1e306077ff111e148400a0202b548ce9ed3d7bc.tar.bz2 rockbox-d1e306077ff111e148400a0202b548ce9ed3d7bc.tar.xz | |
MIDI: Fix two year old loop bug that caused distortion on some instruments. I been looking for this one
for at least 6 months.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14896 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/plugins/midi/synth.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/apps/plugins/midi/synth.c b/apps/plugins/midi/synth.c index d053ebf..d6fda78 100644 --- a/apps/plugins/midi/synth.c +++ b/apps/plugins/midi/synth.c @@ -297,13 +297,13 @@ signed short int synthVoice(struct SynthObject * so) { if(wf->mode & LOOP_REVERSE) { - so->cp = (wf->endLoop)<<FRACTSIZE; - cpShifted = wf->endLoop; + cpShifted = wf->endLoop-(wf->startLoop-cpShifted); + so->cp = (cpShifted)<<FRACTSIZE; s2=getSample((cpShifted), wf); } else { - so->delta = -so->delta; + so->delta = -so->delta; /* At this point cpShifted is wrong. We need to take a step */ so->loopDir = LOOPDIR_FORWARD; } } @@ -313,8 +313,8 @@ signed short int synthVoice(struct SynthObject * so) so->loopState = STATE_LOOPING; if((wf->mode & (24)) == 0) { - so->cp = (wf->startLoop)<<FRACTSIZE; - cpShifted = wf->startLoop; + cpShifted = wf->startLoop + (cpShifted-wf->endLoop); + so->cp = (cpShifted)<<FRACTSIZE; s2=getSample((cpShifted), wf); } else |