From 11aa0c2e99cac3556685fef7989aec28cff1e8c4 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Wed, 7 Mar 2018 21:54:47 +1100 Subject: ZamGrains: Tweak UI to display granularity --- plugins/ZamGrains/ZamGrainsPlugin.cpp | 27 +++++++++++++++++++++++++-- plugins/ZamGrains/ZamGrainsPlugin.hpp | 5 +++-- plugins/ZamGrains/ZamGrainsUI.cpp | 16 +++++++++++----- plugins/ZamGrains/ZamGrainsUI.hpp | 2 +- 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 fKnobPlayspeed, fKnobGrainspeed, fKnobMaster, fKnobGrains, fKnobLooptime; }; -- cgit v1.2.3