summaryrefslogtreecommitdiff
path: root/muse/synti/zynaddsubfx/Misc/Master.C
diff options
context:
space:
mode:
Diffstat (limited to 'muse/synti/zynaddsubfx/Misc/Master.C')
-rw-r--r--muse/synti/zynaddsubfx/Misc/Master.C15
1 files changed, 8 insertions, 7 deletions
diff --git a/muse/synti/zynaddsubfx/Misc/Master.C b/muse/synti/zynaddsubfx/Misc/Master.C
index 7d697418..87142c09 100644
--- a/muse/synti/zynaddsubfx/Misc/Master.C
+++ b/muse/synti/zynaddsubfx/Misc/Master.C
@@ -414,17 +414,18 @@ void Master::AudioOut(REALTYPE* outl, REALTYPE* outr)
void Master::GetAudioOutSamples(int nsamples, REALTYPE* outl, REALTYPE* outr)
{
+ int dstOffset = 0;
while (nsamples) {
- if (ksoundbuffersamples == 0) {
+ if (ksoundbuffersamples <= 0) {
AudioOut(audiooutl, audiooutr);
ksoundbuffersamples = SOUND_BUFFER_SIZE;
}
- int n = nsamples > ksoundbuffersamples ? ksoundbuffersamples : nsamples;
- memcpy(outl, audiooutl + SOUND_BUFFER_SIZE - ksoundbuffersamples,
- n * sizeof(REALTYPE));
- memcpy(outr, audiooutr + SOUND_BUFFER_SIZE - ksoundbuffersamples,
- n * sizeof(REALTYPE));
- nsamples -= n;
+ int n = nsamples > ksoundbuffersamples ? ksoundbuffersamples : nsamples;
+ int srcOffset = SOUND_BUFFER_SIZE - ksoundbuffersamples;
+ memcpy(outl + dstOffset, audiooutl + srcOffset, n * sizeof(REALTYPE));
+ memcpy(outr + dstOffset, audiooutr + srcOffset, n * sizeof(REALTYPE));
+ nsamples -= n;
+ dstOffset += n;
ksoundbuffersamples -= n;
}
}