BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

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:
Mplugin.json | 11+++++++++++
Ares-pp/MegaGate-dark-pp.svg | 959+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-pp/MegaGate-lowcontrast-pp.svg | 959+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-pp/MegaGate-pp.svg | 895+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mres-pp/RGate-dark-pp.svg | 7+++++--
Mres-pp/RGate-lowcontrast-pp.svg | 7+++++--
Mres-pp/RGate-pp.svg | 7+++++--
Mres-pp/Vish-dark-pp.svg | 114+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Mres-pp/Vish-lowcontrast-pp.svg | 114+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Mres-pp/Vish-pp.svg | 114+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Ares-src/MegaGate-src.svg | 299+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mres-src/RGate-src.svg | 4++--
Mres-src/Vish-src.svg | 58+++-------------------------------------------------------
Mres-src/defs.svg | 220+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
Ares/MegaGate-dark.svg | 0
Ares/MegaGate-lowcontrast.svg | 0
Ares/MegaGate.svg | 0
Mres/RGate-dark.svg | 0
Mres/RGate-lowcontrast.svg | 0
Mres/RGate.svg | 0
Mres/Vish-dark.svg | 0
Mres/Vish-lowcontrast.svg | 0
Mres/Vish.svg | 0
Asrc/MegaGate.cpp | 412+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/MegaGate.hpp | 142+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/Vish.cpp | 33+--------------------------------
Msrc/Vish.hpp | 33+++++----------------------------
Msrc/bogaudio.cpp | 2++
Asrc/lpg_common.cpp | 34++++++++++++++++++++++++++++++++++
Asrc/lpg_common.hpp | 42++++++++++++++++++++++++++++++++++++++++++
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); + } +};