Skip to content

Commit e2f51a9

Browse files
committed
cleaned audio process code
1 parent b078fda commit e2f51a9

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

src/ofxVisualProgramming.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,9 @@ void ofxVisualProgramming::update(){
187187

188188
// update patch objects
189189
if(!bLoadingNewPatch && !patchObjects.empty()){
190+
191+
std::lock_guard<std::mutex> lck(vp_mutex);
192+
190193
// left to right computing order
191194
leftToRightIndexOrder.clear();
192195
for(map<int,shared_ptr<PatchObject>>::iterator it = patchObjects.begin(); it != patchObjects.end(); it++ ){
@@ -202,7 +205,9 @@ void ofxVisualProgramming::update(){
202205
pt[i].color = profiler.cpuGraph.colors[static_cast<unsigned int>(i%16)];
203206
pt[i].startTime = ofGetElapsedTimef();
204207
pt[i].name = patchObjects[leftToRightIndexOrder[i].second]->getName()+ofToString(patchObjects[leftToRightIndexOrder[i].second]->getId())+"_update";
208+
205209
patchObjects[leftToRightIndexOrder[i].second]->update(patchObjects,*engine);
210+
206211
pt[i].endTime = ofGetElapsedTimef();
207212

208213
// update scripts objects files map
@@ -546,33 +551,27 @@ void ofxVisualProgramming::keyReleased(ofKeyEventArgs &e){
546551
void ofxVisualProgramming::audioProcess(float *input, int bufferSize, int nChannels){
547552

548553
if(bLoadingNewPatch) return;
554+
if(bLoadingNewObject) return;
549555

550556
if(audioSampleRate != 0 && dspON){
551557

552-
if(!bLoadingNewObject){
553-
if(audioDevices[audioINDev].inputChannels > 0){
554-
inputBuffer.copyFrom(input, bufferSize, nChannels, audioSampleRate);
555-
556-
// compute audio input
557-
if(!bLoadingNewPatch){
558-
for(map<int,shared_ptr<PatchObject>>::iterator it = patchObjects.begin(); it != patchObjects.end(); it++ ){
559-
it->second->audioIn(inputBuffer);
560-
}
561-
}
558+
std::lock_guard<std::mutex> lck(vp_mutex);
562559

560+
if(audioDevices[audioINDev].inputChannels > 0){
561+
inputBuffer.copyFrom(input, bufferSize, nChannels, audioSampleRate);
563562

564-
unique_lock<std::mutex> lock(inputAudioMutex);
565-
lastInputBuffer = inputBuffer;
566-
}
567-
if(audioDevices[audioOUTDev].outputChannels > 0){
568-
// compute audio output
569-
if(!bLoadingNewPatch){
570-
for(map<int,shared_ptr<PatchObject>>::iterator it = patchObjects.begin(); it != patchObjects.end(); it++ ){
571-
it->second->audioOut(emptyBuffer);
572-
}
573-
}
563+
// compute audio input
564+
for(map<int,shared_ptr<PatchObject>>::iterator it = patchObjects.begin(); it != patchObjects.end(); it++ ){
565+
it->second->audioIn(inputBuffer);
574566
}
575567

568+
lastInputBuffer = inputBuffer;
569+
}
570+
if(audioDevices[audioOUTDev].outputChannels > 0){
571+
// compute audio output
572+
for(map<int,shared_ptr<PatchObject>>::iterator it = patchObjects.begin(); it != patchObjects.end(); it++ ){
573+
it->second->audioOut(emptyBuffer);
574+
}
576575
}
577576

578577
}

src/ofxVisualProgramming.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@ class ofxVisualProgramming : public pdsp::Wrapper {
188188
vector<int> audioDevicesID_IN;
189189
vector<int> audioDevicesID_OUT;
190190
ofSoundStream soundStreamIN;
191-
std::mutex inputAudioMutex;
192191
ofSoundBuffer lastInputBuffer;
193192
ofPolyline inputBufferWaveform;
194193
int audioINDev;
@@ -206,4 +205,7 @@ class ofxVisualProgramming : public pdsp::Wrapper {
206205

207206
private:
208207
void audioProcess(float *input, int bufferSize, int nChannels);
208+
209+
mutable ofMutex vp_mutex;
210+
209211
};

0 commit comments

Comments
 (0)