From dc3b3032dc88192fe38ff3047aa755effe45a944 Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 18 Mar 2014 22:03:19 +0000 Subject: [PATCH] Fix for pulse --- source/backend/engine/CarlaEngineRtAudio.cpp | 34 ++++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/source/backend/engine/CarlaEngineRtAudio.cpp b/source/backend/engine/CarlaEngineRtAudio.cpp index aa73048b5..c9d611289 100644 --- a/source/backend/engine/CarlaEngineRtAudio.cpp +++ b/source/backend/engine/CarlaEngineRtAudio.cpp @@ -700,21 +700,24 @@ protected: return runPendingRtEvents(); // initialize rtaudio input - if (fIsAudioInterleaved) + if (! fIsAudioInterleaved) { - for (uint i=0, j=0, count=nframes*fAudioInCount; i < count; ++i) + for (uint i=0; i < fAudioInCount; ++i) + FLOAT_COPY(fAudioInBuf[i], insPtr+(nframes*i), nframes); + } + else if (fAudioInCount > 0) + { + for (uint i=0, j=0, k=0; j < nframes*fAudioInCount; ++k) { - fAudioInBuf[i/fAudioInCount][j] = insPtr[i]; + fAudioInBuf[i][j] = insPtr[k]; - if ((i+1) % fAudioInCount == 0) - j += 1; + if (++i == fAudioInCount) + { + i = 0; + ++j; + } } } - else - { - for (uint i=0; i < fAudioInCount; ++i) - FLOAT_COPY(fAudioInBuf[i], insPtr+(nframes*i), nframes); - } // initialize rtaudio output for (uint i=0; i < fAudioOutCount; ++i) @@ -765,12 +768,15 @@ protected: // output audio if (fIsAudioInterleaved) { - for (uint i=0, j=0; i < nframes*fAudioOutCount; ++i) + for (uint i=0, j=0, k=0; i < nframes*fAudioOutCount; ++k) { - outsPtr[i] = fAudioOutBuf[i/fAudioOutCount][j]; + outsPtr[k] = fAudioOutBuf[i][j]; - if ((i+1) % fAudioOutCount == 0) - j += 1; + if (++i == fAudioOutCount) + { + i = 0; + ++j; + } } } else