Compare commits

..

No commits in common. "master" and "fromjpeg" have entirely different histories.

9 changed files with 15450 additions and 16659 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

@ -15,7 +15,6 @@ FILES_DSP = \
FILES_UI = \ FILES_UI = \
orangebutton.cpp \
panel.cpp \ panel.cpp \
slider.cpp \ slider.cpp \
peacock.cpp \ peacock.cpp \

View File

@ -27,6 +27,37 @@ 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
};
Chassis(); Chassis();
protected: protected:

View File

@ -1,367 +0,0 @@
#include "peacock.hpp"
static const char tempOrngUp[] = {
"jF#\377\213].\377\230e\062\377\223b\061\377\230e\062\377\224c\061\377\226d\061"
"\377\222a\060\377\230e\062\377\225c\061\377\232f\063\377\224c\061\377\223b\060"
"\377\227e\062\377\227d\062\377\233g\063\377\223b\060\377\225c\061\377\222a\060"
"\377\224b\061\377\227e\062\377\227d\062\377\226d\062\377\226d\062\377\224c\061"
"\377\223b\060\377\231f\062\377\223b\061\377\222a\060\377\226d\062\377\227e\062"
"\377\223b\060\377\220`\060\377\224b\061\377\233g\063\377\232f\063\377\226d\062"
"\377\223b\060\377\217_/\377\004\003\001\000\004\003\001\000\243l\066\377\331\263\215\377\321"
"\242s\377\321\243u\377\320\241q\377\321\243u\377\321\243u\377\320\240o\377"
"\320\241r\377\320\241r\377\321\243u\377\320\241r\377\320\241r\377\322\244"
"u\377\322\245w\377\321\242s\377\320\240q\377\321\242r\377\321\243u\377\317"
"\237n\377\320\241r\377\321\242s\377\321\242r\377\322\244v\377\321\242s\377"
"\317\237o\377\321\242s\377\320\240o\377\321\242s\377\320\241r\377\320\241"
"q\377\321\242s\377\321\242s\377\321\242s\377\320\237o\377\321\243t\377\321"
"\242s\377\271{=\377\253r\070\377\217_/\062\004\003\001\000\237i\064\377\322\245x\377"
"\305\212O\377\304\207K\377\305\212P\377\304\207K\377\306\214R\377\305\212"
"O\377\303\207J\377\305\211N\377\307\215T\377\303\206J\377\305\211N\377\305"
"\212O\377\304\207K\377\303\206J\377\305\212P\377\302\204G\377\304\211M\377"
"\304\207K\377\304\211M\377\303\206I\377\306\213Q\377\305\212N\377\304\207"
"K\377\303\206H\377\305\212O\377\305\211N\377\305\212P\377\305\212P\377\304"
"\207K\377\303\206H\377\304\207K\377\305\212P\377\306\214R\377\304\207K\377"
"\304\211M\377\300\201A\377\262v;\377rK$\377>(\024\226\237j\064\377\320\240"
"p\377\301\201B\377\270z=\377\270z=\377\300\200A\377\265y<\377\266y<\377\301"
"\202C\377\265x<\377\271{=\377\271{=\377\267y<\377\275~>\377\300\200@\377"
"\273}>\377\267z<\377\273}>\377\266y<\377\300\200@\377\272{=\377\265y<\377"
"\272|=\377\264x;\377\300\200@\377\300\201A\377\276\177?\377\261v:\377\301"
"\202C\377\267z<\377\275~>\377\267z<\377\267z<\377\275~>\377\267z<\377\267"
"z<\377\301\201B\377\275}>\377\237j\064\377hD\040\377>(\024n\234h\063\377\317"
"\237n\377\267y<\377\276~?\377\261u:\377\267y<\377\271{=\377\273|>\377\276"
"~?\377\275~>\377\266y<\377\274}>\377\275~>\377\265y<\377\275~>\377\262v;"
"\377\270{=\377\267z<\377\267y<\377\276~?\377\265y<\377\273}>\377\300\200"
"@\377\276\177?\377\263w;\377\270z=\377\275~>\377\265y<\377\270z=\377\272"
"|=\377\266y<\377\275~>\377\272|=\377\272|=\377\270z=\377\264x;\377\273|>"
"\377\276~?\377\232f\063\377eB\037\377\065\"\020\303\235i\064\377\321\242s\377"
"\301\203D\377\274}>\377\267y<\377\300\200A\377\271{=\377\273|>\377\277\177"
"?\377\264x<\377\266y<\377\272{=\377\275~>\377\260u:\377\267y<\377\300\200"
"@\377\300\200A\377\275}>\377\267y<\377\270z=\377\264x;\377\276~?\377\265"
"x<\377\275~>\377\272|=\377\276~?\377\300\200@\377\271{=\377\272{=\377\270"
"{=\377\263w;\377\276~?\377\272{=\377\262v;\377\263w;\377\300\200A\377\267"
"y<\377\274}>\377\234h\064\377b@\037\377\065\"\020\370\237j\064\377\320\240p\377"
"\301\202C\377\273|>\377\262v;\377\267y<\377\301\201B\377\274}>\377\274}>"
"\377\277\177?\377\300\201A\377\270z=\377\267y<\377\301\201B\377\275~>\377"
"\272|=\377\274}>\377\266y<\377\271{=\377\271{=\377\274}>\377\300\200@\377"
"\277\177?\377\275}>\377\273|>\377\273|>\377\275~>\377\276~?\377\271{=\377"
"\301\201B\377\271{=\377\271{=\377\277\177?\377\301\201B\377\274}>\377\261"
"u:\377\301\202C\377\301\201B\377\231f\063\377cA\037\377\065\"\020\370\237j\064"
"\377\321\241r\377\303\206I\377\271{=\377\265x<\377\272|=\377\275~>\377\273"
"}>\377\301\202C\377\277\177?\377\272|=\377\265x<\377\266y<\377\264x;\377"
"\273|>\377\274}>\377\272{=\377\274}>\377\266y<\377\267z<\377\271{=\377\266"
"y<\377\271{=\377\267z<\377\264x;\377\275}>\377\266y<\377\274}>\377\301\201"
"B\377\277\177?\377\272|=\377\262v;\377\301\201B\377\300\201A\377\273|>\377"
"\276~?\377\301\201B\377\264x<\377\243m\066\377b@\037\377\065\"\020\370\237i\064"
"\377\320\240p\377\302\204F\377\267z<\377\263w;\377\265x<\377\267z<\377\262"
"v;\377\265y<\377\300\200A\377\277\177?\377\274}>\377\277\177?\377\270z=\377"
"\262v;\377\300\200@\377\272|>\377\261v:\377\267y<\377\266y<\377\301\201B"
"\377\272|=\377\267z<\377\272{=\377\271{=\377\270z=\377\272|=\377\274}>\377"
"\266y<\377\300\200@\377\270{=\377\267y<\377\274}>\377\275}>\377\274}>\377"
"\271{=\377\275}>\377\274}>\377\236i\064\377gD\040\377\065\"\020\370\240j\065\377"
"\320\240p\377\300\200@\377\301\201B\377\277\177?\377\276~?\377\266y<\377"
"\275}>\377\271{=\377\267y<\377\273|>\377\264x;\377\274}>\377\276~?\377\271"
"{=\377\267y<\377\274}>\377\267y<\377\265x<\377\275}>\377\267y<\377\300\201"
"A\377\276~?\377\267y<\377\264x;\377\276~?\377\301\202C\377\271{=\377\270"
"z=\377\272|=\377\275~>\377\266y<\377\272|>\377\271{=\377\300\200@\377\300"
"\200@\377\267z<\377\274}>\377\237j\064\377dB\037\377\065\"\020\370\237j\064\377"
"\321\242s\377\274}>\377\261u:\377\267y<\377\267y<\377\272{=\377\276~?\377"
"\271{=\377\266y<\377\271{=\377\272|>\377\300\200A\377\271{=\377\273|>\377"
"\265y<\377\264x<\377\300\200@\377\271{=\377\262v;\377\262w;\377\264x<\377"
"\301\201B\377\274}>\377\272|=\377\265x<\377\300\200@\377\271{=\377\301\203"
"D\377\265x<\377\277\177?\377\301\202C\377\274}>\377\276~?\377\264x;\377\271"
"{=\377\271{=\377\272|=\377\235i\064\377eB\037\377\065\"\020\370\237i\064\377\320"
"\240p\377\267z<\377\271{=\377\300\200@\377\267z<\377\271{=\377\262v;\377"
"\276~?\377\263w;\377\265x<\377\266y<\377\272|=\377\300\177?\377\274}>\377"
"\266y<\377\300\200@\377\267y<\377\275~>\377\275}>\377\276~?\377\266y<\377"
"\275}>\377\300\177?\377\263w;\377\266y<\377\270z=\377\263w;\377\264x<\377"
"\274}>\377\277\177?\377\271{=\377\300\200@\377\277\177?\377\271{=\377\300"
"\201A\377\273|>\377\266y<\377\250p\067\377dB\037\377\065\"\020\370\235i\064\377"
"\320\237o\377\277\177?\377\300\200@\377\275}>\377\270z=\377\267y<\377\275"
"~>\377\271{=\377\266y<\377\271{=\377\274}>\377\271{=\377\263w;\377\260u:"
"\377\277\177?\377\262w;\377\275}>\377\273|>\377\301\201B\377\262v;\377\267"
"y<\377\272|>\377\267y<\377\274}>\377\273|>\377\300\200A\377\267z<\377\265"
"y<\377\275}>\377\266y<\377\271{=\377\262v;\377\273|>\377\271{=\377\300\200"
"@\377\274}>\377\274}>\377\243l\066\377jE!\377\065\"\020\370\232g\063\377\316"
"\234k\377\267z<\377\267z<\377\266y<\377\264x;\377\266y<\377\266y<\377\300"
"\200A\377\272|>\377\271{=\377\272|=\377\273}>\377\274}>\377\273|>\377\272"
"|=\377\301\201B\377\276~?\377\265y<\377\265x<\377\270z=\377\266y<\377\262"
"v;\377\267z<\377\264x;\377\301\202C\377\274}>\377\266y<\377\265x<\377\301"
"\202C\377\265y<\377\267y<\377\274}>\377\263w;\377\270{=\377\263w;\377\266"
"y<\377\275~>\377\242l\066\377gC\040\377\065\"\020\370\234h\063\377\317\236n\377"
"\271{=\377\267y<\377\267y<\377\274}>\377\274}>\377\266y<\377\274}>\377\273"
"|>\377\276~?\377\277\177?\377\266y<\377\301\202C\377\274}>\377\274}>\377"
"\261v:\377\275~>\377\267z<\377\273|>\377\265x<\377\264x<\377\274}>\377\271"
"{=\377\274}>\377\274}>\377\266y<\377\274}>\377\274}>\377\300\201A\377\301"
"\202C\377\276~?\377\275~>\377\273|>\377\276~?\377\261v;\377\266y<\377\276"
"~?\377\232f\063\377fC\040\377\065\"\020\370\233g\063\377\317\235l\377\277\177"
"?\377\263w;\377\272|=\377\267y<\377\270z=\377\266y<\377\300\200@\377\267"
"z<\377\277\177?\377\300\200@\377\276~?\377\274}>\377\272|=\377\275~>\377"
"\275}>\377\273|>\377\270z=\377\277\177?\377\266y<\377\265x<\377\264x;\377"
"\267z<\377\267y<\377\267z=\377\274}>\377\275}>\377\272|=\377\271{=\377\275"
"}>\377\270z=\377\265x<\377\275}>\377\267y<\377\266y<\377\274}>\377\274}>"
"\377\240j\065\377b@\037\377\065\"\020\370\234h\063\377\316\233i\377\300\201A\377"
"\300\200@\377\265x<\377\276~?\377\267z<\377\274}>\377\271{=\377\267y<\377"
"\265x<\377\274}>\377\276~?\377\272|=\377\276~?\377\274}>\377\263w;\377\266"
"y<\377\274}>\377\267z=\377\266y<\377\272|=\377\275}>\377\274}>\377\272|>"
"\377\265x<\377\273|>\377\275}>\377\267z<\377\300\201A\377\271{=\377\266y"
"<\377\275~>\377\274}>\377\300\200@\377\270{=\377\301\201B\377\266y<\377\243"
"l\066\377eB\040\377\065\"\020\370\232g\063\377\320\237o\377\270z=\377\263w;\377"
"\275}>\377\267y<\377\277\177?\377\277\177?\377\267z<\377\274}>\377\277\177"
"?\377\267y<\377\274}>\377\300\200A\377\273|>\377\276~?\377\274}>\377\272"
"|=\377\277\177?\377\272|=\377\272|=\377\264w;\377\300\200@\377\274}>\377"
"\271{=\377\266y<\377\271{=\377\273|>\377\273|>\377\271{=\377\272|=\377\275"
"~>\377\270z=\377\270z=\377\266y<\377\300\200@\377\273|>\377\266y<\377\242"
"l\065\377gC\040\377\065\"\020\370\232g\063\377\317\236l\377\275~?\377\271{=\377"
"\275}>\377\271{=\377\260u:\377\271{=\377\274}>\377\274}>\377\267z<\377\262"
"w;\377\300\200@\377\274}>\377\266y<\377\274}>\377\277\177?\377\275~>\377"
"\300\177?\377\272|=\377\266y<\377\273|>\377\274}>\377\271{=\377\266y<\377"
"\275~>\377\274}>\377\300\200@\377\272|=\377\275}>\377\267y<\377\274}>\377"
"\272{=\377\277\177?\377\270z=\377\277\177?\377\265x<\377\277\177?\377\244"
"m\066\377fC\040\377\065\"\020\370\233g\063\377\321\242r\377\301\201B\377\272|"
"=\377\300\177?\377\265x<\377\267z<\377\271{=\377\271{=\377\271{=\377\274"
"}>\377\267z<\377\275~>\377\300\201A\377\271{=\377\265y<\377\272|>\377\263"
"w;\377\300\200A\377\271{=\377\275~>\377\274}>\377\271{=\377\300\200A\377"
"\264x;\377\266y<\377\274}>\377\267z<\377\272|=\377\267z<\377\273|>\377\272"
"|=\377\271{=\377\267y<\377\271{=\377\273|>\377\274}>\377\276\177?\377\242"
"l\065\377gD\040\377\065\"\020\370\235i\064\377\320\240p\377\265x<\377\266y<\377"
"\272|=\377\262v;\377\273}>\377\271{=\377\301\203D\377\271{=\377\300\201A"
"\377\270z=\377\273|>\377\267y<\377\267z<\377\266y<\377\301\201B\377\272|"
"=\377\270z=\377\265y<\377\272|=\377\263w;\377\266y<\377\274}>\377\275~>\377"
"\275}>\377\272|>\377\261u:\377\271{=\377\275~>\377\275~>\377\266y<\377\271"
"{=\377\263w;\377\300\200@\377\266y<\377\277\177?\377\276~?\377\235h\064\377"
"fC\040\377\065\"\020\370\233g\063\377\317\236n\377\275~?\377\270{=\377\277\177"
"?\377\263w;\377\300\200@\377\274}>\377\267y<\377\301\202C\377\267z<\377\271"
"{=\377\276~?\377\266y<\377\274}>\377\262v;\377\300\200A\377\266y<\377\270"
"z=\377\267z<\377\272|=\377\270z=\377\277\177?\377\266y<\377\301\202C\377"
"\266y<\377\272{=\377\274}>\377\276~?\377\274}>\377\270z=\377\267z<\377\264"
"x<\377\266y<\377\265y<\377\262v;\377\271{=\377\301\202D\377\237j\064\377d"
"A\037\377\065\"\020\370\234h\063\377\317\235l\377\301\202C\377\274}>\377\274"
"}>\377\276~?\377\271{=\377\271{=\377\276~?\377\301\201B\377\300\200@\377"
"\277\177?\377\273|>\377\273|>\377\271{=\377\265y<\377\274}>\377\276~?\377"
"\273|>\377\275~>\377\300\200?\377\277\177?\377\300\200@\377\262v;\377\301"
"\202C\377\263w;\377\275~>\377\266y<\377\263w;\377\266y<\377\266y<\377\277"
"\177?\377\261v:\377\267z<\377\275}>\377\274}>\377\267z<\377\300\200@\377"
"\237j\064\377eB\037\377\065\"\020\370\237j\064\377\317\236n\377\271{=\377\302"
"\203E\377\274}>\377\275~>\377\266y<\377\264x;\377\274}>\377\264x;\377\274"
"}>\377\300\177?\377\266y<\377\270z=\377\266y<\377\271{=\377\300\200?\377"
"\277\177?\377\262v;\377\275~>\377\263w;\377\271{=\377\275}>\377\276~?\377"
"\274}>\377\267z<\377\272|>\377\274}>\377\302\203E\377\271{=\377\271{=\377"
"\277\177?\377\272|=\377\261v:\377\275~>\377\264x;\377\267y<\377\301\201B"
"\377\235i\064\377eB\037\377\065\"\020\370\233g\063\377\317\235l\377\303\205H\377"
"\266y<\377\274}>\377\274}>\377\270z=\377\273|>\377\270{=\377\276~?\377\273"
"}>\377\266y<\377\275~>\377\302\203E\377\274}>\377\276~?\377\276~?\377\276"
"\177?\377\266y<\377\267z<\377\271{=\377\274}>\377\300\200A\377\274}>\377"
"\276~?\377\271{=\377\264x;\377\266y<\377\276\177?\377\300\200@\377\276~?"
"\377\276~?\377\302\203E\377\275~>\377\265y<\377\266y<\377\275~>\377\276\177"
"?\377\240j\065\377dB\037\377\065\"\020\370\264x;\377\331\263\215\377\302\204"
"F\377\263w;\377\300\201A\377\300\200@\377\274}>\377\271{=\377\273}>\377\300"
"\201A\377\266y<\377\267y<\377\272|=\377\300\201A\377\301\202B\377\273}>\377"
"\300\200@\377\300\200@\377\273|>\377\276~?\377\300\200@\377\276~?\377\272"
"|=\377\270{=\377\300\201A\377\277\177?\377\274}>\377\266y<\377\301\201B\377"
"\273}>\377\270z=\377\274}>\377\274}>\377\275~>\377\300\200@\377\301\202C"
"\377\301\202B\377\264x;\377\241k\065\377eB\040\377\065\"\020\370kG#\377\210["
"-\377\233g\063\377\215^.\377\214].\377\215^/\377\216^/\377\207Z-\377\206Y"
",\377\201V+\377\214].\377\207Z-\377\204X,\377\210Z-\377\216_/\377\233g\063"
"\377\223b\061\377\222a\060\377\226d\062\377\214].\377\210[-\377\210Z-\377\215"
"^/\377\224c\061\377\225c\061\377\230e\062\377\224b\061\377\227e\062\377\225c\061"
"\377\231f\062\377\227d\062\377\230e\062\377\223b\061\377\224b\061\377\223b\061"
"\377\232g\063\377\231f\062\377\216_/\377\211[-\377fC\040\377\065\"\020\370\304"
"\206I\025[\071\034\377P\063\031\377cA\037\377gC!\377eA\040\377cA\040\377eB\040\377"
"cA\037\377b@\037\377c@\037\377cA\037\377c@\037\377c@\037\377c@\037\377b@\037\377"
"b@\037\377c@\037\377c@\037\377_>\036\377a?\037\377a?\037\377c@\037\377b?\037\377"
"a?\037\377`>\036\377^>\036\377^>\036\377_>\036\377^>\036\377`>\036\377`>\036\377"
"`>\036\377`>\036\377`>\036\377a?\037\377`>\036\377c@\037\377Y:\034\377L\061\027\377"
"\065\"\020\370\004\003\001\000a@\040\377D,\025\377C+\025\377S\066\032\377V\070\033\377U\066"
"\032\377S\066\032\377U\067\032\377S\066\032\377S\066\032\377S\066\032\377S\066\032\377"
"S\066\032\377S\066\032\377S\066\032\377S\066\032\377S\066\032\377S\066\032\377S\066\032"
"\377Q\064\031\377R\065\032\377R\065\032\377S\066\032\377S\065\032\377R\065\032\377Q\064"
"\031\377P\064\031\377P\064\031\377Q\064\031\377P\064\031\377Q\064\031\377Q\064\031\377"
"Q\064\031\377Q\064\031\377Q\064\031\377R\065\032\377Q\064\031\377O\063\030\377='\022\377"
"\065\"\020\373\004\003\001\000J\061\031\334A*\024\377L\061\030\377N\063\030\377V\070\033\377"
"U\066\032\377S\066\032\377U\067\032\377S\066\032\377S\066\032\377S\066\032\377S\066\032"
"\377S\066\032\377S\066\032\377S\066\032\377S\066\032\377S\066\032\377S\066\032\377S\066"
"\032\377Q\064\031\377R\065\032\377R\065\032\377S\066\032\377S\065\032\377R\065\032\377"
"Q\064\031\377P\064\031\377P\064\031\377Q\064\031\377P\064\031\377Q\064\031\377Q\064\031"
"\377Q\064\031\377Q\064\031\377Q\064\031\377R\065\032\377Q\064\031\377S\066\032\377I/"
"\027\377\065\"\020\376",
};
static const char tempOrngDn[] = {
"\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000"
"\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000"
"\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000"
"\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000"
"\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000\004\003\001\000>(\024&>(\024\331>(\024\235"
">(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235"
">(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235"
">(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235"
">(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235"
">(\024\235>(\024\235>(\024\235\004\003\001\000\004\003\001\000\004\003\001\000eC!\377_@\036\377\217_"
"/\377\212\\.\377\217_/\377\213].\377\215^.\377\211[-\377\217_/\377\214]."
"\377\221`\060\377\213].\377\212\\-\377\216_/\377\216^/\377\222a\060\377\212"
"\\-\377\214].\377\211[-\377\213\\.\377\216_/\377\216^/\377\215^/\377\215"
"^/\377\213].\377\212\\-\377\220`/\377\212\\.\377\211[-\377\215^/\377\216"
"_/\377\212\\-\377\210Z-\377\213\\.\377\222a\060\377\221`\060\377\215^/\377"
"\212\\-\377\217_/\360\004\003\001\000\004\003\001\000a?\037\377K\066\"\377uX;\377}^A\377|]"
">\377}^A\377}^A\377|]=\377|]?\377|]?\377}^A\377|]?\377|]?\377}_A\377}_B\377"
"}^@\377|]>\377}^?\377}^A\377|\\=\377|]?\377}^@\377}^?\377}_A\377}^@\377|"
"\\=\377}^@\377|]=\377}^@\377|]?\377|]>\377}^@\377}^@\377}^@\377|\\=\377}"
"^@\377}^@\377pJ$\375jF!\313>(\024+\004\003\001\000_>\036\377vY=\377\264~G\377\265|"
"E\377\266\177I\377\265|E\377\267\201K\377\266\177H\377\264|D\377\266~G\377"
"\270\202M\377\264{D\377\266~G\377\266\177H\377\265|E\377\264{D\377\266\177"
"I\377\263zA\377\265~G\377\265|E\377\265~G\377\264{C\377\267\200J\377\266"
"\177G\377\265|E\377\264{B\377\266\177H\377\266~G\377\266\177I\377\266\177"
"I\377\265|E\377\264{B\377\265|E\377\266\177I\377\267\201K\377\265|E\377\265"
"~G\377\261w<\377\245m\066\360>(\024\036\004\003\001\000_>\036\377\204cC\377\301\201B"
"\377\270z=\377\270z=\377\300\200A\377\265y<\377\266y<\377\301\202C\377\265"
"x<\377\271{=\377\271{=\377\267y<\377\275~>\377\300\200@\377\273}>\377\267"
"z<\377\273}>\377\266y<\377\300\200@\377\272{=\377\265y<\377\272|=\377\264"
"x;\377\300\200@\377\300\201A\377\276\177?\377\261v:\377\301\202C\377\267"
"z<\377\275~>\377\267z<\377\267z<\377\275~>\377\267z<\377\267z<\377\301\201"
"B\377\275}>\377\237j\064\377\065\"\020\262\004\003\001\000^>\036\377\204cB\377\267y<"
"\377\276~?\377\261u:\377\267y<\377\271{=\377\273|>\377\276~?\377\275~>\377"
"\266y<\377\274}>\377\275~>\377\265y<\377\275~>\377\262v;\377\270{=\377\267"
"z<\377\267y<\377\276~?\377\265y<\377\273}>\377\300\200@\377\276\177?\377"
"\263w;\377\270z=\377\275~>\377\265y<\377\270z=\377\272|=\377\266y<\377\275"
"~>\377\272|=\377\272|=\377\270z=\377\264x;\377\273|>\377\276~?\377\232f\063"
"\377\065\"\020\262\004\003\001\000^>\036\377\205eE\377\301\203D\377\274}>\377\267y<"
"\377\300\200A\377\271{=\377\273|>\377\277\177?\377\264x<\377\266y<\377\272"
"{=\377\275~>\377\260u:\377\267y<\377\300\200@\377\300\200A\377\275}>\377"
"\267y<\377\270z=\377\264x;\377\276~?\377\265x<\377\275~>\377\272|=\377\276"
"~?\377\300\200@\377\271{=\377\272{=\377\270{=\377\263w;\377\276~?\377\272"
"{=\377\262v;\377\263w;\377\300\200A\377\267y<\377\274}>\377\234h\064\377\065"
"\"\020\262\004\003\001\000_>\036\377\204cC\377\301\202C\377\273|>\377\262v;\377\267"
"y<\377\301\201B\377\274}>\377\274}>\377\277\177?\377\300\201A\377\270z=\377"
"\267y<\377\301\201B\377\275~>\377\272|=\377\274}>\377\266y<\377\271{=\377"
"\271{=\377\274}>\377\300\200@\377\277\177?\377\275}>\377\273|>\377\273|>"
"\377\275~>\377\276~?\377\271{=\377\301\201B\377\271{=\377\271{=\377\277\177"
"?\377\301\201B\377\274}>\377\261u:\377\301\202C\377\301\201B\377\231f\063"
"\377\065\"\020\262\004\003\001\000_>\036\377\205dD\377\303\206I\377\271{=\377\265x<"
"\377\272|=\377\275~>\377\273}>\377\301\202C\377\277\177?\377\272|=\377\265"
"x<\377\266y<\377\264x;\377\273|>\377\274}>\377\272{=\377\274}>\377\266y<"
"\377\267z<\377\271{=\377\266y<\377\271{=\377\267z<\377\264x;\377\275}>\377"
"\266y<\377\274}>\377\301\201B\377\277\177?\377\272|=\377\262v;\377\301\201"
"B\377\300\201A\377\273|>\377\276~?\377\301\201B\377\264x<\377\243m\066\377"
"\065\"\020\262\004\003\001\000_>\036\377\204cC\377\302\204F\377\267z<\377\263w;\377"
"\265x<\377\267z<\377\262v;\377\265y<\377\300\200A\377\277\177?\377\274}>"
"\377\277\177?\377\270z=\377\262v;\377\300\200@\377\272|>\377\261v:\377\267"
"y<\377\266y<\377\301\201B\377\272|=\377\267z<\377\272{=\377\271{=\377\270"
"z=\377\272|=\377\274}>\377\266y<\377\300\200@\377\270{=\377\267y<\377\274"
"}>\377\275}>\377\274}>\377\271{=\377\275}>\377\274}>\377\236i\064\377\065\""
"\020\262\004\003\001\000_>\037\377\204cC\377\300\200@\377\301\201B\377\277\177?\377"
"\276~?\377\266y<\377\275}>\377\271{=\377\267y<\377\273|>\377\264x;\377\274"
"}>\377\276~?\377\271{=\377\267y<\377\274}>\377\267y<\377\265x<\377\275}>"
"\377\267y<\377\300\201A\377\276~?\377\267y<\377\264x;\377\276~?\377\301\202"
"C\377\271{=\377\270z=\377\272|=\377\275~>\377\266y<\377\272|>\377\271{=\377"
"\300\200@\377\300\200@\377\267z<\377\274}>\377\237j\064\377\065\"\020\262\004"
"\003\001\000_>\036\377\205eE\377\274}>\377\261u:\377\267y<\377\267y<\377\272{=\377"
"\276~?\377\271{=\377\266y<\377\271{=\377\272|>\377\300\200A\377\271{=\377"
"\273|>\377\265y<\377\264x<\377\300\200@\377\271{=\377\262v;\377\262w;\377"
"\264x<\377\301\201B\377\274}>\377\272|=\377\265x<\377\300\200@\377\271{="
"\377\301\203D\377\265x<\377\277\177?\377\301\202C\377\274}>\377\276~?\377"
"\264x;\377\271{=\377\271{=\377\272|=\377\235i\064\377\065\"\020\262\004\003\001\000"
"_>\036\377\204cC\377\267z<\377\271{=\377\300\200@\377\267z<\377\271{=\377"
"\262v;\377\276~?\377\263w;\377\265x<\377\266y<\377\272|=\377\300\177?\377"
"\274}>\377\266y<\377\300\200@\377\267y<\377\275~>\377\275}>\377\276~?\377"
"\266y<\377\275}>\377\300\177?\377\263w;\377\266y<\377\270z=\377\263w;\377"
"\264x<\377\274}>\377\277\177?\377\271{=\377\300\200@\377\277\177?\377\271"
"{=\377\300\201A\377\273|>\377\266y<\377\250p\067\377\065\"\020\262\004\003\001\000^"
">\036\377\204cB\377\277\177?\377\300\200@\377\275}>\377\270z=\377\267y<\377"
"\275~>\377\271{=\377\266y<\377\271{=\377\274}>\377\271{=\377\263w;\377\260"
"u:\377\277\177?\377\262w;\377\275}>\377\273|>\377\301\201B\377\262v;\377"
"\267y<\377\272|>\377\267y<\377\274}>\377\273|>\377\300\200A\377\267z<\377"
"\265y<\377\275}>\377\266y<\377\271{=\377\262v;\377\273|>\377\271{=\377\300"
"\200@\377\274}>\377\274}>\377\243l\066\377\065\"\020\262\004\003\001\000]>\036\377\203"
"a@\377\267z<\377\267z<\377\266y<\377\264x;\377\266y<\377\266y<\377\300\200"
"A\377\272|>\377\271{=\377\272|=\377\273}>\377\274}>\377\273|>\377\272|=\377"
"\301\201B\377\276~?\377\265y<\377\265x<\377\270z=\377\266y<\377\262v;\377"
"\267z<\377\264x;\377\301\202C\377\274}>\377\266y<\377\265x<\377\301\202C"
"\377\265y<\377\267y<\377\274}>\377\263w;\377\270{=\377\263w;\377\266y<\377"
"\275~>\377\242l\066\377\065\"\020\262\004\003\001\000^>\036\377\204bB\377\271{=\377\267"
"y<\377\267y<\377\274}>\377\274}>\377\266y<\377\274}>\377\273|>\377\276~?"
"\377\277\177?\377\266y<\377\301\202C\377\274}>\377\274}>\377\261v:\377\275"
"~>\377\267z<\377\273|>\377\265x<\377\264x<\377\274}>\377\271{=\377\274}>"
"\377\274}>\377\266y<\377\274}>\377\274}>\377\300\201A\377\301\202C\377\276"
"~?\377\275~>\377\273|>\377\276~?\377\261v;\377\266y<\377\276~?\377\232f\063"
"\377\065\"\020\262\004\003\001\000^>\036\377\204b@\377\277\177?\377\263w;\377\272|="
"\377\267y<\377\270z=\377\266y<\377\300\200@\377\267z<\377\277\177?\377\300"
"\200@\377\276~?\377\274}>\377\272|=\377\275~>\377\275}>\377\273|>\377\270"
"z=\377\277\177?\377\266y<\377\265x<\377\264x;\377\267z<\377\267y<\377\267"
"z=\377\274}>\377\275}>\377\272|=\377\271{=\377\275}>\377\270z=\377\265x<"
"\377\275}>\377\267y<\377\266y<\377\274}>\377\274}>\377\240j\065\377\065\"\020"
"\262\004\003\001\000^>\036\377\203`>\377\300\201A\377\300\200@\377\265x<\377\276~"
"?\377\267z<\377\274}>\377\271{=\377\267y<\377\265x<\377\274}>\377\276~?\377"
"\272|=\377\276~?\377\274}>\377\263w;\377\266y<\377\274}>\377\267z=\377\266"
"y<\377\272|=\377\275}>\377\274}>\377\272|>\377\265x<\377\273|>\377\275}>"
"\377\267z<\377\300\201A\377\271{=\377\266y<\377\275~>\377\274}>\377\300\200"
"@\377\270{=\377\301\201B\377\266y<\377\243l\066\377\065\"\020\262\004\003\001\000]>"
"\036\377\204cB\377\270z=\377\263w;\377\275}>\377\267y<\377\277\177?\377\277"
"\177?\377\267z<\377\274}>\377\277\177?\377\267y<\377\274}>\377\300\200A\377"
"\273|>\377\276~?\377\274}>\377\272|=\377\277\177?\377\272|=\377\272|=\377"
"\264w;\377\300\200@\377\274}>\377\271{=\377\266y<\377\271{=\377\273|>\377"
"\273|>\377\271{=\377\272|=\377\275~>\377\270z=\377\270z=\377\266y<\377\300"
"\200@\377\273|>\377\266y<\377\242l\065\377\065\"\020\262\004\003\001\000]>\036\377\204"
"b@\377\275~?\377\271{=\377\275}>\377\271{=\377\260u:\377\271{=\377\274}>"
"\377\274}>\377\267z<\377\262w;\377\300\200@\377\274}>\377\266y<\377\274}"
">\377\277\177?\377\275~>\377\300\177?\377\272|=\377\266y<\377\273|>\377\274"
"}>\377\271{=\377\266y<\377\275~>\377\274}>\377\300\200@\377\272|=\377\275"
"}>\377\267y<\377\274}>\377\272{=\377\277\177?\377\270z=\377\277\177?\377"
"\265x<\377\277\177?\377\244m\066\377\065\"\020\262\004\003\001\000^>\036\377\205eD\377"
"\301\201B\377\272|=\377\300\177?\377\265x<\377\267z<\377\271{=\377\271{="
"\377\271{=\377\274}>\377\267z<\377\275~>\377\300\201A\377\271{=\377\265y"
"<\377\272|>\377\263w;\377\300\200A\377\271{=\377\275~>\377\274}>\377\271"
"{=\377\300\200A\377\264x;\377\266y<\377\274}>\377\267z<\377\272|=\377\267"
"z<\377\273|>\377\272|=\377\271{=\377\267y<\377\271{=\377\273|>\377\274}>"
"\377\276\177?\377\242l\065\377\065\"\020\262\004\003\001\000^>\036\377\204cC\377\265"
"x<\377\266y<\377\272|=\377\262v;\377\273}>\377\271{=\377\301\203D\377\271"
"{=\377\300\201A\377\270z=\377\273|>\377\267y<\377\267z<\377\266y<\377\301"
"\201B\377\272|=\377\270z=\377\265y<\377\272|=\377\263w;\377\266y<\377\274"
"}>\377\275~>\377\275}>\377\272|>\377\261u:\377\271{=\377\275~>\377\275~>"
"\377\266y<\377\271{=\377\263w;\377\300\200@\377\266y<\377\277\177?\377\276"
"~?\377\235h\064\377\065\"\020\262\004\003\001\000^>\036\377\204bB\377\275~?\377\270{"
"=\377\277\177?\377\263w;\377\300\200@\377\274}>\377\267y<\377\301\202C\377"
"\267z<\377\271{=\377\276~?\377\266y<\377\274}>\377\262v;\377\300\200A\377"
"\266y<\377\270z=\377\267z<\377\272|=\377\270z=\377\277\177?\377\266y<\377"
"\301\202C\377\266y<\377\272{=\377\274}>\377\276~?\377\274}>\377\270z=\377"
"\267z<\377\264x<\377\266y<\377\265y<\377\262v;\377\271{=\377\301\202D\377"
"\237j\064\377\065\"\020\262\004\003\001\000^>\036\377\204b@\377\301\202C\377\274}>\377"
"\274}>\377\276~?\377\271{=\377\271{=\377\276~?\377\301\201B\377\300\200@"
"\377\277\177?\377\273|>\377\273|>\377\271{=\377\265y<\377\274}>\377\276~"
"?\377\273|>\377\275~>\377\300\200?\377\277\177?\377\300\200@\377\262v;\377"
"\301\202C\377\263w;\377\275~>\377\266y<\377\263w;\377\266y<\377\266y<\377"
"\277\177?\377\261v:\377\267z<\377\275}>\377\274}>\377\267z<\377\300\200@"
"\377\237j\064\377\065\"\020\262\004\003\001\000_>\036\377\204bB\377\271{=\377\302\203"
"E\377\274}>\377\275~>\377\266y<\377\264x;\377\274}>\377\264x;\377\274}>\377"
"\300\177?\377\266y<\377\270z=\377\266y<\377\271{=\377\300\200?\377\277\177"
"?\377\262v;\377\275~>\377\263w;\377\271{=\377\275}>\377\276~?\377\274}>\377"
"\267z<\377\272|>\377\274}>\377\302\203E\377\271{=\377\271{=\377\277\177?"
"\377\272|=\377\261v:\377\275~>\377\264x;\377\267y<\377\301\201B\377\235i"
"\064\377\065\"\020\262\004\003\001\000^>\036\377nQ\064\377\303\205H\377\266y<\377\274"
"}>\377\274}>\377\270z=\377\273|>\377\270{=\377\276~?\377\273}>\377\266y<"
"\377\275~>\377\302\203E\377\274}>\377\276~?\377\276~?\377\276\177?\377\266"
"y<\377\267z<\377\271{=\377\274}>\377\300\200A\377\274}>\377\276~?\377\271"
"{=\377\264x;\377\266y<\377\276\177?\377\300\200@\377\276~?\377\276~?\377"
"\302\203E\377\275~>\377\265y<\377\266y<\377\275~>\377\276\177?\377\240j\065"
"\377\065\"\020\262\004\003\001\000L\062\030\377>(\024\377\302\204F\377\263w;\377\300\201"
"A\377\300\200@\377\274}>\377\271{=\377\273}>\377\300\201A\377\266y<\377\267"
"y<\377\272|=\377\300\201A\377\301\202B\377\273}>\377\300\200@\377\300\200"
"@\377\273|>\377\276~?\377\300\200@\377\276~?\377\272|=\377\270{=\377\300"
"\201A\377\277\177?\377\274}>\377\266y<\377\301\201B\377\273}>\377\270z=\377"
"\274}>\377\274}>\377\275~>\377\300\200@\377\301\202C\377\301\202B\377\264"
"x;\377\241k\065\377\065\"\020\262\004\003\001\000fC!\377cA\040\377\233g\063\377\215^."
"\377\214].\377\215^/\377\216^/\377\207Z-\377\206Y,\377\201V+\377\214].\377"
"\207Z-\377\204X,\377\210Z-\377\216_/\377\233g\063\377\223b\061\377\222a\060"
"\377\226d\062\377\214].\377\210[-\377\210Z-\377\215^/\377\224c\061\377\225"
"c\061\377\230e\062\377\224b\061\377\227e\062\377\225c\061\377\231f\062\377\227"
"d\062\377\230e\062\377\223b\061\377\224b\061\377\223b\061\377\232g\063\377\231"
"f\062\377\216_/\377\211[-\377\065\"\020\262\004\003\001\000V\071\035\177F-\026\377P\063"
"\031\377cA\037\377gC!\377eA\040\377cA\040\377eB\040\377cA\037\377b@\037\377c@\037"
"\377cA\037\377c@\037\377c@\037\377c@\037\377b@\037\377b@\037\377c@\037\377c@\037"
"\377_>\036\377a?\037\377a?\037\377c@\037\377b?\037\377a?\037\377`>\036\377^>\036"
"\377^>\036\377_>\036\377^>\036\377`>\036\377`>\036\377`>\036\377`>\036\377`>\036"
"\377a?\037\377`>\036\377c@\037\377Y:\034\377\065\"\020\324",
};
const char* Artwork::orngBtnUp = (const char*)tempOrngUp;
const char* Artwork::orngBtnDn = (const char*)tempOrngDn;

View File

@ -19,15 +19,14 @@
#include "chassis.hpp" #include "chassis.hpp"
void Chassis::initParameter(uint32_t index, Parameter& parameter) { void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.hints = kParameterIsAutomatable;
parameter.ranges.def = 0.0f;
switch (index) { switch (index) {
case pLFORate: case pLFORate:
parameter.hints = kParameterIsAutomatable;
parameter.name = "LFO Rate"; parameter.name = "LFO Rate";
parameter.symbol = "ch_lforate"; parameter.symbol = "ch_lforate";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 48.0f;
parameter.midiCC = 3; parameter.midiCC = 3;
break; break;
@ -35,6 +34,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "LFO Delay"; parameter.name = "LFO Delay";
parameter.symbol = "ch_lfodelay"; parameter.symbol = "ch_lfodelay";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 0.0f;
parameter.midiCC = 9; parameter.midiCC = 9;
break; break;
@ -42,7 +44,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable | kParameterIsInteger; parameter.hints = kParameterIsAutomatable | kParameterIsInteger;
parameter.name = "Range"; parameter.name = "Range";
parameter.symbol = "ch_vcorange"; parameter.symbol = "ch_vcorange";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 2.0f; parameter.ranges.max = 2.0f;
parameter.ranges.def = 1.0f;
parameter.midiCC = 12; parameter.midiCC = 12;
parameter.enumValues.count = 3; parameter.enumValues.count = 3;
parameter.enumValues.restrictedMode = true; parameter.enumValues.restrictedMode = true;
@ -62,6 +66,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "LFO"; parameter.name = "LFO";
parameter.symbol = "ch_lfo"; parameter.symbol = "ch_lfo";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 10.0f;
parameter.midiCC = 13; parameter.midiCC = 13;
break; break;
@ -69,6 +76,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "PWM"; parameter.name = "PWM";
parameter.symbol = "ch_pwm"; parameter.symbol = "ch_pwm";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 48.0f;
parameter.midiCC = 14; parameter.midiCC = 14;
break; break;
/* /*
@ -96,7 +106,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable | kParameterIsBoolean; parameter.hints = kParameterIsAutomatable | kParameterIsBoolean;
parameter.name = "Saw"; parameter.name = "Saw";
parameter.symbol = "ch_saw"; parameter.symbol = "ch_saw";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1.0f; parameter.ranges.max = 1.0f;
parameter.ranges.def = 0.0f;
parameter.midiCC = 17; parameter.midiCC = 17;
break; break;
@ -104,7 +116,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable | kParameterIsBoolean; parameter.hints = kParameterIsAutomatable | kParameterIsBoolean;
parameter.name = "Square"; parameter.name = "Square";
parameter.symbol = "ch_sqr"; parameter.symbol = "ch_sqr";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1.0f; parameter.ranges.max = 1.0f;
parameter.ranges.def = 0.0f;
parameter.midiCC = 16; parameter.midiCC = 16;
break; break;
@ -112,6 +126,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Sub Osc"; parameter.name = "Sub Osc";
parameter.symbol = "ch_sub"; parameter.symbol = "ch_sub";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 0.0f;
parameter.midiCC = 18; parameter.midiCC = 18;
break; break;
@ -119,6 +136,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Noise"; parameter.name = "Noise";
parameter.symbol = "ch_noise"; parameter.symbol = "ch_noise";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 0.0f;
parameter.midiCC = 19; parameter.midiCC = 19;
break; break;
@ -126,7 +146,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable | kParameterIsInteger; parameter.hints = kParameterIsAutomatable | kParameterIsInteger;
parameter.name = "HPF"; parameter.name = "HPF";
parameter.symbol = "ch_hpf"; parameter.symbol = "ch_hpf";
parameter.ranges.max = 4.0f; parameter.ranges.min = 0.0f;
parameter.ranges.max = 3.9f;
parameter.ranges.def = 0.0f;
parameter.midiCC = 20; parameter.midiCC = 20;
break; break;
@ -134,12 +156,18 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Freq"; parameter.name = "Freq";
parameter.symbol = "ch_freq"; parameter.symbol = "ch_freq";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 60.0f;
parameter.midiCC = 74; parameter.midiCC = 74;
break; break;
case pRes: case pRes:
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Res"; parameter.name = "Res";
parameter.symbol = "ch_reso"; parameter.symbol = "ch_reso";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 0.0f;
parameter.midiCC = 71; parameter.midiCC = 71;
break; break;
/* /*
@ -167,18 +195,27 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Env"; parameter.name = "Env";
parameter.symbol = "ch_vcfenv"; parameter.symbol = "ch_vcfenv";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 46.0f;
parameter.midiCC = 22; parameter.midiCC = 22;
break; break;
case pLfo: case pLfo:
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "LFO"; parameter.name = "LFO";
parameter.symbol = "ch_vcflfo"; parameter.symbol = "ch_vcflfo";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 0.0f;
parameter.midiCC = 23; parameter.midiCC = 23;
break; break;
case pKyb: case pKyb:
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Kybd"; parameter.name = "Kybd";
parameter.symbol = "ch_vcfkey"; parameter.symbol = "ch_vcfkey";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 71.0f;
parameter.midiCC = 24; parameter.midiCC = 24;
break; break;
@ -186,6 +223,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Attack"; parameter.name = "Attack";
parameter.symbol = "ch_attack"; parameter.symbol = "ch_attack";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 27.0f;
parameter.midiCC = 73; parameter.midiCC = 73;
break; break;
@ -193,6 +233,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Decay"; parameter.name = "Decay";
parameter.symbol = "ch_decay"; parameter.symbol = "ch_decay";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 57.0f;
parameter.midiCC = 75; parameter.midiCC = 75;
break; break;
@ -200,6 +243,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Sustain"; parameter.name = "Sustain";
parameter.symbol = "ch_sustain"; parameter.symbol = "ch_sustain";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 57.0f;
parameter.midiCC = 27; parameter.midiCC = 27;
break; break;
@ -207,6 +253,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "Release"; parameter.name = "Release";
parameter.symbol = "ch_release"; parameter.symbol = "ch_release";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 48.0f;
parameter.midiCC = 72; parameter.midiCC = 72;
break; break;
/* /*
@ -234,6 +283,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "VCA Level"; parameter.name = "VCA Level";
parameter.symbol = "ch_vcalevel"; parameter.symbol = "ch_vcalevel";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 127.0f;
parameter.ranges.def = 40.0f;
parameter.midiCC = 26; parameter.midiCC = 26;
break; break;
@ -241,7 +293,9 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.hints = kParameterIsAutomatable | kParameterIsInteger; parameter.hints = kParameterIsAutomatable | kParameterIsInteger;
parameter.name = "Chorus Mode"; parameter.name = "Chorus Mode";
parameter.symbol = "ch_chorus"; parameter.symbol = "ch_chorus";
parameter.ranges.min = 0.0f;
parameter.ranges.max = 2.0f; parameter.ranges.max = 2.0f;
parameter.ranges.def = 1.0f;
parameter.midiCC = 12; parameter.midiCC = 12;
parameter.enumValues.count = 3; parameter.enumValues.count = 3;
parameter.enumValues.restrictedMode = true; parameter.enumValues.restrictedMode = true;

File diff suppressed because it is too large Load Diff

View File

@ -2,13 +2,6 @@
namespace Artwork { namespace Artwork {
extern const char *orngBtnUp;
extern const char *orngBtnDn;
const unsigned int orngBtnSize = 41 * 30 * 4;
const unsigned int orngBtnWidth = 41;
const unsigned int orngBtnHeight = 30;
extern const char *ledOnData; extern const char *ledOnData;
const unsigned int ledDataSize = 24 * 24 * 4; const unsigned int ledDataSize = 24 * 24 * 4;
const unsigned int ledWidth = 24; const unsigned int ledWidth = 24;

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,119 +18,142 @@ 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(92, 72);
xSliderLFODelay->setEndPos(92, 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(518, 72);
xSliderSubLevel->setEndPos(518, 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(560, 72);
xSliderNoiseLevel->setEndPos(560, 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(619, 72);
xSliderHPF->setEndPos(619, 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, kImageFormatRGBA),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA));
xBtn16ft->setAbsolutePos(149, 104);
xBtn16ft->setId(btn16);
xBtn16ft->setCallback(this);
xBtn8ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA));
xBtn8ft->setAbsolutePos(190, 104);
xBtn8ft->setId(btn8);
xBtn8ft->setCallback(this);
xBtn4ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA));
xBtn4ft->setAbsolutePos(231, 104);
xBtn4ft->setId(btn4);
xBtn4ft->setCallback(this);
// waveform
xBtnPls = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA));
xBtnPls->setAbsolutePos(414, 104);
xBtnPls->setId(btnPls);
xBtnPls->setCallback(this);
xBtnSaw = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA));
xBtnSaw->setAbsolutePos(455, 104);
xBtnSaw->setId(btnSaw);
xBtnSaw->setCallback(this);
// Chorus
xBtnCh0 = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA));
xBtnCh0->setAbsolutePos(562, 293);
xBtnCh0->setId(btnCh0);
xBtnCh0->setCallback(this);
xBtnCh1 = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA));
xBtnCh1->setAbsolutePos(603, 293);
xBtnCh1->setId(btnCh1);
xBtnCh1->setCallback(this);
xBtnCh2 = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA));
xBtnCh2->setAbsolutePos(644, 293);
xBtnCh2->setId(btnCh2);
xBtnCh2->setCallback(this);
programLoaded(0); programLoaded(0);
} }
@ -148,92 +163,86 @@ DistrhoUIchassis::~DistrhoUIchassis() {
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;
} }
} }
} }
@ -250,43 +259,6 @@ void DistrhoUIchassis::imageSliderValueChanged(ImageSlider* slider, float value)
setParameterValue(slider->getId(), value); setParameterValue(slider->getId(), value);
} }
void DistrhoUIchassis::imageButtonClicked(ImageButton* imgBtn, int) {
int id = imgBtn->getId();
// printf("imagebutton %d\n", id);
switch (id) {
case btn16:
sw1 &= 0xf8;
sw1 |= 0x01;
break;
case btn8:
sw1 &= 0xf8;
sw1 |= 0x02;
break;
case btn4:
sw1 &= 0xf8;
sw1 |= 0x04;
break;
case btnPls:
sw1 ^= 0x08;
break;
case btnSaw:
sw1 ^= 0x10;
break;
case btnCh0:
sw1 = (sw1 & 0x1f) | 0x20;
break;
case btnCh1:
sw1 = (sw1 & 0x1f) | 0x40;
break;
case btnCh2:
sw1 = (sw1 & 0x1f);
break;
default:
break;
}
}
void DistrhoUIchassis::onDisplay() { void DistrhoUIchassis::onDisplay() {
const GraphicsContext& context(getGraphicsContext()); const GraphicsContext& context(getGraphicsContext());
fImgBackground.draw(context); fImgBackground.draw(context);
@ -295,10 +267,10 @@ void DistrhoUIchassis::onDisplay() {
if (sw1 & 0x01) fImgLedOn.drawAt(context, 160, 77); // 16' if (sw1 & 0x01) fImgLedOn.drawAt(context, 160, 77); // 16'
if (sw1 & 0x02) fImgLedOn.drawAt(context, 198, 77); // 8' if (sw1 & 0x02) fImgLedOn.drawAt(context, 198, 77); // 8'
if (sw1 & 0x04) fImgLedOn.drawAt(context, 238, 77); // 4' if (sw1 & 0x04) fImgLedOn.drawAt(context, 238, 77); // 4'
if (sw1 & 0x08) fImgLedOn.drawAt(context, 424, 77); // pulse if (sw1 & 0x08) fImgLedOn.drawAt(context, 427, 77); // pulse
if (sw1 & 0x10) fImgLedOn.drawAt(context, 464, 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() {

View File

@ -8,8 +8,7 @@
START_NAMESPACE_DISTRHO START_NAMESPACE_DISTRHO
class DistrhoUIchassis : public UI, class DistrhoUIchassis : public UI,
public ImageSlider::Callback, public ImageSlider::Callback {
public ImageButton::Callback {
public: public:
DistrhoUIchassis(); DistrhoUIchassis();
~DistrhoUIchassis() override; ~DistrhoUIchassis() override;
@ -23,8 +22,6 @@ class DistrhoUIchassis : public UI,
void imageSliderDragFinished(ImageSlider* slider) override; void imageSliderDragFinished(ImageSlider* slider) override;
void imageSliderValueChanged(ImageSlider* slider, float value) override; void imageSliderValueChanged(ImageSlider* slider, float value) override;
void imageButtonClicked(ImageButton *imageButton, int button) override;
private: private:
Image fImgBackground; Image fImgBackground;
Image fImgLedOn; Image fImgLedOn;
@ -33,8 +30,6 @@ class DistrhoUIchassis : public UI,
xSliderLFODepth, xSliderPWMDepth, xSliderSubLevel, xSliderNoiseLevel, xSliderLFODepth, xSliderPWMDepth, xSliderSubLevel, xSliderNoiseLevel,
xSliderHPF, xSliderCutoff, xSliderRes, xSliderEnv, xSliderLfo, xSliderKyb, xSliderHPF, xSliderCutoff, xSliderRes, xSliderEnv, xSliderLfo, xSliderKyb,
xSliderVCALevel, xSliderAtk, xSliderDcy, xSliderStn, xSliderRls; xSliderVCALevel, xSliderAtk, xSliderDcy, xSliderStn, xSliderRls;
ScopedPointer<ImageButton> xBtn16ft, xBtn8ft, xBtn4ft, xBtnPls, xBtnSaw, xBtnCh0, xBtnCh1, xBtnCh2;
uint8_t sw1 = 0, sw2 = 0; uint8_t sw1 = 0, sw2 = 0;
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUIchassis) DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUIchassis)
// ImageAboutWindow fAboutWindow; // ImageAboutWindow fAboutWindow;