commit e3bd1cd1ff309bbb1dae38aba80778549933f758
parent 32a5b84747bda9321a9f5a0747b2cb7d11f20de3
Author: Matt Demanett <matt@demanett.net>
Date: Sat, 5 Sep 2020 22:43:17 -0400
MEGAGATE: stereo low- and high-pass gate.
Diffstat:
30 files changed, 4163 insertions(+), 303 deletions(-)
diff --git a/plugin.json b/plugin.json
@@ -174,6 +174,17 @@
]
},
{
+ "slug": "Bogaudio-MegaGate",
+ "name": "MEGAGATE",
+ "description": "Low- and high-pass gate",
+ "manualUrl": "https://github.com/bogaudio/BogaudioModules/blob/master/README.md#megagate",
+ "tags": [
+ "Low-pass gate",
+ "Dual",
+ "Polyphonic"
+ ]
+ },
+ {
"slug": "Bogaudio-PEQ",
"name": "PEQ",
"description": "3-channel parametric equalizer",
diff --git a/res-pp/MegaGate-dark-pp.svg b/res-pp/MegaGate-dark-pp.svg
@@ -0,0 +1,959 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="270.0" height="380.0" viewBox="0 0 270.0 380.0">
+ <style>text {
+ fill: #333;
+ font-family: 'Roboto', sans-serif;
+ font-weight: bold;
+}
+text.title {
+ font-family: 'Comfortaa', sans-serif;
+ font-weight: normal;
+}
+text.brand {
+ font-family: 'Audiowide', sans-serif;
+ font-weight: bold;
+}
+
+polyline {
+ stroke: #333;
+}
+polyline.guide {
+ stroke: #0f0;
+}
+path {
+ stroke: #333;
+}
+
+rect.module-background, .background-fill {
+ fill: #ddd;
+}
+polyline.module-border-inner {
+ stroke: #e4e4e4;
+}
+polyline.module-border-middle {
+ stroke: #ebebeb;
+}
+polyline.module-border-outer {
+ stroke: #f2f2f2;
+}
+
+g.io-group {
+}
+rect.input-background, rect.input-background-filler {
+ fill: #fafafa;
+}
+rect.output-background, rect.output-background-filler {
+ fill: #bbb;
+}
+text.input-label, text.output-label {
+ /* font-size: 6pt; */
+}
+polyline.input-label, polyline.output-label {
+}
+path.input-label, path.output-label {
+}
+
+circle.port-rim {
+ stroke: #f0f0f0;
+}
+circle.port-barrel {
+ stroke: #222;
+ fill: #222;
+}
+circle.knob-center {
+ fill: #eee;
+}
+circle.knob-rim {
+ fill: #333;
+}
+circle.knob-tick {
+ fill: #fff;
+}
+polyline.knob-tick {
+ stroke: #fff;
+}
+
+
+text {
+ fill: #eee;
+}
+
+polyline {
+ stroke: #ccc;
+}
+path {
+ stroke: #ccc;
+}
+
+rect.module-background, .background-fill {
+ fill: #111;
+}
+polyline.module-border-inner {
+ stroke: #191919;
+}
+polyline.module-border-middle {
+ stroke: #111;
+}
+polyline.module-border-outer {
+ stroke: #000;
+}
+
+rect.input-background, rect.input-background-filler {
+ fill: #aaa;
+}
+rect.output-background, rect.output-background-filler {
+ fill: #666;
+}
+text.input-label {
+ fill: #222;
+}
+polyline.input-label, path.input-label {
+ stroke: #222;
+}
+text.output-label {
+ fill: #ddd;
+}
+polyline.output-label, path.output-label {
+ stroke: #ddd;
+}
+
+circle.port-rim {
+ stroke: #c0c0c0;
+}
+circle.port-barrel {
+ stroke: #222;
+ fill: #222;
+}
+circle.knob-center {
+ fill: #888;
+}
+circle.knob-rim {
+ fill: #444;
+}
+circle.knob-tick {
+ fill: #fff;
+}
+polyline.knob-tick {
+ stroke: #fff;
+}
+</style>
+
+ <defs>
+ <symbol id="dial-tilt-megagate" viewBox="0 0 50px 50px">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">L</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(17 0)"/>
+ <polyline points="0,0 4,0" stroke-width="1.5" transform="rotate(-90) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">R</text>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="dial-filtermix-megagate" viewBox="0 0 40px 40px">
+ <g transform="translate(20 20)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(15 0) rotate(240.0) translate(-2 3)">LPF</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(11.5 0)"/>
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(12.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(11.5 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(15 0) rotate(-60.0) translate(2 3)">HPF</text>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="single-input" viewBox="0 0 30px 28px">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="0.0">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </symbol>
+ </defs>
+
+
+
+ <rect class="module-background background-fill" width="270.0" height="380.0"/>
+
+
+ <polyline class="module-border-inner" points="1,1 269.0,1 269.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/>
+ <polyline class="module-border-middle" points="0.5,0.5 269.5,0.5 269.5,379.5 0.5,379.5 0.5,0.5" stroke-width="0.8" fill="none"/>
+ <polyline class="module-border-outer" points="0,0 270.0,0 270.0,380.0 0,380.0 0,0" stroke-width="1" fill="none"/>
+
+ <text class="title" font-size="12pt" letter-spacing="4px" text-anchor="middle" transform="translate(135.0 19)">MEGAGATE</text>
+ <g transform="translate(0 374)">
+ <text class="brand" font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate(135.0 0)">BOGAUDIO</text>
+ <rect class="background-fill" width="3" height="3" transform="translate(119.5 -5)"/>
+ </g>
+
+
+
+
+
+
+
+
+
+ <g transform="translate(-10 0)">
+ <g transform="translate(0 31)">
+
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42 0)">RISE</text>
+ <g transform="translate(27.5 10.5)"><svg id="RISE_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(19.5 2.5)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(21.0 0) rotate(240.0) translate(0 3)">0MS</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-185.22774424948338) translate(20 0) rotate(185.22774424948338) translate(0 3)">10</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-153.39745962155612) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-117.52551286084109) translate(20 0) rotate(117.52551286084109) translate(0 3)">50</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-66.79491924311225) translate(20 0) rotate(66.79491924311225) translate(0 3)">100</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.867965644035735) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(4.94897427831782) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(33.861278752583075) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(21.0 0) rotate(-60.0) translate(0 3)">300</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(34.0 58.0)"><svg id="RISE_SHAPE_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(22.0 46.0)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-52.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-15) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(22.5) translate(10 0)"/>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-127.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-165) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-202.5) translate(10 0)"/>
+
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#ccc" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-45) translate(0 0)"/>
+ <polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(-45) translate(0 0)"/>
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#ccc" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(135) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(27.5 85)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="RISE_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(55 31)">
+
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42 0)">FALL</text>
+ <g transform="translate(27.5 10.5)"><svg id="FALL_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(19.5 2.5)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(20 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(21 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(21 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(20 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(34.0 58.0)"><svg id="FALL_SHAPE_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(22.0 46.0)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-52.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-15) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(22.5) translate(10 0)"/>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-127.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-165) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-202.5) translate(10 0)"/>
+
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#ccc" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-135) translate(0 0)"/>
+ <polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(45) translate(0 0)"/>
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#ccc" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(45) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(27.5 85)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="FALL_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(0 165)">
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(42.5 0)">MIN GATE</text>
+ <g transform="translate(19.5 3.0)"><svg id="MINIMUM_GATE_PARAM">
+ <g transform="translate(22.5 22.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(17 0.5)">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 1.5,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(23 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(23 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(27.5 53)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="MINIMUM_GATE_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(55 165)">
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42.5 0)">TILT</text>
+ <g transform="translate(19.5 3.0)"><svg id="TILT_PARAM">
+ <g transform="translate(22.5 22.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <use xlink:href="#dial-tilt-megagate" transform="translate(17 0.5)" href="#dial-tilt-megagate"/>
+ <g transform="translate(27.5 53)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="TILT_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(-10 256)">
+ <g transform="translate(40 0)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">GT TO TRIG</text>
+ <g transform="translate(0 -1)"><svg id="GATE_TO_TRIGGER_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+
+ <g transform="translate(40 14)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">TIMES 10X</text>
+ <g transform="translate(0 -1)"><svg id="TIMES_10X_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+
+ <g transform="translate(60 256)">
+ <g transform="translate(40 0)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">FLTRS SER</text>
+ <g transform="translate(0 -1)"><svg id="FILTERS_SERIAL_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+
+ <g transform="translate(40 14)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">LIN VCA</text>
+ <g transform="translate(0 -1)"><svg id="LINEAR_VCA_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+
+ <g class="io-group" transform="translate(8 284)">
+ <rect class="input-background" width="120" height="37.5" rx="5" transform="translate(7 0)"/>
+ <rect class="input-background-filler" width="10" height="10" transform="translate(117 27.5)"/>
+
+ <g transform="translate(10.5 3)"><svg id="GATE_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(22.5 35)">GATE</text>
+ <g transform="translate(40.5 3)"><svg id="VELOCITY_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(52.5 35)">VELO</text>
+ <g transform="translate(70.5 3)"><svg id="LEFT_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(82.5 35)">L</text>
+ <g transform="translate(100.5 3)"><svg id="RIGHT_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(112.5 35)">R(L)</text>
+
+ <g transform="translate(30, 0)">
+ <rect class="output-background" width="90" height="39" rx="5" transform="translate(7 37.5)"/>
+ <rect class="output-background-filler" width="90" height="10" transform="translate(7 37.5)"/>
+ <g transform="translate(10.5 40)"><svg id="ENV_OUTPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(22.5 72)">ENV</text>
+ <g transform="translate(40.5 40)"><svg id="LEFT_OUTPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(52.5 72)">L</text>
+ <g transform="translate(70.5 40)"><svg id="RIGHT_OUTPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(82.5 72)">R</text>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(118 24)">
+
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">LPF</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <g transform="translate(0 10.0)"><svg id="LPF_ENV_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="LPF_ENV_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="LPF_ENV_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(50 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <g transform="translate(0 10.0)"><svg id="LPF_BIAS_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-11 2.0)">
+ <g transform="translate(25.5 22.5)">
+ <text font-size="5pt" transform="rotate(60) translate(17 0) rotate(-60) translate(0 4)">20K</text>
+ <text font-size="5pt" transform="rotate(-90) translate(19 0) rotate(90) translate(-4 2.2)">5K</text>
+ <text font-size="5pt" transform="rotate(-172.9) translate(19 0) rotate(172.9) translate(-5 2.2)">1K</text>
+ <text font-size="5pt" transform="rotate(-240) translate(17 0) rotate(240) translate(-12 4)">0HZ</text>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(19.8) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-133.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-192.6) translate(17 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="LPF_BIAS_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="LPF_BIAS_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(95 0)">
+
+
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(13 8)">POLES</text>
+ <g transform="translate(8 16)">
+ <g transform="translate(0 0)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_1_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">1</text>
+ </g>
+ <g transform="translate(0 12)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_2_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">2</text>
+ </g>
+ <g transform="translate(0 24)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_3_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">3</text>
+ </g>
+ <g transform="translate(0 36)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_4_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">4</text>
+ </g>
+ <g transform="translate(2 47)"><svg id="LPF_POLES_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(118 139)">
+
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">HPF</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <g transform="translate(0 10.0)"><svg id="HPF_ENV_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="HPF_ENV_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="HPF_ENV_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(50 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <g transform="translate(0 10.0)"><svg id="HPF_BIAS_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-11 2.0)">
+ <g transform="translate(25.5 22.5)">
+ <text font-size="5pt" transform="rotate(60) translate(17 0) rotate(-60) translate(0 4)">20K</text>
+ <text font-size="5pt" transform="rotate(-90) translate(19 0) rotate(90) translate(-4 2.2)">5K</text>
+ <text font-size="5pt" transform="rotate(-172.9) translate(19 0) rotate(172.9) translate(-5 2.2)">1K</text>
+ <text font-size="5pt" transform="rotate(-240) translate(17 0) rotate(240) translate(-12 4)">0HZ</text>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(19.8) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-133.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-192.6) translate(17 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="HPF_BIAS_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="HPF_BIAS_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(93 0)">
+
+
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(13 8)">POLES</text>
+ <g transform="translate(8 16)">
+ <g transform="translate(0 0)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_1_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">1</text>
+ </g>
+ <g transform="translate(0 12)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_2_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">2</text>
+ </g>
+ <g transform="translate(0 24)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_3_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">3</text>
+ </g>
+ <g transform="translate(0 36)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_4_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">4</text>
+ </g>
+ <g transform="translate(2 47)"><svg id="HPF_POLES_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(145 253)">
+
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">VCA</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <g transform="translate(0 10.0)"><svg id="VCA_ENV_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="VCA_ENV_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="VCA_ENV_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(50 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <g transform="translate(0 10.0)"><svg id="VCA_BIAS_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="0,0 4,0" stroke-width="1.5" transform="rotate(-240) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-90) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(60) translate(16 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="VCA_BIAS_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="VCA_BIAS_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/res-pp/MegaGate-lowcontrast-pp.svg b/res-pp/MegaGate-lowcontrast-pp.svg
@@ -0,0 +1,959 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="270.0" height="380.0" viewBox="0 0 270.0 380.0">
+ <style>text {
+ fill: #333;
+ font-family: 'Roboto', sans-serif;
+ font-weight: bold;
+}
+text.title {
+ font-family: 'Comfortaa', sans-serif;
+ font-weight: normal;
+}
+text.brand {
+ font-family: 'Audiowide', sans-serif;
+ font-weight: bold;
+}
+
+polyline {
+ stroke: #333;
+}
+polyline.guide {
+ stroke: #0f0;
+}
+path {
+ stroke: #333;
+}
+
+rect.module-background, .background-fill {
+ fill: #ddd;
+}
+polyline.module-border-inner {
+ stroke: #e4e4e4;
+}
+polyline.module-border-middle {
+ stroke: #ebebeb;
+}
+polyline.module-border-outer {
+ stroke: #f2f2f2;
+}
+
+g.io-group {
+}
+rect.input-background, rect.input-background-filler {
+ fill: #fafafa;
+}
+rect.output-background, rect.output-background-filler {
+ fill: #bbb;
+}
+text.input-label, text.output-label {
+ /* font-size: 6pt; */
+}
+polyline.input-label, polyline.output-label {
+}
+path.input-label, path.output-label {
+}
+
+circle.port-rim {
+ stroke: #f0f0f0;
+}
+circle.port-barrel {
+ stroke: #222;
+ fill: #222;
+}
+circle.knob-center {
+ fill: #eee;
+}
+circle.knob-rim {
+ fill: #333;
+}
+circle.knob-tick {
+ fill: #fff;
+}
+polyline.knob-tick {
+ stroke: #fff;
+}
+
+
+text {
+ fill: #b3b3b3;
+}
+
+polyline {
+ stroke: #b3b3b3;
+}
+path {
+ stroke: #b3b3b3;
+}
+
+rect.module-background, .background-fill {
+ fill: #333;
+}
+polyline.module-border-inner {
+ stroke: #191919;
+}
+polyline.module-border-middle {
+ stroke: #111;
+}
+polyline.module-border-outer {
+ stroke: #000;
+}
+
+rect.input-background, rect.input-background-filler {
+ fill: #b3b3b3;
+}
+rect.output-background, rect.output-background-filler {
+ fill: #888;
+}
+text.input-label {
+ fill: #666;
+}
+polyline.input-label, path.input-label {
+ stroke: #666;
+}
+text.output-label {
+ fill: #ccc;
+}
+polyline.output-label, path.output-label {
+ stroke: #ccc;
+}
+
+circle.port-rim {
+ stroke: #bbb;
+}
+circle.port-barrel {
+ stroke: #222;
+ fill: #222;
+}
+circle.knob-center {
+ fill: #bbb;
+}
+circle.knob-rim {
+ fill: #555;
+}
+circle.knob-tick {
+ fill: #fff;
+}
+polyline.knob-tick {
+ stroke: #fff;
+}
+</style>
+
+ <defs>
+ <symbol id="dial-tilt-megagate" viewBox="0 0 50px 50px">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">L</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(17 0)"/>
+ <polyline points="0,0 4,0" stroke-width="1.5" transform="rotate(-90) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">R</text>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="dial-filtermix-megagate" viewBox="0 0 40px 40px">
+ <g transform="translate(20 20)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(15 0) rotate(240.0) translate(-2 3)">LPF</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(11.5 0)"/>
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(12.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(11.5 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(15 0) rotate(-60.0) translate(2 3)">HPF</text>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="single-input" viewBox="0 0 30px 28px">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="0.0">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </symbol>
+ </defs>
+
+
+
+ <rect class="module-background background-fill" width="270.0" height="380.0"/>
+
+
+ <polyline class="module-border-inner" points="1,1 269.0,1 269.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/>
+ <polyline class="module-border-middle" points="0.5,0.5 269.5,0.5 269.5,379.5 0.5,379.5 0.5,0.5" stroke-width="0.8" fill="none"/>
+ <polyline class="module-border-outer" points="0,0 270.0,0 270.0,380.0 0,380.0 0,0" stroke-width="1" fill="none"/>
+
+ <text class="title" font-size="12pt" letter-spacing="4px" text-anchor="middle" transform="translate(135.0 19)">MEGAGATE</text>
+ <g transform="translate(0 374)">
+ <text class="brand" font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate(135.0 0)">BOGAUDIO</text>
+ <rect class="background-fill" width="3" height="3" transform="translate(119.5 -5)"/>
+ </g>
+
+
+
+
+
+
+
+
+
+ <g transform="translate(-10 0)">
+ <g transform="translate(0 31)">
+
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42 0)">RISE</text>
+ <g transform="translate(27.5 10.5)"><svg id="RISE_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(19.5 2.5)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(21.0 0) rotate(240.0) translate(0 3)">0MS</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-185.22774424948338) translate(20 0) rotate(185.22774424948338) translate(0 3)">10</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-153.39745962155612) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-117.52551286084109) translate(20 0) rotate(117.52551286084109) translate(0 3)">50</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-66.79491924311225) translate(20 0) rotate(66.79491924311225) translate(0 3)">100</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.867965644035735) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(4.94897427831782) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(33.861278752583075) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(21.0 0) rotate(-60.0) translate(0 3)">300</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(34.0 58.0)"><svg id="RISE_SHAPE_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(22.0 46.0)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-52.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-15) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(22.5) translate(10 0)"/>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-127.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-165) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-202.5) translate(10 0)"/>
+
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#b3b3b3" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-45) translate(0 0)"/>
+ <polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(-45) translate(0 0)"/>
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#b3b3b3" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(135) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(27.5 85)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="RISE_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(55 31)">
+
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42 0)">FALL</text>
+ <g transform="translate(27.5 10.5)"><svg id="FALL_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(19.5 2.5)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(20 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(21 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(21 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(20 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(34.0 58.0)"><svg id="FALL_SHAPE_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(22.0 46.0)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-52.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-15) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(22.5) translate(10 0)"/>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-127.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-165) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-202.5) translate(10 0)"/>
+
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#b3b3b3" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-135) translate(0 0)"/>
+ <polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(45) translate(0 0)"/>
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#b3b3b3" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(45) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(27.5 85)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="FALL_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(0 165)">
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(42.5 0)">MIN GATE</text>
+ <g transform="translate(19.5 3.0)"><svg id="MINIMUM_GATE_PARAM">
+ <g transform="translate(22.5 22.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(17 0.5)">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 1.5,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(23 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(23 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(27.5 53)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="MINIMUM_GATE_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(55 165)">
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42.5 0)">TILT</text>
+ <g transform="translate(19.5 3.0)"><svg id="TILT_PARAM">
+ <g transform="translate(22.5 22.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <use xlink:href="#dial-tilt-megagate" transform="translate(17 0.5)" href="#dial-tilt-megagate"/>
+ <g transform="translate(27.5 53)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="TILT_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(-10 256)">
+ <g transform="translate(40 0)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">GT TO TRIG</text>
+ <g transform="translate(0 -1)"><svg id="GATE_TO_TRIGGER_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+
+ <g transform="translate(40 14)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">TIMES 10X</text>
+ <g transform="translate(0 -1)"><svg id="TIMES_10X_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+
+ <g transform="translate(60 256)">
+ <g transform="translate(40 0)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">FLTRS SER</text>
+ <g transform="translate(0 -1)"><svg id="FILTERS_SERIAL_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+
+ <g transform="translate(40 14)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">LIN VCA</text>
+ <g transform="translate(0 -1)"><svg id="LINEAR_VCA_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+
+ <g class="io-group" transform="translate(8 284)">
+ <rect class="input-background" width="120" height="37.5" rx="5" transform="translate(7 0)"/>
+ <rect class="input-background-filler" width="10" height="10" transform="translate(117 27.5)"/>
+
+ <g transform="translate(10.5 3)"><svg id="GATE_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(22.5 35)">GATE</text>
+ <g transform="translate(40.5 3)"><svg id="VELOCITY_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(52.5 35)">VELO</text>
+ <g transform="translate(70.5 3)"><svg id="LEFT_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(82.5 35)">L</text>
+ <g transform="translate(100.5 3)"><svg id="RIGHT_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(112.5 35)">R(L)</text>
+
+ <g transform="translate(30, 0)">
+ <rect class="output-background" width="90" height="39" rx="5" transform="translate(7 37.5)"/>
+ <rect class="output-background-filler" width="90" height="10" transform="translate(7 37.5)"/>
+ <g transform="translate(10.5 40)"><svg id="ENV_OUTPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(22.5 72)">ENV</text>
+ <g transform="translate(40.5 40)"><svg id="LEFT_OUTPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(52.5 72)">L</text>
+ <g transform="translate(70.5 40)"><svg id="RIGHT_OUTPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(82.5 72)">R</text>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(118 24)">
+
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">LPF</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <g transform="translate(0 10.0)"><svg id="LPF_ENV_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="LPF_ENV_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="LPF_ENV_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(50 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <g transform="translate(0 10.0)"><svg id="LPF_BIAS_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-11 2.0)">
+ <g transform="translate(25.5 22.5)">
+ <text font-size="5pt" transform="rotate(60) translate(17 0) rotate(-60) translate(0 4)">20K</text>
+ <text font-size="5pt" transform="rotate(-90) translate(19 0) rotate(90) translate(-4 2.2)">5K</text>
+ <text font-size="5pt" transform="rotate(-172.9) translate(19 0) rotate(172.9) translate(-5 2.2)">1K</text>
+ <text font-size="5pt" transform="rotate(-240) translate(17 0) rotate(240) translate(-12 4)">0HZ</text>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(19.8) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-133.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-192.6) translate(17 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="LPF_BIAS_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="LPF_BIAS_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(95 0)">
+
+
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(13 8)">POLES</text>
+ <g transform="translate(8 16)">
+ <g transform="translate(0 0)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_1_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">1</text>
+ </g>
+ <g transform="translate(0 12)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_2_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">2</text>
+ </g>
+ <g transform="translate(0 24)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_3_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">3</text>
+ </g>
+ <g transform="translate(0 36)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_4_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">4</text>
+ </g>
+ <g transform="translate(2 47)"><svg id="LPF_POLES_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(118 139)">
+
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">HPF</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <g transform="translate(0 10.0)"><svg id="HPF_ENV_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="HPF_ENV_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="HPF_ENV_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(50 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <g transform="translate(0 10.0)"><svg id="HPF_BIAS_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-11 2.0)">
+ <g transform="translate(25.5 22.5)">
+ <text font-size="5pt" transform="rotate(60) translate(17 0) rotate(-60) translate(0 4)">20K</text>
+ <text font-size="5pt" transform="rotate(-90) translate(19 0) rotate(90) translate(-4 2.2)">5K</text>
+ <text font-size="5pt" transform="rotate(-172.9) translate(19 0) rotate(172.9) translate(-5 2.2)">1K</text>
+ <text font-size="5pt" transform="rotate(-240) translate(17 0) rotate(240) translate(-12 4)">0HZ</text>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(19.8) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-133.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-192.6) translate(17 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="HPF_BIAS_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="HPF_BIAS_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(93 0)">
+
+
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(13 8)">POLES</text>
+ <g transform="translate(8 16)">
+ <g transform="translate(0 0)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_1_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">1</text>
+ </g>
+ <g transform="translate(0 12)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_2_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">2</text>
+ </g>
+ <g transform="translate(0 24)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_3_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">3</text>
+ </g>
+ <g transform="translate(0 36)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_4_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">4</text>
+ </g>
+ <g transform="translate(2 47)"><svg id="HPF_POLES_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(145 253)">
+
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">VCA</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <g transform="translate(0 10.0)"><svg id="VCA_ENV_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="VCA_ENV_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="VCA_ENV_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(50 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <g transform="translate(0 10.0)"><svg id="VCA_BIAS_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="0,0 4,0" stroke-width="1.5" transform="rotate(-240) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-90) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(60) translate(16 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="VCA_BIAS_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="VCA_BIAS_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/res-pp/MegaGate-pp.svg b/res-pp/MegaGate-pp.svg
@@ -0,0 +1,895 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="270.0" height="380.0" viewBox="0 0 270.0 380.0">
+ <style>text {
+ fill: #333;
+ font-family: 'Roboto', sans-serif;
+ font-weight: bold;
+}
+text.title {
+ font-family: 'Comfortaa', sans-serif;
+ font-weight: normal;
+}
+text.brand {
+ font-family: 'Audiowide', sans-serif;
+ font-weight: bold;
+}
+
+polyline {
+ stroke: #333;
+}
+polyline.guide {
+ stroke: #0f0;
+}
+path {
+ stroke: #333;
+}
+
+rect.module-background, .background-fill {
+ fill: #ddd;
+}
+polyline.module-border-inner {
+ stroke: #e4e4e4;
+}
+polyline.module-border-middle {
+ stroke: #ebebeb;
+}
+polyline.module-border-outer {
+ stroke: #f2f2f2;
+}
+
+g.io-group {
+}
+rect.input-background, rect.input-background-filler {
+ fill: #fafafa;
+}
+rect.output-background, rect.output-background-filler {
+ fill: #bbb;
+}
+text.input-label, text.output-label {
+ /* font-size: 6pt; */
+}
+polyline.input-label, polyline.output-label {
+}
+path.input-label, path.output-label {
+}
+
+circle.port-rim {
+ stroke: #f0f0f0;
+}
+circle.port-barrel {
+ stroke: #222;
+ fill: #222;
+}
+circle.knob-center {
+ fill: #eee;
+}
+circle.knob-rim {
+ fill: #333;
+}
+circle.knob-tick {
+ fill: #fff;
+}
+polyline.knob-tick {
+ stroke: #fff;
+}
+</style>
+
+ <defs>
+ <symbol id="dial-tilt-megagate" viewBox="0 0 50px 50px">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">L</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(17 0)"/>
+ <polyline points="0,0 4,0" stroke-width="1.5" transform="rotate(-90) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">R</text>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="dial-filtermix-megagate" viewBox="0 0 40px 40px">
+ <g transform="translate(20 20)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(15 0) rotate(240.0) translate(-2 3)">LPF</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(11.5 0)"/>
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(12.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(11.5 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(15 0) rotate(-60.0) translate(2 3)">HPF</text>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="single-input" viewBox="0 0 30px 28px">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="0.0">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </symbol>
+ </defs>
+
+
+
+ <rect class="module-background background-fill" width="270.0" height="380.0"/>
+
+
+ <polyline class="module-border-inner" points="1,1 269.0,1 269.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/>
+ <polyline class="module-border-middle" points="0.5,0.5 269.5,0.5 269.5,379.5 0.5,379.5 0.5,0.5" stroke-width="0.8" fill="none"/>
+ <polyline class="module-border-outer" points="0,0 270.0,0 270.0,380.0 0,380.0 0,0" stroke-width="1" fill="none"/>
+
+ <text class="title" font-size="12pt" letter-spacing="4px" text-anchor="middle" transform="translate(135.0 19)">MEGAGATE</text>
+ <g transform="translate(0 374)">
+ <text class="brand" font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate(135.0 0)">BOGAUDIO</text>
+ <rect class="background-fill" width="3" height="3" transform="translate(119.5 -5)"/>
+ </g>
+
+
+
+
+
+
+
+
+
+ <g transform="translate(-10 0)">
+ <g transform="translate(0 31)">
+
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42 0)">RISE</text>
+ <g transform="translate(27.5 10.5)"><svg id="RISE_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(19.5 2.5)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(21.0 0) rotate(240.0) translate(0 3)">0MS</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-185.22774424948338) translate(20 0) rotate(185.22774424948338) translate(0 3)">10</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-153.39745962155612) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-117.52551286084109) translate(20 0) rotate(117.52551286084109) translate(0 3)">50</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-66.79491924311225) translate(20 0) rotate(66.79491924311225) translate(0 3)">100</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.867965644035735) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(4.94897427831782) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(33.861278752583075) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(21.0 0) rotate(-60.0) translate(0 3)">300</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(34.0 58.0)"><svg id="RISE_SHAPE_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(22.0 46.0)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-52.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-15) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(22.5) translate(10 0)"/>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-127.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-165) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-202.5) translate(10 0)"/>
+
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-45) translate(0 0)"/>
+ <polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(-45) translate(0 0)"/>
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(135) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(27.5 85)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="RISE_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(55 31)">
+
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42 0)">FALL</text>
+ <g transform="translate(27.5 10.5)"><svg id="FALL_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(19.5 2.5)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(20 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(21 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(21 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(20 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(34.0 58.0)"><svg id="FALL_SHAPE_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(22.0 46.0)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-52.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-15) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(22.5) translate(10 0)"/>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-127.5) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-165) translate(10 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-202.5) translate(10 0)"/>
+
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-135) translate(0 0)"/>
+ <polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(45) translate(0 0)"/>
+ <path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(45) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(27.5 85)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="FALL_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(0 165)">
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(42.5 0)">MIN GATE</text>
+ <g transform="translate(19.5 3.0)"><svg id="MINIMUM_GATE_PARAM">
+ <g transform="translate(22.5 22.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(17 0.5)">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 1.5,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(23 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(23 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ <g transform="translate(27.5 53)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="MINIMUM_GATE_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(55 165)">
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42.5 0)">TILT</text>
+ <g transform="translate(19.5 3.0)"><svg id="TILT_PARAM">
+ <g transform="translate(22.5 22.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <use xlink:href="#dial-tilt-megagate" transform="translate(17 0.5)" href="#dial-tilt-megagate"/>
+ <g transform="translate(27.5 53)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="TILT_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(-10 256)">
+ <g transform="translate(40 0)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">GT TO TRIG</text>
+ <g transform="translate(0 -1)"><svg id="GATE_TO_TRIGGER_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+
+ <g transform="translate(40 14)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">TIMES 10X</text>
+ <g transform="translate(0 -1)"><svg id="TIMES_10X_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+
+ <g transform="translate(60 256)">
+ <g transform="translate(40 0)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">FLTRS SER</text>
+ <g transform="translate(0 -1)"><svg id="FILTERS_SERIAL_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+
+ <g transform="translate(40 14)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">LIN VCA</text>
+ <g transform="translate(0 -1)"><svg id="LINEAR_VCA_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+
+ <g class="io-group" transform="translate(8 284)">
+ <rect class="input-background" width="120" height="37.5" rx="5" transform="translate(7 0)"/>
+ <rect class="input-background-filler" width="10" height="10" transform="translate(117 27.5)"/>
+
+ <g transform="translate(10.5 3)"><svg id="GATE_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(22.5 35)">GATE</text>
+ <g transform="translate(40.5 3)"><svg id="VELOCITY_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(52.5 35)">VELO</text>
+ <g transform="translate(70.5 3)"><svg id="LEFT_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(82.5 35)">L</text>
+ <g transform="translate(100.5 3)"><svg id="RIGHT_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(112.5 35)">R(L)</text>
+
+ <g transform="translate(30, 0)">
+ <rect class="output-background" width="90" height="39" rx="5" transform="translate(7 37.5)"/>
+ <rect class="output-background-filler" width="90" height="10" transform="translate(7 37.5)"/>
+ <g transform="translate(10.5 40)"><svg id="ENV_OUTPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(22.5 72)">ENV</text>
+ <g transform="translate(40.5 40)"><svg id="LEFT_OUTPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(52.5 72)">L</text>
+ <g transform="translate(70.5 40)"><svg id="RIGHT_OUTPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#f00" fill="#f00"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#f00" fill="none"/>
+ </g>
+ </svg></g>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(82.5 72)">R</text>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(118 24)">
+
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">LPF</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <g transform="translate(0 10.0)"><svg id="LPF_ENV_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="LPF_ENV_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="LPF_ENV_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(50 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <g transform="translate(0 10.0)"><svg id="LPF_BIAS_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-11 2.0)">
+ <g transform="translate(25.5 22.5)">
+ <text font-size="5pt" transform="rotate(60) translate(17 0) rotate(-60) translate(0 4)">20K</text>
+ <text font-size="5pt" transform="rotate(-90) translate(19 0) rotate(90) translate(-4 2.2)">5K</text>
+ <text font-size="5pt" transform="rotate(-172.9) translate(19 0) rotate(172.9) translate(-5 2.2)">1K</text>
+ <text font-size="5pt" transform="rotate(-240) translate(17 0) rotate(240) translate(-12 4)">0HZ</text>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(19.8) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-133.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-192.6) translate(17 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="LPF_BIAS_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="LPF_BIAS_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(95 0)">
+
+
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(13 8)">POLES</text>
+ <g transform="translate(8 16)">
+ <g transform="translate(0 0)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_1_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">1</text>
+ </g>
+ <g transform="translate(0 12)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_2_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">2</text>
+ </g>
+ <g transform="translate(0 24)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_3_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">3</text>
+ </g>
+ <g transform="translate(0 36)">
+ <g transform="translate(0 0)"><svg id="LPF_POLES_4_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">4</text>
+ </g>
+ <g transform="translate(2 47)"><svg id="LPF_POLES_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(118 139)">
+
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">HPF</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <g transform="translate(0 10.0)"><svg id="HPF_ENV_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="HPF_ENV_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="HPF_ENV_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(50 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <g transform="translate(0 10.0)"><svg id="HPF_BIAS_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-11 2.0)">
+ <g transform="translate(25.5 22.5)">
+ <text font-size="5pt" transform="rotate(60) translate(17 0) rotate(-60) translate(0 4)">20K</text>
+ <text font-size="5pt" transform="rotate(-90) translate(19 0) rotate(90) translate(-4 2.2)">5K</text>
+ <text font-size="5pt" transform="rotate(-172.9) translate(19 0) rotate(172.9) translate(-5 2.2)">1K</text>
+ <text font-size="5pt" transform="rotate(-240) translate(17 0) rotate(240) translate(-12 4)">0HZ</text>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(19.8) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-133.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-192.6) translate(17 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="HPF_BIAS_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="HPF_BIAS_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(93 0)">
+
+
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(13 8)">POLES</text>
+ <g transform="translate(8 16)">
+ <g transform="translate(0 0)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_1_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">1</text>
+ </g>
+ <g transform="translate(0 12)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_2_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">2</text>
+ </g>
+ <g transform="translate(0 24)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_3_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">3</text>
+ </g>
+ <g transform="translate(0 36)">
+ <g transform="translate(0 0)"><svg id="HPF_POLES_4_LIGHT">
+ <rect width="6.4" height="6.4" fill="#0f0"/>
+ </svg></g>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">4</text>
+ </g>
+ <g transform="translate(2 47)"><svg id="HPF_POLES_PARAM">
+ <g transform="translate(4.5 4.5)">
+ <circle r="4" stroke-width="1" stroke="#00f" fill="#f00"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(145 253)">
+
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">VCA</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <g transform="translate(0 10.0)"><svg id="VCA_ENV_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="VCA_ENV_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="VCA_ENV_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(50 0)">
+
+ <g transform="translate(0.5 8)">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <g transform="translate(0 10.0)"><svg id="VCA_BIAS_PARAM">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(0 10.0)">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="0,0 4,0" stroke-width="1.5" transform="rotate(-240) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-90) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(60) translate(16 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 57)">
+ <g transform="translate(7 0)"><svg id="VCA_BIAS_ATTENUATOR_PARAM">
+ <g transform="translate(8 8)">
+ <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/>
+ <circle r="7.5" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </svg></g>
+ <g transform="translate(-5 -12)">
+ <g transform="translate(20 20)">
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(10 0)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/>
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(0 80)">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <g transform="translate(3 2)"><svg id="VCA_BIAS_INPUT">
+ <g transform="translate(12 12)">
+ <circle cx="0" cy="0" r="5" stroke-width="1" stroke="#0f0" fill="#0f0"/>
+ <circle cx="0" cy="0" r="10.5" stroke-width="3" stroke="#0f0" fill="none"/>
+ </g>
+ </svg></g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/res-pp/RGate-dark-pp.svg b/res-pp/RGate-dark-pp.svg
@@ -17,6 +17,9 @@ text.brand {
polyline {
stroke: #333;
}
+polyline.guide {
+ stroke: #0f0;
+}
path {
stroke: #333;
}
@@ -220,7 +223,7 @@ polyline.knob-tick {
<use xlink:href="#dial-clock-rgate" transform="translate(0 -9.5)" href="#dial-clock-rgate"/>
</g>
- <g transform="translate(0 248)">
+ <g class="io-group" transform="translate(0 248)">
<rect class="input-background" width="64" height="112" rx="5" transform="translate(5.5 0)"/>
<g transform="translate(10.5 3)"><svg id="LENGTH_INPUT">
<g transform="translate(12 12)">
@@ -257,7 +260,7 @@ polyline.knob-tick {
</g>
</svg></g>
<text class="input-label" font-size="5pt" letter-spacing="1px" text-anchor="middle" transform="translate(22.5 109)">CLOCK</text>
- <g class="io-group" transform="translate(30 72)">
+ <g transform="translate(30 72)">
<rect class="output-background" width="32" height="38" rx="5" transform="translate(7.5 2)"/>
<rect class="output-background-filler" width="32" height="10" transform="translate(7.5 2)"/>
<rect class="output-background-filler" width="10" height="10" transform="translate(7.5 30)"/>
diff --git a/res-pp/RGate-lowcontrast-pp.svg b/res-pp/RGate-lowcontrast-pp.svg
@@ -17,6 +17,9 @@ text.brand {
polyline {
stroke: #333;
}
+polyline.guide {
+ stroke: #0f0;
+}
path {
stroke: #333;
}
@@ -220,7 +223,7 @@ polyline.knob-tick {
<use xlink:href="#dial-clock-rgate" transform="translate(0 -9.5)" href="#dial-clock-rgate"/>
</g>
- <g transform="translate(0 248)">
+ <g class="io-group" transform="translate(0 248)">
<rect class="input-background" width="64" height="112" rx="5" transform="translate(5.5 0)"/>
<g transform="translate(10.5 3)"><svg id="LENGTH_INPUT">
<g transform="translate(12 12)">
@@ -257,7 +260,7 @@ polyline.knob-tick {
</g>
</svg></g>
<text class="input-label" font-size="5pt" letter-spacing="1px" text-anchor="middle" transform="translate(22.5 109)">CLOCK</text>
- <g class="io-group" transform="translate(30 72)">
+ <g transform="translate(30 72)">
<rect class="output-background" width="32" height="38" rx="5" transform="translate(7.5 2)"/>
<rect class="output-background-filler" width="32" height="10" transform="translate(7.5 2)"/>
<rect class="output-background-filler" width="10" height="10" transform="translate(7.5 30)"/>
diff --git a/res-pp/RGate-pp.svg b/res-pp/RGate-pp.svg
@@ -17,6 +17,9 @@ text.brand {
polyline {
stroke: #333;
}
+polyline.guide {
+ stroke: #0f0;
+}
path {
stroke: #333;
}
@@ -156,7 +159,7 @@ polyline.knob-tick {
<use xlink:href="#dial-clock-rgate" transform="translate(0 -9.5)" href="#dial-clock-rgate"/>
</g>
- <g transform="translate(0 248)">
+ <g class="io-group" transform="translate(0 248)">
<rect class="input-background" width="64" height="112" rx="5" transform="translate(5.5 0)"/>
<g transform="translate(10.5 3)"><svg id="LENGTH_INPUT">
<g transform="translate(12 12)">
@@ -193,7 +196,7 @@ polyline.knob-tick {
</g>
</svg></g>
<text class="input-label" font-size="5pt" letter-spacing="1px" text-anchor="middle" transform="translate(22.5 109)">CLOCK</text>
- <g class="io-group" transform="translate(30 72)">
+ <g transform="translate(30 72)">
<rect class="output-background" width="32" height="38" rx="5" transform="translate(7.5 2)"/>
<rect class="output-background-filler" width="32" height="10" transform="translate(7.5 2)"/>
<rect class="output-background-filler" width="10" height="10" transform="translate(7.5 30)"/>
diff --git a/res-pp/Vish-dark-pp.svg b/res-pp/Vish-dark-pp.svg
@@ -138,58 +138,6 @@ polyline.knob-tick {
}
</style>
- <defs>
- <symbol id="dial-rise-time-vish" viewBox="0 0 45px 45px">
- <g transform="translate(22.5 22.5)">
- <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(20.0 0) rotate(240.0) translate(0 3)">0MS</text>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-185.22774424948338) translate(19 0) rotate(185.22774424948338) translate(0 3)">10</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-153.39745962155612) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-117.52551286084109) translate(19 0) rotate(117.52551286084109) translate(0 3)">50</text>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-66.79491924311225) translate(19 0) rotate(66.79491924311225) translate(0 3)">100</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.867965644035735) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(4.94897427831782) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(33.861278752583075) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(20.0 0) rotate(-60.0) translate(0 3)">300</text>
- </g>
- </symbol>
-
- <symbol id="dial-fall-time-vish" viewBox="0 0 45px 45px">
- <g transform="translate(22.5 22.5)">
- <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(19.0 0) rotate(240.0) translate(0 3)">0S</text>
- <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(-210.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(20 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(20 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(19.0 0) rotate(-60.0) translate(0 3)">1</text>
- </g>
- </symbol>
-
- <symbol id="dial-mingate-vish" viewBox="0 0 75.0px 75.0px">
- <g transform="translate(37.5 37.5)">
- <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">0S</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(23 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(23 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">1</text>
- </g>
- </symbol>
- </defs>
-
<rect class="module-background background-fill" width="75.0" height="380.0"/>
@@ -216,7 +164,21 @@ polyline.knob-tick {
<circle cx="0" cy="0" r="12.5" stroke-width="1" stroke="#00f" fill="none"/>
</g>
</svg></g>
- <use xlink:href="#dial-rise-time-vish" transform="translate(3 2.0)" href="#dial-rise-time-vish"/>
+ <g transform="translate(3 2.0)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(20.0 0) rotate(240.0) translate(0 3)">0MS</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-185.22774424948338) translate(19 0) rotate(185.22774424948338) translate(0 3)">10</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-153.39745962155612) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-117.52551286084109) translate(19 0) rotate(117.52551286084109) translate(0 3)">50</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-66.79491924311225) translate(19 0) rotate(66.79491924311225) translate(0 3)">100</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.867965644035735) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(4.94897427831782) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(33.861278752583075) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(20.0 0) rotate(-60.0) translate(0 3)">300</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
<g transform="translate(52 17.0)"><svg id="RISE_SHAPE_PARAM">
<g transform="translate(8 8)">
<polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
@@ -237,6 +199,9 @@ polyline.knob-tick {
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#ccc" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-45) translate(0 0)"/>
<polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(-45) translate(0 0)"/>
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#ccc" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(135) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</g>
</g>
@@ -251,7 +216,25 @@ polyline.knob-tick {
<circle cx="0" cy="0" r="12.5" stroke-width="1" stroke="#00f" fill="none"/>
</g>
</svg></g>
- <use xlink:href="#dial-fall-time-vish" transform="translate(3 0.0)" href="#dial-fall-time-vish"/>
+ <g transform="translate(3 0.0)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(19.0 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(-210.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(20 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(20 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(19.0 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
<g transform="translate(52 15.0)"><svg id="FALL_SHAPE_PARAM">
<g transform="translate(8 8)">
<polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
@@ -272,6 +255,9 @@ polyline.knob-tick {
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#ccc" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-135) translate(0 0)"/>
<polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(45) translate(0 0)"/>
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#ccc" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(45) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</g>
</g>
@@ -285,7 +271,25 @@ polyline.knob-tick {
<circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
</g>
</svg></g>
- <use xlink:href="#dial-mingate-vish" transform="translate(0 -12.0)" href="#dial-mingate-vish"/>
+ <g transform="translate(12.5 0.5)">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 1.5,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(23 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(23 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
</g>
<g transform="translate(-6 221)">
diff --git a/res-pp/Vish-lowcontrast-pp.svg b/res-pp/Vish-lowcontrast-pp.svg
@@ -138,58 +138,6 @@ polyline.knob-tick {
}
</style>
- <defs>
- <symbol id="dial-rise-time-vish" viewBox="0 0 45px 45px">
- <g transform="translate(22.5 22.5)">
- <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(20.0 0) rotate(240.0) translate(0 3)">0MS</text>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-185.22774424948338) translate(19 0) rotate(185.22774424948338) translate(0 3)">10</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-153.39745962155612) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-117.52551286084109) translate(19 0) rotate(117.52551286084109) translate(0 3)">50</text>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-66.79491924311225) translate(19 0) rotate(66.79491924311225) translate(0 3)">100</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.867965644035735) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(4.94897427831782) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(33.861278752583075) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(20.0 0) rotate(-60.0) translate(0 3)">300</text>
- </g>
- </symbol>
-
- <symbol id="dial-fall-time-vish" viewBox="0 0 45px 45px">
- <g transform="translate(22.5 22.5)">
- <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(19.0 0) rotate(240.0) translate(0 3)">0S</text>
- <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(-210.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(20 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(20 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(19.0 0) rotate(-60.0) translate(0 3)">1</text>
- </g>
- </symbol>
-
- <symbol id="dial-mingate-vish" viewBox="0 0 75.0px 75.0px">
- <g transform="translate(37.5 37.5)">
- <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">0S</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(23 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(23 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">1</text>
- </g>
- </symbol>
- </defs>
-
<rect class="module-background background-fill" width="75.0" height="380.0"/>
@@ -216,7 +164,21 @@ polyline.knob-tick {
<circle cx="0" cy="0" r="12.5" stroke-width="1" stroke="#00f" fill="none"/>
</g>
</svg></g>
- <use xlink:href="#dial-rise-time-vish" transform="translate(3 2.0)" href="#dial-rise-time-vish"/>
+ <g transform="translate(3 2.0)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(20.0 0) rotate(240.0) translate(0 3)">0MS</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-185.22774424948338) translate(19 0) rotate(185.22774424948338) translate(0 3)">10</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-153.39745962155612) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-117.52551286084109) translate(19 0) rotate(117.52551286084109) translate(0 3)">50</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-66.79491924311225) translate(19 0) rotate(66.79491924311225) translate(0 3)">100</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.867965644035735) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(4.94897427831782) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(33.861278752583075) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(20.0 0) rotate(-60.0) translate(0 3)">300</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
<g transform="translate(52 17.0)"><svg id="RISE_SHAPE_PARAM">
<g transform="translate(8 8)">
<polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
@@ -237,6 +199,9 @@ polyline.knob-tick {
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#b3b3b3" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-45) translate(0 0)"/>
<polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(-45) translate(0 0)"/>
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#b3b3b3" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(135) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</g>
</g>
@@ -251,7 +216,25 @@ polyline.knob-tick {
<circle cx="0" cy="0" r="12.5" stroke-width="1" stroke="#00f" fill="none"/>
</g>
</svg></g>
- <use xlink:href="#dial-fall-time-vish" transform="translate(3 0.0)" href="#dial-fall-time-vish"/>
+ <g transform="translate(3 0.0)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(19.0 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(-210.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(20 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(20 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(19.0 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
<g transform="translate(52 15.0)"><svg id="FALL_SHAPE_PARAM">
<g transform="translate(8 8)">
<polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
@@ -272,6 +255,9 @@ polyline.knob-tick {
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#b3b3b3" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-135) translate(0 0)"/>
<polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(45) translate(0 0)"/>
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#b3b3b3" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(45) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</g>
</g>
@@ -285,7 +271,25 @@ polyline.knob-tick {
<circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
</g>
</svg></g>
- <use xlink:href="#dial-mingate-vish" transform="translate(0 -12.0)" href="#dial-mingate-vish"/>
+ <g transform="translate(12.5 0.5)">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 1.5,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(23 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(23 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
</g>
<g transform="translate(-6 221)">
diff --git a/res-pp/Vish-pp.svg b/res-pp/Vish-pp.svg
@@ -74,58 +74,6 @@ polyline.knob-tick {
}
</style>
- <defs>
- <symbol id="dial-rise-time-vish" viewBox="0 0 45px 45px">
- <g transform="translate(22.5 22.5)">
- <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(20.0 0) rotate(240.0) translate(0 3)">0MS</text>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-185.22774424948338) translate(19 0) rotate(185.22774424948338) translate(0 3)">10</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-153.39745962155612) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-117.52551286084109) translate(19 0) rotate(117.52551286084109) translate(0 3)">50</text>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-66.79491924311225) translate(19 0) rotate(66.79491924311225) translate(0 3)">100</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.867965644035735) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(4.94897427831782) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(33.861278752583075) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(20.0 0) rotate(-60.0) translate(0 3)">300</text>
- </g>
- </symbol>
-
- <symbol id="dial-fall-time-vish" viewBox="0 0 45px 45px">
- <g transform="translate(22.5 22.5)">
- <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(19.0 0) rotate(240.0) translate(0 3)">0S</text>
- <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(-210.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(20 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(20 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(19.0 0) rotate(-60.0) translate(0 3)">1</text>
- </g>
- </symbol>
-
- <symbol id="dial-mingate-vish" viewBox="0 0 75.0px 75.0px">
- <g transform="translate(37.5 37.5)">
- <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">0S</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(23 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(23 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">1</text>
- </g>
- </symbol>
- </defs>
-
<rect class="module-background background-fill" width="75.0" height="380.0"/>
@@ -152,7 +100,21 @@ polyline.knob-tick {
<circle cx="0" cy="0" r="12.5" stroke-width="1" stroke="#00f" fill="none"/>
</g>
</svg></g>
- <use xlink:href="#dial-rise-time-vish" transform="translate(3 2.0)" href="#dial-rise-time-vish"/>
+ <g transform="translate(3 2.0)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(20.0 0) rotate(240.0) translate(0 3)">0MS</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-185.22774424948338) translate(19 0) rotate(185.22774424948338) translate(0 3)">10</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-153.39745962155612) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-117.52551286084109) translate(19 0) rotate(117.52551286084109) translate(0 3)">50</text>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-66.79491924311225) translate(19 0) rotate(66.79491924311225) translate(0 3)">100</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.867965644035735) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(4.94897427831782) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(33.861278752583075) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(20.0 0) rotate(-60.0) translate(0 3)">300</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
<g transform="translate(52 17.0)"><svg id="RISE_SHAPE_PARAM">
<g transform="translate(8 8)">
<polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
@@ -173,6 +135,9 @@ polyline.knob-tick {
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-45) translate(0 0)"/>
<polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(-45) translate(0 0)"/>
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(135) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</g>
</g>
@@ -187,7 +152,25 @@ polyline.knob-tick {
<circle cx="0" cy="0" r="12.5" stroke-width="1" stroke="#00f" fill="none"/>
</g>
</svg></g>
- <use xlink:href="#dial-fall-time-vish" transform="translate(3 0.0)" href="#dial-fall-time-vish"/>
+ <g transform="translate(3 0.0)">
+ <g transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-240) translate(19.0 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(-210.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(20 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(20 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" transform="rotate(60) translate(19.0 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
<g transform="translate(52 15.0)"><svg id="FALL_SHAPE_PARAM">
<g transform="translate(8 8)">
<polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/>
@@ -208,6 +191,9 @@ polyline.knob-tick {
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-135) translate(0 0)"/>
<polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(45) translate(0 0)"/>
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(45) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</g>
</g>
@@ -221,7 +207,25 @@ polyline.knob-tick {
<circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
</g>
</svg></g>
- <use xlink:href="#dial-mingate-vish" transform="translate(0 -12.0)" href="#dial-mingate-vish"/>
+ <g transform="translate(12.5 0.5)">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-240) translate(21 0) rotate(240.0) translate(0 3)">0S</text>
+ <polyline points="0,0 1.5,0" stroke-width="0.7" transform="rotate(-210.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-172.91796067500633) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-145.1316701949486) translate(23 0) rotate(145.1316701949486) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-105.83592135001263) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-75.68323274845017) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-50.26334038989722) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(-27.867965644035735) translate(23 0) rotate(27.867965644035735) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-7.620999227554989) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(10.99800796022268) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(28.328157299974748) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(44.60498941515414) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" transform="rotate(60) translate(21 0) rotate(-60.0) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </g>
</g>
<g transform="translate(-6 221)">
diff --git a/res-src/MegaGate-src.svg b/res-src/MegaGate-src.svg
@@ -0,0 +1,299 @@
+<module hp="18">
+ <style/>
+
+ <defs>
+ <symbol id="dial-tilt-megagate" viewBox="0 0 50px 50px">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate(21 0) rotate(-1.0*$r) translate(0 3)">L</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(17 0)"/>
+ <polyline points="0,0 4,0" stroke-width="1.5" transform="rotate(-90) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" var-r="60" transform="rotate($r) translate(21 0) rotate(-1.0*$r) translate(0 3)">R</text>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="dial-filtermix-megagate" viewBox="0 0 40px 40px">
+ <g transform="translate(20 20)">
+ <text font-size="5pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate(15 0) rotate(-1.0*$r) translate(-2 3)">LPF</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(11.5 0)"/>
+ <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(12.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(11.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(11.5 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="60" transform="rotate($r) translate(15 0) rotate(-1.0*$r) translate(2 3)">HPF</text>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="single-input" viewBox="0 0 30px 28px">
+ <g class="io-group">
+ <rect class="input-background" width="30" height="28" rx="5"/>
+ <def id="$id" xlink:href="#input" transform="translate(3 2)"/>
+ </g>
+ </symbol>
+ </defs>
+
+ <def xlink:href="#module" var-name="MEGAGATE"/>
+
+ <!-- <polyline class="guide" points="0,0 0,380" stroke-width="1" fill="none" transform="translate(120 0)"/> -->
+ <!-- <rect width="$width-140-5" height="$height-48+4" fill="#0ff" transform="translate(140 24)"/> -->
+ <!-- <rect width="120-10" height="$height-48+4" fill="#ff0" transform="translate(5 24)"/> -->
+ <!-- <polyline class="guide" points="0,0 0,380" stroke-width="1" fill="none" transform="translate(110/4+5 0)"/> -->
+ <!-- <polyline class="guide" points="0,0 0,380" stroke-width="1" fill="none" transform="translate(3*110/4+5 0)"/> -->
+ <!-- <polyline class="guide" points="0,0 380,0" stroke-width="1" fill="none" transform="translate(0 $height-22)"/> -->
+
+ <g transform="translate(-10 0)">
+ <g transform="translate(0 31)" var-pad="3.0">
+ <!-- <polyline class="guide" points="0,0 $width,0" stroke-width="1" fill="none" transform="translate(0 $pad+22)"/> -->
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(130/4+10 0)">RISE</text>
+ <def id="RISE_PARAM" xlink:href="#knob29x" transform="translate(130.0/4.0+10.0-29.0/2.0-0.5 $pad+7.5)"/>
+ <def xlink:href="#dial-rise-time-29" transform="translate(130.0/4.0+10.0-45.0/2.0-0.5 $pad-0.5)"/>
+ <def id="RISE_SHAPE_PARAM" xlink:href="#knob16" transform="translate(130.0/4.0+10.0-16.0/2.0-0.5 $pad+55)"/>
+ <def xlink:href="#dial-shape-rise" transform="translate(130.0/4.0+10.0-45.0/2.0+2.0 $pad+43)"/>
+ <def xlink:href="#single-input" var-id="RISE_INPUT" transform="translate(42.5-15 85)"/>
+ </g>
+
+ <g transform="translate(55 31)" var-pad="3.0">
+ <!-- <polyline class="guide" points="0,0 $width,0" stroke-width="1" fill="none" transform="translate(0 $pad+22)"/> -->
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(130/4+10 0)">FALL</text>
+ <def id="FALL_PARAM" xlink:href="#knob29x" transform="translate(130.0/4.0+10.0-29.0/2.0-0.5 $pad+7.5)"/>
+ <def xlink:href="#dial-fall-time-29" transform="translate(130.0/4.0+10.0-45.0/2.0-0.5 $pad-0.5)"/>
+ <def id="FALL_SHAPE_PARAM" xlink:href="#knob16" transform="translate(130.0/4.0+10.0-16.0/2.0-0.5 $pad+55)"/>
+ <def xlink:href="#dial-shape-fall" transform="translate(130.0/4.0+10.0-45.0/2.0+2.0 $pad+43)"/>
+ <def xlink:href="#single-input" var-id="FALL_INPUT" transform="translate(42.5-15 85)"/>
+ </g>
+
+ <g transform="translate(0 165)" var-pad="3.0">
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(42.5 0)">MIN GATE</text>
+ <def id="MINIMUM_GATE_PARAM" xlink:href="#knob29" transform="translate(19.5 $pad)"/>
+ <def xlink:href="#dial-mingate" transform="translate(17 $pad-2.5)"/>
+ <def xlink:href="#single-input" var-id="MINIMUM_GATE_INPUT" transform="translate(42.5-15 53)"/>
+ </g>
+
+ <g transform="translate(55 165)" var-pad="3.0">
+ <text font-size="7pt" letter-spacing="2.0px" text-anchor="middle" transform="translate(42.5 0)">TILT</text>
+ <def id="TILT_PARAM" xlink:href="#knob29" transform="translate(19.5 $pad)"/>
+ <use xlink:href="#dial-tilt-megagate" transform="translate(17 $pad-2.5)"/>
+ <def xlink:href="#single-input" var-id="TILT_INPUT" transform="translate(42.5-15 53)"/>
+ </g>
+
+ <g transform="translate(-10 256)">
+ <g transform="translate(40 0)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">GT TO TRIG</text>
+ <def id="GATE_TO_TRIGGER_PARAM" xlink:href="#button-small" transform="translate(0 -1)"/>
+ </g>
+
+ <g transform="translate(40 14)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">TIMES 10X</text>
+ <def id="TIMES_10X_PARAM" xlink:href="#button-small" transform="translate(0 -1)"/>
+ </g>
+ </g>
+
+ <g transform="translate(60 256)">
+ <g transform="translate(40 0)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">FLTRS SER</text>
+ <def id="FILTERS_SERIAL_PARAM" xlink:href="#button-small" transform="translate(0 -1)"/>
+ </g>
+
+ <g transform="translate(40 14)">
+ <text font-size="5pt" letter-spacing="1px" transform="translate(12 6)">LIN VCA</text>
+ <def id="LINEAR_VCA_PARAM" xlink:href="#button-small" transform="translate(0 -1)"/>
+ </g>
+ </g>
+
+ <g class="io-group" transform="translate(8 284)">
+ <rect class="input-background" width="120" height="37.5" rx="5" transform="translate(7 0)" />
+ <rect class="input-background-filler" width="10" height="10" transform="translate(117 27.5)" />
+
+ <def id="GATE_INPUT" xlink:href="#input" transform="translate(10.5 3)"/>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(22.5 35)">GATE</text>
+ <def id="VELOCITY_INPUT" xlink:href="#input" transform="translate(40.5 3)"/>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(52.5 35)">VELO</text>
+ <def id="LEFT_INPUT" xlink:href="#input" transform="translate(70.5 3)"/>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(82.5 35)">L</text>
+ <def id="RIGHT_INPUT" xlink:href="#input" transform="translate(100.5 3)"/>
+ <text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(112.5 35)">R(L)</text>
+
+ <g transform="translate(30, 0)">
+ <rect class="output-background" width="90" height="39" rx="5" transform="translate(7 37.5)"/>
+ <rect class="output-background-filler" width="90" height="10" transform="translate(7 37.5)"/>
+ <def id="ENV_OUTPUT" xlink:href="#output" transform="translate(10.5 40)"/>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(22.5 72)">ENV</text>
+ <def id="LEFT_OUTPUT" xlink:href="#output" transform="translate(40.5 40)"/>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(52.5 72)">L</text>
+ <def id="RIGHT_OUTPUT" xlink:href="#output" transform="translate(70.5 40)"/>
+ <text class="output-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(82.5 72)">R</text>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(118 24)">
+ <!-- <rect width="179" height="110" fill="#f0f"/> -->
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">LPF</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+ <!-- <rect width="36" height="78" fill="#0f0" transform="translate(-3 0)"/> -->
+ <g transform="translate(0.5 8)" var-pad="10.0">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <def id="LPF_ENV_PARAM" xlink:href="#knob29x" transform="translate(0 $pad)"/>
+ <def xlink:href="#dial-attenuverter29" transform="translate(0 $pad)"/>
+ </g>
+ <g transform="translate(0 57)">
+ <def id="LPF_ENV_ATTENUATOR_PARAM" xlink:href="#knob16" transform="translate(15-8 0)"/>
+ <def xlink:href="#dial-centertick" transform="translate(-5 -12)"/>
+ </g>
+ <def xlink:href="#single-input" var-id="LPF_ENV_INPUT" transform="translate(0 80)"/>
+ </g>
+
+ <g transform="translate(50 0)">
+ <!-- <rect width="36" height="78" fill="#0f0" transform="translate(-3 0)"/> -->
+ <g transform="translate(0.5 8)" var-pad="10.0">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <def id="LPF_BIAS_PARAM" xlink:href="#knob29x" transform="translate(0 $pad)"/>
+ <def xlink:href="#dial-frequency-bias" transform="translate(-11 $pad-8)"/>
+ </g>
+ <g transform="translate(0 57)">
+ <def id="LPF_BIAS_ATTENUATOR_PARAM" xlink:href="#knob16" transform="translate(15-8 0)"/>
+ <def xlink:href="#dial-centertick" transform="translate(-5 -12)"/>
+ </g>
+ <def xlink:href="#single-input" var-id="LPF_BIAS_INPUT" transform="translate(0 80)"/>
+ </g>
+
+ <g transform="translate(95 0)">
+ <!-- <rect width="33" height="78" fill="#ff0" transform="translate(-3 0)"/> -->
+ <!-- <polyline class="guide" points="0,0 0,78" stroke-width="1" fill="none" transform="translate(16.5 0)"/> -->
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(13 8)">POLES</text>
+ <g transform="translate(8 16)">
+ <g transform="translate(0 0)">
+ <def id="LPF_POLES_1_LIGHT" xlink:href="#light-small" transform="translate(0 0)"/>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">1</text>
+ </g>
+ <g transform="translate(0 12)">
+ <def id="LPF_POLES_2_LIGHT" xlink:href="#light-small" transform="translate(0 0)"/>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">2</text>
+ </g>
+ <g transform="translate(0 24)">
+ <def id="LPF_POLES_3_LIGHT" xlink:href="#light-small" transform="translate(0 0)"/>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">3</text>
+ </g>
+ <g transform="translate(0 36)">
+ <def id="LPF_POLES_4_LIGHT" xlink:href="#light-small" transform="translate(0 0)"/>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">4</text>
+ </g>
+ <def id="LPF_POLES_PARAM" xlink:href="#button-small" transform="translate(2 47)"/>
+ </g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(118 139)">
+ <!-- <rect width="179" height="110" fill="#f0f"/> -->
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">HPF</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+ <!-- <rect width="36" height="78" fill="#0f0" transform="translate(-3 0)"/> -->
+ <g transform="translate(0.5 8)" var-pad="10.0">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <def id="HPF_ENV_PARAM" xlink:href="#knob29x" transform="translate(0 $pad)"/>
+ <def xlink:href="#dial-attenuverter29" transform="translate(0 $pad)"/>
+ </g>
+ <g transform="translate(0 57)">
+ <def id="HPF_ENV_ATTENUATOR_PARAM" xlink:href="#knob16" transform="translate(15-8 0)"/>
+ <def xlink:href="#dial-centertick" transform="translate(-5 -12)"/>
+ </g>
+ <def xlink:href="#single-input" var-id="HPF_ENV_INPUT" transform="translate(0 80)"/>
+ </g>
+
+ <g transform="translate(50 0)">
+ <!-- <rect width="36" height="78" fill="#0f0" transform="translate(-3 0)"/> -->
+ <g transform="translate(0.5 8)" var-pad="10.0">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <def id="HPF_BIAS_PARAM" xlink:href="#knob29x" transform="translate(0 $pad)"/>
+ <def xlink:href="#dial-frequency-bias" transform="translate(-11 $pad-8)"/>
+ </g>
+ <g transform="translate(0 57)">
+ <def id="HPF_BIAS_ATTENUATOR_PARAM" xlink:href="#knob16" transform="translate(15-8 0)"/>
+ <def xlink:href="#dial-centertick" transform="translate(-5 -12)"/>
+ </g>
+ <def xlink:href="#single-input" var-id="HPF_BIAS_INPUT" transform="translate(0 80)"/>
+ </g>
+
+ <g transform="translate(93 0)">
+ <!-- <rect width="33" height="78" fill="#ff0" transform="translate(-3 0)"/> -->
+ <!-- <polyline class="guide" points="0,0 0,78" stroke-width="1" fill="none" transform="translate(16.5 0)"/> -->
+ <text font-size="7pt" letter-spacing="0.5px" text-anchor="middle" transform="translate(13 8)">POLES</text>
+ <g transform="translate(8 16)">
+ <g transform="translate(0 0)">
+ <def id="HPF_POLES_1_LIGHT" xlink:href="#light-small" transform="translate(0 0)"/>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">1</text>
+ </g>
+ <g transform="translate(0 12)">
+ <def id="HPF_POLES_2_LIGHT" xlink:href="#light-small" transform="translate(0 0)"/>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">2</text>
+ </g>
+ <g transform="translate(0 24)">
+ <def id="HPF_POLES_3_LIGHT" xlink:href="#light-small" transform="translate(0 0)"/>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">3</text>
+ </g>
+ <g transform="translate(0 36)">
+ <def id="HPF_POLES_4_LIGHT" xlink:href="#light-small" transform="translate(0 0)"/>
+ <text font-size="5pt" letter-spacing="1px" transform="translate(8 5.7)">4</text>
+ </g>
+ <def id="HPF_POLES_PARAM" xlink:href="#button-small" transform="translate(2 47)"/>
+ </g>
+ </g>
+ </g>
+ </g>
+
+ <g transform="translate(145 253)">
+ <!-- <rect width="100" height="110" fill="#f0f"/> -->
+ <text font-size="9pt" letter-spacing="2px" text-anchor="middle" transform="translate(10 55) rotate(-90)">VCA</text>
+
+ <g transform="translate(18 0)">
+ <g transform="translate(0 0)">
+ <!-- <rect width="36" height="78" fill="#0f0" transform="translate(-3 0)"/> -->
+ <g transform="translate(0.5 8)" var-pad="10.0">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">ENV</text>
+ <def id="VCA_ENV_PARAM" xlink:href="#knob29x" transform="translate(0 $pad)"/>
+ <def xlink:href="#dial-attenuverter29" transform="translate(0 $pad)"/>
+ </g>
+ <g transform="translate(0 57)">
+ <def id="VCA_ENV_ATTENUATOR_PARAM" xlink:href="#knob16" transform="translate(15-8 0)"/>
+ <def xlink:href="#dial-centertick" transform="translate(-5 -12)"/>
+ </g>
+ <def xlink:href="#single-input" var-id="VCA_ENV_INPUT" transform="translate(0 80)"/>
+ </g>
+
+ <g transform="translate(50 0)">
+ <!-- <rect width="36" height="78" fill="#0f0" transform="translate(-3 0)"/> -->
+ <g transform="translate(0.5 8)" var-pad="10.0">
+ <text font-size="7pt" letter-spacing="2px" text-anchor="middle" transform="translate(15 0)">BIAS</text>
+ <def id="VCA_BIAS_PARAM" xlink:href="#knob29x" transform="translate(0 $pad)"/>
+ <def xlink:href="#dial-mintick-29" transform="translate(0 $pad)"/>
+ </g>
+ <g transform="translate(0 57)">
+ <def id="VCA_BIAS_ATTENUATOR_PARAM" xlink:href="#knob16" transform="translate(15-8 0)"/>
+ <def xlink:href="#dial-centertick" transform="translate(-5 -12)"/>
+ </g>
+ <def xlink:href="#single-input" var-id="VCA_BIAS_INPUT" transform="translate(0 80)"/>
+ </g>
+ </g>
+ </g>
+</module>
diff --git a/res-src/RGate-src.svg b/res-src/RGate-src.svg
@@ -54,7 +54,7 @@
<use xlink:href="#dial-clock-rgate" transform="translate(0 $pad+13-$width/2.0)"/>
</g>
- <g transform="translate(0 248)">
+ <g class="io-group" transform="translate(0 248)">
<rect class="input-background" width="64" height="112" rx="5" transform="translate(5.5 0)" />
<def id="LENGTH_INPUT" xlink:href="#input" transform="translate(10.5 3)"/>
<text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(22.5 35)">LEN</text>
@@ -66,7 +66,7 @@
<text class="input-label" font-size="5pt" letter-spacing="2px" text-anchor="middle" transform="translate(52.5 72)">MUL</text>
<def id="CLOCK_INPUT" xlink:href="#input" transform="translate(10.5 77)"/>
<text class="input-label" font-size="5pt" letter-spacing="1px" text-anchor="middle" transform="translate(22.5 109)">CLOCK</text>
- <g class="io-group" transform="translate(30 72)">
+ <g transform="translate(30 72)">
<rect class="output-background" width="32" height="38" rx="5" transform="translate(7.5 2)"/>
<rect class="output-background-filler" width="32" height="10" transform="translate(7.5 2)"/>
<rect class="output-background-filler" width="10" height="10" transform="translate(7.5 30)"/>
diff --git a/res-src/Vish-src.svg b/res-src/Vish-src.svg
@@ -1,65 +1,13 @@
<module hp="5">
<style/>
- <defs>
- <symbol id="dial-rise-time-vish" viewBox="0 0 45px 45px">
- <g var-tt="19" transform="translate(22.5 22.5)">
- <text font-size="5pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate($tt+1.0 0) rotate(-1.0*$r) translate(0 3)">0MS</text>
- <text font-size="5pt" text-anchor="middle" var-r="0.01**0.5/0.3**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">10</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.025**0.5/0.3**0.5*300.0-240.0) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" var-r="0.05**0.5/0.3**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">50</text>
- <text font-size="5pt" text-anchor="middle" var-r="0.1**0.5/0.3**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">100</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.15**0.5/0.3**0.5*300.0-240.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.2**0.5/0.3**0.5*300.0-240.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.25**0.5/0.3**0.5*300.0-240.0) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" var-r="60" transform="rotate($r) translate($tt+1.0 0) rotate(-1.0*$r) translate(0 3)">300</text>
- </g>
- </symbol>
-
- <symbol id="dial-fall-time-vish" viewBox="0 0 45px 45px">
- <g var-tt="20" transform="translate(22.5 22.5)">
- <text font-size="5pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate($tt-1.0 0) rotate(-1.0*$r) translate(0 3)">0S</text>
- <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(0.01**0.5*300.0-240.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.05**0.5*300.0-240.0) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" var-r="0.1**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">0.1</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.2**0.5*300.0-240.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.3**0.5*300.0-240.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.4**0.5*300.0-240.0) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" var-r="0.5**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">0.5</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.6**0.5*300.0-240.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.7**0.5*300.0-240.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.8**0.5*300.0-240.0) translate(15 0)"/>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.9**0.5*300.0-240.0) translate(15 0)"/>
- <text font-size="5pt" text-anchor="middle" var-r="60" transform="rotate($r) translate($tt-1.0 0) rotate(-1.0*$r) translate(0 3)">1</text>
- </g>
- </symbol>
-
- <symbol id="dial-mingate-vish" viewBox="0 0 ${width}px ${width}px">
- <g transform="translate($width/2.0 $width/2.0)">
- <text font-size="6pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate(21 0) rotate(-1.0*$r) translate(0 3)">0S</text>
- <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.01**0.5*300.0-240.0) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(0.05**0.5*300.0-240.0) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" var-r="0.1**0.5*300.0-240.0" transform="rotate($r) translate(23 0) rotate(-1.0*$r) translate(0 3)">0.1</text>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(0.2**0.5*300.0-240.0) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(0.3**0.5*300.0-240.0) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(0.4**0.5*300.0-240.0) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" var-r="0.5**0.5*300.0-240.0" transform="rotate($r) translate(23 0) rotate(-1.0*$r) translate(0 3)">0.5</text>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(0.6**0.5*300.0-240.0) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(0.7**0.5*300.0-240.0) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(0.8**0.5*300.0-240.0) translate(17 0)"/>
- <polyline points="0,0 3.5,0" stroke-width="0.7" transform="rotate(0.9**0.5*300.0-240.0) translate(17 0)"/>
- <text font-size="6pt" text-anchor="middle" var-r="60" transform="rotate($r) translate(21 0) rotate(-1.0*$r) translate(0 3)">1</text>
- </g>
- </symbol>
- </defs>
-
<def xlink:href="#module5" var-name="VISH"/>
<g transform="translate(0 35)" var-pad="3.0">
<!-- <polyline class="guide" points="0,0 $width,0" stroke-width="1" fill="none" transform="translate(0 $pad+22)"/> -->
<text font-size="8pt" letter-spacing="2.0px" text-anchor="middle" transform="translate($width/2.0 0)">RISE</text>
<def id="RISE_PARAM" xlink:href="#knob26" transform="translate(12.5 $pad+9)"/>
- <use xlink:href="#dial-rise-time-vish" transform="translate(3 $pad-1)"/>
+ <def xlink:href="#dial-rise-time" transform="translate(3 $pad-1)"/>
<def id="RISE_SHAPE_PARAM" xlink:href="#knob16" transform="translate(52 $pad+14)"/>
<def xlink:href="#dial-shape-rise" transform="translate(40 $pad+2)"/>
</g>
@@ -68,7 +16,7 @@
<!-- <polyline class="guide" points="0,0 $width,0" stroke-width="1" fill="none" transform="translate(0 $pad+22)"/> -->
<text font-size="8pt" letter-spacing="2.0px" text-anchor="middle" transform="translate($width/2.0 0)">FALL</text>
<def id="FALL_PARAM" xlink:href="#knob26" transform="translate(12.5 $pad+9)"/>
- <use xlink:href="#dial-fall-time-vish" transform="translate(3 $pad-1)"/>
+ <def xlink:href="#dial-fall-time" transform="translate(3 $pad-1)"/>
<def id="FALL_SHAPE_PARAM" xlink:href="#knob16" transform="translate(52 $pad+14)"/>
<def xlink:href="#dial-shape-fall" transform="translate(40 $pad+2)"/>
</g>
@@ -76,7 +24,7 @@
<g transform="translate(0 164)" var-pad="3.0">
<text font-size="8pt" letter-spacing="1.5px" text-anchor="middle" transform="translate($width/2.0 0)">MIN GATE</text>
<def id="MINIMUM_GATE_PARAM" xlink:href="#knob29" transform="translate(15 $pad)"/>
- <use xlink:href="#dial-mingate-vish" transform="translate(0 $pad+45.0/2.0-$width/2.0)"/>
+ <def xlink:href="#dial-mingate" transform="translate($width/2.0-25 $pad-2.5)"/>
</g>
<g transform="translate(-6 221)">
diff --git a/res-src/defs.svg b/res-src/defs.svg
@@ -118,6 +118,14 @@
</g>
</symbol>
+ <symbol id="knob29x" viewBox="0 0 29px 29px">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
+ <polyline points="0,-5 0,5" stroke-width="1" stroke="#00f"/>
+ <circle cx="0" cy="0" r="14" stroke-width="1" stroke="#00f" fill="none"/>
+ </g>
+ </symbol>
+
<symbol id="knob38" viewBox="0 0 38px 38px">
<g transform="translate(19 19)">
<polyline points="-5,0 5,0" stroke-width="1" stroke="#00f"/>
@@ -189,6 +197,22 @@
</g>
</symbol>
+ <symbol id="dial-attenuverter29" viewBox="0 0 29px 29px">
+ <g transform="translate(14.5 14.5)">
+ <text font-size="9.0pt" text-align="middle" transform="rotate(-240) translate(18 0) rotate(240) translate(-2.2 3.6)">-</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(-90) translate(19 0) rotate(90) translate(-2 2)">0</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <text font-size="5.0pt" text-align="middle" transform="rotate(60) translate(18 0) rotate(-60) translate(-2 2)">+</text>
+ </g>
+ </symbol>
+
<symbol id="dial-attenuverter" viewBox="0 0 45px 45px">
<g transform="translate(22.5 22.5)">
<g transform="rotate(-240) translate(15 0)">
@@ -384,6 +408,46 @@
</g>
</symbol>
+ <symbol id="dial-fall-time" viewBox="0 0 45px 45px">
+ <g var-tt="20" transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate($tt-1.0 0) rotate(-1.0*$r) translate(0 3)">0S</text>
+ <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(0.01**0.5*300.0-240.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.05**0.5*300.0-240.0) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="0.1**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.2**0.5*300.0-240.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.3**0.5*300.0-240.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.4**0.5*300.0-240.0) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="0.5**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.6**0.5*300.0-240.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.7**0.5*300.0-240.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.8**0.5*300.0-240.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.9**0.5*300.0-240.0) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="60" transform="rotate($r) translate($tt-1.0 0) rotate(-1.0*$r) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="dial-fall-time-29" viewBox="0 0 45px 45px">
+ <g var-tt="20" transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">0S</text>
+ <polyline points="0,0 2,0" stroke-width="0.7" transform="rotate(0.01**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.05**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="0.1**0.5*300.0-240.0" transform="rotate($r) translate($tt+1 0) rotate(-1.0*$r) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.2**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.3**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.4**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="0.5**0.5*300.0-240.0" transform="rotate($r) translate($tt+1 0) rotate(-1.0*$r) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.6**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.7**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.8**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.9**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="60" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
<symbol id="dial-frequency" viewBox="0 0 108px 108px">
<g transform="translate(54 54)">
<g transform="rotate(-240) translate(34 0)">
@@ -550,6 +614,23 @@
</g>
</symbol>
+ <symbol id="dial-frequency-bias" viewBox="0 0 61px 45px">
+ <g transform="translate(25.5 22.5)">
+ <text font-size="5pt" transform="rotate(60) translate(17 0) rotate(-60) translate(0 4)">20K</text>
+ <text font-size="5pt" transform="rotate(-90) translate(19 0) rotate(90) translate(-4 2.2)">5K</text>
+ <text font-size="5pt" transform="rotate(-172.9) translate(19 0) rotate(172.9) translate(-5 2.2)">1K</text>
+ <text font-size="5pt" transform="rotate(-240) translate(17 0) rotate(240) translate(-12 4)">0HZ</text>
+
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(19.8) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-27.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-133.9) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-192.6) translate(17 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
<symbol id="dial-linear" viewBox="0 0 45px 45px">
<g transform="translate(22.5 22.5)">
<text font-size="5.0pt" transform="rotate(-240) translate(18 0) rotate(240) translate(-2 2)">0</text>
@@ -566,31 +647,102 @@
</g>
</symbol>
- <symbol id="dial-mintick-base">
- <g>
- <polyline points="0,0 $radius/3.0,0" stroke-width="1" transform="rotate(-240) translate($radius-2.5 0)"/>
- <path class="$class" d="M 0 $radius*-1.0 A $radius $radius 0 0 1 $radius 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(0)"/>
- <path class="$class" d="M 0 $radius*-1.0 A $radius $radius 0 0 1 $radius 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/>
- <path class="$class" d="M 0 $radius*-1.0 A $radius $radius 0 0 0 $radius*-1.0 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(0)"/>
- <path class="$class" d="M 0 $radius*-1.0 A $radius $radius 0 0 0 $radius*-1.0 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/>
+ <symbol id="dial-mingate" viewBox="0 0 50px 50px">
+ <g transform="translate(25 25)">
+ <text font-size="6pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate(21 0) rotate(-1.0*$r) translate(0 3)">0S</text>
+ <polyline points="0,0 1.5,0" stroke-width="0.7" transform="rotate(0.01**0.5*300.0-240.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.05**0.5*300.0-240.0) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" var-r="0.1**0.5*300.0-240.0" transform="rotate($r) translate(23 0) rotate(-1.0*$r) translate(0 3)">0.1</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.2**0.5*300.0-240.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.3**0.5*300.0-240.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.4**0.5*300.0-240.0) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" var-r="0.5**0.5*300.0-240.0" transform="rotate($r) translate(23 0) rotate(-1.0*$r) translate(0 3)">0.5</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.6**0.5*300.0-240.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.7**0.5*300.0-240.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.8**0.5*300.0-240.0) translate(17 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.9**0.5*300.0-240.0) translate(17 0)"/>
+ <text font-size="6pt" text-anchor="middle" var-r="60" transform="rotate($r) translate(21 0) rotate(-1.0*$r) translate(0 3)">1</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</symbol>
+ <symbol id="dial-mintick-base">
+ <polyline points="0,0 $radius/3.0,0" stroke-width="1" transform="rotate(-240) translate($radius-2.5 0)"/>
+ <path class="$class" d="M 0 $radius*-1.0 A $radius $radius 0 0 1 $radius 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(0)"/>
+ <path class="$class" d="M 0 $radius*-1.0 A $radius $radius 0 0 1 $radius 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/>
+ <path class="$class" d="M 0 $radius*-1.0 A $radius $radius 0 0 0 $radius*-1.0 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(0)"/>
+ <path class="$class" d="M 0 $radius*-1.0 A $radius $radius 0 0 0 $radius*-1.0 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/>
+ <polyline points="-3,0 3,0" stroke-width="1" fill="none"/>
+ <polyline points="0,-3 0,3" stroke-width="1" fill="none"/>
+ </symbol>
+
<symbol id="dial-mintick" viewBox="0 0 40px 40px">
- <g transform="translate(20 20)">
- <def xlink:href="#dial-mintick-base" var-radius="12.5"/>
- </g>
+ <def xlink:href="#dial-mintick-base" var-radius="12.5" transform="translate(20 20)"/>
</symbol>
<symbol id="dial-mintick-input" viewBox="0 0 40px 40px">
- <g transform="translate(20 20)">
- <def xlink:href="#dial-mintick-base" var-radius="12.5" class="input-label"/>
- </g>
+ <def xlink:href="#dial-mintick-base" var-radius="12.5" class="input-label" transform="translate(20 20)"/>
</symbol>
<symbol id="dial-mintick26" viewBox="0 0 40px 40px">
- <g transform="translate(20 20)">
- <def xlink:href="#dial-mintick-base" var-radius="19"/>
+ <def xlink:href="#dial-mintick-base" var-radius="19" transform="translate(20 20)"/>
+ </symbol>
+
+ <symbol id="dial-mintick-26" viewBox="0 0 26px 26px">
+ <g transform="translate(13 13)">
+ <polyline points="0,0 4,0" stroke-width="1.5" transform="rotate(-240) translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-90) translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(14.5 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(60) translate(14.5 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="dial-mintick-29" viewBox="0 0 29px 29px">
+ <g transform="translate(14.5 14.5)">
+ <polyline points="0,0 4,0" stroke-width="1.5" transform="rotate(-240) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-210) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-180) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-150) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-120) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-90) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-60) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(-30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(30) translate(16 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(60) translate(16 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="dial-mintick-45" viewBox="0 0 60px 60px">
+ <g transform="translate(30 30)">
+ <polyline points="0,0 4.5,0" stroke-width="1.5" transform="rotate(-240) translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="rotate(-210) translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="rotate(-180) translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="rotate(-150) translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="rotate(-120) translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="rotate(-90) translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="rotate(-60) translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="rotate(-30) translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="rotate(30) translate(25 0)"/>
+ <polyline points="0,0 3,0" stroke-width="0.7" transform="rotate(60) translate(25 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</symbol>
@@ -640,6 +792,38 @@
</g>
</symbol>
+ <symbol id="dial-rise-time" viewBox="0 0 45px 45px">
+ <g var-tt="19" transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate($tt+1.0 0) rotate(-1.0*$r) translate(0 3)">0MS</text>
+ <text font-size="5pt" text-anchor="middle" var-r="0.01**0.5/0.3**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">10</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.025**0.5/0.3**0.5*300.0-240.0) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="0.05**0.5/0.3**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">50</text>
+ <text font-size="5pt" text-anchor="middle" var-r="0.1**0.5/0.3**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">100</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.15**0.5/0.3**0.5*300.0-240.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.2**0.5/0.3**0.5*300.0-240.0) translate(15 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.25**0.5/0.3**0.5*300.0-240.0) translate(15 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="60" transform="rotate($r) translate($tt+1.0 0) rotate(-1.0*$r) translate(0 3)">300</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
+ <symbol id="dial-rise-time-29" viewBox="0 0 45px 45px">
+ <g var-tt="20" transform="translate(22.5 22.5)">
+ <text font-size="5pt" text-anchor="middle" var-r="-240" transform="rotate($r) translate($tt+1.0 0) rotate(-1.0*$r) translate(0 3)">0MS</text>
+ <text font-size="5pt" text-anchor="middle" var-r="0.01**0.5/0.3**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">10</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.025**0.5/0.3**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="0.05**0.5/0.3**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">50</text>
+ <text font-size="5pt" text-anchor="middle" var-r="0.1**0.5/0.3**0.5*300.0-240.0" transform="rotate($r) translate($tt 0) rotate(-1.0*$r) translate(0 3)">100</text>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.15**0.5/0.3**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.2**0.5/0.3**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <polyline points="0,0 2.5,0" stroke-width="0.7" transform="rotate(0.25**0.5/0.3**0.5*300.0-240.0) translate($tt-3 0)"/>
+ <text font-size="5pt" text-anchor="middle" var-r="60" transform="rotate($r) translate($tt+1.0 0) rotate(-1.0*$r) translate(0 3)">300</text>
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
+ </g>
+ </symbol>
+
<symbol id="dial-scale" viewBox="0 0 45px 45px">
<g transform="translate(22.5 22.5)">
<text font-size="5.0pt" transform="rotate(-135) translate(15 0) rotate(135) translate(-8 2)">0.1</text>
@@ -677,6 +861,9 @@
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-45) translate(0 0)"/>
<polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(-45) translate(0 0)"/>
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(135) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</symbol>
@@ -693,6 +880,9 @@
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(60) translate(13 0) rotate(-60) translate(2 0) rotate(-135) translate(0 0)"/>
<polyline points="-3.5,0 3.5,0" stroke-width="1" fill="none" transform="rotate(-90) translate(13 0) rotate(90) rotate(45) translate(0 0)"/>
<path d="M -3.5 0 Q 0 3.5, 3.5 0" stroke-width="1" stroke="#333" fill="none" transform="rotate(-240) translate(13 0) rotate(240) translate(-2 0) rotate(45) translate(0 0)"/>
+
+ <polyline points="-3,0 3,0" stroke-width="1.0"/>
+ <polyline points="0,-3 0,3" stroke-width="1.0"/>
</g>
</symbol>
diff --git a/res/MegaGate-dark.svg b/res/MegaGate-dark.svg
Binary files differ.
diff --git a/res/MegaGate-lowcontrast.svg b/res/MegaGate-lowcontrast.svg
Binary files differ.
diff --git a/res/MegaGate.svg b/res/MegaGate.svg
Binary files differ.
diff --git a/res/RGate-dark.svg b/res/RGate-dark.svg
Binary files differ.
diff --git a/res/RGate-lowcontrast.svg b/res/RGate-lowcontrast.svg
Binary files differ.
diff --git a/res/RGate.svg b/res/RGate.svg
Binary files differ.
diff --git a/res/Vish-dark.svg b/res/Vish-dark.svg
Binary files differ.
diff --git a/res/Vish-lowcontrast.svg b/res/Vish-lowcontrast.svg
Binary files differ.
diff --git a/res/Vish.svg b/res/Vish.svg
Binary files differ.
diff --git a/src/MegaGate.cpp b/src/MegaGate.cpp
@@ -0,0 +1,412 @@
+
+#include "MegaGate.hpp"
+#include "dsp/pitch.hpp"
+
+void MegaGate::Engine::reset() {
+ trigger.reset();
+ gatePulseGen.process(10.0);
+}
+
+void MegaGate::Engine::setSampleRate(float sr) {
+ velocitySL.setParams(sr, 5.0f, 1.0f);
+ tiltSL.setParams(sr, 10.0f, 2.0f);
+ leftVcaSL.setParams(sr, 5.0f, 1.0f);
+ rightVcaSL.setParams(sr, 5.0f, 1.0f);
+ leftFinalHP.setParams(sr, MultimodeFilter::BUTTERWORTH_TYPE, 2, MultimodeFilter::HIGHPASS_MODE, 80.0f, MultimodeFilter::minQbw, MultimodeFilter::LINEAR_BANDWIDTH_MODE, MultimodeFilter::MINIMUM_DELAY_MODE);
+ rightFinalHP.setParams(sr, MultimodeFilter::BUTTERWORTH_TYPE, 2, MultimodeFilter::HIGHPASS_MODE, 80.0f, MultimodeFilter::minQbw, MultimodeFilter::LINEAR_BANDWIDTH_MODE, MultimodeFilter::MINIMUM_DELAY_MODE);
+}
+
+void MegaGate::reset() {
+ for (int c = 0; c < _channels; ++c) {
+ _engines[c]->reset();
+ }
+}
+
+void MegaGate::sampleRateChange() {
+ _sampleRate = APP->engine->getSampleRate();
+ _sampleTime = APP->engine->getSampleTime();
+ for (int i = 0; i < _channels; ++i) {
+ _engines[i]->setSampleRate(_sampleRate);
+ }
+}
+
+bool MegaGate::active() {
+ return outputs[LEFT_OUTPUT].isConnected() || outputs[RIGHT_OUTPUT].isConnected() || outputs[ENV_OUTPUT].isConnected();
+}
+
+int MegaGate::channels() {
+ return inputs[GATE_INPUT].getChannels();
+}
+
+void MegaGate::addChannel(int c) {
+ _engines[c] = new Engine();
+ _engines[c]->reset();
+ _engines[c]->setSampleRate(_sampleRate);
+}
+
+void MegaGate::removeChannel(int c) {
+ delete _engines[c];
+ _engines[c] = NULL;
+}
+
+void MegaGate::modulateChannel(int c) {
+ _engines[c]->slew.modulate(
+ _sampleRate,
+ params[RISE_PARAM],
+ inputs[RISE_INPUT],
+ 300.0f * _timeScale,
+ params[RISE_SHAPE_PARAM],
+ params[FALL_PARAM],
+ inputs[FALL_INPUT],
+ 1000.0f * _timeScale,
+ params[FALL_SHAPE_PARAM],
+ c
+ );
+}
+
+void MegaGate::processChannel(const ProcessArgs& args, int c) {
+ Engine& e = *_engines[c];
+
+ float in = inputs[GATE_INPUT].getPolyVoltage(c);
+ if (e.trigger.process(in)) {
+ float time = clamp(params[MINIMUM_GATE_PARAM].getValue(), 0.0f, 1.0f);
+ if (inputs[MINIMUM_GATE_INPUT].isConnected()) {
+ time *= clamp(inputs[MINIMUM_GATE_INPUT].getPolyVoltage(c) / 10.0f, 0.0f, 1.0f);
+ }
+ time *= time;
+ time *= _timeScale;
+ e.gateSeconds = time;
+
+ e.gateElapsedSeconds = 0.0f;
+ if (_gateToTrigger) {
+ e.gateSeconds = std::max(0.01f, time);
+ }
+ else {
+ e.gateSeconds = time;
+ }
+ }
+ else {
+ e.gateElapsedSeconds += _sampleTime;
+ }
+
+ float gate = 0.0f;
+ if (e.gateElapsedSeconds < e.gateSeconds) {
+ gate = 10.0f;
+ }
+ else if (!_gateToTrigger) {
+ gate = in;
+ }
+
+ float velocity = 1.0f;
+ if (inputs[VELOCITY_INPUT].isConnected()) {
+ velocity = clamp(inputs[VELOCITY_INPUT].getPolyVoltage(c) / 10.0f, 0.0f, 1.0f);
+ }
+ velocity = e.velocitySL.next(velocity);
+ e.velocityAmp.setLevel(_minVelocityDb + velocity * (_maxVelocityDb - _minVelocityDb));
+ float env = e.velocityAmp.next(e.slew.next(gate));
+ env /= 10.0f;
+
+ float tilt = clamp(params[TILT_PARAM].getValue(), -1.0f, 1.0f);
+ if (inputs[TILT_INPUT].isConnected()) {
+ tilt *= clamp(inputs[TILT_INPUT].getPolyVoltage(c) / 5.0f, -1.0f, 1.0f);
+ }
+ tilt = e.tiltSL.next(tilt);
+
+ float leftEnv = env;
+ float rightEnv = env;
+ if (tilt < 0.0f) {
+ rightEnv *= 1.0f + tilt;
+ }
+ else {
+ leftEnv *= 1.0f - tilt;
+ }
+
+ float lpfEnv = clamp(params[LPF_ENV_PARAM].getValue(), -1.0f, 1.0f);
+ if (inputs[LPF_ENV_INPUT].isConnected()) {
+ float cv = clamp(params[LPF_ENV_ATTENUATOR_PARAM].getValue(), -1.0f, 1.0f);
+ cv *= clamp(inputs[LPF_ENV_INPUT].getPolyVoltage(c) / 5.0f, -1.0f, 1.0f);
+ lpfEnv = clamp(lpfEnv + cv, -1.0f, 1.0f);
+ }
+ float lpfBias = clamp(params[LPF_BIAS_PARAM].getValue(), -1.0f, 1.0f);
+ if (inputs[LPF_BIAS_INPUT].isConnected()) {
+ float cv = clamp(params[LPF_BIAS_ATTENUATOR_PARAM].getValue(), -1.0f, 1.0f);
+ cv *= clamp(inputs[LPF_BIAS_INPUT].getPolyVoltage(c) / 5.0f, -1.0f, 1.0f);
+ lpfBias = clamp(lpfBias + cv, -1.0f, 1.0f);
+ }
+ lpfBias *= lpfBias;
+ int lpfPoles = 1 + roundf(clamp(params[LPF_POLES_PARAM].getValue(), 0.0f, 3.0f));
+
+ float hpfEnv = clamp(params[HPF_ENV_PARAM].getValue(), -1.0f, 1.0f);
+ if (inputs[HPF_ENV_INPUT].isConnected()) {
+ float cv = clamp(params[HPF_ENV_ATTENUATOR_PARAM].getValue(), -1.0f, 1.0f);
+ cv *= clamp(inputs[HPF_ENV_INPUT].getPolyVoltage(c) / 5.0f, -1.0f, 1.0f);
+ hpfEnv = clamp(hpfEnv + cv, -1.0f, 1.0f);
+ }
+ float hpfBias = clamp(params[HPF_BIAS_PARAM].getValue(), -1.0f, 1.0f);
+ if (inputs[HPF_BIAS_INPUT].isConnected()) {
+ float cv = clamp(params[HPF_BIAS_ATTENUATOR_PARAM].getValue(), -1.0f, 1.0f);
+ cv *= clamp(inputs[HPF_BIAS_INPUT].getPolyVoltage(c) / 5.0f, -1.0f, 1.0f);
+ hpfBias = clamp(hpfBias + cv, -1.0f, 1.0f);
+ }
+ hpfBias *= hpfBias;
+ int hpfPoles = 1 + roundf(clamp(params[HPF_POLES_PARAM].getValue(), 0.0f, 3.0f));
+
+ bool serial = params[FILTERS_SERIAL_PARAM].getValue() > 0.5f;
+ bool linear = params[LINEAR_VCA_PARAM].getValue() > 0.5f;
+
+ float vcaEnv = clamp(params[VCA_ENV_PARAM].getValue(), -1.0f, 1.0f);
+ if (inputs[VCA_ENV_INPUT].isConnected()) {
+ float cv = clamp(params[VCA_ENV_ATTENUATOR_PARAM].getValue(), -1.0f, 1.0f);
+ cv *= clamp(inputs[VCA_ENV_INPUT].getPolyVoltage(c) / 5.0f, -1.0f, 1.0f);
+ vcaEnv = clamp(vcaEnv + cv, -1.0f, 1.0f);
+ }
+ float vcaBias = clamp(params[VCA_BIAS_PARAM].getValue(), 0.0f, 1.0f);
+ if (inputs[VCA_ENV_INPUT].isConnected()) {
+ float cv = clamp(params[VCA_BIAS_ATTENUATOR_PARAM].getValue(), -1.0f, 1.0f);
+ cv *= clamp(inputs[VCA_BIAS_INPUT].getPolyVoltage(c) / 5.0f, -1.0f, 1.0f);
+ vcaBias = clamp(vcaBias + cv, 0.0f, 1.0f);
+ }
+
+ {
+ float f = clamp(lpfBias + leftEnv * lpfEnv, 0.0f, 1.0f);
+ f *= maxFilterCutoff;
+ f = std::max(f, MultimodeFilter4::minFrequency);
+ e.leftLpf.setParams(
+ _sampleRate,
+ MultimodeFilter::BUTTERWORTH_TYPE,
+ lpfPoles,
+ MultimodeFilter::LOWPASS_MODE,
+ f,
+ 0.0f
+ );
+ }
+ {
+ float f = clamp(hpfBias - leftEnv * hpfEnv, 0.0f, 1.0f);
+ f *= maxFilterCutoff;
+ f = std::max(f, MultimodeFilter4::minFrequency);
+ e.leftHpf.setParams(
+ _sampleRate,
+ MultimodeFilter::BUTTERWORTH_TYPE,
+ hpfPoles,
+ MultimodeFilter::HIGHPASS_MODE,
+ f,
+ 0.0f
+ );
+ }
+ float level = clamp(vcaBias + leftEnv * vcaEnv, 0.0f, 1.0f);
+ level = e.leftVcaSL.next(level);
+
+ float leftIn = inputs[LEFT_INPUT].getPolyVoltage(c);
+ float leftOut = 0.0f;
+ if (serial) {
+ leftOut = e.leftHpf.next(e.leftLpf.next(leftIn));
+ }
+ else {
+ leftOut = e.leftLpf.next(leftIn) + e.leftHpf.next(leftIn);
+ }
+ leftOut = e.leftFinalHP.next(leftOut);
+ if (linear) {
+ leftOut *= level;
+ }
+ else {
+ e.leftVca.setLevel(Amplifier::minDecibels * (1.0f - level));
+ leftOut = e.leftVca.next(leftOut);
+ }
+
+ float rightOut = 0.0f;
+ if (outputs[RIGHT_OUTPUT].isConnected()) {
+ float rightIn = leftIn;
+ if (inputs[RIGHT_INPUT].isConnected()) {
+ rightIn = inputs[RIGHT_INPUT].getPolyVoltage(c);
+ }
+
+ {
+ float f = clamp(lpfBias + rightEnv * lpfEnv, 0.0f, 1.0f);
+ f *= maxFilterCutoff;
+ f = std::max(f, MultimodeFilter4::minFrequency);
+ e.rightLpf.setParams(
+ _sampleRate,
+ MultimodeFilter::BUTTERWORTH_TYPE,
+ lpfPoles,
+ MultimodeFilter::LOWPASS_MODE,
+ f,
+ 0.0f
+ );
+ }
+ {
+ float f = clamp(hpfBias - rightEnv * hpfEnv, 0.0f, 1.0f);
+ f *= maxFilterCutoff;
+ f = std::max(f, MultimodeFilter4::minFrequency);
+ e.rightHpf.setParams(
+ _sampleRate,
+ MultimodeFilter::BUTTERWORTH_TYPE,
+ hpfPoles,
+ MultimodeFilter::HIGHPASS_MODE,
+ f,
+ 0.0f
+ );
+ }
+ float level = clamp(vcaBias + rightEnv * vcaEnv, 0.0f, 1.0f);
+ level = e.rightVcaSL.next(level);
+
+ if (serial) {
+ rightOut = e.rightHpf.next(e.rightLpf.next(rightIn));
+ }
+ else {
+ rightOut = e.rightLpf.next(rightIn) + e.rightHpf.next(rightIn);
+ }
+ rightOut = e.rightFinalHP.next(rightOut);
+ if (linear) {
+ rightOut *= level;
+ }
+ else {
+ e.rightVca.setLevel(Amplifier::minDecibels * (1.0f - level));
+ rightOut = e.rightVca.next(rightOut);
+ }
+ }
+
+ outputs[ENV_OUTPUT].setChannels(_channels);
+ outputs[ENV_OUTPUT].setVoltage(env * 10.0f, c);
+ outputs[LEFT_OUTPUT].setChannels(_channels);
+ outputs[LEFT_OUTPUT].setVoltage(leftOut, c);
+ outputs[RIGHT_OUTPUT].setChannels(_channels);
+ outputs[RIGHT_OUTPUT].setVoltage(rightOut, c);
+}
+
+void MegaGate::processAlways(const ProcessArgs& args) {
+ {
+ int poles = params[LPF_POLES_PARAM].getValue();
+ lights[LPF_POLES_1_LIGHT].value = poles == 0;
+ lights[LPF_POLES_2_LIGHT].value = poles == 1;
+ lights[LPF_POLES_3_LIGHT].value = poles == 2;
+ lights[LPF_POLES_4_LIGHT].value = poles == 3;
+ }
+ {
+ int poles = params[HPF_POLES_PARAM].getValue();
+ lights[HPF_POLES_1_LIGHT].value = poles == 0;
+ lights[HPF_POLES_2_LIGHT].value = poles == 1;
+ lights[HPF_POLES_3_LIGHT].value = poles == 2;
+ lights[HPF_POLES_4_LIGHT].value = poles == 3;
+ }
+}
+
+struct MegaGateWidget : LPGEnvBaseWidget {
+ static constexpr int hp = 18;
+
+ MegaGateWidget(MegaGate* module) {
+ setModule(module);
+ box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT);
+ setPanel(box.size, "MegaGate");
+ createScrews();
+
+ // generated by svg_widgets.rb
+ auto riseParamPosition = Vec(17.5, 41.5);
+ auto riseShapeParamPosition = Vec(24.0, 89.0);
+ auto fallParamPosition = Vec(72.5, 41.5);
+ auto fallShapeParamPosition = Vec(79.0, 89.0);
+ auto minimumGateParamPosition = Vec(17.5, 176.0);
+ auto tiltParamPosition = Vec(72.5, 176.0);
+ auto gateToTriggerParamPosition = Vec(20.0, 255.0);
+ auto times10xParamPosition = Vec(20.0, 269.0);
+ auto filtersSerialParamPosition = Vec(90.0, 255.0);
+ auto linearVcaParamPosition = Vec(90.0, 269.0);
+ auto lpfEnvParamPosition = Vec(136.5, 42.0);
+ auto lpfEnvAttenuatorParamPosition = Vec(143.0, 81.0);
+ auto lpfBiasParamPosition = Vec(186.5, 42.0);
+ auto lpfBiasAttenuatorParamPosition = Vec(193.0, 81.0);
+ auto lpfPolesParamPosition = Vec(241.0, 87.0);
+ auto hpfEnvParamPosition = Vec(136.5, 157.0);
+ auto hpfEnvAttenuatorParamPosition = Vec(143.0, 196.0);
+ auto hpfBiasParamPosition = Vec(186.5, 157.0);
+ auto hpfBiasAttenuatorParamPosition = Vec(193.0, 196.0);
+ auto hpfPolesParamPosition = Vec(239.0, 202.0);
+ auto vcaEnvParamPosition = Vec(163.5, 271.0);
+ auto vcaEnvAttenuatorParamPosition = Vec(170.0, 310.0);
+ auto vcaBiasParamPosition = Vec(213.5, 271.0);
+ auto vcaBiasAttenuatorParamPosition = Vec(220.0, 310.0);
+
+ auto riseInputPosition = Vec(20.5, 118.0);
+ auto fallInputPosition = Vec(75.5, 118.0);
+ auto minimumGateInputPosition = Vec(20.5, 220.0);
+ auto tiltInputPosition = Vec(75.5, 220.0);
+ auto gateInputPosition = Vec(8.5, 287.0);
+ auto velocityInputPosition = Vec(38.5, 287.0);
+ auto leftInputPosition = Vec(68.5, 287.0);
+ auto rightInputPosition = Vec(98.5, 287.0);
+ auto lpfEnvInputPosition = Vec(139.0, 106.0);
+ auto lpfBiasInputPosition = Vec(189.0, 106.0);
+ auto hpfEnvInputPosition = Vec(139.0, 221.0);
+ auto hpfBiasInputPosition = Vec(189.0, 221.0);
+ auto vcaEnvInputPosition = Vec(166.0, 335.0);
+ auto vcaBiasInputPosition = Vec(216.0, 335.0);
+
+ auto envOutputPosition = Vec(38.5, 324.0);
+ auto leftOutputPosition = Vec(68.5, 324.0);
+ auto rightOutputPosition = Vec(98.5, 324.0);
+
+ auto lpfPoles1LightPosition = Vec(239.0, 40.0);
+ auto lpfPoles2LightPosition = Vec(239.0, 52.0);
+ auto lpfPoles3LightPosition = Vec(239.0, 64.0);
+ auto lpfPoles4LightPosition = Vec(239.0, 76.0);
+ auto hpfPoles1LightPosition = Vec(237.0, 155.0);
+ auto hpfPoles2LightPosition = Vec(237.0, 167.0);
+ auto hpfPoles3LightPosition = Vec(237.0, 179.0);
+ auto hpfPoles4LightPosition = Vec(237.0, 191.0);
+ // end generated by svg_widgets.rb
+
+ addParam(createParam<Knob29>(riseParamPosition, module, MegaGate::RISE_PARAM));
+ addParam(createParam<Knob16>(riseShapeParamPosition, module, MegaGate::RISE_SHAPE_PARAM));
+ addParam(createParam<Knob29>(fallParamPosition, module, MegaGate::FALL_PARAM));
+ addParam(createParam<Knob16>(fallShapeParamPosition, module, MegaGate::FALL_SHAPE_PARAM));
+ addParam(createParam<Knob29>(minimumGateParamPosition, module, MegaGate::MINIMUM_GATE_PARAM));
+ addParam(createParam<Knob29>(tiltParamPosition, module, MegaGate::TILT_PARAM));
+ addParam(createParam<IndicatorButtonGreen9>(gateToTriggerParamPosition, module, MegaGate::GATE_TO_TRIGGER_PARAM));
+ addParam(createParam<IndicatorButtonGreen9>(times10xParamPosition, module, MegaGate::TIMES_10X_PARAM));
+ addParam(createParam<IndicatorButtonGreen9>(filtersSerialParamPosition, module, MegaGate::FILTERS_SERIAL_PARAM));
+ addParam(createParam<IndicatorButtonGreen9>(linearVcaParamPosition, module, MegaGate::LINEAR_VCA_PARAM));
+ addParam(createParam<Knob29>(lpfEnvParamPosition, module, MegaGate::LPF_ENV_PARAM));
+ addParam(createParam<Knob16>(lpfEnvAttenuatorParamPosition, module, MegaGate::LPF_ENV_ATTENUATOR_PARAM));
+ addParam(createParam<Knob29>(lpfBiasParamPosition, module, MegaGate::LPF_BIAS_PARAM));
+ addParam(createParam<Knob16>(lpfBiasAttenuatorParamPosition, module, MegaGate::LPF_BIAS_ATTENUATOR_PARAM));
+ addParam(createParam<StatefulButton9>(lpfPolesParamPosition, module, MegaGate::LPF_POLES_PARAM));
+ addParam(createParam<Knob29>(hpfEnvParamPosition, module, MegaGate::HPF_ENV_PARAM));
+ addParam(createParam<Knob16>(hpfEnvAttenuatorParamPosition, module, MegaGate::HPF_ENV_ATTENUATOR_PARAM));
+ addParam(createParam<Knob29>(hpfBiasParamPosition, module, MegaGate::HPF_BIAS_PARAM));
+ addParam(createParam<Knob16>(hpfBiasAttenuatorParamPosition, module, MegaGate::HPF_BIAS_ATTENUATOR_PARAM));
+ addParam(createParam<StatefulButton9>(hpfPolesParamPosition, module, MegaGate::HPF_POLES_PARAM));
+ addParam(createParam<Knob29>(vcaEnvParamPosition, module, MegaGate::VCA_ENV_PARAM));
+ addParam(createParam<Knob16>(vcaEnvAttenuatorParamPosition, module, MegaGate::VCA_ENV_ATTENUATOR_PARAM));
+ addParam(createParam<Knob29>(vcaBiasParamPosition, module, MegaGate::VCA_BIAS_PARAM));
+ addParam(createParam<Knob16>(vcaBiasAttenuatorParamPosition, module, MegaGate::VCA_BIAS_ATTENUATOR_PARAM));
+
+ addInput(createInput<Port24>(riseInputPosition, module, MegaGate::RISE_INPUT));
+ addInput(createInput<Port24>(fallInputPosition, module, MegaGate::FALL_INPUT));
+ addInput(createInput<Port24>(minimumGateInputPosition, module, MegaGate::MINIMUM_GATE_INPUT));
+ addInput(createInput<Port24>(tiltInputPosition, module, MegaGate::TILT_INPUT));
+ addInput(createInput<Port24>(gateInputPosition, module, MegaGate::GATE_INPUT));
+ addInput(createInput<Port24>(velocityInputPosition, module, MegaGate::VELOCITY_INPUT));
+ addInput(createInput<Port24>(leftInputPosition, module, MegaGate::LEFT_INPUT));
+ addInput(createInput<Port24>(rightInputPosition, module, MegaGate::RIGHT_INPUT));
+ addInput(createInput<Port24>(lpfEnvInputPosition, module, MegaGate::LPF_ENV_INPUT));
+ addInput(createInput<Port24>(lpfBiasInputPosition, module, MegaGate::LPF_BIAS_INPUT));
+ addInput(createInput<Port24>(hpfEnvInputPosition, module, MegaGate::HPF_ENV_INPUT));
+ addInput(createInput<Port24>(hpfBiasInputPosition, module, MegaGate::HPF_BIAS_INPUT));
+ addInput(createInput<Port24>(vcaEnvInputPosition, module, MegaGate::VCA_ENV_INPUT));
+ addInput(createInput<Port24>(vcaBiasInputPosition, module, MegaGate::VCA_BIAS_INPUT));
+
+ addOutput(createOutput<Port24>(envOutputPosition, module, MegaGate::ENV_OUTPUT));
+ addOutput(createOutput<Port24>(leftOutputPosition, module, MegaGate::LEFT_OUTPUT));
+ addOutput(createOutput<Port24>(rightOutputPosition, module, MegaGate::RIGHT_OUTPUT));
+
+ addChild(createLight<SmallLight<GreenLight>>(lpfPoles1LightPosition, module, MegaGate::LPF_POLES_1_LIGHT));
+ addChild(createLight<SmallLight<GreenLight>>(lpfPoles2LightPosition, module, MegaGate::LPF_POLES_2_LIGHT));
+ addChild(createLight<SmallLight<GreenLight>>(lpfPoles3LightPosition, module, MegaGate::LPF_POLES_3_LIGHT));
+ addChild(createLight<SmallLight<GreenLight>>(lpfPoles4LightPosition, module, MegaGate::LPF_POLES_4_LIGHT));
+ addChild(createLight<SmallLight<GreenLight>>(hpfPoles1LightPosition, module, MegaGate::HPF_POLES_1_LIGHT));
+ addChild(createLight<SmallLight<GreenLight>>(hpfPoles2LightPosition, module, MegaGate::HPF_POLES_2_LIGHT));
+ addChild(createLight<SmallLight<GreenLight>>(hpfPoles3LightPosition, module, MegaGate::HPF_POLES_3_LIGHT));
+ addChild(createLight<SmallLight<GreenLight>>(hpfPoles4LightPosition, module, MegaGate::HPF_POLES_4_LIGHT));
+ }
+};
+
+Model* modelMegaGate = createModel<MegaGate, MegaGateWidget>("Bogaudio-MegaGate", "MEGAGATE", "Low- and high-pass gate", "Low-pass gate", "Dual", "Polyphonic");
diff --git a/src/MegaGate.hpp b/src/MegaGate.hpp
@@ -0,0 +1,142 @@
+#pragma once
+
+#include "lpg_common.hpp"
+#include "dsp/filters/multimode.hpp"
+
+extern Model* modelMegaGate;
+
+namespace bogaudio {
+
+struct MegaGate : LPGEnvBaseModule {
+ enum ParamsIds {
+ RISE_PARAM,
+ RISE_SHAPE_PARAM,
+ FALL_PARAM,
+ FALL_SHAPE_PARAM,
+ MINIMUM_GATE_PARAM,
+ TILT_PARAM,
+ GATE_TO_TRIGGER_PARAM,
+ TIMES_10X_PARAM,
+ FILTERS_SERIAL_PARAM,
+ LINEAR_VCA_PARAM,
+ LPF_ENV_PARAM,
+ LPF_ENV_ATTENUATOR_PARAM,
+ LPF_BIAS_PARAM,
+ LPF_BIAS_ATTENUATOR_PARAM,
+ LPF_POLES_PARAM,
+ HPF_ENV_PARAM,
+ HPF_ENV_ATTENUATOR_PARAM,
+ HPF_BIAS_PARAM,
+ HPF_BIAS_ATTENUATOR_PARAM,
+ HPF_POLES_PARAM,
+ VCA_ENV_PARAM,
+ VCA_ENV_ATTENUATOR_PARAM,
+ VCA_BIAS_PARAM,
+ VCA_BIAS_ATTENUATOR_PARAM,
+ NUM_PARAMS
+ };
+
+ enum InputsIds {
+ RISE_INPUT,
+ FALL_INPUT,
+ MINIMUM_GATE_INPUT,
+ TILT_INPUT,
+ GATE_INPUT,
+ VELOCITY_INPUT,
+ LEFT_INPUT,
+ RIGHT_INPUT,
+ LPF_ENV_INPUT,
+ LPF_BIAS_INPUT,
+ HPF_ENV_INPUT,
+ HPF_BIAS_INPUT,
+ VCA_ENV_INPUT,
+ VCA_BIAS_INPUT,
+ NUM_INPUTS
+ };
+
+ enum OutputsIds {
+ ENV_OUTPUT,
+ LEFT_OUTPUT,
+ RIGHT_OUTPUT,
+ NUM_OUTPUTS
+ };
+
+ enum LightsIds {
+ LPF_POLES_1_LIGHT,
+ LPF_POLES_2_LIGHT,
+ LPF_POLES_3_LIGHT,
+ LPF_POLES_4_LIGHT,
+ HPF_POLES_1_LIGHT,
+ HPF_POLES_2_LIGHT,
+ HPF_POLES_3_LIGHT,
+ HPF_POLES_4_LIGHT,
+ NUM_LIGHTS
+ };
+
+ static constexpr float maxFilterCutoff = 20000.0f;
+
+ struct Engine {
+ Trigger trigger;
+ rack::dsp::PulseGenerator gatePulseGen;
+ float gateSeconds = 0.0f;
+ float gateElapsedSeconds = 0.0f;
+ RiseFallShapedSlewLimiter slew;
+ Amplifier velocityAmp;
+ bogaudio::dsp::SlewLimiter velocitySL;
+ bogaudio::dsp::SlewLimiter tiltSL;
+ MultimodeFilter4 leftLpf, rightLpf;
+ MultimodeFilter4 leftHpf, rightHpf;
+ MultimodeFilter4 leftFinalHP, rightFinalHP;
+ Amplifier leftVca, rightVca;
+ bogaudio::dsp::SlewLimiter leftVcaSL, rightVcaSL;
+
+ void reset();
+ void setSampleRate(float sr);
+ };
+
+ Engine* _engines[maxChannels] {};
+ float _sampleRate = 0.0f;
+ float _sampleTime = 0.0f;
+
+ MegaGate()
+ : LPGEnvBaseModule(GATE_TO_TRIGGER_PARAM, TIMES_10X_PARAM)
+ {
+ config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
+ configParam<TimeParamQuantity<300>>(RISE_PARAM, 0.0f, 1.0f, 0.57735f, "Rise time", " ms");
+ configParam(RISE_SHAPE_PARAM, -1.0f, 1.0f, 0.0f, "Rise shape");
+ configParam<TimeParamQuantity<1>>(FALL_PARAM, 0.0f, 1.0f, 0.5477226f, "Fall time", " s");
+ configParam(FALL_SHAPE_PARAM, -1.0f, 1.0f, 0.0f, "Fall shape");
+ configParam<TimeParamQuantity<1>>(MINIMUM_GATE_PARAM, 0.0f, 1.0f, 0.3162278f, "Minimum gate", " s");
+ configParam(TILT_PARAM, -1.0f, 1.0f, 0.0f, "Tilt", "%", 0.0f, 100.0f);
+ configParam(GATE_TO_TRIGGER_PARAM, 0.0f, 1.0f, 0.0f, "Gate to trigger mode");
+ configParam(TIMES_10X_PARAM, 0.0f, 1.0f, 0.0f, "Timings 10X mode");
+ configParam(FILTERS_SERIAL_PARAM, 0.0f, 1.0f, 0.0f, "Filters in series mode");
+ configParam(LINEAR_VCA_PARAM, 0.0f, 1.0f, 0.0f, "Linear VCA mode");
+ configParam(LPF_ENV_PARAM, -1.0f, 1.0f, 0.8f, "LPF envelope amount", "%", 0.0f, 100.0f);
+ configParam(LPF_ENV_ATTENUATOR_PARAM, -1.0f, 1.0f, 0.0f, "LPF envelope amount CV", "%", 0.0f, 100.0f);
+ configParam<ScaledSquaringParamQuantity<(int)maxFilterCutoff>>(LPF_BIAS_PARAM, 0.0f, 1.0f, 0.0f, "LPF cutoff", " HZ");
+ configParam(LPF_BIAS_ATTENUATOR_PARAM, -1.0f, 1.0f, 0.0f, "LPF cutoff CV", "%", 0.0f, 100.0f);
+ configParam(LPF_POLES_PARAM, 0.0f, 3.0f, 1.0f, "LPF poles");
+ configParam(HPF_ENV_PARAM, -1.0f, 1.0f, 0.0f, "HPF envelope amount", "%", 0.0f, 100.0f);
+ configParam(HPF_ENV_ATTENUATOR_PARAM, -1.0f, 1.0f, 0.0f, "HPF envelope amount CV", "%", 0.0f, 100.0f);
+ configParam<ScaledSquaringParamQuantity<(int)maxFilterCutoff>>(HPF_BIAS_PARAM, 0.0f, 1.0f, 1.0f, "HPF cutoff", " HZ");
+ configParam(HPF_BIAS_ATTENUATOR_PARAM, -1.0f, 1.0f, 0.0f, "HPF cutoff CV", "%", 0.0f, 100.0f);
+ configParam(HPF_POLES_PARAM, 0.0f, 3.0f, 1.0f, "HPF poles");
+ configParam(VCA_ENV_PARAM, -1.0f, 1.0f, 1.0f, "VCA envelope amount", "%", 0.0f, 100.0f);
+ configParam(VCA_ENV_ATTENUATOR_PARAM, -1.0f, 1.0f, 0.0f, "VCA envelope amount CV", "%", 0.0f, 100.0f);
+ configParam(VCA_BIAS_PARAM, 0.0f, 1.0f, 0.0f, "VCA level", "%", 0.0f, 100.0f);
+ configParam(VCA_BIAS_ATTENUATOR_PARAM, -1.0f, 1.0f, 0.0f, "VCA level CV", "%", 0.0f, 100.0f);
+ }
+
+ void reset() override;
+ void sampleRateChange() override;
+ bool active() override;
+ int channels() override;
+ void addChannel(int c) override;
+ void removeChannel(int c) override;
+ void modulateChannel(int c) override;
+ void processChannel(const ProcessArgs& args, int c) override;
+ void processAlways(const ProcessArgs& args) override;
+};
+
+} // namespace bogaudio
diff --git a/src/Vish.cpp b/src/Vish.cpp
@@ -1,8 +1,6 @@
#include "Vish.hpp"
-#define VELOCITY_MINIMUM_DECIBELS "velocity_minimum_decibels"
-
void Vish::Engine::reset() {
trigger.reset();
gatePulseGen.process(10.0);
@@ -26,18 +24,6 @@ void Vish::sampleRateChange() {
}
}
-json_t* Vish::toJson(json_t* root) {
- json_object_set_new(root, VELOCITY_MINIMUM_DECIBELS, json_real(_minVelocityDb));
- return root;
-}
-
-void Vish::fromJson(json_t* root) {
- json_t* mdb = json_object_get(root, VELOCITY_MINIMUM_DECIBELS);
- if (mdb) {
- _minVelocityDb = json_real_value(mdb);
- }
-}
-
bool Vish::active() {
return outputs[OUT_OUTPUT].isConnected();
}
@@ -57,11 +43,6 @@ void Vish::removeChannel(int c) {
_engines[c] = NULL;
}
-void Vish::modulate() {
- _gateToTrigger = params[GATE_TO_TRIGGER_PARAM].getValue() > 0.5f;
- _timeScale = params[TIMES_10X_PARAM].getValue() > 0.5f ? 10.0f : 1.0f;
-}
-
void Vish::modulateChannel(int c) {
_engines[c]->slew.modulate(
_sampleRate,
@@ -121,7 +102,7 @@ void Vish::processChannel(const ProcessArgs& args, int c) {
outputs[OUT_OUTPUT].setVoltage(e.velocityAmp.next(e.slew.next(gate)), c);
}
-struct VishWidget : BGModuleWidget {
+struct VishWidget : LPGEnvBaseWidget {
static constexpr int hp = 5;
VishWidget(Vish* module) {
@@ -164,18 +145,6 @@ struct VishWidget : BGModuleWidget {
addOutput(createOutput<Port24>(outOutputPosition, module, Vish::OUT_OUTPUT));
}
-
- void contextMenu(Menu* menu) override {
- auto m = dynamic_cast<Vish*>(module);
- assert(m);
- OptionsMenuItem* mi = new OptionsMenuItem("Minimum velocity output gain");
- mi->addItem(OptionMenuItem("-3db", [m]() { return m->_minVelocityDb == -3.0f; }, [m]() { m->_minVelocityDb = -3.0f; }));
- mi->addItem(OptionMenuItem("-6db", [m]() { return m->_minVelocityDb == -6.0f; }, [m]() { m->_minVelocityDb = -6.0f; }));
- mi->addItem(OptionMenuItem("-12db", [m]() { return m->_minVelocityDb == -12.0f; }, [m]() { m->_minVelocityDb = -12.0f; }));
- mi->addItem(OptionMenuItem("-24db", [m]() { return m->_minVelocityDb == -24.0f; }, [m]() { m->_minVelocityDb = -24.0f; }));
- mi->addItem(OptionMenuItem("-60db", [m]() { return m->_minVelocityDb == -60.0f; }, [m]() { m->_minVelocityDb = -60.0f; }));
- OptionsMenuItem::addToMenu(mi, menu);
- }
};
Model* modelVish = createModel<Vish, VishWidget>("Bogaudio-Vish", "VISH", "Vactrol-ish envelope generator", "Envelope generator", "Polyphonic");
diff --git a/src/Vish.hpp b/src/Vish.hpp
@@ -1,13 +1,12 @@
#pragma once
-#include "slew_common.hpp"
-#include "dsp/signal.hpp"
+#include "lpg_common.hpp"
extern Model* modelVish;
namespace bogaudio {
-struct Vish : BGModule {
+struct Vish : LPGEnvBaseModule {
enum ParamsIds {
RISE_PARAM,
RISE_SHAPE_PARAM,
@@ -33,23 +32,6 @@ struct Vish : BGModule {
NUM_OUTPUTS
};
- template <int SCALE>
- struct TimeParamQuantity : ScaledSquaringParamQuantity<SCALE> {
- typedef ScaledSquaringParamQuantity<SCALE> Base;
-
- float getDisplayValue() override {
- auto m = dynamic_cast<Vish*>(Base::module);
- assert(m);
- return m->_timeScale * Base::getDisplayValue();
- }
-
- void setDisplayValue(float displayValue) override {
- auto m = dynamic_cast<Vish*>(Base::module);
- assert(m);
- return Base::setDisplayValue(displayValue / m->_timeScale);
- }
- };
-
struct Engine {
Trigger trigger;
rack::dsp::PulseGenerator gatePulseGen;
@@ -66,12 +48,10 @@ struct Vish : BGModule {
Engine* _engines[maxChannels] {};
float _sampleRate = 0.0f;
float _sampleTime = 0.0f;
- bool _gateToTrigger = false;
- float _timeScale = 1.0f;
- const float _maxVelocityDb = 0.0f;
- float _minVelocityDb = -6.0f;
- Vish() {
+ Vish()
+ : LPGEnvBaseModule(GATE_TO_TRIGGER_PARAM, TIMES_10X_PARAM)
+ {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS);
configParam<TimeParamQuantity<300>>(RISE_PARAM, 0.0f, 1.0f, 0.57735f, "Rise time", " ms");
configParam(RISE_SHAPE_PARAM, -1.0f, 1.0f, 0.0f, "Rise shape");
@@ -84,13 +64,10 @@ struct Vish : BGModule {
void reset() override;
void sampleRateChange() override;
- json_t* toJson(json_t* root) override;
- void fromJson(json_t* root) override;
bool active() override;
int channels() override;
void addChannel(int c) override;
void removeChannel(int c) override;
- void modulate() override;
void modulateChannel(int c) override;
void processChannel(const ProcessArgs& args, int c) override;
};
diff --git a/src/bogaudio.cpp b/src/bogaudio.cpp
@@ -44,6 +44,7 @@
#include "Matrix44.hpp"
#include "Matrix81.hpp"
#include "Matrix88.hpp"
+#include "MegaGate.hpp"
#include "Mix1.hpp"
#include "Mix2.hpp"
#include "Mix4.hpp"
@@ -134,6 +135,7 @@ void init(rack::Plugin *p) {
p->addModel(modelFFB);
p->addModel(modelEQ);
p->addModel(modelEQS);
+ p->addModel(modelMegaGate);
p->addModel(modelPEQ);
p->addModel(modelPEQ6);
p->addModel(modelPEQ6XF);
diff --git a/src/lpg_common.cpp b/src/lpg_common.cpp
@@ -0,0 +1,34 @@
+
+#include "lpg_common.hpp"
+
+#define VELOCITY_MINIMUM_DECIBELS "velocity_minimum_decibels"
+
+json_t* LPGEnvBaseModule::toJson(json_t* root) {
+ json_object_set_new(root, VELOCITY_MINIMUM_DECIBELS, json_real(_minVelocityDb));
+ return root;
+}
+
+void LPGEnvBaseModule::fromJson(json_t* root) {
+ json_t* mdb = json_object_get(root, VELOCITY_MINIMUM_DECIBELS);
+ if (mdb) {
+ _minVelocityDb = json_real_value(mdb);
+ }
+}
+
+void LPGEnvBaseModule::modulate() {
+ _gateToTrigger = params[_gateToTriggerParamID].getValue() > 0.5f;
+ _timeScale = params[_timeScaleParamID].getValue() > 0.5f ? 10.0f : 1.0f;
+}
+
+
+void LPGEnvBaseWidget::contextMenu(Menu* menu) {
+ auto m = dynamic_cast<LPGEnvBaseModule*>(module);
+ assert(m);
+ OptionsMenuItem* mi = new OptionsMenuItem("Minimum velocity output gain");
+ mi->addItem(OptionMenuItem("-3db", [m]() { return m->_minVelocityDb == -3.0f; }, [m]() { m->_minVelocityDb = -3.0f; }));
+ mi->addItem(OptionMenuItem("-6db", [m]() { return m->_minVelocityDb == -6.0f; }, [m]() { m->_minVelocityDb = -6.0f; }));
+ mi->addItem(OptionMenuItem("-12db", [m]() { return m->_minVelocityDb == -12.0f; }, [m]() { m->_minVelocityDb = -12.0f; }));
+ mi->addItem(OptionMenuItem("-24db", [m]() { return m->_minVelocityDb == -24.0f; }, [m]() { m->_minVelocityDb = -24.0f; }));
+ mi->addItem(OptionMenuItem("-60db", [m]() { return m->_minVelocityDb == -60.0f; }, [m]() { m->_minVelocityDb = -60.0f; }));
+ OptionsMenuItem::addToMenu(mi, menu);
+}
diff --git a/src/lpg_common.hpp b/src/lpg_common.hpp
@@ -0,0 +1,42 @@
+#pragma once
+
+#include "slew_common.hpp"
+
+struct LPGEnvBaseModule : BGModule {
+ int _gateToTriggerParamID;
+ int _timeScaleParamID;
+ bool _gateToTrigger = false;
+ float _timeScale = 1.0f;
+ const float _maxVelocityDb = 0.0f;
+ float _minVelocityDb = -6.0f;
+
+ LPGEnvBaseModule(int gateToTriggerParamID, int timeScaleParamID)
+ : _gateToTriggerParamID(gateToTriggerParamID)
+ , _timeScaleParamID(timeScaleParamID)
+ {}
+
+ json_t* toJson(json_t* root) override;
+ void fromJson(json_t* root) override;
+ void modulate() override;
+};
+
+struct LPGEnvBaseWidget : BGModuleWidget {
+ void contextMenu(Menu* menu) override;
+};
+
+template <int SCALE>
+struct TimeParamQuantity : ScaledSquaringParamQuantity<SCALE> {
+ typedef ScaledSquaringParamQuantity<SCALE> Base;
+
+ float getDisplayValue() override {
+ auto m = dynamic_cast<LPGEnvBaseModule*>(Base::module);
+ assert(m);
+ return m->_timeScale * Base::getDisplayValue();
+ }
+
+ void setDisplayValue(float displayValue) override {
+ auto m = dynamic_cast<LPGEnvBaseModule*>(Base::module);
+ assert(m);
+ return Base::setDisplayValue(displayValue / m->_timeScale);
+ }
+};