BogaudioModules

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

commit 60efafdb6433f7530ebd80382e91fdbadc07b5b9
parent 034a972de8205f52d7c2252209a2baf5226330ac
Author: Matt Demanett <matt@demanett.net>
Date:   Mon, 17 Aug 2020 13:43:00 -0400

MATRIX81: knobs complement to SWITCH81, gotta keep things balanced. #135

Diffstat:
Mplugin.json | 16+++++++++++++---
Ares-pp/Matrix81-dark-pp.svg | 377+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-pp/Matrix81-lowcontrast-pp.svg | 377+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-pp/Matrix81-pp.svg | 313+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-src/Matrix81-src.svg | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares/Matrix81-dark.svg | 0
Ares/Matrix81-lowcontrast.svg | 0
Ares/Matrix81.svg | 0
Msrc/Matrix44.hpp | 2+-
Asrc/Matrix81.cpp | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/Matrix81.hpp | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/Matrix88.hpp | 2+-
Msrc/bogaudio.cpp | 4+++-
Msrc/matrix_base.hpp | 4++--
14 files changed, 1272 insertions(+), 8 deletions(-)

diff --git a/plugin.json b/plugin.json @@ -513,10 +513,10 @@ ] }, { - "slug": "Bogaudio-Switch81", - "name": "SWITCH81", + "slug": "Bogaudio-Matrix81", + "name": "MATRIX81", "description": "8-channel mixer", - "manualUrl": "https://github.com/bogaudio/BogaudioModules/blob/master/README.md#switch81", + "manualUrl": "https://github.com/bogaudio/BogaudioModules/blob/master/README.md#matrix81", "tags": [ "Mixer", "Polyphonic" @@ -543,6 +543,16 @@ ] }, { + "slug": "Bogaudio-Switch81", + "name": "SWITCH81", + "description": "8-channel mixer", + "manualUrl": "https://github.com/bogaudio/BogaudioModules/blob/master/README.md#switch81", + "tags": [ + "Mixer", + "Polyphonic" + ] + }, + { "slug": "Bogaudio-Switch44", "name": "SWITCH44", "description": "4x4 matrix mixer", diff --git a/res-pp/Matrix81-dark-pp.svg b/res-pp/Matrix81-dark-pp.svg @@ -0,0 +1,377 @@ +<?xml version="1.0"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="90.0" height="380.0" viewBox="0 0 90.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; +} +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> + + + + <rect class="module-background background-fill" width="90.0" height="380.0"/> + + + <polyline class="module-border-inner" points="1,1 89.0,1 89.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/> + <polyline class="module-border-middle" points="0.5,0.5 89.5,0.5 89.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 90.0,0 90.0,380.0 0,380.0 0,0" stroke-width="1" fill="none"/> + + <text class="title" font-size="9pt" letter-spacing="0.7px" text-anchor="end" transform="translate(85.0 17)">MATRIX81</text> + <g transform="translate(5.5 374)"> + <text class="brand" font-size="6.5pt" letter-spacing="2px">BOGAUDIO</text> + <rect class="background-fill" width="1.5" height="2" fill="#ddd" transform="translate(21 -4)"/> + </g> + + + <g transform="translate(2 25)"> + <g class="io-group" transform="translate(5.5 0)"> + <rect class="input-background-filler" width="34" height="10" transform="translate(0 283)"/> + <rect class="input-background" width="34" height="293" rx="5"/> + <g transform="translate(5 5)"><svg id="IN1_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 transform="translate(5 42)"><svg id="IN2_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 transform="translate(5 79)"><svg id="IN3_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 transform="translate(5 116)"><svg id="IN4_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 transform="translate(5 153)"><svg id="IN5_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 transform="translate(5 190)"><svg id="IN6_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 transform="translate(5 227)"><svg id="IN7_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 transform="translate(5 264)"><svg id="IN8_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 class="io-group" transform="translate(5.5 295)"> + <rect class="output-background-filler" width="34" height="10" transform="translate(0 -3)"/> + <rect class="output-background" width="34" height="38" rx="5"/> + <g transform="translate(5 1)"><svg id="OUT_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" transform="translate(8.5 33)">OUT</text> + </g> + </g> + + <g transform="translate(52 0)"> + <g transform="translate(0 24)"> + <g transform="translate(3.5 8)"><svg id="MIX1_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 61)"> + <g transform="translate(3.5 8)"><svg id="MIX2_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 98)"> + <g transform="translate(3.5 8)"><svg id="MIX3_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 135)"> + <g transform="translate(3.5 8)"><svg id="MIX4_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 172)"> + <g transform="translate(3.5 8)"><svg id="MIX5_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 209)"> + <g transform="translate(3.5 8)"><svg id="MIX6_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 246)"> + <g transform="translate(3.5 8)"><svg id="MIX7_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 283)"> + <g transform="translate(3.5 8)"><svg id="MIX8_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#ccc" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + </g> + + + + + + + + + + + +</svg> diff --git a/res-pp/Matrix81-lowcontrast-pp.svg b/res-pp/Matrix81-lowcontrast-pp.svg @@ -0,0 +1,377 @@ +<?xml version="1.0"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="90.0" height="380.0" viewBox="0 0 90.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; +} +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> + + + + <rect class="module-background background-fill" width="90.0" height="380.0"/> + + + <polyline class="module-border-inner" points="1,1 89.0,1 89.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/> + <polyline class="module-border-middle" points="0.5,0.5 89.5,0.5 89.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 90.0,0 90.0,380.0 0,380.0 0,0" stroke-width="1" fill="none"/> + + <text class="title" font-size="9pt" letter-spacing="0.7px" text-anchor="end" transform="translate(85.0 17)">MATRIX81</text> + <g transform="translate(5.5 374)"> + <text class="brand" font-size="6.5pt" letter-spacing="2px">BOGAUDIO</text> + <rect class="background-fill" width="1.5" height="2" fill="#ddd" transform="translate(21 -4)"/> + </g> + + + <g transform="translate(2 25)"> + <g class="io-group" transform="translate(5.5 0)"> + <rect class="input-background-filler" width="34" height="10" transform="translate(0 283)"/> + <rect class="input-background" width="34" height="293" rx="5"/> + <g transform="translate(5 5)"><svg id="IN1_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 transform="translate(5 42)"><svg id="IN2_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 transform="translate(5 79)"><svg id="IN3_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 transform="translate(5 116)"><svg id="IN4_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 transform="translate(5 153)"><svg id="IN5_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 transform="translate(5 190)"><svg id="IN6_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 transform="translate(5 227)"><svg id="IN7_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 transform="translate(5 264)"><svg id="IN8_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 class="io-group" transform="translate(5.5 295)"> + <rect class="output-background-filler" width="34" height="10" transform="translate(0 -3)"/> + <rect class="output-background" width="34" height="38" rx="5"/> + <g transform="translate(5 1)"><svg id="OUT_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" transform="translate(8.5 33)">OUT</text> + </g> + </g> + + <g transform="translate(52 0)"> + <g transform="translate(0 24)"> + <g transform="translate(3.5 8)"><svg id="MIX1_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 61)"> + <g transform="translate(3.5 8)"><svg id="MIX2_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 98)"> + <g transform="translate(3.5 8)"><svg id="MIX3_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 135)"> + <g transform="translate(3.5 8)"><svg id="MIX4_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 172)"> + <g transform="translate(3.5 8)"><svg id="MIX5_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 209)"> + <g transform="translate(3.5 8)"><svg id="MIX6_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 246)"> + <g transform="translate(3.5 8)"><svg id="MIX7_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 283)"> + <g transform="translate(3.5 8)"><svg id="MIX8_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#b3b3b3" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + </g> + + + + + + + + + + + +</svg> diff --git a/res-pp/Matrix81-pp.svg b/res-pp/Matrix81-pp.svg @@ -0,0 +1,313 @@ +<?xml version="1.0"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="90.0" height="380.0" viewBox="0 0 90.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; +} +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> + + + + <rect class="module-background background-fill" width="90.0" height="380.0"/> + + + <polyline class="module-border-inner" points="1,1 89.0,1 89.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/> + <polyline class="module-border-middle" points="0.5,0.5 89.5,0.5 89.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 90.0,0 90.0,380.0 0,380.0 0,0" stroke-width="1" fill="none"/> + + <text class="title" font-size="9pt" letter-spacing="0.7px" text-anchor="end" transform="translate(85.0 17)">MATRIX81</text> + <g transform="translate(5.5 374)"> + <text class="brand" font-size="6.5pt" letter-spacing="2px">BOGAUDIO</text> + <rect class="background-fill" width="1.5" height="2" fill="#ddd" transform="translate(21 -4)"/> + </g> + + + <g transform="translate(2 25)"> + <g class="io-group" transform="translate(5.5 0)"> + <rect class="input-background-filler" width="34" height="10" transform="translate(0 283)"/> + <rect class="input-background" width="34" height="293" rx="5"/> + <g transform="translate(5 5)"><svg id="IN1_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 transform="translate(5 42)"><svg id="IN2_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 transform="translate(5 79)"><svg id="IN3_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 transform="translate(5 116)"><svg id="IN4_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 transform="translate(5 153)"><svg id="IN5_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 transform="translate(5 190)"><svg id="IN6_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 transform="translate(5 227)"><svg id="IN7_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 transform="translate(5 264)"><svg id="IN8_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 class="io-group" transform="translate(5.5 295)"> + <rect class="output-background-filler" width="34" height="10" transform="translate(0 -3)"/> + <rect class="output-background" width="34" height="38" rx="5"/> + <g transform="translate(5 1)"><svg id="OUT_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" transform="translate(8.5 33)">OUT</text> + </g> + </g> + + <g transform="translate(52 0)"> + <g transform="translate(0 24)"> + <g transform="translate(3.5 8)"><svg id="MIX1_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 61)"> + <g transform="translate(3.5 8)"><svg id="MIX2_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 98)"> + <g transform="translate(3.5 8)"><svg id="MIX3_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 135)"> + <g transform="translate(3.5 8)"><svg id="MIX4_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 172)"> + <g transform="translate(3.5 8)"><svg id="MIX5_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 209)"> + <g transform="translate(3.5 8)"><svg id="MIX6_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 246)"> + <g transform="translate(3.5 8)"><svg id="MIX7_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + <g transform="translate(0 283)"> + <g transform="translate(3.5 8)"><svg id="MIX8_PARAM"> + <g transform="translate(10 10)"> + <polyline points="-3,0 3,0" stroke-width="1" stroke="#00f"/> + <polyline points="0,-3 0,3" stroke-width="1" stroke="#00f"/> + <circle cx="0" cy="0" r="9.3" stroke-width="1" stroke="#00f" fill="none"/> + </g> + </svg></g> + <g transform="translate(-6.5 -2)"> + <g transform="translate(20 20)"> + <polyline points="0,0 4,0" stroke-width="1" transform="rotate(-90) translate(11.5 0)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 1 13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(43)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-20)"/> + <path d="M 0 -13.5 A 13.5 13.5 0 0 0 -13.5 0" stroke-width="0.7" stroke-linecap="round" stroke="#333" fill="none" transform="rotate(-43)"/> + </g> + </g> + </g> + </g> + + + + + + + + + + + +</svg> diff --git a/res-src/Matrix81-src.svg b/res-src/Matrix81-src.svg @@ -0,0 +1,73 @@ +<?xml version="1.0"?> +<module hp="6"> + <style/> + + <def xlink:href="#module6" var-name="MATRIX81" var-letterspacing="0.7"/> + + <g transform="translate(2 25)"> + <g class="io-group" transform="translate(5.5 0)"> + <rect class="input-background-filler" width="34" height="10" transform="translate(0 283)"/> + <rect class="input-background" width="34" height="293" rx="5"/> + <def id="IN1_INPUT" xlink:href="#input" transform="translate(5 5)"/> + <def id="IN2_INPUT" xlink:href="#input" transform="translate(5 42)"/> + <def id="IN3_INPUT" xlink:href="#input" transform="translate(5 79)"/> + <def id="IN4_INPUT" xlink:href="#input" transform="translate(5 116)"/> + <def id="IN5_INPUT" xlink:href="#input" transform="translate(5 153)"/> + <def id="IN6_INPUT" xlink:href="#input" transform="translate(5 190)"/> + <def id="IN7_INPUT" xlink:href="#input" transform="translate(5 227)"/> + <def id="IN8_INPUT" xlink:href="#input" transform="translate(5 264)"/> + </g> + <g class="io-group" transform="translate(5.5 295)"> + <rect class="output-background-filler" width="34" height="10" transform="translate(0 -3)"/> + <rect class="output-background" width="34" height="38" rx="5"/> + <def id="OUT_OUTPUT" xlink:href="#output" transform="translate(5 1)"/> + <text class="output-label" font-size="5pt" letter-spacing="2px" transform="translate(8.5 33)">OUT</text> + </g> + </g> + + <g transform="translate(52 0)"> + <g transform="translate(0 24)"> + <def id="MIX1_PARAM" xlink:href="#knob19" transform="translate(3.5 8)"/> + <def xlink:href="#dial-centertick-19" transform="translate(-6.5 -2)"/> + </g> + <g transform="translate(0 61)"> + <def id="MIX2_PARAM" xlink:href="#knob19" transform="translate(3.5 8)"/> + <def xlink:href="#dial-centertick-19" transform="translate(-6.5 -2)"/> + </g> + <g transform="translate(0 98)"> + <def id="MIX3_PARAM" xlink:href="#knob19" transform="translate(3.5 8)"/> + <def xlink:href="#dial-centertick-19" transform="translate(-6.5 -2)"/> + </g> + <g transform="translate(0 135)"> + <def id="MIX4_PARAM" xlink:href="#knob19" transform="translate(3.5 8)"/> + <def xlink:href="#dial-centertick-19" transform="translate(-6.5 -2)"/> + </g> + <g transform="translate(0 172)"> + <def id="MIX5_PARAM" xlink:href="#knob19" transform="translate(3.5 8)"/> + <def xlink:href="#dial-centertick-19" transform="translate(-6.5 -2)"/> + </g> + <g transform="translate(0 209)"> + <def id="MIX6_PARAM" xlink:href="#knob19" transform="translate(3.5 8)"/> + <def xlink:href="#dial-centertick-19" transform="translate(-6.5 -2)"/> + </g> + <g transform="translate(0 246)"> + <def id="MIX7_PARAM" xlink:href="#knob19" transform="translate(3.5 8)"/> + <def xlink:href="#dial-centertick-19" transform="translate(-6.5 -2)"/> + </g> + <g transform="translate(0 283)"> + <def id="MIX8_PARAM" xlink:href="#knob19" transform="translate(3.5 8)"/> + <def xlink:href="#dial-centertick-19" transform="translate(-6.5 -2)"/> + </g> + </g> + + <!-- <polyline points="0,0 0,380" stroke-width="0.7" stroke="#0f0" transform="translate(24.5 0)" /> --> + <!-- <polyline points="0,0 0,380" stroke-width="0.7" stroke="#0f0" transform="translate(65.5 0)" /> --> + <!-- <polyline points="0,0 90,0" stroke-width="0.7" stroke="#0f0" transform="translate(0 42)" /> --> + <!-- <polyline points="0,0 90,0" stroke-width="0.7" stroke="#0f0" transform="translate(0 79)" /> --> + <!-- <polyline points="0,0 90,0" stroke-width="0.7" stroke="#0f0" transform="translate(0 116)" /> --> + <!-- <polyline points="0,0 90,0" stroke-width="0.7" stroke="#0f0" transform="translate(0 153)" /> --> + <!-- <polyline points="0,0 90,0" stroke-width="0.7" stroke="#0f0" transform="translate(0 190)" /> --> + <!-- <polyline points="0,0 90,0" stroke-width="0.7" stroke="#0f0" transform="translate(0 227)" /> --> + <!-- <polyline points="0,0 90,0" stroke-width="0.7" stroke="#0f0" transform="translate(0 264)" /> --> + <!-- <polyline points="0,0 90,0" stroke-width="0.7" stroke="#0f0" transform="translate(0 301)" /> --> +</module> diff --git a/res/Matrix81-dark.svg b/res/Matrix81-dark.svg Binary files differ. diff --git a/res/Matrix81-lowcontrast.svg b/res/Matrix81-lowcontrast.svg Binary files differ. diff --git a/res/Matrix81.svg b/res/Matrix81.svg Binary files differ. diff --git a/src/Matrix44.hpp b/src/Matrix44.hpp @@ -44,7 +44,7 @@ struct Matrix44 : KnobMatrixModule { NUM_OUTPUTS }; - Matrix44() : KnobMatrixModule(4, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT) { + Matrix44() : KnobMatrixModule(4, 4, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT) { config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); configParam(MIX11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1A", "%", 0.0f, 100.0f); configParam(MIX21_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2A", "%", 0.0f, 100.0f); diff --git a/src/Matrix81.cpp b/src/Matrix81.cpp @@ -0,0 +1,59 @@ + +#include "Matrix81.hpp" + +struct Matrix81Widget : KnobMatrixModuleWidget { + static constexpr int hp = 6; + + Matrix81Widget(Matrix81* module) { + setModule(module); + box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT); + setPanel(box.size, "Matrix81"); + + addChild(createWidget<ScrewSilver>(Vec(0, 0))); + addChild(createWidget<ScrewSilver>(Vec(box.size.x - 15, 365))); + + // generated by svg_widgets.rb + auto mix1ParamPosition = Vec(55.7, 32.2); + auto mix2ParamPosition = Vec(55.7, 69.2); + auto mix3ParamPosition = Vec(55.7, 106.2); + auto mix4ParamPosition = Vec(55.7, 143.2); + auto mix5ParamPosition = Vec(55.7, 180.2); + auto mix6ParamPosition = Vec(55.7, 217.2); + auto mix7ParamPosition = Vec(55.7, 254.2); + auto mix8ParamPosition = Vec(55.7, 291.2); + + auto in1InputPosition = Vec(12.5, 30.0); + auto in2InputPosition = Vec(12.5, 67.0); + auto in3InputPosition = Vec(12.5, 104.0); + auto in4InputPosition = Vec(12.5, 141.0); + auto in5InputPosition = Vec(12.5, 178.0); + auto in6InputPosition = Vec(12.5, 215.0); + auto in7InputPosition = Vec(12.5, 252.0); + auto in8InputPosition = Vec(12.5, 289.0); + + auto outOutputPosition = Vec(12.5, 321.0); + // end generated by svg_widgets.rb + + createKnob(mix1ParamPosition, module, Matrix81::MIX1_PARAM); + createKnob(mix2ParamPosition, module, Matrix81::MIX2_PARAM); + createKnob(mix3ParamPosition, module, Matrix81::MIX3_PARAM); + createKnob(mix4ParamPosition, module, Matrix81::MIX4_PARAM); + createKnob(mix5ParamPosition, module, Matrix81::MIX5_PARAM); + createKnob(mix6ParamPosition, module, Matrix81::MIX6_PARAM); + createKnob(mix7ParamPosition, module, Matrix81::MIX7_PARAM); + createKnob(mix8ParamPosition, module, Matrix81::MIX8_PARAM); + + addInput(createInput<Port24>(in1InputPosition, module, Matrix81::IN1_INPUT)); + addInput(createInput<Port24>(in2InputPosition, module, Matrix81::IN2_INPUT)); + addInput(createInput<Port24>(in3InputPosition, module, Matrix81::IN3_INPUT)); + addInput(createInput<Port24>(in4InputPosition, module, Matrix81::IN4_INPUT)); + addInput(createInput<Port24>(in5InputPosition, module, Matrix81::IN5_INPUT)); + addInput(createInput<Port24>(in6InputPosition, module, Matrix81::IN6_INPUT)); + addInput(createInput<Port24>(in7InputPosition, module, Matrix81::IN7_INPUT)); + addInput(createInput<Port24>(in8InputPosition, module, Matrix81::IN8_INPUT)); + + addOutput(createOutput<Port24>(outOutputPosition, module, Matrix81::OUT_OUTPUT)); + } +}; + +Model* modelMatrix81 = createModel<Matrix81, Matrix81Widget>("Bogaudio-Matrix81", "MATRIX81", "8-channel mixer", "Mixer", "Polyphonic"); diff --git a/src/Matrix81.hpp b/src/Matrix81.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include "bogaudio.hpp" +#include "matrix_base.hpp" + +extern Model* modelMatrix81; + +namespace bogaudio { + +struct Matrix81 : KnobMatrixModule { + enum ParamsIds { + MIX1_PARAM, + MIX2_PARAM, + MIX3_PARAM, + MIX4_PARAM, + MIX5_PARAM, + MIX6_PARAM, + MIX7_PARAM, + MIX8_PARAM, + NUM_PARAMS + }; + + enum InputsIds { + IN1_INPUT, + IN2_INPUT, + IN3_INPUT, + IN4_INPUT, + IN5_INPUT, + IN6_INPUT, + IN7_INPUT, + IN8_INPUT, + NUM_INPUTS + }; + + enum OutputsIds { + OUT_OUTPUT, + NUM_OUTPUTS + }; + + Matrix81() : KnobMatrixModule(8, 1, MIX1_PARAM, IN1_INPUT, OUT_OUTPUT) { + config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); + configParam(MIX1_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1", "%", 0.0f, 100.0f); + configParam(MIX2_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2", "%", 0.0f, 100.0f); + configParam(MIX3_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3", "%", 0.0f, 100.0f); + configParam(MIX4_PARAM, -1.0f, 1.0f, 0.0f, "Mix 4", "%", 0.0f, 100.0f); + configParam(MIX5_PARAM, -1.0f, 1.0f, 0.0f, "Mix 5", "%", 0.0f, 100.0f); + configParam(MIX6_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6", "%", 0.0f, 100.0f); + configParam(MIX7_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7", "%", 0.0f, 100.0f); + configParam(MIX8_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8", "%", 0.0f, 100.0f); + } +}; + +} // namespace bogaudio diff --git a/src/Matrix88.hpp b/src/Matrix88.hpp @@ -100,7 +100,7 @@ struct Matrix88 : KnobMatrixModule { NUM_OUTPUTS }; - Matrix88() : KnobMatrixModule(8, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT) { + Matrix88() : KnobMatrixModule(8, 8, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT) { config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); configParam(MIX11_PARAM, -1.0f, 1.0f, 0.0f, "Mix 1A", "%", 0.0f, 100.0f); configParam(MIX21_PARAM, -1.0f, 1.0f, 0.0f, "Mix 2A", "%", 0.0f, 100.0f); diff --git a/src/bogaudio.cpp b/src/bogaudio.cpp @@ -41,6 +41,7 @@ #include "LVCO.hpp" #include "Manual.hpp" #include "Matrix44.hpp" +#include "Matrix81.hpp" #include "Matrix88.hpp" #include "Mix1.hpp" #include "Mix2.hpp" @@ -167,9 +168,10 @@ void init(rack::Plugin *p) { p->addModel(modelUMix); p->addModel(modelMumix); - p->addModel(modelSwitch81); + p->addModel(modelMatrix81); p->addModel(modelMatrix44); p->addModel(modelMatrix88); + p->addModel(modelSwitch81); p->addModel(modelSwitch44); p->addModel(modelSwitch88); p->addModel(modelSwitch1616); diff --git a/src/matrix_base.hpp b/src/matrix_base.hpp @@ -68,8 +68,8 @@ struct MatrixModule : MatrixBaseModule { struct KnobMatrixModule : MatrixModule { bool _indicatorKnobs = true; - KnobMatrixModule(int n, int firstParamID, int firstInputID, int firstOutputID) - : MatrixModule(n, n, firstParamID, firstInputID, firstOutputID) + KnobMatrixModule(int ins, int outs, int firstParamID, int firstInputID, int firstOutputID) + : MatrixModule(ins, outs, firstParamID, firstInputID, firstOutputID) {} json_t* toJson(json_t* root) override;