diff --git a/Makefile b/Makefile index 92a7e52..051d16e 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,6 @@ include dpf/Makefile.base.mk -CFLAGS += -ggdb all: plugins gen plugins: diff --git a/plugin/DistrhoPluginInfo.h b/plugin/DistrhoPluginInfo.h index efc82d0..6370ea0 100644 --- a/plugin/DistrhoPluginInfo.h +++ b/plugin/DistrhoPluginInfo.h @@ -65,16 +65,7 @@ pChorus, - parameterCount, - - btn16, - btn8, - btn4, - btnPls, - btnSaw, - btnCh0, - btnCh1, - btnCh2 + parameterCount }; diff --git a/plugin/module.cpp b/plugin/module.cpp index 7b2a0a2..8bcca79 100644 --- a/plugin/module.cpp +++ b/plugin/module.cpp @@ -44,14 +44,12 @@ void Module::run(Voice* voice) { else lfo = (lfoPhase & 0x3fff) - 0x1fff; - pw = 0.5- ((0x2000 + lfo) * patchRam.pwmLfo) / (32768.0f*128); - - // printf("%5d\n", (lfo * lfoDepthTable[patchRam.vcoLfo])>>8); + pw = 0.5 - ((0x2000 + lfo) * patchRam.pwmLfo) / (32768.0f * 128); + pw = (patchRam.switch2 & 0x01) ? 0.5 - (patchRam.pwmLfo / 256.0f) : pw; int16_t vcf = (patchRam.vcfEnv << 7) * ((patchRam.switch2 & 0x02) ? -1 : 1); int16_t pitchBase = 0x1818; - pitchBase += (lfo * lfoDepthTable[patchRam.vcoLfo]) >> 9; for (uint32_t i = 0; i < NUM_VOICES; i++) { @@ -81,7 +79,7 @@ void Module::run(Voice* voice) { float p1 = pitchTable[semi], p2 = pitchTable[semi + 1]; int16_t px = ((p2 - p1) * frac + p1); - px <<= (patchRam.switch1 & 0x03); + px *= (patchRam.switch1 & 0x07); v->omega = px / 192000.0f; // fixme use proper scaler diff --git a/plugin/module.hpp b/plugin/module.hpp index 3d4bb7e..ae4eee2 100644 --- a/plugin/module.hpp +++ b/plugin/module.hpp @@ -49,7 +49,7 @@ class Module { uint8_t vcoLfo = 0x00; uint8_t pwmLfo = 0x60; uint8_t noise = 0x00; - uint8_t vcfFreq = 0x10;//1c; // 0x3f80 + uint8_t vcfFreq = 0x30;//1c; // 0x3f80 uint8_t vcfReso = 0x00; uint8_t vcfEnv = 0x40;//4e; uint8_t vcfLfo = 0; @@ -60,8 +60,8 @@ class Module { uint8_t env_s = 0x30; // 0x3f80 uint8_t env_r = 0x30; uint8_t sub = 0x40; - uint8_t switch1 = 0x1a; - uint8_t switch2 = 0x08; + uint8_t switch1 = 0x19; + uint8_t switch2 = 0x018; } patchRam; private: diff --git a/plugin/parameters.cpp b/plugin/parameters.cpp index 7e91ee8..84e9b4e 100644 --- a/plugin/parameters.cpp +++ b/plugin/parameters.cpp @@ -367,7 +367,7 @@ void Peacock::setParameterValue(uint32_t index, float value) { case pVCORange: // bits 0-2 of switch 1 // doesn't look great in Carla because of odd behaviour with small integer knobs m->patchRam.switch1 &= 0xf8; - m->patchRam.switch1 |= (1 << (int)(value - 1)); + m->patchRam.switch1 |= (1 << (int)(value)); break; case pSqr: // bit 3 of switch 1 m->patchRam.switch1 &= 0xf7; @@ -398,7 +398,6 @@ void Peacock::setParameterValue(uint32_t index, float value) { case pHPF: // bits 3-4 of switch 2 // doesn't look great in Carla because of odd behaviour with small integer knobs - printf("setPV %d %f\n", index, value); if (value > 3) value = 3; m->patchRam.switch2 &= 0xe7; m->patchRam.switch2 |= (3-(int)value )<< 3; diff --git a/plugin/peacock.cpp b/plugin/peacock.cpp index f97bced..174b0ca 100644 --- a/plugin/peacock.cpp +++ b/plugin/peacock.cpp @@ -66,29 +66,24 @@ void Peacock::run(const float**, float** outputs, uint32_t frames, const MidiEve // if there were any events that happen between now and the end of this block, process them lastEvent = 0; - //printf("in run(), %d samples left in block\n", blockLeft); runMidi(midiEvents, midiEventCount, blockLeft); while (framePos < frames) { if (blockLeft == 0) { // no more samples to calculate in this update period blockLeft = sampleRate / 238; // update rate in Hz - //printf("no more samples in block, resetting to %d at %d\n", blockLeft, framePos); runMidi(midiEvents, midiEventCount, framePos + blockLeft); - // FIXME run one IC29 loop m->run(voice); } // how many frames to do? Are we about to run off an update block sizeThisTime = (framesLeft < blockLeft) ? framesLeft : blockLeft; - //printf("running voices for %d at %d\n", sizeThisTime, framePos); // now run all the voices for this chunk of samples for (uint32_t i = 0; i < NUM_VOICES; i++) { voice[i].run(m, outputs[0] + framePos, sizeThisTime); } - //printf("\n"); framePos += sizeThisTime; framesLeft -= sizeThisTime; diff --git a/plugin/ui.cpp b/plugin/ui.cpp index eb61d6a..61f10d5 100644 --- a/plugin/ui.cpp +++ b/plugin/ui.cpp @@ -123,7 +123,7 @@ DistrhoUIPeacock::DistrhoUIPeacock() : UI(Art::backgroundWidth, Art::backgroundH xSliderRls->setCallback(this); xSwitchPWM = new ImageSlider(this, switchSlider); - prepSwitch(xSwitchPWM, pPWMDepth, 380, 103); + prepSwitch(xSwitchPWM, pPWMMode, 380, 103); xSwitchPWM->setCallback(this); xSwitchEnv = new ImageSlider(this, switchSlider); @@ -178,7 +178,7 @@ DistrhoUIPeacock::DistrhoUIPeacock() : UI(Art::backgroundWidth, Art::backgroundH xBtnCh2->setAbsolutePos(644, 293); xBtnCh2->setId(btnCh2); xBtnCh2->setCallback(this); - // programLoaded(0); + // programLoaded(0); } DistrhoUIPeacock::~DistrhoUIPeacock() { @@ -190,9 +190,9 @@ void DistrhoUIPeacock::programLoaded(uint32_t index) { xSliderLFORate->setValue(63); xSliderLFODelay->setValue(94); -}*/ +} + */ void DistrhoUIPeacock::parameterChanged(uint32_t index, float value) { - printf("Parameter has changed\n"); switch (index) { case pLFORate: xSliderLFORate->setValue(value); @@ -283,13 +283,11 @@ void DistrhoUIPeacock::imageSliderDragFinished(ImageSlider* slider) { } void DistrhoUIPeacock::imageSliderValueChanged(ImageSlider* slider, float value) { - // printf("setting %d to %f\n", slider->getId(), value); setParameterValue(slider->getId(), value); } void DistrhoUIPeacock::imageButtonClicked(ImageButton* imgBtn, int) { int id = imgBtn->getId(); - // printf("imagebutton %d\n", id); switch (id) { case btn16: sw1 &= 0xf8; diff --git a/plugin/ui.hpp b/plugin/ui.hpp index 8cef38c..c34b2ad 100644 --- a/plugin/ui.hpp +++ b/plugin/ui.hpp @@ -55,6 +55,19 @@ class DistrhoUIPeacock : public UI, ScopedPointer xBtn16ft, xBtn8ft, xBtn4ft, xBtnPls, xBtnSaw, xBtnCh0, xBtnCh1, xBtnCh2; uint8_t sw1 = 0, sw2 = 0; + + enum Buttons { + btn16 = parameterCount+1, + btn8, + btn4, + btnPls, + btnSaw, + btnCh0, + btnCh1, + btnCh2 + }; + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUIPeacock) // ImageAboutWindow fAboutWindow; };