Skip to content

Commit 8170a11

Browse files
committed
0.17.2
1 parent eb77270 commit 8170a11

File tree

5 files changed

+30
-11
lines changed

5 files changed

+30
-11
lines changed

buildspec.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@
4343
"uuids": {
4444
"windowsApp": "ad885c58-5ca9-44de-8f4f-1c12676626a9"
4545
},
46-
"version": "0.17.1",
46+
"version": "0.17.2",
4747
"website": "https://www.atkaudio.com"
4848
}

lib/atkaudio/src/atkaudio/DeviceIo/DeviceIoApp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class DeviceIoApp final : public AudioAppComponent
4444
sampleRate = newSampleRate;
4545

4646
toObsBuffer.clearPrepared();
47+
fromObsBuffer.clearPrepared();
4748
}
4849

4950
// processBlock

lib/atkaudio/src/atkaudio/FifoBuffer2.h

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,12 @@ class SyncBuffer : public juce::Timer
241241

242242
isPrepared.store(false, std::memory_order_release);
243243

244-
if (readerNumChannels < 1 || writerNumChannels < 1 || readerBufferSize < 1 || writerBufferSize < 1
245-
|| readerSampleRate <= 0.0 || writerSampleRate <= 0.0)
244+
if ((readerNumChannels < 1)
245+
|| (writerNumChannels < 1)
246+
|| (readerBufferSize < 1)
247+
|| (writerBufferSize < 1)
248+
|| (readerSampleRate <= 0.0)
249+
|| (writerSampleRate <= 0.0))
246250
{
247251
return;
248252
}
@@ -267,6 +271,7 @@ class SyncBuffer : public juce::Timer
267271
rateSmoothing.setCurrentAndTargetValue(1.0);
268272

269273
tempBuffer.clear();
274+
fifoBuffer.getFifo().reset();
270275
fifoBuffer.write(tempBuffer.getArrayOfWritePointers(), numChannels, minBufferSize);
271276

272277
isPrepared.store(true, std::memory_order_release);
@@ -340,15 +345,22 @@ class SyncBuffer : public juce::Timer
340345
std::memset(dest[ch], 0, sizeof(float) * numSamples);
341346

342347
tempBuffer.clear();
343-
tempBuffer.setSize(numChannels, writerSamplesNeeded, false, false, true);
348+
349+
tempBuffer.setSize(writerNumChannels, writerSamplesNeeded, false, false, true);
344350
auto writerSamples =
345-
fifoBuffer.read(tempBuffer.getArrayOfWritePointers(), numChannels, writerSamplesNeeded, false);
351+
fifoBuffer.read(tempBuffer.getArrayOfWritePointers(), writerNumChannels, writerSamplesNeeded, false);
346352

347353
if (writerSamples < writerSamplesNeeded)
348354
{
349355
#ifdef JUCE_DEBUG
350356
DBG(juce::Time::getCurrentTime().toString(true, true)
351-
<< " got " << writerSamples << " needed " << writerSamplesNeeded << " ratio " << ratio << " factor "
357+
<< " got "
358+
<< writerSamples
359+
<< " needed "
360+
<< writerSamplesNeeded
361+
<< " ratio "
362+
<< ratio
363+
<< " factor "
352364
<< factor);
353365
#endif
354366
return false;
@@ -361,7 +373,7 @@ class SyncBuffer : public juce::Timer
361373
auto totalSamplesConsumed = 0;
362374

363375
auto finalRatio = 0.0;
364-
for (int i = 0; i < numChannels; i++)
376+
for (int i = 0; i < writerNumChannels; i++)
365377
{
366378
totalSamplesConsumed = 0;
367379
int samplesAvailable = writerSamples;
@@ -371,6 +383,8 @@ class SyncBuffer : public juce::Timer
371383
rateSmoothing.setCurrentAndTargetValue(initialRate);
372384
rateSmoothing.setTargetValue(factor);
373385

386+
auto outputGain =
387+
1.0f * numChannels / writerNumChannels < 1.0f ? 1.0f * numChannels / writerNumChannels : 1.0f;
374388
for (int j = 0; j < numSamples; ++j)
375389
{
376390
auto smoothingValue = rateSmoothing.getNextValue();
@@ -383,7 +397,7 @@ class SyncBuffer : public juce::Timer
383397
1,
384398
samplesAvailable,
385399
0,
386-
1.0f
400+
outputGain
387401
);
388402
samplesAvailable -= samplesConsumed;
389403
totalSamplesConsumed += samplesConsumed;
@@ -393,8 +407,10 @@ class SyncBuffer : public juce::Timer
393407
#ifdef JUCE_DEBUG
394408
if (!juce::approximatelyEqual(finalRatio, prevFinalRatio)
395409
&& juce::approximatelyEqual(finalRatio, (double)(writerSampleRate / readerSampleRate)))
396-
DBG("time: " << juce::Time::getCurrentTime().toString(true, true)
397-
<< juce::String(" final ratio ") + juce::String(finalRatio));
410+
DBG("time: "
411+
<< juce::Time::getCurrentTime().toString(true, true)
412+
<< juce::String(" final ratio ")
413+
+ juce::String(finalRatio));
398414
#endif
399415
prevFinalRatio = finalRatio;
400416
fifoBuffer.advanceRead(totalSamplesConsumed);

lib/atkaudio/src/atkaudio/PluginHost/StandaloneFilterWindow.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ class StandalonePluginHolder2
354354
processor = createPluginFilterOfType(AudioProcessor::wrapperType_Standalone);
355355
// processor->disableNonMainBuses();
356356

357-
processor->setRateAndBufferSizeDetails(48000, 1024);
357+
processor->setRateAndBufferSizeDetails(48000, MAX_OBS_AUDIO_BUFFER_SIZE);
358358

359359
processorHasPotentialFeedbackLoop = (getNumInputChannels() > 0 && getNumOutputChannels() > 0);
360360
}

lib/atkaudio/src/atkaudio/atkaudio.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
#include <juce_audio_utils/juce_audio_utils.h>
44

5+
#define MAX_OBS_AUDIO_BUFFER_SIZE 1024
6+
57
namespace atk
68
{
79
extern "C"

0 commit comments

Comments
 (0)