| @@ -1,5 +1,5 @@ | |||
| SLUG = dBiz | |||
| VERSION = 0.6.0 | |||
| VERSION = 0.6.1 | |||
| FLAGS += | |||
| CFLAGS += | |||
| @@ -1,23 +1,37 @@ | |||
| # dBiz_Modules | |||
| Here's my collection of modules for VCVRack! | |||
| Many thx to Michael Hetrick, Strum's Mental and Jeremy Wen for sources and inspiring me! | |||
| Ready for v 0.5 here's what i have: | |||
| First of all many thx to all the awesome developers and VCV community! Whithout you this pack would not have existed! | |||
| - Quad envelope generator based on rampage, | |||
| Now ready for v 0.6.2 this is what you'll find | |||
|  | |||
| UTILITY AND QUANTIZER | |||
| - Quad envelope AD, | |||
| - Chord generator/transformer, | |||
| - Utility transposer octave/sem/fine with ability to link the inputs, | |||
| - Performance 8 channel stereo mixer with stereo sends and return | |||
| - VCA based on Roland VCA530 | |||
| - Simple transposer | |||
|  | |||
|  | |||
| VCA AND ROUTERS | |||
| Based on Strum modules i've made a compact 4 channel mixer, a 8 channel mixer,a chord utility and from Michael Hetrick Scanner i've made Remix Module ! | |||
| - 6 Ch. mixer router/scanner, | |||
| - 4x4 in/out matrix mixer, | |||
| - 6 Ch. VCA based on Roland system 500 / 530 | |||
| - 8 Ch. mixer scanner/sequencer/router | |||
|  | |||
|  | |||
| GRID SEQUENCERS | |||
| Starting from some grid sequencers like Cartesian by strum and Gridseq by JW i've made those grid sequencers: | |||
|  | |||
|  | |||
| - Bene | |||
| Classical 4x4 cv sequencer with internal quantization , | |||
| BenePads is his "keyboard" it sends position to Bene(x,y) and a Gate out(g); | |||
| @@ -25,13 +39,25 @@ Classical 4x4 cv sequencer with internal quantization , | |||
| - Bene2 | |||
| Evolution of Bene: Can out up to 8 individual sequence with cv (colums and rows) and gate (on the bottom) outs running with independent cloks. still some fix to do as usuall but it's really fun to play with it! | |||
| And here's a collection of oscillator you might know... | |||
|  | |||
| OSCILLATORS: | |||
| They don't need introductions ;) | |||
|  | |||
| VINTAGE SERIE | |||
| This mini 4 modules series is based on subharmonicon sequencer,oscillator and clock subdivision. | |||
| The Utility2 module is a collection of 2 glide generator, 2 ad envelope and 4 button/toggle with value selection. | |||
|  | |||
| I'm not a real coder so push req. and advice are always welcome | |||
| The code and how it sounds can be improoved as usuall so push req. and advice are always welcome | |||
| Have fun! | |||
| @@ -1,4 +1,5 @@ | |||
| ALL_OBJ= \ | |||
| src/4Seq.o \ | |||
| src/Bene.o \ | |||
| src/Bene2.o \ | |||
| src/BenePads.o \ | |||
| @@ -7,13 +8,20 @@ ALL_OBJ= \ | |||
| src/Contorno.o \ | |||
| src/DAOSC.o \ | |||
| src/dBiz.o \ | |||
| src/Divider.o \ | |||
| src/DualFilter.o \ | |||
| src/DVCO.o \ | |||
| src/Multiple.o \ | |||
| src/PerfMixer.o \ | |||
| src/Remix.o \ | |||
| src/SmiX.o \ | |||
| src/SubMixer.o \ | |||
| src/SuHa.o \ | |||
| src/Transpose.o \ | |||
| src/TROSC.o \ | |||
| src/Util2.o \ | |||
| src/Utility.o \ | |||
| src/VCA4.o \ | |||
| src/VCA530.o \ | |||
| src/Verbo.o | |||
| @@ -3433,9 +3433,9 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="2.2606344" | |||
| inkscape:cx="44.406358" | |||
| inkscape:cy="169.31782" | |||
| inkscape:zoom="2.5944565" | |||
| inkscape:cx="86.453105" | |||
| inkscape:cy="369.01201" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="true" | |||
| @@ -3700,17 +3700,17 @@ | |||
| style="display:inline"> | |||
| <path | |||
| style="fill:none;stroke:#000000;stroke-width:0.90497124px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="M 62.653303,24.17144 V 349.34482" | |||
| d="M 64.653303,24.17144 V 349.34482" | |||
| id="path5273" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="display:inline;fill:none;stroke:#000000;stroke-width:0.90497124px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="M 127.49724,24.326629 V 349.5" | |||
| d="M 129.49724,24.326629 V 349.5" | |||
| id="path5273-3" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="display:inline;fill:none;stroke:#000000;stroke-width:0.90497124px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="M 192.30151,24.129685 V 349.30305" | |||
| d="M 194.30151,24.129685 V 349.30305" | |||
| id="path5273-5" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| @@ -4464,102 +4464,126 @@ | |||
| <g | |||
| aria-label="RANGE" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.79508305px;line-height:1.25;font-family:'DejaVu Math TeX Gyre';-inkscape-font-specification:'DejaVu Math TeX Gyre';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.54969269" | |||
| id="text5845"> | |||
| id="text5845" | |||
| transform="translate(-0.81763573,-3.8156334)"> | |||
| <path | |||
| d="m 39.653742,20.575103 q 0.41227,0 0.721472,-0.309203 0.274846,-0.274846 0.274846,-0.824539 0,-0.515337 -0.309202,-0.824539 -0.343558,-0.343558 -0.927606,-0.343558 h -0.755828 v 2.301839 z m -0.06871,-2.954599 q 0.858895,0 1.408588,0.549693 0.446625,0.446625 0.446625,1.271164 0,0.755828 -0.446625,1.236809 -0.309202,0.343558 -0.618404,0.446625 l 1.236808,3.195089 h -0.824539 l -1.168097,-3.092021 h -0.961962 v 3.092021 h -0.790183 v -6.69938 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5922" /> | |||
| id="path5922" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 42.814475,24.319884 h -0.824539 l 1.71779,-6.69938 h 0.687116 l 1.717789,6.69938 h -0.824539 l -0.480981,-1.95828 h -1.511655 z m 1.271164,-4.878523 h -0.06871 l -0.549693,2.267483 h 1.168097 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5924" /> | |||
| id="path5924" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 50.200971,17.620504 v 6.69938 h -0.961963 l -1.786501,-5.015946 h -0.03436 v 5.015946 h -0.790183 v -6.69938 h 0.961962 l 1.786502,5.015946 h 0.03435 v -5.015946 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5926" /> | |||
| id="path5926" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 53.877041,19.716208 q -0.03436,-0.893251 -0.343558,-1.202453 -0.240491,-0.240491 -0.549693,-0.240491 -0.274846,0 -0.446625,0.171779 -0.755827,0.755828 -0.755827,2.679752 0,1.683434 0.549692,2.233127 0.274847,0.274846 0.549693,0.274846 0.343558,0 0.618404,-0.274846 0.41227,-0.41227 0.41227,-1.374232 v -0.65276 h -1.06503 v -0.65276 h 1.752146 v 3.641714 H 54.014464 L 53.911397,23.70148 q -0.480981,0.618404 -1.133741,0.618404 -0.584049,0 -0.996318,-0.41227 -0.790184,-0.790183 -0.790184,-2.782819 0,-2.130059 0.858895,-2.988954 0.515337,-0.515337 1.133741,-0.515337 0.65276,0 1.030674,0.377914 0.584049,0.584049 0.584049,1.71779 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5928" /> | |||
| id="path5928" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 56.350658,20.437679 h 2.336193 v 0.65276 h -2.336193 v 2.576685 h 2.714107 v 0.65276 h -3.504291 v -6.69938 h 3.332512 v 0.65276 h -2.542328 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5930" /> | |||
| id="path5930" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| aria-label="RANGE" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.79508305px;line-height:1.25;font-family:'DejaVu Math TeX Gyre';-inkscape-font-specification:'DejaVu Math TeX Gyre';letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.54969269" | |||
| id="text5845-7"> | |||
| id="text5845-7" | |||
| transform="translate(-0.81763573,-3.8156334)"> | |||
| <path | |||
| d="m 102.54877,20.575103 q 0.41227,0 0.72147,-0.309203 0.27485,-0.274846 0.27485,-0.824539 0,-0.515337 -0.3092,-0.824539 -0.34356,-0.343558 -0.92761,-0.343558 h -0.75583 v 2.301839 z m -0.0687,-2.954599 q 0.85889,0 1.40859,0.549693 0.44662,0.446625 0.44662,1.271164 0,0.755828 -0.44662,1.236809 -0.30921,0.343558 -0.61841,0.446625 l 1.23681,3.195089 h -0.82454 l -1.1681,-3.092021 h -0.96196 v 3.092021 h -0.79018 v -6.69938 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5911" /> | |||
| id="path5911" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 105.7095,24.319884 h -0.82454 l 1.71779,-6.69938 h 0.68712 l 1.71779,6.69938 h -0.82454 l -0.48098,-1.95828 h -1.51166 z m 1.27117,-4.878523 h -0.0687 l -0.54969,2.267483 h 1.1681 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5913" /> | |||
| id="path5913" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 113.096,17.620504 v 6.69938 h -0.96196 l -1.78651,-5.015946 h -0.0344 v 5.015946 H 109.523 v -6.69938 h 0.96196 l 1.7865,5.015946 h 0.0343 v -5.015946 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5915" /> | |||
| id="path5915" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 116.77207,19.716208 q -0.0344,-0.893251 -0.34356,-1.202453 -0.24049,-0.240491 -0.54969,-0.240491 -0.27485,0 -0.44663,0.171779 -0.75583,0.755828 -0.75583,2.679752 0,1.683434 0.5497,2.233127 0.27484,0.274846 0.54969,0.274846 0.34356,0 0.6184,-0.274846 0.41227,-0.41227 0.41227,-1.374232 v -0.65276 h -1.06503 v -0.65276 h 1.75215 v 3.641714 h -0.58405 l -0.10307,-0.618404 q -0.48098,0.618404 -1.13374,0.618404 -0.58405,0 -0.99632,-0.41227 -0.79018,-0.790183 -0.79018,-2.782819 0,-2.130059 0.8589,-2.988954 0.51533,-0.515337 1.13374,-0.515337 0.65276,0 1.03067,0.377914 0.58405,0.584049 0.58405,1.71779 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5917" /> | |||
| id="path5917" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 119.24568,20.437679 h 2.3362 v 0.65276 h -2.3362 v 2.576685 h 2.71411 v 0.65276 h -3.50429 v -6.69938 h 3.33251 v 0.65276 h -2.54233 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5919" /> | |||
| id="path5919" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| aria-label="RANGE" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.79508305px;line-height:1.25;font-family:'DejaVu Math TeX Gyre';-inkscape-font-specification:'DejaVu Math TeX Gyre';letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.54969269" | |||
| id="text5845-4"> | |||
| id="text5845-4" | |||
| transform="translate(-0.81763573,-3.8156334)"> | |||
| <path | |||
| d="m 167.87351,20.575103 q 0.41227,0 0.72148,-0.309203 0.27484,-0.274846 0.27484,-0.824539 0,-0.515337 -0.3092,-0.824539 -0.34356,-0.343558 -0.92761,-0.343558 h -0.75582 v 2.301839 z m -0.0687,-2.954599 q 0.8589,0 1.40859,0.549693 0.44663,0.446625 0.44663,1.271164 0,0.755828 -0.44663,1.236809 -0.3092,0.343558 -0.6184,0.446625 l 1.2368,3.195089 h -0.82453 l -1.1681,-3.092021 h -0.96196 v 3.092021 h -0.79019 v -6.69938 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5900" /> | |||
| id="path5900" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 171.03425,24.319884 h -0.82454 l 1.71779,-6.69938 h 0.68711 l 1.71779,6.69938 h -0.82454 l -0.48098,-1.95828 h -1.51165 z m 1.27116,-4.878523 h -0.0687 l -0.54969,2.267483 h 1.16809 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5902" /> | |||
| id="path5902" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 178.42074,17.620504 v 6.69938 h -0.96196 l -1.7865,-5.015946 h -0.0344 v 5.015946 h -0.79018 v -6.69938 h 0.96196 l 1.7865,5.015946 h 0.0344 v -5.015946 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5904" /> | |||
| id="path5904" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 182.09681,19.716208 q -0.0344,-0.893251 -0.34355,-1.202453 -0.2405,-0.240491 -0.5497,-0.240491 -0.27484,0 -0.44662,0.171779 -0.75583,0.755828 -0.75583,2.679752 0,1.683434 0.54969,2.233127 0.27485,0.274846 0.5497,0.274846 0.34355,0 0.6184,-0.274846 0.41227,-0.41227 0.41227,-1.374232 v -0.65276 h -1.06503 v -0.65276 h 1.75214 v 3.641714 h -0.58404 l -0.10307,-0.618404 q -0.48098,0.618404 -1.13374,0.618404 -0.58405,0 -0.99632,-0.41227 -0.79018,-0.790183 -0.79018,-2.782819 0,-2.130059 0.85889,-2.988954 0.51534,-0.515337 1.13374,-0.515337 0.65276,0 1.03068,0.377914 0.58404,0.584049 0.58404,1.71779 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5906" /> | |||
| id="path5906" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 184.57043,20.437679 h 2.33619 v 0.65276 h -2.33619 v 2.576685 h 2.71411 v 0.65276 h -3.50429 v -6.69938 h 3.33251 v 0.65276 h -2.54233 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5908" /> | |||
| id="path5908" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| aria-label="RANGE" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.79508305px;line-height:1.25;font-family:'DejaVu Math TeX Gyre';-inkscape-font-specification:'DejaVu Math TeX Gyre';letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.54969269" | |||
| id="text5845-7-9"> | |||
| id="text5845-7-9" | |||
| transform="translate(-0.81763573,-3.8156334)"> | |||
| <path | |||
| d="m 230.76855,20.575103 q 0.41227,0 0.72147,-0.309203 0.27485,-0.274846 0.27485,-0.824539 0,-0.515337 -0.3092,-0.824539 -0.34356,-0.343558 -0.92761,-0.343558 h -0.75583 v 2.301839 z m -0.0687,-2.954599 q 0.85889,0 1.40859,0.549693 0.44662,0.446625 0.44662,1.271164 0,0.755828 -0.44662,1.236809 -0.30921,0.343558 -0.61841,0.446625 l 1.23681,3.195089 h -0.82454 l -1.1681,-3.092021 h -0.96196 v 3.092021 h -0.79018 v -6.69938 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5889" /> | |||
| id="path5889" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 233.92928,24.319884 h -0.82454 l 1.71779,-6.69938 h 0.68712 l 1.71779,6.69938 h -0.82454 l -0.48098,-1.95828 h -1.51166 z m 1.27117,-4.878523 h -0.0687 l -0.54969,2.267483 h 1.1681 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5891" /> | |||
| id="path5891" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 241.31578,17.620504 v 6.69938 h -0.96196 l -1.78651,-5.015946 h -0.0343 v 5.015946 h -0.79018 v -6.69938 h 0.96196 l 1.7865,5.015946 h 0.0343 v -5.015946 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5893" /> | |||
| id="path5893" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 244.99185,19.716208 q -0.0344,-0.893251 -0.34356,-1.202453 -0.24049,-0.240491 -0.54969,-0.240491 -0.27485,0 -0.44663,0.171779 -0.75583,0.755828 -0.75583,2.679752 0,1.683434 0.5497,2.233127 0.27484,0.274846 0.54969,0.274846 0.34356,0 0.6184,-0.274846 0.41227,-0.41227 0.41227,-1.374232 v -0.65276 h -1.06503 v -0.65276 h 1.75215 v 3.641714 h -0.58405 L 245.0262,23.70148 q -0.48098,0.618404 -1.13374,0.618404 -0.58405,0 -0.99632,-0.41227 -0.79018,-0.790183 -0.79018,-2.782819 0,-2.130059 0.8589,-2.988954 0.51533,-0.515337 1.13374,-0.515337 0.65276,0 1.03067,0.377914 0.58405,0.584049 0.58405,1.71779 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5895" /> | |||
| id="path5895" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 247.46546,20.437679 h 2.3362 v 0.65276 h -2.3362 v 2.576685 h 2.71411 v 0.65276 h -3.50429 v -6.69938 h 3.33251 v 0.65276 h -2.54233 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5897" /> | |||
| id="path5897" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| aria-label="CYCLE" | |||
| @@ -0,0 +1,110 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="13mm" | |||
| height="13mm" | |||
| viewBox="0 0 13 13" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="DKnob.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="7.4839301" | |||
| inkscape:cx="22.229954" | |||
| inkscape:cy="13.125026" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="true" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="986" | |||
| inkscape:window-height="1008" | |||
| inkscape:window-x="804" | |||
| inkscape:window-y="0" | |||
| inkscape:window-maximized="0" | |||
| inkscape:snap-grids="true" | |||
| showguides="false" | |||
| inkscape:snap-bbox="true"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| </sodipodi:namedview> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-119.75783)" | |||
| style="display:inline"> | |||
| <path | |||
| transform="translate(230.09585,123.23243)" | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:0.20298499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 12.780098,2.3892771 C 12.50279,1.9403221 12.035939,1.4987435 11.776184,0.87041738 11.516429,0.24420331 11.533637,-0.39639345 11.413584,-0.90818097 11.13101,-1.258151 10.813,-1.5758158 10.462685,-1.8587352 9.9505398,-1.9784035 9.3106327,-1.9615544 8.6837277,-2.2213354 8.0554026,-2.481793 7.6138239,-2.9475971 7.165572,-3.2252488 6.946189,-3.2484662 6.7232903,-3.261733 6.4979371,-3.261733 c -0.2260564,0 -0.448955,0.0134 -0.667993,0.036484 C 5.3810022,-2.9475971 4.9394103,-2.481793 4.3110989,-2.2213354 3.6848835,-1.961581 3.0449765,-1.97843 2.5324859,-1.8587352 2.1825292,-1.5758158 1.8641478,-1.258151 1.5819323,-0.90818097 1.4618661,-0.39639345 1.4787151,0.24420331 1.2186291,0.87041738 0.95887465,1.4987435 0.49236733,1.9403221 0.21541884,2.3892771 c -0.0232172,0.2193831 -0.0362189,0.4422818 -0.0362189,0.667635 0,0.2257113 0.013267,0.4485968 0.0362189,0.668683 0.27694849,0.4482519 0.74345579,0.8898305 1.00321026,1.5181552 0.2600993,0.6262154 0.2432503,1.2668255 0.3633032,1.7782548 0.2822155,0.350315 0.6005969,0.6683381 0.9505536,0.9509118 0.5124906,0.1200663 1.1523976,0.1028191 1.778613,0.3622419 0.6283114,0.2608158 1.0699033,0.726965 1.5188452,1.0042716 0.219038,0.022819 0.4419366,0.03622 0.667993,0.03622 0.2253532,0 0.4482519,-0.0134 0.6676349,-0.03622 C 7.6138239,9.0621238 8.0554026,8.5959746 8.6837277,8.3351588 9.3106327,8.0757626 9.9505398,8.0929567 10.462685,7.9729169 10.813,7.6903432 11.13101,7.3723201 11.413584,7.0220051 c 0.120067,-0.5114293 0.102819,-1.1520394 0.3626,-1.7782548 0.259755,-0.6283247 0.726606,-1.0699033 1.003914,-1.5181552 0.02282,-0.2200862 0.03582,-0.4429717 0.03582,-0.668683 0,-0.2253532 -0.01327,-0.4482519 -0.03582,-0.667635" /> | |||
| <path | |||
| transform="translate(230.09585,123.23243)" | |||
| style="display:inline;opacity:1;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.42333677;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
| id="path833" | |||
| sodipodi:type="arc" | |||
| sodipodi:cx="6.4912686" | |||
| sodipodi:cy="-2.325536" | |||
| sodipodi:rx="0.61322403" | |||
| sodipodi:ry="0.61322403" | |||
| sodipodi:start="2.4454564" | |||
| sodipodi:end="2.4435122" | |||
| sodipodi:open="true" | |||
| d="m 6.0207262,-1.9323014 a 0.61322403,0.61322403 0 0 1 0.077079,-0.8635859 0.61322403,0.61322403 0 0 1 0.8636233,0.076659 0.61322403,0.61322403 0 0 1 -0.07624,0.8636605 0.61322403,0.61322403 0 0 1 -0.8636974,-0.07582" /> | |||
| <circle | |||
| transform="translate(230.09585,123.23243)" | |||
| style="display:inline;opacity:1;fill:#636363;fill-opacity:1;stroke:none;stroke-width:0.12466589;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path6739" | |||
| cx="6.4975023" | |||
| cy="3.057019" | |||
| r="4.5814161" /> | |||
| <circle | |||
| style="display:inline;opacity:1;fill:#acacac;fill-opacity:1;stroke:none;stroke-width:0.11577436;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path6739-8" | |||
| cx="236.59123" | |||
| cy="126.28621" | |||
| r="4.2546558" /> | |||
| </g> | |||
| </svg> | |||
| @@ -1,105 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="12mm" | |||
| height="12mm" | |||
| viewBox="0 0 12 12" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="DaviesAzz.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="8.0171875" | |||
| inkscape:cx="19.284931" | |||
| inkscape:cy="31.695577" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="g2012" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" /> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-120.75783)"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.26457966,0,0,-0.26457966,-112.8694,754.07)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1341.4939,2370.9146)" | |||
| id="g6443" | |||
| style="stroke-width:1.33335185;fill:#00587e;fill-opacity:1"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6445" | |||
| style="fill:#00587e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c 0,-9.941 -8.06,-18 -18,-18 -9.941,0 -18,8.059 -18,18 0,9.941 8.059,18 18,18 C -8.06,18 0,9.941 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1341.3664,2373.3046)" | |||
| id="g6447" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="fill:#05d2ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c -0.79,1.279 -2.12,2.537 -2.86,4.327 -0.74,1.784 -0.691,3.609 -1.033,5.067 -0.805,0.997 -1.711,1.902 -2.709,2.708 -1.459,0.341 -3.282,0.293 -5.068,1.033 -1.79,0.742 -3.048,2.069 -4.325,2.86 -0.625,0.066 -1.26,0.104 -1.902,0.104 -0.644,0 -1.279,-0.038 -1.903,-0.104 -1.279,-0.791 -2.537,-2.118 -4.327,-2.86 -1.784,-0.74 -3.607,-0.692 -5.067,-1.033 -0.997,-0.806 -1.904,-1.711 -2.708,-2.708 -0.342,-1.458 -0.294,-3.283 -1.035,-5.067 -0.74,-1.79 -2.069,-3.048 -2.858,-4.327 -0.066,-0.625 -0.103,-1.26 -0.103,-1.902 0,-0.643 0.037,-1.278 0.103,-1.905 0.789,-1.277 2.118,-2.535 2.858,-4.325 0.741,-1.784 0.693,-3.609 1.035,-5.066 0.804,-0.998 1.711,-1.904 2.708,-2.709 1.46,-0.342 3.283,-0.293 5.067,-1.032 1.79,-0.743 3.048,-2.071 4.327,-2.861 0.624,-0.065 1.259,-0.103 1.903,-0.103 0.642,0 1.277,0.038 1.902,0.103 1.277,0.79 2.535,2.118 4.325,2.861 1.786,0.739 3.609,0.69 5.068,1.032 0.998,0.805 1.904,1.711 2.709,2.709 0.342,1.457 0.293,3.282 1.033,5.066 0.74,1.79 2.07,3.048 2.86,4.325 0.065,0.627 0.102,1.262 0.102,1.905 C 0.102,-1.26 0.065,-0.625 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1319.6315,2393.4433)" | |||
| id="g6451" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="M 0,0 C -0.195,0.045 -0.393,0.069 -0.598,0.069 -0.804,0.069 -1.002,0.045 -1.196,0 V -18.157 H 0 Z" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -1,105 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="9.5249996mm" | |||
| height="9.5253973mm" | |||
| viewBox="0 0 9.5249996 9.5253972" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.1 r" | |||
| sodipodi:docname="Davies1900hBlack.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="3.959798" | |||
| inkscape:cx="-2.745519" | |||
| inkscape:cy="9.5126135" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" /> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-123.23243)"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.26457966,0,0,-0.26457966,-112.8694,754.07)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="translate(1332.2646,2366.2998)" | |||
| id="g6443" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6445" | |||
| style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c 0,-9.941 -8.06,-18 -18,-18 -9.941,0 -18,8.059 -18,18 0,9.941 8.059,18 18,18 C -8.06,18 0,9.941 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="translate(1332.1631,2368.2021)" | |||
| id="g6447" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c -0.79,1.279 -2.12,2.537 -2.86,4.327 -0.74,1.784 -0.691,3.609 -1.033,5.067 -0.805,0.997 -1.711,1.902 -2.709,2.708 -1.459,0.341 -3.282,0.293 -5.068,1.033 -1.79,0.742 -3.048,2.069 -4.325,2.86 -0.625,0.066 -1.26,0.104 -1.902,0.104 -0.644,0 -1.279,-0.038 -1.903,-0.104 -1.279,-0.791 -2.537,-2.118 -4.327,-2.86 -1.784,-0.74 -3.607,-0.692 -5.067,-1.033 -0.997,-0.806 -1.904,-1.711 -2.708,-2.708 -0.342,-1.458 -0.294,-3.283 -1.035,-5.067 -0.74,-1.79 -2.069,-3.048 -2.858,-4.327 -0.066,-0.625 -0.103,-1.26 -0.103,-1.902 0,-0.643 0.037,-1.278 0.103,-1.905 0.789,-1.277 2.118,-2.535 2.858,-4.325 0.741,-1.784 0.693,-3.609 1.035,-5.066 0.804,-0.998 1.711,-1.904 2.708,-2.709 1.46,-0.342 3.283,-0.293 5.067,-1.032 1.79,-0.743 3.048,-2.071 4.327,-2.861 0.624,-0.065 1.259,-0.103 1.903,-0.103 0.642,0 1.277,0.038 1.902,0.103 1.277,0.79 2.535,2.118 4.325,2.861 1.786,0.739 3.609,0.69 5.068,1.032 0.998,0.805 1.904,1.711 2.709,2.709 0.342,1.457 0.293,3.282 1.033,5.066 0.74,1.79 2.07,3.048 2.86,4.325 0.065,0.627 0.102,1.262 0.102,1.905 C 0.102,-1.26 0.065,-0.625 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="translate(1314.8633,2384.2314)" | |||
| id="g6451" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="M 0,0 C -0.195,0.045 -0.393,0.069 -0.598,0.069 -0.804,0.069 -1.002,0.045 -1.196,0 V -18.157 H 0 Z" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -1,105 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="12mm" | |||
| height="12mm" | |||
| viewBox="0 0 12 12" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="DaviesBlu.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="8.0171875" | |||
| inkscape:cx="19.284931" | |||
| inkscape:cy="31.695577" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="g2012" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" /> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-120.75783)"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.26457966,0,0,-0.26457966,-112.8694,754.07)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1341.4939,2370.9146)" | |||
| id="g6443" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6445" | |||
| style="fill:#1b3c7e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c 0,-9.941 -8.06,-18 -18,-18 -9.941,0 -18,8.059 -18,18 0,9.941 8.059,18 18,18 C -8.06,18 0,9.941 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1341.3664,2373.3046)" | |||
| id="g6447" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="fill:#0069b3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c -0.79,1.279 -2.12,2.537 -2.86,4.327 -0.74,1.784 -0.691,3.609 -1.033,5.067 -0.805,0.997 -1.711,1.902 -2.709,2.708 -1.459,0.341 -3.282,0.293 -5.068,1.033 -1.79,0.742 -3.048,2.069 -4.325,2.86 -0.625,0.066 -1.26,0.104 -1.902,0.104 -0.644,0 -1.279,-0.038 -1.903,-0.104 -1.279,-0.791 -2.537,-2.118 -4.327,-2.86 -1.784,-0.74 -3.607,-0.692 -5.067,-1.033 -0.997,-0.806 -1.904,-1.711 -2.708,-2.708 -0.342,-1.458 -0.294,-3.283 -1.035,-5.067 -0.74,-1.79 -2.069,-3.048 -2.858,-4.327 -0.066,-0.625 -0.103,-1.26 -0.103,-1.902 0,-0.643 0.037,-1.278 0.103,-1.905 0.789,-1.277 2.118,-2.535 2.858,-4.325 0.741,-1.784 0.693,-3.609 1.035,-5.066 0.804,-0.998 1.711,-1.904 2.708,-2.709 1.46,-0.342 3.283,-0.293 5.067,-1.032 1.79,-0.743 3.048,-2.071 4.327,-2.861 0.624,-0.065 1.259,-0.103 1.903,-0.103 0.642,0 1.277,0.038 1.902,0.103 1.277,0.79 2.535,2.118 4.325,2.861 1.786,0.739 3.609,0.69 5.068,1.032 0.998,0.805 1.904,1.711 2.709,2.709 0.342,1.457 0.293,3.282 1.033,5.066 0.74,1.79 2.07,3.048 2.86,4.325 0.065,0.627 0.102,1.262 0.102,1.905 C 0.102,-1.26 0.065,-0.625 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1319.6315,2393.4433)" | |||
| id="g6451" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="M 0,0 C -0.195,0.045 -0.393,0.069 -0.598,0.069 -0.804,0.069 -1.002,0.045 -1.196,0 V -18.157 H 0 Z" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -1,105 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="9.5249996mm" | |||
| height="9.5253973mm" | |||
| viewBox="0 0 9.5249996 9.5253972" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="DaviesGre.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="8.0171875" | |||
| inkscape:cx="-45.756295" | |||
| inkscape:cy="-18.197231" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="g6443" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" /> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-123.23243)"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.26457966,0,0,-0.26457966,-112.8694,754.07)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="translate(1332.2646,2366.2998)" | |||
| id="g6443" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6445" | |||
| style="fill:#008019;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c 0,-9.941 -8.06,-18 -18,-18 -9.941,0 -18,8.059 -18,18 0,9.941 8.059,18 18,18 C -8.06,18 0,9.941 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="translate(1332.1631,2368.2021)" | |||
| id="g6447" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="fill:#71c837;fill-opacity:1;fill-rule:evenodd;stroke:#009300;stroke-width:0.37795801;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" | |||
| d="m 0,0 c -0.79,1.279 -2.12,2.537 -2.86,4.327 -0.74,1.784 -0.691,3.609 -1.033,5.067 -0.805,0.997 -1.711,1.902 -2.709,2.708 -1.459,0.341 -3.282,0.293 -5.068,1.033 -1.79,0.742 -3.048,2.069 -4.325,2.86 -0.625,0.066 -1.26,0.104 -1.902,0.104 -0.644,0 -1.279,-0.038 -1.903,-0.104 -1.279,-0.791 -2.537,-2.118 -4.327,-2.86 -1.784,-0.74 -3.607,-0.692 -5.067,-1.033 -0.997,-0.806 -1.904,-1.711 -2.708,-2.708 -0.342,-1.458 -0.294,-3.283 -1.035,-5.067 -0.74,-1.79 -2.069,-3.048 -2.858,-4.327 -0.066,-0.625 -0.103,-1.26 -0.103,-1.902 0,-0.643 0.037,-1.278 0.103,-1.905 0.789,-1.277 2.118,-2.535 2.858,-4.325 0.741,-1.784 0.693,-3.609 1.035,-5.066 0.804,-0.998 1.711,-1.904 2.708,-2.709 1.46,-0.342 3.283,-0.293 5.067,-1.032 1.79,-0.743 3.048,-2.071 4.327,-2.861 0.624,-0.065 1.259,-0.103 1.903,-0.103 0.642,0 1.277,0.038 1.902,0.103 1.277,0.79 2.535,2.118 4.325,2.861 1.786,0.739 3.609,0.69 5.068,1.032 0.998,0.805 1.904,1.711 2.709,2.709 0.342,1.457 0.293,3.282 1.033,5.066 0.74,1.79 2.07,3.048 2.86,4.325 0.065,0.627 0.102,1.262 0.102,1.905 C 0.102,-1.26 0.065,-0.625 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="translate(1314.8633,2384.2314)" | |||
| id="g6451" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="M 0,0 C -0.195,0.045 -0.393,0.069 -0.598,0.069 -0.804,0.069 -1.002,0.045 -1.196,0 V -18.157 H 0 Z" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -1,105 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="12mm" | |||
| height="12mm" | |||
| viewBox="0 0 12 12" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="DaviesPur.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="8.0171875" | |||
| inkscape:cx="19.284931" | |||
| inkscape:cy="31.695577" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="g2012" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" /> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-120.75783)"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.26457966,0,0,-0.26457966,-112.8694,754.07)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1341.4939,2370.9146)" | |||
| id="g6443" | |||
| style="stroke-width:1.33335185;fill:#7e0076;fill-opacity:1"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6445" | |||
| style="fill:#7e0076;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c 0,-9.941 -8.06,-18 -18,-18 -9.941,0 -18,8.059 -18,18 0,9.941 8.059,18 18,18 C -8.06,18 0,9.941 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1341.3664,2373.3046)" | |||
| id="g6447" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="fill:#dd0b7d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c -0.79,1.279 -2.12,2.537 -2.86,4.327 -0.74,1.784 -0.691,3.609 -1.033,5.067 -0.805,0.997 -1.711,1.902 -2.709,2.708 -1.459,0.341 -3.282,0.293 -5.068,1.033 -1.79,0.742 -3.048,2.069 -4.325,2.86 -0.625,0.066 -1.26,0.104 -1.902,0.104 -0.644,0 -1.279,-0.038 -1.903,-0.104 -1.279,-0.791 -2.537,-2.118 -4.327,-2.86 -1.784,-0.74 -3.607,-0.692 -5.067,-1.033 -0.997,-0.806 -1.904,-1.711 -2.708,-2.708 -0.342,-1.458 -0.294,-3.283 -1.035,-5.067 -0.74,-1.79 -2.069,-3.048 -2.858,-4.327 -0.066,-0.625 -0.103,-1.26 -0.103,-1.902 0,-0.643 0.037,-1.278 0.103,-1.905 0.789,-1.277 2.118,-2.535 2.858,-4.325 0.741,-1.784 0.693,-3.609 1.035,-5.066 0.804,-0.998 1.711,-1.904 2.708,-2.709 1.46,-0.342 3.283,-0.293 5.067,-1.032 1.79,-0.743 3.048,-2.071 4.327,-2.861 0.624,-0.065 1.259,-0.103 1.903,-0.103 0.642,0 1.277,0.038 1.902,0.103 1.277,0.79 2.535,2.118 4.325,2.861 1.786,0.739 3.609,0.69 5.068,1.032 0.998,0.805 1.904,1.711 2.709,2.709 0.342,1.457 0.293,3.282 1.033,5.066 0.74,1.79 2.07,3.048 2.86,4.325 0.065,0.627 0.102,1.262 0.102,1.905 C 0.102,-1.26 0.065,-0.625 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1319.6315,2393.4433)" | |||
| id="g6451" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="M 0,0 C -0.195,0.045 -0.393,0.069 -0.598,0.069 -0.804,0.069 -1.002,0.045 -1.196,0 V -18.157 H 0 Z" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -1,105 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="12mm" | |||
| height="12mm" | |||
| viewBox="0 0 12 12" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="DaviesRed.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="8.0171875" | |||
| inkscape:cx="19.284931" | |||
| inkscape:cy="31.695577" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="g2012" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" /> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-120.75783)"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.26457966,0,0,-0.26457966,-112.8694,754.07)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1341.4939,2370.9146)" | |||
| id="g6443" | |||
| style="stroke-width:1.33335185;fill:#7e0000;fill-opacity:1"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6445" | |||
| style="fill:#7e0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c 0,-9.941 -8.06,-18 -18,-18 -9.941,0 -18,8.059 -18,18 0,9.941 8.059,18 18,18 C -8.06,18 0,9.941 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1341.3664,2373.3046)" | |||
| id="g6447" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="fill:#ff0505;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c -0.79,1.279 -2.12,2.537 -2.86,4.327 -0.74,1.784 -0.691,3.609 -1.033,5.067 -0.805,0.997 -1.711,1.902 -2.709,2.708 -1.459,0.341 -3.282,0.293 -5.068,1.033 -1.79,0.742 -3.048,2.069 -4.325,2.86 -0.625,0.066 -1.26,0.104 -1.902,0.104 -0.644,0 -1.279,-0.038 -1.903,-0.104 -1.279,-0.791 -2.537,-2.118 -4.327,-2.86 -1.784,-0.74 -3.607,-0.692 -5.067,-1.033 -0.997,-0.806 -1.904,-1.711 -2.708,-2.708 -0.342,-1.458 -0.294,-3.283 -1.035,-5.067 -0.74,-1.79 -2.069,-3.048 -2.858,-4.327 -0.066,-0.625 -0.103,-1.26 -0.103,-1.902 0,-0.643 0.037,-1.278 0.103,-1.905 0.789,-1.277 2.118,-2.535 2.858,-4.325 0.741,-1.784 0.693,-3.609 1.035,-5.066 0.804,-0.998 1.711,-1.904 2.708,-2.709 1.46,-0.342 3.283,-0.293 5.067,-1.032 1.79,-0.743 3.048,-2.071 4.327,-2.861 0.624,-0.065 1.259,-0.103 1.903,-0.103 0.642,0 1.277,0.038 1.902,0.103 1.277,0.79 2.535,2.118 4.325,2.861 1.786,0.739 3.609,0.69 5.068,1.032 0.998,0.805 1.904,1.711 2.709,2.709 0.342,1.457 0.293,3.282 1.033,5.066 0.74,1.79 2.07,3.048 2.86,4.325 0.065,0.627 0.102,1.262 0.102,1.905 C 0.102,-1.26 0.065,-0.625 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1.2563695,0,0,1.2563695,1319.6315,2393.4433)" | |||
| id="g6451" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="M 0,0 C -0.195,0.045 -0.393,0.069 -0.598,0.069 -0.804,0.069 -1.002,0.045 -1.196,0 V -18.157 H 0 Z" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -1,105 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="9.5249996mm" | |||
| height="9.5253973mm" | |||
| viewBox="0 0 9.5249996 9.5253972" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="DaviesGrey.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="15.839192" | |||
| inkscape:cx="18.587051" | |||
| inkscape:cy="21.955931" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="g6447" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" /> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-123.23243)"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.26457966,0,0,-0.26457966,-112.8694,754.07)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="translate(1332.2646,2366.2998)" | |||
| id="g6443" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6445" | |||
| style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c 0,-9.941 -8.06,-18 -18,-18 -9.941,0 -18,8.059 -18,18 0,9.941 8.059,18 18,18 C -8.06,18 0,9.941 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="translate(1332.1631,2368.2021)" | |||
| id="g6447" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#c6c6c6;stroke-width:0.3401622;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" | |||
| d="m 0,0 c -0.79,1.279 -2.12,2.537 -2.86,4.327 -0.74,1.784 -0.691,3.609 -1.033,5.067 -0.805,0.997 -1.711,1.902 -2.709,2.708 -1.459,0.341 -3.282,0.293 -5.068,1.033 -1.79,0.742 -3.048,2.069 -4.325,2.86 -0.625,0.066 -1.26,0.104 -1.902,0.104 -0.644,0 -1.279,-0.038 -1.903,-0.104 -1.279,-0.791 -2.537,-2.118 -4.327,-2.86 -1.784,-0.74 -3.607,-0.692 -5.067,-1.033 -0.997,-0.806 -1.904,-1.711 -2.708,-2.708 -0.342,-1.458 -0.294,-3.283 -1.035,-5.067 -0.74,-1.79 -2.069,-3.048 -2.858,-4.327 -0.066,-0.625 -0.103,-1.26 -0.103,-1.902 0,-0.643 0.037,-1.278 0.103,-1.905 0.789,-1.277 2.118,-2.535 2.858,-4.325 0.741,-1.784 0.693,-3.609 1.035,-5.066 0.804,-0.998 1.711,-1.904 2.708,-2.709 1.46,-0.342 3.283,-0.293 5.067,-1.032 1.79,-0.743 3.048,-2.071 4.327,-2.861 0.624,-0.065 1.259,-0.103 1.903,-0.103 0.642,0 1.277,0.038 1.902,0.103 1.277,0.79 2.535,2.118 4.325,2.861 1.786,0.739 3.609,0.69 5.068,1.032 0.998,0.805 1.904,1.711 2.709,2.709 0.342,1.457 0.293,3.282 1.033,5.066 0.74,1.79 2.07,3.048 2.86,4.325 0.065,0.627 0.102,1.262 0.102,1.905 C 0.102,-1.26 0.065,-0.625 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="translate(1314.8633,2384.2314)" | |||
| id="g6451" | |||
| style="stroke-width:1.33335185;fill:#000000"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="M 0,0 C -0.195,0.045 -0.393,0.069 -0.598,0.069 -0.804,0.069 -1.002,0.045 -1.196,0 V -18.157 H 0 Z" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -1,105 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="9.5249996mm" | |||
| height="9.5253973mm" | |||
| viewBox="0 0 9.5249996 9.5253972" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="DaviesYel.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="22.955463" | |||
| inkscape:cx="17.632106" | |||
| inkscape:cy="-7.7422032" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="g6443" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" /> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-123.23243)"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.26457966,0,0,-0.26457966,-112.8694,754.07)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="translate(1332.2646,2366.2998)" | |||
| id="g6443" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6445" | |||
| style="fill:#c6a600;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33335185" | |||
| d="m 0,0 c 0,-9.941 -8.06,-18 -18,-18 -9.941,0 -18,8.059 -18,18 0,9.941 8.059,18 18,18 C -8.06,18 0,9.941 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="translate(1332.1631,2368.2021)" | |||
| id="g6447" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="fill:#ffdd55;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.37795801;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" | |||
| d="m 0,0 c -0.79,1.279 -2.12,2.537 -2.86,4.327 -0.74,1.784 -0.691,3.609 -1.033,5.067 -0.805,0.997 -1.711,1.902 -2.709,2.708 -1.459,0.341 -3.282,0.293 -5.068,1.033 -1.79,0.742 -3.048,2.069 -4.325,2.86 -0.625,0.066 -1.26,0.104 -1.902,0.104 -0.644,0 -1.279,-0.038 -1.903,-0.104 -1.279,-0.791 -2.537,-2.118 -4.327,-2.86 -1.784,-0.74 -3.607,-0.692 -5.067,-1.033 -0.997,-0.806 -1.904,-1.711 -2.708,-2.708 -0.342,-1.458 -0.294,-3.283 -1.035,-5.067 -0.74,-1.79 -2.069,-3.048 -2.858,-4.327 -0.066,-0.625 -0.103,-1.26 -0.103,-1.902 0,-0.643 0.037,-1.278 0.103,-1.905 0.789,-1.277 2.118,-2.535 2.858,-4.325 0.741,-1.784 0.693,-3.609 1.035,-5.066 0.804,-0.998 1.711,-1.904 2.708,-2.709 1.46,-0.342 3.283,-0.293 5.067,-1.032 1.79,-0.743 3.048,-2.071 4.327,-2.861 0.624,-0.065 1.259,-0.103 1.903,-0.103 0.642,0 1.277,0.038 1.902,0.103 1.277,0.79 2.535,2.118 4.325,2.861 1.786,0.739 3.609,0.69 5.068,1.032 0.998,0.805 1.904,1.711 2.709,2.709 0.342,1.457 0.293,3.282 1.033,5.066 0.74,1.79 2.07,3.048 2.86,4.325 0.065,0.627 0.102,1.262 0.102,1.905 C 0.102,-1.26 0.065,-0.625 0,0" /> | |||
| </g> | |||
| <g | |||
| transform="translate(1314.8633,2384.2314)" | |||
| id="g6451" | |||
| style="stroke-width:1.33335185"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.33335185" | |||
| d="M 0,0 C -0.195,0.045 -0.393,0.069 -0.598,0.069 -0.804,0.069 -1.002,0.045 -1.196,0 V -18.157 H 0 Z" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -9,13 +9,13 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="20mm" | |||
| height="20mm" | |||
| viewBox="0 0 20 20" | |||
| width="30" | |||
| height="30" | |||
| viewBox="0 0 7.9374999 7.9374999" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="FlatWAz.svg"> | |||
| sodipodi:docname="FlatA.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <inkscape:path-effect | |||
| @@ -402,9 +402,9 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="1.6739121" | |||
| inkscape:cx="73.44506" | |||
| inkscape:cy="113.45171" | |||
| inkscape:zoom="11.882199" | |||
| inkscape:cx="6.0106506" | |||
| inkscape:cy="6.3321755" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| @@ -412,13 +412,14 @@ | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="858" | |||
| inkscape:window-height="890" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-width="1520" | |||
| inkscape:window-height="889" | |||
| inkscape:window-x="201" | |||
| inkscape:window-y="132" | |||
| inkscape:window-maximized="0" | |||
| inkscape:snap-grids="false" | |||
| showguides="false"> | |||
| showguides="false" | |||
| units="px"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| @@ -431,7 +432,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -440,16 +441,16 @@ | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,10.474604)"> | |||
| transform="translate(0,-1.5878963)"> | |||
| <ellipse | |||
| style="display:inline;fill:#51b1c4;fill-opacity:1;stroke:none;stroke-width:1.43382859;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| style="display:inline;fill:#51b1c4;fill-opacity:1;stroke:none;stroke-width:0.5676986;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="10.028528" | |||
| cy="-0.46119985" | |||
| rx="10.018121" | |||
| ry="10.018414" /> | |||
| cx="3.9769018" | |||
| cy="5.5906043" | |||
| rx="3.9664943" | |||
| ry="3.9666104" /> | |||
| <g | |||
| transform="matrix(1.8116759,0,0,1.7907501,-90.300547,-165.62678)" | |||
| transform="matrix(0.71730041,0,0,0.70901522,-35.746587,-59.803731)" | |||
| id="layer1-9" | |||
| inkscape:label="Layer 1" | |||
| style="fill:#f3f3f3;fill-opacity:1"> | |||
| @@ -470,8 +471,8 @@ | |||
| id="path47006" /> | |||
| </g> | |||
| <path | |||
| style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.87772757;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 10.127907,-0.45742148 V -8.7304144" | |||
| style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34752038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 4.016249,5.5920989 V 2.3165565" | |||
| id="path4695" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| @@ -9,13 +9,13 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="20mm" | |||
| height="20mm" | |||
| viewBox="0 0 20 20" | |||
| width="30" | |||
| height="30" | |||
| viewBox="0 0 7.9374998 7.9374998" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="FlatGr2.svg"> | |||
| sodipodi:docname="FlatG.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <inkscape:path-effect | |||
| @@ -402,9 +402,9 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="2.3707967" | |||
| inkscape:cx="80.338196" | |||
| inkscape:cy="71.327541" | |||
| inkscape:zoom="8.0129344" | |||
| inkscape:cx="14.731218" | |||
| inkscape:cy="20.124297" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| @@ -412,13 +412,14 @@ | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="858" | |||
| inkscape:window-width="1036" | |||
| inkscape:window-height="890" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-x="591" | |||
| inkscape:window-y="101" | |||
| inkscape:window-maximized="0" | |||
| inkscape:snap-grids="false" | |||
| showguides="false"> | |||
| showguides="false" | |||
| units="px"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| @@ -431,7 +432,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -439,23 +440,23 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-112.75783)" | |||
| transform="translate(-230.09585,-124.82033)" | |||
| style="display:inline" /> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,10.474604)"> | |||
| transform="translate(0,-1.5878965)"> | |||
| <ellipse | |||
| style="display:inline;fill:#23494d;fill-opacity:1;stroke:none;stroke-width:1.43382859;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| style="display:inline;fill:#23494d;fill-opacity:1;stroke:none;stroke-width:0.56873465;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="10.028528" | |||
| cy="-0.46119985" | |||
| rx="10.018121" | |||
| ry="10.018414" /> | |||
| cx="3.9841411" | |||
| cy="5.583364" | |||
| rx="3.9737337" | |||
| ry="3.9738498" /> | |||
| <g | |||
| transform="matrix(1.8116759,0,0,1.7907501,-90.300547,-165.62678)" | |||
| transform="matrix(0.71860955,0,0,0.71030923,-35.811846,-59.930319)" | |||
| id="layer1-9" | |||
| inkscape:label="Layer 1" | |||
| style="fill:#f3f3f3;fill-opacity:1"> | |||
| @@ -476,8 +477,8 @@ | |||
| id="path47006" /> | |||
| </g> | |||
| <path | |||
| style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.87772757;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 10.127907,-0.45742148 V -8.7304144" | |||
| style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34815463;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 4.0235599,5.5848629 V 2.3033424" | |||
| id="path4695" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| @@ -9,13 +9,13 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="20mm" | |||
| height="20mm" | |||
| viewBox="0 0 20 20" | |||
| width="30" | |||
| height="30" | |||
| viewBox="0 0 7.9374998 7.9374998" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="FlatWRd.svg"> | |||
| sodipodi:docname="FlatR.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <inkscape:path-effect | |||
| @@ -402,9 +402,9 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="0.83695607" | |||
| inkscape:cx="85.708237" | |||
| inkscape:cy="-76.538434" | |||
| inkscape:zoom="9.4268732" | |||
| inkscape:cx="17.751314" | |||
| inkscape:cy="32.935248" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| @@ -418,7 +418,8 @@ | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" | |||
| inkscape:snap-grids="false" | |||
| showguides="false"> | |||
| showguides="false" | |||
| units="px"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| @@ -431,7 +432,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -440,16 +441,16 @@ | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,10.474604)"> | |||
| transform="translate(0,-1.5878963)"> | |||
| <ellipse | |||
| style="display:inline;fill:#e83351;fill-opacity:1;stroke:none;stroke-width:1.43382859;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| style="display:inline;fill:#e83351;fill-opacity:1;stroke:none;stroke-width:0.56545079;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="10.028528" | |||
| cy="-0.46119985" | |||
| rx="10.018121" | |||
| ry="10.018414" /> | |||
| cx="3.9611967" | |||
| cy="5.6063094" | |||
| rx="3.9507892" | |||
| ry="3.9509046" /> | |||
| <g | |||
| transform="matrix(1.8116759,0,0,1.7907501,-90.300547,-165.62678)" | |||
| transform="matrix(0.71446024,0,0,0.70620786,-35.605007,-59.529094)" | |||
| id="layer1-9" | |||
| inkscape:label="Layer 1" | |||
| style="fill:#f3f3f3;fill-opacity:1"> | |||
| @@ -470,8 +471,8 @@ | |||
| id="path47006" /> | |||
| </g> | |||
| <path | |||
| style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.87772757;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 10.127907,-0.45742148 V -8.7304144" | |||
| style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34614441;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 4.0003879,5.6077995 V 2.3452266" | |||
| id="path4695" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| @@ -9,13 +9,13 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="20mm" | |||
| height="20mm" | |||
| viewBox="0 0 20 20" | |||
| width="10" | |||
| height="10" | |||
| viewBox="0 0 2.6458332 2.6458332" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="FlatWSk.svg"> | |||
| sodipodi:docname="FlatS.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <inkscape:path-effect | |||
| @@ -402,9 +402,9 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="1.6739121" | |||
| inkscape:cx="26.544952" | |||
| inkscape:cy="8.5969557" | |||
| inkscape:zoom="29.846366" | |||
| inkscape:cx="6.8720435" | |||
| inkscape:cy="6.3216552" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| @@ -412,13 +412,15 @@ | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="858" | |||
| inkscape:window-height="890" | |||
| inkscape:window-width="1242" | |||
| inkscape:window-height="918" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" | |||
| inkscape:snap-grids="false" | |||
| showguides="false"> | |||
| showguides="false" | |||
| units="px" | |||
| inkscape:pagecheckerboard="true"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| @@ -431,7 +433,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -439,23 +441,23 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-112.75783)" | |||
| transform="translate(-230.09585,-130.11199)" | |||
| style="display:none" /> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,10.474604)"> | |||
| transform="translate(0,-6.8795647)"> | |||
| <ellipse | |||
| style="display:inline;fill:#9ce2d9;fill-opacity:1;stroke:none;stroke-width:1.43382859;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| style="display:inline;fill:#9ce2d9;fill-opacity:1;stroke:none;stroke-width:0.18894145;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="10.028528" | |||
| cy="-0.46119985" | |||
| rx="10.018121" | |||
| ry="10.018414" /> | |||
| cx="1.3305361" | |||
| cy="8.2370462" | |||
| rx="1.3201287" | |||
| ry="1.3201672" /> | |||
| <g | |||
| transform="matrix(1.8116759,0,0,1.7907501,-90.300547,-165.62678)" | |||
| transform="matrix(0.23873194,0,0,0.23597445,-11.890236,-13.527496)" | |||
| id="layer1-9" | |||
| inkscape:label="Layer 1" | |||
| style="fill:#f3f3f3;fill-opacity:1"> | |||
| @@ -476,8 +478,8 @@ | |||
| id="path47006" /> | |||
| </g> | |||
| <path | |||
| style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.87772757;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 10.127907,-0.45742148 V -8.7304144" | |||
| style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.11566175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 1.3436317,8.2375443 V 7.1473782" | |||
| id="path4695" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| @@ -0,0 +1,123 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="45" | |||
| height="45" | |||
| viewBox="0 0 11.906249 11.906249" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="LRoundBlu.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="5.2414003" | |||
| inkscape:cx="-36.957413" | |||
| inkscape:cy="-1.9695351" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1920" | |||
| inkscape:window-height="1017" | |||
| inkscape:window-x="-8" | |||
| inkscape:window-y="-8" | |||
| inkscape:window-maximized="1" | |||
| inkscape:snap-grids="false" | |||
| showguides="false" | |||
| units="px"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| </sodipodi:namedview> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-120.85159)" | |||
| style="display:inline"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.02677645,0.31375336,0.30918119,-0.02717243,-530.91204,-221.4682)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="translate(1332.2646,2366.2998)" | |||
| id="g6443" | |||
| style="stroke:#393939;stroke-width:1.33306408;stroke-miterlimit:4;stroke-dasharray:10.66451237, 5.33225618;stroke-dashoffset:13.06402779;stroke-opacity:1"> | |||
| <path | |||
| style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.98999999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#393939;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33306408;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:10.66451237, 5.33225618;stroke-dashoffset:13.06402779;stroke-opacity:1;paint-order:fill markers stroke;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | |||
| d="m -36.121865,1.5070325 -0.01072,-1.75366142 -9.19e-4,-0.0332479 0.0031,-0.031639 0.161016,-1.76265348 0.003,-0.033585 0.0051,-0.031808 0.337827,-1.7583616 0.007,-0.031976 0.009,-0.032145 0.21149,-0.7044686 0.189809,-0.6378964 1.277908,0.3813969 -0.191756,0.6380651 -0.198788,0.670041 -0.324435,1.6866263 -0.157783,1.7094417 0.01278,1.6868287 0.173777,1.6670041 0.332324,1.6415106 0.320685,1.0543878 0.192494,0.6381148 -1.273946,0.3887113 -0.19444,-0.6379463 -0.329051,-1.0830699 -0.0085,-0.030628 -0.0066,-0.030796 -0.345668,-1.7050493 -0.0066,-0.030796 -0.0027,-0.031134 -0.181789,-1.7368859 -0.0027,-0.031133 z m 4.049212,8.3634577 0.367728,0.5562838 0.246474,0.378583 1.065067,1.319275 1.197584,1.219578 1.314288,1.095766 1.459923,0.989052 1.575111,0.847727 1.059451,0.439524 0.616216,0.256383 -0.510986,1.230317 -0.616047,-0.254436 -1.100223,-0.457559 -0.03054,-0.01304 -0.0307,-0.01498 -1.628736,-0.878371 -0.02893,-0.0171 -0.0291,-0.01905 -1.503649,-1.018592 -0.02698,-0.01727 -0.02537,-0.02133 -1.375605,-1.147308 -0.02537,-0.02133 -0.0236,-0.02344 -1.238431,-1.261131 -0.02359,-0.02344 -0.01987,-0.02573 -1.102527,-1.367001 -0.0197,-0.02378 -0.01809,-0.02784 -0.270744,-0.409809 -0.365781,-0.556452 z m 0.07142,-21.1102772 0.921495,-1.08551 0.02133,-0.02537 0.02539,-0.02376 1.271702,-1.229544 0.02361,-0.02165 0.02573,-0.01987 1.375796,-1.091526 0.02572,-0.01987 0.02606,-0.01598 1.466774,-0.946491 0.02589,-0.01793 0.03012,-0.01437 1.5443,-0.79833 0.02801,-0.01615 0.02851,-0.01031 1.612265,-0.647382 0.02835,-0.01226 0.03063,-0.0085 0.476089,-0.139254 0.640397,-0.18877 0.375427,1.279018 -0.638619,0.186656 -0.449185,0.133002 -1.545845,0.622026 -1.495561,0.772545 -1.412873,0.912416 -1.320791,1.047554 -1.219486,1.176011 -0.903554,1.066312 -0.432396,0.5079515 -1.015735,-0.8628435 z m 12.525334,29.066754 0.662137,0.06224 0.656298,0.06275 1.705016,-0.0065 1.669287,-0.170052 1.638125,-0.326151 1.623968,-0.4896 0.01151,-0.003 1.5147121,-0.61933 1.0839157,-0.568297 0.5887495,-0.309765 0.6197002,1.179445 -0.5906956,0.309935 -1.1062537,0.581994 -0.028177,0.0142 -0.030291,0.01242 -1.6076982,0.654829 -0.02834,0.01226 -0.03063,0.0085 -1.662212,0.500755 -0.03046,0.01048 -0.03097,0.0046 -1.705554,0.339832 -0.0308,0.0066 -0.03291,0.0048 -1.735613,0.173838 -0.03291,0.0048 -0.03147,-0.0012 -1.755944,0.007 -0.0313,7.5e-4 -0.03358,-0.003 -0.699614,-0.06488 -0.664251,-0.06402 z m 1.227117,-36.084192 0.666642,0.0011 1.146911,6.54e-4 0.03147,0.0012 0.03358,0.003 1.759941,0.174974 0.03359,0.003 0.03198,0.007 1.753872,0.3539 0.03392,0.0069 0.03214,0.009 1.736128,0.533836 0.03231,0.01093 0.03054,0.01304 1.7051003,0.718843 0.030536,0.01304 0.028927,0.0171 1.6256869,0.888438 0.028759,0.01515 0.029095,0.01904 0.3626746,0.248934 0.5502707,0.377759 -0.7537403,1.098426 -0.5501021,-0.375813 -0.3459281,-0.23666 -1.5434717,-0.844586 -1.6463123,-0.696488 -1.685628,-0.516645 -1.684083,-0.340339 -1.686934,-0.169534 -1.123562,-0.0027 -0.666641,-0.0011 z m 13.4052803,30.919616 0.2837582,-0.277472 1.1069352,-1.321138 0.9861717,-1.4479091 0.851956,-1.5715561 0.68531922,-1.639463 0.50970364,-1.6752252 0.208736,-1.0531876 0.12958087,-0.6542452 1.30849047,0.2591618 -0.1295809,0.6542452 -0.21704063,1.0931155 -0.007033,0.031976 -0.008979,0.032145 -0.52977555,1.737737 -0.0109246,0.032313 -0.013039,0.030536 -0.71461466,1.7086549 -0.013039,0.030536 -0.0151534,0.028758 -0.88437696,1.6272958 -0.015153,0.02876 -0.019045,0.02909 -1.0228216,1.500095 -0.019045,0.0291 -0.021328,0.02537 -1.1497595,1.369935 -0.021328,0.02537 -0.023442,0.0236 -0.3036458,0.296838 -0.4773021,0.46479 -0.9313587,-0.95249 z m 1.4397322,-24.755604 0.4157918,0.522715 0.8467211,1.061763 0.019703,0.02378 0.018095,0.02784 0.950046,1.4625447 0.018094,0.02784 0.014203,0.028176 0.80205409,1.5420168 0.0161487,0.028008 0.0124255,0.030291 0.65093677,1.608036 0.0104797,0.030459 0.0104797,0.030459 0.49491668,1.6627173 0.008534,0.030628 0.006588,0.030796 0.33593956,1.7058919 0.00481,0.032911 0.00464,0.030965 0.058752,0.6104887 0.065248,0.66285779 -1.32571575,0.13049632 -0.06524816,-0.66285781 -0.05783335,-0.5772409 -0.32276365,-1.644299 -0.47573467,-1.5996841 -0.62836872,-1.5511774 -0.7760998,-1.4913329 -0.9161398,-1.4105895 -0.8226205,-1.0324829 -0.4156233,-0.52077 z" | |||
| id="path830" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1,0,0,0.89360324,1314.8633,2382.2996)" | |||
| id="g6451" | |||
| style="fill:#000000;stroke-width:1.33335185" /> | |||
| </g> | |||
| </g> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,2.380853)"> | |||
| <ellipse | |||
| style="fill:#3e4be4;fill-opacity:1;stroke:#393939;stroke-width:0.35010242;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path821" | |||
| cx="5.9689016" | |||
| cy="3.5465229" | |||
| rx="4.8220005" | |||
| ry="4.8652225" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.39527428" | |||
| d="m 6.1713161,-1.1854015 c -0.064576,-0.011943 -0.1301455,-0.018311 -0.198033,-0.018311 -0.068218,0 -0.133788,0.00638 -0.198033,0.018311 v 4.8185396 h 0.396066 z" /> | |||
| <ellipse | |||
| style="display:inline;fill:#000000;fill-opacity:0;stroke:#393939;stroke-width:0.55056494;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="5.9689016" | |||
| cy="3.5465229" | |||
| rx="5.1742706" | |||
| ry="5.2348886" /> | |||
| </g> | |||
| </svg> | |||
| @@ -0,0 +1,123 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="45" | |||
| height="45" | |||
| viewBox="0 0 11.906249 11.906249" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="LRoundWhy.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="8.7245499" | |||
| inkscape:cx="33.699585" | |||
| inkscape:cy="27.578094" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1920" | |||
| inkscape:window-height="1017" | |||
| inkscape:window-x="1912" | |||
| inkscape:window-y="-8" | |||
| inkscape:window-maximized="1" | |||
| inkscape:snap-grids="false" | |||
| showguides="false" | |||
| units="px"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| </sodipodi:namedview> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-120.85159)" | |||
| style="display:inline"> | |||
| <g | |||
| id="g2012" | |||
| transform="matrix(0.02677645,0.31375336,0.30918119,-0.02717243,-530.91204,-221.4682)" | |||
| style="stroke-width:1.33335185"> | |||
| <g | |||
| transform="translate(1332.2646,2366.2998)" | |||
| id="g6443" | |||
| style="stroke:#393939;stroke-width:1.33306408;stroke-miterlimit:4;stroke-dasharray:10.66451237, 5.33225618;stroke-dashoffset:13.06402779;stroke-opacity:1"> | |||
| <path | |||
| style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.98999999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#393939;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33306408;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:10.66451237, 5.33225618;stroke-dashoffset:13.06402779;stroke-opacity:1;paint-order:fill markers stroke;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | |||
| d="m -36.121865,1.5070325 -0.01072,-1.75366142 -9.19e-4,-0.0332479 0.0031,-0.031639 0.161016,-1.76265348 0.003,-0.033585 0.0051,-0.031808 0.337827,-1.7583616 0.007,-0.031976 0.009,-0.032145 0.21149,-0.7044686 0.189809,-0.6378964 1.277908,0.3813969 -0.191756,0.6380651 -0.198788,0.670041 -0.324435,1.6866263 -0.157783,1.7094417 0.01278,1.6868287 0.173777,1.6670041 0.332324,1.6415106 0.320685,1.0543878 0.192494,0.6381148 -1.273946,0.3887113 -0.19444,-0.6379463 -0.329051,-1.0830699 -0.0085,-0.030628 -0.0066,-0.030796 -0.345668,-1.7050493 -0.0066,-0.030796 -0.0027,-0.031134 -0.181789,-1.7368859 -0.0027,-0.031133 z m 4.049212,8.3634577 0.367728,0.5562838 0.246474,0.378583 1.065067,1.319275 1.197584,1.219578 1.314288,1.095766 1.459923,0.989052 1.575111,0.847727 1.059451,0.439524 0.616216,0.256383 -0.510986,1.230317 -0.616047,-0.254436 -1.100223,-0.457559 -0.03054,-0.01304 -0.0307,-0.01498 -1.628736,-0.878371 -0.02893,-0.0171 -0.0291,-0.01905 -1.503649,-1.018592 -0.02698,-0.01727 -0.02537,-0.02133 -1.375605,-1.147308 -0.02537,-0.02133 -0.0236,-0.02344 -1.238431,-1.261131 -0.02359,-0.02344 -0.01987,-0.02573 -1.102527,-1.367001 -0.0197,-0.02378 -0.01809,-0.02784 -0.270744,-0.409809 -0.365781,-0.556452 z m 0.07142,-21.1102772 0.921495,-1.08551 0.02133,-0.02537 0.02539,-0.02376 1.271702,-1.229544 0.02361,-0.02165 0.02573,-0.01987 1.375796,-1.091526 0.02572,-0.01987 0.02606,-0.01598 1.466774,-0.946491 0.02589,-0.01793 0.03012,-0.01437 1.5443,-0.79833 0.02801,-0.01615 0.02851,-0.01031 1.612265,-0.647382 0.02835,-0.01226 0.03063,-0.0085 0.476089,-0.139254 0.640397,-0.18877 0.375427,1.279018 -0.638619,0.186656 -0.449185,0.133002 -1.545845,0.622026 -1.495561,0.772545 -1.412873,0.912416 -1.320791,1.047554 -1.219486,1.176011 -0.903554,1.066312 -0.432396,0.5079515 -1.015735,-0.8628435 z m 12.525334,29.066754 0.662137,0.06224 0.656298,0.06275 1.705016,-0.0065 1.669287,-0.170052 1.638125,-0.326151 1.623968,-0.4896 0.01151,-0.003 1.5147121,-0.61933 1.0839157,-0.568297 0.5887495,-0.309765 0.6197002,1.179445 -0.5906956,0.309935 -1.1062537,0.581994 -0.028177,0.0142 -0.030291,0.01242 -1.6076982,0.654829 -0.02834,0.01226 -0.03063,0.0085 -1.662212,0.500755 -0.03046,0.01048 -0.03097,0.0046 -1.705554,0.339832 -0.0308,0.0066 -0.03291,0.0048 -1.735613,0.173838 -0.03291,0.0048 -0.03147,-0.0012 -1.755944,0.007 -0.0313,7.5e-4 -0.03358,-0.003 -0.699614,-0.06488 -0.664251,-0.06402 z m 1.227117,-36.084192 0.666642,0.0011 1.146911,6.54e-4 0.03147,0.0012 0.03358,0.003 1.759941,0.174974 0.03359,0.003 0.03198,0.007 1.753872,0.3539 0.03392,0.0069 0.03214,0.009 1.736128,0.533836 0.03231,0.01093 0.03054,0.01304 1.7051003,0.718843 0.030536,0.01304 0.028927,0.0171 1.6256869,0.888438 0.028759,0.01515 0.029095,0.01904 0.3626746,0.248934 0.5502707,0.377759 -0.7537403,1.098426 -0.5501021,-0.375813 -0.3459281,-0.23666 -1.5434717,-0.844586 -1.6463123,-0.696488 -1.685628,-0.516645 -1.684083,-0.340339 -1.686934,-0.169534 -1.123562,-0.0027 -0.666641,-0.0011 z m 13.4052803,30.919616 0.2837582,-0.277472 1.1069352,-1.321138 0.9861717,-1.4479091 0.851956,-1.5715561 0.68531922,-1.639463 0.50970364,-1.6752252 0.208736,-1.0531876 0.12958087,-0.6542452 1.30849047,0.2591618 -0.1295809,0.6542452 -0.21704063,1.0931155 -0.007033,0.031976 -0.008979,0.032145 -0.52977555,1.737737 -0.0109246,0.032313 -0.013039,0.030536 -0.71461466,1.7086549 -0.013039,0.030536 -0.0151534,0.028758 -0.88437696,1.6272958 -0.015153,0.02876 -0.019045,0.02909 -1.0228216,1.500095 -0.019045,0.0291 -0.021328,0.02537 -1.1497595,1.369935 -0.021328,0.02537 -0.023442,0.0236 -0.3036458,0.296838 -0.4773021,0.46479 -0.9313587,-0.95249 z m 1.4397322,-24.755604 0.4157918,0.522715 0.8467211,1.061763 0.019703,0.02378 0.018095,0.02784 0.950046,1.4625447 0.018094,0.02784 0.014203,0.028176 0.80205409,1.5420168 0.0161487,0.028008 0.0124255,0.030291 0.65093677,1.608036 0.0104797,0.030459 0.0104797,0.030459 0.49491668,1.6627173 0.008534,0.030628 0.006588,0.030796 0.33593956,1.7058919 0.00481,0.032911 0.00464,0.030965 0.058752,0.6104887 0.065248,0.66285779 -1.32571575,0.13049632 -0.06524816,-0.66285781 -0.05783335,-0.5772409 -0.32276365,-1.644299 -0.47573467,-1.5996841 -0.62836872,-1.5511774 -0.7760998,-1.4913329 -0.9161398,-1.4105895 -0.8226205,-1.0324829 -0.4156233,-0.52077 z" | |||
| id="path830" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| transform="matrix(1,0,0,0.89360324,1314.8633,2382.2996)" | |||
| id="g6451" | |||
| style="fill:#000000;stroke-width:1.33335185" /> | |||
| </g> | |||
| </g> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,2.380853)"> | |||
| <ellipse | |||
| style="fill:#ffffff;fill-opacity:1;stroke:#393939;stroke-width:0.35010242;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path821" | |||
| cx="5.9689016" | |||
| cy="3.5465229" | |||
| rx="4.8220005" | |||
| ry="4.8652225" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6453" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.39527428" | |||
| d="m 6.1713161,-1.1854015 c -0.064576,-0.011943 -0.1301455,-0.018311 -0.198033,-0.018311 -0.068218,0 -0.133788,0.00638 -0.198033,0.018311 v 4.8185396 h 0.396066 z" /> | |||
| <ellipse | |||
| style="display:inline;fill:#000000;fill-opacity:0;stroke:#393939;stroke-width:0.55056494;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="5.9689016" | |||
| cy="3.5465229" | |||
| rx="5.1742706" | |||
| ry="5.2348886" /> | |||
| </g> | |||
| </svg> | |||
| @@ -1,6 +1,4 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| @@ -9,112 +7,94 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="6" | |||
| height="15" | |||
| viewBox="0 0 1.5875 3.9687501" | |||
| width="10" | |||
| height="20" | |||
| viewBox="0 0 10 20" | |||
| version="1.1" | |||
| id="svg56722" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="MCKSSS_0.svg"> | |||
| <defs | |||
| id="defs56716" /> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="22.4" | |||
| inkscape:cx="-5.6109902" | |||
| inkscape:cy="12.134597" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="true" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1920" | |||
| inkscape:window-height="1017" | |||
| inkscape:window-x="1912" | |||
| inkscape:window-y="-8" | |||
| inkscape:window-maximized="1" | |||
| units="px" | |||
| inkscape:snap-grids="false"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| </sodipodi:namedview> | |||
| id="svg6" | |||
| sodipodi:docname="MCKSSS_0.svg" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"> | |||
| <metadata | |||
| id="metadata56719"> | |||
| id="metadata12"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <defs | |||
| id="defs10" /> | |||
| <sodipodi:namedview | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1" | |||
| objecttolerance="10" | |||
| gridtolerance="10" | |||
| guidetolerance="10" | |||
| inkscape:pageopacity="0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:window-width="1480" | |||
| inkscape:window-height="834" | |||
| id="namedview8" | |||
| showgrid="false" | |||
| inkscape:zoom="15.80966" | |||
| inkscape:cx="0.91872205" | |||
| inkscape:cy="6.7567209" | |||
| inkscape:window-x="137" | |||
| inkscape:window-y="46" | |||
| inkscape:window-maximized="0" | |||
| inkscape:current-layer="moDllzSwitchH_0" /> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-35.423779,-64.83175)"> | |||
| id="Page-1" | |||
| style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1" | |||
| transform="matrix(1,0,0,0.66551127,0,0.03466185)"> | |||
| <g | |||
| transform="matrix(0.11820671,0,0,-0.19994136,-57.192093,298.52136)" | |||
| id="g56714" | |||
| style="stroke-width:1.2817142"> | |||
| <path | |||
| d="m 783.5078,1167.3652 c 0,0.779 0.639,1.418 1.418,1.418 h 10.622 c 0.779,0 1.418,-0.639 1.418,-1.418 v -17.007 c 0,-0.779 -0.639,-1.417 -1.418,-1.417 h -10.622 c -0.779,0 -1.418,0.638 -1.418,1.417 z" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| id="path5785" | |||
| inkscape:connector-curvature="0" /> | |||
| <g | |||
| style="fill:#282828;fill-opacity:1;stroke-width:1.2817142" | |||
| id="g5795"> | |||
| <g | |||
| style="fill:#282828;fill-opacity:1;stroke-width:1.2817142" | |||
| id="g5797"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5805" | |||
| style="fill:#282828;fill-opacity:1;stroke:none;stroke-width:1.2817142" | |||
| d="m 785.616,1167.502 c -0.468,0 -0.85,-0.382 -0.85,-0.85 v 0 -15.724 c 0,-0.468 0.382,-0.851 0.85,-0.851 v 0 h 9.241 c 0.466,0 0.849,0.383 0.849,0.851 v 0 15.724 c 0,0.468 -0.383,0.85 -0.849,0.85 v 0 z" /> | |||
| </g> | |||
| </g> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5815" | |||
| style="fill:#444444;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 784.767,1158.581 h 10.94 v -8.504 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5817" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 784.767,1154.797 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5819" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 784.767,1151.013 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5821" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 784.767,1152.904 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5823" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 784.767,1156.689 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5825" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 784.767,1158.581 h 10.94 v -0.936 h -10.94 z" /> | |||
| id="moDllzSwitchH_0"> | |||
| <rect | |||
| style="fill:#222222;fill-rule:evenodd;stroke:none;stroke-width:1.06787801" | |||
| id="hole-4" | |||
| x="-30.28513" | |||
| y="0.66415089" | |||
| width="30.439369" | |||
| height="8.9912233" | |||
| rx="6.3415351" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="fill:#cccccc;fill-rule:evenodd;stroke:#666666;stroke-width:1.03467059" | |||
| id="led" | |||
| cx="-24.07736" | |||
| cy="5.1379118" | |||
| rx="5.32689" | |||
| ry="3.545105" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="opacity:0.6;fill:#dddddd;fill-rule:evenodd;stroke:none;stroke-width:1.03467059" | |||
| id="hi" | |||
| cx="-24.07736" | |||
| cy="5.1379118" | |||
| transform="rotate(-90)" | |||
| rx="3.1707675" | |||
| ry="2.1101816" /> | |||
| <ellipse | |||
| style="opacity:0.8;fill:#eeeeee;fill-rule:evenodd;stroke:none;stroke-width:1.03467059" | |||
| id="circle5" | |||
| cx="-25.345665" | |||
| cy="5.1379118" | |||
| rx="1.9024606" | |||
| ry="1.2661089" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="opacity:1;fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1.03467059" | |||
| id="circle7" | |||
| cx="-22.174898" | |||
| cy="5.1379118" | |||
| rx="0.95123029" | |||
| ry="0.63305444" | |||
| transform="rotate(-90)" /> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -1,6 +1,4 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| @@ -9,112 +7,94 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="6" | |||
| height="15" | |||
| viewBox="0 0 1.5875 3.9687501" | |||
| width="10" | |||
| height="20" | |||
| viewBox="0 0 10 20" | |||
| version="1.1" | |||
| id="svg56722" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="MCKSSS_1a.svg"> | |||
| <defs | |||
| id="defs56716" /> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="31.678384" | |||
| inkscape:cx="-2.7566469" | |||
| inkscape:cy="8.1603788" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="g56702" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="2077" | |||
| inkscape:window-y="142" | |||
| inkscape:window-maximized="0" | |||
| units="px" /> | |||
| id="svg6" | |||
| sodipodi:docname="MCKSSS_1.svg" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"> | |||
| <metadata | |||
| id="metadata56719"> | |||
| id="metadata12"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <defs | |||
| id="defs10" /> | |||
| <sodipodi:namedview | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1" | |||
| objecttolerance="10" | |||
| gridtolerance="10" | |||
| guidetolerance="10" | |||
| inkscape:pageopacity="0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:window-width="1412" | |||
| inkscape:window-height="853" | |||
| id="namedview8" | |||
| showgrid="false" | |||
| inkscape:zoom="17.540687" | |||
| inkscape:cx="-1.9842157" | |||
| inkscape:cy="5.6701352" | |||
| inkscape:window-x="933" | |||
| inkscape:window-y="34" | |||
| inkscape:window-maximized="0" | |||
| inkscape:current-layer="moDllzSwitchH_0" /> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-30.16787,-66.867)"> | |||
| id="Page-1" | |||
| style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1" | |||
| transform="matrix(1,0,0,0.66525424,0,0.04237288)"> | |||
| <g | |||
| transform="matrix(0.11906604,0,0,-0.19999202,-60.620909,300.61482)" | |||
| id="g56702" | |||
| style="stroke-width:1.2817142"> | |||
| <g | |||
| transform="translate(762.5078,1167.3652)" | |||
| id="g5827" | |||
| style="stroke-width:1.2817142"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5829" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="M 0,0 C 0,0.779 0.639,1.418 1.418,1.418 H 12.04 c 0.779,0 1.418,-0.639 1.418,-1.418 v -17.007 c 0,-0.779 -0.639,-1.417 -1.418,-1.417 H 1.418 C 0.639,-18.424 0,-17.786 0,-17.007 Z" /> | |||
| </g> | |||
| <g | |||
| style="fill:#282828;fill-opacity:1;stroke-width:1.2817142" | |||
| id="g5839"> | |||
| <g | |||
| style="fill:#282828;fill-opacity:1;stroke-width:1.2817142" | |||
| id="g5841"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5849" | |||
| style="fill:#282828;fill-opacity:1;stroke:none;stroke-width:1.2817142" | |||
| d="m 764.617,1167.502 c -0.468,0 -0.852,-0.382 -0.852,-0.85 v 0 -15.724 c 0,-0.468 0.384,-0.851 0.852,-0.851 v 0 h 9.239 c 0.467,0 0.85,0.383 0.85,0.851 v 0 15.724 c 0,0.468 -0.383,0.85 -0.85,0.85 v 0 z" /> | |||
| </g> | |||
| </g> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5859" | |||
| style="fill:#444444;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1163.5773 h 10.94 v -8.504 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5861" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1159.7933 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5863" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1156.0093 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5865" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1157.9003 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5867" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1161.6853 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5869" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1163.5773 h 10.94 v -0.936 h -10.94 z" /> | |||
| id="moDllzSwitchH_0"> | |||
| <rect | |||
| style="fill:#222222;fill-rule:evenodd;stroke:none;stroke-width:1.06808424" | |||
| id="hole-4" | |||
| x="-30.439911" | |||
| y="0.66437244" | |||
| width="30.45113" | |||
| height="8.9912233" | |||
| rx="6.3439856" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="fill:#cccccc;fill-rule:evenodd;stroke:#666666;stroke-width:1.03487051" | |||
| id="led" | |||
| cx="-13.882891" | |||
| cy="5.1381335" | |||
| rx="5.328948" | |||
| ry="3.545105" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="opacity:0.6;fill:#dddddd;fill-rule:evenodd;stroke:none;stroke-width:1.03487051" | |||
| id="hi" | |||
| cx="-13.882891" | |||
| cy="5.1381335" | |||
| transform="rotate(-90)" | |||
| rx="3.1719928" | |||
| ry="2.1101816" /> | |||
| <ellipse | |||
| style="opacity:0.8;fill:#eeeeee;fill-rule:evenodd;stroke:none;stroke-width:1.03487051" | |||
| id="circle5" | |||
| cx="-15.151685" | |||
| cy="5.1381335" | |||
| rx="1.9031956" | |||
| ry="1.2661089" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="opacity:1;fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1.03487051" | |||
| id="circle7" | |||
| cx="-11.979693" | |||
| cy="5.1381335" | |||
| rx="0.95159781" | |||
| ry="0.63305444" | |||
| transform="rotate(-90)" /> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -1,6 +1,4 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| @@ -9,112 +7,94 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="6" | |||
| height="15" | |||
| viewBox="0 0 1.5875 3.9687501" | |||
| width="10" | |||
| height="20" | |||
| viewBox="0 0 10 20" | |||
| version="1.1" | |||
| id="svg56722" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="MCKSSS_1.svg"> | |||
| <defs | |||
| id="defs56716" /> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="31.678384" | |||
| inkscape:cx="-2.7566469" | |||
| inkscape:cy="8.1603788" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1600" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="2077" | |||
| inkscape:window-y="142" | |||
| inkscape:window-maximized="0" | |||
| units="px" /> | |||
| id="svg6" | |||
| sodipodi:docname="MCKSSS_2.svg" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"> | |||
| <metadata | |||
| id="metadata56719"> | |||
| id="metadata12"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <defs | |||
| id="defs10" /> | |||
| <sodipodi:namedview | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1" | |||
| objecttolerance="10" | |||
| gridtolerance="10" | |||
| guidetolerance="10" | |||
| inkscape:pageopacity="0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:window-width="1506" | |||
| inkscape:window-height="814" | |||
| id="namedview8" | |||
| showgrid="false" | |||
| inkscape:zoom="19.981919" | |||
| inkscape:cx="-3.0609974" | |||
| inkscape:cy="10.77842" | |||
| inkscape:window-x="248" | |||
| inkscape:window-y="246" | |||
| inkscape:window-maximized="0" | |||
| inkscape:current-layer="moDllzSwitchH_0" /> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-30.16787,-66.867)"> | |||
| id="Page-1" | |||
| style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1" | |||
| transform="matrix(1,0,0,0.66525424,0,0.04237288)"> | |||
| <g | |||
| transform="matrix(0.11906604,0,0,-0.19999202,-60.620909,300.61482)" | |||
| id="g56702" | |||
| style="stroke-width:1.2817142"> | |||
| <g | |||
| transform="translate(762.5078,1167.3652)" | |||
| id="g5827" | |||
| style="stroke-width:1.2817142"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5829" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="M 0,0 C 0,0.779 0.639,1.418 1.418,1.418 H 12.04 c 0.779,0 1.418,-0.639 1.418,-1.418 v -17.007 c 0,-0.779 -0.639,-1.417 -1.418,-1.417 H 1.418 C 0.639,-18.424 0,-17.786 0,-17.007 Z" /> | |||
| </g> | |||
| <g | |||
| style="fill:#282828;fill-opacity:1;stroke-width:1.2817142" | |||
| id="g5839"> | |||
| <g | |||
| style="fill:#282828;fill-opacity:1;stroke-width:1.2817142" | |||
| id="g5841"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5849" | |||
| style="fill:#282828;fill-opacity:1;stroke:none;stroke-width:1.2817142" | |||
| d="m 764.617,1167.502 c -0.468,0 -0.852,-0.382 -0.852,-0.85 v 0 -15.724 c 0,-0.468 0.384,-0.851 0.852,-0.851 v 0 h 9.239 c 0.467,0 0.85,0.383 0.85,0.851 v 0 15.724 c 0,0.468 -0.383,0.85 -0.85,0.85 v 0 z" /> | |||
| </g> | |||
| </g> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5859" | |||
| style="fill:#444444;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1167.503 h 10.94 v -8.504 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5861" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1163.719 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5863" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1159.935 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5865" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1161.826 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5867" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1165.611 h 10.94 v -0.936 h -10.94 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path5869" | |||
| style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2817142" | |||
| d="m 763.767,1167.503 h 10.94 v -0.936 h -10.94 z" /> | |||
| id="moDllzSwitchH_0"> | |||
| <rect | |||
| style="fill:#222222;stroke-width:1.06808424" | |||
| id="hole-4" | |||
| x="-30.342781" | |||
| y="0.51906741" | |||
| width="30.45113" | |||
| height="8.9912233" | |||
| rx="6.3439856" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="fill:#cccccc;stroke:#666666;stroke-width:1.03487051" | |||
| id="led" | |||
| cx="-6.0899501" | |||
| cy="4.9928284" | |||
| rx="5.328948" | |||
| ry="3.545105" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="opacity:0.6;fill:#dddddd;stroke-width:1.03487051" | |||
| id="hi" | |||
| cx="-6.0899501" | |||
| cy="4.9928284" | |||
| rx="3.1719928" | |||
| ry="2.1101816" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="opacity:0.8;fill:#eeeeee;stroke-width:1.03487051" | |||
| id="circle5" | |||
| cx="-7.3587441" | |||
| cy="4.9928284" | |||
| rx="1.9031956" | |||
| ry="1.2661089" | |||
| transform="rotate(-90)" /> | |||
| <ellipse | |||
| style="opacity:1;fill:#ffffff;stroke-width:1.03487051" | |||
| id="circle7" | |||
| cx="-4.1867523" | |||
| cy="4.9928284" | |||
| rx="0.95159781" | |||
| ry="0.63305444" | |||
| transform="rotate(-90)" /> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -9,9 +9,9 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="8.3556204mm" | |||
| height="8.3556299mm" | |||
| viewBox="0 0 8.3556203 8.3556298" | |||
| width="26" | |||
| height="26" | |||
| viewBox="0 0 6.8791666 6.8791665" | |||
| version="1.1" | |||
| id="svg15246" | |||
| sodipodi:docname="PJ301MA.svg" | |||
| @@ -146,16 +146,16 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="7.7187105" | |||
| inkscape:cx="-4.490289" | |||
| inkscape:cy="-24.301521" | |||
| inkscape:document-units="mm" | |||
| inkscape:zoom="7.7904062" | |||
| inkscape:cx="7.1034477" | |||
| inkscape:cy="-13.701213" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| inkscape:window-width="1148" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="70" | |||
| inkscape:window-y="15" | |||
| inkscape:window-x="661" | |||
| inkscape:window-y="378" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| fit-margin-top="0" | |||
| @@ -170,7 +170,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -178,21 +178,21 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-88.611154,-119.19859)"> | |||
| transform="translate(-88.611154,-120.67505)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7255" | |||
| d="m 92.788964,127.42922 c -2.235179,0 -4.05281,-1.81762 -4.05281,-4.05282 0,-2.23516 1.817631,-4.05281 4.05281,-4.05281 2.235176,0 4.05281,1.81765 4.05281,4.05281 0,2.2352 -1.817634,4.05282 -4.05281,4.05282" | |||
| style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#7cb5a4;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261" | |||
| d="m 92.056498,127.38399 c -1.806104,0 -3.275111,-1.46901 -3.275111,-3.27512 0,-1.8061 1.469007,-3.27509 3.275111,-3.27509 1.806106,0 3.275109,1.46899 3.275109,3.27509 0,1.80611 -1.469003,3.27512 -3.275109,3.27512" | |||
| style="fill:#c2d8c3;fill-opacity:1;fill-rule:nonzero;stroke:#237b60;stroke-width:0.28052977;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7261" | |||
| d="m 92.788964,126.29511 c -1.609548,0 -2.918685,-1.30916 -2.918685,-2.91871 0,-1.60954 1.309137,-2.91867 2.918685,-2.91867 1.609549,0 2.918682,1.30913 2.918682,2.91867 0,1.60955 -1.309133,2.91871 -2.918682,2.91871" | |||
| style="fill:#b6d6cc;fill-opacity:1;fill-rule:nonzero;stroke:#7cb5a4;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261-6" | |||
| d="m 92.056498,126.34769 c -1.23462,0 -2.238806,-1.00419 -2.238806,-2.23882 0,-1.23461 1.004186,-2.23879 2.238806,-2.23879 1.234621,0 2.238804,1.00418 2.238804,2.23879 0,1.23463 -1.004183,2.23882 -2.238804,2.23882" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#237b60;stroke-width:0.19176503;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7265" | |||
| d="m 94.588681,123.3764 c 0,0.99357 -0.806153,1.79974 -1.799717,1.79974 -0.993567,0 -1.79972,-0.80617 -1.79972,-1.79974 0,-0.99356 0.806153,-1.79969 1.79972,-1.79969 0.993564,0 1.799717,0.80613 1.799717,1.79969" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
| d="m 93.564599,124.10887 c 0,0.83258 -0.675528,1.50812 -1.508101,1.50812 -0.832575,0 -1.508103,-0.67554 -1.508103,-1.50812 0,-0.83257 0.675528,-1.50808 1.508103,-1.50808 0.832573,0 1.508101,0.67551 1.508101,1.50808" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.29561555" /> | |||
| </g> | |||
| </svg> | |||
| @@ -9,9 +9,9 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="8.3556204mm" | |||
| height="8.3556299mm" | |||
| viewBox="0 0 8.3556203 8.3556298" | |||
| width="26" | |||
| height="26" | |||
| viewBox="0 0 6.8791666 6.8791665" | |||
| version="1.1" | |||
| id="svg15246" | |||
| sodipodi:docname="PJ301MB.svg" | |||
| @@ -146,16 +146,16 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="15.437421" | |||
| inkscape:cx="17.647676" | |||
| inkscape:cy="4.6666031" | |||
| inkscape:document-units="mm" | |||
| inkscape:zoom="7.934896" | |||
| inkscape:cx="7.1034477" | |||
| inkscape:cy="-13.701213" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| inkscape:window-width="1148" | |||
| inkscape:window-width="1160" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="566" | |||
| inkscape:window-y="70" | |||
| inkscape:window-x="672" | |||
| inkscape:window-y="99" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| fit-margin-top="0" | |||
| @@ -170,7 +170,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -178,21 +178,21 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-88.611154,-119.19859)"> | |||
| transform="translate(-88.611154,-120.67505)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7255" | |||
| d="m 92.788964,127.42922 c -2.235179,0 -4.05281,-1.81762 -4.05281,-4.05282 0,-2.23516 1.817631,-4.05281 4.05281,-4.05281 2.235176,0 4.05281,1.81765 4.05281,4.05281 0,2.2352 -1.817634,4.05282 -4.05281,4.05282" | |||
| style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#163142;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261" | |||
| d="m 92.056498,127.38399 c -1.806104,0 -3.275111,-1.46901 -3.275111,-3.27512 0,-1.8061 1.469007,-3.27509 3.275111,-3.27509 1.806106,0 3.275109,1.46899 3.275109,3.27509 0,1.80611 -1.469003,3.27512 -3.275109,3.27512" | |||
| style="fill:#92b5d1;fill-opacity:1;fill-rule:nonzero;stroke:#407097;stroke-width:0.28052977;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7261" | |||
| d="m 92.788964,126.29511 c -1.609548,0 -2.918685,-1.30916 -2.918685,-2.91871 0,-1.60954 1.309137,-2.91867 2.918685,-2.91867 1.609549,0 2.918682,1.30913 2.918682,2.91867 0,1.60955 -1.309133,2.91871 -2.918682,2.91871" | |||
| style="fill:#24506b;fill-opacity:1;fill-rule:nonzero;stroke:#163142;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261-6" | |||
| d="m 92.056498,126.34769 c -1.23462,0 -2.238806,-1.00419 -2.238806,-2.23882 0,-1.23461 1.004186,-2.23879 2.238806,-2.23879 1.234621,0 2.238804,1.00418 2.238804,2.23879 0,1.23463 -1.004183,2.23882 -2.238804,2.23882" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#407097;stroke-width:0.19176503;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7265" | |||
| d="m 94.588681,123.3764 c 0,0.99357 -0.806153,1.79974 -1.799717,1.79974 -0.993567,0 -1.79972,-0.80617 -1.79972,-1.79974 0,-0.99356 0.806153,-1.79969 1.79972,-1.79969 0.993564,0 1.799717,0.80613 1.799717,1.79969" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
| d="m 93.564599,124.10887 c 0,0.83258 -0.675528,1.50812 -1.508101,1.50812 -0.832575,0 -1.508103,-0.67554 -1.508103,-1.50812 0,-0.83257 0.675528,-1.50808 1.508103,-1.50808 0.832573,0 1.508101,0.67551 1.508101,1.50808" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.29561555" /> | |||
| </g> | |||
| </svg> | |||
| @@ -9,9 +9,9 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="8.3556204mm" | |||
| height="8.3556299mm" | |||
| viewBox="0 0 8.3556203 8.3556298" | |||
| width="26" | |||
| height="26" | |||
| viewBox="0 0 6.8791666 6.8791665" | |||
| version="1.1" | |||
| id="svg15246" | |||
| sodipodi:docname="PJ301ML.svg" | |||
| @@ -146,16 +146,16 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="11.2" | |||
| inkscape:cx="1.2540944" | |||
| inkscape:cy="5.9688197" | |||
| inkscape:document-units="mm" | |||
| inkscape:zoom="7.7904062" | |||
| inkscape:cx="7.1034477" | |||
| inkscape:cy="-13.701213" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| inkscape:window-width="1148" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="70" | |||
| inkscape:window-y="15" | |||
| inkscape:window-x="684" | |||
| inkscape:window-y="99" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| fit-margin-top="0" | |||
| @@ -178,21 +178,21 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-88.611154,-119.19859)"> | |||
| transform="translate(-88.611154,-120.67505)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7255" | |||
| d="m 92.788964,127.42922 c -2.235179,0 -4.05281,-1.81762 -4.05281,-4.05282 0,-2.23516 1.817631,-4.05281 4.05281,-4.05281 2.235176,0 4.05281,1.81765 4.05281,4.05281 0,2.2352 -1.817634,4.05282 -4.05281,4.05282" | |||
| style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#636663;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261" | |||
| d="m 92.056498,127.38399 c -1.806104,0 -3.275111,-1.46901 -3.275111,-3.27512 0,-1.8061 1.469007,-3.27509 3.275111,-3.27509 1.806106,0 3.275109,1.46899 3.275109,3.27509 0,1.80611 -1.469003,3.27512 -3.275109,3.27512" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#818181;stroke-width:0.28052977;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7261" | |||
| d="m 92.788964,126.29511 c -1.609548,0 -2.918685,-1.30916 -2.918685,-2.91871 0,-1.60954 1.309137,-2.91867 2.918685,-2.91867 1.609549,0 2.918682,1.30913 2.918682,2.91867 0,1.60955 -1.309133,2.91871 -2.918682,2.91871" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#636663;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261-6" | |||
| d="m 92.056498,126.34769 c -1.23462,0 -2.238806,-1.00419 -2.238806,-2.23882 0,-1.23461 1.004186,-2.23879 2.238806,-2.23879 1.234621,0 2.238804,1.00418 2.238804,2.23879 0,1.23463 -1.004183,2.23882 -2.238804,2.23882" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#818181;stroke-width:0.19176503;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7265" | |||
| d="m 94.588681,123.3764 c 0,0.99357 -0.806153,1.79974 -1.799717,1.79974 -0.993567,0 -1.79972,-0.80617 -1.79972,-1.79974 0,-0.99356 0.806153,-1.79969 1.79972,-1.79969 0.993564,0 1.799717,0.80613 1.799717,1.79969" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
| d="m 93.564599,124.10887 c 0,0.83258 -0.675528,1.50812 -1.508101,1.50812 -0.832575,0 -1.508103,-0.67554 -1.508103,-1.50812 0,-0.83257 0.675528,-1.50808 1.508103,-1.50808 0.832573,0 1.508101,0.67551 1.508101,1.50808" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.29561555" /> | |||
| </g> | |||
| </svg> | |||
| @@ -9,9 +9,9 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="8.3556204mm" | |||
| height="8.3556299mm" | |||
| viewBox="0 0 8.3556203 8.3556298" | |||
| width="26" | |||
| height="26" | |||
| viewBox="0 0 6.8791666 6.8791665" | |||
| version="1.1" | |||
| id="svg15246" | |||
| sodipodi:docname="PJ301MO.svg" | |||
| @@ -146,16 +146,16 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="20.409375" | |||
| inkscape:cx="15.839806" | |||
| inkscape:cy="2.9252644" | |||
| inkscape:document-units="mm" | |||
| inkscape:zoom="7.7904062" | |||
| inkscape:cx="7.1034477" | |||
| inkscape:cy="-13.701213" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| inkscape:window-width="1148" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="70" | |||
| inkscape:window-y="15" | |||
| inkscape:window-x="684" | |||
| inkscape:window-y="99" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| fit-margin-top="0" | |||
| @@ -170,7 +170,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -178,21 +178,21 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-88.611154,-119.19859)"> | |||
| transform="translate(-88.611154,-120.67505)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7255" | |||
| d="m 92.788964,127.42922 c -2.235179,0 -4.05281,-1.81762 -4.05281,-4.05282 0,-2.23516 1.817631,-4.05281 4.05281,-4.05281 2.235176,0 4.05281,1.81765 4.05281,4.05281 0,2.2352 -1.817634,4.05282 -4.05281,4.05282" | |||
| style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#ffb340;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261" | |||
| d="m 92.056498,127.38399 c -1.806104,0 -3.275111,-1.46901 -3.275111,-3.27512 0,-1.8061 1.469007,-3.27509 3.275111,-3.27509 1.806106,0 3.275109,1.46899 3.275109,3.27509 0,1.80611 -1.469003,3.27512 -3.275109,3.27512" | |||
| style="fill:#ff8800;fill-opacity:1;fill-rule:nonzero;stroke:#944e00;stroke-width:0.28052977;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7261" | |||
| d="m 92.788964,126.29511 c -1.609548,0 -2.918685,-1.30916 -2.918685,-2.91871 0,-1.60954 1.309137,-2.91867 2.918685,-2.91867 1.609549,0 2.918682,1.30913 2.918682,2.91867 0,1.60955 -1.309133,2.91871 -2.918682,2.91871" | |||
| style="fill:#ffb340;fill-opacity:1;fill-rule:nonzero;stroke:#636663;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261-6" | |||
| d="m 92.056498,126.34769 c -1.23462,0 -2.238806,-1.00419 -2.238806,-2.23882 0,-1.23461 1.004186,-2.23879 2.238806,-2.23879 1.234621,0 2.238804,1.00418 2.238804,2.23879 0,1.23463 -1.004183,2.23882 -2.238804,2.23882" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#944e00;stroke-width:0.19176503;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7265" | |||
| d="m 94.588681,123.3764 c 0,0.99357 -0.806153,1.79974 -1.799717,1.79974 -0.993567,0 -1.79972,-0.80617 -1.79972,-1.79974 0,-0.99356 0.806153,-1.79969 1.79972,-1.79969 0.993564,0 1.799717,0.80613 1.799717,1.79969" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
| d="m 93.564599,124.10887 c 0,0.83258 -0.675528,1.50812 -1.508101,1.50812 -0.832575,0 -1.508103,-0.67554 -1.508103,-1.50812 0,-0.83257 0.675528,-1.50808 1.508103,-1.50808 0.832573,0 1.508101,0.67551 1.508101,1.50808" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.29561555" /> | |||
| </g> | |||
| </svg> | |||
| @@ -9,9 +9,9 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="8.3556204mm" | |||
| height="8.3556299mm" | |||
| viewBox="0 0 8.3556203 8.3556298" | |||
| width="26" | |||
| height="26" | |||
| viewBox="0 0 6.8791666 6.8791665" | |||
| version="1.1" | |||
| id="svg15246" | |||
| sodipodi:docname="PJ301MR.svg" | |||
| @@ -146,16 +146,16 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="18.002527" | |||
| inkscape:cx="14.917473" | |||
| inkscape:cy="0.65960658" | |||
| inkscape:document-units="mm" | |||
| inkscape:zoom="7.934896" | |||
| inkscape:cx="7.1034477" | |||
| inkscape:cy="-13.701213" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| inkscape:window-width="1053" | |||
| inkscape:window-width="1160" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="70" | |||
| inkscape:window-y="15" | |||
| inkscape:window-x="672" | |||
| inkscape:window-y="99" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| fit-margin-top="0" | |||
| @@ -170,7 +170,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -178,21 +178,21 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-88.611154,-119.19859)"> | |||
| transform="translate(-88.611154,-120.67505)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7255" | |||
| d="m 92.788964,127.42922 c -2.235179,0 -4.05281,-1.81762 -4.05281,-4.05282 0,-2.23516 1.817631,-4.05281 4.05281,-4.05281 2.235176,0 4.05281,1.81765 4.05281,4.05281 0,2.2352 -1.817634,4.05282 -4.05281,4.05282" | |||
| style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#ff4c40;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261" | |||
| d="m 92.056498,127.38399 c -1.806104,0 -3.275111,-1.46901 -3.275111,-3.27512 0,-1.8061 1.469007,-3.27509 3.275111,-3.27509 1.806106,0 3.275109,1.46899 3.275109,3.27509 0,1.80611 -1.469003,3.27512 -3.275109,3.27512" | |||
| style="fill:#d62957;fill-opacity:1;fill-rule:nonzero;stroke:#8a1a38;stroke-width:0.28052977;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7261" | |||
| d="m 92.788964,126.29511 c -1.609548,0 -2.918685,-1.30916 -2.918685,-2.91871 0,-1.60954 1.309137,-2.91867 2.918685,-2.91867 1.609549,0 2.918682,1.30913 2.918682,2.91867 0,1.60955 -1.309133,2.91871 -2.918682,2.91871" | |||
| style="fill:#ff4c40;fill-opacity:1;fill-rule:nonzero;stroke:#636663;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261-6" | |||
| d="m 92.056498,126.34769 c -1.23462,0 -2.238806,-1.00419 -2.238806,-2.23882 0,-1.23461 1.004186,-2.23879 2.238806,-2.23879 1.234621,0 2.238804,1.00418 2.238804,2.23879 0,1.23463 -1.004183,2.23882 -2.238804,2.23882" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#8a1a38;stroke-width:0.19176503;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7265" | |||
| d="m 94.588681,123.3764 c 0,0.99357 -0.806153,1.79974 -1.799717,1.79974 -0.993567,0 -1.79972,-0.80617 -1.79972,-1.79974 0,-0.99356 0.806153,-1.79969 1.79972,-1.79969 0.993564,0 1.799717,0.80613 1.799717,1.79969" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
| d="m 93.564599,124.10887 c 0,0.83258 -0.675528,1.50812 -1.508101,1.50812 -0.832575,0 -1.508103,-0.67554 -1.508103,-1.50812 0,-0.83257 0.675528,-1.50808 1.508103,-1.50808 0.832573,0 1.508101,0.67551 1.508101,1.50808" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.29561555" /> | |||
| </g> | |||
| </svg> | |||
| @@ -9,13 +9,13 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="8.3556204mm" | |||
| height="8.3556299mm" | |||
| viewBox="0 0 8.3556203 8.3556298" | |||
| width="26" | |||
| height="26" | |||
| viewBox="0 0 6.8791666 6.8791665" | |||
| version="1.1" | |||
| id="svg15246" | |||
| sodipodi:docname="PJ301M.svg" | |||
| inkscape:version="0.92.2 5c3e80d, 2017-08-06"> | |||
| sodipodi:docname="PJ301MVA.svg" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"> | |||
| <defs | |||
| id="defs15240"> | |||
| <clipPath | |||
| @@ -146,22 +146,28 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="11.2" | |||
| inkscape:cx="15.763023" | |||
| inkscape:cy="5.9688197" | |||
| inkscape:document-units="mm" | |||
| inkscape:zoom="14.196189" | |||
| inkscape:cx="14.836952" | |||
| inkscape:cy="-2.4235774" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| inkscape:window-width="1274" | |||
| inkscape:window-height="1434" | |||
| inkscape:window-x="1280" | |||
| inkscape:window-y="0" | |||
| showgrid="true" | |||
| inkscape:window-width="1148" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="661" | |||
| inkscape:window-y="378" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" /> | |||
| fit-margin-bottom="0" | |||
| inkscape:snap-grids="false" | |||
| showguides="false"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid855" /> | |||
| </sodipodi:namedview> | |||
| <metadata | |||
| id="metadata15243"> | |||
| <rdf:RDF> | |||
| @@ -178,21 +184,30 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-88.611154,-119.19859)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7255" | |||
| d="m 92.788964,127.42922 c -2.235179,0 -4.05281,-1.81762 -4.05281,-4.05282 0,-2.23516 1.817631,-4.05281 4.05281,-4.05281 2.235176,0 4.05281,1.81765 4.05281,4.05281 0,2.2352 -1.817634,4.05282 -4.05281,4.05282" | |||
| style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#636663;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7261" | |||
| d="m 92.788964,126.29511 c -1.609548,0 -2.918685,-1.30916 -2.918685,-2.91871 0,-1.60954 1.309137,-2.91867 2.918685,-2.91867 1.609549,0 2.918682,1.30913 2.918682,2.91867 0,1.60955 -1.309133,2.91871 -2.918682,2.91871" | |||
| style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#636663;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7265" | |||
| d="m 94.588681,123.3764 c 0,0.99357 -0.806153,1.79974 -1.799717,1.79974 -0.993567,0 -1.79972,-0.80617 -1.79972,-1.79974 0,-0.99356 0.806153,-1.79969 1.79972,-1.79969 0.993564,0 1.799717,0.80613 1.799717,1.79969" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
| transform="translate(-88.611154,-120.67505)"> | |||
| <g | |||
| transform="matrix(0.24896704,0,0,0.24896704,88.57248,120.62278)" | |||
| style="clip-rule:evenodd;fill-rule:evenodd;stroke-miterlimit:10" | |||
| id="IOPortB_3_"> | |||
| <g | |||
| id="g6"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| d="M 5.311,22.794 C 4.229,20.928 3.16,19.037 2.09,17.175 -0.039,13.46 -0.039,14.582 2.092,10.863 3.174,8.971 4.253,7.062 5.334,5.17 7.469,1.452 6.5,2.014 10.772,2.021 c 2.136,0.004 4.298,0.008 6.431,0.014 4.266,-0.012 3.3,-0.575 5.429,3.141 1.078,1.896 2.176,3.788 3.271,5.689 2.125,3.719 2.122,2.578 -0.018,6.309 -1.07,1.871 -2.151,3.749 -3.217,5.621 -2.142,3.726 -1.166,3.154 -5.426,3.155 -2.175,0.007 -4.341,0.009 -6.521,0.009 -4.254,0 -3.287,0.563 -5.41,-3.165 z M 8.975,22.759 C 4.18,19.969 2.54,13.791 5.311,8.957 c 2.771,-4.846 8.9,-6.5 13.7,-3.712 4.811,2.8 6.449,8.978 3.674,13.82 -2.774,4.834 -8.905,6.491 -13.71,3.694 z M 9.386,22.041 C 4.985,19.479 3.467,13.802 6.009,9.369 c 2.546,-4.447 8.186,-5.962 12.584,-3.4 4.415,2.566 5.922,8.24 3.372,12.685 -2.542,4.433 -8.168,5.95 -12.579,3.387 z M 10.395,20.28 C 6.957,18.282 5.783,13.849 7.764,10.39 c 1.99,-3.473 6.388,-4.658 9.82,-2.666 3.45,2.01 4.627,6.441 2.637,9.912 -1.986,3.462 -6.379,4.651 -9.826,2.644 z m 0.404,-0.709 c 3.051,1.776 6.951,0.713 8.712,-2.354 1.763,-3.073 0.719,-7.005 -2.337,-8.775 -3.051,-1.774 -6.945,-0.724 -8.707,2.354 -1.756,3.065 -0.709,7.01 2.332,8.775 z" | |||
| style="fill:#999999;fill-rule:nonzero;stroke:#201e1e;stroke-width:0.44999999px" | |||
| id="path2" /> | |||
| <circle | |||
| cx="13.982" | |||
| cy="14.085" | |||
| r="9.3330002" | |||
| style="fill:#444444;stroke:#1a1a1a;stroke-width:2px;stroke-linejoin:round;stroke-miterlimit:1.41420996" | |||
| id="circle4" /> | |||
| </g> | |||
| <circle | |||
| cx="14.001" | |||
| cy="14.084" | |||
| r="6.4580002" | |||
| id="circle8" /> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -9,9 +9,9 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="8.3556204mm" | |||
| height="8.3556299mm" | |||
| viewBox="0 0 8.3556203 8.3556298" | |||
| width="26" | |||
| height="26" | |||
| viewBox="0 0 6.8791666 6.8791665" | |||
| version="1.1" | |||
| id="svg15246" | |||
| sodipodi:docname="PJ301MW.svg" | |||
| @@ -146,16 +146,16 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="28.936694" | |||
| inkscape:cx="5.0823384" | |||
| inkscape:cy="3.9616981" | |||
| inkscape:document-units="mm" | |||
| inkscape:zoom="7.934896" | |||
| inkscape:cx="7.1034477" | |||
| inkscape:cy="-13.701213" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| inkscape:window-width="1053" | |||
| inkscape:window-width="1160" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="70" | |||
| inkscape:window-y="15" | |||
| inkscape:window-x="672" | |||
| inkscape:window-y="99" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| fit-margin-top="0" | |||
| @@ -170,7 +170,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -178,21 +178,21 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-88.611154,-119.19859)"> | |||
| transform="translate(-88.611154,-120.67505)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7255" | |||
| d="m 92.788964,127.42922 c -2.235179,0 -4.05281,-1.81762 -4.05281,-4.05282 0,-2.23516 1.817631,-4.05281 4.05281,-4.05281 2.235176,0 4.05281,1.81765 4.05281,4.05281 0,2.2352 -1.817634,4.05282 -4.05281,4.05282" | |||
| style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:#44758e;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261" | |||
| d="m 92.056498,127.38399 c -1.806104,0 -3.275111,-1.46901 -3.275111,-3.27512 0,-1.8061 1.469007,-3.27509 3.275111,-3.27509 1.806106,0 3.275109,1.46899 3.275109,3.27509 0,1.80611 -1.469003,3.27512 -3.275109,3.27512" | |||
| style="fill:#56c4ff;fill-opacity:1;fill-rule:nonzero;stroke:#0084cb;stroke-width:0.28052977;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7261" | |||
| d="m 92.788964,126.29511 c -1.609548,0 -2.918685,-1.30916 -2.918685,-2.91871 0,-1.60954 1.309137,-2.91867 2.918685,-2.91867 1.609549,0 2.918682,1.30913 2.918682,2.91867 0,1.60955 -1.309133,2.91871 -2.918682,2.91871" | |||
| style="fill:#74a4bc;fill-opacity:1;fill-rule:nonzero;stroke:#44758e;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261-6" | |||
| d="m 92.056498,126.34769 c -1.23462,0 -2.238806,-1.00419 -2.238806,-2.23882 0,-1.23461 1.004186,-2.23879 2.238806,-2.23879 1.234621,0 2.238804,1.00418 2.238804,2.23879 0,1.23463 -1.004183,2.23882 -2.238804,2.23882" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#0084cb;stroke-width:0.19176503;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7265" | |||
| d="m 94.588681,123.3764 c 0,0.99357 -0.806153,1.79974 -1.799717,1.79974 -0.993567,0 -1.79972,-0.80617 -1.79972,-1.79974 0,-0.99356 0.806153,-1.79969 1.79972,-1.79969 0.993564,0 1.799717,0.80613 1.799717,1.79969" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
| d="m 93.564599,124.10887 c 0,0.83258 -0.675528,1.50812 -1.508101,1.50812 -0.832575,0 -1.508103,-0.67554 -1.508103,-1.50812 0,-0.83257 0.675528,-1.50808 1.508103,-1.50808 0.832573,0 1.508101,0.67551 1.508101,1.50808" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.29561555" /> | |||
| </g> | |||
| </svg> | |||
| @@ -9,9 +9,9 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="8.3556204mm" | |||
| height="8.3556299mm" | |||
| viewBox="0 0 8.3556203 8.3556298" | |||
| width="26" | |||
| height="26" | |||
| viewBox="0 0 6.8791666 6.8791665" | |||
| version="1.1" | |||
| id="svg15246" | |||
| sodipodi:docname="PJ3410.svg" | |||
| @@ -146,16 +146,16 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="11.2" | |||
| inkscape:cx="1.2540944" | |||
| inkscape:cy="5.9688197" | |||
| inkscape:document-units="mm" | |||
| inkscape:zoom="7.934896" | |||
| inkscape:cx="7.1034477" | |||
| inkscape:cy="-13.701213" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="false" | |||
| inkscape:window-width="1053" | |||
| inkscape:window-width="1160" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="70" | |||
| inkscape:window-y="15" | |||
| inkscape:window-x="672" | |||
| inkscape:window-y="99" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| fit-margin-top="0" | |||
| @@ -178,21 +178,21 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-88.611154,-119.19859)"> | |||
| transform="translate(-88.611154,-120.67505)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7255" | |||
| d="m 92.788964,127.42922 c -2.235179,0 -4.05281,-1.81762 -4.05281,-4.05282 0,-2.23516 1.817631,-4.05281 4.05281,-4.05281 2.235176,0 4.05281,1.81765 4.05281,4.05281 0,2.2352 -1.817634,4.05282 -4.05281,4.05282" | |||
| style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#636663;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261" | |||
| d="m 92.056498,127.38399 c -1.806104,0 -3.275111,-1.46901 -3.275111,-3.27512 0,-1.8061 1.469007,-3.27509 3.275111,-3.27509 1.806106,0 3.275109,1.46899 3.275109,3.27509 0,1.80611 -1.469003,3.27512 -3.275109,3.27512" | |||
| style="fill:#473948;fill-opacity:1;fill-rule:nonzero;stroke:#221a22;stroke-width:0.28052977;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7261" | |||
| d="m 92.788964,126.29511 c -1.609548,0 -2.918685,-1.30916 -2.918685,-2.91871 0,-1.60954 1.309137,-2.91867 2.918685,-2.91867 1.609549,0 2.918682,1.30913 2.918682,2.91867 0,1.60955 -1.309133,2.91871 -2.918682,2.91871" | |||
| style="fill:#545454;fill-opacity:1;fill-rule:nonzero;stroke:#636663;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| id="path7261-6" | |||
| d="m 92.056498,126.34769 c -1.23462,0 -2.238806,-1.00419 -2.238806,-2.23882 0,-1.23461 1.004186,-2.23879 2.238806,-2.23879 1.234621,0 2.238804,1.00418 2.238804,2.23879 0,1.23463 -1.004183,2.23882 -2.238804,2.23882" | |||
| style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#221a22;stroke-width:0.19176503;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path7265" | |||
| d="m 94.588681,123.3764 c 0,0.99357 -0.806153,1.79974 -1.799717,1.79974 -0.993567,0 -1.79972,-0.80617 -1.79972,-1.79974 0,-0.99356 0.806153,-1.79969 1.79972,-1.79969 0.993564,0 1.799717,0.80613 1.799717,1.79969" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
| d="m 93.564599,124.10887 c 0,0.83258 -0.675528,1.50812 -1.508101,1.50812 -0.832575,0 -1.508103,-0.67554 -1.508103,-1.50812 0,-0.83257 0.675528,-1.50808 1.508103,-1.50808 0.832573,0 1.508101,0.67551 1.508101,1.50808" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.29561555" /> | |||
| </g> | |||
| </svg> | |||
| @@ -0,0 +1,107 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="30" | |||
| height="30" | |||
| viewBox="0 0 7.9375001 7.9375001" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="SDKnob.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="14.886455" | |||
| inkscape:cx="11.876247" | |||
| inkscape:cy="19.252672" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1381" | |||
| inkscape:window-height="793" | |||
| inkscape:window-x="2287" | |||
| inkscape:window-y="60" | |||
| inkscape:window-maximized="0" | |||
| inkscape:snap-grids="false" | |||
| showguides="false" | |||
| units="px"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| </sodipodi:namedview> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-124.82033)" | |||
| style="display:inline" /> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,-1.5878976)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6449" | |||
| style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#282828;stroke-width:0.12499428;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 7.8389147,5.1481174 C 7.6681537,4.8716595 7.3806758,4.5997438 7.2207236,4.2128326 7.0607714,3.8272219 7.0713678,3.4327547 6.9974414,3.1176057 6.8234378,2.9021008 6.6276133,2.7064889 6.411896,2.5322726 6.0965268,2.4585831 5.7024842,2.4689585 5.3164481,2.3089903 4.9295375,2.1486055 4.6576217,1.8617722 4.3815968,1.6907996 4.2465049,1.6765027 4.1092482,1.6683333 3.97048,1.6683333 c -0.1392013,0 -0.276458,0.00825 -0.4113374,0.022466 C 3.2826928,1.8617722 3.0107689,2.1486055 2.6238668,2.3089903 2.2382553,2.4689421 1.8442128,2.4585668 1.5286308,2.5322726 1.3131342,2.7064889 1.117081,2.9021008 0.94329812,3.1176057 0.86936363,3.4327547 0.87973892,3.8272219 0.71958293,4.2128326 0.5596311,4.5997438 0.2723648,4.8716595 0.10182521,5.1481174 c -0.0142967,0.1350919 -0.0223029,0.2723487 -0.0223029,0.4111169 0,0.1389887 0.00817,0.2762373 0.0223029,0.4117622 0.17053959,0.276025 0.45780588,0.5479406 0.61775772,0.934851 C 0.87974711,7.291459 0.86937182,7.6859344 0.94329812,8.0008628 1.117081,8.2165801 1.3131342,8.4124127 1.5286308,8.5864162 c 0.315582,0.073935 0.7096245,0.063314 1.095236,0.2230616 0.3869021,0.1606054 0.658826,0.4476512 0.9352758,0.6184113 0.1348794,0.014052 0.2721361,0.022304 0.4113374,0.022304 0.1387682,0 0.2760249,-0.00825 0.4111168,-0.022304 C 4.6576217,9.257129 4.9295375,8.9700832 5.3164481,8.8094778 5.7024842,8.6497466 6.0965268,8.6603344 6.411896,8.5864162 6.6276133,8.4124127 6.8234378,8.2165801 6.9974414,8.0008628 7.0713764,7.6859344 7.0607554,7.291459 7.2207236,6.9058475 7.3806758,6.5189371 7.6681537,6.2470215 7.8389147,5.9709965 7.8529667,5.8354716 7.8609717,5.698223 7.8609717,5.5592343 c 0,-0.1387682 -0.00817,-0.276025 -0.022057,-0.4111169" /> | |||
| <circle | |||
| style="display:inline;opacity:1;fill:#b5b5b5;fill-opacity:1;stroke:none;stroke-width:0.23547918;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" | |||
| id="path6739" | |||
| cx="3.9702125" | |||
| cy="5.5592999" | |||
| r="2.8211486" /> | |||
| <path | |||
| style="opacity:1;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.2606827;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
| id="path833" | |||
| sodipodi:type="arc" | |||
| sodipodi:cx="3.9663734" | |||
| sodipodi:cy="2.2448254" | |||
| sodipodi:rx="0.37761164" | |||
| sodipodi:ry="0.37761164" | |||
| sodipodi:start="2.4454564" | |||
| sodipodi:end="2.4435122" | |||
| sodipodi:open="true" | |||
| d="M 3.6766224,2.4869717 A 0.37761164,0.37761164 0 0 1 3.7240863,1.955192 0.37761164,0.37761164 0 0 1 4.255889,2.0023974 0.37761164,0.37761164 0 0 1 4.2089421,2.534223 0.37761164,0.37761164 0 0 1 3.6770937,2.4875346" /> | |||
| </g> | |||
| </svg> | |||
| @@ -0,0 +1,131 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="27.993454" | |||
| height="31.564199" | |||
| viewBox="0 0 7.4066014 8.3513613" | |||
| version="1.1" | |||
| id="svg10799" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="SilverSwitch.svg"> | |||
| <defs | |||
| id="defs10793" /> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="14.972986" | |||
| inkscape:cx="-3.1916386" | |||
| inkscape:cy="1.3050348" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="g5870" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1920" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="-365" | |||
| inkscape:window-y="110" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| showguides="false" /> | |||
| <metadata | |||
| id="metadata10796"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-78.695511,-76.621942)"> | |||
| <g | |||
| id="g3201" | |||
| transform="matrix(0.22389288,0,0,-0.22685285,-171.54356,342.70568)" | |||
| style="stroke-width:1.565341"> | |||
| <path | |||
| d="m 1134.1982,1138.7744 c -8.807,0 -15.938,7.132 -15.938,15.938 0,8.806 7.131,15.968 15.938,15.968 8.806,0 15.969,-7.162 15.969,-15.968 0,-8.806 -7.163,-15.938 -15.969,-15.938" | |||
| style="opacity:1;vector-effect:none;fill:#e7e7e7;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path6575" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 1134.2607,1142.4248 c -6.783,0 -12.303,5.52 -12.303,12.304 0,6.783 5.52,12.302 12.303,12.302 6.784,0 12.304,-5.519 12.304,-12.302 0,-6.784 -5.52,-12.304 -12.304,-12.304" | |||
| style="opacity:1;vector-effect:none;fill:#e7e7e7;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path6583" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | |||
| d="m 1134.3145,1145.7148 c -5.0639,0 -9.2344,4.1731 -9.2344,9.2364 0,5.0632 4.1705,9.2343 9.2344,9.2343 5.0643,0 9.2363,-4.1711 9.2363,-9.2343 0,-5.0633 -4.172,-9.2364 -9.2363,-9.2364 z" | |||
| id="path5904" | |||
| inkscape:connector-curvature="0" /> | |||
| <g | |||
| id="g5870" | |||
| style="stroke-width:1.565341;fill:#808080;fill-opacity:1"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6631" | |||
| style="fill:#808080;fill-opacity:1;stroke:#656565;stroke-width:1.565341;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="m 1130.6064,1154.4414 v -3.023 c 2.259,-2.464 6.448,-2.248 7.659,0.144 l -0.038,2.966 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6635" | |||
| style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#727272;stroke-width:0.97833812;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="m 1129.6875,1153.2109 c 2.403,-2.906 7.479,-2.26 9.573,0.089 0.736,0.826 2.032,3.75 2.032,8.37 0,4.62 -0.91,8.369 -2.032,8.369 h -9.483 c -1.122,0 -2.032,-3.749 -2.032,-8.369 0,-4.62 0.82,-7.745 1.972,-8.459" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6643" | |||
| style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.565341" | |||
| d="m 1134.5156,1159.2344 c 3.783,0 6.851,3.067 6.851,6.851 0,3.784 -3.068,6.85 -6.851,6.85 -3.784,0 -6.851,-3.066 -6.851,-6.85 0,-3.784 3.067,-6.851 6.851,-6.851" /> | |||
| </g> | |||
| <g | |||
| id="g5918" | |||
| transform="matrix(1,0,0,-1,0,2309.0568)" | |||
| style="stroke-width:1.565341;fill:#808080;fill-opacity:1"> | |||
| <path | |||
| d="m 1130.6064,1154.4414 v -3.023 c 2.259,-2.464 6.448,-2.248 7.659,0.144 l -0.038,2.966 z" | |||
| style="fill:#808080;fill-opacity:1;stroke:#656565;stroke-width:1.565341;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path5912" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 1129.6875,1153.2109 c 2.403,-2.906 7.479,-2.26 9.573,0.089 0.736,0.826 2.032,3.75 2.032,8.37 0,4.62 -0.91,8.369 -2.032,8.369 h -9.483 c -1.122,0 -2.032,-3.749 -2.032,-8.369 0,-4.62 0.82,-7.745 1.972,-8.459" | |||
| style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#727272;stroke-width:0.97833812;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path5914" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 1134.5156,1159.2344 c 3.783,0 6.851,3.067 6.851,6.851 0,3.784 -3.068,6.85 -6.851,6.85 -3.784,0 -6.851,-3.066 -6.851,-6.85 0,-3.784 3.067,-6.851 6.851,-6.851" | |||
| style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.565341" | |||
| id="path5916" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <path | |||
| d="m 1134.2137,1161.5779 c 3.783,0 6.851,-3.067 6.851,-6.851 0,-3.784 -3.068,-6.85 -6.851,-6.85 -3.784,0 -6.851,3.066 -6.851,6.85 0,3.784 3.067,6.851 6.851,6.851" | |||
| style="opacity:1;vector-effect:none;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#727272;stroke-width:0.97833812;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path5916-1" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| </g> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" /> | |||
| </svg> | |||
| @@ -0,0 +1,102 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="27.993454" | |||
| height="31.564199" | |||
| viewBox="0 0 7.4066014 8.3513613" | |||
| version="1.1" | |||
| id="svg10799" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="SilverSwitch_0.svg"> | |||
| <defs | |||
| id="defs10793" /> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="14.060376" | |||
| inkscape:cx="-18.625062" | |||
| inkscape:cy="6.1157055" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="g5918" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1920" | |||
| inkscape:window-height="1021" | |||
| inkscape:window-x="-138" | |||
| inkscape:window-y="64" | |||
| inkscape:window-maximized="0" | |||
| units="px" /> | |||
| <metadata | |||
| id="metadata10796"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-78.695511,-76.621942)"> | |||
| <g | |||
| id="g3201" | |||
| transform="matrix(0.22389288,0,0,-0.22685285,-171.54356,342.70568)" | |||
| style="stroke-width:1.565341"> | |||
| <path | |||
| d="m 1134.1982,1138.7744 c -8.807,0 -15.938,7.132 -15.938,15.938 0,8.806 7.131,15.968 15.938,15.968 8.806,0 15.969,-7.162 15.969,-15.968 0,-8.806 -7.163,-15.938 -15.969,-15.938" | |||
| style="opacity:1;vector-effect:none;fill:#e7e7e7;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path6575" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 1134.2607,1142.4248 c -6.783,0 -12.303,5.52 -12.303,12.304 0,6.783 5.52,12.302 12.303,12.302 6.784,0 12.304,-5.519 12.304,-12.302 0,-6.784 -5.52,-12.304 -12.304,-12.304" | |||
| style="opacity:1;vector-effect:none;fill:#e7e7e7;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path6583" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | |||
| d="m 1134.3145,1145.7148 c -5.0639,0 -9.2344,4.1731 -9.2344,9.2364 0,5.0632 4.1705,9.2343 9.2344,9.2343 5.0643,0 9.2363,-4.1711 9.2363,-9.2343 0,-5.0633 -4.172,-9.2364 -9.2363,-9.2364 z" | |||
| id="path5904" | |||
| inkscape:connector-curvature="0" /> | |||
| <g | |||
| id="g5918" | |||
| transform="matrix(1,0,0,-1,0,2309.0568)" | |||
| style="stroke-width:1.565341"> | |||
| <path | |||
| d="m 1130.6064,1154.4414 v -3.023 c 2.259,-2.464 6.448,-2.248 7.659,0.144 l -0.038,2.966 z" | |||
| style="fill:#656565;fill-opacity:1;stroke:#656565;stroke-width:1.565341;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path5912" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 1129.6875,1153.2109 c 2.403,-2.906 7.479,-2.26 9.573,0.089 0.736,0.826 2.032,3.75 2.032,8.37 0,4.62 -0.91,8.369 -2.032,8.369 h -9.483 c -1.122,0 -2.032,-3.749 -2.032,-8.369 0,-4.62 0.82,-7.745 1.972,-8.459" | |||
| style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#727272;stroke-width:0.97833812;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path5914" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 1134.5156,1159.2344 c 3.783,0 6.851,3.067 6.851,6.851 0,3.784 -3.068,6.85 -6.851,6.85 -3.784,0 -6.851,-3.066 -6.851,-6.85 0,-3.784 3.067,-6.851 6.851,-6.851" | |||
| style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.565341" | |||
| id="path5916" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -0,0 +1,101 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="27.993454" | |||
| height="31.564199" | |||
| viewBox="0 0 7.4066014 8.3513613" | |||
| version="1.1" | |||
| id="svg10799" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="SilverSwitch_2.svg"> | |||
| <defs | |||
| id="defs10793" /> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="14.972986" | |||
| inkscape:cx="-12.308057" | |||
| inkscape:cy="1.3050348" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="g3201" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1920" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="88" | |||
| inkscape:window-y="41" | |||
| inkscape:window-maximized="0" | |||
| units="px" | |||
| showguides="false" /> | |||
| <metadata | |||
| id="metadata10796"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-78.695511,-76.621942)"> | |||
| <g | |||
| id="g3201" | |||
| transform="matrix(0.22389288,0,0,-0.22685285,-171.54356,342.70568)" | |||
| style="stroke-width:1.565341"> | |||
| <path | |||
| d="m 1134.1982,1138.7744 c -8.807,0 -15.938,7.132 -15.938,15.938 0,8.806 7.131,15.968 15.938,15.968 8.806,0 15.969,-7.162 15.969,-15.968 0,-8.806 -7.163,-15.938 -15.969,-15.938" | |||
| style="opacity:1;vector-effect:none;fill:#e7e7e7;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path6575" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 1134.2607,1142.4248 c -6.783,0 -12.303,5.52 -12.303,12.304 0,6.783 5.52,12.302 12.303,12.302 6.784,0 12.304,-5.519 12.304,-12.302 0,-6.784 -5.52,-12.304 -12.304,-12.304" | |||
| style="opacity:1;vector-effect:none;fill:#e7e7e7;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path6583" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | |||
| d="m 1134.3145,1145.7148 c -5.0639,0 -9.2344,4.1731 -9.2344,9.2364 0,5.0632 4.1705,9.2343 9.2344,9.2343 5.0643,0 9.2363,-4.1711 9.2363,-9.2343 0,-5.0633 -4.172,-9.2364 -9.2363,-9.2364 z" | |||
| id="path5904" | |||
| inkscape:connector-curvature="0" /> | |||
| <g | |||
| id="g5870" | |||
| style="fill:#808080;fill-opacity:1;stroke-width:1.565341"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6631" | |||
| style="fill:#808080;fill-opacity:1;stroke:#656565;stroke-width:1.565341;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="m 1130.6064,1154.4414 v -3.023 c 2.259,-2.464 6.448,-2.248 7.659,0.144 l -0.038,2.966 z" /> | |||
| </g> | |||
| <path | |||
| d="m 1134.2137,1161.5779 c 3.783,0 6.851,-3.067 6.851,-6.851 0,-3.784 -3.068,-6.85 -6.851,-6.85 -3.784,0 -6.851,3.066 -6.851,6.85 0,3.784 3.067,6.851 6.851,6.851" | |||
| style="opacity:1;vector-effect:none;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#727272;stroke-width:0.97833812;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path5916-1" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| </g> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" /> | |||
| </svg> | |||
| @@ -0,0 +1,101 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="27.993454" | |||
| height="31.564199" | |||
| viewBox="0 0 7.4066014 8.3513613" | |||
| version="1.1" | |||
| id="svg10799" | |||
| sodipodi:docname="SilverSwitch_2.svg" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"> | |||
| <defs | |||
| id="defs10793" /> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="10.5875" | |||
| inkscape:cx="-18.414744" | |||
| inkscape:cy="-9.891269" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="g5870" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1920" | |||
| inkscape:window-height="1080" | |||
| inkscape:window-x="-159" | |||
| inkscape:window-y="171" | |||
| inkscape:window-maximized="0" | |||
| units="px" /> | |||
| <metadata | |||
| id="metadata10796"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-78.695511,-76.621942)"> | |||
| <g | |||
| id="g3201" | |||
| transform="matrix(0.22389288,0,0,-0.22685285,-171.54356,342.70568)" | |||
| style="stroke-width:1.565341"> | |||
| <path | |||
| d="m 1134.1982,1138.7744 c -8.807,0 -15.938,7.132 -15.938,15.938 0,8.806 7.131,15.968 15.938,15.968 8.806,0 15.969,-7.162 15.969,-15.968 0,-8.806 -7.163,-15.938 -15.969,-15.938" | |||
| style="opacity:1;vector-effect:none;fill:#e7e7e7;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path6575" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 1134.2607,1142.4248 c -6.783,0 -12.303,5.52 -12.303,12.304 0,6.783 5.52,12.302 12.303,12.302 6.784,0 12.304,-5.519 12.304,-12.302 0,-6.784 -5.52,-12.304 -12.304,-12.304" | |||
| style="opacity:1;vector-effect:none;fill:#e7e7e7;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | |||
| id="path6583" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#909290;stroke-width:1.17400575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | |||
| d="m 1134.3145,1145.7148 c -5.0639,0 -9.2344,4.1731 -9.2344,9.2364 0,5.0632 4.1705,9.2343 9.2344,9.2343 5.0643,0 9.2363,-4.1711 9.2363,-9.2343 0,-5.0633 -4.172,-9.2364 -9.2363,-9.2364 z" | |||
| id="path5904" | |||
| inkscape:connector-curvature="0" /> | |||
| <g | |||
| id="g5870" | |||
| style="stroke-width:1.565341"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6631" | |||
| style="fill:#656565;fill-opacity:1;stroke:#656565;stroke-width:1.565341;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="m 1130.6064,1154.4414 v -3.023 c 2.259,-2.464 6.448,-2.248 7.659,0.144 l -0.038,2.966 z" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6635" | |||
| style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#727272;stroke-width:0.97618115;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="m 1129.6875,1153.2109 c 2.403,-2.906 7.479,-2.26 9.573,0.089 0.736,0.826 2.032,3.75 2.032,8.37 0,4.62 -0.91,8.369 -2.032,8.369 h -9.483 c -1.122,0 -2.032,-3.749 -2.032,-8.369 0,-4.62 0.82,-7.745 1.972,-8.459" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path6643" | |||
| style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.565341" | |||
| d="m 1134.5156,1159.2344 c 3.783,0 6.851,3.067 6.851,6.851 0,3.784 -3.068,6.85 -6.851,6.85 -3.784,0 -6.851,-3.066 -6.851,-6.85 0,-3.784 3.067,-6.851 6.851,-6.851" /> | |||
| </g> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -14,8 +14,8 @@ | |||
| viewBox="0 0 7.0462589 7.1788893" | |||
| version="1.1" | |||
| id="svg6414" | |||
| inkscape:version="0.92.1 r" | |||
| sodipodi:docname="Davies1900hSmallBlack.svg"> | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="SmallBla.svg"> | |||
| <defs | |||
| id="defs6408"> | |||
| <clipPath | |||
| @@ -40,11 +40,11 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="0.98994949" | |||
| inkscape:cx="101.21858" | |||
| inkscape:cy="-36.897917" | |||
| inkscape:zoom="16.078125" | |||
| inkscape:cx="-4.8899598" | |||
| inkscape:cy="14.382429" | |||
| inkscape:document-units="mm" | |||
| inkscape:current-layer="layer1" | |||
| inkscape:current-layer="g28551" | |||
| showgrid="false" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| @@ -63,7 +63,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title></dc:title> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -74,25 +74,21 @@ | |||
| transform="translate(-36.542344,-107.44627)"> | |||
| <g | |||
| id="g6344" | |||
| transform="matrix(0.35277777,0,0,-0.35277777,-474.41126,963.93894)"> | |||
| transform="matrix(0.35277777,0,0,-0.35277777,-474.41126,963.93894)" | |||
| style="stroke:#ffffff;stroke-opacity:1"> | |||
| <g | |||
| style="clip-rule:nonzero" | |||
| style="clip-rule:nonzero;stroke:#0e0e0e;stroke-opacity:1;fill:#000000;fill-opacity:1" | |||
| id="g28551" | |||
| clip-path="url(#clip82)" | |||
| transform="matrix(0.75000002,0,0,-0.75000002,713.70253,2631.9236)"> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path28547" | |||
| d="m 1005.8555,288.88281 c -1.6407,7.16406 -8.78128,11.64844 -15.94925,10.00781 -7.16797,-1.64062 -11.64844,-8.78125 -10.00781,-15.94921 1.64062,-7.16797 8.78125,-11.64844 15.94922,-10.00782 7.16794,1.64063 11.64454,8.78125 10.00784,15.94922" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| id="path28549" | |||
| d="m 1005.8555,288.88281 c -1.6407,7.16406 -8.78128,11.64844 -15.94925,10.00781 -7.16797,-1.64062 -11.64844,-8.78125 -10.00781,-15.94921 1.64062,-7.16797 8.78125,-11.64844 15.94922,-10.00782 7.16794,1.64063 11.64454,8.78125 10.00784,15.94922" | |||
| style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" /> | |||
| d="m 1005.3296,288.76244 c -1.5742,6.8738 -8.42546,11.1765 -15.30301,9.60234 -6.87755,-1.57415 -11.17649,-8.42547 -9.60233,-15.30301 1.57414,-6.87755 8.42546,-11.17649 15.30301,-9.60234 6.87753,1.57415 11.17273,8.42546 9.60233,15.30301" | |||
| style="fill:#2d2d2d;fill-opacity:1;fill-rule:nonzero;stroke:#0c0c0c;stroke-width:0.95948386;stroke-opacity:1" /> | |||
| </g> | |||
| <g | |||
| style="clip-rule:nonzero" | |||
| style="clip-rule:nonzero;stroke:#ffffff;stroke-opacity:1" | |||
| id="g28555" | |||
| clip-path="url(#clip83)" | |||
| transform="matrix(0.75000002,0,0,-0.75000002,713.70253,2631.9236)"> | |||
| @@ -0,0 +1,491 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="27mm" | |||
| height="27mm" | |||
| viewBox="0 0 27 27" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="VerboL.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <inkscape:path-effect | |||
| effect="spiro" | |||
| id="path-effect4691" | |||
| is_visible="true" /> | |||
| <inkscape:path-effect | |||
| effect="spiro" | |||
| id="path-effect4687" | |||
| is_visible="true" /> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip89"> | |||
| <rect | |||
| id="rect4864" | |||
| height="19" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip90"> | |||
| <path | |||
| id="path4861" | |||
| d="m 0.898438,0.128906 h 16.25 v 17.882813 h -16.25 z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask44"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,89.358789,128.57765)" | |||
| id="g4858" | |||
| style="filter:url(#alpha)"> | |||
| <rect | |||
| id="rect4856" | |||
| style="fill:#000000;fill-opacity:0.14999402;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="alpha"> | |||
| <feColorMatrix | |||
| id="feColorMatrix4149" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath17821"> | |||
| <rect | |||
| id="rect17819" | |||
| height="19" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath17825"> | |||
| <path | |||
| id="path17823" | |||
| d="m 0.898438,0.128906 h 16.25 v 17.882813 h -16.25 z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip87"> | |||
| <rect | |||
| id="rect4848" | |||
| height="26" | |||
| width="24" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip88"> | |||
| <path | |||
| id="path4845" | |||
| d="m 0.683594,0.921875 h 22.679687 v 24.9375 H 0.683594 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask43"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,89.358789,128.57765)" | |||
| id="g4842" | |||
| style="filter:url(#alpha)"> | |||
| <rect | |||
| id="rect4840" | |||
| style="fill:#000000;fill-opacity:0.14999402;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="filter17836"> | |||
| <feColorMatrix | |||
| id="feColorMatrix17834" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath17840"> | |||
| <rect | |||
| id="rect17838" | |||
| height="26" | |||
| width="24" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath17844"> | |||
| <path | |||
| id="path17842" | |||
| d="m 0.683594,0.921875 h 22.679687 v 24.9375 H 0.683594 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip95"> | |||
| <rect | |||
| id="rect4912" | |||
| height="18" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip96"> | |||
| <path | |||
| id="path4909" | |||
| d="M 0.140625,0.140625 H 17.199219 V 17.199219 H 0.140625 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask47"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,88.611154,119.19859)" | |||
| id="g4906" | |||
| style="filter:url(#alpha-3)"> | |||
| <rect | |||
| id="rect4904" | |||
| style="fill:#000000;fill-opacity:0.33000201;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="alpha-3"> | |||
| <feColorMatrix | |||
| id="feColorMatrix4149-6" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath18541"> | |||
| <rect | |||
| id="rect18539" | |||
| height="18" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath18545"> | |||
| <path | |||
| id="path18543" | |||
| d="M 0.140625,0.140625 H 17.199219 V 17.199219 H 0.140625 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip93"> | |||
| <rect | |||
| id="rect4896" | |||
| height="24" | |||
| width="22" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip94"> | |||
| <path | |||
| id="path4893" | |||
| d="M 0.0390625,0.0390625 H 21.300781 V 23.421875 H 0.0390625 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask46"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,88.611154,119.19859)" | |||
| id="g4890" | |||
| style="filter:url(#alpha-3)"> | |||
| <rect | |||
| id="rect4888" | |||
| style="fill:#000000;fill-opacity:0.14999402;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="filter18556"> | |||
| <feColorMatrix | |||
| id="feColorMatrix18554" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath18560"> | |||
| <rect | |||
| id="rect18558" | |||
| height="24" | |||
| width="22" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath18564"> | |||
| <path | |||
| id="path18562" | |||
| d="M 0.0390625,0.0390625 H 21.300781 V 23.421875 H 0.0390625 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip91"> | |||
| <rect | |||
| id="rect4880" | |||
| height="32" | |||
| width="29" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip92"> | |||
| <path | |||
| id="path4877" | |||
| d="M 0.507812,0.5 H 28.855469 V 31.679688 H 0.507812 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask45"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,88.611154,119.19859)" | |||
| id="g4874" | |||
| style="filter:url(#alpha-3)"> | |||
| <rect | |||
| id="rect4872" | |||
| style="fill:#000000;fill-opacity:0.14999402;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="filter18575"> | |||
| <feColorMatrix | |||
| id="feColorMatrix18573" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath18579"> | |||
| <rect | |||
| id="rect18577" | |||
| height="32" | |||
| width="29" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath18583"> | |||
| <path | |||
| id="path18581" | |||
| d="M 0.507812,0.5 H 28.855469 V 31.679688 H 0.507812 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip202"> | |||
| <rect | |||
| id="rect5795" | |||
| height="18" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip203"> | |||
| <path | |||
| id="path5792" | |||
| d="M 0.855469,0.140625 H 17.914062 V 17.199219 H 0.855469 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask104"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,74.416306,97.613551)" | |||
| id="g5789" | |||
| style="filter:url(#alpha-7)"> | |||
| <rect | |||
| id="rect5787" | |||
| style="fill:#000000;fill-opacity:0.33000201;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="alpha-7"> | |||
| <feColorMatrix | |||
| id="feColorMatrix4149-5" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath18765"> | |||
| <rect | |||
| id="rect18763" | |||
| height="18" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath18769"> | |||
| <path | |||
| id="path18767" | |||
| d="M 0.855469,0.140625 H 17.914062 V 17.199219 H 0.855469 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="5.0765516" | |||
| inkscape:cx="46.79226" | |||
| inkscape:cy="54.165032" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1507" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="0" | |||
| inkscape:window-y="18" | |||
| inkscape:window-maximized="0" | |||
| inkscape:snap-grids="false" | |||
| showguides="false"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| </sodipodi:namedview> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-105.75783)" | |||
| style="display:inline" /> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,17.474603)"> | |||
| <ellipse | |||
| style="fill:#323343;fill-opacity:1;stroke:#0f1014;stroke-width:0.94275683;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path821" | |||
| cx="13.539449" | |||
| cy="-3.9000092" | |||
| rx="13.023881" | |||
| ry="13.066276" /> | |||
| <ellipse | |||
| style="display:inline;fill:#0f1014;fill-opacity:1;stroke:none;stroke-width:0.9913215;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="13.539449" | |||
| cy="-3.9000092" | |||
| rx="6.9151921" | |||
| ry="6.9377022" /> | |||
| <path | |||
| style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.13732359px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="m 13.58638,-16.512425 -0.7115,5.644409 1.447536,-0.02222 z" | |||
| id="path4693" | |||
| inkscape:connector-curvature="0" /> | |||
| <g | |||
| style="display:inline" | |||
| transform="matrix(1.4120124,0,0,1.4002053,-64.66546,-133.04496)" | |||
| id="layer1-9" | |||
| inkscape:label="Layer 1"> | |||
| <path | |||
| style="fill:#a8a8a8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" | |||
| d="m 60.020116,92.23473 c 0,2.532835 -2.053272,4.586111 -4.58611,4.586111 -2.534215,0 -4.586111,-2.053276 -4.586111,-4.586111 0,-2.532835 2.051896,-4.586111 4.586111,-4.586111 2.532838,0 4.58611,2.053276 4.58611,4.586111" | |||
| id="path8217" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| style="clip-rule:nonzero;fill:#cfcfcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" | |||
| d="m 55.434006,96.820841 c 0.549839,0 1.07763,-0.101974 1.566827,-0.279742 l -1.566827,-4.306369 -1.568204,4.306369 c 0.489197,0.177768 1.016988,0.279742 1.568204,0.279742" | |||
| id="path47002" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| style="clip-rule:nonzero;fill:#cfcfcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" | |||
| d="m 55.434006,92.23473 1.566827,-4.304993 c -0.489197,-0.179144 -1.016988,-0.281118 -1.566827,-0.281118 -0.551216,0 -1.079007,0.101974 -1.568204,0.281118 z m 0,0" | |||
| id="path47006" /> | |||
| </g> | |||
| </g> | |||
| </svg> | |||
| @@ -0,0 +1,489 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> | |||
| <svg | |||
| xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
| xmlns:cc="http://creativecommons.org/ns#" | |||
| xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
| xmlns:svg="http://www.w3.org/2000/svg" | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="12mm" | |||
| height="12mm" | |||
| viewBox="0 0 12 12" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| sodipodi:docname="VerboS.svg"> | |||
| <defs | |||
| id="defs16902"> | |||
| <inkscape:path-effect | |||
| effect="spiro" | |||
| id="path-effect4691" | |||
| is_visible="true" /> | |||
| <inkscape:path-effect | |||
| effect="spiro" | |||
| id="path-effect4687" | |||
| is_visible="true" /> | |||
| <clipPath | |||
| clipPathUnits="userSpaceOnUse" | |||
| id="clipPath6367"> | |||
| <path | |||
| d="M 0,3193 H 2089 V 0 H 0 Z" | |||
| id="path6365" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip89"> | |||
| <rect | |||
| id="rect4864" | |||
| height="19" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip90"> | |||
| <path | |||
| id="path4861" | |||
| d="m 0.898438,0.128906 h 16.25 v 17.882813 h -16.25 z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask44"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,89.358789,128.57765)" | |||
| id="g4858" | |||
| style="filter:url(#alpha)"> | |||
| <rect | |||
| id="rect4856" | |||
| style="fill:#000000;fill-opacity:0.14999402;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="alpha"> | |||
| <feColorMatrix | |||
| id="feColorMatrix4149" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath17821"> | |||
| <rect | |||
| id="rect17819" | |||
| height="19" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath17825"> | |||
| <path | |||
| id="path17823" | |||
| d="m 0.898438,0.128906 h 16.25 v 17.882813 h -16.25 z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip87"> | |||
| <rect | |||
| id="rect4848" | |||
| height="26" | |||
| width="24" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip88"> | |||
| <path | |||
| id="path4845" | |||
| d="m 0.683594,0.921875 h 22.679687 v 24.9375 H 0.683594 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask43"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,89.358789,128.57765)" | |||
| id="g4842" | |||
| style="filter:url(#alpha)"> | |||
| <rect | |||
| id="rect4840" | |||
| style="fill:#000000;fill-opacity:0.14999402;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="filter17836"> | |||
| <feColorMatrix | |||
| id="feColorMatrix17834" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath17840"> | |||
| <rect | |||
| id="rect17838" | |||
| height="26" | |||
| width="24" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath17844"> | |||
| <path | |||
| id="path17842" | |||
| d="m 0.683594,0.921875 h 22.679687 v 24.9375 H 0.683594 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip95"> | |||
| <rect | |||
| id="rect4912" | |||
| height="18" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip96"> | |||
| <path | |||
| id="path4909" | |||
| d="M 0.140625,0.140625 H 17.199219 V 17.199219 H 0.140625 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask47"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,88.611154,119.19859)" | |||
| id="g4906" | |||
| style="filter:url(#alpha-3)"> | |||
| <rect | |||
| id="rect4904" | |||
| style="fill:#000000;fill-opacity:0.33000201;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="alpha-3"> | |||
| <feColorMatrix | |||
| id="feColorMatrix4149-6" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath18541"> | |||
| <rect | |||
| id="rect18539" | |||
| height="18" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath18545"> | |||
| <path | |||
| id="path18543" | |||
| d="M 0.140625,0.140625 H 17.199219 V 17.199219 H 0.140625 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip93"> | |||
| <rect | |||
| id="rect4896" | |||
| height="24" | |||
| width="22" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip94"> | |||
| <path | |||
| id="path4893" | |||
| d="M 0.0390625,0.0390625 H 21.300781 V 23.421875 H 0.0390625 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask46"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,88.611154,119.19859)" | |||
| id="g4890" | |||
| style="filter:url(#alpha-3)"> | |||
| <rect | |||
| id="rect4888" | |||
| style="fill:#000000;fill-opacity:0.14999402;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="filter18556"> | |||
| <feColorMatrix | |||
| id="feColorMatrix18554" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath18560"> | |||
| <rect | |||
| id="rect18558" | |||
| height="24" | |||
| width="22" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath18564"> | |||
| <path | |||
| id="path18562" | |||
| d="M 0.0390625,0.0390625 H 21.300781 V 23.421875 H 0.0390625 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip91"> | |||
| <rect | |||
| id="rect4880" | |||
| height="32" | |||
| width="29" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip92"> | |||
| <path | |||
| id="path4877" | |||
| d="M 0.507812,0.5 H 28.855469 V 31.679688 H 0.507812 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask45"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,88.611154,119.19859)" | |||
| id="g4874" | |||
| style="filter:url(#alpha-3)"> | |||
| <rect | |||
| id="rect4872" | |||
| style="fill:#000000;fill-opacity:0.14999402;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="filter18575"> | |||
| <feColorMatrix | |||
| id="feColorMatrix18573" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath18579"> | |||
| <rect | |||
| id="rect18577" | |||
| height="32" | |||
| width="29" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath18583"> | |||
| <path | |||
| id="path18581" | |||
| d="M 0.507812,0.5 H 28.855469 V 31.679688 H 0.507812 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip202"> | |||
| <rect | |||
| id="rect5795" | |||
| height="18" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clip203"> | |||
| <path | |||
| id="path5792" | |||
| d="M 0.855469,0.140625 H 17.914062 V 17.199219 H 0.855469 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| <mask | |||
| id="mask104"> | |||
| <g | |||
| transform="matrix(0.26458333,0,0,0.26458333,74.416306,97.613551)" | |||
| id="g5789" | |||
| style="filter:url(#alpha-7)"> | |||
| <rect | |||
| id="rect5787" | |||
| style="fill:#000000;fill-opacity:0.33000201;stroke:none" | |||
| height="3351.5" | |||
| width="3052.8701" | |||
| y="0" | |||
| x="0" /> | |||
| </g> | |||
| </mask> | |||
| <filter | |||
| height="1" | |||
| width="1" | |||
| y="0" | |||
| x="0" | |||
| filterUnits="objectBoundingBox" | |||
| id="alpha-7"> | |||
| <feColorMatrix | |||
| id="feColorMatrix4149-5" | |||
| values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" | |||
| in="SourceGraphic" | |||
| type="matrix" /> | |||
| </filter> | |||
| <clipPath | |||
| id="clipPath18765"> | |||
| <rect | |||
| id="rect18763" | |||
| height="18" | |||
| width="18" | |||
| x="0" | |||
| y="0" /> | |||
| </clipPath> | |||
| <clipPath | |||
| id="clipPath18769"> | |||
| <path | |||
| id="path18767" | |||
| d="M 0.855469,0.140625 H 17.914062 V 17.199219 H 0.855469 Z m 0,0" | |||
| inkscape:connector-curvature="0" /> | |||
| </clipPath> | |||
| </defs> | |||
| <sodipodi:namedview | |||
| id="base" | |||
| pagecolor="#ffffff" | |||
| bordercolor="#666666" | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="7.261807" | |||
| inkscape:cx="-0.059310061" | |||
| inkscape:cy="34.303006" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| fit-margin-top="0" | |||
| fit-margin-left="0" | |||
| fit-margin-right="0" | |||
| fit-margin-bottom="0" | |||
| inkscape:window-width="1236" | |||
| inkscape:window-height="882" | |||
| inkscape:window-x="703" | |||
| inkscape:window-y="17" | |||
| inkscape:window-maximized="0" | |||
| inkscape:snap-grids="false" | |||
| showguides="false"> | |||
| <inkscape:grid | |||
| type="xygrid" | |||
| id="grid823" /> | |||
| </sodipodi:namedview> | |||
| <metadata | |||
| id="metadata16905"> | |||
| <rdf:RDF> | |||
| <cc:Work | |||
| rdf:about=""> | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| <g | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-120.75783)" | |||
| style="display:inline" /> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,2.4746042)"> | |||
| <ellipse | |||
| style="display:inline;fill:#0f1014;fill-opacity:1;stroke:none;stroke-width:0.85700715;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="5.9982929" | |||
| cy="3.5691531" | |||
| rx="5.9878855" | |||
| ry="5.9880605" /> | |||
| <g | |||
| transform="matrix(1.0828486,0,0,1.0703412,-53.968945,-95.151223)" | |||
| id="layer1-9" | |||
| inkscape:label="Layer 1" | |||
| style="fill:#323343;fill-opacity:1"> | |||
| <path | |||
| style="fill:#323343;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" | |||
| d="m 60.020116,92.23473 c 0,2.532835 -2.053272,4.586111 -4.58611,4.586111 -2.534215,0 -4.586111,-2.053276 -4.586111,-4.586111 0,-2.532835 2.051896,-4.586111 4.586111,-4.586111 2.532838,0 4.58611,2.053276 4.58611,4.586111" | |||
| id="path8217" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| style="clip-rule:nonzero;fill:#323343;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" | |||
| d="m 55.434006,96.820841 c 0.549839,0 1.07763,-0.101974 1.566827,-0.279742 l -1.566827,-4.306369 -1.568204,4.306369 c 0.489197,0.177768 1.016988,0.279742 1.568204,0.279742" | |||
| id="path47002" /> | |||
| <path | |||
| inkscape:connector-curvature="0" | |||
| style="clip-rule:nonzero;fill:#323343;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" | |||
| d="m 55.434006,92.23473 1.566827,-4.304993 c -0.489197,-0.179144 -1.016988,-0.281118 -1.566827,-0.281118 -0.551216,0 -1.079007,0.101974 -1.568204,0.281118 z m 0,0" | |||
| id="path47006" /> | |||
| </g> | |||
| <path | |||
| style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.25286552px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="m 25.1034,-38.881877 -1.304657,10.437256 2.654302,-0.04109 z" | |||
| id="path4693" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="fill:#666666;fill-opacity:0;stroke:#ffffff;stroke-width:0.52462262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 6.0576923,3.5714116 V -1.3734018" | |||
| id="path4695" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| </svg> | |||
| @@ -9,9 +9,9 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="50mm" | |||
| height="50mm" | |||
| viewBox="0 0 50 50" | |||
| width="27mm" | |||
| height="27mm" | |||
| viewBox="0 0 27 27" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| @@ -402,9 +402,9 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="1.4924731" | |||
| inkscape:cx="-69.687058" | |||
| inkscape:cy="20.410068" | |||
| inkscape:zoom="4.773787" | |||
| inkscape:cx="103.75815" | |||
| inkscape:cy="52.665989" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| @@ -431,7 +431,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -439,30 +439,30 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-82.75783)" | |||
| transform="translate(-230.09585,-105.75783)" | |||
| style="display:inline" /> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,40.474603)"> | |||
| transform="translate(0,17.474603)"> | |||
| <ellipse | |||
| style="fill:#05668d;fill-opacity:1;stroke:#04435e;stroke-width:1.73597777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| style="fill:#05668d;fill-opacity:1;stroke:#04435e;stroke-width:0.94275683;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| id="path821" | |||
| cx="25.017344" | |||
| cy="-15.559858" | |||
| rx="23.881493" | |||
| ry="24.161268" /> | |||
| cx="13.539449" | |||
| cy="-3.9000092" | |||
| rx="13.023881" | |||
| ry="13.066276" /> | |||
| <ellipse | |||
| style="display:inline;fill:#03394d;fill-opacity:1;stroke:none;stroke-width:1.82540405;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| style="display:inline;fill:#03394d;fill-opacity:1;stroke:none;stroke-width:0.9913215;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="25.017344" | |||
| cy="-15.559858" | |||
| rx="12.680177" | |||
| ry="12.828726" /> | |||
| cx="13.539449" | |||
| cy="-3.9000092" | |||
| rx="6.9151921" | |||
| ry="6.9377022" /> | |||
| <g | |||
| transform="matrix(2.5891643,0,0,2.5891643,-118.38462,-254.36589)" | |||
| transform="matrix(1.4120124,0,0,1.4002053,-64.665462,-133.04496)" | |||
| id="layer1-9" | |||
| inkscape:label="Layer 1"> | |||
| <path | |||
| @@ -482,8 +482,8 @@ | |||
| id="path47006" /> | |||
| </g> | |||
| <path | |||
| style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.25286552px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="m 25.1034,-38.881877 -1.304657,10.437256 2.654302,-0.04109 z" | |||
| style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.13732359px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="m 13.58638,-16.512425 -0.7115,5.644409 1.447536,-0.02222 z" | |||
| id="path4693" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| @@ -9,9 +9,9 @@ | |||
| xmlns="http://www.w3.org/2000/svg" | |||
| xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
| xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
| width="20mm" | |||
| height="20mm" | |||
| viewBox="0 0 20 20" | |||
| width="12mm" | |||
| height="12mm" | |||
| viewBox="0 0 12 12" | |||
| version="1.1" | |||
| id="svg16908" | |||
| inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" | |||
| @@ -402,9 +402,9 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="3.0589652" | |||
| inkscape:cx="-50.727259" | |||
| inkscape:cy="-24.121809" | |||
| inkscape:zoom="4.8921647" | |||
| inkscape:cx="-26.810171" | |||
| inkscape:cy="35.168381" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer2" | |||
| showgrid="true" | |||
| @@ -431,7 +431,7 @@ | |||
| <dc:format>image/svg+xml</dc:format> | |||
| <dc:type | |||
| rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
| <dc:title /> | |||
| <dc:title></dc:title> | |||
| </cc:Work> | |||
| </rdf:RDF> | |||
| </metadata> | |||
| @@ -439,23 +439,23 @@ | |||
| inkscape:label="Layer 1" | |||
| inkscape:groupmode="layer" | |||
| id="layer1" | |||
| transform="translate(-230.09585,-112.75783)" | |||
| transform="translate(-230.09585,-120.75783)" | |||
| style="display:inline" /> | |||
| <g | |||
| inkscape:groupmode="layer" | |||
| id="layer2" | |||
| inkscape:label="Layer 2" | |||
| style="display:inline" | |||
| transform="translate(0,10.474604)"> | |||
| transform="translate(0,2.4746042)"> | |||
| <ellipse | |||
| style="display:inline;fill:#a5be00;fill-opacity:1;stroke:none;stroke-width:1.43382859;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| style="display:inline;fill:#a5be00;fill-opacity:1;stroke:none;stroke-width:0.85700715;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill" | |||
| id="path821-6" | |||
| cx="10.028528" | |||
| cy="-0.46119985" | |||
| rx="10.018121" | |||
| ry="10.018414" /> | |||
| cx="5.9982929" | |||
| cy="3.5691531" | |||
| rx="5.9878855" | |||
| ry="5.9880605" /> | |||
| <g | |||
| transform="matrix(1.8116759,0,0,1.7907501,-90.300547,-165.62678)" | |||
| transform="matrix(1.0828486,0,0,1.0703412,-53.968945,-95.151223)" | |||
| id="layer1-9" | |||
| inkscape:label="Layer 1" | |||
| style="fill:#e7e7e7;fill-opacity:1"> | |||
| @@ -481,8 +481,8 @@ | |||
| id="path4693" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="fill:#a5be00;fill-opacity:0;stroke:#3f4800;stroke-width:0.87772757;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 10.127907,-0.45742148 V -8.7304144" | |||
| style="fill:#a5be00;fill-opacity:0;stroke:#3f4800;stroke-width:0.52462262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | |||
| d="M 6.0576923,3.5714116 V -1.3734018" | |||
| id="path4695" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| @@ -0,0 +1,316 @@ | |||
| /////////////////////////////////////////////////// | |||
| // dBiz FourSeq | |||
| // | |||
| /////////////////////////////////////////////////// | |||
| #include "dBiz.hpp" | |||
| #include "dsp/digital.hpp" | |||
| using namespace std; | |||
| namespace rack_plugin_dBiz { | |||
| /////added fine out ///////////////////////////////////////////////// | |||
| struct FourSeq : Module { | |||
| enum ParamIds | |||
| { | |||
| RESET_PARAM, | |||
| STEPA_PARAM, | |||
| STEPB_PARAM, | |||
| GATEA_PARAM, | |||
| GATEB_PARAM= GATEA_PARAM+4, | |||
| SEQA_PARAM = GATEB_PARAM+4, | |||
| SEQB_PARAM =SEQA_PARAM+4, | |||
| NUM_PARAMS = SEQB_PARAM+4 | |||
| }; | |||
| enum InputIds | |||
| { | |||
| RESET_INPUT, | |||
| CLKA_INPUT, | |||
| CLKB_INPUT, | |||
| CVA_INPUT, | |||
| CVB_INPUT = CVA_INPUT +4, | |||
| NUM_INPUTS = CVB_INPUT +4 | |||
| }; | |||
| enum OutputIds | |||
| { | |||
| SEQA_OUTPUT, | |||
| SEQB_OUTPUT, | |||
| GATEA_OUTPUT, | |||
| GATEB_OUTPUT, | |||
| NUM_OUTPUTS | |||
| }; | |||
| enum LighIds | |||
| { | |||
| RESET_LIGHT, | |||
| SEQA_LIGHT, | |||
| SEQB_LIGHT = SEQA_LIGHT + 4, | |||
| GATEA_LIGHT = SEQB_LIGHT+ 4, | |||
| GATEB_LIGHT = GATEA_LIGHT + 4, | |||
| NUM_LIGHTS = GATEB_LIGHT + 4 | |||
| }; | |||
| SchmittTrigger clk; | |||
| SchmittTrigger clkb; | |||
| SchmittTrigger reset_button; | |||
| PulseGenerator gate1; | |||
| PulseGenerator gate2; | |||
| SchmittTrigger gate_a[4] = {}; | |||
| SchmittTrigger gate_b[4] = {}; | |||
| bool gateState_a[4] = {}; | |||
| bool gateState_b[4] = {}; | |||
| bool gateState[8] = {}; | |||
| bool pulse1; | |||
| bool pulse2; | |||
| int clk1C = 0; | |||
| int clk2C = 0; | |||
| int maxStepA = 0; | |||
| int maxStepB = 0; | |||
| enum GateMode | |||
| { | |||
| TRIGGER, | |||
| RETRIGGER, | |||
| CONTINUOUS | |||
| }; | |||
| GateMode gateMode = TRIGGER; | |||
| FourSeq() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |||
| void step() override; | |||
| json_t *toJson() override | |||
| { | |||
| json_t *rootJ = json_object(); | |||
| json_t *gatesJ = json_array(); | |||
| for (int i = 0; i < 8; i++) | |||
| { | |||
| json_t *gateJ = json_integer((int)gateState[i]); | |||
| json_array_append_new(gatesJ, gateJ); | |||
| } | |||
| json_object_set_new(rootJ, "gate", gatesJ); | |||
| json_t *gateModeJ = json_integer((int)gateMode); | |||
| json_object_set_new(rootJ, "gateMode", gateModeJ); | |||
| return rootJ; | |||
| } | |||
| void fromJson(json_t *rootJ) override | |||
| { | |||
| json_t *gatesJ = json_object_get(rootJ, "gates"); | |||
| if (gatesJ) | |||
| { | |||
| for (int i = 0; i < 8; i++) | |||
| { | |||
| json_t *gateJ = json_array_get(gatesJ, i); | |||
| if (gateJ) | |||
| gateState[i] = !!json_integer_value(gateJ); | |||
| } | |||
| } | |||
| // gateMode | |||
| json_t *gateModeJ = json_object_get(rootJ, "gateMode"); | |||
| if (gateModeJ) | |||
| gateMode = (GateMode)json_integer_value(gateModeJ); | |||
| } | |||
| void reset() override | |||
| { | |||
| for (int i = 0; i < 8; i++) | |||
| { | |||
| gateState[i] = false; | |||
| } | |||
| } | |||
| }; | |||
| ///////////////////////////////////////////////////// | |||
| void FourSeq::step() | |||
| { | |||
| if (params[STEPA_PARAM].value == 0) maxStepA = 3; | |||
| if (params[STEPA_PARAM].value == 1) { maxStepA = 2; lights[SEQA_LIGHT+3].value = 0.0;} | |||
| if (params[STEPA_PARAM].value == 2) {maxStepA = 1; lights[SEQA_LIGHT+2].value = 0.0;} | |||
| if (params[STEPB_PARAM].value == 0) maxStepB = 3; | |||
| if (params[STEPB_PARAM].value == 1) {maxStepB = 2; lights[SEQB_LIGHT+3].value = 0.0;} | |||
| if (params[STEPB_PARAM].value == 2) {maxStepB = 1; lights[SEQB_LIGHT+2].value = 0.0;} | |||
| if (reset_button.process(params[RESET_PARAM].value+inputs[RESET_INPUT].value)) | |||
| { | |||
| reset(); | |||
| clk1C=0; | |||
| lights[SEQA_LIGHT + clk1C].value = 1.0f; | |||
| clk2C=0; | |||
| lights[SEQB_LIGHT + clk2C].value = 1.0; | |||
| lights[RESET_LIGHT].value=1.0; | |||
| } | |||
| if(lights[RESET_LIGHT].value>0) | |||
| { | |||
| lights[RESET_LIGHT].value -= lights[RESET_LIGHT].value / 0.1 / engineGetSampleRate(); | |||
| } | |||
| if (inputs[CLKA_INPUT].active) | |||
| { | |||
| if (clk.process(inputs[CLKA_INPUT].value)) | |||
| { | |||
| clk1C++; | |||
| lights[SEQA_LIGHT + clk1C].value = 1.0f; | |||
| gate1.trigger(1e-3); | |||
| } | |||
| if (clk1C > maxStepA) | |||
| { | |||
| clk1C = 0; | |||
| lights[SEQA_LIGHT + clk1C].value = 1.0; | |||
| } | |||
| pulse1 = gate1.process(1.0f / engineGetSampleRate()); | |||
| if (lights[SEQA_LIGHT + clk1C].value > 0) | |||
| { | |||
| lights[SEQA_LIGHT + clk1C].value -= lights[SEQA_LIGHT + clk1C].value / 0.01 / engineGetSampleRate(); | |||
| } | |||
| } | |||
| else for (int i=0;i<4;i++){ lights[SEQA_LIGHT+i].value=0.0;} | |||
| if (inputs[CLKB_INPUT].active) | |||
| { | |||
| if (clkb.process(inputs[CLKB_INPUT].value)) | |||
| { | |||
| clk2C++; | |||
| lights[SEQB_LIGHT + clk2C].value = 1.0f; | |||
| gate2.trigger(1e-3); | |||
| } | |||
| if (clk2C > maxStepB) | |||
| { | |||
| clk2C = 0; | |||
| lights[SEQB_LIGHT + clk2C].value = 1.0; | |||
| } | |||
| pulse2 = gate2.process(1.0f / engineGetSampleRate()); | |||
| if (lights[SEQB_LIGHT + clk2C].value > 0) | |||
| { | |||
| lights[SEQB_LIGHT + clk2C].value -= lights[SEQB_LIGHT + clk2C].value / 0.01 / engineGetSampleRate(); | |||
| } | |||
| } | |||
| else for (int i=0;i<4;i++){ lights[SEQB_LIGHT+i].value=0.0;} | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| gateState[i] = gateState_a[i]; | |||
| gateState[4 + i] = gateState_b[i]; | |||
| } | |||
| if (gateState_a[clk1C]) | |||
| { | |||
| outputs[SEQA_OUTPUT].value =clamp(inputs[CVA_INPUT+clk1C].value+params[SEQA_PARAM + clk1C].value,-3.0,3.0); | |||
| outputs[GATEA_OUTPUT].value = pulse1 ? 10.0f : 0.0f; | |||
| } | |||
| if (gateState_b[clk2C]) | |||
| { | |||
| outputs[SEQB_OUTPUT].value =clamp(inputs[CVB_INPUT+clk2C].value+params[SEQB_PARAM + clk2C].value,-3.0,3.0); | |||
| outputs[GATEB_OUTPUT].value = pulse2 ? 10.0f : 0.0f; | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| if (gate_a[i].process(params[GATEA_PARAM + i].value)) | |||
| { | |||
| gateState_a[i] = !gateState_a[i]; | |||
| } | |||
| lights[GATEA_LIGHT + i].value = gateState_a[i] ? 1.0 : 0.0; | |||
| if (gate_b[i].process(params[GATEB_PARAM + i].value)) | |||
| { | |||
| gateState_b[i] = !gateState_b[i]; | |||
| } | |||
| lights[GATEB_LIGHT + i].value = gateState_b[i] ? 1.0 : 0.0; | |||
| } | |||
| } | |||
| struct FourSeqWidget : ModuleWidget | |||
| { | |||
| FourSeqWidget(FourSeq *module) : ModuleWidget(module) | |||
| { | |||
| box.size = Vec(15*8, 380); | |||
| { | |||
| SVGPanel *panel = new SVGPanel(); | |||
| panel->box.size = box.size; | |||
| panel->setBackground(SVG::load(assetPlugin(plugin,"res/FourSeq.svg"))); | |||
| addChild(panel); | |||
| } | |||
| //Screw | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x-30, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 365))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x-30, 365))); | |||
| int knob=35; | |||
| int jack = 27; | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| addParam(ParamWidget::create<SDKnob>(Vec(70, 28 + knob * i), module, FourSeq::SEQA_PARAM + i, -3.0,3.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDBezel>(Vec(15, 31 + knob * i), module, FourSeq::GATEA_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<BigLight<OrangeLight>>(Vec(16, 32 + knob * i),module , FourSeq::GATEA_LIGHT+i)); | |||
| addParam(ParamWidget::create<SDKnob>(Vec(70, 172 + knob * i), module, FourSeq::SEQB_PARAM + i, -3.0, 3.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDBezel>(Vec(15, 175 + knob * i), module, FourSeq::GATEB_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<BigLight<OrangeLight>>(Vec(16, 176 + knob * i), module, FourSeq::GATEB_LIGHT + i)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(40, 30.5 + knob * i), Port::INPUT, module, FourSeq::CVA_INPUT + i)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(40, 173.5 + knob * i), Port::INPUT, module, FourSeq::CVB_INPUT + i)); | |||
| addChild(ModuleLightWidget::create<SmallLight<RedLight>>(Vec(105, 38 + knob * i), module, FourSeq::SEQA_LIGHT + i)); | |||
| addChild(ModuleLightWidget::create<SmallLight<RedLight>>(Vec(105, 180 + knob * i), module, FourSeq::SEQB_LIGHT + i)); | |||
| } | |||
| addInput(Port::create<PJ301MVAPort>(Vec(14, 170 + knob * 4), Port::INPUT, module, FourSeq::CLKA_INPUT)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(14, 197 + knob * 4), Port::INPUT, module, FourSeq::CLKB_INPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(14+jack, 170 + knob * 4), Port::OUTPUT, module, FourSeq::SEQA_OUTPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(14+jack, 197 + knob *4), Port::OUTPUT, module, FourSeq::SEQB_OUTPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(14 + jack*2, 170 + knob * 4), Port::OUTPUT, module, FourSeq::GATEA_OUTPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(14 + jack*2, 197 + knob * 4), Port::OUTPUT, module, FourSeq::GATEB_OUTPUT)); | |||
| addParam(ParamWidget::create<MCKSSS>(Vec(14 + jack * 3, 172 + knob * 4), module, FourSeq::STEPA_PARAM, 0.0, 2.0, 0.0)); | |||
| addParam(ParamWidget::create<MCKSSS>(Vec(14 + jack * 3, 199 + knob * 4), module, FourSeq::STEPB_PARAM, 0.0, 2.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDBezel>(Vec(35+jack, 4), module, FourSeq::RESET_PARAM, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<BigLight<OrangeLight>>(Vec(36+jack,5), module, FourSeq::RESET_LIGHT)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(35, 4), Port::INPUT, module, FourSeq::RESET_INPUT)); | |||
| } | |||
| }; | |||
| } // namespace rack_plugin_dBiz | |||
| using namespace rack_plugin_dBiz; | |||
| RACK_PLUGIN_MODEL_INIT(dBiz, FourSeq) { | |||
| Model *modelFourSeq = Model::create<FourSeq, FourSeqWidget>("dBiz", "FourSeq", "FourSeq", SEQUENCER_TAG); | |||
| return modelFourSeq; | |||
| } | |||
| @@ -473,13 +473,13 @@ Bene2Widget(Bene2 *module) : ModuleWidget(module) | |||
| for (int i=0;i<4;i++) | |||
| { | |||
| addInput(Port::create<PJ301MPort>(Vec(lb, top+jacks*i), Port::INPUT, module, Bene2::LEFT+i)); | |||
| addInput(Port::create<PJ301MPort>(Vec(lb+27, top+jacks*i), Port::INPUT, module, Bene2::RIGHT+i)); | |||
| addInput(Port::create<PJ301MPort>(Vec(lb + 27 + 27, top + jacks * i), Port::INPUT, module, Bene2::RESETL + i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb, top+jacks*i), Port::INPUT, module, Bene2::LEFT+i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb+27, top+jacks*i), Port::INPUT, module, Bene2::RIGHT+i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb + 27 + 27, top + jacks * i), Port::INPUT, module, Bene2::RESETL + i)); | |||
| addInput(Port::create<PJ301MPort>(Vec(lb, top+jacks*i + 140), Port::INPUT, module, Bene2::UP+i)); | |||
| addInput(Port::create<PJ301MPort>(Vec(lb + 27, top + jacks * i + 140), Port::INPUT, module, Bene2::DOWN + i)); | |||
| addInput(Port::create<PJ301MPort>(Vec(lb + 27 + 27, top + jacks * i + 140), Port::INPUT, module, Bene2::RESETC + i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb, top+jacks*i + 140), Port::INPUT, module, Bene2::UP+i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb + 27, top + jacks * i + 140), Port::INPUT, module, Bene2::DOWN + i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb + 27 + 27, top + jacks * i + 140), Port::INPUT, module, Bene2::RESETC + i)); | |||
| } | |||
| addParam(ParamWidget::create<LEDBezel>(Vec(lb,5+ 10 ), module, Bene2::RUNL_PARAM, 0.0, 1.0, 0.0)); | |||
| @@ -488,8 +488,8 @@ addParam(ParamWidget::create<LEDBezel>(Vec(lb,5+ 10+30), module, Bene2::RUNC_PAR | |||
| addChild(GrayModuleLightWidget::create<RunLight<OrangeLight>>(Vec(lb+3,5+ 10+3), module, Bene2::RUNL_LIGHT)); | |||
| addChild(GrayModuleLightWidget::create<RunLight<OrangeLight>>(Vec(lb+3,5+ 10+3+30), module, Bene2::RUNC_LIGHT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(lb+30,5+ 9), Port::INPUT, module, Bene2::RUNL_INPUT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(lb+ 30,5+ 9 + 30), Port::INPUT, module, Bene2::RUNC_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb+30,5+ 9), Port::INPUT, module, Bene2::RUNL_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb+ 30,5+ 9 + 30), Port::INPUT, module, Bene2::RUNC_INPUT)); | |||
| addParam(ParamWidget::create<LEDBezel>(Vec(lb+ 120, 5 + 10), module, Bene2::RESET_LINE, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDBezel>(Vec(lb+ 120, 5 + 10 + 30), module, Bene2::RESET_COL, 0.0, 1.0, 0.0)); | |||
| @@ -497,10 +497,10 @@ addParam(ParamWidget::create<LEDBezel>(Vec(lb+ 120, 5 + 10 + 30), module, Bene2: | |||
| addChild(GrayModuleLightWidget::create<RunLight<OrangeLight>>(Vec(lb + 120+3, 5 + 10 + 3), module, Bene2::RESETL_LIGHT)); | |||
| addChild(GrayModuleLightWidget::create<RunLight<OrangeLight>>(Vec(lb + 120+3, 5 + 10 + 3 + 30), module, Bene2::RESETC_LIGHT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(lb + 150, 5 + 9), Port::INPUT, module, Bene2::RESETL_INPUT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(lb + 150, 5 + 9 + 30), Port::INPUT, module, Bene2::RESETC_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb + 150, 5 + 9), Port::INPUT, module, Bene2::RESETL_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(lb + 150, 5 + 9 + 30), Port::INPUT, module, Bene2::RESETC_INPUT)); | |||
| //addInput(Port::create<PJ301MPort>(Vec(left + column_spacing * 3, top ), Port::INPUT, module, Bene2::RESET)); | |||
| //addInput(Port::create<PJ301MCPort>(Vec(left + column_spacing * 3, top ), Port::INPUT, module, Bene2::RESET)); | |||
| for ( int i = 0 ; i < 4 ; i++) | |||
| @@ -9,17 +9,12 @@ struct sinebank { | |||
| float phase = 0.0; | |||
| float freq; | |||
| float pitch; | |||
| float pitchSlew = 0.0; | |||
| int pitchSlewIndex = 0; | |||
| //void setPitch(float pitchKnob, float pitchCv) | |||
| void setPitch(float pitchKnob, float pitchCv) | |||
| { | |||
| // Compute frequency | |||
| pitch = pitchKnob; | |||
| // Apply pitch slew | |||
| const float pitchSlewAmount = 3.0; | |||
| pitch += pitchSlew * pitchSlewAmount; | |||
| pitch += pitchCv; | |||
| // Note C3 | |||
| freq = 261.626 * powf(2.0, pitch / 12.0); | |||
| @@ -31,16 +26,17 @@ struct sinebank { | |||
| void setFreq(float freq2) | |||
| { | |||
| // Accumulate the phase | |||
| phase += freq2 * deltaTime; | |||
| if (phase >= 1.0) | |||
| phase -= 1.0; | |||
| } | |||
| float sin() { | |||
| return sinf(2*M_PI * phase); | |||
| float light() | |||
| { | |||
| return sinf(2 * M_PI * phase); | |||
| } | |||
| }; | |||
| @@ -53,7 +49,6 @@ struct DAOSC : Module { | |||
| A_FINE_PARAM, | |||
| A_FOLD_PARAM, | |||
| A_DRIVE_PARAM, | |||
| //A_MODE_PARAM, | |||
| A_SAW_PARAM, | |||
| A_SQUARE_PARAM, | |||
| A_FM_PARAM, | |||
| @@ -62,7 +57,6 @@ struct DAOSC : Module { | |||
| B_FINE_PARAM, | |||
| B_FOLD_PARAM, | |||
| B_DRIVE_PARAM, | |||
| //B_MODE_PARAM, | |||
| B_SAW_PARAM, | |||
| B_SQUARE_PARAM, | |||
| B_FM_PARAM, | |||
| @@ -79,7 +73,6 @@ struct DAOSC : Module { | |||
| A_PITCH_INPUT, | |||
| A_FOLD_INPUT, | |||
| A_DRIVE_INPUT, | |||
| //A_OFF_INPUT, | |||
| B_FM_INPUT, | |||
| B_SAW_INPUT, | |||
| @@ -87,7 +80,6 @@ struct DAOSC : Module { | |||
| B_PITCH_INPUT, | |||
| B_DRIVE_INPUT, | |||
| B_FOLD_INPUT, | |||
| //B_OFF_INPUT, | |||
| NUM_INPUTS | |||
| }; | |||
| enum OutputIds | |||
| @@ -97,39 +89,27 @@ struct DAOSC : Module { | |||
| SUM_OUTPUT, | |||
| NUM_OUTPUTS | |||
| }; | |||
| enum LightIds { | |||
| NUM_LIGHTS | |||
| enum sinIds { | |||
| NUM_sinS | |||
| }; | |||
| float phase = 0.0; | |||
| float blinkPhase = 0.0; | |||
| sinebank osc_a; | |||
| sinebank a_harmonic[20]={}; | |||
| sinebank a_harmonicq[20] = {}; | |||
| sinebank a_harmonic[5]={}; | |||
| sinebank a_harmonicq[5] = {}; | |||
| sinebank osc_b; | |||
| sinebank b_harmonic[20] = {}; | |||
| sinebank b_harmonicq[20] = {}; | |||
| sinebank b_harmonic[5] = {}; | |||
| sinebank b_harmonicq[5] = {}; | |||
| DAOSC() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |||
| DAOSC() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_sinS) {} | |||
| void step() override; | |||
| }; | |||
| void DAOSC::step() { | |||
| int a_harm = round(params[A_SAW_PARAM].value+clamp(inputs[A_SAW_INPUT].value, 0.0f, 19.0f)); | |||
| int a_harmq = round(params[A_SQUARE_PARAM].value+clamp(inputs[A_SQUARE_INPUT].value, 0.0f, 19.0f)); | |||
| int b_harm = round(params[B_SAW_PARAM].value + clamp(inputs[B_SAW_INPUT].value, 0.0f, 19.0f)); | |||
| int b_harmq = round(params[B_SQUARE_PARAM].value + clamp(inputs[B_SQUARE_INPUT].value, 0.0f, 19.0f)); | |||
| if(a_harm >20) a_harm = 20; | |||
| if(a_harmq>20) a_harmq = 20; | |||
| if(b_harm >20) b_harm = 20; | |||
| if(b_harmq>20) b_harmq = 20; | |||
| float a_harmsum = 0.0; | |||
| float a_harmsumq = 0.0; | |||
| float b_harmsum = 0.0; | |||
| @@ -154,36 +134,28 @@ void DAOSC::step() { | |||
| osc_a.setPitch(params[A_PITCH_PARAM].value, a_pitchFine + a_pitchCv); | |||
| osc_b.setPitch(params[B_PITCH_PARAM].value, b_pitchFine + b_pitchCv); | |||
| for (int i = 1; i < a_harm; i++) | |||
| { | |||
| a_harmonic[i].setFreq((i*2)*osc_a.freq); | |||
| a_harmsum += a_harmonic[i].light()*3.0/i; | |||
| } | |||
| for (int i =0; i < 5; i++) | |||
| { | |||
| a_harmonic[i].setFreq(((i+1)*2)*osc_a.freq); | |||
| a_harmsum += (a_harmonic[i].sin()/(i+2))*params[A_SAW_PARAM].value+clamp(inputs[A_SAW_INPUT].value, 0.0f, 1.0f); | |||
| for (int i = 1; i < a_harmq; i++) | |||
| { | |||
| a_harmonicq[i].setFreq(((i * 2) + 1) * osc_a.freq); | |||
| a_harmsumq += a_harmonicq[i].light() * 3.0/ i; | |||
| } | |||
| a_harmonicq[i].setFreq((((i+1)*2)+1) * osc_a.freq); | |||
| a_harmsumq += (a_harmonicq[i].sin()/(i+2))*params[A_SQUARE_PARAM].value+clamp(inputs[A_SQUARE_INPUT].value, 0.0f, 1.0f); | |||
| for (int i = 1; i < b_harm; i++) | |||
| { | |||
| b_harmonic[i].setFreq((i * 2) * osc_b.freq); | |||
| b_harmsum += b_harmonic[i].light() * 3.0/ i; | |||
| } | |||
| b_harmonic[i].setFreq(((i+1)*2) * osc_b.freq); | |||
| b_harmsum += (b_harmonic[i].sin()/(i+2))*params[B_SAW_PARAM].value+ clamp(inputs[B_SAW_INPUT].value, 0.0f, 1.0f); | |||
| for (int i = 1; i < b_harmq; i++) | |||
| { | |||
| b_harmonicq[i].setFreq(((i * 2) + 1) * osc_b.freq); | |||
| b_harmsumq += b_harmonicq[i].light() * 3.0 / i; | |||
| } | |||
| b_harmonicq[i].setFreq((((i+1)*2)+1) * osc_b.freq); | |||
| b_harmsumq += (b_harmonicq[i].sin()/(i+2))*params[B_SQUARE_PARAM].value+ clamp(inputs[B_SQUARE_INPUT].value, 0.0f, 1.0f); | |||
| } | |||
| //////////////// Contrast - Thx to Michael Hetrick!!! | |||
| ////////////////A | |||
| float a_inputf = 3.0 * osc_a.light() + a_harmsum + a_harmsumq; | |||
| float b_inputf = 3.0 * osc_b.light() + b_harmsum + b_harmsumq; | |||
| float a_inputf = 2*(osc_a.sin() + a_harmsum + a_harmsumq); | |||
| float b_inputf = 2*(osc_b.sin() + b_harmsum + b_harmsumq); | |||
| a_inputf = clamp(a_inputf, -6.0f, 6.0f) * 0.2f; | |||
| b_inputf = clamp(b_inputf, -6.0f, 6.0f) * 0.2f; | |||
| @@ -234,13 +206,12 @@ void DAOSC::step() { | |||
| a_outputd = a_outputd / ((std::abs(a_inputd) * a_shapeA) + a_shapeB); | |||
| b_outputd = b_outputd / ((std::abs(b_inputd) * b_shapeA) + b_shapeB); | |||
| b_outputd *= 1.0f; | |||
| //////////////////////////////////////////////////////// | |||
| outputs[A_OUTPUT].value = 3.0 * a_outputd; | |||
| outputs[B_OUTPUT].value = 3.0 * b_outputd; | |||
| outputs[A_OUTPUT].value = 5.0f * a_outputd; | |||
| outputs[B_OUTPUT].value = 5.0f * b_outputd; | |||
| outputs[SUM_OUTPUT].value = 3.0 * (a_outputd + b_outputd) / 2; | |||
| outputs[SUM_OUTPUT].value = 5.0f * (a_outputd + b_outputd) / 2; | |||
| } | |||
| struct DAOSCWidget : ModuleWidget | |||
| @@ -273,35 +244,35 @@ int down = 50; | |||
| addParam(ParamWidget::create<LRoundWhy>(Vec(box.size.x-mid-50, top), module, DAOSC::A_PITCH_PARAM, -54.0, 54.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid-knob*2 - 10, top), module, DAOSC::A_FINE_PARAM, -1.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x - mid - knob * 1 , top + knob + 35), module, DAOSC::A_FM_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x - mid - knob * 1 , top + knob + 45), module, DAOSC::A_FM_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundAzz>(Vec(box.size.x - mid - knob * 2 - 5, top + knob + 5), module, DAOSC::A_FOLD_PARAM, 0.0, 5.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundRed>(Vec(box.size.x - mid - knob * 2 - 5, 125), module, DAOSC::A_DRIVE_PARAM, -5.0, 5.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid-knob, 157), module, DAOSC::A_SQUARE_PARAM, 1.0, 20.0, 1.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid-knob*2, 177), module, DAOSC::A_SAW_PARAM, 1.0, 20.0, 1.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid-knob, 157), module, DAOSC::A_SQUARE_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid-knob*2, 177), module, DAOSC::A_SAW_PARAM, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid-jack-5, 160+down), Port::INPUT, module, DAOSC::A_FM_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid-jack-5, 190+down), Port::INPUT, module, DAOSC::A_PITCH_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid-jack*2-5, 190+down), Port::INPUT, module, DAOSC::A_FOLD_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid-jack*3-5, 190+down), Port::INPUT, module, DAOSC::A_DRIVE_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid-jack*2-5, 230+down), Port::INPUT, module, DAOSC::A_SAW_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid-jack*3-5, 230+down), Port::INPUT, module, DAOSC::A_SQUARE_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid-jack*2-5, 230+down), Port::INPUT, module, DAOSC::A_SQUARE_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid-jack*3-5, 230+down), Port::INPUT, module, DAOSC::A_SAW_INPUT)); | |||
| addOutput(Port::create<PJ301MOPort>(Vec(box.size.x - mid-jack-5, 230+down), Port::OUTPUT, module, DAOSC::A_OUTPUT)); | |||
| addParam(ParamWidget::create<LRoundWhy>(Vec(box.size.x-mid+5, top), module, DAOSC::B_PITCH_PARAM, -54.0, 54.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid+5+knob+10, top), module, DAOSC::B_FINE_PARAM, -1.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x - mid + 5, top + knob+35), module, DAOSC::B_FM_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x - mid + 5, top + knob+45), module, DAOSC::B_FM_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundAzz>(Vec(box.size.x - mid + 10 + knob, top + knob + 5), module, DAOSC::B_FOLD_PARAM, 0.0, 5.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundRed>(Vec(box.size.x - mid + 10 + knob, 125), module, DAOSC::B_DRIVE_PARAM, -5.0, 5.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid+5, 157), module, DAOSC::B_SQUARE_PARAM, 1.0, 20.0, 1.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid+5+knob, 177), module, DAOSC::B_SAW_PARAM, 1.0, 20.0, 1.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid+5, 157), module, DAOSC::B_SQUARE_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x-mid+5+knob, 177), module, DAOSC::B_SAW_PARAM, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid+10, 160+down), Port::INPUT, module, DAOSC::B_FM_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid+10, 190+down), Port::INPUT, module, DAOSC::B_PITCH_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid+10+jack, 190+down), Port::INPUT, module, DAOSC::B_FOLD_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid+10+jack*2, 190+down), Port::INPUT, module, DAOSC::B_DRIVE_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid+10+jack, 230+down), Port::INPUT, module, DAOSC::B_SAW_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid+10+jack*2, 230+down), Port::INPUT, module, DAOSC::B_SQUARE_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid+10+jack, 230+down), Port::INPUT, module, DAOSC::B_SQUARE_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-mid+10+jack*2, 230+down), Port::INPUT, module, DAOSC::B_SAW_INPUT)); | |||
| addOutput(Port::create<PJ301MOPort>(Vec(box.size.x - mid+10, 230+down), Port::OUTPUT, module, DAOSC::B_OUTPUT)); | |||
| @@ -0,0 +1,337 @@ | |||
| /////////////////////////////////////////////////// | |||
| // dBiz Divider | |||
| // | |||
| /////////////////////////////////////////////////// | |||
| #include "dBiz.hpp" | |||
| #include "dsp/digital.hpp" | |||
| using namespace std; | |||
| namespace rack_plugin_dBiz { | |||
| /////added fine out ///////////////////////////////////////////////// | |||
| struct Divider : Module { | |||
| enum ParamIds | |||
| { | |||
| MODE_PARAM, | |||
| DIVISION_PARAM=MODE_PARAM+2, | |||
| DIVISIONB_PARAM = DIVISION_PARAM +4, | |||
| ON_SWITCH = DIVISIONB_PARAM +4, | |||
| ON_SWITCHB = ON_SWITCH+4, | |||
| NUM_PARAMS = ON_SWITCHB+4, | |||
| }; | |||
| enum InputIds { | |||
| CLOCK_INPUT, | |||
| CLOCKB_INPUT, | |||
| SUB1_INPUT, | |||
| SUB2_INPUT=SUB1_INPUT+4, | |||
| NUM_INPUTS=SUB2_INPUT+4 | |||
| }; | |||
| enum OutputIds | |||
| { | |||
| TRIG_OUTPUT, | |||
| AB_OUTPUT, | |||
| CD_OUTPUT, | |||
| TRIGB_OUTPUT, | |||
| AB2_OUTPUT, | |||
| CD2_OUTPUT, | |||
| NUM_OUTPUTS | |||
| }; | |||
| enum LighIds | |||
| { | |||
| LIGHT_S1, | |||
| LIGHT_S2 = LIGHT_S1 + 4, | |||
| NUM_LIGHTS = LIGHT_S2 + 4 | |||
| }; | |||
| int clock1Count = 0; | |||
| int clock2Count = 0; | |||
| int clock3Count = 0; | |||
| int clock4Count = 0; | |||
| int clock1bCount = 0; | |||
| int clock2bCount = 0; | |||
| int clock3bCount = 0; | |||
| int clock4bCount = 0; | |||
| PulseGenerator clk1; | |||
| PulseGenerator clk2; | |||
| PulseGenerator clk3; | |||
| PulseGenerator clk4; | |||
| PulseGenerator clk1b; | |||
| PulseGenerator clk2b; | |||
| PulseGenerator clk3b; | |||
| PulseGenerator clk4b; | |||
| bool pulse1 = false; | |||
| bool pulse2 = false; | |||
| bool pulse3 = false; | |||
| bool pulse4 = false; | |||
| bool pulse1b = false; | |||
| bool pulse2b = false; | |||
| bool pulse3b = false; | |||
| bool pulse4b = false; | |||
| SchmittTrigger clk; | |||
| SchmittTrigger clkb; | |||
| Divider() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |||
| void step() override; | |||
| }; | |||
| int divider1 = 0; | |||
| int divider2 = 0; | |||
| int divider3 = 0; | |||
| int divider4 = 0; | |||
| int divider1b = 0; | |||
| int divider2b = 0; | |||
| int divider3b = 0; | |||
| int divider4b = 0; | |||
| ///////////////////////////////////////////////////// | |||
| void Divider::step() { | |||
| divider1 = round(params[DIVISION_PARAM].value + clamp(inputs[SUB1_INPUT+0].value, -15.0f, 15.0f)); | |||
| if (divider1>15) divider1=15; | |||
| if (divider1<=1) divider1=1; | |||
| divider2 = round(params[DIVISION_PARAM+1].value + clamp(inputs[SUB1_INPUT+1].value, -15.0f, 15.0f)); | |||
| if (divider2>15) divider2=15; | |||
| if (divider2<=1) divider2=1; | |||
| divider3 = round(params[DIVISION_PARAM+2].value + clamp(inputs[SUB1_INPUT+2].value, -15.0f, 15.0f)); | |||
| if (divider3>15) divider3=15; | |||
| if (divider3<=1) divider3=1; | |||
| divider4 = round(params[DIVISION_PARAM+3].value + clamp(inputs[SUB1_INPUT+3].value, -15.0f, 15.0f)); | |||
| if (divider4>15) divider4=15; | |||
| if (divider4<=1) divider4=1; | |||
| divider1b = round(params[DIVISIONB_PARAM].value + clamp(inputs[SUB2_INPUT+0].value, -15.0f, 15.0f)); | |||
| if (divider1b>15) divider1b=15; | |||
| if (divider1b<=1) divider1b=1; | |||
| divider2b = round(params[DIVISIONB_PARAM+1].value + clamp(inputs[SUB2_INPUT+1].value, -15.0f, 15.0f)); | |||
| if (divider2b>15) divider2b=15; | |||
| if (divider2b<=1) divider2b=1; | |||
| divider3b = round(params[DIVISIONB_PARAM+2].value + clamp(inputs[SUB2_INPUT+2].value, -15.0f, 15.0f)); | |||
| if (divider3b>15) divider3b=15; | |||
| if (divider3b<=1) divider3b=1; | |||
| divider4b = round(params[DIVISIONB_PARAM+3].value + clamp(inputs[SUB2_INPUT+3].value, -15.0f, 15.0f)); | |||
| if (divider4b>15) divider4b=15; | |||
| if (divider4b<=1) divider4b=1; | |||
| if (clk.process(inputs[CLOCK_INPUT].value)) | |||
| { | |||
| clock1Count++; | |||
| clock2Count++; | |||
| clock3Count++; | |||
| clock4Count++; | |||
| } | |||
| if (clkb.process(inputs[CLOCKB_INPUT].value)) | |||
| { | |||
| clock1bCount++; | |||
| clock2bCount++; | |||
| clock3bCount++; | |||
| clock4bCount++; | |||
| } | |||
| if (clock1Count == 0) lights[LIGHT_S1+0].value = 1.0f; else lights[LIGHT_S1+0].value = 0.0; | |||
| if (clock2Count == 0) lights[LIGHT_S1+1].value = 1.0f; else lights[LIGHT_S1+1].value = 0.0; | |||
| if (clock3Count == 0) lights[LIGHT_S1+2].value = 1.0f; else lights[LIGHT_S1+2].value = 0.0; | |||
| if (clock4Count == 0) lights[LIGHT_S1+3].value = 1.0f; else lights[LIGHT_S1+3].value = 0.0; | |||
| if (clock1bCount == 0) lights[LIGHT_S2+0].value = 1.0f; else lights[LIGHT_S2+0].value = 0.0; | |||
| if (clock2bCount == 0) lights[LIGHT_S2+1].value = 1.0f; else lights[LIGHT_S2+1].value = 0.0; | |||
| if (clock3bCount == 0) lights[LIGHT_S2+2].value = 1.0f; else lights[LIGHT_S2+2].value = 0.0; | |||
| if (clock4bCount == 0) lights[LIGHT_S2+3].value = 1.0f; else lights[LIGHT_S2+3].value = 0.0; | |||
| ///////////////////////////////////////////////////////////////// | |||
| if(params[ON_SWITCH+0].value) | |||
| { | |||
| if (clock1Count >= divider1) | |||
| { | |||
| clock1Count = 0; | |||
| clk1.trigger(1e-3); | |||
| } | |||
| } | |||
| if(params[ON_SWITCH+1].value) | |||
| { | |||
| if (clock2Count >= divider2) | |||
| { | |||
| clock2Count = 0; | |||
| clk2.trigger(1e-3); | |||
| } | |||
| } | |||
| if(params[ON_SWITCH+2].value) | |||
| { | |||
| if (clock3Count >= divider3) | |||
| { | |||
| clock3Count = 0; | |||
| clk3.trigger(1e-3); | |||
| } | |||
| } | |||
| if(params[ON_SWITCH+3].value) | |||
| { | |||
| if (clock4Count >= divider4) | |||
| { | |||
| clock4Count = 0; | |||
| clk4.trigger(1e-3); | |||
| } | |||
| } | |||
| if(params[ON_SWITCHB+0].value) | |||
| { | |||
| if (clock1bCount >= divider1b) | |||
| { | |||
| clock1bCount = 0; | |||
| clk1b.trigger(1e-3); | |||
| } | |||
| } | |||
| if(params[ON_SWITCHB+1].value) | |||
| { | |||
| if (clock2bCount >= divider2b) | |||
| { | |||
| clock2bCount = 0; | |||
| clk2b.trigger(1e-3); | |||
| } | |||
| } | |||
| if(params[ON_SWITCHB+2].value) | |||
| { | |||
| if (clock3bCount >= divider3b) | |||
| { | |||
| clock3bCount = 0; | |||
| clk3b.trigger(1e-3); | |||
| } | |||
| } | |||
| if(params[ON_SWITCHB+3].value) | |||
| { | |||
| if (clock4bCount >= divider4b) | |||
| { | |||
| clock4bCount = 0; | |||
| clk4b.trigger(1e-3); | |||
| } | |||
| } | |||
| ////////////////////////////////////////////////////////////////// | |||
| pulse1 = clk1.process(1.0f / engineGetSampleRate()); | |||
| pulse2 = clk2.process(1.0f / engineGetSampleRate()); | |||
| pulse3 = clk3.process(1.0f / engineGetSampleRate()); | |||
| pulse4 = clk4.process(1.0f / engineGetSampleRate()); | |||
| pulse1b = clk1b.process(1.0f / engineGetSampleRate()); | |||
| pulse2b = clk2b.process(1.0f / engineGetSampleRate()); | |||
| pulse3b = clk3b.process(1.0f / engineGetSampleRate()); | |||
| pulse4b = clk4b.process(1.0f / engineGetSampleRate()); | |||
| ////////////////////////////////////////////////////////////////// | |||
| if(params[MODE_PARAM].value) | |||
| { | |||
| outputs[TRIG_OUTPUT].value =(((pulse1||pulse2)||pulse3)||pulse4)? 10.0f : 0.0f; | |||
| outputs[AB_OUTPUT].value = (pulse1 || pulse2) ? 10.0f : 0.0f; | |||
| outputs[CD_OUTPUT].value = (pulse3 || pulse4) ? 10.0f : 0.0f; | |||
| } | |||
| else | |||
| { | |||
| bool xora,xorb = false; | |||
| xora = pulse1==pulse2; | |||
| xorb = pulse3==pulse4; | |||
| // outputs[TRIG_OUTPUT].value =(!pulse1 && (pulse2 ^ pulse3)) || (pulse1 && !(pulse2 || pulse3)) || (!pulse2 && (pulse3 ^ pulse4)) || (pulse2 && !(pulse3 || pulse4))? 10.0f : 0.0f; | |||
| outputs[TRIG_OUTPUT].value = xora == xorb ? 0.0f : 10.0f; | |||
| outputs[AB_OUTPUT].value = xora ? 0.0f : 10.0f; | |||
| outputs[CD_OUTPUT].value = xorb ? 0.0f : 10.0f; | |||
| } | |||
| if(params[MODE_PARAM+1].value) | |||
| { | |||
| outputs[TRIGB_OUTPUT].value =(((pulse1b||pulse2b)||pulse3b)||pulse4b)? 10.0f : 0.0f; | |||
| outputs[AB2_OUTPUT].value = (pulse1b || pulse2b) ? 10.0f : 0.0f; | |||
| outputs[CD2_OUTPUT].value = (pulse3b || pulse4b) ? 10.0f : 0.0f; | |||
| } | |||
| else | |||
| { | |||
| bool xora2, xorb2 = false; | |||
| xora2 = pulse1b == pulse2b; | |||
| xorb2 = pulse3b == pulse4b; | |||
| //outputs[TRIGB_OUTPUT].value = (!pulse1b && (pulse2b ^ pulse3b)) || (pulse1b && !(pulse2b || pulse3b)) || (!pulse2b && (pulse3b ^ pulse4b)) || (pulse2b && !(pulse3b || pulse4b)) ? 10.0f : 0.0f; | |||
| outputs[TRIGB_OUTPUT].value = xora2 == xorb2 ? 0.0f : 10.0f; | |||
| outputs[AB2_OUTPUT].value = xora2 ? 0.0f : 10.0f; | |||
| outputs[CD2_OUTPUT].value = xorb2 ? 0.0f : 10.0f; | |||
| } | |||
| } | |||
| struct DividerWidget : ModuleWidget | |||
| { | |||
| DividerWidget(Divider *module) : ModuleWidget(module) | |||
| { | |||
| box.size = Vec(15*10, 380); | |||
| { | |||
| SVGPanel *panel = new SVGPanel(); | |||
| panel->box.size = box.size; | |||
| panel->setBackground(SVG::load(assetPlugin(plugin,"res/Divider.svg"))); | |||
| addChild(panel); | |||
| } | |||
| //Screw | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x-30, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 365))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x-30, 365))); | |||
| int knob=35; | |||
| int jack = 27; | |||
| int si = 15; | |||
| // | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| addParam(ParamWidget::create<SDKnob>(Vec(si + 70, 20 + knob * i), module, Divider::DIVISION_PARAM + i, 1, 15, 1.0)); | |||
| addParam(ParamWidget::create<SilverSwitch>(Vec(si + 10, 20 + knob * i), module, Divider::ON_SWITCH + i, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<SDKnob>(Vec(si + 70, 170 + knob * i), module, Divider::DIVISIONB_PARAM + i, 1, 15, 1.0)); | |||
| addParam(ParamWidget::create<SilverSwitch>(Vec(si + 10, 170 + knob * i), module, Divider::ON_SWITCHB + i, 0.0, 1.0, 0.0)); | |||
| addChild(ModuleLightWidget::create<SmallLight<RedLight>>(Vec(si + 105, 30 + knob * i), module, Divider::LIGHT_S1 + i)); | |||
| addChild(ModuleLightWidget::create<SmallLight<RedLight>>(Vec(si + 105, 180 + knob * i), module, Divider::LIGHT_S2 + i)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(si + 40, 22.5 + knob * i), Port::INPUT, module, Divider::SUB1_INPUT + i)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(si + 40, 173.5 + knob * i), Port::INPUT, module, Divider::SUB2_INPUT + i)); | |||
| } | |||
| addInput(Port::create<PJ301MVAPort>(Vec(15, 310), Port::INPUT, module, Divider::CLOCK_INPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 1, 310), Port::OUTPUT, module, Divider::AB_OUTPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 2, 310), Port::OUTPUT, module, Divider::CD_OUTPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 3, 310), Port::OUTPUT, module, Divider::TRIG_OUTPUT)); | |||
| addParam(ParamWidget::create<MCKSSS>(Vec(15 + jack * 4, 313), module, Divider::MODE_PARAM + 0, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(15, 310 + jack), Port::INPUT, module, Divider::CLOCKB_INPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 1, 310 + jack), Port::OUTPUT, module, Divider::AB2_OUTPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 2, 310 + jack), Port::OUTPUT, module, Divider::CD2_OUTPUT)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 3, 310 + jack), Port::OUTPUT, module, Divider::TRIGB_OUTPUT)); | |||
| addParam(ParamWidget::create<MCKSSS>(Vec(15 + jack * 4, 313 + jack), module, Divider::MODE_PARAM + 1, 0.0, 1.0, 0.0)); | |||
| } | |||
| }; | |||
| } // namespace rack_plugin_dBiz | |||
| using namespace rack_plugin_dBiz; | |||
| RACK_PLUGIN_MODEL_INIT(dBiz, Divider) { | |||
| Model *modelDivider = Model::create<Divider, DividerWidget>("dBiz", "Divider", "Divider", QUANTIZER_TAG); | |||
| return modelDivider; | |||
| } | |||
| @@ -0,0 +1,280 @@ | |||
| #include "dBiz.hpp" | |||
| #include "dsp/decimator.hpp" | |||
| using namespace std; | |||
| namespace rack_plugin_dBiz { | |||
| #define pi 3.14159265359 | |||
| struct MultiFilter | |||
| { | |||
| float q; | |||
| float freq; | |||
| float smpRate; | |||
| float hp = 0.0f,bp = 0.0f,lp = 0.0f,mem1 = 0.0f,mem2 = 0.0f; | |||
| void setParams(float freq, float q, float smpRate) { | |||
| this->freq = freq; | |||
| this->q=q; | |||
| this->smpRate=smpRate; | |||
| } | |||
| void calcOutput(float sample) | |||
| { | |||
| float g = tan(pi*freq/smpRate); | |||
| float R = 1.0f/(2.0f*q); | |||
| hp = (sample - (2.0f*R + g)*mem1 - mem2)/(1.0f + 2.0f*R*g + g*g); | |||
| bp = g*hp + mem1; | |||
| lp = g*bp + mem2; | |||
| mem1 = g*hp + bp; | |||
| mem2 = g*bp + lp; | |||
| } | |||
| }; | |||
| struct DualFilter : Module{ | |||
| enum ParamIds | |||
| { | |||
| CUTOFF_PARAM, | |||
| Q_PARAM, | |||
| CMOD_PARAM, | |||
| CMOD_PARAM2, | |||
| DRIVE_PARAM, | |||
| CUTOFF2_PARAM, | |||
| Q2_PARAM, | |||
| CMOD2_PARAM, | |||
| CMOD2_PARAM2, | |||
| DRIVE2_PARAM, | |||
| FADE_PARAM, | |||
| VOLA_PARAM, | |||
| VOLB_PARAM, | |||
| FILTERSEL_PARAM, | |||
| FILTER2SEL_PARAM, | |||
| NUM_PARAMS | |||
| }; | |||
| enum InputIds | |||
| { | |||
| CUTOFF_INPUT, | |||
| CUTOFF_INPUT2, | |||
| Q_INPUT, | |||
| DRIVE_INPUT, | |||
| IN, | |||
| IN2, | |||
| CUTOFF2_INPUT, | |||
| CUTOFF2_INPUT2, | |||
| Q2_INPUT, | |||
| DRIVE2_INPUT, | |||
| FADE_CV, | |||
| NUM_INPUTS | |||
| }; | |||
| enum OutputIds | |||
| { | |||
| OUT1, | |||
| OUT2, | |||
| MIXOUT, | |||
| NUM_OUTPUTS | |||
| }; | |||
| enum LightIds | |||
| { | |||
| FADEA_LIGHTS, | |||
| FADEB_LIGHTS, | |||
| NUM_LIGHTS | |||
| }; | |||
| MultiFilter filterA; // create a lpFilter; | |||
| MultiFilter filterB; // create a lpFilter; | |||
| DualFilter() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) { | |||
| } | |||
| void step() override; | |||
| }; | |||
| float outLP; | |||
| float outHP; | |||
| float outBP; | |||
| float out2LP; | |||
| float out2HP; | |||
| float out2BP; | |||
| void DualFilter::step() { | |||
| float cutoff = pow(2.0f,rescale(clamp(params[CUTOFF_PARAM].value +quadraticBipolar(params[CMOD_PARAM2].value)*0.1f*inputs[CUTOFF_INPUT2].value+quadraticBipolar(params[CMOD_PARAM].value)*0.1f*inputs[CUTOFF_INPUT].value / 5.0f,0.0f,1.0f),0.0f,1.0f,4.5f,13.0f)); | |||
| float cutoff2 = pow(2.0f,rescale(clamp(params[CUTOFF2_PARAM].value +quadraticBipolar(params[CMOD2_PARAM2].value)*0.1f*inputs[CUTOFF2_INPUT2].value +quadraticBipolar(params[CMOD2_PARAM].value)*0.1f*inputs[CUTOFF2_INPUT].value / 5.0f,0.0f,1.0f),0.0f,1.0f,4.5f,13.0f)); | |||
| float q = 10.0f * clamp(params[Q_PARAM].value + inputs[Q_INPUT].value / 5.0f, 0.1f, 1.0f); | |||
| float q2 = 10.0f * clamp(params[Q2_PARAM].value + inputs[Q2_INPUT].value / 5.0f, 0.1f, 1.0f); | |||
| filterA.setParams(cutoff,q,engineGetSampleRate()); | |||
| filterB.setParams(cutoff2,q2,engineGetSampleRate()); | |||
| float in = inputs[IN].value * params[VOLA_PARAM].value / 5.0f; | |||
| float in2 = inputs[IN2].value * params[VOLB_PARAM].value/ 5.0f; | |||
| //////////////////////////////////////////////////////////////// | |||
| in = clamp(in, -5.0f, 5.0f) * 0.2f; | |||
| in2 = clamp(in2, -5.0f, 5.0f) * 0.2f; | |||
| float a_shape = params[DRIVE_PARAM].value + clamp(inputs[DRIVE_INPUT].value, -5.0f, 5.0f); | |||
| a_shape = clamp(a_shape, -5.0f, 5.0f) * 0.2f; | |||
| a_shape *= 0.99f; | |||
| float b_shape = params[DRIVE2_PARAM].value + clamp(inputs[DRIVE2_INPUT].value, -5.0f, 5.0f); | |||
| b_shape = clamp(b_shape, -5.0f, 5.0f) * 0.2f; | |||
| b_shape *= 0.99f; | |||
| const float a_shapeB = (1.0 - a_shape) / (1.0 + a_shape); | |||
| const float a_shapeA = (4.0 * a_shape) / ((1.0 - a_shape) * (1.0 + a_shape)); | |||
| const float b_shapeB = (1.0 - b_shape) / (1.0 + b_shape); | |||
| const float b_shapeA = (4.0 * b_shape) / ((1.0 - b_shape) * (1.0 + b_shape)); | |||
| float a_outputd = in * (a_shapeA + a_shapeB); | |||
| float b_outputd = in2 * (b_shapeA + b_shapeB); | |||
| a_outputd = a_outputd / ((std::abs(in) * a_shapeA) + a_shapeB); | |||
| b_outputd = b_outputd / ((std::abs(in2) * b_shapeA) + b_shapeB); | |||
| /////////////////////////////////////////////////////////////////// | |||
| filterA.calcOutput(a_outputd); | |||
| filterB.calcOutput(b_outputd); | |||
| float xfade = params[FADE_PARAM].value+inputs[FADE_CV].value / 10.0; | |||
| lights[FADEA_LIGHTS].value=(1-xfade); | |||
| lights[FADEB_LIGHTS].value=xfade; | |||
| int sel1 = round(params[FILTERSEL_PARAM].value); | |||
| int sel2 = round(params[FILTER2SEL_PARAM].value); | |||
| for (int i=0;i<4;i++) | |||
| { | |||
| if (sel1 == 0) | |||
| outputs[OUT1].value = filterA.lp * 3.0f; | |||
| if (sel1 == 1) | |||
| outputs[OUT1].value = filterA.bp * 3.0f; | |||
| if (sel1 == 2) | |||
| outputs[OUT1].value = filterA.hp * 3.0f; | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| if (sel2 == 0) | |||
| outputs[OUT2].value = filterB.lp * 3.0f; | |||
| if (sel2 == 1) | |||
| outputs[OUT2].value = filterB.bp * 3.0f; | |||
| if (sel2 == 2) | |||
| outputs[OUT2].value = filterB.hp * 3.0f; | |||
| } | |||
| float filter1 = outputs[OUT1].value; | |||
| float filter2 = outputs[OUT2].value; | |||
| outputs[MIXOUT].value = (filter1 * ( 1-xfade ))+(filter2 * xfade); | |||
| } | |||
| struct DualFilterWidget:ModuleWidget { | |||
| DualFilterWidget(DualFilter *module) : ModuleWidget(module) | |||
| { | |||
| box.size = Vec(15*16, 380); | |||
| { | |||
| SVGPanel *panel = new SVGPanel(); | |||
| panel->box.size = box.size; | |||
| panel->setBackground(SVG::load(assetPlugin(plugin, "res/DualFilter.svg"))); | |||
| addChild(panel); | |||
| } | |||
| addChild(Widget::create<ScrewBlack>(Vec(15, 0))); | |||
| addChild(Widget::create<ScrewBlack>(Vec(box.size.x-30, 0))); | |||
| addChild(Widget::create<ScrewBlack>(Vec(15, 365))); | |||
| addChild(Widget::create<ScrewBlack>(Vec(box.size.x-30, 365))); | |||
| int i=120; | |||
| int s=27; | |||
| int l=7; | |||
| int of = -25; | |||
| int cv = 310; | |||
| addChild(GrayModuleLightWidget::create<MediumLight<GreenLight>>(Vec(i-40,21),module,DualFilter::FADEA_LIGHTS)); | |||
| addChild(GrayModuleLightWidget::create<MediumLight<GreenLight>>(Vec(i+28,21),module,DualFilter::FADEB_LIGHTS)); | |||
| addParam(ParamWidget::create<LRoundBlu>(Vec(i -22 , 21), module, DualFilter::FADE_PARAM, 0.0,1.0,0.0)); | |||
| addParam(ParamWidget::create<LRoundWhy>(Vec(35, 30), module, DualFilter::CUTOFF_PARAM, 0.0f, 1.0f, 1.0f)); | |||
| addParam(ParamWidget::create<LRoundWhy>(Vec(160, 30), module, DualFilter::CUTOFF2_PARAM, 0.0f, 1.0f, 1.0f)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(of + 33, 113), module, DualFilter::CMOD_PARAM, -1.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(of + 90, 93), module, DualFilter::Q_PARAM, 0.1f, 1.0f, 0.1f)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(of + 95 + i, 113), module, DualFilter::CMOD2_PARAM, -1.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(of + 39 + i, 93), module, DualFilter::Q2_PARAM, 0.1f, 1.0f, 0.1f)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(of + 33, 165), module, DualFilter::CMOD_PARAM2, -1.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(of + 95 + i, 165), module, DualFilter::CMOD2_PARAM2, -1.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundRed>(Vec(of + 90, 145), module, DualFilter::DRIVE_PARAM, -5.0f, 5.0f, 0.0f)); | |||
| addParam(ParamWidget::create<RoundRed>(Vec(of + 39 + i, 145), module, DualFilter::DRIVE2_PARAM, -5.0f, 5.0f, 0.0f)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(of + 90, 200), module, DualFilter::VOLA_PARAM, 0.0, 5.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(of + 39 + i, 200), module, DualFilter::VOLB_PARAM, 0.0, 5.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhySnapKnob>(Vec(of + 33, 220), module, DualFilter::FILTERSEL_PARAM, 0.0, 2.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhySnapKnob>(Vec(of + 95 + i, 220), module, DualFilter::FILTER2SEL_PARAM, 0.0, 2.0, 0.0)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(l, 276),Port::INPUT, module, DualFilter::CUTOFF_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(l + s , 276),Port::INPUT, module, DualFilter::CUTOFF_INPUT2)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(l + s * 2, 276),Port::INPUT, module, DualFilter::Q_INPUT)); | |||
| addInput(Port::create<PJ301MOrPort>(Vec(l + s * 3, 276),Port::INPUT, module, DualFilter::DRIVE_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(l + s , cv),Port::INPUT, module, DualFilter::FADE_CV)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(l+s*3 + i, 276),Port::INPUT, module, DualFilter::CUTOFF2_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(l + s*2 + i, 276),Port::INPUT, module, DualFilter::CUTOFF2_INPUT2)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(l + s + i, 276),Port::INPUT, module, DualFilter::Q2_INPUT)); | |||
| addInput(Port::create<PJ301MOrPort>(Vec(l + i, 276),Port::INPUT, module, DualFilter::DRIVE2_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(l + s * 2, cv),Port::INPUT, module, DualFilter::IN)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(l + s + i, cv),Port::INPUT, module, DualFilter::IN2)); | |||
| addOutput(Port::create<PJ301MOPort>(Vec(l , cv),Port::OUTPUT, module, DualFilter::OUT1)); | |||
| addOutput(Port::create<PJ301MOPort>(Vec(l + s * 3 + i, cv),Port::OUTPUT, module, DualFilter::OUT2)); | |||
| addOutput(Port::create<PJ301MOPort>(Vec(l + s * 2 + i, cv),Port::OUTPUT, module, DualFilter::MIXOUT)); | |||
| } | |||
| }; | |||
| } // namespace rack_plugin_dBiz | |||
| using namespace rack_plugin_dBiz; | |||
| RACK_PLUGIN_MODEL_INIT(dBiz, DualFilter) { | |||
| Model *modelDualFilter = Model::create<DualFilter, DualFilterWidget>("dBiz", "DualFilter", "Dual Multimode Filter", FILTER_TAG); | |||
| return modelDualFilter; | |||
| } | |||
| @@ -1,169 +0,0 @@ | |||
| // | |||
| // Biquad.cpp | |||
| // | |||
| // Created by Nigel Redmon on 11/24/12 | |||
| // EarLevel Engineering: earlevel.com | |||
| // Copyright 2012 Nigel Redmon | |||
| // | |||
| // For a complete explanation of the Biquad code: | |||
| // http://www.earlevel.com/main/2012/11/26/biquad-c-source-code/ | |||
| // | |||
| // License: | |||
| // | |||
| // This source code is provided as is, without warranty. | |||
| // You may copy and distribute verbatim copies of this document. | |||
| // You may modify and use this source code to create binary code | |||
| // for your own purposes, free or commercial. | |||
| // | |||
| #include <math.h> | |||
| #include "Biquad.h" | |||
| namespace rack_plugin_dBiz { | |||
| Biquad::Biquad() { | |||
| type = bq_type_lowpass; | |||
| a0 = 1.0; | |||
| a1 = a2 = b1 = b2 = 0.0; | |||
| Fc = 0.50; | |||
| Q = 0.707; | |||
| peakGain = 0.0; | |||
| z1 = z2 = 0.0; | |||
| } | |||
| Biquad::Biquad(int type, double Fc, double Q, double peakGainDB) { | |||
| setBiquad(type, Fc, Q, peakGainDB); | |||
| z1 = z2 = 0.0; | |||
| } | |||
| Biquad::~Biquad() { | |||
| } | |||
| void Biquad::setType(int type) { | |||
| this->type = type; | |||
| calcBiquad(); | |||
| } | |||
| void Biquad::setQ(double Q) { | |||
| this->Q = Q; | |||
| calcBiquad(); | |||
| } | |||
| void Biquad::setFc(double Fc) { | |||
| this->Fc = Fc; | |||
| calcBiquad(); | |||
| } | |||
| void Biquad::setPeakGain(double peakGainDB) { | |||
| this->peakGain = peakGainDB; | |||
| calcBiquad(); | |||
| } | |||
| void Biquad::setBiquad(int type, double Fc, double Q, double peakGainDB) { | |||
| this->type = type; | |||
| this->Q = Q; | |||
| this->Fc = Fc; | |||
| setPeakGain(peakGainDB); | |||
| } | |||
| void Biquad::calcBiquad(void) { | |||
| double norm; | |||
| double V = pow(10, fabs(peakGain) / 20.0); | |||
| double K = tan(M_PI * Fc); | |||
| switch (this->type) { | |||
| case bq_type_lowpass: | |||
| norm = 1 / (1 + K / Q + K * K); | |||
| a0 = K * K * norm; | |||
| a1 = 2 * a0; | |||
| a2 = a0; | |||
| b1 = 2 * (K * K - 1) * norm; | |||
| b2 = (1 - K / Q + K * K) * norm; | |||
| break; | |||
| case bq_type_highpass: | |||
| norm = 1 / (1 + K / Q + K * K); | |||
| a0 = 1 * norm; | |||
| a1 = -2 * a0; | |||
| a2 = a0; | |||
| b1 = 2 * (K * K - 1) * norm; | |||
| b2 = (1 - K / Q + K * K) * norm; | |||
| break; | |||
| case bq_type_bandpass: | |||
| norm = 1 / (1 + K / Q + K * K); | |||
| a0 = K / Q * norm; | |||
| a1 = 0; | |||
| a2 = -a0; | |||
| b1 = 2 * (K * K - 1) * norm; | |||
| b2 = (1 - K / Q + K * K) * norm; | |||
| break; | |||
| case bq_type_notch: | |||
| norm = 1 / (1 + K / Q + K * K); | |||
| a0 = (1 + K * K) * norm; | |||
| a1 = 2 * (K * K - 1) * norm; | |||
| a2 = a0; | |||
| b1 = a1; | |||
| b2 = (1 - K / Q + K * K) * norm; | |||
| break; | |||
| case bq_type_peak: | |||
| if (peakGain >= 0) { // boost | |||
| norm = 1 / (1 + 1 / Q * K + K * K); | |||
| a0 = (1 + V / Q * K + K * K) * norm; | |||
| a1 = 2 * (K * K - 1) * norm; | |||
| a2 = (1 - V / Q * K + K * K) * norm; | |||
| b1 = a1; | |||
| b2 = (1 - 1 / Q * K + K * K) * norm; | |||
| } | |||
| else { // cut | |||
| norm = 1 / (1 + V / Q * K + K * K); | |||
| a0 = (1 + 1 / Q * K + K * K) * norm; | |||
| a1 = 2 * (K * K - 1) * norm; | |||
| a2 = (1 - 1 / Q * K + K * K) * norm; | |||
| b1 = a1; | |||
| b2 = (1 - V / Q * K + K * K) * norm; | |||
| } | |||
| break; | |||
| case bq_type_lowshelf: | |||
| if (peakGain >= 0) { // boost | |||
| norm = 1 / (1 + sqrt(2) * K + K * K); | |||
| a0 = (1 + sqrt(2 * V) * K + V * K * K) * norm; | |||
| a1 = 2 * (V * K * K - 1) * norm; | |||
| a2 = (1 - sqrt(2 * V) * K + V * K * K) * norm; | |||
| b1 = 2 * (K * K - 1) * norm; | |||
| b2 = (1 - sqrt(2) * K + K * K) * norm; | |||
| } | |||
| else { // cut | |||
| norm = 1 / (1 + sqrt(2 * V) * K + V * K * K); | |||
| a0 = (1 + sqrt(2) * K + K * K) * norm; | |||
| a1 = 2 * (K * K - 1) * norm; | |||
| a2 = (1 - sqrt(2) * K + K * K) * norm; | |||
| b1 = 2 * (V * K * K - 1) * norm; | |||
| b2 = (1 - sqrt(2 * V) * K + V * K * K) * norm; | |||
| } | |||
| break; | |||
| case bq_type_highshelf: | |||
| if (peakGain >= 0) { // boost | |||
| norm = 1 / (1 + sqrt(2) * K + K * K); | |||
| a0 = (V + sqrt(2 * V) * K + K * K) * norm; | |||
| a1 = 2 * (K * K - V) * norm; | |||
| a2 = (V - sqrt(2 * V) * K + K * K) * norm; | |||
| b1 = 2 * (K * K - 1) * norm; | |||
| b2 = (1 - sqrt(2) * K + K * K) * norm; | |||
| } | |||
| else { // cut | |||
| norm = 1 / (V + sqrt(2 * V) * K + K * K); | |||
| a0 = (1 + sqrt(2) * K + K * K) * norm; | |||
| a1 = 2 * (K * K - 1) * norm; | |||
| a2 = (1 - sqrt(2) * K + K * K) * norm; | |||
| b1 = 2 * (K * K - V) * norm; | |||
| b2 = (V - sqrt(2 * V) * K + K * K) * norm; | |||
| } | |||
| break; | |||
| } | |||
| return; | |||
| } | |||
| } // namespace rack_plugin_dBiz | |||
| @@ -1,64 +0,0 @@ | |||
| // | |||
| // Biquad.h | |||
| // | |||
| // Created by Nigel Redmon on 11/24/12 | |||
| // EarLevel Engineering: earlevel.com | |||
| // Copyright 2012 Nigel Redmon | |||
| // | |||
| // For a complete explanation of the Biquad code: | |||
| // http://www.earlevel.com/main/2012/11/26/biquad-c-source-code/ | |||
| // | |||
| // License: | |||
| // | |||
| // This source code is provided as is, without warranty. | |||
| // You may copy and distribute verbatim copies of this document. | |||
| // You may modify and use this source code to create binary code | |||
| // for your own purposes, free or commercial. | |||
| // | |||
| #ifndef Biquad_h | |||
| #define Biquad_h | |||
| namespace rack_plugin_dBiz { | |||
| enum { | |||
| bq_type_lowpass = 0, | |||
| bq_type_highpass, | |||
| bq_type_bandpass, | |||
| bq_type_notch, | |||
| bq_type_peak, | |||
| bq_type_lowshelf, | |||
| bq_type_highshelf | |||
| }; | |||
| class Biquad { | |||
| public: | |||
| Biquad(); | |||
| Biquad(int type, double Fc, double Q, double peakGainDB); | |||
| ~Biquad(); | |||
| void setType(int type); | |||
| void setQ(double Q); | |||
| void setFc(double Fc); | |||
| void setPeakGain(double peakGainDB); | |||
| void setBiquad(int type, double Fc, double Q, double peakGain); | |||
| float process(float in); | |||
| protected: | |||
| void calcBiquad(void); | |||
| int type; | |||
| double a0, a1, a2, b1, b2; | |||
| double Fc, Q, peakGain; | |||
| double z1, z2; | |||
| }; | |||
| inline float Biquad::process(float in) { | |||
| double out = in * a0 + z1; | |||
| z1 = in * a1 + z2 - b1 * out; | |||
| z2 = in * a2 - b2 * out; | |||
| return out; | |||
| } | |||
| } // namespace rack_plugin_dBiz | |||
| #endif // Biquad_h | |||
| @@ -1,126 +0,0 @@ | |||
| // | |||
| // DSPUtilities.cpp | |||
| // | |||
| // | |||
| #include "DSPUtilities.h" | |||
| #ifndef DSP_UTILITIES | |||
| #define DSP_UTILITIES | |||
| #include <cmath> | |||
| namespace rack_plugin_dBiz { | |||
| //============================================================================== | |||
| // Calculates the frequency of a given pitch (MIDI) value. | |||
| double pitchToFreq(double pitch) | |||
| { | |||
| return pow(2, (pitch - 69) / 12) * 440; | |||
| } | |||
| //============================================================================== | |||
| // Calculates the pitch (MIDI) of a given frequency value | |||
| double freqToPitch(double freq) | |||
| { | |||
| return 69 + 12 * log2(freq / 440); | |||
| } | |||
| //============================================================================== | |||
| /** | |||
| Takes a value as input and clips it according to the min and max values. | |||
| Returns the input if (minValue <= in <= maxValue). | |||
| If (in < minValue), then return minValue. | |||
| If (in > maxValue), then return maxValue. | |||
| */ | |||
| double clipMinMax(double in, double minValue, double maxValue) | |||
| { | |||
| if (in < minValue) | |||
| return minValue; | |||
| else if (in > maxValue) | |||
| return maxValue; | |||
| else | |||
| return in; | |||
| } | |||
| //============================================================================== | |||
| /** | |||
| Takes a value as input and clips it according to the min value. | |||
| Returns the input if (minValue <= in). | |||
| If (in < minValue), then return minValue. | |||
| */ | |||
| double clipMin(double in, double minValue) | |||
| { | |||
| if (in < minValue) | |||
| return minValue; | |||
| else | |||
| return in; | |||
| } | |||
| //============================================================================== | |||
| /** | |||
| Crossfades linearly between two values (in0, in1). The value returned is | |||
| determined by the value of the xFadeCtrl argument. | |||
| xFadeCtrl Range: 0->1 | |||
| - xFadeCtrl = 0 (only in0 comes through) | |||
| - xFadeCtrl = 0.5 (equal mix of in0 and in1) | |||
| - xfadeCtrl = 1 (only in1 comes through) | |||
| */ | |||
| double xFadeLin(double xFadeCtrl, double in0, double in1) | |||
| { | |||
| // Clip the xFade parameter to only have range of 0->1 | |||
| xFadeCtrl = clipMinMax(xFadeCtrl, 0.0, 1.0); | |||
| // Perform crossfading and return the value | |||
| return (in0 * (1.0 - xFadeCtrl) + in1 * xFadeCtrl); | |||
| } | |||
| //============================================================================== | |||
| /** | |||
| Parabolic Controller Shaper: | |||
| "Bends" the controller curve torwards the X or Y axis. | |||
| input range: (-1..0..1) maps to output range: (-1..0..1). | |||
| bend range: (-1..0..1) | |||
| - bend = -1 (max bend towards X axis) | |||
| - bend = 0 (don't bend) | |||
| - bend = 1 (max bend towards Y axis) | |||
| */ | |||
| double parCtrlShaper(double input, double bend) | |||
| { | |||
| // clip input and bend because the shaper only works in that range. | |||
| input = clipMinMax(input, -1.0, 1.0); | |||
| bend = clipMinMax(bend, -1.0, 1.0); | |||
| return input * ((bend + 1) - fabs(input) * bend); | |||
| } | |||
| //============================================================================== | |||
| /** | |||
| Normalizes a range of values to the range 0->1. | |||
| (start/end should probably be the range of a parameter) | |||
| - input: the value to be normalized | |||
| - start: the start of the input's range | |||
| - end: the end of the input's range | |||
| Note: (start < end) and (start > end) are both valid. | |||
| */ | |||
| double normalizeRange(double input, double start, double end) | |||
| { | |||
| return (input - start) / (end - start); | |||
| } | |||
| double resonanceToQ(double resonance) | |||
| { | |||
| return 1.0 / (2.0 * (1.0 - resonance)); | |||
| } | |||
| } // namespace rack_plugin_dBiz | |||
| //============================================================================== | |||
| #endif // DSP_UTILITIES | |||
| @@ -1,87 +0,0 @@ | |||
| // | |||
| // DSPUtilities.h | |||
| // | |||
| // | |||
| // | |||
| #ifndef DSPUtilities_h | |||
| #define DSPUtilities_h | |||
| namespace rack_plugin_dBiz { | |||
| //============================================================================== | |||
| // Calculates the frequency of a given pitch (MIDI) value. | |||
| double pitchToFreq(double pitch); | |||
| //============================================================================== | |||
| // Calculates the pitch (MIDI) of a given frequency value | |||
| double freqToPitch(double freq); | |||
| //============================================================================== | |||
| /** | |||
| Takes a value as input and clips it according to the min and max values. | |||
| Returns the input if (minValue <= in <= maxValue). | |||
| If (in < minValue), then return minValue. | |||
| If (in > maxValue), then return maxValue. | |||
| */ | |||
| double clipMinMax(double in, double minValue, double maxValue); | |||
| //============================================================================== | |||
| /** | |||
| Takes a value as input and clips it according to the min value. | |||
| Returns the input if (minValue <= in). | |||
| If (in < minValue), then return minValue. | |||
| */ | |||
| double clipMin(double in, double minValue); | |||
| //============================================================================== | |||
| /** | |||
| Crossfades linearly between two values (in0, in1). The value returned is | |||
| determined by the value of the xFadeCtrl argument. | |||
| xFadeCtrl Range: 0->1 | |||
| - xFadeCtrl = 0 (only in0 comes through) | |||
| - xFadeCtrl = 0.5 (equal mix of in0 and in1) | |||
| - xfadeCtrl = 1 (only in1 comes through) | |||
| */ | |||
| double xFadeLin(double xFadeCtrl, double in0, double in1); | |||
| //============================================================================== | |||
| /** | |||
| Parabolic Controller Shaper: | |||
| "Bends" the controller curve torwards the X or Y axis. | |||
| input range: (-1..0..1) maps to output range: (-1..0..1). | |||
| bend range: (-1..0..1) | |||
| - bend = -1 (max bend towards X axis) | |||
| - bend = 0 (don't bend) | |||
| - bend = 1 (max bend towards Y axis) | |||
| */ | |||
| double parCtrlShaper(double input, double bend); | |||
| //============================================================================== | |||
| /** | |||
| Normalizes a range of values to the range 0->1. | |||
| (start/end should probably be the range of a parameter) | |||
| - input: the value to be normalized | |||
| - start: the start of the input's range | |||
| - end: the end of the input's range | |||
| Note: (start < end) and (start > end) are both valid. | |||
| */ | |||
| double normalizeRange(double input, double start, double end); | |||
| double resonanceToQ(double resonance); | |||
| //============================================================================== | |||
| } // namespace rack_plugin_dBiz | |||
| using namespace rack_plugin_dBiz; | |||
| #endif /* DSPUtilities_h */ | |||
| @@ -1,324 +0,0 @@ | |||
| //************************************************************************************** | |||
| //Clock Divider Module for VCV Rack by Autodafe http://www.autodafe.net | |||
| // | |||
| // Based on code created by Created by Nigel Redmon | |||
| // EarLevel Engineering: earlevel.com | |||
| // Copyright 2012 Nigel Redmon | |||
| // http://www.earlevel.com/main/2012/11/26/biquad-c-source-code/ | |||
| //************************************************************************************** | |||
| #include "dBiz.hpp" | |||
| #include <stdlib.h> | |||
| namespace rack_plugin_dBiz { | |||
| struct DualFilter : Module{ | |||
| enum ParamIds | |||
| { | |||
| FREQ_PARAM, | |||
| Q_PARAM, | |||
| RES_PARAM, | |||
| FREQ_CV_PARAM, | |||
| FREQ_CV_PARAM2, | |||
| DRIVE_PARAM, | |||
| FREQ2_PARAM, | |||
| Q2_PARAM, | |||
| RES2_PARAM, | |||
| FREQ2_CV_PARAM, | |||
| FREQ2_CV_PARAM2, | |||
| DRIVE2_PARAM, | |||
| ROUTE_PARAM, | |||
| FADE_PARAM, | |||
| VOLA_PARAM, | |||
| VOLB_PARAM, | |||
| FILTERSEL_PARAM, | |||
| FILTER2SEL_PARAM, | |||
| NUM_PARAMS | |||
| }; | |||
| enum InputIds | |||
| { | |||
| FREQ_INPUT, | |||
| FREQ_INPUT2, | |||
| RES_INPUT, | |||
| DRIVE_INPUT, | |||
| INPUT, | |||
| FREQ2_INPUT, | |||
| FREQ2_INPUT2, | |||
| RES2_INPUT, | |||
| DRIVE2_INPUT, | |||
| INPUT2, | |||
| FADE_CV, | |||
| NUM_INPUTS | |||
| }; | |||
| enum OutputIds | |||
| { | |||
| OUT1, | |||
| OUT2, | |||
| MIXOUT, | |||
| NUM_OUTPUTS | |||
| }; | |||
| enum LightIds | |||
| { | |||
| FADEA_LIGHTS, | |||
| FADEB_LIGHTS, | |||
| NUM_LIGHTS | |||
| }; | |||
| DualFilter(); | |||
| VAStateVariableFilter *lpFilter = new VAStateVariableFilter() ; // create a lpFilter; | |||
| VAStateVariableFilter *hpFilter = new VAStateVariableFilter() ; // create a lpFilter; | |||
| VAStateVariableFilter *bpFilter = new VAStateVariableFilter() ; // create a lpFilter; | |||
| VAStateVariableFilter *npFilter = new VAStateVariableFilter() ; // create a lpFilter; | |||
| VAStateVariableFilter *lp2Filter = new VAStateVariableFilter(); // create a lpFilter; | |||
| VAStateVariableFilter *hp2Filter = new VAStateVariableFilter(); // create a lpFilter; | |||
| VAStateVariableFilter *bp2Filter = new VAStateVariableFilter(); // create a lpFilter; | |||
| VAStateVariableFilter *np2Filter = new VAStateVariableFilter(); // create a lpFilter; | |||
| void step()override; | |||
| }; | |||
| DualFilter::DualFilter() { | |||
| params.resize(NUM_PARAMS); | |||
| inputs.resize(NUM_INPUTS); | |||
| outputs.resize(NUM_OUTPUTS); | |||
| lights.resize(NUM_LIGHTS); | |||
| } | |||
| float outLP; | |||
| float outHP; | |||
| float outBP; | |||
| float outNP; | |||
| float out2LP; | |||
| float out2HP; | |||
| float out2BP; | |||
| float out2NP; | |||
| //VAStateVariableFilter *peakFilter = new VAStateVariableFilter(); | |||
| float minfreq = 15.0; | |||
| float maxfreq = 12000; | |||
| void DualFilter::step() { | |||
| float input = inputs[INPUT].value * params[VOLA_PARAM].value / 5.0; | |||
| float input2 = inputs[INPUT2].value * params[VOLB_PARAM].value/ 5.0; | |||
| float drive = params[DRIVE_PARAM].value + inputs[DRIVE_INPUT].value / 10.0; | |||
| float drive2 = params[DRIVE2_PARAM].value + inputs[DRIVE2_INPUT].value / 10.0; | |||
| float xfade = params[FADE_PARAM].value+inputs[FADE_CV].value / 10.0; | |||
| float gain = powf(100.0, drive); | |||
| float gain2 = powf(100.0, drive2); | |||
| input *= gain; | |||
| input2 *= gain2; | |||
| lights[FADEA_LIGHTS].value=(1-xfade); | |||
| lights[FADEB_LIGHTS].value=xfade; | |||
| // Add -60dB noise to bootstrap self-oscillation | |||
| input += 1.0e-6 * (2.0*randomf() - 1.0)*1000; | |||
| input2 += 1.0e-6 * (2.0 * randomf() - 1.0) * 1000; | |||
| // Set resonance | |||
| float res = clampf(params[RES_PARAM].value + clampf(inputs[RES_INPUT].value, 0,1), 0,1); | |||
| float res2 = clampf(params[RES2_PARAM].value + clampf(inputs[RES2_INPUT].value, 0, 1), 0, 1); | |||
| //res = 5.5 * clampf(res, 0.0, 1.0); | |||
| float cutoffcv = 400*params[FREQ_CV_PARAM].value * inputs[FREQ_INPUT].value+ 400*inputs[FREQ_INPUT2].value *params[FREQ_CV_PARAM2].value ; | |||
| float cutoff2cv = 400 * params[FREQ2_CV_PARAM].value * inputs[FREQ2_INPUT].value + 400 * inputs[FREQ2_INPUT2].value * params[FREQ2_CV_PARAM2].value; | |||
| float cutoff = params[FREQ_PARAM].value + cutoffcv; | |||
| float cutoff2 = params[FREQ2_PARAM].value + cutoff2cv; | |||
| cutoff = clampf(cutoff, minfreq, maxfreq); | |||
| cutoff2 = clampf(cutoff2, minfreq, maxfreq); | |||
| lpFilter->setFilterType(0); | |||
| hpFilter->setFilterType(2); | |||
| bpFilter->setFilterType(1); | |||
| npFilter->setFilterType(5); | |||
| lp2Filter->setFilterType(0); | |||
| hp2Filter->setFilterType(2); | |||
| bp2Filter->setFilterType(1); | |||
| np2Filter->setFilterType(5); | |||
| lpFilter->setCutoffFreq(cutoff); | |||
| hpFilter->setCutoffFreq(cutoff); | |||
| bpFilter->setCutoffFreq(cutoff); | |||
| npFilter->setCutoffFreq(cutoff); | |||
| lp2Filter->setCutoffFreq(cutoff2); | |||
| hp2Filter->setCutoffFreq(cutoff2); | |||
| bp2Filter->setCutoffFreq(cutoff2); | |||
| np2Filter->setCutoffFreq(cutoff2); | |||
| lpFilter->setResonance(res); | |||
| hpFilter->setResonance(res); | |||
| bpFilter->setResonance(res); | |||
| npFilter->setResonance(res); | |||
| lp2Filter->setResonance(res2); | |||
| hp2Filter->setResonance(res2); | |||
| bp2Filter->setResonance(res2); | |||
| np2Filter->setResonance(res2); | |||
| lpFilter->setSampleRate(engineGetSampleRate()); | |||
| hpFilter->setSampleRate(engineGetSampleRate()); | |||
| bpFilter->setSampleRate(engineGetSampleRate()); | |||
| npFilter->setSampleRate(engineGetSampleRate()); | |||
| lp2Filter->setSampleRate(engineGetSampleRate()); | |||
| hp2Filter->setSampleRate(engineGetSampleRate()); | |||
| bp2Filter->setSampleRate(engineGetSampleRate()); | |||
| np2Filter->setSampleRate(engineGetSampleRate()); | |||
| outLP = lpFilter->processAudioSample(input,1); | |||
| outHP = hpFilter->processAudioSample(input,1); | |||
| outBP = bpFilter->processAudioSample(input,1); | |||
| outNP = npFilter->processAudioSample(input,1); | |||
| out2LP = lp2Filter->processAudioSample(input2, 1); | |||
| out2HP = hp2Filter->processAudioSample(input2, 1); | |||
| out2BP = bp2Filter->processAudioSample(input2, 1); | |||
| out2NP = np2Filter->processAudioSample(input2, 1); | |||
| int sel1 = round(params[FILTERSEL_PARAM].value); | |||
| int sel2 = round(params[FILTER2SEL_PARAM].value); | |||
| for (int i=0;i<4;i++) | |||
| { | |||
| if (sel1 == 0) | |||
| outputs[OUT1].value = outLP * 5; | |||
| if (sel1 == 1) | |||
| outputs[OUT1].value = outHP * 5; | |||
| if (sel1 == 2) | |||
| outputs[OUT1].value = outBP * 5; | |||
| if (sel1 == 3) | |||
| outputs[OUT1].value = outNP * 5; | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| if (sel2 == 0) | |||
| outputs[OUT2].value = out2LP * 5; | |||
| if (sel2 == 1) | |||
| outputs[OUT2].value = out2HP * 5; | |||
| if (sel2 == 2) | |||
| outputs[OUT2].value = out2BP * 5; | |||
| if (sel2 == 3) | |||
| outputs[OUT2].value = out2NP * 5; | |||
| } | |||
| float filter1 = outputs[OUT1].value; | |||
| float filter2 = outputs[OUT2].value; | |||
| int route = round(params[ROUTE_PARAM].value); | |||
| for (int i = 0; i < 2; i++) | |||
| { | |||
| if (route == 0) | |||
| outputs[MIXOUT].value = (filter1 * ( 1-xfade ))+(filter2 * xfade); | |||
| else | |||
| outputs[MIXOUT].value = 0.0; | |||
| } | |||
| } | |||
| DualFilterWidget::DualFilterWidget() { | |||
| DualFilter *module = new DualFilter(); | |||
| setModule(module); | |||
| box.size = Vec(15 * 18, 380); | |||
| { | |||
| SVGPanel *panel = new SVGPanel(); | |||
| panel->box.size = box.size; | |||
| panel->setBackground(SVG::load(assetPlugin(plugin, "res/DualFilter.svg"))); | |||
| addChild(panel); | |||
| } | |||
| int i=140; | |||
| int s=27; | |||
| int l=10; | |||
| int of = -20; | |||
| int cv = 310; | |||
| addChild(createScrew<ScrewSilver>(Vec(15, 0))); | |||
| addChild(createScrew<ScrewSilver>(Vec(box.size.x - 30, 0))); | |||
| addChild(createScrew<ScrewSilver>(Vec(15, 365))); | |||
| addChild(createScrew<ScrewSilver>(Vec(box.size.x - 30, 365))); | |||
| addChild(createLight<MediumLight<GreenLight>>(Vec(i-45,21),module,DualFilter::FADEA_LIGHTS)); | |||
| addChild(createLight<MediumLight<GreenLight>>(Vec(i+23,21),module,DualFilter::FADEB_LIGHTS)); | |||
| addParam(createParam<LRoundBlu>(Vec(i -30 , 21), module, DualFilter::FADE_PARAM, 0.0,1.0,0.0)); | |||
| addParam(createParam<CKSS>(Vec(i -12, 290), module, DualFilter::ROUTE_PARAM, 0.0, 1.0, 1.0)); | |||
| addParam(createParam<LRoundWhy>(Vec(of + 68, 30), module, DualFilter::FREQ_PARAM, minfreq, maxfreq, maxfreq)); | |||
| addParam(createParam<LRoundWhy>(Vec(of + 58 + i, 30), module, DualFilter::FREQ2_PARAM, minfreq, maxfreq, maxfreq)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 33, 113), module, DualFilter::FREQ_CV_PARAM, -1.0, 1.0, 0.0)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 100, 93), module, DualFilter::RES_PARAM, 0.0, 0.99, 0.0)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 100 + i, 113), module, DualFilter::FREQ2_CV_PARAM, -1.0, 1.0, 0.0)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 33 + i, 93), module, DualFilter::RES2_PARAM, 0.0, 0.99, 0.0)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 33, 165), module, DualFilter::FREQ_CV_PARAM2, -1.0, 1.0, 0.0)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 100 + i, 165), module, DualFilter::FREQ2_CV_PARAM2, -1.0, 1.0, 0.0)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 100, 145), module, DualFilter::DRIVE_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 33 + i, 145), module, DualFilter::DRIVE2_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 100, 200), module, DualFilter::VOLA_PARAM, 0.0, 5.0, 0.0)); | |||
| addParam(createParam<RoundWhy>(Vec(of + 33 + i, 200), module, DualFilter::VOLB_PARAM, 0.0, 5.0, 0.0)); | |||
| addParam(createParam<RoundWhySnapKnob>(Vec(of + 33, 220), module, DualFilter::FILTERSEL_PARAM, 0.0, 3.0, 0.0)); | |||
| addParam(createParam<RoundWhySnapKnob>(Vec(of + 100 + i, 220), module, DualFilter::FILTER2SEL_PARAM, 0.0, 3.0, 0.0)); | |||
| addInput(createInput<PJ301MCPort>(Vec(l, 276), module, DualFilter::FREQ_INPUT)); | |||
| addInput(createInput<PJ301MCPort>(Vec(l + s , 276), module, DualFilter::FREQ_INPUT2)); | |||
| addInput(createInput<PJ301MCPort>(Vec(l + s * 2, 276), module, DualFilter::RES_INPUT)); | |||
| addInput(createInput<PJ301MCPort>(Vec(l + s * 3, 276), module, DualFilter::DRIVE_INPUT)); | |||
| addInput(createInput<PJ301MCPort>(Vec(l + s , cv), module, DualFilter::FADE_CV)); | |||
| addInput(createInput<PJ301MCPort>(Vec(l + i, 276), module, DualFilter::FREQ2_INPUT)); | |||
| addInput(createInput<PJ301MCPort>(Vec(l + s + i, 276), module, DualFilter::FREQ2_INPUT2)); | |||
| addInput(createInput<PJ301MCPort>(Vec(l + s * 2 + i, 276), module, DualFilter::RES2_INPUT)); | |||
| addInput(createInput<PJ301MCPort>(Vec(l + s * 3 + i, 276), module, DualFilter::DRIVE2_INPUT)); | |||
| addInput(createInput<PJ301MOrPort>(Vec(l + s * 2, cv), module, DualFilter::INPUT)); | |||
| addInput(createInput<PJ301MOrPort>(Vec(l + s + i, cv), module, DualFilter::INPUT2)); | |||
| addOutput(createOutput<PJ301MOPort>(Vec(l , cv), module, DualFilter::OUT1)); | |||
| addOutput(createOutput<PJ301MOPort>(Vec(l + s * 3 + i, cv), module, DualFilter::OUT2)); | |||
| addOutput(createOutput<PJ301MOPort>(Vec(l + s * 2 + i, cv), module, DualFilter::MIXOUT)); | |||
| } | |||
| } // namespace rack_plugin_dBiz | |||
| @@ -1,271 +0,0 @@ | |||
| /* | |||
| ============================================================================== | |||
| VAStateVariableFilter.cpp | |||
| Created: 10 May 2015 2:41:43pm | |||
| Author: Jordan Harris | |||
| ============================================================================== | |||
| */ | |||
| #include "VAStateVariableFilter.h" | |||
| //============================================================================== | |||
| namespace rack_plugin_dBiz { | |||
| VAStateVariableFilter::VAStateVariableFilter() | |||
| { | |||
| sampleRate = 44100.0f; // default sample rate when constructed | |||
| filterType = SVFLowpass; // lowpass filter by default | |||
| gCoeff = 1.0f; | |||
| RCoeff = 1.0f; | |||
| KCoeff = 0.0f; | |||
| cutoffFreq = 1000.0f; | |||
| Q = static_cast<float>(resonanceToQ(0.5)); | |||
| z1_A[0] = z2_A[0] = 0.0f; | |||
| z1_A[1] = z2_A[1] = 0.0f; | |||
| //smoothTimeMs = 0.0; // 0.0 milliseconds | |||
| } | |||
| VAStateVariableFilter::~VAStateVariableFilter() | |||
| { | |||
| } | |||
| // Member functions for setting the filter's parameters (and sample rate). | |||
| //============================================================================== | |||
| void VAStateVariableFilter::setFilterType(const int& newType) | |||
| { | |||
| filterType = newType; | |||
| } | |||
| void VAStateVariableFilter::setCutoffPitch(const float& newCutoffPitch) | |||
| { | |||
| if (active) { | |||
| cutoffFreq = static_cast<float>(pitchToFreq(newCutoffPitch)); | |||
| //cutoffLinSmooth.setValue(cutoffFreq); | |||
| calcFilter(); | |||
| } | |||
| } | |||
| void VAStateVariableFilter::setCutoffFreq(const float& newCutoffFreq) | |||
| { | |||
| if (active) { | |||
| cutoffFreq = newCutoffFreq; | |||
| calcFilter(); | |||
| } | |||
| } | |||
| void VAStateVariableFilter::setResonance(const float& newResonance) | |||
| { | |||
| if (active) { | |||
| Q = static_cast<float>(resonanceToQ(newResonance)); | |||
| calcFilter(); | |||
| } | |||
| } | |||
| void VAStateVariableFilter::setQ(const float& newQ) | |||
| { | |||
| if (active) { | |||
| Q = newQ; | |||
| calcFilter(); | |||
| } | |||
| } | |||
| void VAStateVariableFilter::setShelfGain(const float& newGain) | |||
| { | |||
| if (active) { | |||
| shelfGain = newGain; | |||
| calcFilter(); | |||
| } | |||
| } | |||
| void VAStateVariableFilter::setFilter(const int& newType, const float& newCutoffFreq, | |||
| const float& newResonance, const float& newShelfGain) | |||
| { | |||
| filterType = newType; | |||
| cutoffFreq = newCutoffFreq; | |||
| Q = static_cast<float>(resonanceToQ(newResonance)); | |||
| shelfGain = newShelfGain; | |||
| calcFilter(); | |||
| } | |||
| void VAStateVariableFilter::setSampleRate(const float& newSampleRate) | |||
| { | |||
| sampleRate = newSampleRate; | |||
| //cutoffLinSmooth.reset(sampleRate, smoothTimeMs); | |||
| calcFilter(); | |||
| } | |||
| /*void VAStateVariableFilter::setSmoothingTimeInMs(const float & newSmoothingTimeMs) | |||
| { | |||
| smoothTimeMs = newSmoothingTimeMs; | |||
| }*/ | |||
| void VAStateVariableFilter::setIsActive(bool isActive) | |||
| { | |||
| active = isActive; | |||
| } | |||
| //============================================================================== | |||
| void VAStateVariableFilter::calcFilter() | |||
| { | |||
| if (active) { | |||
| // prewarp the cutoff (for bilinear-transform filters) | |||
| float wd = static_cast<float>(cutoffFreq * 2.0f * M_PI); | |||
| float T = 1.0f / (float)sampleRate; | |||
| float wa = (2.0f / T) * tan(wd * T / 2.0f); | |||
| // Calculate g (gain element of integrator) | |||
| gCoeff = wa * T / 2.0f; // Calculate g (gain element of integrator) | |||
| // Calculate Zavalishin's R from Q (referred to as damping parameter) | |||
| RCoeff = 1.0f / (2.0f * Q); | |||
| // Gain for BandShelving filter | |||
| KCoeff = shelfGain; | |||
| } | |||
| } | |||
| float VAStateVariableFilter::processAudioSample(const float& input, const int& channelIndex) | |||
| { | |||
| if (active) { | |||
| // Do the cutoff parameter smoothing per sample. | |||
| //cutoffFreq = cutoffLinSmooth.getNextValue(); | |||
| //calcFilter(); | |||
| // Filter processing: | |||
| const float HP = (input - (2.0f * RCoeff + gCoeff) * z1_A[channelIndex] - z2_A[channelIndex]) | |||
| / (1.0f + (2.0f * RCoeff * gCoeff) + gCoeff * gCoeff); | |||
| const float BP = HP * gCoeff + z1_A[channelIndex]; | |||
| const float LP = BP * gCoeff + z2_A[channelIndex]; | |||
| const float UBP = 2.0f * RCoeff * BP; | |||
| const float BShelf = input + UBP * KCoeff; | |||
| const float Notch = input - UBP; | |||
| const float AP = input - (4.0f * RCoeff * BP); | |||
| const float Peak = LP - HP; | |||
| z1_A[channelIndex] = gCoeff * HP + BP; // unit delay (state variable) | |||
| z2_A[channelIndex] = gCoeff * BP + LP; // unit delay (state variable) | |||
| // Selects which filter type this function will output. | |||
| switch (filterType) { | |||
| case SVFLowpass: | |||
| return LP; | |||
| break; | |||
| case SVFBandpass: | |||
| return BP; | |||
| break; | |||
| case SVFHighpass: | |||
| return HP; | |||
| break; | |||
| case SVFUnitGainBandpass: | |||
| return UBP; | |||
| break; | |||
| case SVFBandShelving: | |||
| return BShelf; | |||
| break; | |||
| case SVFNotch: | |||
| return Notch; | |||
| break; | |||
| case SVFAllpass: | |||
| return AP; | |||
| break; | |||
| case SVFPeak: | |||
| return Peak; | |||
| break; | |||
| default: | |||
| return 0.0f; | |||
| break; | |||
| } | |||
| } | |||
| else { // If not active, return input | |||
| return input; | |||
| } | |||
| } | |||
| void VAStateVariableFilter::processAudioBlock(float* const samples, const int& numSamples, | |||
| const int& channelIndex) | |||
| { | |||
| // Test if filter is active. If not, bypass it | |||
| if (active) { | |||
| // Loop through the sample block and process it | |||
| for (int i = 0; i < numSamples; ++i) { | |||
| // Do the cutoff parameter smoothing per sample. | |||
| //cutoffFreq = cutoffLinSmooth.getNextValue(); | |||
| //calcFilter(); // calculate the coefficients for the smoother | |||
| // Filter processing: | |||
| const float input = samples[i]; | |||
| const float HP = (input - (2.0f * RCoeff + gCoeff) * z1_A[channelIndex] - z2_A[channelIndex]) | |||
| / (1.0f + (2.0f * RCoeff * gCoeff) + gCoeff * gCoeff); | |||
| const float BP = HP * gCoeff + z1_A[channelIndex]; | |||
| const float LP = BP * gCoeff + z2_A[channelIndex]; | |||
| const float UBP = 2.0f * RCoeff * BP; | |||
| const float BShelf = input + UBP * KCoeff; | |||
| const float Notch = input - UBP; | |||
| const float AP = input - (4.0f * RCoeff * BP); | |||
| const float Peak = LP - HP; | |||
| z1_A[channelIndex] = gCoeff * HP + BP; // unit delay (state variable) | |||
| z2_A[channelIndex] = gCoeff * BP + LP; // unit delay (state variable) | |||
| // Selects which filter type this function will output. | |||
| switch (filterType) { | |||
| case SVFLowpass: | |||
| samples[i] = LP; | |||
| break; | |||
| case SVFBandpass: | |||
| samples[i] = BP; | |||
| break; | |||
| case SVFHighpass: | |||
| samples[i] = HP; | |||
| break; | |||
| case SVFUnitGainBandpass: | |||
| samples[i] = UBP; | |||
| break; | |||
| case SVFBandShelving: | |||
| samples[i] = BShelf; | |||
| break; | |||
| case SVFNotch: | |||
| samples[i] = Notch; | |||
| break; | |||
| case SVFAllpass: | |||
| samples[i] = AP; | |||
| break; | |||
| case SVFPeak: | |||
| samples[i] = Peak; | |||
| break; | |||
| default: | |||
| samples[i] = 0.0f; | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } // namespace rack_plugin_dBiz | |||
| //============================================================================== | |||
| @@ -1,221 +0,0 @@ | |||
| /* | |||
| ============================================================================== | |||
| VAStateVariableFilter.h | |||
| Created: 10 May 2015 2:41:43pm | |||
| Author: Jordan Harris | |||
| Notes: | |||
| From The Art of VA Filter Design, by Vadim Zavalishin | |||
| TPT State Variable Filter: | |||
| TPT -> Topology Preserving Transform | |||
| This filter is based off of the trapezoidal integrator, which produces | |||
| a bilinear transformation. This filter does the proper cutoff prewarping | |||
| needed for the TPT structure, as explained by Zavalishin. It also handles | |||
| the problem of delayless feedback loops that the trapezoidal integrators | |||
| introduce. | |||
| The SVF has two feedback paths sharing a common path segment. In order to | |||
| obtain a single feedback equation (rather than equation system), a signal | |||
| on the common path should be selected as the unknown variable. The HP filter | |||
| path is chosen as the zero-delay feedback equation's unknown in this filter. | |||
| Using the HP filter path, the rest of the filter's signals in the structure | |||
| can be defined. | |||
| ============================================================================== | |||
| */ | |||
| #ifndef VASTATEVARIABLEFILTER_H | |||
| #define VASTATEVARIABLEFILTER_H | |||
| #define _USE_MATH_DEFINES // to use M_PI | |||
| namespace rack_plugin_dBiz { | |||
| //============================================================================== | |||
| #include <cmath> | |||
| #include "DSPUtilities.h" | |||
| //============================================================================== | |||
| using std::pow; | |||
| using std::tan; | |||
| using std::sqrt; | |||
| //============================================================================== | |||
| /** The type of filter that the State Variable Filter will output. */ | |||
| enum SVFType { | |||
| SVFLowpass = 0, | |||
| SVFBandpass, | |||
| SVFHighpass, | |||
| SVFUnitGainBandpass, | |||
| SVFBandShelving, | |||
| SVFNotch, | |||
| SVFAllpass, | |||
| SVFPeak | |||
| }; | |||
| //============================================================================== | |||
| class VAStateVariableFilter { | |||
| public: | |||
| /** Create and initialize the filter with default values defined in constructor. */ | |||
| VAStateVariableFilter(); | |||
| //------------------------------------------------------------------------------ | |||
| ~VAStateVariableFilter(); | |||
| //------------------------------------------------------------------------------ | |||
| /** Sets the type of the filter that processAudioSample() or processAudioBlock() will | |||
| output. This filter can choose between 8 different types using the enums listed | |||
| below or the int given to each. | |||
| 0: SVFLowpass | |||
| 1: SVFBandpass | |||
| 2: SVFHighpass | |||
| 3: SVFUnitGainBandpass | |||
| 4: SVFBandShelving | |||
| 5: SVFNotch | |||
| 6: SVFAllpass | |||
| 7: SVFPeak | |||
| */ | |||
| void setFilterType(const int& newType); | |||
| //------------------------------------------------------------------------------ | |||
| /** Used for changing the filter's cutoff parameter logarithmically by | |||
| pitch (MIDI note #) | |||
| */ | |||
| void setCutoffPitch(const float& newCutoff); | |||
| //------------------------------------------------------------------------------ | |||
| /** Used for changing the filter's cutoff parameter linearly by frequency (Hz) */ | |||
| void setCutoffFreq(const float& newCutoff); | |||
| //------------------------------------------------------------------------------ | |||
| /** Used for setting the resonance amount. This is then converted to a Q | |||
| value, which is used by the filter. | |||
| Range: (0-1) | |||
| */ | |||
| void setResonance(const float& newResonance); | |||
| //------------------------------------------------------------------------------ | |||
| /** Used for setting the filter's Q amount. This is then converted to a | |||
| damping parameter called R, which is used in the original filter. | |||
| */ | |||
| void setQ(const float& newQ); | |||
| //------------------------------------------------------------------------------ | |||
| /** Sets the gain of the shelf for the BandShelving filter only. */ | |||
| void setShelfGain(const float& newGain); | |||
| //------------------------------------------------------------------------------ | |||
| /** Statically set the filters parameters. */ | |||
| void setFilter(const int& newType, const float& newCutoff, | |||
| const float& newResonance, const float& newShelfGain); | |||
| //------------------------------------------------------------------------------ | |||
| /** Set the sample rate used by the host. Needs to be used to accurately | |||
| calculate the coefficients of the filter from the cutoff. | |||
| Note: This is often used in AudioProcessor::prepareToPlay | |||
| */ | |||
| void setSampleRate(const float& newSampleRate); | |||
| //------------------------------------------------------------------------------ | |||
| /** Sets the time that it takes to interpolate between the previous value and | |||
| the current value. For this filter, the smoothing is only happening for | |||
| the filters cutoff frequency. | |||
| */ | |||
| //void setSmoothingTimeInMs(const float& newSmoothingTimeMs); | |||
| //------------------------------------------------------------------------------ | |||
| /** Sets whether the filter will process data or not. | |||
| - If (isActive = true) then the filter will process data | |||
| - If (isActive = false) then the filter will be bypassed | |||
| */ | |||
| void setIsActive(bool isActive); | |||
| //------------------------------------------------------------------------------ | |||
| /** Performs the actual processing for one sample of data, on 2 channels. | |||
| If 2 channels are needed (stereo), use channel index (channelIdx) to | |||
| specify which channel is being processed (i.e. 0 for left, 1 for right). | |||
| */ | |||
| float processAudioSample(const float& input, const int& channelIndex); | |||
| //------------------------------------------------------------------------------ | |||
| /** Performs the actual processing for a block of samples, on 2 channels. | |||
| If 2 channels are needed (stereo), use channel index (channelIdx) to | |||
| specify which channel is being processed (i.e. 0 for left, 1 for right). | |||
| Note: | |||
| This processes the information sent to the samples argument and | |||
| does it through a pointer. Therefore, no value needs to be | |||
| returned. | |||
| */ | |||
| void processAudioBlock(float* const samples, const int& numSamples, | |||
| const int& channelIndex); | |||
| //------------------------------------------------------------------------------ | |||
| double getCutoff(){ return cutoffFreq; } | |||
| double getFilterType(){ return filterType; } | |||
| double getQ(){ return Q; } | |||
| double getShelfGain(){ return shelfGain; } | |||
| private: | |||
| //============================================================================== | |||
| // Calculate the coefficients for the filter based on parameters. | |||
| void calcFilter(); | |||
| // Parameters: | |||
| int filterType; | |||
| float cutoffFreq; | |||
| float Q; | |||
| float shelfGain; | |||
| float sampleRate; | |||
| bool active = true; // is the filter processing or not | |||
| // Coefficients: | |||
| float gCoeff; // gain element | |||
| float RCoeff; // feedback damping element | |||
| float KCoeff; // shelf gain element | |||
| float z1_A[2], z2_A[2]; // state variables (z^-1) | |||
| // Parameter smoothers: | |||
| //LinearSmoothedValue cutoffLinSmooth; | |||
| //double smoothTimeMs; | |||
| }; | |||
| //============================================================================== | |||
| } // namespace rack_plugin_dBiz | |||
| #endif // VASTATEVARIABLEFILTER_H_INCLUDED | |||
| /* | |||
| ============================================================================== | |||
| ParameterSmoother.h | |||
| Created: 1 May 2015 12:43:46am | |||
| Author: Jordan Harris | |||
| ============================================================================== | |||
| */ | |||
| /* | |||
| Useful DSP utilities. For instance, calculating frequency from a given | |||
| pitch (MIDI) value, or vice versa. | |||
| */ | |||
| //============================================================================== | |||
| @@ -1,173 +0,0 @@ | |||
| //// code suggested by Hetrick///// | |||
| #include "dBiz.hpp" | |||
| #define NUM_PANELS 5 | |||
| struct dBizBlank : Module | |||
| { | |||
| enum ParamIds | |||
| { | |||
| NUM_PARAMS | |||
| }; | |||
| enum InputIds | |||
| { | |||
| NUM_INPUTS | |||
| }; | |||
| enum OutputIds | |||
| { | |||
| NUM_OUTPUTS | |||
| }; | |||
| enum LightIds | |||
| { | |||
| NUM_LIGHTS | |||
| }; | |||
| int panel = 0; | |||
| dBizBlank() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |||
| void step() override {} | |||
| void reset() override | |||
| { | |||
| panel = 0; | |||
| } | |||
| void randomize() override | |||
| { | |||
| panel = round(randomf() * (NUM_PANELS - 1.0f)); | |||
| } | |||
| json_t *toJson() override | |||
| { | |||
| json_t *rootJ = json_object(); | |||
| json_object_set_new(rootJ, "panel", json_integer(panel)); | |||
| return rootJ; | |||
| } | |||
| void fromJson(json_t *rootJ) override | |||
| { | |||
| json_t *panelJ = json_object_get(rootJ, "panel"); | |||
| if (panelJ) | |||
| panel = json_integer_value(panelJ); | |||
| } | |||
| }; | |||
| dBizBlankWidget::dBizBlankWidget() | |||
| { | |||
| auto *module = new dBizBlank(); | |||
| setModule(module); | |||
| box.size = Vec(6 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT); | |||
| panel1 = new SVGPanel(); | |||
| panel1->box.size = box.size; | |||
| panel1->setBackground(SVG::load(assetPlugin(plugin, "res/Blanks/dBizBlank3.svg"))); | |||
| addChild(panel1); | |||
| panel2 = new SVGPanel(); | |||
| panel2->box.size = box.size; | |||
| panel2->setBackground(SVG::load(assetPlugin(plugin, "res/Blanks/dBizBlank7.svg"))); | |||
| addChild(panel2); | |||
| panel3 = new SVGPanel(); | |||
| panel3->box.size = box.size; | |||
| panel3->setBackground(SVG::load(assetPlugin(plugin, "res/Blanks/dBizBlank5.svg"))); | |||
| addChild(panel3); | |||
| panel4 = new SVGPanel(); | |||
| panel4->box.size = box.size; | |||
| panel4->setBackground(SVG::load(assetPlugin(plugin, "res/Blanks/dBizBlank8.svg"))); | |||
| addChild(panel4); | |||
| panel5 = new SVGPanel(); | |||
| panel5->box.size = box.size; | |||
| panel5->setBackground(SVG::load(assetPlugin(plugin, "res/Blanks/dBizBlank1.svg"))); | |||
| addChild(panel5); | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 30, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 365))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 30, 365))); | |||
| } | |||
| void dBizBlankWidget::step() | |||
| { | |||
| dBizBlank *blank = dynamic_cast<dBizBlank*>(module); | |||
| assert(blank); | |||
| panel1->visible = (blank->panel == 0); | |||
| panel2->visible = (blank->panel == 1); | |||
| panel3->visible = (blank->panel == 2); | |||
| panel4->visible = (blank->panel == 3); | |||
| panel5->visible = (blank->panel == 4); | |||
| ModuleWidget::step(); | |||
| } | |||
| struct Panel1Item : MenuItem | |||
| { | |||
| dBizBlank *blank; | |||
| void onAction(EventAction &e) override { blank->panel = 0; } | |||
| void step() override { | |||
| rightText = (blank->panel == 0) ? "âś”" : ""; | |||
| MenuItem::step(); | |||
| } | |||
| }; | |||
| struct Panel2Item : MenuItem | |||
| { | |||
| dBizBlank *blank; | |||
| void onAction(EventAction &e) override { blank->panel = 1; } | |||
| void step() override { | |||
| rightText = (blank->panel == 1) ? "âś”" : ""; | |||
| MenuItem::step(); | |||
| } | |||
| }; | |||
| struct Panel3Item : MenuItem | |||
| { | |||
| dBizBlank *blank; | |||
| void onAction(EventAction &e) override { blank->panel = 2; } | |||
| void step() override { | |||
| rightText = (blank->panel == 2) ? "âś”" : ""; | |||
| MenuItem::step(); | |||
| } | |||
| }; | |||
| struct Panel4Item : MenuItem | |||
| { | |||
| dBizBlank *blank; | |||
| void onAction(EventAction &e) override { blank->panel = 3; } | |||
| void step() override { | |||
| rightText = (blank->panel == 3) ? "âś”" : ""; | |||
| MenuItem::step(); | |||
| } | |||
| }; | |||
| struct Panel5Item : MenuItem | |||
| { | |||
| dBizBlank *blank; | |||
| void onAction(EventAction &e) override { blank->panel = 4; } | |||
| void step() override { | |||
| rightText = (blank->panel == 4) ? "âś”" : ""; | |||
| MenuItem::step(); | |||
| } | |||
| }; | |||
| Menu *dBizBlankWidget::createContextMenu() | |||
| { | |||
| Menu *menu = ModuleWidget::createContextMenu(); | |||
| dBizBlank *blank = dynamic_cast<dBizBlank*>(module); | |||
| assert(blank); | |||
| menu->addChild(construct<MenuEntry>()); | |||
| menu->addChild(construct<MenuLabel>(&MenuEntry::text, "Panels Art")); | |||
| menu->addChild(construct<Panel1Item>(&MenuEntry::text, "DeepBlue", &Panel1Item::blank, blank)); | |||
| menu->addChild(construct<Panel2Item>(&MenuEntry::text, "Flat Volume", &Panel2Item::blank, blank)); | |||
| menu->addChild(construct<Panel3Item>(&MenuEntry::text, "Circles", &Panel3Item::blank, blank)); | |||
| menu->addChild(construct<Panel4Item>(&MenuEntry::text, "Dark Wave", &Panel4Item::blank, blank)); | |||
| menu->addChild(construct<Panel5Item>(&MenuEntry::text, "Clouds Pattern", &Panel5Item::blank, blank)); | |||
| return menu; | |||
| } | |||
| @@ -21,17 +21,21 @@ struct PerfMixer : Module { | |||
| AUX_S1_PARAM = AUX_R2_PARAM + 8, | |||
| AUX_S2_PARAM = AUX_S1_PARAM + 8, | |||
| VOL_PARAM = AUX_S2_PARAM + 8, | |||
| AUX_1_PARAM = VOL_PARAM + 8, | |||
| PAN_PARAM = VOL_PARAM + 8, | |||
| AUX_1_PARAM = PAN_PARAM + 8, | |||
| AUX_2_PARAM = AUX_1_PARAM + 8, | |||
| MUTE_PARAM = AUX_2_PARAM + 8, | |||
| NUM_PARAMS = MUTE_PARAM + 8 | |||
| }; | |||
| enum InputIds | |||
| { | |||
| MIX_IN_L_INPUT, | |||
| MIX_IN_R_INPUT, | |||
| CH_L_INPUT = 8, | |||
| CH_R_INPUT = CH_L_INPUT + 8, | |||
| CH_VOL_INPUT = CH_R_INPUT + 8, | |||
| CH_MUTE_INPUT = CH_VOL_INPUT + 8, | |||
| CH_PAN_INPUT = CH_VOL_INPUT + 8, | |||
| CH_MUTE_INPUT = CH_PAN_INPUT + 8, | |||
| AUX_1_INPUT = CH_MUTE_INPUT + 8, | |||
| AUX_2_INPUT = CH_MUTE_INPUT + 8, | |||
| RETURN_1_L_INPUT = CH_MUTE_INPUT + 16, | |||
| @@ -53,7 +57,9 @@ struct PerfMixer : Module { | |||
| enum LightIds | |||
| { | |||
| MUTE_LIGHT, | |||
| PAN_L_LIGHT, | |||
| PAN_R_LIGHT = PAN_L_LIGHT + 8, | |||
| MUTE_LIGHT = PAN_R_LIGHT + 8, | |||
| METERL_LIGHT=MUTE_LIGHT+8, | |||
| METERR_LIGHT=METERL_LIGHT+(12*8), | |||
| NUM_LIGHTS=METERR_LIGHT+(12*8) | |||
| @@ -73,6 +79,9 @@ struct PerfMixer : Module { | |||
| float left_sum = 0.0; | |||
| float right_sum = 0.0; | |||
| float mix_in_l =0.0f; | |||
| float mix_in_r = 0.0f; | |||
| float send_1_L_sum = 0.0; | |||
| float send_1_R_sum = 0.0; | |||
| float send_2_R_sum = 0.0; | |||
| @@ -125,7 +134,19 @@ void PerfMixer::step() | |||
| VUMeter vuBarsL[8]={}; | |||
| VUMeter vuBarsR[8] = {}; | |||
| // mute triggers | |||
| mix_in_l=inputs[MIX_IN_L_INPUT].value; | |||
| mix_in_r=inputs[MIX_IN_R_INPUT].value; | |||
| float pan_cv[8]={}; | |||
| float pan_pos[8]={}; | |||
| for (int i = 0; i < 8; i++) | |||
| { | |||
| } | |||
| // mute triggers | |||
| for (int i = 0 ; i < 8; i++) | |||
| { | |||
| @@ -139,43 +160,63 @@ void PerfMixer::step() | |||
| for (int i = 0 ; i < 8 ; i++) | |||
| { | |||
| ch_l_ins[i] = inputs[CH_L_INPUT + i ].value * params[VOL_PARAM + i].value * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| ch_r_ins[i] = inputs[CH_R_INPUT + i ].value * params[VOL_PARAM + i].value * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| { | |||
| pan_cv[i] = inputs[CH_PAN_INPUT + i].value / 5; | |||
| pan_pos[i] = pan_cv[i] + params[PAN_PARAM + i].value; | |||
| if (pan_pos[i] < 0) | |||
| pan_pos[i] = 0; | |||
| if (pan_pos[i] > 1) | |||
| pan_pos[i] = 1; | |||
| if (!mute_states[i] || inputs[CH_MUTE_INPUT + i].value > 0.0 ) | |||
| { | |||
| ch_l_ins[i] = 0.0; | |||
| ch_r_ins[i] = 0.0; | |||
| lights[MUTE_LIGHT + i].value = 0.0; | |||
| } | |||
| channel_outs_l[i] = ch_l_ins[i] * 2; | |||
| channel_outs_r[i] = ch_r_ins[i] * 2; | |||
| lights[PAN_L_LIGHT+i].value=1-pan_pos[i]; | |||
| lights[PAN_R_LIGHT+i].value=pan_pos[i]; | |||
| ch_l_ins[i] = inputs[CH_L_INPUT + i].value * params[VOL_PARAM + i].value * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| ch_r_ins[i] = inputs[CH_R_INPUT + i].value * params[VOL_PARAM + i].value * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| if (!mute_states[i] || inputs[CH_MUTE_INPUT + i].value > 0.0) | |||
| { | |||
| ch_l_ins[i] = 0.0; | |||
| ch_r_ins[i] = 0.0; | |||
| lights[MUTE_LIGHT + i].value = 0.0; | |||
| } | |||
| if(!inputs[CH_R_INPUT+i].value) | |||
| { | |||
| channel_outs_l[i] = ch_l_ins[i] * (1 - pan_pos[i]) * 3; | |||
| channel_outs_r[i] = ch_l_ins[i] * pan_pos[i] * 3; | |||
| } | |||
| else | |||
| { | |||
| channel_outs_l[i] = ch_l_ins[i] * 2; | |||
| channel_outs_r[i] = ch_r_ins[i] * 2; | |||
| } | |||
| channel_s1_L[i] = ch_l_ins[i] * params[AUX_1_PARAM + i].value * clamp(inputs[AUX_1_INPUT + i].normalize(5.0f)/5.0f,1.0f,1.0f) * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| channel_s2_L[i] = ch_l_ins[i] * params[AUX_2_PARAM + i].value * clamp(inputs[AUX_2_INPUT + i].normalize(5.0f)/5.0f,1.0f,1.0f) * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| channel_s1_L[i] = channel_outs_l[i] * params[AUX_1_PARAM + i].value * clamp(inputs[AUX_1_INPUT + i].normalize(5.0f) / 5.0f, 0.0f, 1.0f) * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| channel_s2_L[i] = channel_outs_l[i] * params[AUX_2_PARAM + i].value * clamp(inputs[AUX_2_INPUT + i].normalize(5.0f)/5.0f,0.0f,1.0f) * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| channel_s1_R[i] = ch_r_ins[i] * params[AUX_1_PARAM + i].value * clamp(inputs[AUX_1_INPUT + i].normalize(5.0f)/5.0f,1.0f,1.0f) * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| channel_s2_R[i] = ch_r_ins[i] * params[AUX_2_PARAM + i].value * clamp(inputs[AUX_2_INPUT + i].normalize(5.0f)/5.0f,1.0f,1.0f) * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| channel_s1_R[i] = channel_outs_r[i] * params[AUX_1_PARAM + i].value * clamp(inputs[AUX_1_INPUT + i].normalize(5.0f)/5.0f,0.0f,1.0f) * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| channel_s2_R[i] = channel_outs_r[i] * params[AUX_2_PARAM + i].value * clamp(inputs[AUX_2_INPUT + i].normalize(5.0f)/5.0f,0.0f,1.0f) * clamp(inputs[CH_VOL_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| vuBarsL[i].dBInterval = 3; | |||
| vuBarsR[i].dBInterval = 3; | |||
| vuBarsL[i].setValue(ch_l_ins[i] / 10.0); | |||
| vuBarsR[i].setValue(ch_r_ins[i] / 10.0); | |||
| vuBarsL[i].setValue(channel_outs_l[i] / 10.0); | |||
| vuBarsR[i].setValue(channel_outs_r[i] / 10.0); | |||
| for (int l = 0; l < 12; l++) | |||
| { | |||
| lights[METERL_LIGHT + l+(i*11)].setBrightnessSmooth(vuBarsL[i].getBrightness(l)); | |||
| lights[METERR_LIGHT + l+(i*11)].setBrightnessSmooth(vuBarsR[i].getBrightness(l)); | |||
| } | |||
| send_1_L_sum += channel_s1_L[i]; | |||
| send_1_R_sum += channel_s1_R[i]; | |||
| send_2_L_sum += channel_s2_L[i]; | |||
| send_2_R_sum += channel_s2_R[i]; | |||
| left_sum += channel_outs_l[i]; | |||
| right_sum += channel_outs_r[i]; | |||
| lights[METERL_LIGHT + l + (i * 11)].setBrightnessSmooth(vuBarsL[i].getBrightness(l)); | |||
| lights[METERR_LIGHT + l + (i * 11)].setBrightnessSmooth(vuBarsR[i].getBrightness(l)); | |||
| } | |||
| send_1_L_sum += channel_s1_L[i]; | |||
| send_1_R_sum += channel_s1_R[i]; | |||
| send_2_L_sum += channel_s2_L[i]; | |||
| send_2_R_sum += channel_s2_R[i]; | |||
| left_sum += channel_outs_l[i]; | |||
| right_sum += channel_outs_r[i]; | |||
| } | |||
| @@ -197,8 +238,8 @@ void PerfMixer::step() | |||
| float send_2_L_mix = (send_2_L_sum) * params[AUX_S2_PARAM].value; | |||
| float send_2_R_mix = (send_2_R_sum) * params[AUX_S2_PARAM].value; | |||
| outputs[MIX_OUTPUT_L].value = mix_l; | |||
| outputs[MIX_OUTPUT_R].value = mix_r; | |||
| outputs[MIX_OUTPUT_L].value = mix_l+mix_in_l; | |||
| outputs[MIX_OUTPUT_R].value = mix_r+mix_in_r; | |||
| outputs[SEND_1_L_OUTPUT].value = 3 * send_1_L_mix; | |||
| @@ -214,7 +255,7 @@ struct MuteLight : BASE | |||
| { | |||
| MuteLight() | |||
| { | |||
| this->box.size = Vec(10.0, 10.0); | |||
| this->box.size = Vec(15.0, 15.0); | |||
| } | |||
| }; | |||
| @@ -223,8 +264,8 @@ struct MeterLight : BASE | |||
| { | |||
| MeterLight() | |||
| { | |||
| this->box.size = Vec(5, 5); | |||
| this->bgColor = nvgRGBAf(0.0, 0.0, 0.0, 0.0); | |||
| this->box.size = Vec(4, 4); | |||
| this->bgColor = nvgRGBAf(0.0, 0.0, 0.0, 0.1); | |||
| } | |||
| }; | |||
| @@ -261,48 +302,63 @@ PerfMixerWidget(PerfMixer *module) : ModuleWidget(module) | |||
| // channel strips | |||
| for (int i = 0 ; i < 8 ; i++) | |||
| { | |||
| addParam(ParamWidget::create<MicroBlu>(Vec(column_1+column_spacing*i,75 ), module, PerfMixer::AUX_1_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<MicroBlu>(Vec(column_1+column_spacing*i,105 ), module, PerfMixer::AUX_2_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(column_1 + column_spacing * i, 15), Port::INPUT, module, PerfMixer::AUX_1_INPUT + i)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(column_1 + column_spacing * i, 40), Port::INPUT, module, PerfMixer::AUX_2_INPUT + i)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(lb , top + row_in*i ), Port::INPUT, module, PerfMixer::CH_L_INPUT + i)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(lb + 25, top + row_in*i), Port::INPUT, module, PerfMixer::CH_R_INPUT + i)); | |||
| addInput(Port::create<PJ301MLPort>(Vec(5,7), Port::INPUT, module, PerfMixer::MIX_IN_L_INPUT)); | |||
| addInput(Port::create<PJ301MRPort>(Vec(30,7), Port::INPUT, module, PerfMixer::MIX_IN_R_INPUT)); | |||
| addParam(ParamWidget::create<SlidePot2>(Vec(column_1 + column_spacing * i, top_row + row_spacing * 2 - 30 + top), module, PerfMixer::VOL_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<MicroBlu>(Vec(column_1 + column_spacing * i, 75), module, PerfMixer::AUX_1_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<MicroBlu>(Vec(column_1 + column_spacing * i, 105), module, PerfMixer::AUX_2_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(column_1 + column_spacing * i - 5, top_row + row_spacing * 6 - 20 + top), Port::INPUT, module, PerfMixer::CH_VOL_INPUT + i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(column_1 + column_spacing * i, 15), Port::INPUT, module, PerfMixer::AUX_1_INPUT + i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(column_1 + column_spacing * i, 40), Port::INPUT, module, PerfMixer::AUX_2_INPUT + i)); | |||
| addParam(ParamWidget::create<LEDButton>(Vec(column_1 + column_spacing * i, top_row + row_spacing * 7 + top), module, PerfMixer::MUTE_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<MuteLight<GreenLight>>(Vec(column_1 + column_spacing * i + 4, top_row + row_spacing * 7 + 4 + top), module, PerfMixer::MUTE_LIGHT + i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(column_1 + column_spacing * i, top_row + row_spacing * 8 + top), Port::INPUT, module, PerfMixer::CH_MUTE_INPUT + i)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(lb, top + row_in * i), Port::INPUT, module, PerfMixer::CH_L_INPUT + i)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(lb + 25, top + row_in * i), Port::INPUT, module, PerfMixer::CH_R_INPUT + i)); | |||
| //addChild(GrayModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 +19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top), module, PerfMixer::METER_LIGHT + 0+(11*i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 +19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top +9), module, PerfMixer::METERL_LIGHT + 1+(11*i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 +19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top+ 9 * 2), module, PerfMixer::METERL_LIGHT + 2+(11*i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1+19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top+ 9 * 3), module, PerfMixer::METERL_LIGHT + 3+(11*i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1+19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top +9 * 4), module, PerfMixer::METERL_LIGHT + 4 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1+19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top +9 * 5), module, PerfMixer::METERL_LIGHT + 5 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1+19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top +9 * 6), module, PerfMixer::METERL_LIGHT + 6 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1+19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top +9 * 7), module, PerfMixer::METERL_LIGHT + 7 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1+19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top +9 * 8), module, PerfMixer::METERL_LIGHT + 8 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 +19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top+ 9 * 9), module, PerfMixer::METERL_LIGHT + 9+(11*i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 +19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top+ 9 * 10), module, PerfMixer::METERL_LIGHT + 10+(11*i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 +19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top+ 9 * 11), module, PerfMixer::METERL_LIGHT + 11+(11*i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top +9 ), module, PerfMixer::METERR_LIGHT + 1 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 2), module, PerfMixer::METERR_LIGHT + 2 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 3), module, PerfMixer::METERR_LIGHT + 3 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 4), module, PerfMixer::METERR_LIGHT + 4 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 5), module, PerfMixer::METERR_LIGHT + 5 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 6), module, PerfMixer::METERR_LIGHT + 6 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 7), module, PerfMixer::METERR_LIGHT + 7 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 8), module, PerfMixer::METERR_LIGHT + 8 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 9), module, PerfMixer::METERR_LIGHT + 9 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 10), module, PerfMixer::METERR_LIGHT + 10 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 24 + column_spacing * i, top_row + row_spacing * 2 - 30 + top + 9 * 11), module, PerfMixer::METERR_LIGHT + 11 + (11 * i))); | |||
| addParam(ParamWidget::create<LEDSliderBlue>(Vec(column_1 + column_spacing * i-5, top_row + row_spacing * 2 - 20 + top), module, PerfMixer::VOL_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(column_1 + column_spacing * i - 1, top_row + row_spacing * 6 - 45 + top), Port::INPUT, module, PerfMixer::CH_VOL_INPUT + i)); | |||
| ///////////////////////////////////////////////////// | |||
| addChild(ModuleLightWidget::create<MeterLight<OrangeLight>>(Vec(column_1 + column_spacing * i + 1 , top_row + row_spacing * 6 + top-15),module,PerfMixer::PAN_L_LIGHT+i)); | |||
| addChild(ModuleLightWidget::create<MeterLight<OrangeLight>>(Vec(column_1 + column_spacing * i + 20 , top_row + row_spacing * 6 + top-15),module,PerfMixer::PAN_R_LIGHT+i)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(column_1 + column_spacing * i +3, top_row + row_spacing * 6 + top-10), module, PerfMixer::PAN_PARAM + i, 0.0, 1.0, 0.5)); | |||
| addInput(Port::create<PJ301MOrPort>(Vec(column_1 + column_spacing * i - 1, top_row + row_spacing * 6 + top+10), Port::INPUT, module, PerfMixer::CH_PAN_INPUT + i)); | |||
| //////////////////////////////////////////////////////// | |||
| addParam(ParamWidget::create<LEDButton>(Vec(column_1 + column_spacing * i + 3 , top_row + row_spacing * 7+ 10.5 + top+3), module, PerfMixer::MUTE_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<MuteLight<BlueLight>>(Vec(column_1 + column_spacing * i + 4.5 , top_row + row_spacing * 7 +12 + top+3), module, PerfMixer::MUTE_LIGHT + i)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(column_1 + column_spacing * i-1, top_row + row_spacing * 8 + top+5), Port::INPUT, module, PerfMixer::CH_MUTE_INPUT + i)); | |||
| //addChild(GrayModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 +19 + column_spacing * i, top_row + row_spacing * 2 - 30 + top), module, PerfMixer::METER_LIGHT + 0+(11*i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5), module, PerfMixer::METERL_LIGHT + 1 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 2), module, PerfMixer::METERL_LIGHT + 2 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 3), module, PerfMixer::METERL_LIGHT + 3 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 4), module, PerfMixer::METERL_LIGHT + 4 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 5), module, PerfMixer::METERL_LIGHT + 5 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 6), module, PerfMixer::METERL_LIGHT + 6 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 7), module, PerfMixer::METERL_LIGHT + 7 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 8), module, PerfMixer::METERL_LIGHT + 8 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 9), module, PerfMixer::METERL_LIGHT + 9 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 10), module, PerfMixer::METERL_LIGHT + 10 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 19 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 11), module, PerfMixer::METERL_LIGHT + 11 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5), module, PerfMixer::METERR_LIGHT + 1 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<RedLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 2), module, PerfMixer::METERR_LIGHT + 2 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 3), module, PerfMixer::METERR_LIGHT + 3 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 4), module, PerfMixer::METERR_LIGHT + 4 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 5), module, PerfMixer::METERR_LIGHT + 5 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 6), module, PerfMixer::METERR_LIGHT + 6 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<BlueLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 7), module, PerfMixer::METERR_LIGHT + 7 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 8), module, PerfMixer::METERR_LIGHT + 8 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 9), module, PerfMixer::METERR_LIGHT + 9 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 10), module, PerfMixer::METERR_LIGHT + 10 + (11 * i))); | |||
| addChild(ModuleLightWidget::create<MeterLight<GreenLight>>(Vec(column_1 + 24 + column_spacing * i-5, top_row + row_spacing * 2 - 27 + top + 7.5 * 11), module, PerfMixer::METERR_LIGHT + 11 + (11 * i))); | |||
| } | |||
| @@ -203,44 +203,44 @@ RemixWidget(Remix *module) : ModuleWidget(module) | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(mid-15, midy+10+knob+10), module, Remix::CV_WIDTH_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(mid - 20, 322.5), module, Remix::SLOPE_PARAM, 0.0, 5.0, 0.0)); | |||
| addInput(Port::create<PJ301MPort>(Vec(mid +10 , 320), Port::INPUT, module, Remix::SLOPE_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(mid +10 , 320), Port::INPUT, module, Remix::SLOPE_INPUT)); | |||
| addParam(ParamWidget::create<RoundRed>(Vec(box.size.x - board - 32.5, midy+10), module, Remix::LEVEL_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<RoundWhy>(Vec(box.size.x - board - 32.5, midy+10+knob+10), module, Remix::CV_LEVEL_PARAM, 0.0, 1.0, 0.0)); | |||
| addOutput(Port::create<PJ301MPort>(Vec(board + 7.5, 20), Port::OUTPUT, module, Remix::A_OUTPUT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(board+7.5, 320), Port::INPUT, module, Remix::SCAN_INPUT)); | |||
| addOutput(Port::create<PJ301MIPort>(Vec(board + 7.5, 20), Port::OUTPUT, module, Remix::A_OUTPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(board+7.5, 320), Port::INPUT, module, Remix::SCAN_INPUT)); | |||
| addOutput(Port::create<PJ301MPort>(Vec(mid-15 + 7.5, 20), Port::OUTPUT, module, Remix::B_OUTPUT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(mid-15+ 7.5, 290), Port::INPUT, module, Remix::WIDTH_INPUT)); | |||
| addOutput(Port::create<PJ301MIPort>(Vec(mid-15 + 7.5, 20), Port::OUTPUT, module, Remix::B_OUTPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(mid-15+ 7.5, 290), Port::INPUT, module, Remix::WIDTH_INPUT)); | |||
| addOutput(Port::create<PJ301MPort>(Vec(box.size.x-knob-board + 7.5, 20), Port::OUTPUT, module, Remix::C_OUTPUT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(box.size.x-knob-board + 7.5, 320), Port::INPUT, module, Remix::LEVEL_INPUT)); | |||
| addOutput(Port::create<PJ301MIPort>(Vec(box.size.x-knob-board + 7.5, 20), Port::OUTPUT, module, Remix::C_OUTPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(box.size.x-knob-board + 7.5, 320), Port::INPUT, module, Remix::LEVEL_INPUT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(board +5+ jack*0, 70), Port::INPUT, module, Remix::CH1_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(board +5+ jack*0, 70), Port::INPUT, module, Remix::CH1_INPUT)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(board +10+ jack*0,130),module,Remix::CH1_LEVEL_PARAM,0.0,1.0,0.0)); | |||
| addChild(GrayModuleLightWidget::create<MediumLight<RedLight>>(Vec(board+30+light*0,midy),module,Remix::CH1_LIGHT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(board + 5 + jack * 1, 70), Port::INPUT, module, Remix::CH2_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(board + 5 + jack * 1, 70), Port::INPUT, module, Remix::CH2_INPUT)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(board + 10 + jack * 1, 130), module, Remix::CH2_LEVEL_PARAM, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<MediumLight<RedLight>>(Vec(board + 30 + light * 1, midy), module, Remix::CH2_LIGHT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(board + 5 + jack * 2, 70), Port::INPUT, module, Remix::CH3_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(board + 5 + jack * 2, 70), Port::INPUT, module, Remix::CH3_INPUT)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(board + 10 + jack * 2, 130), module, Remix::CH3_LEVEL_PARAM, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<MediumLight<RedLight>>(Vec(board + 30 + light * 2, midy), module, Remix::CH3_LIGHT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(board +10+ jack*3+7.5, 70), Port::INPUT, module, Remix::CH4_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(board +10+ jack*3+7.5, 70), Port::INPUT, module, Remix::CH4_INPUT)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(board +10+ jack*3+9,130),module,Remix::CH4_LEVEL_PARAM,0.0,1.0,0.0)); | |||
| addChild(GrayModuleLightWidget::create<MediumLight<RedLight>>(Vec(board+60+light*3,midy),module,Remix::CH4_LIGHT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(board + 10 + jack * 4 + 7.5, 70), Port::INPUT, module, Remix::CH5_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(board + 10 + jack * 4 + 7.5, 70), Port::INPUT, module, Remix::CH5_INPUT)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(board + 10 + jack * 4 + 9, 130), module, Remix::CH5_LEVEL_PARAM, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<MediumLight<RedLight>>(Vec(board + 60 + light * 4, midy), module, Remix::CH5_LIGHT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(board + 10 + jack * 5 + 7.5, 70), Port::INPUT, module, Remix::CH6_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(board + 10 + jack * 5 + 7.5, 70), Port::INPUT, module, Remix::CH6_INPUT)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(board + 10 + jack * 5 +9, 130), module, Remix::CH6_LEVEL_PARAM , 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<MediumLight<RedLight>>(Vec(board + 60 + light * 5, midy), module, Remix::CH6_LIGHT)); | |||
| @@ -0,0 +1,402 @@ | |||
| #include "dBiz.hpp" | |||
| #include "dsp/digital.hpp" | |||
| namespace rack_plugin_dBiz { | |||
| struct SmiX : Module { | |||
| enum ParamIds | |||
| { | |||
| FALL_RANGE_PARAM, | |||
| CLOCK_PARAM, | |||
| OUT_A_ATT_PARAM, | |||
| OUT_C_ATT_PARAM, | |||
| MODE_BUTTON_PARAM, | |||
| DIR_BUTTON_PARAM, | |||
| MIX_SEL_PARAM, | |||
| VOL_PARAM = MIX_SEL_PARAM + 8, | |||
| NUM_PARAMS = VOL_PARAM + 8 | |||
| }; | |||
| enum InputIds | |||
| { | |||
| CLOCK_INPUT, | |||
| EXT_CLOCK_INPUT, | |||
| RESET_INPUT, | |||
| DIR_INPUT, | |||
| MODE_INPUT, | |||
| CV_INPUT, | |||
| CH_INPUT = CV_INPUT + 8, | |||
| NUM_INPUTS = CH_INPUT + 8 | |||
| }; | |||
| enum OutputIds { | |||
| A_OUTPUT, | |||
| B_OUTPUT, | |||
| C_OUTPUT, | |||
| NUM_OUTPUTS | |||
| }; | |||
| enum LightIds | |||
| { | |||
| CLOCK_LIGHT, | |||
| CH_LIGHTS, | |||
| MODE_LIGHTS = CH_LIGHTS + 8, | |||
| DIR_LIGHTS = MODE_LIGHTS + 3, | |||
| NUM_LIGHTS = DIR_LIGHTS + 4, | |||
| }; | |||
| float ins[8] = {}; | |||
| float outs[3] = {}; | |||
| int mode = 0; | |||
| int direction =0; | |||
| bool dir=true; | |||
| bool running = true; | |||
| bool triggerActive = false; | |||
| // for external clock | |||
| SchmittTrigger clockTrigger; | |||
| // For buttons | |||
| SchmittTrigger resetTrigger; | |||
| //SchmittTrigger gateTriggers[8]; | |||
| float phase = 0.0f; | |||
| int index = 0; | |||
| int stepIndex = index + 1; | |||
| bool nextStep = false; | |||
| bool gateState[8] = {}; | |||
| float resetLight = 0.0f; | |||
| float stepLights[8] = {}; | |||
| const float lightLambda = 0.075f; | |||
| SchmittTrigger mode_button_trigger; | |||
| SchmittTrigger dir_button_trigger; | |||
| // bool decaying = false; | |||
| // float env = 0.0f; | |||
| SmiX() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS,NUM_LIGHTS) { | |||
| } | |||
| void step() override; | |||
| int numSteps; | |||
| json_t *toJson() override | |||
| { | |||
| json_t *rootJ = json_object(); | |||
| // running | |||
| json_object_set_new(rootJ, "running", json_boolean(running)); | |||
| // save mode | |||
| json_t *modeJ = json_integer((int)mode); | |||
| json_object_set_new(rootJ, "mode", modeJ); | |||
| json_t *directionJ = json_integer((int)direction); | |||
| json_object_set_new(rootJ, "direction", directionJ); | |||
| return rootJ; | |||
| } | |||
| void fromJson(json_t *rootJ) override | |||
| { | |||
| // running | |||
| json_t *runningJ = json_object_get(rootJ, "running"); | |||
| if (runningJ) | |||
| running = json_is_true(runningJ); | |||
| json_t *modeJ = json_object_get(rootJ, "mode"); | |||
| if (modeJ) | |||
| { | |||
| mode = json_integer_value(modeJ); | |||
| } | |||
| json_t *directionJ = json_object_get(rootJ, "dir"); | |||
| if (directionJ) | |||
| { | |||
| direction = json_integer_value(directionJ); | |||
| } | |||
| } | |||
| void reset() override | |||
| { | |||
| for (int i = 0; i < 8; i++) | |||
| { | |||
| gateState[i] = true; | |||
| } | |||
| } | |||
| }; | |||
| void SmiX::step() { | |||
| float lambda = 0.0f; | |||
| switch ((int)params[FALL_RANGE_PARAM].value) | |||
| { | |||
| case 0: | |||
| lambda = 0.005; | |||
| break; | |||
| case 1: | |||
| lambda = 0.01; | |||
| break; | |||
| default: | |||
| lambda = 0.03; | |||
| break; | |||
| } | |||
| if(inputs[MODE_INPUT].active){ | |||
| mode = clamp(inputs[MODE_INPUT].value, 0.0f,2.0f); | |||
| for (int i = 0; i < 3; i++) | |||
| { | |||
| lights[MODE_LIGHTS + i].value = 0.0; | |||
| } | |||
| } | |||
| if (inputs[DIR_INPUT].active) | |||
| { | |||
| direction = clamp(inputs[DIR_INPUT].value, 0.0f, 3.0f); | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| lights[DIR_LIGHTS + i].value = 0.0; | |||
| } | |||
| } | |||
| if (mode_button_trigger.process(params[MODE_BUTTON_PARAM].value)) | |||
| { | |||
| mode++; | |||
| if (mode > 2) | |||
| mode = 0; | |||
| for (int i = 0; i < 3; i++) | |||
| { | |||
| lights[MODE_LIGHTS + i].value = 0.0; | |||
| } | |||
| } | |||
| lights[MODE_LIGHTS + mode].value = 1.0; | |||
| if (mode == 1 || mode == 2) | |||
| { | |||
| if (dir_button_trigger.process(params[DIR_BUTTON_PARAM].value)) | |||
| { | |||
| direction++; | |||
| if (direction > 3) | |||
| direction = 0; | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| lights[DIR_LIGHTS + i].value = 0.0; | |||
| } | |||
| } | |||
| lights[DIR_LIGHTS + direction].value = 1.0; | |||
| } | |||
| ///////////////////////////////////SEQ//////////////////////////////////////////////////// | |||
| numSteps = 8; | |||
| stepIndex = index + 1; | |||
| // Run | |||
| if (mode == 1 || mode == 2) | |||
| { | |||
| running = !running; | |||
| } | |||
| else running = false; | |||
| nextStep = false; | |||
| if (running) | |||
| { | |||
| if (inputs[EXT_CLOCK_INPUT].active) | |||
| { | |||
| // External clock | |||
| if (clockTrigger.process(inputs[EXT_CLOCK_INPUT].value)) | |||
| { | |||
| phase = 0.0f; | |||
| nextStep = true; | |||
| } | |||
| } | |||
| else | |||
| { | |||
| // Internal clock | |||
| float clockTime = powf(2.0, params[CLOCK_PARAM].value + inputs[CLOCK_INPUT].value); | |||
| phase += clockTime / engineGetSampleRate(); | |||
| if (phase >= 1.0f) | |||
| { | |||
| phase -= 1.0f; | |||
| nextStep = true; | |||
| } | |||
| } | |||
| } | |||
| // Reset | |||
| if (resetTrigger.process(inputs[RESET_INPUT].value)) | |||
| { | |||
| phase = 0.0f; | |||
| index = 8; | |||
| nextStep = true; | |||
| } | |||
| if (nextStep) | |||
| { | |||
| // Advance step | |||
| int numSteps = 8; | |||
| switch ((int)direction) | |||
| { | |||
| case 0: | |||
| index += 1; | |||
| if (index >= numSteps) | |||
| { | |||
| index = 0; | |||
| } | |||
| break; | |||
| case 1: | |||
| index -= 1; | |||
| if (index < 0) | |||
| { | |||
| index = 7; | |||
| } | |||
| break; | |||
| case 2: | |||
| if(dir) | |||
| { | |||
| index+=1; | |||
| if (index >= numSteps-1) | |||
| dir = false; | |||
| } | |||
| else{ | |||
| index -= 1; | |||
| if (index < 1) | |||
| dir=true; | |||
| } | |||
| break; | |||
| default: | |||
| index = randomUniform() * 8.0f; | |||
| break; | |||
| } | |||
| stepLights[index] = 1.0f; | |||
| } | |||
| ////////////////////////////////SEQ///////////////// | |||
| float a_out = 0.0f; | |||
| float b_out = 0.0f; | |||
| float c_out = 0.0f; | |||
| float sum = 0.0f; | |||
| for (int i = 0; i < 8; i++) | |||
| { | |||
| stepLights[i] -= stepLights[i] / lambda*lightLambda / engineGetSampleRate(); | |||
| ////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| if (mode == 1 ){ | |||
| lights[CH_LIGHTS + i].value = stepLights[i] + clamp(params[VOL_PARAM + i].value, 0.0f, 1.0f) * clamp(inputs[CV_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| ins[i] = (inputs[CH_INPUT + i].value * params[VOL_PARAM + i].value / 2.0f) * clamp(inputs[CV_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f) + (inputs[CH_INPUT + i].value * params[VOL_PARAM + i].value * stepLights[i]*2.0f); | |||
| } | |||
| else | |||
| if ( mode == 2){ | |||
| lights[CH_LIGHTS + i].value = stepLights[i] * clamp(inputs[CV_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| ins[i] = 2.0f*inputs[CH_INPUT + i].value * params[VOL_PARAM + i].value * clamp(inputs[CV_INPUT + i].normalize(10.0f) / 10.0f, 0.0f, 1.0f) * stepLights[i]; | |||
| } | |||
| else | |||
| { | |||
| lights[CH_LIGHTS + i].value = params[VOL_PARAM + i].value* clamp(inputs[CV_INPUT+i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| ins[i] = inputs[CH_INPUT + i].value * params[VOL_PARAM + i].value * clamp(inputs[CV_INPUT+i].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| } | |||
| switch ((int)params[MIX_SEL_PARAM + i].value) | |||
| { | |||
| case 0: | |||
| a_out += ins[i] / 1.3f; | |||
| break; | |||
| case 1: | |||
| b_out += ins[i] / 1.3f; | |||
| break; | |||
| default: | |||
| c_out += ins[i] / 1.3f; | |||
| break; | |||
| } | |||
| sum+=ins[i]/ 1.3f; | |||
| } | |||
| outputs[A_OUTPUT].value = a_out * params[OUT_A_ATT_PARAM].value; | |||
| outputs[B_OUTPUT].value = b_out; | |||
| outputs[C_OUTPUT].value = c_out * params[OUT_C_ATT_PARAM].value; | |||
| /////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| //////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| } | |||
| struct SmiXWidget : ModuleWidget | |||
| { | |||
| SmiXWidget(SmiX *module) : ModuleWidget(module) | |||
| { | |||
| box.size = Vec(15*16, 380); | |||
| { | |||
| SVGPanel *panel = new SVGPanel(); | |||
| panel->box.size = box.size; | |||
| panel->setBackground(SVG::load(assetPlugin(plugin, "res/SmiX.svg"))); | |||
| addChild(panel); | |||
| } | |||
| addParam(ParamWidget::create<Trimpot>(mm2px(Vec(1.003 + 6.6 * 10.10, 55)), module, SmiX::CLOCK_PARAM, -2.0f, 6.0f, 2.0f)); | |||
| addParam(ParamWidget::create<MCKSSS>(mm2px(Vec(1.003 + 6.7 * 10.10, 62)), module, SmiX::FALL_RANGE_PARAM, 0.0, 2.0, 0.0)); | |||
| addChild(Widget::create<ScrewBlack>(Vec(15, 0))); | |||
| addChild(Widget::create<ScrewBlack>(Vec(box.size.x-30, 0))); | |||
| addChild(Widget::create<ScrewBlack>(Vec(15, 365))); | |||
| addChild(Widget::create<ScrewBlack>(Vec(box.size.x-30, 365))); | |||
| int x_offset = 10.10; | |||
| int y_offset = 2.0; | |||
| for (int i = 0; i < 8; i++) | |||
| { | |||
| addParam(ParamWidget::create<LEDSliderBlue>(mm2px(Vec(2.792 + i * x_offset, (y_offset*3) + 3.937)), module, SmiX::VOL_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MOrPort>(mm2px(Vec(1.003 + i * x_offset,y_offset+ 72.858)), Port::INPUT, module, SmiX::CV_INPUT + i)); | |||
| addParam(ParamWidget::create<MCKSSS>(mm2px(Vec(4.003 + i * x_offset,y_offset+ 85)), module, SmiX::MIX_SEL_PARAM + i, 0.0, 2.0, 0.0)); | |||
| addInput(Port::create<PJ301MIPort>(mm2px(Vec(1.003 + i * x_offset,y_offset+ 94.858)), Port::INPUT, module, SmiX::CH_INPUT + i)); | |||
| addChild(ModuleLightWidget::create<MediumLight<BlueLight>>(Vec(13 + i * 30, y_offset + 115), module, SmiX::CH_LIGHTS + i)); | |||
| } | |||
| addInput(Port::create<PJ301MCPort>(mm2px(Vec(1.003 + 2 * x_offset, 61.915)), Port::INPUT, module, SmiX::EXT_CLOCK_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(mm2px(Vec(1.003 + 3 * x_offset, 61.915)), Port::INPUT, module, SmiX::MODE_INPUT)); | |||
| addInput(Port::create<PJ301MRPort>(mm2px(Vec(1.003 + 4 * x_offset, 61.915)), Port::INPUT, module, SmiX::DIR_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(mm2px(Vec(1.003 + 5 * x_offset, 61.915)), Port::INPUT, module, SmiX::RESET_INPUT)); | |||
| for (int i = 0 ; i < 3 ; i++) | |||
| { | |||
| addChild(ModuleLightWidget::create<MediumLight<BlueLight>>(mm2px(Vec((2.905 + i * 8)+16 , 49.035)), module, SmiX::MODE_LIGHTS + i)); | |||
| } | |||
| for (int i = 0 ; i < 4 ; i++) | |||
| { | |||
| addChild(ModuleLightWidget::create<MediumLight<RedLight>>(mm2px(Vec(43+(i*5.3), 49.035)), module, SmiX::DIR_LIGHTS + i)); | |||
| } | |||
| addParam(ParamWidget::create<LEDButton>(Vec(27 + 50, 160), module, SmiX::MODE_BUTTON_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDButton>(Vec(97 + 50, 160), module, SmiX::DIR_BUTTON_PARAM, 0.0, 1.0, 0.0)); | |||
| addOutput(Port::create<PJ301MOPort>(mm2px(Vec(1.003 + 1 * x_offset, 115.169)), Port::OUTPUT, module, SmiX::A_OUTPUT)); | |||
| addOutput(Port::create<PJ301MOPort>(mm2px(Vec(1.003 + 3.5 * x_offset, 115.169)), Port::OUTPUT, module, SmiX::B_OUTPUT)); | |||
| addOutput(Port::create<PJ301MOPort>(mm2px(Vec(1.003 + 6 * x_offset, 115.169)), Port::OUTPUT, module, SmiX::C_OUTPUT)); | |||
| addParam(ParamWidget::create<Trimpot>(mm2px(Vec(1.003 + 0.2 * x_offset, 115.169)), module, SmiX::OUT_A_ATT_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<Trimpot>(mm2px(Vec(1.003 + 7 * x_offset, 115.169)), module, SmiX::OUT_C_ATT_PARAM, 0.0, 1.0, 0.0)); | |||
| } | |||
| }; | |||
| } // namespace rack_plugin_dBiz | |||
| using namespace rack_plugin_dBiz; | |||
| RACK_PLUGIN_MODEL_INIT(dBiz, SmiX) { | |||
| Model *modelSmiX = Model::create<SmiX, SmiXWidget>("dBiz", "SmiX", "SmiX", MIXER_TAG); | |||
| return modelSmiX; | |||
| } | |||
| @@ -0,0 +1,218 @@ | |||
| #include "dBiz.hpp" | |||
| #include "dsp/functions.hpp" | |||
| #include "dsp/decimator.hpp" | |||
| #include "dsp/filter.hpp" | |||
| namespace rack_plugin_dBiz { | |||
| extern float sawTable[2048]; | |||
| template <int OVERSAMPLE, int QUALITY> | |||
| struct subBank | |||
| { | |||
| float phase = 0.0; | |||
| float freq; | |||
| float pitch; | |||
| Decimator<OVERSAMPLE, QUALITY> sawDecimator; | |||
| // For analog detuning effect | |||
| float pitchSlew = 0.0f; | |||
| int pitchSlewIndex = 0; | |||
| float sawBuffer[OVERSAMPLE] = {}; | |||
| //void setPitch(float pitchKnob, float pitchCv) | |||
| void setPitch(float pitchKnob, float pitchCv) | |||
| { | |||
| // Compute frequency | |||
| pitch = pitchKnob; | |||
| const float pitchSlewAmount = 3.0f; | |||
| pitch += pitchSlew * pitchSlewAmount; | |||
| pitch += pitchCv; | |||
| // Note C3 | |||
| freq = 261.626f * powf(2.0, pitch / 12.0); | |||
| // Accumulate the phase | |||
| } | |||
| void process(float deltaTime) { | |||
| // Adjust pitch slew | |||
| if (++pitchSlewIndex > 32) { | |||
| const float pitchSlewTau = 100.0f; // Time constant for leaky integrator in seconds | |||
| pitchSlew += (randomNormal() - pitchSlew / pitchSlewTau) * engineGetSampleTime(); | |||
| pitchSlewIndex = 0; | |||
| } | |||
| // Advance phase | |||
| float deltaPhase = clamp(freq * deltaTime, 1e-6, 0.5f); | |||
| for (int i = 0; i < OVERSAMPLE; i++) { | |||
| sawBuffer[i] = 1.66f * interpolateLinear(sawTable, phase * 2047.f); | |||
| // Advance phase | |||
| phase += deltaPhase / OVERSAMPLE; | |||
| phase = eucmod(phase, 1.0f); | |||
| } | |||
| } | |||
| float saw() { | |||
| return sawDecimator.process(sawBuffer); | |||
| } | |||
| }; | |||
| struct SuHa : Module { | |||
| enum ParamIds | |||
| { | |||
| SUM_VOL_PARAM, | |||
| VCO_PARAM, | |||
| SUB1_PARAM = VCO_PARAM + 2, | |||
| SUB2_PARAM = SUB1_PARAM + 2, | |||
| VCO_VOL_PARAM = SUB2_PARAM + 2, | |||
| SUB1_VOL_PARAM = VCO_VOL_PARAM + 2, | |||
| SUB2_VOL_PARAM = SUB1_VOL_PARAM + 2, | |||
| NUM_PARAMS = SUB2_VOL_PARAM + 2 | |||
| }; | |||
| enum InputIds | |||
| { | |||
| VCO_INPUT, | |||
| SUB1_INPUT = VCO_INPUT + 2, | |||
| SUB2_INPUT = SUB1_INPUT + 2, | |||
| NUM_INPUTS = SUB2_INPUT + 2 | |||
| }; | |||
| enum OutputIds | |||
| { | |||
| SUM_OUTPUT, | |||
| VCO_OUTPUT, | |||
| SUB1_OUTPUT = VCO_OUTPUT + 2, | |||
| SUB2_OUTPUT = SUB1_OUTPUT + 2, | |||
| NUM_OUTPUTS = SUB2_OUTPUT + 2 | |||
| }; | |||
| enum LightIds { | |||
| NUM_LIGHTS | |||
| }; | |||
| subBank <16,16> VCO[2]={}; | |||
| subBank <16,16> SUB1[2]={}; | |||
| subBank <16,16> SUB2[2]={}; | |||
| SuHa() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |||
| void step() override; | |||
| }; | |||
| void SuHa::step() { | |||
| int s1[2]={}; | |||
| int s2[2] = {}; | |||
| float sum=0.0f; | |||
| for (int i=0;i<2;i++) | |||
| { | |||
| s1[i] = round(params[SUB1_PARAM+i].value + clamp(inputs[SUB1_INPUT+i].value, -15.0f, 15.0f)); | |||
| if (s1[i]>15) s1[i]=15; | |||
| if (s1[i]<=1) s1[i]=1; | |||
| s2[i] = round(params[SUB2_PARAM+i].value + clamp(inputs[SUB2_INPUT+i].value, -15.0f, 15.0f)); | |||
| if (s2[i]>15) s2[i]=15; | |||
| if (s2[i]<=1) s2[i]=1; | |||
| VCO[i].setPitch(params[VCO_PARAM+i].value,12*inputs[VCO_INPUT+i].value); | |||
| SUB1[i].freq=VCO[i].freq/s1[i]; | |||
| SUB2[i].freq=VCO[i].freq/s2[i]; | |||
| VCO[i].process(engineGetSampleTime()); | |||
| SUB1[i].process(engineGetSampleTime()); | |||
| SUB2[i].process(engineGetSampleTime()); | |||
| outputs[VCO_OUTPUT + i].value = 2.0f * VCO[i].saw()*params[VCO_VOL_PARAM+i].value; | |||
| outputs[SUB1_OUTPUT + i].value = 2.0f * SUB1[i].saw()*params[SUB1_VOL_PARAM+i].value; | |||
| outputs[SUB2_OUTPUT + i].value = 2.0f * SUB2[i].saw()*params[SUB2_VOL_PARAM+i].value; | |||
| } | |||
| for (int i = 0; i < 2; i++) | |||
| { | |||
| sum += clamp(outputs[VCO_OUTPUT + i].value + outputs[SUB1_OUTPUT + i].value + outputs[SUB2_OUTPUT + i].value,-5.0f,5.0f); | |||
| } | |||
| outputs[SUM_OUTPUT].value=sum*params[SUM_VOL_PARAM].value; | |||
| } | |||
| struct SuHaWidget : ModuleWidget { | |||
| SuHaWidget(SuHa *module) : ModuleWidget(module) { | |||
| setPanel(SVG::load(assetPlugin(plugin, "res/SuHa.svg"))); | |||
| int KS=50; | |||
| int JS = 37; | |||
| float Side=7.5; | |||
| addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |||
| /////////////////////////////////////////////////////////////////////////////////// | |||
| for (int i = 0; i < 2; i++) | |||
| { | |||
| addParam(ParamWidget::create<DKnob>(Vec(Side + 6, 87 + i * KS), module, SuHa::VCO_PARAM + i, -54.0, 54.0, 0.0)); | |||
| addParam(ParamWidget::create<DKnob>(Vec(Side + 6 + KS, 87 +i*KS), module, SuHa::SUB1_PARAM +i, 1.0, 15.0, 1.0)); | |||
| addParam(ParamWidget::create<DKnob>(Vec(Side + 6 + 2 * KS, 87 +i*KS), module, SuHa::SUB2_PARAM +i, 1.0, 15.0, 1.0)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(Side + 15, 25 + i*30), module, SuHa::VCO_VOL_PARAM +i, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(Side + 15 + KS, 25 + i*30), module, SuHa::SUB1_VOL_PARAM +i, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(Side + 15 + 2 * KS, 25 + i*30), module, SuHa::SUB2_VOL_PARAM +i, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(Side + 11, 215+i*JS), Port::INPUT, module, SuHa::VCO_INPUT +i)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(Side + 11 + KS, 215+i*JS), Port::INPUT, module, SuHa::SUB1_INPUT +i)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(Side + 11 + 2 * KS, 215+i*JS), Port::INPUT, module, SuHa::SUB2_INPUT +i)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(Side + 11, 215 + 2 * JS+i*JS), Port::OUTPUT, module, SuHa::VCO_OUTPUT +i)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(Side + 11 + KS, 215 + 2 * JS+i*JS), Port::OUTPUT, module, SuHa::SUB1_OUTPUT +i)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(Side + 11 + 2 * KS, 215 + 2 * JS+i*JS), Port::OUTPUT, module, SuHa::SUB2_OUTPUT +i)); | |||
| } | |||
| addParam(ParamWidget::create<SDKnob>(Vec(Side + 40, 180), module, SuHa::SUM_VOL_PARAM, 0.0, 1.0, 0.0)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(Side + 80, 185), Port::OUTPUT, module, SuHa::SUM_OUTPUT)); | |||
| ////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| } | |||
| }; | |||
| } // namespace rack_plugin_dBiz | |||
| using namespace rack_plugin_dBiz; | |||
| RACK_PLUGIN_MODEL_INIT(dBiz, SuHa) { | |||
| // Specify the Module and ModuleWidget subclass, human-readable | |||
| // author name for categorization per plugin, module slug (should never | |||
| // change), human-readable module name, and any number of tags | |||
| // (found in `include/tags.hpp`) separated by commas. | |||
| Model *modelSuHa = Model::create<SuHa, SuHaWidget>("dBiz", "SuHa", "SuHa", OSCILLATOR_TAG); | |||
| return modelSuHa; | |||
| } | |||
| @@ -0,0 +1,498 @@ | |||
| #include "dBiz.hpp" | |||
| #include "dsp/decimator.hpp" | |||
| #include "dsp/filter.hpp" | |||
| namespace rack_plugin_dBiz { | |||
| extern float sawTable[2048]; | |||
| extern float triTable[2048]; | |||
| template <int OVERSAMPLE, int QUALITY> | |||
| struct VoltageControlledOscillator | |||
| { | |||
| bool analog = false; | |||
| bool soft = false; | |||
| float lastSyncValue = 0.0f; | |||
| float phase = 0.0f; | |||
| float freq; | |||
| float pw = 0.5f; | |||
| float pitch; | |||
| bool syncEnabled = false; | |||
| bool syncDirection = false; | |||
| Decimator<OVERSAMPLE, QUALITY> sinDecimator; | |||
| Decimator<OVERSAMPLE, QUALITY> triDecimator; | |||
| Decimator<OVERSAMPLE, QUALITY> sawDecimator; | |||
| Decimator<OVERSAMPLE, QUALITY> sqrDecimator; | |||
| RCFilter sqrFilter; | |||
| // For analog detuning effect | |||
| float pitchSlew = 0.0f; | |||
| int pitchSlewIndex = 0; | |||
| float sinBuffer[OVERSAMPLE] = {}; | |||
| float triBuffer[OVERSAMPLE] = {}; | |||
| float sawBuffer[OVERSAMPLE] = {}; | |||
| float sqrBuffer[OVERSAMPLE] = {}; | |||
| void setPitch(float pitchKnob, float pitchCv) | |||
| { | |||
| // Compute frequency | |||
| pitch = pitchKnob; | |||
| if (analog) | |||
| { | |||
| // Apply pitch slew | |||
| const float pitchSlewAmount = 3.0f; | |||
| pitch += pitchSlew * pitchSlewAmount; | |||
| } | |||
| else | |||
| { | |||
| // Quantize coarse knob if digital mode | |||
| pitch = roundf(pitch); | |||
| } | |||
| pitch += pitchCv; | |||
| // Note C4 | |||
| freq = 261.626f * powf(2.0f, pitch / 12.0f); | |||
| } | |||
| void setPulseWidth(float pulseWidth) | |||
| { | |||
| const float pwMin = 0.01f; | |||
| pw = clamp(pulseWidth, pwMin, 1.0f - pwMin); | |||
| } | |||
| void process(float deltaTime, float syncValue) | |||
| { | |||
| if (analog) | |||
| { | |||
| // Adjust pitch slew | |||
| if (++pitchSlewIndex > 32) | |||
| { | |||
| const float pitchSlewTau = 100.0f; // Time constant for leaky integrator in seconds | |||
| pitchSlew += (randomNormal() - pitchSlew / pitchSlewTau) * engineGetSampleTime(); | |||
| pitchSlewIndex = 0; | |||
| } | |||
| } | |||
| // Advance phase | |||
| float deltaPhase = clamp(freq * deltaTime, 1e-6, 0.5f); | |||
| // Detect sync | |||
| int syncIndex = -1; // Index in the oversample loop where sync occurs [0, OVERSAMPLE) | |||
| float syncCrossing = 0.0f; // Offset that sync occurs [0.0f, 1.0f) | |||
| if (syncEnabled) | |||
| { | |||
| syncValue -= 0.01f; | |||
| if (syncValue > 0.0f && lastSyncValue <= 0.0f) | |||
| { | |||
| float deltaSync = syncValue - lastSyncValue; | |||
| syncCrossing = 1.0f - syncValue / deltaSync; | |||
| syncCrossing *= OVERSAMPLE; | |||
| syncIndex = (int)syncCrossing; | |||
| syncCrossing -= syncIndex; | |||
| } | |||
| lastSyncValue = syncValue; | |||
| } | |||
| if (syncDirection) | |||
| deltaPhase *= -1.0f; | |||
| sqrFilter.setCutoff(40.0f * deltaTime); | |||
| for (int i = 0; i < OVERSAMPLE; i++) | |||
| { | |||
| if (syncIndex == i) | |||
| { | |||
| if (soft) | |||
| { | |||
| syncDirection = !syncDirection; | |||
| deltaPhase *= -1.0f; | |||
| } | |||
| else | |||
| { | |||
| // phase = syncCrossing * deltaPhase / OVERSAMPLE; | |||
| phase = 0.0f; | |||
| } | |||
| } | |||
| if (analog) | |||
| { | |||
| // Quadratic approximation of sine, slightly richer harmonics | |||
| if (phase < 0.5f) | |||
| sinBuffer[i] = 1.f - 16.f * powf(phase - 0.25f, 2); | |||
| else | |||
| sinBuffer[i] = -1.f + 16.f * powf(phase - 0.75f, 2); | |||
| sinBuffer[i] *= 1.08f; | |||
| } | |||
| else | |||
| { | |||
| sinBuffer[i] = sinf(2.f * M_PI * phase); | |||
| } | |||
| if (analog) | |||
| { | |||
| triBuffer[i] = 1.25f * interpolateLinear(triTable, phase * 2047.f); | |||
| } | |||
| else | |||
| { | |||
| if (phase < 0.25f) | |||
| triBuffer[i] = 4.f * phase; | |||
| else if (phase < 0.75f) | |||
| triBuffer[i] = 2.f - 4.f * phase; | |||
| else | |||
| triBuffer[i] = -4.f + 4.f * phase; | |||
| } | |||
| if (analog) | |||
| { | |||
| sawBuffer[i] = 1.66f * interpolateLinear(sawTable, phase * 2047.f); | |||
| } | |||
| else | |||
| { | |||
| if (phase < 0.5f) | |||
| sawBuffer[i] = 2.f * phase; | |||
| else | |||
| sawBuffer[i] = -2.f + 2.f * phase; | |||
| } | |||
| sqrBuffer[i] = (phase < pw) ? 1.f : -1.f; | |||
| if (analog) | |||
| { | |||
| // Simply filter here | |||
| sqrFilter.process(sqrBuffer[i]); | |||
| sqrBuffer[i] = 0.71f * sqrFilter.highpass(); | |||
| } | |||
| // Advance phase | |||
| phase += deltaPhase / OVERSAMPLE; | |||
| phase = eucmod(phase, 1.0f); | |||
| } | |||
| } | |||
| float sin() | |||
| { | |||
| return sinDecimator.process(sinBuffer); | |||
| } | |||
| float tri() | |||
| { | |||
| return triDecimator.process(triBuffer); | |||
| } | |||
| float saw() | |||
| { | |||
| return sawDecimator.process(sawBuffer); | |||
| } | |||
| float sqr() | |||
| { | |||
| return sqrDecimator.process(sqrBuffer); | |||
| } | |||
| float light() | |||
| { | |||
| return sinf(2 * M_PI * phase); | |||
| } | |||
| }; | |||
| struct TROSC : Module | |||
| { | |||
| enum ParamIds | |||
| { | |||
| LINK_A_PARAM, | |||
| LINK_B_PARAM, | |||
| MODE_A_PARAM, | |||
| SYNC_A_PARAM, | |||
| MODE_B_PARAM, | |||
| SYNC_B_PARAM, | |||
| MODE_C_PARAM, | |||
| SYNC_C_PARAM, | |||
| WAVE_A_SEL_PARAM, | |||
| WAVE_B_SEL_PARAM, | |||
| WAVE_C_SEL_PARAM, | |||
| FREQ_A_PARAM, | |||
| FINE_A_PARAM, | |||
| FREQ_B_PARAM, | |||
| FINE_B_PARAM, | |||
| FREQ_C_PARAM, | |||
| FINE_C_PARAM, | |||
| FM_A_PARAM, | |||
| FM_B_PARAM, | |||
| FM_C_PARAM, | |||
| LEVEL_A_PARAM, | |||
| LEVEL_B_PARAM, | |||
| LEVEL_C_PARAM, | |||
| WAVE_A_MIX, | |||
| WAVE2_A_MIX, | |||
| WAVE_B_MIX, | |||
| WAVE2_B_MIX, | |||
| WAVE_C_MIX, | |||
| C_WIDTH_PARAM, | |||
| NUM_PARAMS | |||
| }; | |||
| enum InputIds | |||
| { | |||
| PITCH_A_INPUT, | |||
| PITCH_B_INPUT, | |||
| PITCH_C_INPUT, | |||
| SYNC_A_INPUT, | |||
| SYNC_B_INPUT, | |||
| SYNC_C_INPUT, | |||
| FM_A_INPUT, | |||
| FM_B_INPUT, | |||
| FM_C_INPUT, | |||
| A_WAVE_MIX_INPUT, | |||
| B_WAVE_MIX_INPUT, | |||
| C_WAVE_MIX_INPUT, | |||
| A_VOL_IN, | |||
| B_VOL_IN, | |||
| C_VOL_IN, | |||
| C_WIDTH_INPUT, | |||
| NUM_INPUTS | |||
| }; | |||
| enum OutputIds | |||
| { | |||
| A_OUTPUT, | |||
| B_OUTPUT, | |||
| C_OUTPUT, | |||
| MIX_OUTPUT, | |||
| NUM_OUTPUTS | |||
| }; | |||
| enum LightIds | |||
| { | |||
| NUM_LIGHTS | |||
| }; | |||
| VoltageControlledOscillator<8, 8> a_osc; | |||
| VoltageControlledOscillator<8, 8> b_osc; | |||
| VoltageControlledOscillator<8, 8> c_osc; | |||
| TROSC() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |||
| void step() override; | |||
| // For more advanced Module features, read Rack's engine.hpp header file | |||
| // - toJson, fromJson: serialization of internal data | |||
| // - onSampleRateChange: event triggered by a change of sample rate | |||
| // - onReset, onRandomize, onCreate, onDelete: implements special behavior when user clicks these from the context menu | |||
| }; | |||
| void TROSC::step() { | |||
| float a_pitchCv = 0.0; | |||
| float b_pitchCv = 0.0; | |||
| float c_pitchCv = 0.0; | |||
| a_osc.analog = params[MODE_A_PARAM].value > 0.0f; | |||
| a_osc.soft = params[SYNC_A_PARAM].value <= 0.0f; | |||
| b_osc.analog = params[MODE_B_PARAM].value > 0.0f; | |||
| b_osc.soft = params[SYNC_B_PARAM].value <= 0.0f; | |||
| c_osc.analog = params[MODE_C_PARAM].value > 0.0f; | |||
| c_osc.soft = params[SYNC_C_PARAM].value <= 0.0f; | |||
| float a_pitchFine = 3.0f * quadraticBipolar(params[FINE_A_PARAM].value); | |||
| a_pitchCv = 12.0f * inputs[PITCH_A_INPUT].value; | |||
| float b_pitchFine = 3.0f * quadraticBipolar(params[FINE_B_PARAM].value); | |||
| if(params[LINK_A_PARAM].value==1) | |||
| b_pitchCv = 12.0f * inputs[PITCH_B_INPUT].value; | |||
| else | |||
| b_pitchCv = a_pitchCv ; | |||
| float c_pitchFine = 3.0f * quadraticBipolar(params[FINE_C_PARAM].value); | |||
| if (params[LINK_B_PARAM].value == 1) | |||
| c_pitchCv = 12.0f * inputs[PITCH_C_INPUT].value; | |||
| else | |||
| c_pitchCv = b_pitchCv; | |||
| if (inputs[FM_A_INPUT].active) | |||
| { | |||
| a_pitchCv += quadraticBipolar(params[FM_A_PARAM].value) * 12.0f * inputs[FM_A_INPUT].value; | |||
| } | |||
| a_osc.setPitch(params[FREQ_A_PARAM].value, a_pitchFine + a_pitchCv); | |||
| a_osc.syncEnabled = inputs[SYNC_A_INPUT].active; | |||
| if (inputs[FM_B_INPUT].active) | |||
| { | |||
| b_pitchCv += quadraticBipolar(params[FM_B_PARAM].value) * 12.0f * inputs[FM_B_INPUT].value; | |||
| } | |||
| b_osc.setPitch(params[FREQ_B_PARAM].value, b_pitchFine + b_pitchCv); | |||
| b_osc.syncEnabled = inputs[SYNC_B_INPUT].active; | |||
| if (inputs[FM_C_INPUT].active) | |||
| { | |||
| c_pitchCv += quadraticBipolar(params[FM_C_PARAM].value) * 12.0f * inputs[FM_C_INPUT].value; | |||
| } | |||
| c_osc.setPitch(params[FREQ_C_PARAM].value, c_pitchFine + c_pitchCv); | |||
| c_osc.setPulseWidth(0.5+params[C_WIDTH_PARAM].value * inputs[C_WIDTH_INPUT].value / 10.0f); | |||
| c_osc.syncEnabled = inputs[SYNC_C_INPUT].active; | |||
| a_osc.process(engineGetSampleTime(), inputs[SYNC_A_INPUT].value); | |||
| b_osc.process(engineGetSampleTime(), inputs[SYNC_A_INPUT].value); | |||
| c_osc.process(engineGetSampleTime(), inputs[SYNC_A_INPUT].value); | |||
| // Set output | |||
| float wave_a = clamp(params[WAVE_A_MIX].value, 0.0f, 1.0f); | |||
| float wave2_a = clamp(params[WAVE2_A_MIX].value, 0.0f, 1.0f); | |||
| float mix_a = clamp(params[WAVE_A_SEL_PARAM].value, 0.0f, 1.0f)*clamp(inputs[A_WAVE_MIX_INPUT].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| float wave_b = clamp(params[WAVE_B_MIX].value, 0.0f, 1.0f); | |||
| float wave2_b = clamp(params[WAVE2_B_MIX].value, 0.0f, 1.0f); | |||
| float mix_b = clamp(params[WAVE_B_SEL_PARAM].value, 0.0f, 1.0f)*clamp(inputs[B_WAVE_MIX_INPUT].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| float wave_c = clamp(params[WAVE_C_MIX].value, 0.0f, 1.0f); | |||
| float mix_c = clamp(params[WAVE_C_SEL_PARAM].value, 0.0f, 1.0f)*clamp(inputs[C_WAVE_MIX_INPUT].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| float out_a; | |||
| float out2_a; | |||
| float a_out; | |||
| float out_b; | |||
| float out2_b; | |||
| float b_out; | |||
| float out_c; | |||
| float out2_c; | |||
| float c_out; | |||
| float mixa,mixb,mixc; | |||
| out_a = crossfade(a_osc.sin(), a_osc.tri(), wave_a); | |||
| out2_a = crossfade(a_osc.saw(), a_osc.sqr(), wave2_a); | |||
| a_out = crossfade(out_a, out2_a, mix_a); | |||
| out_b = crossfade(b_osc.sin(), b_osc.tri(), wave_b); | |||
| out2_b = crossfade(b_osc.saw(), b_osc.sqr(), wave2_b); | |||
| b_out = crossfade(out_b, out2_b, mix_b); | |||
| out_c = crossfade(c_osc.sin(), c_osc.tri(), wave_c); | |||
| out2_c =c_osc.sqr(); | |||
| c_out = crossfade(out_c, out2_c, mix_c); | |||
| mixa = 2.0f * (a_out)*params[LEVEL_A_PARAM].value*clamp(inputs[A_VOL_IN].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| outputs[A_OUTPUT].value= mixa; | |||
| mixb = 2.0f * (b_out)*params[LEVEL_B_PARAM].value*clamp(inputs[B_VOL_IN].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| outputs[B_OUTPUT].value = mixb; | |||
| mixc = 2.0f * (c_out)*params[LEVEL_C_PARAM].value*clamp(inputs[C_VOL_IN].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| outputs[C_OUTPUT].value = mixc; | |||
| outputs[MIX_OUTPUT].value = mixa+mixb+mixc; | |||
| } | |||
| struct TROSCWidget : ModuleWidget { | |||
| TROSCWidget(TROSC *module) : ModuleWidget(module) { | |||
| setPanel(SVG::load(assetPlugin(plugin, "res/TROSC.svg"))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |||
| int space = 170; | |||
| int vspace = 50; | |||
| addParam(ParamWidget::create<VerboDL>(Vec(30,20), module, TROSC::FREQ_A_PARAM,-54.0f, 54.0f, 0.0f)); | |||
| addParam(ParamWidget::create<VerboDL>(Vec(30, 150), module, TROSC::FREQ_B_PARAM, -54.0f, 54.0f, 0.0f)); | |||
| addParam(ParamWidget::create<VerboDL>(Vec(30, 280), module, TROSC::FREQ_C_PARAM, -54.0f, 54.0f, 0.0f)); | |||
| addParam(ParamWidget::create<CKSS>(Vec(5, 5 + 20), module, TROSC::MODE_A_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<CKSS>(Vec(5, 5 + 150), module, TROSC::MODE_B_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<CKSS>(Vec(5, 5 + 280), module, TROSC::MODE_C_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<CKSS>(Vec(143, 75 + 20), module, TROSC::SYNC_A_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<CKSS>(Vec(143, 75 + 150), module, TROSC::SYNC_B_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<CKSS>(Vec(143, 75 + 280), module, TROSC::SYNC_C_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(110, 20), module, TROSC::FINE_A_PARAM, -1.0f, 1.0f, 0.0f)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(110, 150), module, TROSC::FINE_B_PARAM, -1.0f, 1.0f, 0.0f)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(110, 280), module, TROSC::FINE_C_PARAM, -1.0f, 1.0f, 0.0f)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(150, 20 -10), module, TROSC::FM_A_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(150, 150-10), module, TROSC::FM_B_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(150, 280-10), module, TROSC::FM_C_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(250, vspace+20), module, TROSC::LEVEL_A_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(250, vspace+150), module, TROSC::LEVEL_B_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(250, vspace+280), module, TROSC::LEVEL_C_PARAM , 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDSliderGreen>(Vec(20+space, 20), module, TROSC::WAVE_A_MIX, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDSliderGreen>(Vec(50 + space, 20), module, TROSC::WAVE2_A_MIX, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDSliderGreen>(Vec(20 + space, 150), module, TROSC::WAVE_B_MIX, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDSliderGreen>(Vec(50 + space, 150), module, TROSC::WAVE2_B_MIX, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<LEDSliderGreen>(Vec(20 + space, 280), module, TROSC::WAVE_C_MIX, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<VerboDS>(Vec(40 + space, 290), module, TROSC::C_WIDTH_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(73 + space, 20 -10), module, TROSC::WAVE_A_SEL_PARAM, 0.0, 1.0, 0.5)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(73 + space, 150-10), module, TROSC::WAVE_B_SEL_PARAM, 0.0, 1.0, 0.5)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(73 + space, 280-10), module, TROSC::WAVE_C_SEL_PARAM, 0.0, 1.0, 0.5)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(100 + space,20-13), Port::INPUT, module, TROSC::A_WAVE_MIX_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(100 + space,150-13), Port::INPUT, module, TROSC::B_WAVE_MIX_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(100 + space,280-13), Port::INPUT, module, TROSC::C_WAVE_MIX_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(2, 30 + 20), Port::INPUT, module, TROSC::PITCH_A_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(2, 30 + 150), Port::INPUT, module, TROSC::PITCH_B_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(2, 30 + 280), Port::INPUT, module, TROSC::PITCH_C_INPUT)); | |||
| addParam(ParamWidget::create<SilverSwitch>(Vec(60, 90 + 20), module, TROSC::LINK_A_PARAM,0.0,1.0,0.0)); | |||
| addParam(ParamWidget::create<SilverSwitch>(Vec(60, 90 + 150),module, TROSC::LINK_B_PARAM,0.0,1.0,0.0)); | |||
| addInput(Port::create<PJ301MOrPort>(Vec(115, 55 + 20), Port::INPUT, module, TROSC::SYNC_A_INPUT)); | |||
| addInput(Port::create<PJ301MOrPort>(Vec(115, 55 + 150), Port::INPUT, module, TROSC::SYNC_B_INPUT)); | |||
| addInput(Port::create<PJ301MOrPort>(Vec(115, 55 + 280), Port::INPUT, module, TROSC::SYNC_C_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(155, 45 + 20), Port::INPUT, module, TROSC::FM_A_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(155, 45 + 150), Port::INPUT, module, TROSC::FM_B_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(155, 45 + 280), Port::INPUT, module, TROSC::FM_C_INPUT)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(290,vspace+10+20), Port::INPUT, module, TROSC::A_VOL_IN)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(290,vspace+10+150), Port::INPUT, module, TROSC::B_VOL_IN)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(290,vspace+10+280), Port::INPUT, module, TROSC::C_VOL_IN)); | |||
| addInput(Port::create<PJ301MCPort>(Vec(215, 50 + 280), Port::INPUT, module, TROSC::C_WIDTH_INPUT)); | |||
| addOutput(Port::create<PJ301MOPort>(Vec(290, 30), Port::OUTPUT, module, TROSC::MIX_OUTPUT)); | |||
| addOutput(Port::create<PJ301MOPort>(Vec(255, 20 + 20), Port::OUTPUT, module, TROSC::A_OUTPUT)); | |||
| addOutput(Port::create<PJ301MOPort>(Vec(255, 20 + 150), Port::OUTPUT, module, TROSC::B_OUTPUT)); | |||
| addOutput(Port::create<PJ301MOPort>(Vec(255, 20 + 280), Port::OUTPUT, module, TROSC::C_OUTPUT)); | |||
| } | |||
| }; | |||
| } // namespace rack_plugin_dBiz | |||
| using namespace rack_plugin_dBiz; | |||
| RACK_PLUGIN_MODEL_INIT(dBiz, TROSC) { | |||
| // Specify the Module and ModuleWidget subclass, human-readable | |||
| // author name for categorization per plugin, module slug (should never | |||
| // change), human-readable module name, and any number of tags | |||
| // (found in `include/tags.hpp`) separated by commas. | |||
| Model *modelTROSC = Model::create<TROSC, TROSCWidget>("dBiz", "TROSC", "Triple Oscillator", OSCILLATOR_TAG); | |||
| return modelTROSC; | |||
| } | |||
| @@ -0,0 +1,339 @@ | |||
| /////////////////////////////////////////////////// | |||
| // dBiz Util2 | |||
| // | |||
| /////////////////////////////////////////////////// | |||
| #include "dBiz.hpp" | |||
| #include "dsp/digital.hpp" | |||
| namespace rack_plugin_dBiz { | |||
| struct Util2 : Module { | |||
| enum ParamIds | |||
| { | |||
| MODE_PARAM, | |||
| VALUE_PARAM = MODE_PARAM + 4, | |||
| BUTTON_PARAM = VALUE_PARAM +4, | |||
| RANGE_PARAM = BUTTON_PARAM +4, | |||
| GLIDE_PARAM= RANGE_PARAM + 2, | |||
| RISE_PARAM = RANGE_PARAM + 2, | |||
| FALL_PARAM = RISE_PARAM + 2, | |||
| NUM_PARAMS = FALL_PARAM + 2 | |||
| }; | |||
| enum InputIds | |||
| { | |||
| BUTTON_INPUT, | |||
| TRIG_INPUT=BUTTON_INPUT + 4, | |||
| IN_INPUT = TRIG_INPUT + 2, | |||
| NUM_INPUTS = IN_INPUT + 2 | |||
| }; | |||
| enum OutputIds | |||
| { | |||
| BUTTON_OUTPUT, | |||
| EG_OUTPUT = BUTTON_OUTPUT + 4, | |||
| OUT_OUTPUT = EG_OUTPUT + 2, | |||
| NUM_OUTPUTS = OUT_OUTPUT + 2 | |||
| }; | |||
| enum LighIds | |||
| { | |||
| BUTTON_LIGHT, | |||
| NUM_LIGHTS = BUTTON_LIGHT + 4 | |||
| }; | |||
| float out[2]{}; | |||
| float outg[2]{}; | |||
| float eg_out[2]{}; | |||
| bool gate[2] = {}; | |||
| bool gateEg[2] = {}; | |||
| bool gateState[4] = {}; | |||
| bool pulse[4]; | |||
| SchmittTrigger trigger[2]; | |||
| SchmittTrigger btrigger[4]; | |||
| PulseGenerator buttonPulse[4]; | |||
| Util2() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |||
| void step() override; | |||
| json_t *toJson() override | |||
| { | |||
| json_t *rootJ = json_object(); | |||
| json_t *gatesJ = json_array(); | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| json_t *gateJ = json_integer((int)gateState[i]); | |||
| json_array_append_new(gatesJ, gateJ); | |||
| } | |||
| json_object_set_new(rootJ, "gate", gatesJ); | |||
| return rootJ; | |||
| } | |||
| void fromJson(json_t *rootJ) override | |||
| { | |||
| json_t *gatesJ = json_object_get(rootJ, "gates"); | |||
| if (gatesJ) | |||
| { | |||
| for (int i = 0; i < 8; i++) | |||
| { | |||
| json_t *gateJ = json_array_get(gatesJ, i); | |||
| if (gateJ) | |||
| gateState[i] = !!json_integer_value(gateJ); | |||
| } | |||
| } | |||
| } | |||
| void reset() override | |||
| { | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| gateState[i] = false; | |||
| } | |||
| } | |||
| }; | |||
| ///////////////////////////////////////////////////// | |||
| static float shapeDelta(float delta, float tau, float shape) | |||
| { | |||
| float lin = sgn(delta) * 10.0 / tau; | |||
| if (shape < 0.0) | |||
| { | |||
| float log = sgn(delta) * 40.0 / tau / (fabsf(delta) + 1.0); | |||
| return crossfade(lin, log, -shape * 0.95); | |||
| } | |||
| else | |||
| { | |||
| float exp = M_E * delta / tau; | |||
| return crossfade(lin, exp, shape * 0.90); | |||
| } | |||
| } | |||
| ///////////////////////////////////////////////////// | |||
| void Util2::step() { | |||
| ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| for (int c = 0; c < 2; c++) | |||
| { | |||
| float in = inputs[IN_INPUT + c].value; | |||
| float shape = 0.0 ; | |||
| float delta = in - out[c]; | |||
| bool rising = false; | |||
| bool falling = false; | |||
| if (delta > 0) | |||
| { | |||
| // Rise | |||
| float riseCv = params[GLIDE_PARAM + c].value; | |||
| float rise = 1e-1 * powf(2.0, riseCv * 10.0); | |||
| out[c] += shapeDelta(delta, rise, shape) / engineGetSampleRate(); | |||
| rising = (in - out[c] > 1e-3); | |||
| if (!rising) | |||
| { | |||
| gate[c] = false; | |||
| } | |||
| } | |||
| else if (delta < 0) | |||
| { | |||
| // Fall | |||
| float fallCv = params[GLIDE_PARAM + c].value; | |||
| float fall = 1e-1 * powf(2.0, fallCv * 10.0); | |||
| out[c] += shapeDelta(delta, fall, shape) / engineGetSampleRate(); | |||
| falling = (in - out[c] < -1e-3); | |||
| } | |||
| else | |||
| { | |||
| gate[c] = false; | |||
| } | |||
| if (!rising && !falling) | |||
| { | |||
| out[c] = in; | |||
| } | |||
| outputs[OUT_OUTPUT + c].value = out[c]; | |||
| } | |||
| ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| for (int c = 0; c < 2; c++) | |||
| { | |||
| float in = 0.0f; //inputs[IN_INPUT + c].value; | |||
| if (trigger[c].process(inputs[TRIG_INPUT + c].value)) | |||
| { | |||
| gateEg[c] = true; | |||
| } | |||
| if (gateEg[c]) | |||
| { | |||
| in = 5.0; | |||
| } | |||
| float shape = 0.0; | |||
| float delta = in - outg[c]; | |||
| float minTime; | |||
| switch ((int)params[RANGE_PARAM + c].value) | |||
| { | |||
| case 0: minTime = 1e-1; break; | |||
| case 1: minTime = 1e-2; break; | |||
| default:minTime = 1e-3; break; | |||
| } | |||
| bool rising = false; | |||
| bool falling = false; | |||
| if (delta > 0) | |||
| { | |||
| // Rise | |||
| float riseCv = params[RISE_PARAM + c].value; | |||
| float rise = minTime * powf(2.0, riseCv * 10.0); | |||
| outg[c] += shapeDelta(delta, rise, shape) / engineGetSampleRate(); | |||
| rising = (in - outg[c] > 1e-3); | |||
| if (!rising) | |||
| { | |||
| gateEg[c] = false; | |||
| } | |||
| } | |||
| else if (delta < 0) | |||
| { | |||
| // Fall | |||
| float fallCv = params[FALL_PARAM + c].value; | |||
| float fall = minTime * powf(2.0, fallCv * 10.0); | |||
| outg[c] += shapeDelta(delta, fall, shape) / engineGetSampleRate(); | |||
| falling = (in - outg[c] < -1e-3); | |||
| } | |||
| else | |||
| { | |||
| gateEg[c] = false; | |||
| } | |||
| if (!rising && !falling) | |||
| { | |||
| outg[c] = in; | |||
| } | |||
| outputs[EG_OUTPUT + c].value = outg[c]; | |||
| } | |||
| /////////////////////////////////////////////////////////////////////////////////////////////////////// | |||
| for (int i=0;i<4;i++) | |||
| { | |||
| if(params[MODE_PARAM+i].value==0) | |||
| { | |||
| if (btrigger[i].process(params[BUTTON_PARAM+i].value*10+inputs[BUTTON_INPUT+i].value)) | |||
| { | |||
| // button[i] = true; | |||
| lights[BUTTON_LIGHT + i].value = 1.0f; | |||
| buttonPulse[i].trigger(1e-3); | |||
| } | |||
| if (lights[BUTTON_LIGHT + i].value>0) | |||
| { | |||
| lights[BUTTON_LIGHT + i].value -= lights[BUTTON_LIGHT + i].value / 0.02 / engineGetSampleRate(); | |||
| } | |||
| pulse[i] = buttonPulse[i].process(1.0f / engineGetSampleRate()); | |||
| outputs[BUTTON_OUTPUT + i].value = pulse[i] ? 10.0f : 0.0f; | |||
| } | |||
| if (params[MODE_PARAM + i].value == 1) | |||
| { | |||
| if (btrigger[i].process(params[BUTTON_PARAM + i].value * 10 + inputs[BUTTON_INPUT + i].value)) | |||
| { | |||
| gateState[i] = !gateState[i]; | |||
| } | |||
| lights[BUTTON_LIGHT + i].value = gateState[i] ? 1.0 : 0.0; | |||
| if (gateState[i]) | |||
| { | |||
| outputs[BUTTON_OUTPUT + i].value = params[VALUE_PARAM + i].value; | |||
| } | |||
| else | |||
| { | |||
| outputs[BUTTON_OUTPUT + i].value = 0.0; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| struct Util2Widget : ModuleWidget | |||
| { | |||
| Util2Widget(Util2 *module) : ModuleWidget(module) | |||
| { | |||
| box.size = Vec(15*10, 380); | |||
| { | |||
| SVGPanel *panel = new SVGPanel(); | |||
| panel->box.size = box.size; | |||
| panel->setBackground(SVG::load(assetPlugin(plugin,"res/Util2.svg"))); | |||
| addChild(panel); | |||
| } | |||
| //Screw | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x-30, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 365))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x-30, 365))); | |||
| int knob=33; | |||
| int jack = 28; | |||
| int si = 10; | |||
| // | |||
| for (int i = 0; i < 2; i++) | |||
| { | |||
| addParam(ParamWidget::create<SDKnob>(Vec(30 + knob, 20 + knob * i), module, Util2::GLIDE_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<SDKnob>(Vec(40 , 91 + knob * i), module, Util2::RISE_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<SDKnob>(Vec(40 + knob , 91 + knob * i), module, Util2::FALL_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(si, 23 + knob * i), Port::INPUT, module, Util2::IN_INPUT+i)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(si + jack, 23 + knob * i), Port::OUTPUT, module, Util2::OUT_OUTPUT+i)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(si, 94 + knob * i), Port::INPUT, module, Util2::TRIG_INPUT + i)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(40 + knob*2, 94 + knob * i), Port::OUTPUT, module, Util2::EG_OUTPUT + i)); | |||
| addParam(ParamWidget::create<MCKSSS>(Vec(43 + knob * 2.7, 95 + knob * i), module, Util2::RANGE_PARAM + i, 0.0, 2.0, 0.0)); | |||
| // addInput(Port::create<PJ301MVAPort>(Vec(si + 40, 22.5 + knob * i), Port::INPUT, module, Util2::SUB1_INPUT + i)); | |||
| // addInput(Port::create<PJ301MVAPort>(Vec(si + 40, 173.5 + knob * i), Port::INPUT, module, Util2::SUB2_INPUT + i)); | |||
| } | |||
| for (int i=0;i<4;i++) | |||
| { | |||
| addParam(ParamWidget::create<LEDBezel>(Vec(si+5+knob * i,170), module, Util2::BUTTON_PARAM + i, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<BigLight<OrangeLight>>(Vec(si +5+ 1 + knob * i, 171), module, Util2::BUTTON_LIGHT + i)); | |||
| addParam(ParamWidget::create<SDKnob>(Vec(si +2 + knob * i, 170 + jack), module, Util2::VALUE_PARAM + i, -10.0, 10.0, 0.0)); | |||
| addInput(Port::create<PJ301MVAPort>(Vec(si + 3.5 + knob * i, 175 + jack * 2), Port::INPUT, module, Util2::BUTTON_INPUT + i)); | |||
| addOutput(Port::create<PJ301MVAPort>(Vec(si + 3.5 + knob * i, 175 + jack * 3), Port::OUTPUT, module, Util2::BUTTON_OUTPUT + i)); | |||
| addParam(ParamWidget::create<SilverSwitch>(Vec(si + 2 + knob * i, 175 + jack*4), module, Util2::MODE_PARAM + i, 0.0, 1.0, 0.0)); | |||
| // addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 2, 310), Port::OUTPUT, module, Util2::CD_OUTPUT)); | |||
| // addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 3, 310), Port::OUTPUT, module, Util2::TRIG_OUTPUT)); | |||
| // addParam(ParamWidget::create<MCKSSS>(Vec(15 + jack * 4, 313), module, Util2::MODE_PARAM + 0, 0.0, 1.// 0, 0.0)); | |||
| // addInput(Port::create<PJ301MVAPort>(Vec(15, 310 + jack), Port::INPUT, module, Util2::CLOCKB_INPUT)); | |||
| // addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 1, 310 + jack), Port::OUTPUT, module, Util2::AB2_OUTPUT)); | |||
| // addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 2, 310 + jack), Port::OUTPUT, module, Util2::CD2_OUTPUT)); | |||
| // addOutput(Port::create<PJ301MVAPort>(Vec(15 + jack * 3, 310 + jack), Port::OUTPUT, module, Util2::TRIGB_OUTPUT)); | |||
| } | |||
| } | |||
| }; | |||
| } // namespace rack_plugin_dBiz | |||
| using namespace rack_plugin_dBiz; | |||
| RACK_PLUGIN_MODEL_INIT(dBiz, Util2) { | |||
| Model *modelUtil2 = Model::create<Util2, Util2Widget>("dBiz", "Util2", "Util2", QUANTIZER_TAG); | |||
| return modelUtil2; | |||
| } | |||
| @@ -0,0 +1,220 @@ | |||
| /////////////////////////////////////////////////////////////////// | |||
| // | |||
| // dBiz revisited version of Cartesian seq. by Strum | |||
| // | |||
| /////////////////////////////////////////////////////////////////// | |||
| #include "dBiz.hpp" | |||
| #include "dsp/digital.hpp" | |||
| namespace rack_plugin_dBiz { | |||
| struct VCA4 : Module { | |||
| enum ParamIds | |||
| { | |||
| CV_PARAM, | |||
| MUTE_PARAM = CV_PARAM+16, | |||
| NUM_PARAMS = MUTE_PARAM + 16 | |||
| }; | |||
| enum InputIds | |||
| { | |||
| CH_INPUT, | |||
| CV_INPUT=CH_INPUT+4, | |||
| NUM_INPUTS=CV_INPUT+16 | |||
| }; | |||
| enum OutputIds | |||
| { | |||
| CH_OUTPUT, | |||
| NUM_OUTPUTS=CH_OUTPUT+4 | |||
| }; | |||
| enum LightIds | |||
| { | |||
| MUTE_LIGHT, | |||
| NUM_LIGHTS =MUTE_LIGHT+16 | |||
| }; | |||
| SchmittTrigger mute_triggers[16]; | |||
| bool mute_states[16] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; | |||
| float ch_in[4]; | |||
| float ch_out[4]; | |||
| float cv_val[16]; | |||
| VCA4() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |||
| void step() override; | |||
| json_t *toJson() override | |||
| { | |||
| json_t *rootJ = json_object(); | |||
| // mute states | |||
| json_t *mute_statesJ = json_array(); | |||
| for (int i = 0; i < 16; i++) | |||
| { | |||
| json_t *mute_stateJ = json_integer((int)mute_states[i]); | |||
| json_array_append_new(mute_statesJ, mute_stateJ); | |||
| } | |||
| json_object_set_new(rootJ, "mutes", mute_statesJ); | |||
| return rootJ; | |||
| } | |||
| void fromJson(json_t *rootJ) override | |||
| { | |||
| // mute states | |||
| json_t *mute_statesJ = json_object_get(rootJ, "mutes"); | |||
| if (mute_statesJ) | |||
| { | |||
| for (int i = 0; i < 16; i++) | |||
| { | |||
| json_t *mute_stateJ = json_array_get(mute_statesJ, i); | |||
| if (mute_stateJ) | |||
| mute_states[i] = !!json_integer_value(mute_stateJ); | |||
| } | |||
| } | |||
| } | |||
| }; | |||
| void VCA4::step() { | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| for (int j = 0; j < 4; j++) | |||
| { | |||
| if (mute_triggers[i + j * 4].process(params[MUTE_PARAM + i + j * 4].value)) | |||
| { | |||
| mute_states[i + j * 4] = !mute_states[+i + j * 4]; | |||
| } | |||
| lights[MUTE_LIGHT + i + j * 4].value = mute_states[i + j * 4] ? 1.0 : 0.0; | |||
| } | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| ch_in[i] = inputs[CH_INPUT + i].value; | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| for (int j = 0; j < 4; j++) | |||
| { | |||
| if (!mute_states[i + j * 4]) | |||
| { | |||
| cv_val[i + j * 4] = 0.0; | |||
| } | |||
| else | |||
| cv_val[i + j * 4] = params[CV_PARAM + i + j * 4].value*clamp(inputs[CV_INPUT + i+j*4].normalize(10.0f) / 10.0f, 0.0f, 1.0f); | |||
| } | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| outputs[CH_OUTPUT + i ].value =0.4* (ch_in[0]*cv_val[i] + ch_in[0]*cv_val[i] + ch_in[0]*cv_val[i] + ch_in[0]*cv_val[i]); | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| outputs[CH_OUTPUT + i ].value +=0.4* (ch_in[1] * cv_val[i+4] + ch_in[1] * cv_val[i+4] + ch_in[1] * cv_val[i+4] + ch_in[1] * cv_val[i+4]); | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| outputs[CH_OUTPUT + i].value +=0.4* (ch_in[2] * cv_val[i + 8] + ch_in[2] * cv_val[i + 8] + ch_in[2] * cv_val[i + 8] + ch_in[2] * cv_val[i + 8]); | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| outputs[CH_OUTPUT + i].value +=0.4* (ch_in[3] * cv_val[i+12] + ch_in[3] * cv_val[i+12] + ch_in[3] * cv_val[i+12] + ch_in[3] * cv_val[i+12]); | |||
| } | |||
| } | |||
| /*for (int i = 0; i < 4; i++) | |||
| { | |||
| ch_in[i]=inputs[CH_INPUT+i].value; | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| outputs[CH_OUTPUT+i].value=ch_out[i]; | |||
| } | |||
| }*/ | |||
| //////////////////////////////// | |||
| struct VCA4Widget : ModuleWidget | |||
| { | |||
| VCA4Widget(VCA4 *module) : ModuleWidget(module) | |||
| { | |||
| box.size = Vec(15*20, 380); | |||
| { | |||
| SVGPanel *panel = new SVGPanel(); | |||
| panel->box.size = box.size; | |||
| panel->setBackground(SVG::load(assetPlugin(plugin,"res/VCA4.svg"))); | |||
| addChild(panel); | |||
| } | |||
| int top = 20; | |||
| int left = 2; | |||
| int column_spacing = 35; | |||
| int row_spacing = 30; | |||
| int button_offset = 20; | |||
| // addOutput(Port::create<PJ301MOrPort>(Vec(130, 10), Port::OUTPUT, module, VCA4::X_OUT)); | |||
| // addOutput(Port::create<PJ301MOrPort>(Vec(130, 40), Port::OUTPUT, module, VCA4::Y_OUT)); | |||
| // addOutput(Port::create<PJ301MOrPort>(Vec(130, 70), Port::OUTPUT, module, VCA4::G_OUT)); | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| for ( int j = 0 ; j < 4 ; j++) | |||
| { | |||
| addParam(ParamWidget::create<LEDButton>(Vec(button_offset + left + column_spacing * i+140, top + row_spacing * j + 170), module, VCA4::MUTE_PARAM + i + j * 4, 0.0, 1.0, 0.0)); | |||
| addChild(GrayModuleLightWidget::create<BigLight<OrangeLight>>(Vec(button_offset + column_spacing * i+140, top + row_spacing * j + 170 ), module, VCA4::MUTE_LIGHT + i + j * 4)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(10+column_spacing * i, top + row_spacing * j + 170), module, VCA4::CV_PARAM + i + j * 4, 0.0, 1.0, 0.0)); | |||
| } | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| addInput(Port::create<PJ301MIPort>(Vec(30,24+40*i), Port::INPUT, module, VCA4::CH_INPUT + i)); | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| for (int j = 0; j < 4; j++) | |||
| { | |||
| if (j == 0 || j==2 ) | |||
| addInput(Port::create<PJ301MIPort>(Vec(column_spacing * 1.5 * i + 100, 60 + row_spacing * j), Port::INPUT, module, VCA4::CV_INPUT + i + j * 4)); | |||
| else | |||
| addInput(Port::create<PJ301MIPort>(Vec(column_spacing * 1.5 * i + 70, 60 + row_spacing * j), Port::INPUT, module, VCA4::CV_INPUT + i + j * 4)); | |||
| } | |||
| } | |||
| for (int i = 0; i < 4; i++) | |||
| { | |||
| addOutput(Port::create<PJ301MRPort>(Vec(70 + row_spacing *1.9* i,24), Port::OUTPUT, module, VCA4::CH_OUTPUT + i)); | |||
| } | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 30, 0))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(15, 365))); | |||
| addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 30, 365))); | |||
| } | |||
| }; | |||
| } // namespace rack_plugin_dBiz | |||
| using namespace rack_plugin_dBiz; | |||
| RACK_PLUGIN_MODEL_INIT(dBiz, VCA4) { | |||
| Model *modelVCA4 = Model::create<VCA4, VCA4Widget>("dBiz", "VCA4", "VCA4", UTILITY_TAG); | |||
| return modelVCA4; | |||
| } | |||
| @@ -146,8 +146,8 @@ VCA530Widget(VCA530 *module) : ModuleWidget(module) | |||
| addParam(ParamWidget::create<DaviesBlu>(Vec(52, med + up ), module, VCA530::MIX1_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<DaviesBlu>(Vec(129, med + up), module, VCA530::MIX2_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<SDKnob>(Vec(52, med + up ), module, VCA530::MIX1_PARAM, 0.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<SDKnob>(Vec(129, med + up), module, VCA530::MIX2_PARAM, 0.0, 1.0, 0.0)); | |||
| // channel strips | |||
| @@ -321,8 +321,8 @@ VerboWidget(Verbo *module) : ModuleWidget(module) | |||
| for(int i=0; i<8;i++) | |||
| { | |||
| addParam(ParamWidget::create<SlidePot>(Vec(left+95+space*i, 110), module, Verbo::HARM_PARAM+i, 0.0, 1.0, 0.0)); | |||
| addOutput(Port::create<PJ301MPort>(Vec(left+90+space*i, 80), Port::OUTPUT, module, Verbo::HARM_OUTPUT+i)); | |||
| addInput(Port::create<PJ301MPort>(Vec(left+90+space*i, 222), Port::INPUT, module, Verbo::HARM_INPUT+i)); | |||
| addOutput(Port::create<PJ301MIPort>(Vec(left+90+space*i, 80), Port::OUTPUT, module, Verbo::HARM_OUTPUT+i)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(left+90+space*i, 222), Port::INPUT, module, Verbo::HARM_INPUT+i)); | |||
| addChild(GrayModuleLightWidget::create<MediumLight<BlueLight>>(Vec(left+95+space*i, 250), module, Verbo::HARM_LIGHT+i)); | |||
| } | |||
| @@ -330,28 +330,28 @@ int ks = 60; | |||
| int vp=20; | |||
| addParam(ParamWidget::create<VerboS>(Vec(10, vp+272), module, Verbo::FM_PARAM, 0.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MPort>(Vec(15, vp+320), Port::INPUT, module, Verbo::FM_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(15, vp+320), Port::INPUT, module, Verbo::FM_INPUT)); | |||
| addParam(ParamWidget::create<VerboS>(Vec(55, vp+272), module, Verbo::CV_PARAM, -1.0, 1.0, 0.0)); | |||
| addInput(Port::create<PJ301MPort>(Vec(60, vp+320), Port::INPUT, module, Verbo::CV_INPUT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(90, vp+320), Port::INPUT, module, Verbo::PITCH_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(60, vp+320), Port::INPUT, module, Verbo::CV_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(90, vp+320), Port::INPUT, module, Verbo::PITCH_INPUT)); | |||
| addParam(ParamWidget::create<VerboS>(Vec(30+left+ks, vp+272), module, Verbo::WIDTH_CV_PARAM, -1.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<VerboS>(Vec(30+left+ks+space*2, vp+272), module, Verbo::WIDTH_PARAM, 1.0, 8.0, 0.0)); | |||
| addParam(ParamWidget::create<Trimpot>(Vec(30+left+ks*2-15, vp+322.5), module, Verbo::SLOPE_PARAM, 0.0, 5.0, 0.0)); | |||
| addInput(Port::create<PJ301MPort>(Vec(30+left+ks*2+25, vp+320), Port::INPUT, module, Verbo::SLOPE_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(30+left+ks*2+25, vp+320), Port::INPUT, module, Verbo::SLOPE_INPUT)); | |||
| addParam(ParamWidget::create<VerboS>(Vec(30+left+ks*3, vp+272), module, Verbo::CENTER_CV_PARAM, -1.0, 1.0, 0.0)); | |||
| addParam(ParamWidget::create<VerboS>(Vec(30+left+ks*3+space*2, vp+272), module, Verbo::CENTER_PARAM, -1.0, 8.0, -1.0)); | |||
| addInput(Port::create<PJ301MPort>(Vec(30+left+ks+5, vp+320), Port::INPUT, module, Verbo::WIDTH_INPUT)); | |||
| addInput(Port::create<PJ301MPort>(Vec(30+left+ks*3+5, vp+320), Port::INPUT, module, Verbo::CENTER_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(30+left+ks+5, vp+320), Port::INPUT, module, Verbo::WIDTH_INPUT)); | |||
| addInput(Port::create<PJ301MIPort>(Vec(30+left+ks*3+5, vp+320), Port::INPUT, module, Verbo::CENTER_INPUT)); | |||
| addOutput(Port::create<PJ301MPort>(Vec(5, 80), Port::OUTPUT, module, Verbo::TRI_OUTPUT)); | |||
| addOutput(Port::create<PJ301MPort>(Vec(33, 80), Port::OUTPUT, module, Verbo::SQR_OUTPUT)); | |||
| addOutput(Port::create<PJ301MPort>(Vec(61, 80), Port::OUTPUT, module, Verbo::SAW_OUTPUT)); | |||
| addOutput(Port::create<PJ301MPort>(Vec(89, 80), Port::OUTPUT, module, Verbo::SIN_OUTPUT)); | |||
| addOutput(Port::create<PJ301MIPort>(Vec(5, 80), Port::OUTPUT, module, Verbo::TRI_OUTPUT)); | |||
| addOutput(Port::create<PJ301MIPort>(Vec(33, 80), Port::OUTPUT, module, Verbo::SQR_OUTPUT)); | |||
| addOutput(Port::create<PJ301MIPort>(Vec(61, 80), Port::OUTPUT, module, Verbo::SAW_OUTPUT)); | |||
| addOutput(Port::create<PJ301MIPort>(Vec(89, 80), Port::OUTPUT, module, Verbo::SIN_OUTPUT)); | |||
| } | |||
| @@ -1,10 +1,13 @@ | |||
| #include "dBiz.hpp" | |||
| #include <math.h> | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, FourSeq); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, dBizBlank); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Multiple); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Contorno); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Chord); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Divider); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, DualFilter); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Utility); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Transpose); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Bene); | |||
| @@ -12,7 +15,11 @@ RACK_PLUGIN_MODEL_DECLARE(dBiz, Bene2); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, BenePads); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, SubMix); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Remix); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, SmiX); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, SuHa); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, TROSC); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, PerfMixer); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Util2); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, VCA530); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, Verbo); | |||
| RACK_PLUGIN_MODEL_DECLARE(dBiz, DVCO); | |||
| @@ -21,10 +28,13 @@ RACK_PLUGIN_MODEL_DECLARE(dBiz, DAOSC); | |||
| RACK_PLUGIN_INIT(dBiz) { | |||
| RACK_PLUGIN_INIT_ID(); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, FourSeq); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, dBizBlank); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Multiple); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Contorno); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Chord); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Divider); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, DualFilter); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Utility); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Transpose); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Bene); | |||
| @@ -32,7 +42,11 @@ RACK_PLUGIN_INIT(dBiz) { | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, BenePads); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, SubMix); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Remix); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, SmiX); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, SuHa); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, TROSC); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, PerfMixer); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Util2); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, VCA530); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, Verbo); | |||
| RACK_PLUGIN_MODEL_ADD(dBiz, DVCO); | |||
| @@ -28,6 +28,29 @@ namespace rack_plugin_dBiz { | |||
| //////////////////// | |||
| // Knobs | |||
| //////////////////// | |||
| struct DKnob : SVGKnob | |||
| { | |||
| DKnob() | |||
| { | |||
| minAngle = -0.83 * M_PI; | |||
| maxAngle = 0.83 * M_PI; | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/DKnob.svg"))); | |||
| box.size = Vec(50, 50); | |||
| } | |||
| }; | |||
| struct SDKnob : SVGKnob | |||
| { | |||
| SDKnob() | |||
| { | |||
| minAngle = -0.83 * M_PI; | |||
| maxAngle = 0.83 * M_PI; | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/SDKnob.svg"))); | |||
| box.size = Vec(30, 30); | |||
| } | |||
| }; | |||
| struct VerboL : SVGKnob | |||
| { | |||
| VerboL() | |||
| @@ -50,46 +73,39 @@ struct VerboS : SVGKnob | |||
| } | |||
| }; | |||
| struct SmallKnob : SVGKnob | |||
| struct VerboDL : SVGKnob | |||
| { | |||
| SmallKnob() | |||
| VerboDL() | |||
| { | |||
| minAngle = -0.83 * M_PI; | |||
| maxAngle = 0.83 * M_PI; | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/VerboDL.svg"))); | |||
| box.size = Vec(80, 80); | |||
| } | |||
| }; | |||
| struct SmallOra : SmallKnob | |||
| struct VerboDS : SVGKnob | |||
| { | |||
| SmallOra() | |||
| VerboDS() | |||
| { | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/SmallOra.svg"))); | |||
| minAngle = -0.83 * M_PI; | |||
| maxAngle = 0.83 * M_PI; | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/VerboDS.svg"))); | |||
| box.size = Vec(35, 35); | |||
| } | |||
| }; | |||
| struct SmallOraSnapKnob : SmallOra | |||
| { | |||
| SmallOraSnapKnob() | |||
| { | |||
| snap = true; | |||
| }; | |||
| }; | |||
| struct LargeOra : SmallOra | |||
| { | |||
| LargeOra() | |||
| { | |||
| box.size = Vec(45, 45); | |||
| } | |||
| }; | |||
| struct MicroOra : SmallOra | |||
| struct SmallKnob : SVGKnob | |||
| { | |||
| MicroOra() | |||
| SmallKnob() | |||
| { | |||
| box.size = Vec(25, 25); | |||
| minAngle = -0.83 * M_PI; | |||
| maxAngle = 0.83 * M_PI; | |||
| } | |||
| }; | |||
| struct SmallBlu : SmallKnob | |||
| { | |||
| SmallBlu() | |||
| @@ -148,59 +164,6 @@ struct DaviesKnob : SVGKnob | |||
| } | |||
| }; | |||
| struct DaviesGre : DaviesKnob | |||
| { | |||
| DaviesGre() | |||
| { | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/DaviesGre.svg"))); | |||
| } | |||
| }; | |||
| struct LDaviesGre : DaviesGre | |||
| { | |||
| LDaviesGre() | |||
| { | |||
| box.size = Vec(45, 45); | |||
| } | |||
| }; | |||
| struct DaviesWhy : DaviesKnob | |||
| { | |||
| DaviesWhy() | |||
| { | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/DaviesWhy.svg"))); | |||
| } | |||
| }; | |||
| struct LDaviesWhy : DaviesWhy | |||
| { | |||
| LDaviesWhy() | |||
| { | |||
| box.size = Vec(45, 45); | |||
| } | |||
| }; | |||
| struct DaviesWhySnapKnob : DaviesWhy | |||
| { | |||
| DaviesWhySnapKnob() | |||
| { | |||
| snap = true; | |||
| }; | |||
| }; | |||
| struct DaviesAzz : DaviesKnob | |||
| { | |||
| DaviesAzz() | |||
| { | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/DaviesAzz.svg"))); | |||
| } | |||
| }; | |||
| struct LDaviesAzz : DaviesAzz | |||
| { | |||
| LDaviesAzz() | |||
| { | |||
| box.size = Vec(45, 45); | |||
| } | |||
| }; | |||
| struct DaviesPur : DaviesKnob | |||
| { | |||
| DaviesPur() | |||
| @@ -246,20 +209,6 @@ struct LDaviesRed : DaviesRed | |||
| } | |||
| }; | |||
| struct DaviesYel : DaviesKnob | |||
| { | |||
| DaviesYel() | |||
| { | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/DaviesYel.svg"))); | |||
| } | |||
| }; | |||
| struct LDaviesYel : DaviesYel | |||
| { | |||
| LDaviesYel() | |||
| { | |||
| box.size = Vec(45, 45); | |||
| } | |||
| }; | |||
| struct RoundAzz : DaviesKnob | |||
| { | |||
| @@ -277,11 +226,11 @@ struct RoundRed : DaviesKnob | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/RoundRed.svg"))); | |||
| } | |||
| }; | |||
| struct RoundWhy : DaviesKnob | |||
| { | |||
| RoundWhy() | |||
| { | |||
| box.size = Vec(30, 30); | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/RoundWhy.svg"))); | |||
| } | |||
| }; | |||
| @@ -298,7 +247,7 @@ struct LRoundWhy : RoundWhy | |||
| { | |||
| LRoundWhy() | |||
| { | |||
| box.size = Vec(45, 45); | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/LRoundWhy.svg"))); | |||
| } | |||
| }; | |||
| @@ -314,7 +263,7 @@ struct LRoundBlu : RoundBlu | |||
| { | |||
| LRoundBlu() | |||
| { | |||
| box.size = Vec(45, 45); | |||
| setSVG(SVG::load(assetPlugin(plugin, "res/component/LRoundBlu.svg"))); | |||
| } | |||
| }; | |||
| @@ -328,6 +277,7 @@ struct FlatA : DaviesKnob | |||
| }; | |||
| struct FlatASnap : FlatA | |||
| { | |||
| FlatASnap() | |||
| { | |||
| snap = true; | |||
| @@ -487,6 +437,16 @@ struct PJ301MIPort : SVGPort | |||
| } | |||
| }; | |||
| struct PJ301MVAPort : SVGPort | |||
| { | |||
| PJ301MVAPort() | |||
| { | |||
| background->svg = SVG::load(assetPlugin(plugin, "res/component/PJ301MVA.svg")); | |||
| background->wrap(); | |||
| box.size = background->box.size; | |||
| } | |||
| }; | |||
| struct PJ301MOrPort : SVGPort | |||
| { | |||
| PJ301MOrPort() | |||
| @@ -522,6 +482,25 @@ struct PJ301MCPort : SVGPort | |||
| // SWITCHES | |||
| //////////////////////////////////////////////// | |||
| struct SilverSwitch : SVGSwitch, ToggleSwitch | |||
| { | |||
| SilverSwitch() | |||
| { | |||
| addFrame(SVG::load(assetPlugin(plugin,"res/component/SilverSwitch_0.svg"))); | |||
| addFrame(SVG::load(assetPlugin(plugin,"res/component/SilverSwitch_2.svg"))); | |||
| } | |||
| }; | |||
| struct SilverSwitch3 : SVGSwitch, ToggleSwitch | |||
| { | |||
| SilverSwitch3() | |||
| { | |||
| addFrame(SVG::load(assetPlugin(plugin, "res/component/SilverSwitch_0.svg"))); | |||
| addFrame(SVG::load(assetPlugin(plugin, "res/component/SilverSwitch_1.svg"))); | |||
| addFrame(SVG::load(assetPlugin(plugin, "res/component/SilverSwitch_2.svg"))); | |||
| } | |||
| }; | |||
| struct CKSSS : SVGSwitch, ToggleSwitch | |||
| { | |||
| CKSSS() | |||
| @@ -1,4 +1,15 @@ | |||
| ** October ??th, 2018 | |||
| - add Linux port | |||
| - add module dBiz.FourSeq | |||
| - add module dBiz.Divider | |||
| - add module dBiz.DualFilter | |||
| - add module dBiz.SmiX | |||
| - add module dBiz.SuHa | |||
| - add module dBiz.TROSC | |||
| - add module dBiz.Util2 | |||
| ** October 12th, 2018 | |||
| - add support for ppqPos based timing clock | |||
| (fixes CLK1/2 output in FLStudio) | |||
| @@ -1,23 +1,37 @@ | |||
| # dBiz_Modules | |||
| Here's my collection of modules for VCVRack! | |||
| Many thx to Michael Hetrick, Strum's Mental and Jeremy Wen for sources and inspiring me! | |||
| Ready for v 0.5 here's what i have: | |||
| First of all many thx to all the awesome developers and VCV community! Whithout you this pack would not have existed! | |||
| - Quad envelope generator based on rampage, | |||
| Now ready for v 0.6.2 this is what you'll find | |||
|  | |||
| UTILITY AND QUANTIZER | |||
| - Quad envelope AD, | |||
| - Chord generator/transformer, | |||
| - Utility transposer octave/sem/fine with ability to link the inputs, | |||
| - Performance 8 channel stereo mixer with stereo sends and return | |||
| - VCA based on Roland VCA530 | |||
| - Simple transposer | |||
|  | |||
|  | |||
| VCA AND ROUTERS | |||
| Based on Strum modules i've made a compact 4 channel mixer, a 8 channel mixer,a chord utility and from Michael Hetrick Scanner i've made Remix Module ! | |||
| - 6 Ch. mixer router/scanner, | |||
| - 4x4 in/out matrix mixer, | |||
| - 6 Ch. VCA based on Roland system 500 / 530 | |||
| - 8 Ch. mixer scanner/sequencer/router | |||
|  | |||
|  | |||
| GRID SEQUENCERS | |||
| Starting from some grid sequencers like Cartesian by strum and Gridseq by JW i've made those grid sequencers: | |||
|  | |||
|  | |||
| - Bene | |||
| Classical 4x4 cv sequencer with internal quantization , | |||
| BenePads is his "keyboard" it sends position to Bene(x,y) and a Gate out(g); | |||
| @@ -25,13 +39,25 @@ Classical 4x4 cv sequencer with internal quantization , | |||
| - Bene2 | |||
| Evolution of Bene: Can out up to 8 individual sequence with cv (colums and rows) and gate (on the bottom) outs running with independent cloks. still some fix to do as usuall but it's really fun to play with it! | |||
| And here's a collection of oscillator you might know... | |||
|  | |||
| OSCILLATORS: | |||
| They don't need introductions ;) | |||
|  | |||
| VINTAGE SERIE | |||
| This mini 4 modules series is based on subharmonicon sequencer,oscillator and clock subdivision. | |||
| The Utility2 module is a collection of 2 glide generator, 2 ad envelope and 4 button/toggle with value selection. | |||
|  | |||
| I'm not a real coder so push req. and advice are always welcome | |||
| The code and how it sounds can be improoved as usuall so push req. and advice are always welcome | |||
| Have fun! | |||
| @@ -3433,9 +3433,9 @@ | |||
| borderopacity="1.0" | |||
| inkscape:pageopacity="0.0" | |||
| inkscape:pageshadow="2" | |||
| inkscape:zoom="2.2606344" | |||
| inkscape:cx="44.406358" | |||
| inkscape:cy="169.31782" | |||
| inkscape:zoom="2.5944565" | |||
| inkscape:cx="86.453105" | |||
| inkscape:cy="369.01201" | |||
| inkscape:document-units="px" | |||
| inkscape:current-layer="layer1" | |||
| showgrid="true" | |||
| @@ -3700,17 +3700,17 @@ | |||
| style="display:inline"> | |||
| <path | |||
| style="fill:none;stroke:#000000;stroke-width:0.90497124px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="M 62.653303,24.17144 V 349.34482" | |||
| d="M 64.653303,24.17144 V 349.34482" | |||
| id="path5273" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="display:inline;fill:none;stroke:#000000;stroke-width:0.90497124px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="M 127.49724,24.326629 V 349.5" | |||
| d="M 129.49724,24.326629 V 349.5" | |||
| id="path5273-3" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| style="display:inline;fill:none;stroke:#000000;stroke-width:0.90497124px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |||
| d="M 192.30151,24.129685 V 349.30305" | |||
| d="M 194.30151,24.129685 V 349.30305" | |||
| id="path5273-5" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| @@ -4464,102 +4464,126 @@ | |||
| <g | |||
| aria-label="RANGE" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.79508305px;line-height:1.25;font-family:'DejaVu Math TeX Gyre';-inkscape-font-specification:'DejaVu Math TeX Gyre';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.54969269" | |||
| id="text5845"> | |||
| id="text5845" | |||
| transform="translate(-0.81763573,-3.8156334)"> | |||
| <path | |||
| d="m 39.653742,20.575103 q 0.41227,0 0.721472,-0.309203 0.274846,-0.274846 0.274846,-0.824539 0,-0.515337 -0.309202,-0.824539 -0.343558,-0.343558 -0.927606,-0.343558 h -0.755828 v 2.301839 z m -0.06871,-2.954599 q 0.858895,0 1.408588,0.549693 0.446625,0.446625 0.446625,1.271164 0,0.755828 -0.446625,1.236809 -0.309202,0.343558 -0.618404,0.446625 l 1.236808,3.195089 h -0.824539 l -1.168097,-3.092021 h -0.961962 v 3.092021 h -0.790183 v -6.69938 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5922" /> | |||
| id="path5922" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 42.814475,24.319884 h -0.824539 l 1.71779,-6.69938 h 0.687116 l 1.717789,6.69938 h -0.824539 l -0.480981,-1.95828 h -1.511655 z m 1.271164,-4.878523 h -0.06871 l -0.549693,2.267483 h 1.168097 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5924" /> | |||
| id="path5924" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 50.200971,17.620504 v 6.69938 h -0.961963 l -1.786501,-5.015946 h -0.03436 v 5.015946 h -0.790183 v -6.69938 h 0.961962 l 1.786502,5.015946 h 0.03435 v -5.015946 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5926" /> | |||
| id="path5926" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 53.877041,19.716208 q -0.03436,-0.893251 -0.343558,-1.202453 -0.240491,-0.240491 -0.549693,-0.240491 -0.274846,0 -0.446625,0.171779 -0.755827,0.755828 -0.755827,2.679752 0,1.683434 0.549692,2.233127 0.274847,0.274846 0.549693,0.274846 0.343558,0 0.618404,-0.274846 0.41227,-0.41227 0.41227,-1.374232 v -0.65276 h -1.06503 v -0.65276 h 1.752146 v 3.641714 H 54.014464 L 53.911397,23.70148 q -0.480981,0.618404 -1.133741,0.618404 -0.584049,0 -0.996318,-0.41227 -0.790184,-0.790183 -0.790184,-2.782819 0,-2.130059 0.858895,-2.988954 0.515337,-0.515337 1.133741,-0.515337 0.65276,0 1.030674,0.377914 0.584049,0.584049 0.584049,1.71779 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5928" /> | |||
| id="path5928" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 56.350658,20.437679 h 2.336193 v 0.65276 h -2.336193 v 2.576685 h 2.714107 v 0.65276 h -3.504291 v -6.69938 h 3.332512 v 0.65276 h -2.542328 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5930" /> | |||
| id="path5930" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| aria-label="RANGE" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.79508305px;line-height:1.25;font-family:'DejaVu Math TeX Gyre';-inkscape-font-specification:'DejaVu Math TeX Gyre';letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.54969269" | |||
| id="text5845-7"> | |||
| id="text5845-7" | |||
| transform="translate(-0.81763573,-3.8156334)"> | |||
| <path | |||
| d="m 102.54877,20.575103 q 0.41227,0 0.72147,-0.309203 0.27485,-0.274846 0.27485,-0.824539 0,-0.515337 -0.3092,-0.824539 -0.34356,-0.343558 -0.92761,-0.343558 h -0.75583 v 2.301839 z m -0.0687,-2.954599 q 0.85889,0 1.40859,0.549693 0.44662,0.446625 0.44662,1.271164 0,0.755828 -0.44662,1.236809 -0.30921,0.343558 -0.61841,0.446625 l 1.23681,3.195089 h -0.82454 l -1.1681,-3.092021 h -0.96196 v 3.092021 h -0.79018 v -6.69938 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5911" /> | |||
| id="path5911" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 105.7095,24.319884 h -0.82454 l 1.71779,-6.69938 h 0.68712 l 1.71779,6.69938 h -0.82454 l -0.48098,-1.95828 h -1.51166 z m 1.27117,-4.878523 h -0.0687 l -0.54969,2.267483 h 1.1681 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5913" /> | |||
| id="path5913" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 113.096,17.620504 v 6.69938 h -0.96196 l -1.78651,-5.015946 h -0.0344 v 5.015946 H 109.523 v -6.69938 h 0.96196 l 1.7865,5.015946 h 0.0343 v -5.015946 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5915" /> | |||
| id="path5915" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 116.77207,19.716208 q -0.0344,-0.893251 -0.34356,-1.202453 -0.24049,-0.240491 -0.54969,-0.240491 -0.27485,0 -0.44663,0.171779 -0.75583,0.755828 -0.75583,2.679752 0,1.683434 0.5497,2.233127 0.27484,0.274846 0.54969,0.274846 0.34356,0 0.6184,-0.274846 0.41227,-0.41227 0.41227,-1.374232 v -0.65276 h -1.06503 v -0.65276 h 1.75215 v 3.641714 h -0.58405 l -0.10307,-0.618404 q -0.48098,0.618404 -1.13374,0.618404 -0.58405,0 -0.99632,-0.41227 -0.79018,-0.790183 -0.79018,-2.782819 0,-2.130059 0.8589,-2.988954 0.51533,-0.515337 1.13374,-0.515337 0.65276,0 1.03067,0.377914 0.58405,0.584049 0.58405,1.71779 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5917" /> | |||
| id="path5917" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 119.24568,20.437679 h 2.3362 v 0.65276 h -2.3362 v 2.576685 h 2.71411 v 0.65276 h -3.50429 v -6.69938 h 3.33251 v 0.65276 h -2.54233 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5919" /> | |||
| id="path5919" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| aria-label="RANGE" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.79508305px;line-height:1.25;font-family:'DejaVu Math TeX Gyre';-inkscape-font-specification:'DejaVu Math TeX Gyre';letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.54969269" | |||
| id="text5845-4"> | |||
| id="text5845-4" | |||
| transform="translate(-0.81763573,-3.8156334)"> | |||
| <path | |||
| d="m 167.87351,20.575103 q 0.41227,0 0.72148,-0.309203 0.27484,-0.274846 0.27484,-0.824539 0,-0.515337 -0.3092,-0.824539 -0.34356,-0.343558 -0.92761,-0.343558 h -0.75582 v 2.301839 z m -0.0687,-2.954599 q 0.8589,0 1.40859,0.549693 0.44663,0.446625 0.44663,1.271164 0,0.755828 -0.44663,1.236809 -0.3092,0.343558 -0.6184,0.446625 l 1.2368,3.195089 h -0.82453 l -1.1681,-3.092021 h -0.96196 v 3.092021 h -0.79019 v -6.69938 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5900" /> | |||
| id="path5900" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 171.03425,24.319884 h -0.82454 l 1.71779,-6.69938 h 0.68711 l 1.71779,6.69938 h -0.82454 l -0.48098,-1.95828 h -1.51165 z m 1.27116,-4.878523 h -0.0687 l -0.54969,2.267483 h 1.16809 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5902" /> | |||
| id="path5902" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 178.42074,17.620504 v 6.69938 h -0.96196 l -1.7865,-5.015946 h -0.0344 v 5.015946 h -0.79018 v -6.69938 h 0.96196 l 1.7865,5.015946 h 0.0344 v -5.015946 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5904" /> | |||
| id="path5904" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 182.09681,19.716208 q -0.0344,-0.893251 -0.34355,-1.202453 -0.2405,-0.240491 -0.5497,-0.240491 -0.27484,0 -0.44662,0.171779 -0.75583,0.755828 -0.75583,2.679752 0,1.683434 0.54969,2.233127 0.27485,0.274846 0.5497,0.274846 0.34355,0 0.6184,-0.274846 0.41227,-0.41227 0.41227,-1.374232 v -0.65276 h -1.06503 v -0.65276 h 1.75214 v 3.641714 h -0.58404 l -0.10307,-0.618404 q -0.48098,0.618404 -1.13374,0.618404 -0.58405,0 -0.99632,-0.41227 -0.79018,-0.790183 -0.79018,-2.782819 0,-2.130059 0.85889,-2.988954 0.51534,-0.515337 1.13374,-0.515337 0.65276,0 1.03068,0.377914 0.58404,0.584049 0.58404,1.71779 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5906" /> | |||
| id="path5906" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 184.57043,20.437679 h 2.33619 v 0.65276 h -2.33619 v 2.576685 h 2.71411 v 0.65276 h -3.50429 v -6.69938 h 3.33251 v 0.65276 h -2.54233 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5908" /> | |||
| id="path5908" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| aria-label="RANGE" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.79508305px;line-height:1.25;font-family:'DejaVu Math TeX Gyre';-inkscape-font-specification:'DejaVu Math TeX Gyre';letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.54969269" | |||
| id="text5845-7-9"> | |||
| id="text5845-7-9" | |||
| transform="translate(-0.81763573,-3.8156334)"> | |||
| <path | |||
| d="m 230.76855,20.575103 q 0.41227,0 0.72147,-0.309203 0.27485,-0.274846 0.27485,-0.824539 0,-0.515337 -0.3092,-0.824539 -0.34356,-0.343558 -0.92761,-0.343558 h -0.75583 v 2.301839 z m -0.0687,-2.954599 q 0.85889,0 1.40859,0.549693 0.44662,0.446625 0.44662,1.271164 0,0.755828 -0.44662,1.236809 -0.30921,0.343558 -0.61841,0.446625 l 1.23681,3.195089 h -0.82454 l -1.1681,-3.092021 h -0.96196 v 3.092021 h -0.79018 v -6.69938 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5889" /> | |||
| id="path5889" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 233.92928,24.319884 h -0.82454 l 1.71779,-6.69938 h 0.68712 l 1.71779,6.69938 h -0.82454 l -0.48098,-1.95828 h -1.51166 z m 1.27117,-4.878523 h -0.0687 l -0.54969,2.267483 h 1.1681 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5891" /> | |||
| id="path5891" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 241.31578,17.620504 v 6.69938 h -0.96196 l -1.78651,-5.015946 h -0.0343 v 5.015946 h -0.79018 v -6.69938 h 0.96196 l 1.7865,5.015946 h 0.0343 v -5.015946 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5893" /> | |||
| id="path5893" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 244.99185,19.716208 q -0.0344,-0.893251 -0.34356,-1.202453 -0.24049,-0.240491 -0.54969,-0.240491 -0.27485,0 -0.44663,0.171779 -0.75583,0.755828 -0.75583,2.679752 0,1.683434 0.5497,2.233127 0.27484,0.274846 0.54969,0.274846 0.34356,0 0.6184,-0.274846 0.41227,-0.41227 0.41227,-1.374232 v -0.65276 h -1.06503 v -0.65276 h 1.75215 v 3.641714 h -0.58405 L 245.0262,23.70148 q -0.48098,0.618404 -1.13374,0.618404 -0.58405,0 -0.99632,-0.41227 -0.79018,-0.790183 -0.79018,-2.782819 0,-2.130059 0.8589,-2.988954 0.51533,-0.515337 1.13374,-0.515337 0.65276,0 1.03067,0.377914 0.58405,0.584049 0.58405,1.71779 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5895" /> | |||
| id="path5895" | |||
| inkscape:connector-curvature="0" /> | |||
| <path | |||
| d="m 247.46546,20.437679 h 2.3362 v 0.65276 h -2.3362 v 2.576685 h 2.71411 v 0.65276 h -3.50429 v -6.69938 h 3.33251 v 0.65276 h -2.54233 z" | |||
| style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'MS Gothic';-inkscape-font-specification:'MS Gothic';stroke-width:0.54969269" | |||
| id="path5897" /> | |||
| id="path5897" | |||
| inkscape:connector-curvature="0" /> | |||
| </g> | |||
| <g | |||
| aria-label="CYCLE" | |||