Skip to content
Snippets Groups Projects
Commit 01956272 authored by jsiegle's avatar jsiegle
Browse files

Implemented ParameterEditor deactivation during acquisition

parent 5cd08af6
No related branches found
No related tags found
No related merge requests found
......@@ -216,6 +216,8 @@ void GenericEditor::setEnabledState(bool t)
void GenericEditor::startAcquisition()
{
std::cout << "GenericEditor received message to start acquisition." << std::endl;
channelSelector->startAcquisition();
for (int n = 0; n < parameterEditors.size(); n++)
......
......@@ -28,7 +28,6 @@ ParameterEditor::ParameterEditor(GenericProcessor* proc, Parameter& p, Font labe
activationState = true;
processor = proc;
shouldDeactivateDuringAcquisition = p.shouldDeactivateDuringAcquisition;
......@@ -42,7 +41,7 @@ ParameterEditor::ParameterEditor(GenericProcessor* proc, Parameter& p, Font labe
addAndMakeVisible(pc);
pc->setBounds(0,0,12, 12);
pc->setName(String(p.getID()));
buttonArray.add(pc);
checkboxArray.add(pc);
//buttonIdArray.add(p.getID());
pc->addListener(this);
......@@ -158,24 +157,62 @@ void ParameterEditor::parentHierarchyChanged()
}
void ParameterEditor::setEnabled(bool state)
{
std::cout << "Changing editor state!" << std::endl;
if (shouldDeactivateDuringAcquisition)
{
for (int i = 0; i < sliderArray.size(); i++)
{
sliderArray[i]->isEnabled = state;
sliderArray[i]->setInterceptsMouseClicks(state, state);
sliderArray[i]->repaint();
}
for (int i = 0; i < buttonArray.size(); i++)
{
buttonArray[i]->isEnabled = state;
buttonArray[i]->setInterceptsMouseClicks(state, state);
buttonArray[i]->repaint();
}
for (int i = 0; i < checkboxArray.size(); i++)
{
checkboxArray[i]->isEnabled = state;
checkboxArray[i]->setInterceptsMouseClicks(state, state);
checkboxArray[i]->repaint();
}
}
}
void ParameterEditor::buttonClicked(Button* button)
{
std::cout << "Button name: " << button->getName() << std::endl;
std::cout << "Button value: " << button->getButtonText() << std::endl;
Array<int> a = channelSelector->getActiveChannels();
ParameterButton* b = (ParameterButton*) button;
if (b->isEnabled)
{
for (int i = 0; i < a.size(); i++)
Array<int> a = channelSelector->getActiveChannels();
{
//std::cout << a[i] << " ";
processor->setCurrentChannel(a[i]);
processor->setParameter(button->getName().getIntValue(),
button->getButtonText().getFloatValue());
//processor->
for (int i = 0; i < a.size(); i++)
{
//std::cout << a[i] << " ";
processor->setCurrentChannel(a[i]);
processor->setParameter(button->getName().getIntValue(),
button->getButtonText().getFloatValue());
//processor->
}
//std::cout << std::endl;
}
//std::cout << std::endl;
}
//processor->sliderValueChanged(slider);
}
......@@ -186,18 +223,23 @@ void ParameterEditor::sliderValueChanged(Slider* slider)
//std::cout << "Slider name: " << slider->getName() << std::endl;
//std::cout << "Slider value: " << slider->getValue() << std::endl;
Array<int> a = channelSelector->getActiveChannels();
ParameterSlider* s = (ParameterSlider*) slider;
if (s->isEnabled)
{
for (int i = 0; i < a.size(); i++)
Array<int> a = channelSelector->getActiveChannels();
{
//std::cout << a[i] << " ";
processor->setCurrentChannel(a[i]);
processor->setParameter(slider->getName().getIntValue(),
slider->getValue());
//processor->
for (int i = 0; i < a.size(); i++)
{
//std::cout << a[i] << " ";
processor->setCurrentChannel(a[i]);
processor->setParameter(slider->getName().getIntValue(),
slider->getValue());
//processor->
}
//std::cout << std::endl;
}
//std::cout << std::endl;
}
}
......@@ -207,7 +249,7 @@ void ParameterEditor::sliderValueChanged(Slider* slider)
ParameterButton::ParameterButton(var value, int buttonType, Font labelFont) :
Button("parameter"), type(buttonType), valueString(value.toString()),
font(labelFont)
font(labelFont), isEnabled(true)
{
setButtonText(valueString);
......@@ -227,7 +269,9 @@ ParameterButton::ParameterButton(var value, int buttonType, Font labelFont) :
neutralOverGrad = ColourGradient(Colour(180,180,180),0.0,5.0f,
Colour(150,150,150),0.0, 0.0,
false);
deactivatedGrad = ColourGradient(Colour(120, 120, 120), 0.0, 5.0f,
Colour(100, 100, 100), 0.0, 0.0,
false);
}
......@@ -249,6 +293,11 @@ void ParameterButton::paintButton(Graphics& g, bool isMouseOver, bool isButtonDo
g.setGradientFill(neutralGrad);
}
if (!isEnabled)
{
g.setGradientFill(deactivatedGrad);
}
AffineTransform a = AffineTransform::scale(0.98f, 0.94f, float(getWidth())/2.0f,
float(getHeight())/2.0f);
g.fillPath(outlinePath, a);
......@@ -308,7 +357,7 @@ void ParameterButton::resized()
// ==== PARAMETER CHECKBOX =======================
ParameterCheckbox::ParameterCheckbox(bool defaultState) : Button("name")
ParameterCheckbox::ParameterCheckbox(bool defaultState) : Button("name"), isEnabled(true)
{
setToggleState(defaultState, false);
setClickingTogglesState(true);
......@@ -325,6 +374,9 @@ ParameterCheckbox::ParameterCheckbox(bool defaultState) : Button("name")
neutralOverGrad = ColourGradient(Colour(180,180,180),0.0,5.0f,
Colour(150,150,150),0.0, 0.0,
true);
deactivatedGrad = ColourGradient(Colour(120, 120, 120), 0.0, 5.0f,
Colour(100, 100, 100), 0.0, 0.0,
false);
}
void ParameterCheckbox::paintButton(Graphics& g, bool isMouseOver, bool isButtonDown)
......@@ -346,6 +398,11 @@ void ParameterCheckbox::paintButton(Graphics& g, bool isMouseOver, bool isButton
g.setGradientFill(neutralGrad);
}
if (!isEnabled)
{
g.setGradientFill(deactivatedGrad);
}
AffineTransform a = AffineTransform::scale(0.98f, 0.94f, float(getWidth())/2.0f,
float(getHeight())/2.0f);
......@@ -356,7 +413,7 @@ void ParameterCheckbox::paintButton(Graphics& g, bool isMouseOver, bool isButton
// ========== PARAMETER SLIDER ====================
ParameterSlider::ParameterSlider(float min, float max,
float def, Font labelFont) : Slider("name"), font(labelFont)
float def, Font labelFont) : Slider("name"), font(labelFont), isEnabled(true)
{
setSliderStyle(Slider::Rotary);
......@@ -385,10 +442,10 @@ void ParameterSlider::paint(Graphics& g)
p = makeRotaryPath(getMinimum(), getMaximum(), getValue());
//if (activationState)
if (isEnabled)
g.setColour(Colour(240,179,12));
//else
// g.setColour(Colour(75,75,75));
else
g.setColour(Colour(75,75,75));
g.fillPath(p);
......
......@@ -33,6 +33,10 @@
#include "../Parameter.h"
#include <stdio.h>
class ParameterButton;
class ParameterSlider;
class ParameterCheckbox;
/**
Automatically creates an interactive editor for a particular
......@@ -65,21 +69,19 @@ public:
channelSelector = ch;
}
void setEnabled(bool t) {activationState = t;}
bool shouldDeactivateDuringAcquisition;
bool activationState;
// for inactivation during acquisition:
void setEnabled(bool t);
bool shouldDeactivateDuringAcquisition;
bool activationState;
private:
Array<Slider*> sliderArray;
Array<Button*> buttonArray;
Array<ParameterSlider*> sliderArray;
Array<ParameterButton*> buttonArray;
Array<ParameterCheckbox*> checkboxArray;
Array<int> buttonIdArray;
Array<int> sliderIdArray;
Array<int> checkboxIdArray;
GenericProcessor* processor;
ChannelSelector* channelSelector;
......@@ -99,6 +101,7 @@ public:
ParameterButton(var value, int buttonType, Font labelFont);
~ParameterButton() {}
bool isEnabled;
private:
void paintButton(Graphics& g, bool isMouseOver, bool isButtonDown);
......@@ -117,6 +120,7 @@ private:
ColourGradient selectedOverGrad;
ColourGradient neutralGrad;
ColourGradient neutralOverGrad;
ColourGradient deactivatedGrad;
enum {
LEFT,
......@@ -133,6 +137,8 @@ public:
ParameterCheckbox(bool defaultState);
~ParameterCheckbox() {}
bool isEnabled;
private:
void paintButton(Graphics& g, bool isMouseOver, bool isButtonDown);
......@@ -140,6 +146,7 @@ private:
ColourGradient selectedOverGrad;
ColourGradient neutralGrad;
ColourGradient neutralOverGrad;
ColourGradient deactivatedGrad;
};
class ParameterSlider : public Slider
......@@ -149,6 +156,8 @@ public:
ParameterSlider(float min, float max, float defaultValue, Font f);
~ParameterSlider() {}
bool isEnabled;
private:
void paint(Graphics& g);//Button(Graphics& g, bool isMouseOver, bool isButtonDown);
......
......@@ -69,7 +69,7 @@ Parameter::Parameter(const String& name_, Array<var> a, int defaultVal, int ID,
void Parameter::setValue(float val, int chan)
{
std::cout << "Setting value of " << chan << " to " << val << std::endl;
// std::cout << "Setting value of " << chan << " to " << val << std::endl;
if (isBoolean())
{
......
......@@ -29,16 +29,13 @@
ResamplingNode::ResamplingNode()
: GenericProcessor("Resampler"),
ratio (1.0), targetSampleRate(20000.0f)
// destBufferPos(0),
/// destBufferSampleRate(44100.0), sourceBufferSampleRate(40000.0),
// destBuffer(0), tempBuffer(0)
{
filter = new Dsp::SmoothedFilterDesign
<Dsp::RBJ::Design::LowPass, 1> (1024);
parameters.add(Parameter("Hz",500.0f, 44100.0f, targetSampleRate, 1, false));
parameters.add(Parameter("Hz",500.0f, 44100.0f, targetSampleRate, 0, true));
tempBuffer = new AudioSampleBuffer(16, TEMP_BUFFER_WIDTH);
......@@ -61,7 +58,7 @@ AudioProcessorEditor* ResamplingNode::createEditor()
void ResamplingNode::setParameter (int parameterIndex, float newValue)
{
if (parameterIndex == 1)
if (parameterIndex == 0)
{
Parameter& p = parameters.getReference(parameterIndex);
p.setValue(newValue, 0);
......@@ -78,6 +75,8 @@ void ResamplingNode::setParameter (int parameterIndex, float newValue)
}
updateFilter();
//std::cout << "Got parameter update." << std::endl;
}
//std::cout << float(p[0]) << std::endl;
......@@ -102,7 +101,8 @@ void ResamplingNode::updateSettings()
sourceBufferSampleRate = settings.sampleRate;
settings.sampleRate = targetSampleRate;
tempBuffer->setSize(getNumInputs(), TEMP_BUFFER_WIDTH);
if (getNumInputs() > 0)
tempBuffer->setSize(getNumInputs(), TEMP_BUFFER_WIDTH);
ratio = sourceBufferSampleRate / targetSampleRate;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment