Compare commits

..

No commits in common. "c33fd60c5c76b71a68be7206c9da0a64d288b8f6" and "d7fcc9c0b05a06cc9a71241c1adc948774aab9bc" have entirely different histories.

4 changed files with 15406 additions and 16214 deletions

View File

@ -30,38 +30,4 @@
#define DISTRHO_PLUGIN_WANT_PROGRAMS 1 #define DISTRHO_PLUGIN_WANT_PROGRAMS 1
#define DISTRHO_PLUGIN_HAS_UI 1 #define DISTRHO_PLUGIN_HAS_UI 1
enum Parameters {
pLFORate,
pLFODelay,
pVCORange,
pLFODepth,
pPWMDepth,
pSqr,
pSaw,
pSubLevel,
pNoiseLevel,
pHPF,
pCutoff,
pRes,
pEnv,
pLfo,
pKyb,
pVCALevel,
pAtk,
pDcy,
pStn,
pRls,
pChorus,
parameterCount,
btn16, btn8, btn4, btnPls, btnSaw, btnCh0, btnCh1, btnCh2
};
#endif #endif

View File

@ -27,6 +27,39 @@ START_NAMESPACE_DISTRHO
class Chassis : public Plugin { class Chassis : public Plugin {
public: public:
enum Parameters {
pLFORate,
pLFODelay,
pVCORange,
pLFODepth,
pPWMDepth,
pSqr,
pSaw,
pSubLevel,
pNoiseLevel,
pHPF,
pCutoff,
pRes,
pEnv,
pLfo,
pKyb,
pVCALevel,
pAtk,
pDcy,
pStn,
pRls,
pChorus,
parameterCount,
btn16, btn8, btn4, btnPls, btnSaw, btnCh0, btnCh1, btnCh2
};
Chassis(); Chassis();
protected: protected:

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,6 @@ START_NAMESPACE_DISTRHO
namespace Art = Artwork; namespace Art = Artwork;
void prepSlider(ImageSlider* s, uint id, int x, int y) {
s->setId(id);
s->setStartPos(x, y);
s->setEndPos(x, y + 79); // 80px high
s->setInverted(true);
s->setRange(0, 127.0f);
}
DistrhoUIchassis::DistrhoUIchassis() : UI(Art::backgroundWidth, Art::backgroundHeight, true), DistrhoUIchassis::DistrhoUIchassis() : UI(Art::backgroundWidth, Art::backgroundHeight, true),
fImgBackground(Art::backgroundData, Art::backgroundWidth, Art::backgroundHeight, kImageFormatRGB), fImgBackground(Art::backgroundData, Art::backgroundWidth, Art::backgroundHeight, kImageFormatRGB),
fImgLedOn(Art::ledOnData, Art::ledWidth, Art::ledHeight, kImageFormatRGBA) fImgLedOn(Art::ledOnData, Art::ledWidth, Art::ledHeight, kImageFormatRGBA)
@ -26,185 +18,248 @@ DistrhoUIchassis::DistrhoUIchassis() : UI(Art::backgroundWidth, Art::backgroundH
Image whiteSlider(Art::whiteData, Art::sliderWidth, Art::sliderHeight, kImageFormatRGBA); Image whiteSlider(Art::whiteData, Art::sliderWidth, Art::sliderHeight, kImageFormatRGBA);
xSliderLFORate = new ImageSlider(this, orangeSlider); xSliderLFORate = new ImageSlider(this, orangeSlider);
prepSlider(xSliderLFORate, pLFORate, 46, 72); xSliderLFORate->setId(Chassis::pLFORate);
xSliderLFORate->setStartPos(50, 72);
xSliderLFORate->setEndPos(50, 151);
xSliderLFORate->setRange(0, 127.0f);
xSliderLFORate->setInverted(true);
xSliderLFORate->setCallback(this); xSliderLFORate->setCallback(this);
xSliderLFODelay = new ImageSlider(this, orangeSlider); xSliderLFODelay = new ImageSlider(this, orangeSlider);
prepSlider(xSliderLFODelay, pLFODelay, 84, 72); xSliderLFODelay->setId(Chassis::pLFODelay);
xSliderLFODelay->setStartPos(90, 72);
xSliderLFODelay->setEndPos(90, 151);
xSliderLFODelay->setRange(0, 127.0f);
xSliderLFODelay->setInverted(true);
xSliderLFODelay->setCallback(this); xSliderLFODelay->setCallback(this);
xSliderLFODepth = new ImageSlider(this, greenSlider); xSliderLFODepth = new ImageSlider(this, greenSlider);
prepSlider(xSliderLFODepth, pLFODepth, 290, 72); xSliderLFODepth->setId(Chassis::pLFODepth);
xSliderLFODepth->setStartPos(292, 72);
xSliderLFODepth->setEndPos(292, 151);
xSliderLFODepth->setRange(0, 127.0f);
xSliderLFODepth->setInverted(true);
xSliderLFODepth->setCallback(this); xSliderLFODepth->setCallback(this);
xSliderPWMDepth = new ImageSlider(this, greenSlider); xSliderPWMDepth = new ImageSlider(this, greenSlider);
prepSlider(xSliderPWMDepth, pPWMDepth, 329, 72); xSliderPWMDepth->setId(Chassis::pPWMDepth);
xSliderPWMDepth->setStartPos(331, 72);
xSliderPWMDepth->setEndPos(331, 151);
xSliderPWMDepth->setRange(0, 127.0f);
xSliderPWMDepth->setInverted(true);
xSliderPWMDepth->setCallback(this); xSliderPWMDepth->setCallback(this);
xSliderSubLevel = new ImageSlider(this, greenSlider); xSliderSubLevel = new ImageSlider(this, greenSlider);
prepSlider(xSliderSubLevel, pSubLevel, 510, 72); xSliderSubLevel->setId(Chassis::pSubLevel);
xSliderSubLevel->setStartPos(517, 72);
xSliderSubLevel->setEndPos(517, 151);
xSliderSubLevel->setRange(0, 127.0f);
xSliderSubLevel->setInverted(true);
xSliderSubLevel->setCallback(this); xSliderSubLevel->setCallback(this);
xSliderNoiseLevel = new ImageSlider(this, greenSlider); xSliderNoiseLevel = new ImageSlider(this, greenSlider);
prepSlider(xSliderNoiseLevel, pNoiseLevel, 551, 72); xSliderNoiseLevel->setId(Chassis::pNoiseLevel);
xSliderNoiseLevel->setStartPos(558, 72);
xSliderNoiseLevel->setEndPos(558, 151);
xSliderNoiseLevel->setRange(0, 127.0f);
xSliderNoiseLevel->setInverted(true);
xSliderNoiseLevel->setCallback(this); xSliderNoiseLevel->setCallback(this);
xSliderHPF = new ImageSlider(this, blueSlider); xSliderHPF = new ImageSlider(this, blueSlider);
prepSlider(xSliderHPF, pHPF, 618, 72); xSliderHPF->setId(Chassis::pHPF);
xSliderHPF->setStartPos(618, 72);
xSliderHPF->setEndPos(618, 151);
xSliderHPF->setRange(0, 3.0f);
xSliderHPF->setStep(1); xSliderHPF->setStep(1);
xSliderHPF->setRange(0,3); xSliderHPF->setInverted(true);
xSliderHPF->setCallback(this); xSliderHPF->setCallback(this);
xSliderCutoff = new ImageSlider(this, blueSlider); xSliderCutoff = new ImageSlider(this, blueSlider);
prepSlider(xSliderCutoff, pCutoff, 26, 261); xSliderCutoff->setId(Chassis::pCutoff);
xSliderCutoff->setStartPos(21, 261);
xSliderCutoff->setEndPos(21, 340);
xSliderCutoff->setRange(0, 127.0f);
xSliderCutoff->setInverted(true);
xSliderCutoff->setCallback(this); xSliderCutoff->setCallback(this);
xSliderRes = new ImageSlider(this, blueSlider); xSliderRes = new ImageSlider(this, blueSlider);
prepSlider(xSliderRes, pRes, 65, 261); xSliderRes->setId(Chassis::pRes);
xSliderRes->setStartPos(60, 261);
xSliderRes->setEndPos(60, 340);
xSliderRes->setRange(0, 127.0f);
xSliderRes->setInverted(true);
xSliderRes->setCallback(this); xSliderRes->setCallback(this);
xSliderEnv = new ImageSlider(this, blueSlider); xSliderEnv = new ImageSlider(this, blueSlider);
prepSlider(xSliderEnv, pEnv, 149, 261); xSliderEnv->setId(Chassis::pEnv);
xSliderEnv->setStartPos(144, 261);
xSliderEnv->setEndPos(144, 340);
xSliderEnv->setRange(0, 127.0f);
xSliderEnv->setInverted(true);
xSliderEnv->setCallback(this); xSliderEnv->setCallback(this);
xSliderLfo = new ImageSlider(this, blueSlider); xSliderLfo = new ImageSlider(this, blueSlider);
prepSlider(xSliderLfo, pLfo, 189, 261); xSliderLfo->setId(Chassis::pLfo);
xSliderLfo->setStartPos(183, 261);
xSliderLfo->setEndPos(183, 340);
xSliderLfo->setRange(0, 127.0f);
xSliderLfo->setInverted(true);
xSliderLfo->setCallback(this); xSliderLfo->setCallback(this);
xSliderKyb = new ImageSlider(this, blueSlider); xSliderKyb = new ImageSlider(this, blueSlider);
prepSlider(xSliderKyb, pKyb, 228, 261); xSliderKyb->setId(Chassis::pKyb);
xSliderKyb->setStartPos(222, 261);
xSliderKyb->setEndPos(222, 340);
xSliderKyb->setRange(0, 127.0f);
xSliderKyb->setInverted(true);
xSliderKyb->setCallback(this); xSliderKyb->setCallback(this);
xSliderVCALevel = new ImageSlider(this, whiteSlider); xSliderVCALevel = new ImageSlider(this, whiteSlider);
prepSlider(xSliderVCALevel, pVCALevel, 319, 261); xSliderVCALevel->setId(Chassis::pVCALevel);
xSliderVCALevel->setStartPos(314, 261);
xSliderVCALevel->setEndPos(314, 340);
xSliderVCALevel->setRange(0, 127.0f);
xSliderVCALevel->setInverted(true);
xSliderVCALevel->setCallback(this); xSliderVCALevel->setCallback(this);
xSliderAtk = new ImageSlider(this, whiteSlider); xSliderAtk = new ImageSlider(this, whiteSlider);
prepSlider(xSliderAtk, pVCALevel, 385, 261); xSliderAtk->setId(Chassis::pAtk);
xSliderAtk->setStartPos(375, 261);
xSliderAtk->setEndPos(375, 340);
xSliderAtk->setRange(0, 127.0f);
xSliderAtk->setInverted(true);
xSliderAtk->setCallback(this); xSliderAtk->setCallback(this);
xSliderDcy = new ImageSlider(this, whiteSlider); xSliderDcy = new ImageSlider(this, whiteSlider);
prepSlider(xSliderDcy, pDcy, 425, 261); xSliderDcy->setId(Chassis::pDcy);
xSliderDcy->setStartPos(414, 261);
xSliderDcy->setEndPos(414, 340);
xSliderDcy->setRange(0, 127.0f);
xSliderDcy->setInverted(true);
xSliderDcy->setCallback(this); xSliderDcy->setCallback(this);
xSliderStn = new ImageSlider(this, whiteSlider); xSliderStn = new ImageSlider(this, whiteSlider);
prepSlider(xSliderStn, pStn, 465, 261); xSliderStn->setId(Chassis::pStn);
xSliderStn->setStartPos(454, 261);
xSliderStn->setEndPos(454, 340);
xSliderStn->setRange(0, 127.0f);
xSliderStn->setInverted(true);
xSliderStn->setCallback(this); xSliderStn->setCallback(this);
xSliderRls = new ImageSlider(this, whiteSlider); xSliderRls = new ImageSlider(this, whiteSlider);
prepSlider(xSliderRls, pRls, 505, 261); xSliderRls->setId(Chassis::pRls);
xSliderRls->setStartPos(493, 261);
xSliderRls->setEndPos(493, 340);
xSliderRls->setRange(0, 127.0f);
xSliderRls->setInverted(true);
xSliderRls->setCallback(this); xSliderRls->setCallback(this);
xBtn16ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB), xBtn16ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB)); Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB));
xBtn16ft->setAbsolutePos(149, 103); xBtn16ft->setAbsolutePos(149,103);
xBtn16ft->setId(btn16); xBtn16ft->setId(Chassis::btn16);
xBtn16ft->setCallback(this); xBtn16ft->setCallback(this);
xBtn8ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB), xBtn8ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB)); Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB));
xBtn8ft->setAbsolutePos(190, 103); xBtn8ft->setAbsolutePos(190,103);
xBtn8ft->setId(btn8); xBtn8ft->setId(Chassis::btn8);
xBtn8ft->setCallback(this); xBtn8ft->setCallback(this);
xBtn4ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB), xBtn4ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB)); Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB));
xBtn4ft->setAbsolutePos(231, 103); xBtn4ft->setAbsolutePos(231,103);
xBtn4ft->setId(btn4); xBtn4ft->setId(Chassis::btn4);
xBtn4ft->setCallback(this); xBtn4ft->setCallback(this);
programLoaded(0); programLoaded(0);
} }
DistrhoUIchassis::~DistrhoUIchassis() { DistrhoUIchassis::~DistrhoUIchassis() {
printf("Called destructor for UI\n"); printf("Called destructor for UI\n");
} }
void DistrhoUIchassis::programLoaded(uint32_t index) { void DistrhoUIchassis::programLoaded(uint32_t index) {
switch (index) { switch (index) {
case pLFORate: case Chassis::pLFORate:
xSliderLFORate->setValue(0.5); xSliderLFORate->setValue(0.5);
break; break;
case pLFODelay: case Chassis::pLFODelay:
xSliderLFODelay->setValue(0.5); xSliderLFODelay->setValue(0.5);
break; break;
} }
} }
void DistrhoUIchassis::parameterChanged(uint32_t index, float value) { void DistrhoUIchassis::parameterChanged(uint32_t index, float value) {
switch (index) { switch (index) {
case pLFORate: case Chassis::pLFORate:
xSliderLFORate->setValue(value); xSliderLFORate->setValue(value);
break; break;
case pLFODelay: case Chassis::pLFODelay:
xSliderLFODelay->setValue(value); xSliderLFODelay->setValue(value);
break; break;
case pLFODepth: case Chassis::pLFODepth:
xSliderLFODepth->setValue(value); xSliderLFODepth->setValue(value);
break; break;
case pPWMDepth: case Chassis::pPWMDepth:
xSliderPWMDepth->setValue(value); xSliderPWMDepth->setValue(value);
break; break;
case pSubLevel: case Chassis::pSubLevel:
xSliderSubLevel->setValue(value); xSliderSubLevel->setValue(value);
break; break;
case pNoiseLevel: case Chassis::pNoiseLevel:
xSliderNoiseLevel->setValue(value); xSliderNoiseLevel->setValue(value);
break; break;
case pHPF: case Chassis::pHPF:
xSliderHPF->setValue(value); xSliderHPF->setValue(value);
break; break;
case pCutoff: case Chassis::pCutoff:
xSliderCutoff->setValue(value); xSliderCutoff->setValue(value);
break; break;
case pRes: case Chassis::pRes:
xSliderRes->setValue(value); xSliderRes->setValue(value);
break; break;
case pEnv: case Chassis::pEnv:
xSliderEnv->setValue(value); xSliderEnv->setValue(value);
break; break;
case pLfo: case Chassis::pLfo:
xSliderLfo->setValue(value); xSliderLfo->setValue(value);
break; break;
case pKyb: case Chassis::pKyb:
xSliderKyb->setValue(value); xSliderKyb->setValue(value);
break; break;
case pAtk: case Chassis::pAtk:
xSliderAtk->setValue(value); xSliderAtk->setValue(value);
break; break;
case pDcy: case Chassis::pDcy:
xSliderDcy->setValue(value); xSliderDcy->setValue(value);
break; break;
case pStn: case Chassis::pStn:
xSliderStn->setValue(value); xSliderStn->setValue(value);
break; break;
case pRls: case Chassis::pRls:
xSliderRls->setValue(value); xSliderRls->setValue(value);
break; break;
// now the switches // now the switches
case pVCORange: case Chassis::pVCORange:
sw1 &= 0xf8; // mask sw1 &= 0xf8; // mask
if (value > 2) value = 2; if (value > 2) value = 2;
sw1 |= (1 << (int)value); sw1 |= (1 << (int)value);
break; break;
case pSqr: case Chassis::pSqr:
sw1 &= 0xf7; sw1 &= 0xf7;
sw1 |= ((value >= 0.5)) << 3; sw1 |= ((value >= 0.5)) << 3;
break; break;
case pSaw: case Chassis::pSaw:
sw1 &= 0xef; sw1 &= 0xef;
sw1 |= (value > 0.5) << 4; sw1 |= (value > 0.5) << 4;
break; break;
case pChorus: case Chassis::pChorus:
sw1 &= 0x9f; sw1 &= 0x9f;
// 60, 40, 00 //60, 40, 00
switch ((int)value) { switch((int)value) {
case 0: case 0: sw1 |= 0x60; break;
sw1 |= 0x60; case 1: sw1 |= 0x40; break;
break; case 2: sw1 |= 0x00; break;
case 1:
sw1 |= 0x40;
break;
case 2:
sw1 |= 0x00;
break;
} }
} }
} }
@ -221,24 +276,14 @@ void DistrhoUIchassis::imageSliderValueChanged(ImageSlider* slider, float value)
setParameterValue(slider->getId(), value); setParameterValue(slider->getId(), value);
} }
void DistrhoUIchassis::imageButtonClicked(ImageButton* imgBtn, int) { void DistrhoUIchassis::imageButtonClicked(ImageButton *imgBtn, int) {
int id = imgBtn->getId(); int id = imgBtn->getId();
// printf("imagebutton %d\n", id); //printf("imagebutton %d\n", id);
switch (id) { switch (id) {
case btn16: case Chassis::btn16: sw1 &= 0xf8; sw1 |= 0x01; break;
sw1 &= 0xf8; case Chassis::btn8: sw1 &= 0xf8; sw1 |= 0x02; break;
sw1 |= 0x01; case Chassis::btn4: sw1 &= 0xf8; sw1 |= 0x04; break;
break; default: break;
case btn8:
sw1 &= 0xf8;
sw1 |= 0x02;
break;
case btn4:
sw1 &= 0xf8;
sw1 |= 0x04;
break;
default:
break;
} }
} }
@ -252,8 +297,8 @@ void DistrhoUIchassis::onDisplay() {
if (sw1 & 0x04) fImgLedOn.drawAt(context, 238, 77); // 4' if (sw1 & 0x04) fImgLedOn.drawAt(context, 238, 77); // 4'
if (sw1 & 0x08) fImgLedOn.drawAt(context, 427, 77); // pulse if (sw1 & 0x08) fImgLedOn.drawAt(context, 427, 77); // pulse
if (sw1 & 0x10) fImgLedOn.drawAt(context, 465, 77); // saw if (sw1 & 0x10) fImgLedOn.drawAt(context, 465, 77); // saw
if ((sw1 & 0x60) == 0x40) fImgLedOn.drawAt(context, 612, 267); // chorus 1 if ((sw1 & 0x60) == 0x40) fImgLedOn.drawAt(context, 604, 269); // chorus 1
if ((sw1 & 0x60) == 0x00) fImgLedOn.drawAt(context, 652, 267); // chorus 2 if ((sw1 & 0x60) == 0x00) fImgLedOn.drawAt(context, 644, 269); // chorus 2
}; };
UI* createUI() { UI* createUI() {