Compare commits

..

3 Commits

Author SHA1 Message Date
Gordon JC Pearce a65a9eeab4 lookup table maps params to sliders 2025-02-16 22:21:32 +00:00
Gordon JC Pearce 71a9f5b03d slider updates work again 2025-02-16 22:14:12 +00:00
Gordon JC Pearce a54929c2b3 decouple sliders and parameters 2025-02-16 22:03:46 +00:00
7 changed files with 15628 additions and 16660 deletions

View File

@ -31,25 +31,25 @@
#define DISTRHO_PLUGIN_HAS_UI 1 #define DISTRHO_PLUGIN_HAS_UI 1
enum Parameters { enum Parameters {
pLFORate, pLfoRate,
pLFODelay, pLfoDelay,
pVCORange, pVcoRange,
pLFODepth, pLfoDepth,
pPWMDepth, pPwmDepth,
pSqr, pSqr,
pSaw, pSaw,
pSubLevel, pSubLevel,
pNoiseLevel, pNoiseLevel,
pHPF, pHpf,
pCutoff, pCutoff,
pRes, pRes,
pEnv, pEnv,
pLfo, pLfo,
pKyb, pKyb,
pVCALevel, pVcaLevel,
pAtk, pAtk,
pDcy, pDcy,

View File

@ -1,364 +1,239 @@
#include "peacock.hpp" #include "peacock.hpp"
static const char tempOrngUp[] = { 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" "!!%%%$##&&&###\"\"\"!!!$$$\"!!###!\040\040\040\040\040#\"\"$##!!!!!!%%%%$$&%%"
"\377\223b\060\377\231f\062\377\223b\061\377\222a\060\377\226d\062\377\227e\062" "#\"\"\"\"\"!!!\"!!###?GNS\\f[eoXbl[eoYblYcnWak[eoYcm\\gqYblXakZdoZeo]gqX"
"\377\223b\060\377\220`\060\377\224b\061\377\233g\063\377\232f\063\377\226d\062" "akYcmWakYclZdoZeoZdnZdnYblXak[epXblWakZdnZdoXakV`jYcl]gq\\gqZdnXakU_i\015"
"\377\223b\060\377\217_/\377\004\003\001\000\004\003\001\000\243l\066\377\331\263\215\377\321" "\015\015\016\016\016%$$bmw\253\263\273\231\242\253\232\243\254\227\240\252\232"
"\242s\377\321\243u\377\320\241q\377\321\243u\377\321\243u\377\320\240o\377" "\243\254\232\243\254\226\237\251\230\241\252\230\241\252\232\243\254\230"
"\320\241r\377\320\241r\377\321\243u\377\320\241r\377\320\241r\377\322\244" "\241\252\230\241\252\232\243\255\233\244\256\231\242\253\227\241\252\230"
"u\377\322\245w\377\321\242s\377\320\240q\377\321\242r\377\321\243u\377\317" "\241\253\232\243\254\225\236\250\230\241\252\231\242\253\230\241\253\233"
"\237n\377\320\241r\377\321\242s\377\321\242r\377\322\244v\377\321\242s\377" "\244\255\231\242\253\225\237\251\231\242\253\226\237\251\231\242\253\230"
"\317\237o\377\321\242s\377\320\240o\377\321\242s\377\320\241r\377\320\241" "\241\252\227\240\252\231\242\253\231\242\253\231\242\253\226\240\251\231"
"q\377\321\242s\377\321\242s\377\321\242s\377\320\237o\377\321\243t\377\321" "\242\254\231\242\253o{\207fq}(-\061\014\013\013%$$_jt\234\245\256~\212\226{\210"
"\242s\377\271{=\377\253r\070\377\217_/\062\004\003\001\000\237i\064\377\322\245x\377" "\224\177\213\226{\210\224\200\214\230~\212\226z\206\223~\212\225\202\216"
"\305\212O\377\304\207K\377\305\212P\377\304\207K\377\306\214R\377\305\212" "\231z\207\223~\212\225~\212\226{\210\224z\207\223\177\213\226x\205\221}\210"
"O\377\303\207J\377\305\211N\377\307\215T\377\303\206J\377\305\211N\377\305" "\224{\210\224}\210\224z\206\222\200\214\227~\211\225{\210\224y\205\222~\212"
"\212O\377\304\207K\377\303\206J\377\305\212P\377\302\204G\377\304\211M\377" "\226~\212\225\177\213\226\177\213\226{\210\224y\205\222{\210\224\177\213"
"\304\207K\377\304\211M\377\303\206I\377\306\213Q\377\305\212N\377\304\207" "\226\200\214\230{\210\224}\210\224t\200\215kw\202CKS\036!$$##_it\226\240\252"
"K\377\303\206H\377\305\212O\377\305\211N\377\305\212P\377\305\212P\377\304" "u\202\216n{\207n{\207t\201\215lx\205my\205u\202\217ly\205o{\207o{\207mz\206"
"\207K\377\303\206H\377\304\207K\377\305\212P\377\306\214R\377\304\207K\377" "q}\212s\200\215p|\211my\206p|\211my\205s\200\215o|\210lx\205o{\210kw\204"
"\304\211M\377\300\201A\377\262v;\377rK$\377>(\024\226\237j\064\377\320\240" "s\200\215t\200\215r~\213ju\201u\202\217my\206q}\212my\206my\206q}\212my\206"
"p\377\301\201B\377\270z=\377\270z=\377\300\200A\377\265y<\377\266y<\377\301" "my\206u\202\216q~\212_it=DK\032\035\040!!!]gr\225\236\250mz\206r\177\213jv\201"
"\202C\377\265x<\377\271{=\377\271{=\377\267y<\377\275~>\377\300\200@\377" "mz\206o{\207p}\211r\177\213q}\212my\205p}\212q}\212lx\205q}\212kw\202nz\207"
"\273}>\377\267z<\377\273}>\377\266y<\377\300\200@\377\272{=\377\265y<\377" "my\206mz\206r\177\213lx\205p|\211s\200\215r~\213kw\203n{\207q}\212lx\205"
"\272|=\377\264x;\377\300\200@\377\300\201A\377\276\177?\377\261v:\377\301" "n{\207o{\210my\205q}\212o{\210o{\210n{\207kw\204p}\211r\177\213\\gq;BI\034"
"\202C\377\267z<\377\275~>\377\267z<\377\267z<\377\275~>\377\267z<\377\267" "\040##\"\"^hs\231\242\253v\202\217p}\212mz\206t\201\215o{\207p}\211r\177\214"
"z<\377\301\201B\377\275}>\377\237j\064\377hD\040\377>(\024n\234h\063\377\317" "lx\204my\205o|\210q}\212iu\201mz\206s\200\215t\201\215q~\212mz\206n{\207"
"\237n\377\267y<\377\276~?\377\261u:\377\267y<\377\271{=\377\273|>\377\276" "kw\204r\177\213ly\205q}\212o{\210r\177\213s\200\215o{\207o|\210nz\207kw\203"
"~?\377\275~>\377\266y<\377\274}>\377\275~>\377\265y<\377\275~>\377\262v;" "r\177\213o|\210kw\202kw\203t\201\215mz\206p}\212^hr:AG\036\"&$##_it\226\240"
"\377\270{=\377\267z<\377\267y<\377\276~?\377\265y<\377\273}>\377\300\200" "\252u\202\217p}\211kw\202mz\206u\202\216p}\212p}\212r\177\214t\200\215n{"
"@\377\276\177?\377\263w;\377\270z=\377\275~>\377\265y<\377\270z=\377\272" "\207mz\206u\202\216q}\212o{\210p}\212my\205o{\207o{\207p}\212s\200\215r\177"
"|=\377\266y<\377\275~>\377\272|=\377\272|=\377\270z=\377\264x;\377\273|>" "\214q~\212p}\211p}\211q}\212r\177\213o{\207u\202\216o{\207o{\207r\177\214"
"\377\276~?\377\232f\063\377eB\037\377\065\"\020\303\235i\064\377\321\242s\377" "u\202\216p}\212jv\201u\202\217u\202\216\\fp:AH\036\"&!\040\040_it\230\242\253"
"\301\203D\377\274}>\377\267y<\377\300\200A\377\271{=\377\273|>\377\277\177" "z\206\222o{\207ly\205o{\210q}\212p|\211u\202\217r\177\214o{\210ly\205my\205"
"?\377\264x<\377\266y<\377\272{=\377\275~>\377\260u:\377\267y<\377\300\200" "kw\204p}\211p}\212o|\210p}\212my\205my\206o{\207my\205o{\207my\206kw\204"
"@\377\300\200A\377\275}>\377\267y<\377\270z=\377\264x;\377\276~?\377\265" "q~\212my\205p}\212u\202\216r\177\214o{\210kw\202u\202\216t\200\215p}\211"
"x<\377\275~>\377\272|=\377\276~?\377\300\200@\377\271{=\377\272{=\377\270" "r\177\213u\202\216lx\204blw:AG\036\"&###_jt\226\240\252x\204\220my\206kw\203"
"{=\377\263w;\377\276~?\377\272{=\377\262v;\377\263w;\377\300\200A\377\267" "ly\205my\206kw\202lx\205t\201\215r\177\214p}\212r\177\214n{\207kw\202s\200"
"y<\377\274}>\377\234h\064\377b@\037\377\065\"\020\370\237j\064\377\320\240p\377" "\215p|\210ju\201mz\206my\205u\202\216o{\210my\206o|\210o{\207n{\207o{\210"
"\301\202C\377\273|>\377\262v;\377\267y<\377\301\201B\377\274}>\377\274}>" "p}\212my\205s\200\215nz\207mz\206p}\212q~\212p}\212o{\207q~\212p}\212^it"
"\377\277\177?\377\300\201A\377\270z=\377\267y<\377\301\201B\377\275~>\377" "<CK\036\"&$$$`ku\226\240\252s\200\215u\202\216r\177\214r\177\213my\205q~\212"
"\272|=\377\274}>\377\266y<\377\271{=\377\271{=\377\274}>\377\300\200@\377" "o{\207mz\206p}\211kw\204p}\212r\177\213o{\207mz\206p}\212mz\206ly\205q~\212"
"\277\177?\377\275}>\377\273|>\377\273|>\377\275~>\377\276~?\377\271{=\377" "mz\206t\200\215r\177\213mz\206kw\204r\177\213u\202\217o{\207n{\207o{\210"
"\301\201B\377\271{=\377\271{=\377\277\177?\377\301\201B\377\274}>\377\261" "q}\212my\205p|\210o{\207s\200\215s\200\215my\206p}\212_it;AH\036\"&$##_it"
"u:\377\301\202C\377\301\201B\377\231f\063\377cA\037\377\065\"\020\370\237j\064" "\231\242\253p}\212jv\201mz\206mz\206o|\210r\177\213o{\207my\205o{\207p|\210"
"\377\321\241r\377\303\206I\377\271{=\377\265x<\377\272|=\377\275~>\377\273" "t\201\215o{\207p}\211lx\205lx\204s\200\215o{\207kw\202kv\202lx\204u\202\216"
"}>\377\301\202C\377\277\177?\377\272|=\377\265x<\377\266y<\377\264x;\377" "p}\212o{\210ly\205s\200\215o{\207v\202\217ly\205r\177\214u\202\217p}\212"
"\273|>\377\274}>\377\272{=\377\274}>\377\266y<\377\267z<\377\271{=\377\266" "r\177\213kw\204o{\207o{\207o{\210^hs;BI\036\"&#\"\"_jt\226\240\252my\206o"
"y<\377\271{=\377\267z<\377\264x;\377\275}>\377\266y<\377\274}>\377\301\201" "{\207s\200\215my\206o{\207kw\202r\177\213kw\203ly\205my\205o{\210s\200\214"
"B\377\277\177?\377\272|=\377\262v;\377\301\201B\377\300\201A\377\273|>\377" "p}\212my\205s\200\215mz\206q}\212q~\212r\177\213my\205q~\212s\200\214kw\203"
"\276~?\377\301\201B\377\264x<\377\243m\066\377b@\037\377\065\"\020\370\237i\064" "my\205n{\207kw\203lx\204p}\212r\177\214o{\207s\200\215r\177\214o{\207t\200"
"\377\320\240p\377\302\204F\377\267z<\377\263w;\377\265x<\377\267z<\377\262" "\215p}\211my\205do{;AH\036\"&\"!!^hs\226\240\251r\177\214s\200\215q~\212n"
"v;\377\265y<\377\300\200A\377\277\177?\377\274}>\377\277\177?\377\270z=\377" "{\207mz\206q}\212o{\207my\205o{\207p}\212o{\207kw\203iu\201r\177\214kv\202"
"\262v;\377\300\200@\377\272|>\377\261v:\377\267y<\377\266y<\377\301\201B" "q~\212p}\211u\202\216kw\202mz\206p|\210mz\206p}\212p}\211t\201\215my\206"
"\377\272|=\377\267z<\377\272{=\377\271{=\377\270z=\377\272|=\377\274}>\377" "lx\205q~\212my\205o{\207kw\202p}\211o{\207s\200\215p}\212p}\212bmw>FM\036"
"\266y<\377\300\200@\377\270{=\377\267y<\377\274}>\377\275}>\377\274}>\377" "\"&&%%\\fq\223\235\246my\206my\206my\205kw\204my\205my\205t\201\215p|\210"
"\271{=\377\275}>\377\274}>\377\236i\064\377gD\040\377\065\"\020\370\240j\065\377" "o{\207o{\210p|\211p}\212p}\211o{\210u\202\216r\177\213lx\205ly\205n{\207"
"\320\240p\377\300\200@\377\301\201B\377\277\177?\377\276~?\377\266y<\377" "my\205kw\202my\206kw\204u\202\217p}\212my\205ly\205u\202\217lx\205mz\206"
"\275}>\377\271{=\377\267y<\377\273|>\377\264x;\377\274}>\377\276~?\377\271" "p}\212kw\203nz\207kw\203my\205q}\212alw<DK\036\"&%%%]gr\225\237\250o{\207"
"{=\377\267y<\377\274}>\377\267y<\377\265x<\377\275}>\377\267y<\377\300\201" "mz\206mz\206p}\212p}\212my\205p}\212p}\211r\177\213r\177\214my\205u\202\217"
"A\377\276~?\377\267y<\377\264x;\377\276~?\377\301\202C\377\271{=\377\270" "p}\212p}\212ju\201q}\212my\206p}\211ly\205lx\204p}\212o{\207p}\212p}\212"
"z=\377\272|=\377\275~>\377\266y<\377\272|>\377\271{=\377\300\200@\377\300" "my\205p}\212p}\212t\200\215u\202\217r\177\213q}\212p}\211r\177\213jv\202"
"\200@\377\267z<\377\274}>\377\237j\064\377dB\037\377\065\"\020\370\237j\064\377" "my\205r\177\213\\gq<CJ\036\"&\"\"\"]gq\224\236\247r\177\214kw\203o{\210mz"
"\321\242s\377\274}>\377\261u:\377\267y<\377\267y<\377\272{=\377\276~?\377" "\206n{\207my\205s\200\215my\206r\177\214s\200\215r\177\213p}\212o{\210q}"
"\271{=\377\266y<\377\271{=\377\272|>\377\300\200A\377\271{=\377\273|>\377" "\212q~\212p}\211n{\207r\177\214my\205ly\205kw\204my\206mz\206nz\206p}\212"
"\265y<\377\264x<\377\300\200@\377\271{=\377\262v;\377\262w;\377\264x<\377" "q~\212o{\210o{\207q~\212n{\207ly\205q~\212mz\206my\205p}\212p}\212`ku:AG"
"\301\201B\377\274}>\377\272|=\377\265x<\377\300\200@\377\271{=\377\301\203" "\036\"&#\"\"]gr\221\234\246t\200\215s\200\215ly\205r\177\213my\206p}\212o"
"D\377\265x<\377\277\177?\377\301\202C\377\274}>\377\276~?\377\264x;\377\271" "{\207mz\206ly\205p}\212r\177\213o{\210r\177\213p}\212kw\203my\205p}\212n"
"{=\377\271{=\377\272|=\377\235i\064\377eB\037\377\065\"\020\370\237i\064\377\320" "z\206my\205o{\210q~\212p}\212p|\210ly\205p}\211q~\212my\206t\200\215o{\207"
"\240p\377\267z<\377\271{=\377\300\200@\377\267z<\377\271{=\377\262v;\377" "my\205q}\212p}\212s\200\215nz\207u\202\216my\205bmw<CI\036\"&!!!\\fq\226\240"
"\276~?\377\263w;\377\265x<\377\266y<\377\272|=\377\300\177?\377\274}>\377" "\251n{\207kw\203q~\212mz\206r\177\214r\177\214my\206p}\212r\177\214mz\206"
"\266y<\377\300\200@\377\267y<\377\275~>\377\275}>\377\276~?\377\266y<\377" "p}\212t\201\215p}\211r\177\213p}\212o{\210r\177\214o{\210o{\210kx\204s\200"
"\275}>\377\300\177?\377\263w;\377\266y<\377\270z=\377\263w;\377\264x<\377" "\215p}\212o{\207my\205o{\207p}\211p}\211o{\207o{\210q}\212n{\207n{\207my"
"\274}>\377\277\177?\377\271{=\377\300\200@\377\277\177?\377\271{=\377\300" "\205s\200\215p}\211my\205akv<DK\036\"&$##\\fq\224\235\247q~\213o{\207q~\212"
"\201A\377\273|>\377\266y<\377\250p\067\377dB\037\377\065\"\020\370\235i\064\377" "o{\207iu\201o{\207p}\212p}\212my\206kv\202s\200\215p}\212my\205p}\212r\177"
"\320\237o\377\277\177?\377\300\200@\377\275}>\377\270z=\377\267y<\377\275" "\214q}\212s\200\214o{\210my\205p}\211p}\212o{\207my\205q}\212p}\212s\200"
"~>\377\271{=\377\266y<\377\271{=\377\274}>\377\271{=\377\263w;\377\260u:" "\215o{\210q~\212mz\206p}\212o|\210r\177\214n{\207r\177\214ly\205r\177\214"
"\377\277\177?\377\262w;\377\275}>\377\273|>\377\301\201B\377\262v;\377\267" "bmx<CJ\036\"&\"\"\"]gq\230\241\253u\202\216o{\210s\200\214ly\205my\206o{\207"
"y<\377\272|>\377\267y<\377\274}>\377\273|>\377\300\200A\377\267z<\377\265" "o{\207o{\207p}\212my\206q}\212t\200\215o{\207lx\205p|\210kw\203t\201\215"
"y<\377\275}>\377\266y<\377\271{=\377\262v;\377\273|>\377\271{=\377\300\200" "o{\207q}\212p}\212o{\207t\201\215kw\204my\205p}\212my\206o{\210my\206p}\211"
"@\377\274}>\377\274}>\377\243l\066\377jE!\377\065\"\020\370\232g\063\377\316" "o{\210o{\207mz\206o{\207p}\211p}\212r~\213akv<CK\036\"&\"!!^hs\226\240\252"
"\234k\377\267z<\377\267z<\377\266y<\377\264x;\377\266y<\377\266y<\377\300" "ly\205my\205o{\210kw\202p|\211o{\207v\202\217o{\207t\200\215n{\207p}\211"
"\200A\377\272|>\377\271{=\377\272|=\377\273}>\377\274}>\377\273|>\377\272" "mz\206my\206my\205u\202\216o{\210n{\207lx\205o{\210kw\203my\205p}\212q}\212"
"|=\377\301\201B\377\276~?\377\265y<\377\265x<\377\270z=\377\266y<\377\262" "q~\212p|\210jv\201o{\207q}\212q}\212my\205o{\207kw\203s\200\215my\205r\177"
"v;\377\267z<\377\264x;\377\301\202C\377\274}>\377\266y<\377\265x<\377\301" "\214r\177\213^is<CJ\036\"&###]gq\225\237\250q~\213nz\207r\177\214kw\203s\200"
"\202C\377\265y<\377\267y<\377\274}>\377\263w;\377\270{=\377\263w;\377\266" "\215p}\212mz\206u\202\217my\206o{\207r\177\213my\205p}\212kw\202t\201\215"
"y<\377\275~>\377\242l\066\377gC\040\377\065\"\020\370\234h\063\377\317\236n\377" "my\205n{\207my\206o{\210n{\207r\177\214my\205u\202\217my\205o|\210p}\212"
"\271{=\377\267y<\377\267y<\377\274}>\377\274}>\377\266y<\377\274}>\377\273" "r\177\213p}\212n{\207my\206lx\204my\205lx\205kw\202o{\207v\203\217_it;BH"
"|>\377\276~?\377\277\177?\377\266y<\377\301\202C\377\274}>\377\274}>\377" "\036\"&\"!!]gr\224\236\247u\202\217p}\212p}\212r\177\213o{\207o{\207r\177"
"\261v:\377\275~>\377\267z<\377\273|>\377\265x<\377\264x<\377\274}>\377\271" "\213u\202\216s\200\215r\177\214p}\211p}\211o{\207lx\205p}\212r\177\213p}"
"{=\377\274}>\377\274}>\377\266y<\377\274}>\377\274}>\377\300\201A\377\301" "\211q}\212s\177\214r\177\214s\200\215kw\202u\202\217kw\203q}\212my\205kw"
"\202C\377\276~?\377\275~>\377\273|>\377\276~?\377\261v;\377\266y<\377\276" "\203my\205my\205r\177\214ju\201my\206q~\212p}\212my\206s\200\215_it;BI\036"
"~?\377\232f\063\377fC\040\377\065\"\020\370\233g\063\377\317\235l\377\277\177" "\"&$##_it\225\237\250o{\207w\204\220p}\212q}\212my\205kw\204p}\212kw\204"
"?\377\263w;\377\272|=\377\267y<\377\270z=\377\266y<\377\300\200@\377\267" "p}\212s\200\214my\205n{\207my\205o{\207s\177\214r\177\214kw\202q}\212kw\203"
"z<\377\277\177?\377\300\200@\377\276~?\377\274}>\377\272|=\377\275~>\377" "o{\207q~\212r\177\213p}\212my\206p|\210p}\212w\204\220o{\207o{\207r\177\214"
"\275}>\377\273|>\377\270z=\377\277\177?\377\266y<\377\265x<\377\264x;\377" "o{\210ju\201q}\212kw\204mz\206u\202\216^hs;BI\036\"&\"!!]gq\224\236\247y\206"
"\267z<\377\267y<\377\267z=\377\274}>\377\275}>\377\272|=\377\271{=\377\275" "\222my\205p}\212p}\212n{\207p}\211nz\207r\177\213p|\211my\205q}\212w\204"
"}>\377\270z=\377\265x<\377\275}>\377\267y<\377\266y<\377\274}>\377\274}>" "\220p}\212r\177\213r\177\213r~\213my\205my\206o{\207p}\212t\201\215p}\212"
"\377\240j\065\377b@\037\377\065\"\020\370\234h\063\377\316\233i\377\300\201A\377" "r\177\213o{\207kw\204my\205r~\213s\200\215r\177\213r\177\213w\204\220q}\212"
"\300\200@\377\265x<\377\276~?\377\267z<\377\274}>\377\271{=\377\267y<\377" "lx\205my\205q}\212r~\213`ku;AH\036\"&$$$kw\204\253\263\273x\204\220kw\203"
"\265x<\377\274}>\377\276~?\377\272|=\377\276~?\377\274}>\377\263w;\377\266" "t\200\215s\200\215p}\212o{\207p|\211t\200\215my\205mz\206o{\210t\200\215"
"y<\377\274}>\377\267z=\377\266y<\377\272|=\377\275}>\377\274}>\377\272|>" "u\201\216p|\211s\200\215s\200\215p}\211r\177\213s\200\215r\177\213o{\210"
"\377\265x<\377\273|>\377\275}>\377\267z<\377\300\201A\377\271{=\377\266y" "nz\207t\200\215r\177\214p}\212my\205u\202\216p|\211n{\207p}\212p}\212q}\212"
"<\377\275~>\377\274}>\377\300\200@\377\270{=\377\301\201B\377\266y<\377\243" "s\200\215u\202\217u\201\216kw\204`kv<CI\036\"&!!!@GNQZd]gqT]gT]fU^gU_hQZc"
"l\066\377eB\040\377\065\"\020\370\232g\063\377\320\237o\377\270z=\377\263w;\377" "PYbMV_T]fQZcOXaQ[dU^h]gqXblWakZdnT]fQZdQ[dU^gYblYcm[eoYclZdoYcm[epZeo[eo"
"\275}>\377\267y<\377\277\177?\377\277\177?\377\267z<\377\274}>\377\277\177" "XblYclXbl\\fq[epU^hR[d<CJ\036\"&#\"\"(,/\065<B/\065::AH=DK<CI;BH<CI:AH:AG:A"
"?\377\267y<\377\274}>\377\300\200A\377\273|>\377\276~?\377\274}>\377\272" "H:AH:AH:AH:AH:AG:AG:AH:AH\070?E\071@G\071@G:AH:AG\071@G\070?F\070>D\070>D\070?E\070"
"|=\377\277\177?\377\272|=\377\272|=\377\264w;\377\300\200@\377\274}>\377" ">D\070?F\070?F\070?F\070?F\070?F\071@G\070?F:AH\064;A,\062\067\036\"&$##\015\015\015:A"
"\271{=\377\266y<\377\271{=\377\273|>\377\273|>\377\271{=\377\272|=\377\275" "G(-\061',\061\061\067<\063\071>\062\070=\061\067<\062\070=\061\067<\061\067<\061\067<\061\067"
"~>\377\270z=\377\270z=\377\266y<\377\300\200@\377\273|>\377\266y<\377\242" "<\061\067<\061\067<\061\067<\061\067<\061\067<\061\067<\061\067</\065;\060\066<\060\066<\061"
"l\065\377gC\040\377\065\"\020\370\232g\063\377\317\236l\377\275~?\377\271{=\377" "\067<\061\067<\060\066</\065;/\065:/\065:/\065;/\065:/\065;/\065;/\065;/\065;/\065;\060\066"
"\275}>\377\271{=\377\260u:\377\271{=\377\274}>\377\274}>\377\267z<\377\262" "</\065;.\064\071#(,\037#&\"!!\015\015\015*/\063&+/-\062\067.\063\070\063\071>\062\070=\061"
"w;\377\300\200@\377\274}>\377\266y<\377\274}>\377\277\177?\377\275~>\377" "\067<\062\070=\061\067<\061\067<\061\067<\061\067<\061\067<\061\067<\061\067<\061\067<\061\067"
"\300\177?\377\272|=\377\266y<\377\273|>\377\274}>\377\271{=\377\266y<\377" "<\061\067<\061\067</\065;\060\066<\060\066<\061\067<\061\067<\060\066</\065;/\065:/\065:/\065"
"\275~>\377\274}>\377\300\200@\377\272|=\377\275}>\377\267y<\377\274}>\377" ";/\065:/\065;/\065;/\065;/\065;/\065;\060\066</\065;\061\067<+\060\065\037#&\060//$$$%$"
"\272{=\377\277\177?\377\270z=\377\277\177?\377\265x<\377\277\177?\377\244" "$!!!\"\"\"$##$##\"\"\"###\"\"\"$$$\"!!$##$##&%%\040\040\040\040\040\040%$$%$$!"
"m\066\377fC\040\377\065\"\020\370\233g\063\377\321\242r\377\301\201B\377\272|" "\040\040###%$$$$$#\"\"$#####%$$!!!%$$!!!\"!!$$$$##\040\037\037###\"!!%%%$####"
"=\377\300\177?\377\265x<\377\267z<\377\271{=\377\271{=\377\271{=\377\274" "##\"\"#\"\"!\040\040",
"}>\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[] = { 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" "!!%%%$##&&&###\"\"\"!!!$$$\"!!###!\040\040\040\040\040#\"\"$##!!!!!!%%%%$$&%%"
"\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" "#\"\"\"\"\"!!!\"!!###\014\013\013\020\017\017\014\014\014\017\016\016\016\015\015\015\015"
"\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" "\015\014\014\014\016\015\015\015\015\015\015\015\015\014\013\013\014\014\014\012\011\011\015\015"
">(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235" "\015\017\016\016\015\015\015\014\014\014\014\014\014\017\017\017\015\015\015\017\016\016\016\015"
">(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235" "\015\015\015\015\017\016\016\021\021\021\020\017\017\015\015\015\015\015\015\015\015\015\016\016"
">(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235" "\016\015\015\015\020\020\020\020\017\017\013\012\012\016\016\016\015\015\015\013\013\013\015\015"
">(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235>(\024\235" "\015\015\015\015\015\015\015\016\016\016%$$\015\015\015\023\025\026\"&*\036\"%\036\"%\037#&"
">(\024\235>(\024\235>(\024\235\004\003\001\000\004\003\001\000\004\003\001\000eC!\377_@\036\377\217_" "\036!$\037#&\036\"%\036\"%\036\"%\036\"%\036\"%\036!$\037\"%\036!$\036!$\036\"%\037#&"
"/\377\212\\.\377\217_/\377\213].\377\215^.\377\211[-\377\217_/\377\214]." "\036\"%\036!$\036\"%\036\"%\036\"%\037#&\037\"%\036\"%\036\"%\036\"%\036\"%\036\"%\036"
"\377\221`\060\377\213].\377\212\\-\377\216_/\377\216^/\377\222a\060\377\212" "\"%\036\"%\036\"%\036\"%\036\"%\036!$\036\"%\037#&\012\011\011\014\013\013%$$\014\014\014"
"\\-\377\214].\377\211[-\377\213\\.\377\216_/\377\216^/\377\215^/\377\215" "<CJ\070>EU_iS\\eU_iS\\fT]gR[dU_iT]fWajS\\fR[eU^hU_hWakR[eT]fR[dS]fU^hU_hU"
"^/\377\213].\377\212\\-\377\220`/\377\212\\.\377\211[-\377\215^/\377\216" "^gU^gS\\fR[eV_iS\\eR[dU^gU^hR[eQ[dS]fWakWajU^gR[eS]f\016\016\016$##\014\014\014"
"_/\377\212\\-\377\210Z-\377\213\\.\377\222a\060\377\221`\060\377\215^/\377" "\071@G\062\067;RX^Y_eW]cY_eY_eV\\cW^dW^dY_eW^dW^dY_eZ`eX_eW]cX^dY_eV]cW^dX_"
"\212\\-\377\217_/\360\004\003\001\000\004\003\001\000a?\037\377K\066\"\377uX;\377}^A\377|]" "eX^dY_eX_eV]cX_eV\\cX_eW^dW]cX_eX_eX_eV]cX_eX_eBJR\070>E\023\025\026!!!\016\015"
">\377}^A\377}^A\377|]=\377|]?\377|]?\377}^A\377|]?\377|]?\377}_A\377}_B\377" "\015\070?ETZ_s}\210r}\210u\200\212r}\210v\201\214t\177\212q|\207s\177\212x"
"}^@\377|]>\377}^?\377}^A\377|\\=\377|]?\377}^@\377}^?\377}_A\377}^@\377|" "\203\215q|\207s\177\212t\177\212r}\210q|\207u\200\212oz\205s~\211r}\210s"
"\\=\377}^@\377|]=\377}^@\377|]?\377|]>\377}^@\377}^@\377}^@\377|\\=\377}" "~\211p|\207v\201\213s~\212r}\210p{\206t\177\212s\177\212u\200\212u\200\212"
"^@\377}^@\377pJ$\375jF!\313>(\024+\004\003\001\000_>\036\377vY=\377\264~G\377\265|" "r}\210p{\206r}\210u\200\212v\201\214r}\210s~\211kv\202`ku\023\024\024#\"\"\021"
"E\377\266\177I\377\265|E\377\267\201K\377\266\177H\377\264|D\377\266~G\377" "\020\020\070?E]dju\202\216n{\207n{\207t\201\215lx\205my\205u\202\217ly\205o"
"\270\202M\377\264{D\377\266~G\377\266\177H\377\265|E\377\264{D\377\266\177" "{\207o{\207mz\206q}\212s\200\215p|\211my\206p|\211my\205s\200\215o|\210l"
"I\377\263zA\377\265~G\377\265|E\377\265~G\377\264{C\377\267\200J\377\266" "x\205o{\210kw\204s\200\215t\200\215r~\213ju\201u\202\217my\206q}\212my\206"
"\177G\377\265|E\377\264{B\377\266\177H\377\266~G\377\266\177I\377\266\177" "my\206q}\212my\206my\206u\202\216q~\212_it\034\037!$##\017\017\017\070>D\\cjmz"
"I\377\265|E\377\264{B\377\265|E\377\266\177I\377\267\201K\377\265|E\377\265" "\206r\177\213jv\201mz\206o{\207p}\211r\177\213q}\212my\205p}\212q}\212lx"
"~G\377\261w<\377\245m\066\360>(\024\036\004\003\001\000_>\036\377\204cC\377\301\201B" "\205q}\212kw\202nz\207my\206mz\206r\177\213lx\205p|\211s\200\215r~\213kw"
"\377\270z=\377\270z=\377\300\200A\377\265y<\377\266y<\377\301\202C\377\265" "\203n{\207q}\212lx\205n{\207o{\210my\205q}\212o{\210o{\210n{\207kw\204p}"
"x<\377\271{=\377\271{=\377\267y<\377\275~>\377\300\200@\377\273}>\377\267" "\211r\177\213\\gq\034\037!!\040\040\014\014\014\070>D_ekv\202\217p}\212mz\206t\201"
"z<\377\273}>\377\266y<\377\300\200@\377\272{=\377\265y<\377\272|=\377\264" "\215o{\207p}\211r\177\214lx\204my\205o|\210q}\212iu\201mz\206s\200\215t\201"
"x;\377\300\200@\377\300\201A\377\276\177?\377\261v:\377\301\202C\377\267" "\215q~\212mz\206n{\207kw\204r\177\213ly\205q}\212o{\210r\177\213s\200\215"
"z<\377\275~>\377\267z<\377\267z<\377\275~>\377\267z<\377\267z<\377\301\201" "o{\207o|\210nz\207kw\203r\177\213o|\210kw\202kw\203t\201\215mz\206p}\212"
"B\377\275}>\377\237j\064\377\065\"\020\262\004\003\001\000^>\036\377\204cB\377\267y<" "^hr\034\037!###\016\015\015\070?E]dju\202\217p}\211kw\202mz\206u\202\216p}\212"
"\377\276~?\377\261u:\377\267y<\377\271{=\377\273|>\377\276~?\377\275~>\377" "p}\212r\177\214t\200\215n{\207mz\206u\202\216q}\212o{\210p}\212my\205o{\207"
"\266y<\377\274}>\377\275~>\377\265y<\377\275~>\377\262v;\377\270{=\377\267" "o{\207p}\212s\200\215r\177\214q~\212p}\211p}\211q}\212r\177\213o{\207u\202"
"z<\377\267y<\377\276~?\377\265y<\377\273}>\377\300\200@\377\276\177?\377" "\216o{\207o{\207r\177\214u\202\216p}\212jv\201u\202\217u\202\216\\fp\034\037"
"\263w;\377\270z=\377\275~>\377\265y<\377\270z=\377\272|=\377\266y<\377\275" "!$$$\016\016\016\070?E^ekz\206\222o{\207ly\205o{\210q}\212p|\211u\202\217r\177"
"~>\377\272|=\377\272|=\377\270z=\377\264x;\377\273|>\377\276~?\377\232f\063" "\214o{\210ly\205my\205kw\204p}\211p}\212o|\210p}\212my\205my\206o{\207my"
"\377\065\"\020\262\004\003\001\000^>\036\377\205eE\377\301\203D\377\274}>\377\267y<" "\205o{\207my\206kw\204q~\212my\205p}\212u\202\216r\177\214o{\210kw\202u\202"
"\377\300\200A\377\271{=\377\273|>\377\277\177?\377\264x<\377\266y<\377\272" "\216t\200\215p}\211r\177\213u\202\216lx\204blw\034\037!$##\016\016\016\070?E]d"
"{=\377\275~>\377\260u:\377\267y<\377\300\200@\377\300\200A\377\275}>\377" "jx\204\220my\206kw\203ly\205my\206kw\202lx\205t\201\215r\177\214p}\212r\177"
"\267y<\377\270z=\377\264x;\377\276~?\377\265x<\377\275~>\377\272|=\377\276" "\214n{\207kw\202s\200\215p|\210ju\201mz\206my\205u\202\216o{\210my\206o|"
"~?\377\300\200@\377\271{=\377\272{=\377\270{=\377\263w;\377\276~?\377\272" "\210o{\207n{\207o{\210p}\212my\205s\200\215nz\207mz\206p}\212q~\212p}\212"
"{=\377\262v;\377\263w;\377\300\200A\377\267y<\377\274}>\377\234h\064\377\065" "o{\207q~\212p}\212^it\034\037!#\"\"\014\014\014\071?E]djs\200\215u\202\216r\177"
"\"\020\262\004\003\001\000_>\036\377\204cC\377\301\202C\377\273|>\377\262v;\377\267" "\214r\177\213my\205q~\212o{\207mz\206p}\211kw\204p}\212r\177\213o{\207mz"
"y<\377\301\201B\377\274}>\377\274}>\377\277\177?\377\300\201A\377\270z=\377" "\206p}\212mz\206ly\205q~\212mz\206t\200\215r\177\213mz\206kw\204r\177\213"
"\267y<\377\301\201B\377\275~>\377\272|=\377\274}>\377\266y<\377\271{=\377" "u\202\217o{\207n{\207o{\210q}\212my\205p|\210o{\207s\200\215s\200\215my\206"
"\271{=\377\274}>\377\300\200@\377\277\177?\377\275}>\377\273|>\377\273|>" "p}\212_it\033\036\040\"!!\015\014\014\070?E_ekp}\212jv\201mz\206mz\206o|\210r\177"
"\377\275~>\377\276~?\377\271{=\377\301\201B\377\271{=\377\271{=\377\277\177" "\213o{\207my\205o{\207p|\210t\201\215o{\207p}\211lx\205lx\204s\200\215o{"
"?\377\301\201B\377\274}>\377\261u:\377\301\202C\377\301\201B\377\231f\063" "\207kw\202kv\202lx\204u\202\216p}\212o{\210ly\205s\200\215o{\207v\202\217"
"\377\065\"\020\262\004\003\001\000_>\036\377\205dD\377\303\206I\377\271{=\377\265x<" "ly\205r\177\214u\202\217p}\212r\177\213kw\204o{\207o{\207o{\210^hs\033\036"
"\377\272|=\377\275~>\377\273}>\377\301\202C\377\277\177?\377\272|=\377\265" "!&%%\014\014\014\070?E]djmy\206o{\207s\200\215my\206o{\207kw\202r\177\213kw\203"
"x<\377\266y<\377\264x;\377\273|>\377\274}>\377\272{=\377\274}>\377\266y<" "ly\205my\205o{\210s\200\214p}\212my\205s\200\215mz\206q}\212q~\212r\177\213"
"\377\267z<\377\271{=\377\266y<\377\271{=\377\267z<\377\264x;\377\275}>\377" "my\205q~\212s\200\214kw\203my\205n{\207kw\203lx\204p}\212r\177\214o{\207"
"\266y<\377\274}>\377\301\201B\377\277\177?\377\272|=\377\262v;\377\301\201" "s\200\215r\177\214o{\207t\200\215p}\211my\205do{\033\036!%%%\015\015\015\070>D"
"B\377\300\201A\377\273|>\377\276~?\377\301\201B\377\264x<\377\243m\066\377" "\\cjr\177\214s\200\215q~\212n{\207mz\206q}\212o{\207my\205o{\207p}\212o{"
"\065\"\020\262\004\003\001\000_>\036\377\204cC\377\302\204F\377\267z<\377\263w;\377" "\207kw\203iu\201r\177\214kv\202q~\212p}\211u\202\216kw\202mz\206p|\210mz"
"\265x<\377\267z<\377\262v;\377\265y<\377\300\200A\377\277\177?\377\274}>" "\206p}\212p}\211t\201\215my\206lx\205q~\212my\205o{\207kw\202p}\211o{\207"
"\377\277\177?\377\270z=\377\262v;\377\300\200@\377\272|>\377\261v:\377\267" "s\200\215p}\212p}\212bmw\033\036!\"\"\"\014\014\014\067=D[bhmy\206my\206my\205"
"y<\377\266y<\377\301\201B\377\272|=\377\267z<\377\272{=\377\271{=\377\270" "kw\204my\205my\205t\201\215p|\210o{\207o{\210p|\211p}\212p}\211o{\210u\202"
"z=\377\272|=\377\274}>\377\266y<\377\300\200@\377\270{=\377\267y<\377\274" "\216r\177\213lx\205ly\205n{\207my\205kw\202my\206kw\204u\202\217p}\212my"
"}>\377\275}>\377\274}>\377\271{=\377\275}>\377\274}>\377\236i\064\377\065\"" "\205ly\205u\202\217lx\205mz\206p}\212kw\203nz\207kw\203my\205q}\212alw\033"
"\020\262\004\003\001\000_>\037\377\204cC\377\300\200@\377\301\201B\377\277\177?\377" "\036!#\"\"\011\010\010\070>D\\cjo{\207mz\206mz\206p}\212p}\212my\205p}\212p}\211"
"\276~?\377\266y<\377\275}>\377\271{=\377\267y<\377\273|>\377\264x;\377\274" "r\177\213r\177\214my\205u\202\217p}\212p}\212ju\201q}\212my\206p}\211ly\205"
"}>\377\276~?\377\271{=\377\267y<\377\274}>\377\267y<\377\265x<\377\275}>" "lx\204p}\212o{\207p}\212p}\212my\205p}\212p}\212t\200\215u\202\217r\177\213"
"\377\267y<\377\300\201A\377\276~?\377\267y<\377\264x;\377\276~?\377\301\202" "q}\212p}\211r\177\213jv\202my\205r\177\213\\gq\034\037!!!!\014\013\013\070>D[b"
"C\377\271{=\377\270z=\377\272|=\377\275~>\377\266y<\377\272|>\377\271{=\377" "ir\177\214kw\203o{\210mz\206n{\207my\205s\200\215my\206r\177\214s\200\215"
"\300\200@\377\300\200@\377\267z<\377\274}>\377\237j\064\377\065\"\020\262\004" "r\177\213p}\212o{\210q}\212q~\212p}\211n{\207r\177\214my\205ly\205kw\204"
"\003\001\000_>\036\377\205eE\377\274}>\377\261u:\377\267y<\377\267y<\377\272{=\377" "my\206mz\206nz\206p}\212q~\212o{\210o{\207q~\212n{\207ly\205q~\212mz\206"
"\276~?\377\271{=\377\266y<\377\271{=\377\272|>\377\300\200A\377\271{=\377" "my\205p}\212p}\212`ku\034\037\"$##\014\014\014\070>DZagt\200\215s\200\215ly\205"
"\273|>\377\265y<\377\264x<\377\300\200@\377\271{=\377\262v;\377\262w;\377" "r\177\213my\206p}\212o{\207mz\206ly\205p}\212r\177\213o{\210r\177\213p}\212"
"\264x<\377\301\201B\377\274}>\377\272|=\377\265x<\377\300\200@\377\271{=" "kw\203my\205p}\212nz\206my\205o{\210q~\212p}\212p|\210ly\205p}\211q~\212"
"\377\301\203D\377\265x<\377\277\177?\377\301\202C\377\274}>\377\276~?\377" "my\206t\200\215o{\207my\205q}\212p}\212s\200\215nz\207u\202\216my\205bmw"
"\264x;\377\271{=\377\271{=\377\272|=\377\235i\064\377\065\"\020\262\004\003\001\000" "\034\037\"\"\"\"\013\013\013\067=D\\cjn{\207kw\203q~\212mz\206r\177\214r\177\214"
"_>\036\377\204cC\377\267z<\377\271{=\377\300\200@\377\267z<\377\271{=\377" "my\206p}\212r\177\214mz\206p}\212t\201\215p}\211r\177\213p}\212o{\210r\177"
"\262v;\377\276~?\377\263w;\377\265x<\377\266y<\377\272|=\377\300\177?\377" "\214o{\210o{\210kx\204s\200\215p}\212o{\207my\205o{\207p}\211p}\211o{\207"
"\274}>\377\266y<\377\300\200@\377\267y<\377\275~>\377\275}>\377\276~?\377" "o{\210q}\212n{\207n{\207my\205s\200\215p}\211my\205akv\034\037!\"!!\014\013\013"
"\266y<\377\275}>\377\300\177?\377\263w;\377\266y<\377\270z=\377\263w;\377" "\067=D[biq~\213o{\207q~\212o{\207iu\201o{\207p}\212p}\212my\206kv\202s\200"
"\264x<\377\274}>\377\277\177?\377\271{=\377\300\200@\377\277\177?\377\271" "\215p}\212my\205p}\212r\177\214q}\212s\200\214o{\210my\205p}\211p}\212o{"
"{=\377\300\201A\377\273|>\377\266y<\377\250p\067\377\065\"\020\262\004\003\001\000^" "\207my\205q}\212p}\212s\200\215o{\210q~\212mz\206p}\212o|\210r\177\214n{"
">\036\377\204cB\377\277\177?\377\300\200@\377\275}>\377\270z=\377\267y<\377" "\207r\177\214ly\205r\177\214bmx\033\036!###\015\015\015\070>D^dku\202\216o{\210"
"\275~>\377\271{=\377\266y<\377\271{=\377\274}>\377\271{=\377\263w;\377\260" "s\200\214ly\205my\206o{\207o{\207o{\207p}\212my\206q}\212t\200\215o{\207"
"u:\377\277\177?\377\262w;\377\275}>\377\273|>\377\301\201B\377\262v;\377" "lx\205p|\210kw\203t\201\215o{\207q}\212p}\212o{\207t\201\215kw\204my\205"
"\267y<\377\272|>\377\267y<\377\274}>\377\273|>\377\300\200A\377\267z<\377" "p}\212my\206o{\210my\206p}\211o{\210o{\207mz\206o{\207p}\211p}\212r~\213"
"\265y<\377\275}>\377\266y<\377\271{=\377\262v;\377\273|>\377\271{=\377\300" "akv\033\036!\"!!\015\015\015\070>D]djly\205my\205o{\210kw\202p|\211o{\207v\202"
"\200@\377\274}>\377\274}>\377\243l\066\377\065\"\020\262\004\003\001\000]>\036\377\203" "\217o{\207t\200\215n{\207p}\211mz\206my\206my\205u\202\216o{\210n{\207lx"
"a@\377\267z<\377\267z<\377\266y<\377\264x;\377\266y<\377\266y<\377\300\200" "\205o{\210kw\203my\205p}\212q}\212q~\212p|\210jv\201o{\207q}\212q}\212my"
"A\377\272|>\377\271{=\377\272|=\377\273}>\377\274}>\377\273|>\377\272|=\377" "\205o{\207kw\203s\200\215my\205r\177\214r\177\213^is\033\036!$##\014\014\014\070"
"\301\201B\377\276~?\377\265y<\377\265x<\377\270z=\377\266y<\377\262v;\377" ">D\\cjq~\213nz\207r\177\214kw\203s\200\215p}\212mz\206u\202\217my\206o{\207"
"\267z<\377\264x;\377\301\202C\377\274}>\377\266y<\377\265x<\377\301\202C" "r\177\213my\205p}\212kw\202t\201\215my\205n{\207my\206o{\210n{\207r\177\214"
"\377\265y<\377\267y<\377\274}>\377\263w;\377\270{=\377\263w;\377\266y<\377" "my\205u\202\217my\205o|\210p}\212r\177\213p}\212n{\207my\206lx\204my\205"
"\275~>\377\242l\066\377\065\"\020\262\004\003\001\000^>\036\377\204bB\377\271{=\377\267" "lx\205kw\202o{\207v\203\217_it\033\036!\"!!\013\012\012\070>D[biu\202\217p}\212"
"y<\377\267y<\377\274}>\377\274}>\377\266y<\377\274}>\377\273|>\377\276~?" "p}\212r\177\213o{\207o{\207r\177\213u\202\216s\200\215r\177\214p}\211p}\211"
"\377\277\177?\377\266y<\377\301\202C\377\274}>\377\274}>\377\261v:\377\275" "o{\207lx\205p}\212r\177\213p}\211q}\212s\177\214r\177\214s\200\215kw\202"
"~>\377\267z<\377\273|>\377\265x<\377\264x<\377\274}>\377\271{=\377\274}>" "u\202\217kw\203q}\212my\205kw\203my\205my\205r\177\214ju\201my\206q~\212"
"\377\274}>\377\266y<\377\274}>\377\274}>\377\300\201A\377\301\202C\377\276" "p}\212my\206s\200\215_it\033\036!$$$\020\020\020\070?E\\cjo{\207w\204\220p}\212"
"~?\377\275~>\377\273|>\377\276~?\377\261v;\377\266y<\377\276~?\377\232f\063" "q}\212my\205kw\204p}\212kw\204p}\212s\200\214my\205n{\207my\205o{\207s\177"
"\377\065\"\020\262\004\003\001\000^>\036\377\204b@\377\277\177?\377\263w;\377\272|=" "\214r\177\214kw\202q}\212kw\203o{\207q~\212r\177\213p}\212my\206p|\210p}"
"\377\267y<\377\270z=\377\266y<\377\300\200@\377\267z<\377\277\177?\377\300" "\212w\204\220o{\207o{\207r\177\214o{\210ju\201q}\212kw\204mz\206u\202\216"
"\200@\377\276~?\377\274}>\377\272|=\377\275~>\377\275}>\377\273|>\377\270" "^hs\034\037!!!!\016\016\016\070>DKQWy\206\222my\205p}\212p}\212n{\207p}\211nz\207"
"z=\377\277\177?\377\266y<\377\265x<\377\264x;\377\267z<\377\267y<\377\267" "r\177\213p|\211my\205q}\212w\204\220p}\212r\177\213r\177\213r~\213my\205"
"z=\377\274}>\377\275}>\377\272|=\377\271{=\377\275}>\377\270z=\377\265x<" "my\206o{\207p}\212t\201\215p}\212r\177\213o{\207kw\204my\205r~\213s\200\215"
"\377\275}>\377\267y<\377\266y<\377\274}>\377\274}>\377\240j\065\377\065\"\020" "r\177\213r\177\213w\204\220q}\212lx\205my\205q}\212r~\213`ku\033\036!#\"\""
"\262\004\003\001\000^>\036\377\203`>\377\300\201A\377\300\200@\377\265x<\377\276~" "\015\015\015-\062\067%)-x\204\220kw\203t\200\215s\200\215p}\212o{\207p|\211t\200"
"?\377\267z<\377\274}>\377\271{=\377\267y<\377\265x<\377\274}>\377\276~?\377" "\215my\205mz\206o{\210t\200\215u\201\216p|\211s\200\215s\200\215p}\211r\177"
"\272|=\377\276~?\377\274}>\377\263w;\377\266y<\377\274}>\377\267z=\377\266" "\213s\200\215r\177\213o{\210nz\207t\200\215r\177\214p}\212my\205u\202\216"
"y<\377\272|=\377\275}>\377\274}>\377\272|>\377\265x<\377\273|>\377\275}>" "p|\211n{\207p}\212p}\212q}\212s\200\215u\202\217u\201\216kw\204`kv\033\036"
"\377\267z<\377\300\201A\377\271{=\377\266y<\377\275~>\377\274}>\377\300\200" "!$##\015\015\015=DJ;BH]gqT]gT]fU^gU_hQZcPYbMV_T]fQZcOXaQ[dU^h]gqXblWakZdnT]"
"@\377\270{=\377\301\201B\377\266y<\377\243l\066\377\065\"\020\262\004\003\001\000]>" "fQZdQ[dU^gYblYcm[eoYclZdoYcm[epZeo[eoXblYclXbl\\fq[epU^hR[d\033\036!\"!!\015"
"\036\377\204cB\377\270z=\377\263w;\377\275}>\377\267y<\377\277\177?\377\277" "\015\015'+.).\063/\065::AH=DK<CI;BH<CI:AH:AG:AH:AH:AH:AH:AH:AG:AG:AH:AH\070?E"
"\177?\377\267z<\377\274}>\377\277\177?\377\267y<\377\274}>\377\300\200A\377" "\071@G\071@G:AH:AG\071@G\070?F\070>D\070>D\070?E\070>D\070?F\070?F\070?F\070?F\070?F\071"
"\273|>\377\276~?\377\274}>\377\272|=\377\277\177?\377\272|=\377\272|=\377" "@G\070?F:AH\064;A\035!$\060//$$$%$$!!!\"\"\"$##$##\"\"\"###\"\"\"$$$\"!!$##$"
"\264w;\377\300\200@\377\274}>\377\271{=\377\266y<\377\271{=\377\273|>\377" "##&%%\040\040\040\040\040\040%$$%$$!\040\040###%$$$$$#\"\"$#####%$$!!!%$$!!!\"!!"
"\273|>\377\271{=\377\272|=\377\275~>\377\270z=\377\270z=\377\266y<\377\300" "$$$$##\040\037\037###\"!!%%%$######\"\"#\"\"!\040\040",
"\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",
}; };

View File

@ -25,20 +25,20 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.ranges.def = 0.0f; parameter.ranges.def = 0.0f;
switch (index) { switch (index) {
case pLFORate: case pLfoRate:
parameter.name = "LFO Rate"; parameter.name = "LFO Rate";
parameter.symbol = "ch_lforate"; parameter.symbol = "ch_lforate";
parameter.midiCC = 3; parameter.midiCC = 3;
break; break;
case pLFODelay: case pLfoDelay:
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "LFO Delay"; parameter.name = "LFO Delay";
parameter.symbol = "ch_lfodelay"; parameter.symbol = "ch_lfodelay";
parameter.midiCC = 9; parameter.midiCC = 9;
break; break;
case pVCORange: case pVcoRange:
parameter.hints = kParameterIsAutomatable | kParameterIsInteger; parameter.hints = kParameterIsAutomatable | kParameterIsInteger;
parameter.name = "Range"; parameter.name = "Range";
parameter.symbol = "ch_vcorange"; parameter.symbol = "ch_vcorange";
@ -58,14 +58,14 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
} }
break; break;
case pLFODepth: case pLfoDepth:
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "LFO"; parameter.name = "LFO";
parameter.symbol = "ch_lfo"; parameter.symbol = "ch_lfo";
parameter.midiCC = 13; parameter.midiCC = 13;
break; break;
case pPWMDepth: case pPwmDepth:
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "PWM"; parameter.name = "PWM";
parameter.symbol = "ch_pwm"; parameter.symbol = "ch_pwm";
@ -122,7 +122,7 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
parameter.midiCC = 19; parameter.midiCC = 19;
break; break;
case pHPF: case pHpf:
parameter.hints = kParameterIsAutomatable | kParameterIsInteger; parameter.hints = kParameterIsAutomatable | kParameterIsInteger;
parameter.name = "HPF"; parameter.name = "HPF";
parameter.symbol = "ch_hpf"; parameter.symbol = "ch_hpf";
@ -230,7 +230,7 @@ void Chassis::initParameter(uint32_t index, Parameter& parameter) {
} }
break; break;
*/ */
case pVCALevel: case pVcaLevel:
parameter.hints = kParameterIsAutomatable; parameter.hints = kParameterIsAutomatable;
parameter.name = "VCA Level"; parameter.name = "VCA Level";
parameter.symbol = "ch_vcalevel"; parameter.symbol = "ch_vcalevel";
@ -277,17 +277,17 @@ void Chassis::setParameterValue(uint32_t index, float value) {
if (value > 127.0f) value = 127.0f; if (value > 127.0f) value = 127.0f;
switch (index) { switch (index) {
case pLFORate: case pLfoRate:
patchRam.lfoRate = value; patchRam.lfoRate = value;
break; break;
case pLFODelay: case pLfoDelay:
patchRam.lfoDelay = value; patchRam.lfoDelay = value;
break; break;
case pLFODepth: case pLfoDepth:
patchRam.vcoLfo = value; patchRam.vcoLfo = value;
break; break;
case pPWMDepth: case pPwmDepth:
patchRam.pwmLfo = value / 1.27; patchRam.pwmLfo = value / 1.27;
break; break;
case pSubLevel: case pSubLevel:
@ -313,7 +313,7 @@ void Chassis::setParameterValue(uint32_t index, float value) {
patchRam.vcfKey = value; patchRam.vcfKey = value;
break; break;
case pVCALevel: case pVcaLevel:
patchRam.vca = value; patchRam.vca = value;
break; break;
@ -331,7 +331,7 @@ void Chassis::setParameterValue(uint32_t index, float value) {
break; break;
// switch 1 params // switch 1 params
case pVCORange: // bits 0-2 of switch 1 case pVcoRange: // bits 0-2 of switch 1
// doesn't look great in Carla because of odd behaviour with small integer knobs // doesn't look great in Carla because of odd behaviour with small integer knobs
patchRam.switch1 &= 0xf8; patchRam.switch1 &= 0xf8;
patchRam.switch1 |= (1 << (int)(value - 1)); patchRam.switch1 |= (1 << (int)(value - 1));
@ -380,7 +380,7 @@ void Chassis::setParameterValue(uint32_t index, float value) {
patchRam.switch2 |= (value >= 0.5) << 2; patchRam.switch2 |= (value >= 0.5) << 2;
break; break;
*/ */
case pHPF: // bits 3-4 of switch 2 case pHpf: // bits 3-4 of switch 2
// doesn't look great in Carla because of odd behaviour with small integer knobs // doesn't look great in Carla because of odd behaviour with small integer knobs
if (value > 3) value = 3; if (value > 3) value = 3;
patchRam.switch2 &= 0xe7; patchRam.switch2 &= 0xe7;
@ -396,14 +396,14 @@ void Chassis::setParameterValue(uint32_t index, float value) {
float Chassis::getParameterValue(uint32_t index) const { float Chassis::getParameterValue(uint32_t index) const {
switch (index) { switch (index) {
case pLFORate: case pLfoRate:
return patchRam.lfoRate; return patchRam.lfoRate;
break; break;
case pLFODelay: case pLfoDelay:
return patchRam.lfoDelay; return patchRam.lfoDelay;
break; break;
case pVCORange: case pVcoRange:
// FIXME this needs to be better generally // FIXME this needs to be better generally
switch (patchRam.switch1 & 0x07) { switch (patchRam.switch1 & 0x07) {
case 1: case 1:
@ -417,10 +417,10 @@ float Chassis::getParameterValue(uint32_t index) const {
} }
break; break;
case pLFODepth: case pLfoDepth:
return patchRam.vcoLfo; return patchRam.vcoLfo;
break; break;
case pPWMDepth: case pPwmDepth:
return patchRam.pwmLfo * 1.27f; return patchRam.pwmLfo * 1.27f;
break; break;
/* /*
@ -440,7 +440,7 @@ float Chassis::getParameterValue(uint32_t index) const {
case pNoiseLevel: case pNoiseLevel:
return patchRam.noise; return patchRam.noise;
break; break;
case pHPF: case pHpf:
return 3 - ((patchRam.switch2 & 0x18) >> 3); return 3 - ((patchRam.switch2 & 0x18) >> 3);
break; break;
case pCutoff: case pCutoff:
@ -479,7 +479,7 @@ float Chassis::getParameterValue(uint32_t index) const {
case paramEnvGate: case paramEnvGate:
return (patchRam.switch2 & 0x04) != 0; return (patchRam.switch2 & 0x04) != 0;
*/ */
case pVCALevel: case pVcaLevel:
return patchRam.vca; return patchRam.vca;
break; break;

File diff suppressed because it is too large Load Diff

View File

@ -4,9 +4,9 @@ namespace Artwork {
extern const char *orngBtnUp; extern const char *orngBtnUp;
extern const char *orngBtnDn; extern const char *orngBtnDn;
const unsigned int orngBtnSize = 41 * 30 * 4; const unsigned int orngBtnSize = 42 * 32 * 3;
const unsigned int orngBtnWidth = 41; const unsigned int orngBtnWidth = 42;
const unsigned int orngBtnHeight = 30; const unsigned int orngBtnHeight = 32;
extern const char *ledOnData; extern const char *ledOnData;

View File

@ -7,7 +7,8 @@ START_NAMESPACE_DISTRHO
namespace Art = Artwork; namespace Art = Artwork;
void prepSlider(ImageSlider* s, uint id, int x, int y) { void DistrhoUIchassis::prepSlider( uint id, int x, int y) {
ImageSlider* s = slider[id];
s->setId(id); s->setId(id);
s->setStartPos(x, y); s->setStartPos(x, y);
s->setEndPos(x, y + 79); // 80px high s->setEndPos(x, y + 79); // 80px high
@ -25,120 +26,93 @@ DistrhoUIchassis::DistrhoUIchassis() : UI(Art::backgroundWidth, Art::backgroundH
Image blueSlider(Art::blueData, Art::sliderWidth, Art::sliderHeight, kImageFormatRGBA); Image blueSlider(Art::blueData, Art::sliderWidth, Art::sliderHeight, kImageFormatRGBA);
Image whiteSlider(Art::whiteData, Art::sliderWidth, Art::sliderHeight, kImageFormatRGBA); Image whiteSlider(Art::whiteData, Art::sliderWidth, Art::sliderHeight, kImageFormatRGBA);
xSliderLFORate = new ImageSlider(this, orangeSlider); slider[sLfoRate] = new ImageSlider(this, orangeSlider);
prepSlider(xSliderLFORate, pLFORate, 46, 72); prepSlider(sLfoRate, 50, 72);
xSliderLFORate->setCallback(this); slider[sLfoRate]->setCallback(this);
xSliderLFODelay = new ImageSlider(this, orangeSlider); slider[sLfoDelay] = new ImageSlider(this, orangeSlider);
prepSlider(xSliderLFODelay, pLFODelay, 84, 72); prepSlider(sLfoDelay, 90, 72);
xSliderLFODelay->setCallback(this); slider[sLfoDelay]->setCallback(this);
xSliderLFODepth = new ImageSlider(this, greenSlider); slider[sLfoDepth] = new ImageSlider(this, greenSlider);
prepSlider(xSliderLFODepth, pLFODepth, 290, 72); prepSlider(sLfoDepth, 292, 72);
xSliderLFODepth->setCallback(this); slider[sLfoDepth]->setCallback(this);
xSliderPWMDepth = new ImageSlider(this, greenSlider); slider[sPwmDepth] = new ImageSlider(this, greenSlider);
prepSlider(xSliderPWMDepth, pPWMDepth, 329, 72); prepSlider(sPwmDepth, 331, 72);
xSliderPWMDepth->setCallback(this); slider[sPwmDepth]->setCallback(this);
xSliderSubLevel = new ImageSlider(this, greenSlider); slider[sSubLevel] = new ImageSlider(this, greenSlider);
prepSlider(xSliderSubLevel, pSubLevel, 510, 72); prepSlider(sSubLevel, 517, 72);
xSliderSubLevel->setCallback(this); slider[sSubLevel]->setCallback(this);
xSliderNoiseLevel = new ImageSlider(this, greenSlider); slider[sNoiseLevel] = new ImageSlider(this, greenSlider);
prepSlider(xSliderNoiseLevel, pNoiseLevel, 551, 72); prepSlider(sNoiseLevel, 558, 72);
xSliderNoiseLevel->setCallback(this); slider[sNoiseLevel]->setCallback(this);
xSliderHPF = new ImageSlider(this, blueSlider); // HPF slider is treated specially as it is part of the switches
prepSlider(xSliderHPF, pHPF, 618, 72); slider[sHpf] = new ImageSlider(this, blueSlider);
xSliderHPF->setStep(1); prepSlider(sHpf, 618, 72);
xSliderHPF->setRange(0, 3); slider[sHpf]->setRange(0, 3);
xSliderHPF->setCallback(this); slider[sHpf]->setStep(1);
slider[sHpf]->setCallback(this);
xSliderCutoff = new ImageSlider(this, blueSlider); slider[sCutoff] = new ImageSlider(this, blueSlider);
prepSlider(xSliderCutoff, pCutoff, 26, 261); prepSlider(sCutoff, 21, 261);
xSliderCutoff->setCallback(this); slider[sCutoff]->setCallback(this);
xSliderRes = new ImageSlider(this, blueSlider); slider[sRes] = new ImageSlider(this, blueSlider);
prepSlider(xSliderRes, pRes, 65, 261); prepSlider(sRes, 60, 261);
xSliderRes->setCallback(this); slider[sRes]->setCallback(this);
xSliderEnv = new ImageSlider(this, blueSlider); slider[sEnv] = new ImageSlider(this, blueSlider);
prepSlider(xSliderEnv, pEnv, 149, 261); prepSlider(sEnv, 144, 261);
xSliderEnv->setCallback(this); slider[sEnv]->setCallback(this);
xSliderLfo = new ImageSlider(this, blueSlider); slider[sLfo] = new ImageSlider(this, blueSlider);
prepSlider(xSliderLfo, pLfo, 189, 261); prepSlider(sLfo, 183, 261);
xSliderLfo->setCallback(this); slider[sLfo]->setCallback(this);
xSliderKyb = new ImageSlider(this, blueSlider); slider[sKyb] = new ImageSlider(this, blueSlider);
prepSlider(xSliderKyb, pKyb, 228, 261); prepSlider(sKyb, 222, 261);
xSliderKyb->setCallback(this); slider[sKyb]->setCallback(this);
xSliderVCALevel = new ImageSlider(this, whiteSlider); slider[sVcaLevel] = new ImageSlider(this, whiteSlider);
prepSlider(xSliderVCALevel, pVCALevel, 319, 261); prepSlider(sVcaLevel, 314, 261);
xSliderVCALevel->setCallback(this); slider[sVcaLevel]->setCallback(this);
xSliderAtk = new ImageSlider(this, whiteSlider); slider[sAtk] = new ImageSlider(this, whiteSlider);
prepSlider(xSliderAtk, pVCALevel, 385, 261); prepSlider(sAtk, 375, 261);
xSliderAtk->setCallback(this); slider[sAtk]->setCallback(this);
xSliderDcy = new ImageSlider(this, whiteSlider);
prepSlider(xSliderDcy, pDcy, 425, 261);
xSliderDcy->setCallback(this);
xSliderStn = new ImageSlider(this, whiteSlider); slider[sDcy] = new ImageSlider(this, whiteSlider);
prepSlider(xSliderStn, pStn, 465, 261); prepSlider(sDcy, 414, 261);
xSliderStn->setCallback(this); slider[sDcy]->setCallback(this);
xSliderRls = new ImageSlider(this, whiteSlider); slider[sStn] = new ImageSlider(this, whiteSlider);
prepSlider(xSliderRls, pRls, 505, 261); prepSlider(sStn, 454, 261);
xSliderRls->setCallback(this); slider[sStn]->setCallback(this);
xBtn16ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA), slider[sRls] = new ImageSlider(this, whiteSlider);
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA)); prepSlider(sRls, 493, 261);
xBtn16ft->setAbsolutePos(149, 104); slider[sRls]->setCallback(this);
xBtn16ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB));
xBtn16ft->setAbsolutePos(149, 103);
xBtn16ft->setId(btn16); xBtn16ft->setId(btn16);
xBtn16ft->setCallback(this); xBtn16ft->setCallback(this);
xBtn8ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA), xBtn8ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA)); Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB));
xBtn8ft->setAbsolutePos(190, 104); xBtn8ft->setAbsolutePos(190, 103);
xBtn8ft->setId(btn8); xBtn8ft->setId(btn8);
xBtn8ft->setCallback(this); xBtn8ft->setCallback(this);
xBtn4ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA), xBtn4ft = new ImageButton(this, Image(Art::orngBtnUp, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB),
Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGBA)); Image(Art::orngBtnDn, Art::orngBtnWidth, Art::orngBtnHeight, kImageFormatRGB));
xBtn4ft->setAbsolutePos(231, 104); xBtn4ft->setAbsolutePos(231, 103);
xBtn4ft->setId(btn4); xBtn4ft->setId(btn4);
xBtn4ft->setCallback(this); 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,66 +122,18 @@ DistrhoUIchassis::~DistrhoUIchassis() {
void DistrhoUIchassis::programLoaded(uint32_t index) { void DistrhoUIchassis::programLoaded(uint32_t index) {
switch (index) { switch (index) {
case pLFORate: case pLfoRate:
xSliderLFORate->setValue(0.5); // slider[sLfo.Rate->setValue(0.5);
break; break;
case pLFODelay: case pLfoDelay:
xSliderLFODelay->setValue(0.5); // slider[sLfo.Delay->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: // the switches are generally oddities
xSliderLFORate->setValue(value); case pVcoRange:
break;
case pLFODelay:
xSliderLFODelay->setValue(value);
break;
case pLFODepth:
xSliderLFODepth->setValue(value);
break;
case pPWMDepth:
xSliderPWMDepth->setValue(value);
break;
case pSubLevel:
xSliderSubLevel->setValue(value);
break;
case pNoiseLevel:
xSliderNoiseLevel->setValue(value);
break;
case pHPF:
xSliderHPF->setValue(value);
break;
case pCutoff:
xSliderCutoff->setValue(value);
break;
case pRes:
xSliderRes->setValue(value);
break;
case pEnv:
xSliderEnv->setValue(value);
break;
case pLfo:
xSliderLfo->setValue(value);
break;
case pKyb:
xSliderKyb->setValue(value);
break;
case pAtk:
xSliderAtk->setValue(value);
break;
case pDcy:
xSliderDcy->setValue(value);
break;
case pStn:
xSliderStn->setValue(value);
break;
case pRls:
xSliderRls->setValue(value);
break;
// now the switches
case 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);
@ -234,20 +160,29 @@ void DistrhoUIchassis::parameterChanged(uint32_t index, float value) {
case 2: case 2:
sw1 |= 0x00; sw1 |= 0x00;
break; break;
} };
} break;
default:
// handle the sliders
int8_t pToS[22] = {sLfoRate, sLfoDelay, -1, sLfoDepth, sPwmDepth, -1, -1,
sSubLevel, sNoiseLevel, sHpf, sCutoff, sRes, sEnv, sLfo, sKyb,
sVcaLevel, sAtk, sDcy, sStn, sRls, -1, -1 };
slider[pToS[index]]->setValue(value);
break;
}
} }
void DistrhoUIchassis::imageSliderDragStarted(ImageSlider* slider) { void DistrhoUIchassis::imageSliderDragStarted(ImageSlider* s) {
editParameter(slider->getId(), true); editParameter(s->getId(), true);
} }
void DistrhoUIchassis::imageSliderDragFinished(ImageSlider* slider) { void DistrhoUIchassis::imageSliderDragFinished(ImageSlider* s) {
editParameter(slider->getId(), false); editParameter(s->getId(), false);
} }
void DistrhoUIchassis::imageSliderValueChanged(ImageSlider* slider, float value) { void DistrhoUIchassis::imageSliderValueChanged(ImageSlider* s, float value) {
setParameterValue(slider->getId(), value); setParameterValue(s->getId(), value);
printf("slider %d changed to %f\n",s->getId(), value);
} }
void DistrhoUIchassis::imageButtonClicked(ImageButton* imgBtn, int) { void DistrhoUIchassis::imageButtonClicked(ImageButton* imgBtn, int) {
@ -266,22 +201,6 @@ void DistrhoUIchassis::imageButtonClicked(ImageButton* imgBtn, int) {
sw1 &= 0xf8; sw1 &= 0xf8;
sw1 |= 0x04; sw1 |= 0x04;
break; 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: default:
break; break;
} }
@ -295,10 +214,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

@ -23,17 +23,43 @@ 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; void imageButtonClicked(ImageButton *imageButton, int button) override;
private: void prepSlider( uint id, int x, int y);
enum {
sLfoRate,
sLfoDelay,
sLfoDepth,
sPwmDepth,
sSubLevel,
sNoiseLevel,
sCutoff,
sRes,
sEnv,
sLfo,
sKyb,
sVcaLevel,
sAtk,
sDcy,
sStn,
sRls,
sHpf
};
private:
Image fImgBackground; Image fImgBackground;
Image fImgLedOn; Image fImgLedOn;
ScopedPointer<ImageSlider> ScopedPointer<ImageSlider> slider[17];
/*
xSliderLFORate, xSliderLFODelay, xSliderLFORate, xSliderLFODelay,
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; */
ScopedPointer<ImageButton> xBtn16ft, xBtn8ft, xBtn4ft;
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)
@ -42,4 +68,4 @@ class DistrhoUIchassis : public UI,
END_NAMESPACE_DISTRHO END_NAMESPACE_DISTRHO
#endif #endif