summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2018-03-07 21:54:47 +1100
committerDamien Zammit <damien@zamaudio.com>2018-03-07 21:54:47 +1100
commit11aa0c2e99cac3556685fef7989aec28cff1e8c4 (patch)
treef3c04ad68fed2e6c4e033fffc491a0cb796b134e
parent9dbe977465ef6baa0dbadaf979d181df2fc7d11f (diff)
ZamGrains: Tweak UI to display granularity
-rw-r--r--plugins/ZamGrains/ZamGrainsPlugin.cpp27
-rw-r--r--plugins/ZamGrains/ZamGrainsPlugin.hpp5
-rw-r--r--plugins/ZamGrains/ZamGrainsUI.cpp16
-rw-r--r--plugins/ZamGrains/ZamGrainsUI.hpp2
4 files changed, 40 insertions, 10 deletions
diff --git a/plugins/ZamGrains/ZamGrainsPlugin.cpp b/plugins/ZamGrains/ZamGrainsPlugin.cpp
index da41328..73b2e3f 100644
--- a/plugins/ZamGrains/ZamGrainsPlugin.cpp
+++ b/plugins/ZamGrains/ZamGrainsPlugin.cpp
@@ -98,6 +98,15 @@ void ZamGrainsPlugin::initParameter(uint32_t index, Parameter& parameter)
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1.0f;
break;
+ case paramFinalpos:
+ parameter.hints = kParameterIsOutput;
+ parameter.name = "Final Position";
+ parameter.symbol = "finalpos";
+ parameter.unit = " ";
+ parameter.ranges.def = 0.0f;
+ parameter.ranges.min = 0.0f;
+ parameter.ranges.max = 1.0f;
+ break;
}
}
@@ -122,6 +131,7 @@ void ZamGrainsPlugin::loadProgram(uint32_t index)
gain = 0.f;
grainpos = 0.f;
playpos = 0.f;
+ finalpos = 0.f;
break;
}
@@ -156,6 +166,9 @@ float ZamGrainsPlugin::getParameterValue(uint32_t index) const
case paramPlaypos:
return playpos;
break;
+ case paramFinalpos:
+ return finalpos;
+ break;
default:
return 0.0f;
}
@@ -180,6 +193,15 @@ void ZamGrainsPlugin::setParameterValue(uint32_t index, float value)
case paramGain:
gain = value;
break;
+ case paramGrainpos:
+ grainpos = value;
+ break;
+ case paramPlaypos:
+ playpos = value;
+ break;
+ case paramFinalpos:
+ finalpos = value;
+ break;
}
}
@@ -193,7 +215,6 @@ void ZamGrainsPlugin::activate()
z[i] = 0.f;
}
posz = 0;
- posrate = 0;
posphasor = 0;
currgrains = 0;
samphold = 0;
@@ -204,6 +225,7 @@ void ZamGrainsPlugin::activate()
zidx2old = 0;
grainpos = 0;
playpos = 0;
+ finalpos = 0;
}
float ZamGrainsPlugin::sample_and_hold(int ctrl, float input, int *state) {
@@ -269,7 +291,8 @@ void ZamGrainsPlugin::run(const float** inputs, float** outputs, uint32_t frames
sampz * hanning(posphasor, windowsize) +
sampz2 * hanning(outofphase, windowsize)
);
- grainpos = (float)zidx * 1000. / (srate * delaytime);
+ finalpos = (float)zidx * 1000. / (srate * delaytime);
+ grainpos = (float)posphasor * 1000. / (srate * delaytime);
playpos = (float)posz * 1000. / (srate * delaytime);
zidxold = zidx;
zidx2old = zidx2;
diff --git a/plugins/ZamGrains/ZamGrainsPlugin.hpp b/plugins/ZamGrains/ZamGrainsPlugin.hpp
index a47fcc2..b1ebcd6 100644
--- a/plugins/ZamGrains/ZamGrainsPlugin.hpp
+++ b/plugins/ZamGrains/ZamGrainsPlugin.hpp
@@ -37,6 +37,7 @@ public:
paramDelaytime,
paramGrainpos,
paramPlaypos,
+ paramFinalpos,
paramCount
};
@@ -123,11 +124,11 @@ protected:
private:
int currgrains, zidx, zidx2, zidxold, zidx2old, samphold, samphold2;
- float grains, grainspeed, playspeed, delaytime, gain, delaytimeout, playpos, grainpos;
+ float grains, grainspeed, playspeed, delaytime, gain, delaytimeout, playpos, grainpos, finalpos;
float delaytimeold;
float z[MAX_DELAY];
unsigned int posz;
- unsigned int posphasor, posrate;
+ unsigned int posphasor;
};
// -----------------------------------------------------------------------
diff --git a/plugins/ZamGrains/ZamGrainsUI.cpp b/plugins/ZamGrains/ZamGrainsUI.cpp
index 13de644..2c46f2c 100644
--- a/plugins/ZamGrains/ZamGrainsUI.cpp
+++ b/plugins/ZamGrains/ZamGrainsUI.cpp
@@ -115,10 +115,12 @@ void ZamGrainsUI::parameterChanged(uint32_t index, float value)
break;
case ZamGrainsPlugin::paramGrainpos:
grainpos = value;
- repaint();
break;
case ZamGrainsPlugin::paramPlaypos:
playpos = value;
+ break;
+ case ZamGrainsPlugin::paramFinalpos:
+ finalpos = value;
repaint();
break;
}
@@ -135,6 +137,7 @@ void ZamGrainsUI::programLoaded(uint32_t index)
fKnobLooptime->setValue(1000.0f);
grainpos = 0.f;
playpos = 0.f;
+ finalpos = 0.f;
break;
}
}
@@ -163,6 +166,7 @@ void ZamGrainsUI::onDisplay()
int grainx = 0;
int grains = (int)fKnobGrains->getValue();
float playspeed = fKnobPlayspeed->getValue();
+ float grainspeed = fKnobGrainspeed->getValue();
int width = 345;
int height = 140;
int offsetx = 5;
@@ -190,12 +194,14 @@ void ZamGrainsUI::onDisplay()
// reset color
glBegin(GL_POINTS);
- glColor4f(1.0f, 0.235f, 0.235f, 1.0f);
- glVertex2i(offsetx + ((int)(width * playpos * playspeed) % width), offsety + 5 + height / 3);
glColor4f(0.235f, 0.235f, 1.0f, 1.0f);
- glVertex2i(offsetx + width * playpos, offsety + 5 + height / 2);
+ glVertex2i(offsetx + width * playpos, offsety + 5);
+ glColor4f(1.0f, 0.235f, 0.235f, 1.0f);
+ glVertex2i(offsetx + ((int)(width * playpos * playspeed) % width), offsety + height / 3);
+ glColor4f(0.235f, 1.0f, 0.235f, 1.0f);
+ glVertex2i(offsetx + ((int)(width * grainpos * grainspeed) % width), offsety + 2 * height / 3);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
- glVertex2i(offsetx + width * grainpos, offsety + 5 + 2 * height / 3);
+ glVertex2i(offsetx + (int)width * finalpos, offsety + height - 5);
glEnd();
}
diff --git a/plugins/ZamGrains/ZamGrainsUI.hpp b/plugins/ZamGrains/ZamGrainsUI.hpp
index c0bbcd4..8f961e0 100644
--- a/plugins/ZamGrains/ZamGrainsUI.hpp
+++ b/plugins/ZamGrains/ZamGrainsUI.hpp
@@ -52,7 +52,7 @@ protected:
void onDisplay() override;
private:
- float playpos, grainpos;
+ float playpos, grainpos, finalpos;
Image fImgBackground;
ScopedPointer<ZamKnob> fKnobPlayspeed, fKnobGrainspeed, fKnobMaster, fKnobGrains, fKnobLooptime;
};