From c1bb155817b9c477e84c97b23c3c3e1608e5647f Mon Sep 17 00:00:00 2001 From: jsiegle <jsiegle@mit.edu> Date: Sun, 11 Mar 2012 14:49:08 -0400 Subject: [PATCH] Fixed minor signal chain bugs --- Source/Processors/Editors/GenericEditor.cpp | 15 +++-- Source/Processors/Editors/GenericEditor.h | 1 + .../Processors/Editors/LfpDisplayEditor.cpp | 12 ++-- Source/Processors/Editors/LfpDisplayEditor.h | 8 +-- Source/Processors/GenericProcessor.cpp | 3 + Source/Processors/SignalGenerator.cpp | 2 +- Source/Processors/Utilities/Merger.cpp | 3 + Source/Processors/Utilities/Splitter.cpp | 3 + .../Visualization/LfpDisplayCanvas.cpp | 16 ++--- .../Visualization/LfpDisplayCanvas.h | 3 +- Source/UI/EditorViewport.cpp | 2 +- Source/UI/SignalChainManager.cpp | 58 ++----------------- 12 files changed, 38 insertions(+), 88 deletions(-) diff --git a/Source/Processors/Editors/GenericEditor.cpp b/Source/Processors/Editors/GenericEditor.cpp index 1bca25cca..a9c2a9e85 100644 --- a/Source/Processors/Editors/GenericEditor.cpp +++ b/Source/Processors/Editors/GenericEditor.cpp @@ -413,10 +413,12 @@ bool GenericEditor::checkChannelSelectors(Button* button) void GenericEditor::update() { - std::cout << "Updating" << std::endl; + std::cout << "Editor for "; GenericProcessor* p = (GenericProcessor*) getProcessor(); + std::cout << p->getName() << " updating settings." << std::endl; + if (!p->isSink()) { @@ -437,6 +439,9 @@ void GenericEditor::update() numChannels = p->getNumInputs(); } + updateVisualizer(); // does nothing unless this method + // has been implemented + } Array<int> GenericEditor::getActiveChannels() @@ -488,12 +493,10 @@ void GenericEditor::createRadioButtons(int x, int y, int w, StringArray values, int GenericEditor::createChannelSelectors() { - GenericProcessor* p = (GenericProcessor*) getProcessor(); - + GenericProcessor* p = getProcessor(); if (channelSelectorButtons.size() == 0) { - int width = 20; int height = 14; int numChannels; @@ -503,7 +506,9 @@ int GenericEditor::createChannelSelectors() else numChannels = p->getNumInputs(); - int nColumns = ceil(numChannels/4); + int nColumns = jmax((int) ceil(numChannels/4),1); + //std::cout << numChannels << " channels" << std::endl; + //std::cout << nColumns << " columns" << std::endl; for (int n = 1; n < numChannels+1; n++) { diff --git a/Source/Processors/Editors/GenericEditor.h b/Source/Processors/Editors/GenericEditor.h index 301e22f2c..0184c5c42 100644 --- a/Source/Processors/Editors/GenericEditor.h +++ b/Source/Processors/Editors/GenericEditor.h @@ -100,6 +100,7 @@ public: bool checkChannelSelectors(Button* button); virtual void update(); + virtual void updateVisualizer() {} Array<int> getActiveChannels(); diff --git a/Source/Processors/Editors/LfpDisplayEditor.cpp b/Source/Processors/Editors/LfpDisplayEditor.cpp index afb8b23be..1d818d1c4 100644 --- a/Source/Processors/Editors/LfpDisplayEditor.cpp +++ b/Source/Processors/Editors/LfpDisplayEditor.cpp @@ -150,19 +150,15 @@ void LfpDisplayEditor::disable() isPlaying = false; } -void LfpDisplayEditor::updateNumInputs(int n) +void LfpDisplayEditor::updateVisualizer() { - std::cout << "Setting num inputs on LfpDisplayEditor to " << n << std::endl; - if (canvas != 0) - canvas->updateNumInputs(n); -} -void LfpDisplayEditor::updateSampleRate(float r) -{ if (canvas != 0) - canvas->updateSampleRate(r); + canvas->update(); + } + void LfpDisplayEditor::setBuffers(AudioSampleBuffer* asb, MidiBuffer* mb) { std::cout << "LfpDisplayEditor buffers are set!" << std::endl; diff --git a/Source/Processors/Editors/LfpDisplayEditor.h b/Source/Processors/Editors/LfpDisplayEditor.h index 255812705..935316a5e 100644 --- a/Source/Processors/Editors/LfpDisplayEditor.h +++ b/Source/Processors/Editors/LfpDisplayEditor.h @@ -61,8 +61,7 @@ public: void enable(); void disable(); - void updateNumInputs(int); - void updateSampleRate(float); + void updateVisualizer(); private: @@ -78,11 +77,6 @@ private: ScopedPointer <LfpDisplayCanvas> canvas; - //AudioSampleBuffer* streamBuffer; - //MidiBuffer* eventBuffer; - //UIComponent* UI; - //DataViewport* dataViewport; - int tabIndex; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LfpDisplayEditor); diff --git a/Source/Processors/GenericProcessor.cpp b/Source/Processors/GenericProcessor.cpp index 5f658a44f..2ffebde26 100644 --- a/Source/Processors/GenericProcessor.cpp +++ b/Source/Processors/GenericProcessor.cpp @@ -248,12 +248,15 @@ void GenericProcessor::clearSettings() void GenericProcessor::update() { + std::cout << getName() << " updating settings." << std::endl; + clearSettings(); if (sourceNode != 0) { // everything is inherited except numOutputs settings = sourceNode->settings; + settings.numInputs = settings.numOutputs; settings.numOutputs = settings.numInputs; } else { diff --git a/Source/Processors/SignalGenerator.cpp b/Source/Processors/SignalGenerator.cpp index 20aa46afc..32b019c88 100644 --- a/Source/Processors/SignalGenerator.cpp +++ b/Source/Processors/SignalGenerator.cpp @@ -51,7 +51,7 @@ AudioProcessorEditor* SignalGenerator::createEditor( ) void SignalGenerator::updateSettings() { - std::cout << "Signal generator updating parameters" << std::endl; + //std::cout << "Signal generator updating parameters" << std::endl; frequencies.clear(); amplitudes.clear(); diff --git a/Source/Processors/Utilities/Merger.cpp b/Source/Processors/Utilities/Merger.cpp index 36947163e..fd6f69cc7 100644 --- a/Source/Processors/Utilities/Merger.cpp +++ b/Source/Processors/Utilities/Merger.cpp @@ -94,6 +94,9 @@ bool Merger::stillHasSource() void Merger::switchIO() { + + std::cout << "Merger switching source." << std::endl; + if (activePath == 0) { activePath = 1; sourceNode = sourceNodeB; diff --git a/Source/Processors/Utilities/Splitter.cpp b/Source/Processors/Utilities/Splitter.cpp index 7290be5f4..fed00295d 100644 --- a/Source/Processors/Utilities/Splitter.cpp +++ b/Source/Processors/Utilities/Splitter.cpp @@ -83,6 +83,9 @@ void Splitter::switchIO(int destNum) { void Splitter::switchIO() { + + std::cout << "Splitter switching source." << std::endl; + if (activePath == 0) { activePath = 1; destNode = destNodeB; diff --git a/Source/Processors/Visualization/LfpDisplayCanvas.cpp b/Source/Processors/Visualization/LfpDisplayCanvas.cpp index 868371bfe..2eed8c953 100644 --- a/Source/Processors/Visualization/LfpDisplayCanvas.cpp +++ b/Source/Processors/Visualization/LfpDisplayCanvas.cpp @@ -86,21 +86,17 @@ void LfpDisplayCanvas::endAnimation() stopCallbacks(); } -void LfpDisplayCanvas::updateNumInputs(int n) +void LfpDisplayCanvas::update() { - std::cout << "Setting num inputs on LfpDisplayCanvas to " << n << std::endl; - nChans = n; - if (n < 200 && n > 0) + nChans = processor->getNumInputs(); + sampleRate = processor->getSampleRate(); + + std::cout << "Setting num inputs on LfpDisplayCanvas to " << nChans << std::endl; + if (nChans < 200 && nChans > 0) screenBuffer->setSize(nChans, 10000); //sampleRate = processor->getSampleRate(); } -void LfpDisplayCanvas::updateSampleRate(float r) -{ - sampleRate = r; - //displayBufferSize = displayBuffer->getNumSamples(); - std::cout << "Display canvas updating sample rate to " << r << std::endl; -} void LfpDisplayCanvas::setParameter(int param, float val) { diff --git a/Source/Processors/Visualization/LfpDisplayCanvas.h b/Source/Processors/Visualization/LfpDisplayCanvas.h index f9350ee35..e831c2966 100644 --- a/Source/Processors/Visualization/LfpDisplayCanvas.h +++ b/Source/Processors/Visualization/LfpDisplayCanvas.h @@ -45,8 +45,7 @@ public: void refreshState(); - void updateNumInputs(int); - void updateSampleRate(float); + void update(); void setParameter(int, float); diff --git a/Source/UI/EditorViewport.cpp b/Source/UI/EditorViewport.cpp index 657fc69f5..3d6a52461 100644 --- a/Source/UI/EditorViewport.cpp +++ b/Source/UI/EditorViewport.cpp @@ -572,7 +572,7 @@ void EditorViewport::mouseExit(const MouseEvent &e) { void EditorViewport::checkScrollButtons(int topTab) { - if (editorArray.size() - topTab > 4) + if (signalChainArray.size() - topTab > 4) { downButton->setActive(true); } else { diff --git a/Source/UI/SignalChainManager.cpp b/Source/UI/SignalChainManager.cpp index 8885e20f1..cd1487433 100644 --- a/Source/UI/SignalChainManager.cpp +++ b/Source/UI/SignalChainManager.cpp @@ -244,12 +244,7 @@ void SignalChainManager::updateVisibleEditors(GenericEditor* activeEditor, GenericProcessor* source = 0; GenericProcessor* dest = (GenericProcessor*) editorArray[0]->getProcessor(); - if (!dest->isMerger()) - dest->setSourceNode(source); // set first source as 0 - else - dest->setMergerSourceNode(source); - - // std::cout << " " << dest->getName() << "::"; + dest->setSourceNode(source); for (int n = 1; n < editorArray.size(); n++) { @@ -257,23 +252,12 @@ void SignalChainManager::updateVisibleEditors(GenericEditor* activeEditor, dest = (GenericProcessor*) editorArray[n]->getProcessor(); source = (GenericProcessor*) editorArray[n-1]->getProcessor(); - if (!dest->isMerger()) - dest->setSourceNode(source); - else - dest->setMergerSourceNode(source); - - //std::cout << dest->getName() << "::"; + dest->setSourceNode(source); } - // if (!dest->isSplitter()) - dest->setDestNode(0); // set first source as 0 - // else - // dest->setSplitterDestNode(0); - // dest->setDestNode(0); // set last dest as 0 - - // std::cout << std::endl; - }// + dest->setDestNode(0); + } // Step 3: check for new tabs if (action != ACTIVATE) { @@ -284,8 +268,6 @@ void SignalChainManager::updateVisibleEditors(GenericEditor* activeEditor, { GenericProcessor* p = (GenericProcessor*) editorArray[n]->getProcessor(); - // std::cout << editorArray[n]->tabNumber() << std::endl; - if (p->getSourceNode() == 0)// && editorArray[n]->tabNumber() == -1) { @@ -316,26 +298,12 @@ void SignalChainManager::updateVisibleEditors(GenericEditor* activeEditor, } } - - - // Step 4: Refresh editors in editor array, based on active editor for (int n = 0; n < editorArray.size(); n++) { editorArray[n]->setVisible(false); } - // int activeChain; - - // for (int n = 0; n < signalChainArray.size(); n++) - // { - // if (signalChainArray[n]->getToggleState()) - // { - // activeChain = n; - // break; - // } - // } - editorArray.clear(); std::cout << "Cleared editor array." << std::endl; @@ -361,18 +329,6 @@ void SignalChainManager::updateVisibleEditors(GenericEditor* activeEditor, editorToAdd = 0; } - - // if (currentProcessor->isMerger()) - // { - // std::cout << "It's a merger!" << std::endl; - - //if (currentProcessor->getSource() == activeChain) - // editorToAdd->switchSource(0); - // else - // editorToAdd->switchSource(1); - - // } - } editorToAdd = activeEditor; @@ -397,8 +353,6 @@ void SignalChainManager::updateVisibleEditors(GenericEditor* activeEditor, if (dest->getSourceNode() != currentProcessor) editorToAdd->switchSource(); - // else - // editorToAdd->switchSource(1); } @@ -410,8 +364,6 @@ void SignalChainManager::updateVisibleEditors(GenericEditor* activeEditor, } - //std::cout << "OK1." << std::endl; - // Step 5: check the validity of the signal chain if (true) { bool enable = true; @@ -426,8 +378,6 @@ void SignalChainManager::updateVisibleEditors(GenericEditor* activeEditor, } else { - //bool sourceIsInChain = true; - for (int n = 0; n < editorArray.size()-1; n++) { GenericProcessor* source = (GenericProcessor*) editorArray[n]->getProcessor(); -- GitLab