Browse Source

Use Juce CriticalSection for main audio processor too. Use tryEnter for changing main volume parameter. Looks like it's best to do the tryEnter stuff for everything possible...

tags/v100_p5
xenakios 7 years ago
parent
commit
5a17f43763
3 changed files with 12 additions and 9 deletions
  1. +6
    -3
      Source/PS_Source/StretchSource.cpp
  2. +5
    -5
      Source/PluginProcessor.cpp
  3. +1
    -1
      Source/PluginProcessor.h

+ 6
- 3
Source/PS_Source/StretchSource.cpp View File

@@ -134,9 +134,12 @@ void StretchAudioSource::setMainVolume(double decibels)
{
if (decibels == m_main_volume)
return;
ScopedLock locker(m_cs);
m_main_volume = jlimit(-144.0, 12.0, decibels);
++m_param_change_count;
if (m_cs.tryEnter())
{
m_main_volume = jlimit(-144.0, 12.0, decibels);
++m_param_change_count;
m_cs.exit();
}
}

void StretchAudioSource::setLoopXFadeLength(double lenseconds)


+ 5
- 5
Source/PluginProcessor.cpp View File

@@ -226,7 +226,7 @@ void PaulstretchpluginAudioProcessor::startplay(Range<double> playrange, int num

void PaulstretchpluginAudioProcessor::prepareToPlay(double sampleRate, int samplesPerBlock)
{
std::lock_guard<std::mutex> locker(m_mutex);
ScopedLock locker(m_cs);
if (getNumOutputChannels() != m_cur_num_out_chans)
m_ready_to_play = false;
if (m_using_memory_buffer == true)
@@ -301,7 +301,7 @@ void copyAudioBufferWrappingPosition(const AudioBuffer<float>& src, AudioBuffer<

void PaulstretchpluginAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages)
{
std::lock_guard<std::mutex> locker(m_mutex);
ScopedLock locker(m_cs);
ScopedNoDenormals noDenormals;
const int totalNumInputChannels = getTotalNumInputChannels();
const int totalNumOutputChannels = getTotalNumOutputChannels();
@@ -394,7 +394,7 @@ void PaulstretchpluginAudioProcessor::setStateInformation (const void* data, int
if (tree.isValid())
{
{
std::lock_guard<std::mutex> locker(m_mutex);
ScopedLock locker(m_cs);
for (int i = 0; i < getNumParameters(); ++i)
{
auto par = getFloatParameter(i);
@@ -416,7 +416,7 @@ void PaulstretchpluginAudioProcessor::setStateInformation (const void* data, int

void PaulstretchpluginAudioProcessor::setRecordingEnabled(bool b)
{
std::lock_guard<std::mutex> locker(m_mutex);
ScopedLock locker(m_cs);
int lenbufframes = getSampleRate()*m_max_reclen;
if (b == true)
{
@@ -462,7 +462,7 @@ String PaulstretchpluginAudioProcessor::setAudioFile(File f)
//MessageManager::callAsync([cb, file]() { cb("Too high bit depth in file " + file.getFullPathName()); });
return "Too high bit depth in file " + f.getFullPathName();
}
std::lock_guard<std::mutex> locker(m_mutex);
ScopedLock locker(m_cs);
m_stretch_source->setAudioFile(f);
m_current_file = f;
m_using_memory_buffer = false;


+ 1
- 1
Source/PluginProcessor.h View File

@@ -104,7 +104,7 @@ private:
void finishRecording(int lenrecorded);
bool m_using_memory_buffer = true;
int m_cur_num_out_chans = 2;
std::mutex m_mutex;
CriticalSection m_cs;
File m_current_file;



Loading…
Cancel
Save