BogaudioModules

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

commit 47dcfa8baf66c54ba0b6302e13bfcfb9d669e160
parent 8ee3fd95d72548ecef9008b1819886d2ea9f8e7f
Author: Matt Demanett <matt@demanett.net>
Date:   Mon,  5 Oct 2020 23:19:10 -0400

MX88CV, MX88M: CV and mutes expanders for MATRIX88. #144

Diffstat:
MREADME-prerelease.md | 18+++++++++++++++---
Mplugin.json | 22++++++++++++++++++++++
Ares-pp/Matrix88Cv-dark-pp.svg | 554+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-pp/Matrix88Cv-lowcontrast-pp.svg | 554+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-pp/Matrix88Cv-pp.svg | 490+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-pp/Matrix88M-dark-pp.svg | 492+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-pp/Matrix88M-lowcontrast-pp.svg | 492+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-pp/Matrix88M-pp.svg | 428+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-src/Matrix88Cv-src.svg | 99+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares-src/Matrix88M-src.svg | 101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ares/Matrix88Cv-dark.svg | 0
Ares/Matrix88Cv-lowcontrast.svg | 0
Ares/Matrix88Cv.svg | 0
Ares/Matrix88M-dark.svg | 0
Ares/Matrix88M-lowcontrast.svg | 0
Ares/Matrix88M.svg | 0
Msrc/Matrix44.cpp | 5+++--
Msrc/Matrix88.cpp | 26++++++++++++++++++++++++++
Msrc/Matrix88.hpp | 19+++++++++++++------
Asrc/Matrix88Cv.cpp | 164+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/Matrix88Cv.hpp | 105+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/Matrix88M.cpp | 165+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/Matrix88M.hpp | 177+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/Matrix88_shared.hpp | 30++++++++++++++++++++++++++++++
Msrc/bogaudio.cpp | 4++++
25 files changed, 3934 insertions(+), 11 deletions(-)

diff --git a/README-prerelease.md b/README-prerelease.md @@ -628,7 +628,7 @@ _Polyphony:_ <a href="#polyphony">Polyphonic</a>, as on MATRIX44. #### <a name="matrix44"></a> MATRIX44 -A 4x4 channel matrix mixer. Each input can be routed with an independent level to each of the eight output mixes. MATRIX44 is expandable with <a href="matrix44cvm">MATRIX44CVM</a>. +A 4x4 channel matrix mixer. Each input can be routed with an independent level to each of the eight output mixes. MATRIX44 is expandable with <a href="matrix44cvm">MX44CVM</a>. *Note that the matrix knobs are attenuverters, and default to zero.* That means there will be no output, regardless of the inputs, until some knobs are changed to non-zero values. @@ -644,16 +644,28 @@ _Polyphony:_ <a href="#polyphony">Polyphonic</a>, with polyphonic channels defin #### <a name="matrix44cvm"></a> MX44CVM -An expander for MATRIX44, adding CVs and mutes for each point in the mix matrix. The CVs are bipolar (+/-5v), and each is attenuverted by its corresponding knob when in use. The mute buttons will mute the corresponding mix point, overriding the knob and CV. As <a href="mix8">MIX8</a> and others, the mute buttons can be right-clicked to solo that mix point -- all others will be muted. A subsequent click on a soloed button restores the previous state, and other muted buttons retake effect. +An expander for MATRIX44, adding CVs and mutes for each point in the mix matrix. The CVs are bipolar (+/-5v), and each is attenuverted by its corresponding knob when in use. The mute buttons will mute the corresponding mix point, overriding the knob and CV. As on <a href="mix8">MIX8</a> and others, the mute buttons can be right-clicked to solo that mix point -- all others will be muted. A subsequent click on a soloed button restores the previous state, and other muted buttons retake effect. MX44CVM must be positioned to the right of, and adjacent to, the MATRIX44 module it will expand. See <a href="#expanders">notes on expanders</a>. #### <a name="matrix88"></a> MATRIX88 -An 8x8 version of MATRIX44. +An 8x8 version of MATRIX44. It is expanable with <a href="matrix88cv">MX88CV</a> and <a href="matrix88m">MX88M</a>. _Polyphony:_ <a href="#polyphony">Polyphonic</a>, with polyphonic channels defined by the first/topmost input. +#### <a name="matrix88cv"></a> MX88CV + +An expander for MATRIX88, adding CVs for each point in the mix matrix. The CVs are bipolar (+/-5v), and each is attenuverted by its corresponding knob when in use. + +MX88CV must be positioned to the right of, and adjacent to, the MATRIX88 module it will expand, or a MX88M module that is itself expanding a MATRIX88. See <a href="#expanders">notes on expanders</a>. + +#### <a name="matrix88cvm"></a> MX88CVM + +An expander for MATRIX88, adding mutes for each point in the mix matrix. The mute buttons will mute the corresponding mix point, overriding the knob (and CV if a MX88CV is in use). As on <a href="mix8">MIX8</a> and others, the mute buttons can be right-clicked to solo that mix point -- all others will be muted. A subsequent click on a soloed button restores the previous state, and other muted buttons retake effect. + +MX88M must be positioned to the right of, and adjacent to, the MATRIX88 module it will expand, or a MX88CV module that is itself expanding a MATRIX88. See <a href="#expanders">notes on expanders</a>. + #### <a name="switch81"></a> SWITCH81 ![Mixers screenshot](doc/www/mixers4.png) diff --git a/plugin.json b/plugin.json @@ -627,6 +627,28 @@ ] }, { + "slug": "Bogaudio-Matrix88Cv", + "name": "MX88CV", + "description": "CV expander for MATRIX88", + "manualUrl": "https://github.com/bogaudio/BogaudioModules/blob/master/README.md#matrix88cv", + "tags": [ + "Mixer", + "Expander", + "Polyphonic" + ] + }, + { + "slug": "Bogaudio-Matrix88M", + "name": "MX88M", + "description": "Mutes expander for MATRIX88", + "manualUrl": "https://github.com/bogaudio/BogaudioModules/blob/master/README.md#matrix88m", + "tags": [ + "Mixer", + "Expander", + "Polyphonic" + ] + }, + { "slug": "Bogaudio-Switch81", "name": "SWITCH81", "description": "8-channel mixer", diff --git a/res-pp/Matrix88Cv-dark-pp.svg b/res-pp/Matrix88Cv-dark-pp.svg @@ -0,0 +1,554 @@ +<?xml version="1.0"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="300.0" height="380.0" viewBox="0 0 300.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> + + + + <rect class="module-background background-fill" width="300.0" height="380.0"/> + + + <polyline class="module-border-inner" points="1,1 299.0,1 299.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/> + <polyline class="module-border-middle" points="0.5,0.5 299.5,0.5 299.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 300.0,0 300.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(150.0 19)">MX88CV</text> + <g transform="translate(0 374)"> + <text class="brand" font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate(150.0 0)">BOGAUDIO</text> + <rect class="background-fill" width="3" height="3" transform="translate(134.5 -5)"/> + </g> + + + <g transform="translate(27.5 42)"> + <g transform="translate(-12 -12)"><svg id="CV11_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(-12 25)"><svg id="CV21_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(-12 62)"><svg id="CV31_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(-12 99)"><svg id="CV41_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(-12 136)"><svg id="CV51_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(-12 173)"><svg id="CV61_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(-12 210)"><svg id="CV71_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(-12 247)"><svg id="CV81_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(23 -12)"><svg id="CV12_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(23 25)"><svg id="CV22_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(23 62)"><svg id="CV32_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(23 99)"><svg id="CV42_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(23 136)"><svg id="CV52_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(23 173)"><svg id="CV62_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(23 210)"><svg id="CV72_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(23 247)"><svg id="CV82_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(58 -12)"><svg id="CV13_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(58 25)"><svg id="CV23_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(58 62)"><svg id="CV33_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(58 99)"><svg id="CV43_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(58 136)"><svg id="CV53_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(58 173)"><svg id="CV63_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(58 210)"><svg id="CV73_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(58 247)"><svg id="CV83_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(93 -12)"><svg id="CV14_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(93 25)"><svg id="CV24_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(93 62)"><svg id="CV34_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(93 99)"><svg id="CV44_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(93 136)"><svg id="CV54_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(93 173)"><svg id="CV64_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(93 210)"><svg id="CV74_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(93 247)"><svg id="CV84_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(128 -12)"><svg id="CV15_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(128 25)"><svg id="CV25_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(128 62)"><svg id="CV35_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(128 99)"><svg id="CV45_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(128 136)"><svg id="CV55_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(128 173)"><svg id="CV65_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(128 210)"><svg id="CV75_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(128 247)"><svg id="CV85_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(163 -12)"><svg id="CV16_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(163 25)"><svg id="CV26_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(163 62)"><svg id="CV36_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(163 99)"><svg id="CV46_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(163 136)"><svg id="CV56_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(163 173)"><svg id="CV66_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(163 210)"><svg id="CV76_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(163 247)"><svg id="CV86_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(198 -12)"><svg id="CV17_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(198 25)"><svg id="CV27_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(198 62)"><svg id="CV37_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(198 99)"><svg id="CV47_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(198 136)"><svg id="CV57_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(198 173)"><svg id="CV67_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(198 210)"><svg id="CV77_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(198 247)"><svg id="CV87_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(233 -12)"><svg id="CV18_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(233 25)"><svg id="CV28_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(233 62)"><svg id="CV38_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(233 99)"><svg id="CV48_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(233 136)"><svg id="CV58_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(233 173)"><svg id="CV68_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(233 210)"><svg id="CV78_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(233 247)"><svg id="CV88_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> + + + + +</svg> diff --git a/res-pp/Matrix88Cv-lowcontrast-pp.svg b/res-pp/Matrix88Cv-lowcontrast-pp.svg @@ -0,0 +1,554 @@ +<?xml version="1.0"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="300.0" height="380.0" viewBox="0 0 300.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> + + + + <rect class="module-background background-fill" width="300.0" height="380.0"/> + + + <polyline class="module-border-inner" points="1,1 299.0,1 299.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/> + <polyline class="module-border-middle" points="0.5,0.5 299.5,0.5 299.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 300.0,0 300.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(150.0 19)">MX88CV</text> + <g transform="translate(0 374)"> + <text class="brand" font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate(150.0 0)">BOGAUDIO</text> + <rect class="background-fill" width="3" height="3" transform="translate(134.5 -5)"/> + </g> + + + <g transform="translate(27.5 42)"> + <g transform="translate(-12 -12)"><svg id="CV11_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(-12 25)"><svg id="CV21_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(-12 62)"><svg id="CV31_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(-12 99)"><svg id="CV41_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(-12 136)"><svg id="CV51_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(-12 173)"><svg id="CV61_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(-12 210)"><svg id="CV71_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(-12 247)"><svg id="CV81_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(23 -12)"><svg id="CV12_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(23 25)"><svg id="CV22_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(23 62)"><svg id="CV32_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(23 99)"><svg id="CV42_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(23 136)"><svg id="CV52_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(23 173)"><svg id="CV62_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(23 210)"><svg id="CV72_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(23 247)"><svg id="CV82_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(58 -12)"><svg id="CV13_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(58 25)"><svg id="CV23_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(58 62)"><svg id="CV33_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(58 99)"><svg id="CV43_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(58 136)"><svg id="CV53_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(58 173)"><svg id="CV63_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(58 210)"><svg id="CV73_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(58 247)"><svg id="CV83_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(93 -12)"><svg id="CV14_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(93 25)"><svg id="CV24_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(93 62)"><svg id="CV34_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(93 99)"><svg id="CV44_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(93 136)"><svg id="CV54_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(93 173)"><svg id="CV64_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(93 210)"><svg id="CV74_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(93 247)"><svg id="CV84_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(128 -12)"><svg id="CV15_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(128 25)"><svg id="CV25_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(128 62)"><svg id="CV35_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(128 99)"><svg id="CV45_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(128 136)"><svg id="CV55_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(128 173)"><svg id="CV65_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(128 210)"><svg id="CV75_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(128 247)"><svg id="CV85_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(163 -12)"><svg id="CV16_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(163 25)"><svg id="CV26_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(163 62)"><svg id="CV36_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(163 99)"><svg id="CV46_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(163 136)"><svg id="CV56_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(163 173)"><svg id="CV66_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(163 210)"><svg id="CV76_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(163 247)"><svg id="CV86_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(198 -12)"><svg id="CV17_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(198 25)"><svg id="CV27_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(198 62)"><svg id="CV37_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(198 99)"><svg id="CV47_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(198 136)"><svg id="CV57_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(198 173)"><svg id="CV67_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(198 210)"><svg id="CV77_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(198 247)"><svg id="CV87_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(233 -12)"><svg id="CV18_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(233 25)"><svg id="CV28_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(233 62)"><svg id="CV38_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(233 99)"><svg id="CV48_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(233 136)"><svg id="CV58_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(233 173)"><svg id="CV68_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(233 210)"><svg id="CV78_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(233 247)"><svg id="CV88_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> + + + + +</svg> diff --git a/res-pp/Matrix88Cv-pp.svg b/res-pp/Matrix88Cv-pp.svg @@ -0,0 +1,490 @@ +<?xml version="1.0"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="300.0" height="380.0" viewBox="0 0 300.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> + + + + <rect class="module-background background-fill" width="300.0" height="380.0"/> + + + <polyline class="module-border-inner" points="1,1 299.0,1 299.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/> + <polyline class="module-border-middle" points="0.5,0.5 299.5,0.5 299.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 300.0,0 300.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(150.0 19)">MX88CV</text> + <g transform="translate(0 374)"> + <text class="brand" font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate(150.0 0)">BOGAUDIO</text> + <rect class="background-fill" width="3" height="3" transform="translate(134.5 -5)"/> + </g> + + + <g transform="translate(27.5 42)"> + <g transform="translate(-12 -12)"><svg id="CV11_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(-12 25)"><svg id="CV21_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(-12 62)"><svg id="CV31_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(-12 99)"><svg id="CV41_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(-12 136)"><svg id="CV51_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(-12 173)"><svg id="CV61_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(-12 210)"><svg id="CV71_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(-12 247)"><svg id="CV81_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(23 -12)"><svg id="CV12_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(23 25)"><svg id="CV22_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(23 62)"><svg id="CV32_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(23 99)"><svg id="CV42_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(23 136)"><svg id="CV52_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(23 173)"><svg id="CV62_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(23 210)"><svg id="CV72_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(23 247)"><svg id="CV82_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(58 -12)"><svg id="CV13_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(58 25)"><svg id="CV23_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(58 62)"><svg id="CV33_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(58 99)"><svg id="CV43_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(58 136)"><svg id="CV53_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(58 173)"><svg id="CV63_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(58 210)"><svg id="CV73_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(58 247)"><svg id="CV83_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(93 -12)"><svg id="CV14_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(93 25)"><svg id="CV24_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(93 62)"><svg id="CV34_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(93 99)"><svg id="CV44_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(93 136)"><svg id="CV54_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(93 173)"><svg id="CV64_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(93 210)"><svg id="CV74_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(93 247)"><svg id="CV84_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(128 -12)"><svg id="CV15_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(128 25)"><svg id="CV25_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(128 62)"><svg id="CV35_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(128 99)"><svg id="CV45_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(128 136)"><svg id="CV55_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(128 173)"><svg id="CV65_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(128 210)"><svg id="CV75_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(128 247)"><svg id="CV85_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(163 -12)"><svg id="CV16_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(163 25)"><svg id="CV26_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(163 62)"><svg id="CV36_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(163 99)"><svg id="CV46_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(163 136)"><svg id="CV56_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(163 173)"><svg id="CV66_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(163 210)"><svg id="CV76_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(163 247)"><svg id="CV86_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(198 -12)"><svg id="CV17_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(198 25)"><svg id="CV27_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(198 62)"><svg id="CV37_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(198 99)"><svg id="CV47_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(198 136)"><svg id="CV57_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(198 173)"><svg id="CV67_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(198 210)"><svg id="CV77_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(198 247)"><svg id="CV87_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(233 -12)"><svg id="CV18_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(233 25)"><svg id="CV28_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(233 62)"><svg id="CV38_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(233 99)"><svg id="CV48_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(233 136)"><svg id="CV58_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(233 173)"><svg id="CV68_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(233 210)"><svg id="CV78_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(233 247)"><svg id="CV88_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> + + + + +</svg> diff --git a/res-pp/Matrix88M-dark-pp.svg b/res-pp/Matrix88M-dark-pp.svg @@ -0,0 +1,492 @@ +<?xml version="1.0"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="300.0" height="380.0" viewBox="0 0 300.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> + + + + <rect class="module-background background-fill" width="300.0" height="380.0"/> + + + <polyline class="module-border-inner" points="1,1 299.0,1 299.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/> + <polyline class="module-border-middle" points="0.5,0.5 299.5,0.5 299.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 300.0,0 300.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(150.0 19)">MX88M</text> + <g transform="translate(0 374)"> + <text class="brand" font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate(150.0 0)">BOGAUDIO</text> + <rect class="background-fill" width="3" height="3" transform="translate(134.5 -5)"/> + </g> + + + + + <g transform="translate(27.5 42)"> + <g transform="translate(-9 -9)"><svg id="MUTE11_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 28)"><svg id="MUTE21_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 65)"><svg id="MUTE31_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 102)"><svg id="MUTE41_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 139)"><svg id="MUTE51_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 176)"><svg id="MUTE61_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 213)"><svg id="MUTE71_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 250)"><svg id="MUTE81_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(26 -9)"><svg id="MUTE12_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 28)"><svg id="MUTE22_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 65)"><svg id="MUTE32_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 102)"><svg id="MUTE42_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 139)"><svg id="MUTE52_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 176)"><svg id="MUTE62_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 213)"><svg id="MUTE72_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 250)"><svg id="MUTE82_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(61 -9)"><svg id="MUTE13_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 28)"><svg id="MUTE23_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 65)"><svg id="MUTE33_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 102)"><svg id="MUTE43_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 139)"><svg id="MUTE53_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 176)"><svg id="MUTE63_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 213)"><svg id="MUTE73_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 250)"><svg id="MUTE83_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(96 -9)"><svg id="MUTE14_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 28)"><svg id="MUTE24_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 65)"><svg id="MUTE34_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 102)"><svg id="MUTE44_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 139)"><svg id="MUTE54_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 176)"><svg id="MUTE64_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 213)"><svg id="MUTE74_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 250)"><svg id="MUTE84_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(131 -9)"><svg id="MUTE15_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 28)"><svg id="MUTE25_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 65)"><svg id="MUTE35_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 102)"><svg id="MUTE45_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 139)"><svg id="MUTE55_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 176)"><svg id="MUTE65_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 213)"><svg id="MUTE75_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 250)"><svg id="MUTE85_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(166 -9)"><svg id="MUTE16_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 28)"><svg id="MUTE26_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 65)"><svg id="MUTE36_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 102)"><svg id="MUTE46_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 139)"><svg id="MUTE56_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 176)"><svg id="MUTE66_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 213)"><svg id="MUTE76_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 250)"><svg id="MUTE86_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(201 -9)"><svg id="MUTE17_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 28)"><svg id="MUTE27_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 65)"><svg id="MUTE37_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 102)"><svg id="MUTE47_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 139)"><svg id="MUTE57_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 176)"><svg id="MUTE67_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 213)"><svg id="MUTE77_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 250)"><svg id="MUTE87_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(236 -9)"><svg id="MUTE18_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 28)"><svg id="MUTE28_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 65)"><svg id="MUTE38_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 102)"><svg id="MUTE48_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 139)"><svg id="MUTE58_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 176)"><svg id="MUTE68_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 213)"><svg id="MUTE78_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 250)"><svg id="MUTE88_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + </g> + + + + +</svg> diff --git a/res-pp/Matrix88M-lowcontrast-pp.svg b/res-pp/Matrix88M-lowcontrast-pp.svg @@ -0,0 +1,492 @@ +<?xml version="1.0"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="300.0" height="380.0" viewBox="0 0 300.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> + + + + <rect class="module-background background-fill" width="300.0" height="380.0"/> + + + <polyline class="module-border-inner" points="1,1 299.0,1 299.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/> + <polyline class="module-border-middle" points="0.5,0.5 299.5,0.5 299.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 300.0,0 300.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(150.0 19)">MX88M</text> + <g transform="translate(0 374)"> + <text class="brand" font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate(150.0 0)">BOGAUDIO</text> + <rect class="background-fill" width="3" height="3" transform="translate(134.5 -5)"/> + </g> + + + + + <g transform="translate(27.5 42)"> + <g transform="translate(-9 -9)"><svg id="MUTE11_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 28)"><svg id="MUTE21_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 65)"><svg id="MUTE31_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 102)"><svg id="MUTE41_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 139)"><svg id="MUTE51_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 176)"><svg id="MUTE61_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 213)"><svg id="MUTE71_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 250)"><svg id="MUTE81_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(26 -9)"><svg id="MUTE12_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 28)"><svg id="MUTE22_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 65)"><svg id="MUTE32_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 102)"><svg id="MUTE42_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 139)"><svg id="MUTE52_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 176)"><svg id="MUTE62_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 213)"><svg id="MUTE72_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 250)"><svg id="MUTE82_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(61 -9)"><svg id="MUTE13_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 28)"><svg id="MUTE23_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 65)"><svg id="MUTE33_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 102)"><svg id="MUTE43_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 139)"><svg id="MUTE53_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 176)"><svg id="MUTE63_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 213)"><svg id="MUTE73_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 250)"><svg id="MUTE83_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(96 -9)"><svg id="MUTE14_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 28)"><svg id="MUTE24_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 65)"><svg id="MUTE34_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 102)"><svg id="MUTE44_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 139)"><svg id="MUTE54_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 176)"><svg id="MUTE64_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 213)"><svg id="MUTE74_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 250)"><svg id="MUTE84_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(131 -9)"><svg id="MUTE15_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 28)"><svg id="MUTE25_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 65)"><svg id="MUTE35_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 102)"><svg id="MUTE45_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 139)"><svg id="MUTE55_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 176)"><svg id="MUTE65_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 213)"><svg id="MUTE75_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 250)"><svg id="MUTE85_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(166 -9)"><svg id="MUTE16_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 28)"><svg id="MUTE26_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 65)"><svg id="MUTE36_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 102)"><svg id="MUTE46_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 139)"><svg id="MUTE56_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 176)"><svg id="MUTE66_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 213)"><svg id="MUTE76_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 250)"><svg id="MUTE86_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(201 -9)"><svg id="MUTE17_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 28)"><svg id="MUTE27_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 65)"><svg id="MUTE37_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 102)"><svg id="MUTE47_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 139)"><svg id="MUTE57_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 176)"><svg id="MUTE67_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 213)"><svg id="MUTE77_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 250)"><svg id="MUTE87_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(236 -9)"><svg id="MUTE18_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 28)"><svg id="MUTE28_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 65)"><svg id="MUTE38_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 102)"><svg id="MUTE48_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 139)"><svg id="MUTE58_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 176)"><svg id="MUTE68_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 213)"><svg id="MUTE78_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 250)"><svg id="MUTE88_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + </g> + + + + +</svg> diff --git a/res-pp/Matrix88M-pp.svg b/res-pp/Matrix88M-pp.svg @@ -0,0 +1,428 @@ +<?xml version="1.0"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="300.0" height="380.0" viewBox="0 0 300.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> + + + + <rect class="module-background background-fill" width="300.0" height="380.0"/> + + + <polyline class="module-border-inner" points="1,1 299.0,1 299.0,379.0 1,379.0 1,1" stroke-width="0.5" fill="none"/> + <polyline class="module-border-middle" points="0.5,0.5 299.5,0.5 299.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 300.0,0 300.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(150.0 19)">MX88M</text> + <g transform="translate(0 374)"> + <text class="brand" font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate(150.0 0)">BOGAUDIO</text> + <rect class="background-fill" width="3" height="3" transform="translate(134.5 -5)"/> + </g> + + + + + <g transform="translate(27.5 42)"> + <g transform="translate(-9 -9)"><svg id="MUTE11_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 28)"><svg id="MUTE21_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 65)"><svg id="MUTE31_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 102)"><svg id="MUTE41_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 139)"><svg id="MUTE51_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 176)"><svg id="MUTE61_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 213)"><svg id="MUTE71_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(-9 250)"><svg id="MUTE81_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(26 -9)"><svg id="MUTE12_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 28)"><svg id="MUTE22_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 65)"><svg id="MUTE32_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 102)"><svg id="MUTE42_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 139)"><svg id="MUTE52_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 176)"><svg id="MUTE62_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 213)"><svg id="MUTE72_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(26 250)"><svg id="MUTE82_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(61 -9)"><svg id="MUTE13_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 28)"><svg id="MUTE23_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 65)"><svg id="MUTE33_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 102)"><svg id="MUTE43_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 139)"><svg id="MUTE53_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 176)"><svg id="MUTE63_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 213)"><svg id="MUTE73_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(61 250)"><svg id="MUTE83_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(96 -9)"><svg id="MUTE14_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 28)"><svg id="MUTE24_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 65)"><svg id="MUTE34_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 102)"><svg id="MUTE44_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 139)"><svg id="MUTE54_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 176)"><svg id="MUTE64_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 213)"><svg id="MUTE74_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(96 250)"><svg id="MUTE84_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(131 -9)"><svg id="MUTE15_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 28)"><svg id="MUTE25_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 65)"><svg id="MUTE35_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 102)"><svg id="MUTE45_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 139)"><svg id="MUTE55_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 176)"><svg id="MUTE65_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 213)"><svg id="MUTE75_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(131 250)"><svg id="MUTE85_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(166 -9)"><svg id="MUTE16_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 28)"><svg id="MUTE26_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 65)"><svg id="MUTE36_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 102)"><svg id="MUTE46_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 139)"><svg id="MUTE56_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 176)"><svg id="MUTE66_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 213)"><svg id="MUTE76_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(166 250)"><svg id="MUTE86_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(201 -9)"><svg id="MUTE17_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 28)"><svg id="MUTE27_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 65)"><svg id="MUTE37_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 102)"><svg id="MUTE47_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 139)"><svg id="MUTE57_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 176)"><svg id="MUTE67_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 213)"><svg id="MUTE77_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(201 250)"><svg id="MUTE87_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + + <g transform="translate(236 -9)"><svg id="MUTE18_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 28)"><svg id="MUTE28_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 65)"><svg id="MUTE38_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 102)"><svg id="MUTE48_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 139)"><svg id="MUTE58_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 176)"><svg id="MUTE68_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 213)"><svg id="MUTE78_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + <g transform="translate(236 250)"><svg id="MUTE88_PARAM"> + <g transform="translate(9 9)"> + <circle cx="0" cy="0" r="8.5" stroke-width="1" stroke="#00f" fill="#f00"/> + </g> + </svg></g> + </g> + + + + +</svg> diff --git a/res-src/Matrix88Cv-src.svg b/res-src/Matrix88Cv-src.svg @@ -0,0 +1,99 @@ +<module hp="20"> + <style/> + + <def xlink:href="#module" var-name="MX88CV"/> + + <g transform="translate(27.5 42)" var-x="35" var-y="37"> + <def id="CV11_INPUT" xlink:href="#input" transform="translate(0*$x-12 0*$y-12)"/> + <def id="CV21_INPUT" xlink:href="#input" transform="translate(0*$x-12 1*$y-12)"/> + <def id="CV31_INPUT" xlink:href="#input" transform="translate(0*$x-12 2*$y-12)"/> + <def id="CV41_INPUT" xlink:href="#input" transform="translate(0*$x-12 3*$y-12)"/> + <def id="CV51_INPUT" xlink:href="#input" transform="translate(0*$x-12 4*$y-12)"/> + <def id="CV61_INPUT" xlink:href="#input" transform="translate(0*$x-12 5*$y-12)"/> + <def id="CV71_INPUT" xlink:href="#input" transform="translate(0*$x-12 6*$y-12)"/> + <def id="CV81_INPUT" xlink:href="#input" transform="translate(0*$x-12 7*$y-12)"/> + + <def id="CV12_INPUT" xlink:href="#input" transform="translate(1*$x-12 0*$y-12)"/> + <def id="CV22_INPUT" xlink:href="#input" transform="translate(1*$x-12 1*$y-12)"/> + <def id="CV32_INPUT" xlink:href="#input" transform="translate(1*$x-12 2*$y-12)"/> + <def id="CV42_INPUT" xlink:href="#input" transform="translate(1*$x-12 3*$y-12)"/> + <def id="CV52_INPUT" xlink:href="#input" transform="translate(1*$x-12 4*$y-12)"/> + <def id="CV62_INPUT" xlink:href="#input" transform="translate(1*$x-12 5*$y-12)"/> + <def id="CV72_INPUT" xlink:href="#input" transform="translate(1*$x-12 6*$y-12)"/> + <def id="CV82_INPUT" xlink:href="#input" transform="translate(1*$x-12 7*$y-12)"/> + + <def id="CV13_INPUT" xlink:href="#input" transform="translate(2*$x-12 0*$y-12)"/> + <def id="CV23_INPUT" xlink:href="#input" transform="translate(2*$x-12 1*$y-12)"/> + <def id="CV33_INPUT" xlink:href="#input" transform="translate(2*$x-12 2*$y-12)"/> + <def id="CV43_INPUT" xlink:href="#input" transform="translate(2*$x-12 3*$y-12)"/> + <def id="CV53_INPUT" xlink:href="#input" transform="translate(2*$x-12 4*$y-12)"/> + <def id="CV63_INPUT" xlink:href="#input" transform="translate(2*$x-12 5*$y-12)"/> + <def id="CV73_INPUT" xlink:href="#input" transform="translate(2*$x-12 6*$y-12)"/> + <def id="CV83_INPUT" xlink:href="#input" transform="translate(2*$x-12 7*$y-12)"/> + + <def id="CV14_INPUT" xlink:href="#input" transform="translate(3*$x-12 0*$y-12)"/> + <def id="CV24_INPUT" xlink:href="#input" transform="translate(3*$x-12 1*$y-12)"/> + <def id="CV34_INPUT" xlink:href="#input" transform="translate(3*$x-12 2*$y-12)"/> + <def id="CV44_INPUT" xlink:href="#input" transform="translate(3*$x-12 3*$y-12)"/> + <def id="CV54_INPUT" xlink:href="#input" transform="translate(3*$x-12 4*$y-12)"/> + <def id="CV64_INPUT" xlink:href="#input" transform="translate(3*$x-12 5*$y-12)"/> + <def id="CV74_INPUT" xlink:href="#input" transform="translate(3*$x-12 6*$y-12)"/> + <def id="CV84_INPUT" xlink:href="#input" transform="translate(3*$x-12 7*$y-12)"/> + + <def id="CV15_INPUT" xlink:href="#input" transform="translate(4*$x-12 0*$y-12)"/> + <def id="CV25_INPUT" xlink:href="#input" transform="translate(4*$x-12 1*$y-12)"/> + <def id="CV35_INPUT" xlink:href="#input" transform="translate(4*$x-12 2*$y-12)"/> + <def id="CV45_INPUT" xlink:href="#input" transform="translate(4*$x-12 3*$y-12)"/> + <def id="CV55_INPUT" xlink:href="#input" transform="translate(4*$x-12 4*$y-12)"/> + <def id="CV65_INPUT" xlink:href="#input" transform="translate(4*$x-12 5*$y-12)"/> + <def id="CV75_INPUT" xlink:href="#input" transform="translate(4*$x-12 6*$y-12)"/> + <def id="CV85_INPUT" xlink:href="#input" transform="translate(4*$x-12 7*$y-12)"/> + + <def id="CV16_INPUT" xlink:href="#input" transform="translate(5*$x-12 0*$y-12)"/> + <def id="CV26_INPUT" xlink:href="#input" transform="translate(5*$x-12 1*$y-12)"/> + <def id="CV36_INPUT" xlink:href="#input" transform="translate(5*$x-12 2*$y-12)"/> + <def id="CV46_INPUT" xlink:href="#input" transform="translate(5*$x-12 3*$y-12)"/> + <def id="CV56_INPUT" xlink:href="#input" transform="translate(5*$x-12 4*$y-12)"/> + <def id="CV66_INPUT" xlink:href="#input" transform="translate(5*$x-12 5*$y-12)"/> + <def id="CV76_INPUT" xlink:href="#input" transform="translate(5*$x-12 6*$y-12)"/> + <def id="CV86_INPUT" xlink:href="#input" transform="translate(5*$x-12 7*$y-12)"/> + + <def id="CV17_INPUT" xlink:href="#input" transform="translate(6*$x-12 0*$y-12)"/> + <def id="CV27_INPUT" xlink:href="#input" transform="translate(6*$x-12 1*$y-12)"/> + <def id="CV37_INPUT" xlink:href="#input" transform="translate(6*$x-12 2*$y-12)"/> + <def id="CV47_INPUT" xlink:href="#input" transform="translate(6*$x-12 3*$y-12)"/> + <def id="CV57_INPUT" xlink:href="#input" transform="translate(6*$x-12 4*$y-12)"/> + <def id="CV67_INPUT" xlink:href="#input" transform="translate(6*$x-12 5*$y-12)"/> + <def id="CV77_INPUT" xlink:href="#input" transform="translate(6*$x-12 6*$y-12)"/> + <def id="CV87_INPUT" xlink:href="#input" transform="translate(6*$x-12 7*$y-12)"/> + + <def id="CV18_INPUT" xlink:href="#input" transform="translate(7*$x-12 0*$y-12)"/> + <def id="CV28_INPUT" xlink:href="#input" transform="translate(7*$x-12 1*$y-12)"/> + <def id="CV38_INPUT" xlink:href="#input" transform="translate(7*$x-12 2*$y-12)"/> + <def id="CV48_INPUT" xlink:href="#input" transform="translate(7*$x-12 3*$y-12)"/> + <def id="CV58_INPUT" xlink:href="#input" transform="translate(7*$x-12 4*$y-12)"/> + <def id="CV68_INPUT" xlink:href="#input" transform="translate(7*$x-12 5*$y-12)"/> + <def id="CV78_INPUT" xlink:href="#input" transform="translate(7*$x-12 6*$y-12)"/> + <def id="CV88_INPUT" xlink:href="#input" transform="translate(7*$x-12 7*$y-12)"/> + </g> + + <!-- <text font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate($width/2.0 330)">CV</text> --> + + <!-- <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(27.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(62.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(97.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(132.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(167.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(202.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(237.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(273.5 0)" /> + + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 42)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 79)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 116)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 153)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 190)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 227)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 264)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 301)" /> --> +</module> diff --git a/res-src/Matrix88M-src.svg b/res-src/Matrix88M-src.svg @@ -0,0 +1,101 @@ +<module hp="20"> + <style/> + + <def xlink:href="#module" var-name="MX88M"/> + + <!-- <def id="MIX11_PARAM" xlink:href="#button" transform="translate(4.5 9)"/> --> + + <g transform="translate(27.5 42)" var-x="35" var-y="37"> + <def id="MUTE11_PARAM" xlink:href="#button" transform="translate(0*$x-9 0*$y-9)"/> + <def id="MUTE21_PARAM" xlink:href="#button" transform="translate(0*$x-9 1*$y-9)"/> + <def id="MUTE31_PARAM" xlink:href="#button" transform="translate(0*$x-9 2*$y-9)"/> + <def id="MUTE41_PARAM" xlink:href="#button" transform="translate(0*$x-9 3*$y-9)"/> + <def id="MUTE51_PARAM" xlink:href="#button" transform="translate(0*$x-9 4*$y-9)"/> + <def id="MUTE61_PARAM" xlink:href="#button" transform="translate(0*$x-9 5*$y-9)"/> + <def id="MUTE71_PARAM" xlink:href="#button" transform="translate(0*$x-9 6*$y-9)"/> + <def id="MUTE81_PARAM" xlink:href="#button" transform="translate(0*$x-9 7*$y-9)"/> + + <def id="MUTE12_PARAM" xlink:href="#button" transform="translate(1*$x-9 0*$y-9)"/> + <def id="MUTE22_PARAM" xlink:href="#button" transform="translate(1*$x-9 1*$y-9)"/> + <def id="MUTE32_PARAM" xlink:href="#button" transform="translate(1*$x-9 2*$y-9)"/> + <def id="MUTE42_PARAM" xlink:href="#button" transform="translate(1*$x-9 3*$y-9)"/> + <def id="MUTE52_PARAM" xlink:href="#button" transform="translate(1*$x-9 4*$y-9)"/> + <def id="MUTE62_PARAM" xlink:href="#button" transform="translate(1*$x-9 5*$y-9)"/> + <def id="MUTE72_PARAM" xlink:href="#button" transform="translate(1*$x-9 6*$y-9)"/> + <def id="MUTE82_PARAM" xlink:href="#button" transform="translate(1*$x-9 7*$y-9)"/> + + <def id="MUTE13_PARAM" xlink:href="#button" transform="translate(2*$x-9 0*$y-9)"/> + <def id="MUTE23_PARAM" xlink:href="#button" transform="translate(2*$x-9 1*$y-9)"/> + <def id="MUTE33_PARAM" xlink:href="#button" transform="translate(2*$x-9 2*$y-9)"/> + <def id="MUTE43_PARAM" xlink:href="#button" transform="translate(2*$x-9 3*$y-9)"/> + <def id="MUTE53_PARAM" xlink:href="#button" transform="translate(2*$x-9 4*$y-9)"/> + <def id="MUTE63_PARAM" xlink:href="#button" transform="translate(2*$x-9 5*$y-9)"/> + <def id="MUTE73_PARAM" xlink:href="#button" transform="translate(2*$x-9 6*$y-9)"/> + <def id="MUTE83_PARAM" xlink:href="#button" transform="translate(2*$x-9 7*$y-9)"/> + + <def id="MUTE14_PARAM" xlink:href="#button" transform="translate(3*$x-9 0*$y-9)"/> + <def id="MUTE24_PARAM" xlink:href="#button" transform="translate(3*$x-9 1*$y-9)"/> + <def id="MUTE34_PARAM" xlink:href="#button" transform="translate(3*$x-9 2*$y-9)"/> + <def id="MUTE44_PARAM" xlink:href="#button" transform="translate(3*$x-9 3*$y-9)"/> + <def id="MUTE54_PARAM" xlink:href="#button" transform="translate(3*$x-9 4*$y-9)"/> + <def id="MUTE64_PARAM" xlink:href="#button" transform="translate(3*$x-9 5*$y-9)"/> + <def id="MUTE74_PARAM" xlink:href="#button" transform="translate(3*$x-9 6*$y-9)"/> + <def id="MUTE84_PARAM" xlink:href="#button" transform="translate(3*$x-9 7*$y-9)"/> + + <def id="MUTE15_PARAM" xlink:href="#button" transform="translate(4*$x-9 0*$y-9)"/> + <def id="MUTE25_PARAM" xlink:href="#button" transform="translate(4*$x-9 1*$y-9)"/> + <def id="MUTE35_PARAM" xlink:href="#button" transform="translate(4*$x-9 2*$y-9)"/> + <def id="MUTE45_PARAM" xlink:href="#button" transform="translate(4*$x-9 3*$y-9)"/> + <def id="MUTE55_PARAM" xlink:href="#button" transform="translate(4*$x-9 4*$y-9)"/> + <def id="MUTE65_PARAM" xlink:href="#button" transform="translate(4*$x-9 5*$y-9)"/> + <def id="MUTE75_PARAM" xlink:href="#button" transform="translate(4*$x-9 6*$y-9)"/> + <def id="MUTE85_PARAM" xlink:href="#button" transform="translate(4*$x-9 7*$y-9)"/> + + <def id="MUTE16_PARAM" xlink:href="#button" transform="translate(5*$x-9 0*$y-9)"/> + <def id="MUTE26_PARAM" xlink:href="#button" transform="translate(5*$x-9 1*$y-9)"/> + <def id="MUTE36_PARAM" xlink:href="#button" transform="translate(5*$x-9 2*$y-9)"/> + <def id="MUTE46_PARAM" xlink:href="#button" transform="translate(5*$x-9 3*$y-9)"/> + <def id="MUTE56_PARAM" xlink:href="#button" transform="translate(5*$x-9 4*$y-9)"/> + <def id="MUTE66_PARAM" xlink:href="#button" transform="translate(5*$x-9 5*$y-9)"/> + <def id="MUTE76_PARAM" xlink:href="#button" transform="translate(5*$x-9 6*$y-9)"/> + <def id="MUTE86_PARAM" xlink:href="#button" transform="translate(5*$x-9 7*$y-9)"/> + + <def id="MUTE17_PARAM" xlink:href="#button" transform="translate(6*$x-9 0*$y-9)"/> + <def id="MUTE27_PARAM" xlink:href="#button" transform="translate(6*$x-9 1*$y-9)"/> + <def id="MUTE37_PARAM" xlink:href="#button" transform="translate(6*$x-9 2*$y-9)"/> + <def id="MUTE47_PARAM" xlink:href="#button" transform="translate(6*$x-9 3*$y-9)"/> + <def id="MUTE57_PARAM" xlink:href="#button" transform="translate(6*$x-9 4*$y-9)"/> + <def id="MUTE67_PARAM" xlink:href="#button" transform="translate(6*$x-9 5*$y-9)"/> + <def id="MUTE77_PARAM" xlink:href="#button" transform="translate(6*$x-9 6*$y-9)"/> + <def id="MUTE87_PARAM" xlink:href="#button" transform="translate(6*$x-9 7*$y-9)"/> + + <def id="MUTE18_PARAM" xlink:href="#button" transform="translate(7*$x-9 0*$y-9)"/> + <def id="MUTE28_PARAM" xlink:href="#button" transform="translate(7*$x-9 1*$y-9)"/> + <def id="MUTE38_PARAM" xlink:href="#button" transform="translate(7*$x-9 2*$y-9)"/> + <def id="MUTE48_PARAM" xlink:href="#button" transform="translate(7*$x-9 3*$y-9)"/> + <def id="MUTE58_PARAM" xlink:href="#button" transform="translate(7*$x-9 4*$y-9)"/> + <def id="MUTE68_PARAM" xlink:href="#button" transform="translate(7*$x-9 5*$y-9)"/> + <def id="MUTE78_PARAM" xlink:href="#button" transform="translate(7*$x-9 6*$y-9)"/> + <def id="MUTE88_PARAM" xlink:href="#button" transform="translate(7*$x-9 7*$y-9)"/> + </g> + + <!-- <text font-size="8pt" letter-spacing="2px" text-anchor="middle" transform="translate($width/2.0 330)">MUTE</text> --> + + <!-- <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(27.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(62.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(97.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(132.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(167.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(202.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(237.5 0)" /> + <polyline class="guide" points="0,0 0,380" stroke="#0f0" stroke-width="1" fill="none" transform="translate(273.5 0)" /> + + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 42)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 79)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 116)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 153)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 190)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 227)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 264)" /> + <polyline class="guide" points="0,0 $width,0" stroke="#0f0" stroke-width="1" fill="none" transform="translate(0 301)" /> --> +</module> diff --git a/res/Matrix88Cv-dark.svg b/res/Matrix88Cv-dark.svg Binary files differ. diff --git a/res/Matrix88Cv-lowcontrast.svg b/res/Matrix88Cv-lowcontrast.svg Binary files differ. diff --git a/res/Matrix88Cv.svg b/res/Matrix88Cv.svg Binary files differ. diff --git a/res/Matrix88M-dark.svg b/res/Matrix88M-dark.svg Binary files differ. diff --git a/res/Matrix88M-lowcontrast.svg b/res/Matrix88M-lowcontrast.svg Binary files differ. diff --git a/res/Matrix88M.svg b/res/Matrix88M.svg Binary files differ. diff --git a/src/Matrix44.cpp b/src/Matrix44.cpp @@ -5,8 +5,9 @@ void Matrix44::elementsChanged() { // base-class caller holds lock on _elements. Input** cvs = NULL; Param** mutes = NULL; - for (int i = 1, n = _elements.size(); i < n; ++i) { - auto e = _elements[i]; + if (_elements.size() > 1) { + auto e = _elements[1]; + assert(e); if (e->cvs) { cvs = e->cvs; } diff --git a/src/Matrix88.cpp b/src/Matrix88.cpp @@ -1,6 +1,32 @@ #include "Matrix88.hpp" +void Matrix88::elementsChanged() { + // base-class caller holds lock on _elements. + Input** cvs = NULL; + Param** mutes = NULL; + for (int i = 1, n = std::min(3, (int)_elements.size()); i < n; ++i) { + auto e = _elements[i]; + assert(e); + if (e->cvs) { + cvs = e->cvs; + } + if (e->mutes) { + mutes = e->mutes; + } + } + setCVInputs(cvs); + setMuteParams(mutes); +} + +void Matrix88::processAlways(const ProcessArgs& args) { + if (expanderConnected()) { + Matrix88ExpanderMessage* te = toExpander(); + te->baseID = _id; + te->position = 1; + } +} + struct Matrix88Widget : KnobMatrixModuleWidget { static constexpr int hp = 22; diff --git a/src/Matrix88.hpp b/src/Matrix88.hpp @@ -1,13 +1,12 @@ #pragma once -#include "bogaudio.hpp" -#include "matrix_base.hpp" - -extern Model* modelMatrix88; +#include "Matrix88_shared.hpp" namespace bogaudio { -struct Matrix88 : KnobMatrixModule { +typedef ChainableExpandableModule<Matrix88ExpanderMessage, Matrix88Element, 1, KnobMatrixModule> Matrix88Base; + +struct Matrix88 : Matrix88Base { enum ParamsIds { MIX11_PARAM, MIX21_PARAM, @@ -100,8 +99,9 @@ struct Matrix88 : KnobMatrixModule { NUM_OUTPUTS }; - Matrix88() : KnobMatrixModule(8, 8, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT) { + Matrix88() { config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); + configMatrixModule(8, 8, MIX11_PARAM, IN1_INPUT, OUT1_OUTPUT); 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); configParam(MIX31_PARAM, -1.0f, 1.0f, 0.0f, "Mix 3A", "%", 0.0f, 100.0f); @@ -166,7 +166,14 @@ struct Matrix88 : KnobMatrixModule { configParam(MIX68_PARAM, -1.0f, 1.0f, 0.0f, "Mix 6H", "%", 0.0f, 100.0f); configParam(MIX78_PARAM, -1.0f, 1.0f, 0.0f, "Mix 7H", "%", 0.0f, 100.0f); configParam(MIX88_PARAM, -1.0f, 1.0f, 0.0f, "Mix 8H", "%", 0.0f, 100.0f); + + setLocalElements({new Matrix88Element(NULL, NULL)}); + registerBase(); + setExpanderModelPredicate([](Model* m) { return m == modelMatrix88Cv || m == modelMatrix88M; }); } + + void elementsChanged() override; + void processAlways(const ProcessArgs& args) override; }; } // namespace bogaudio diff --git a/src/Matrix88Cv.cpp b/src/Matrix88Cv.cpp @@ -0,0 +1,164 @@ + +#include "Matrix88Cv.hpp" + +void Matrix88Cv::processAlways(const ProcessArgs& args) { + int position = 0; + int baseID = 0; + if (baseConnected()) { + Matrix88ExpanderMessage* bm = fromBase(); + baseID = bm->baseID; + position = bm->position; + } + setBaseIDAndPosition(baseID, position); + + if (expanderConnected()) { + Matrix88ExpanderMessage* te = toExpander(); + te->baseID = _baseID; + te->position = _position > 0 ? _position + 1 : 0; + } +} + +struct Matrix88CvWidget : BGModuleWidget { + static constexpr int hp = 20; + + Matrix88CvWidget(Matrix88Cv* module) { + setModule(module); + box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT); + setPanel(box.size, "Matrix88Cv"); + createScrews(); + + // generated by svg_widgets.rb + auto cv11InputPosition = Vec(15.5, 30.0); + auto cv21InputPosition = Vec(15.5, 67.0); + auto cv31InputPosition = Vec(15.5, 104.0); + auto cv41InputPosition = Vec(15.5, 141.0); + auto cv51InputPosition = Vec(15.5, 178.0); + auto cv61InputPosition = Vec(15.5, 215.0); + auto cv71InputPosition = Vec(15.5, 252.0); + auto cv81InputPosition = Vec(15.5, 289.0); + auto cv12InputPosition = Vec(50.5, 30.0); + auto cv22InputPosition = Vec(50.5, 67.0); + auto cv32InputPosition = Vec(50.5, 104.0); + auto cv42InputPosition = Vec(50.5, 141.0); + auto cv52InputPosition = Vec(50.5, 178.0); + auto cv62InputPosition = Vec(50.5, 215.0); + auto cv72InputPosition = Vec(50.5, 252.0); + auto cv82InputPosition = Vec(50.5, 289.0); + auto cv13InputPosition = Vec(85.5, 30.0); + auto cv23InputPosition = Vec(85.5, 67.0); + auto cv33InputPosition = Vec(85.5, 104.0); + auto cv43InputPosition = Vec(85.5, 141.0); + auto cv53InputPosition = Vec(85.5, 178.0); + auto cv63InputPosition = Vec(85.5, 215.0); + auto cv73InputPosition = Vec(85.5, 252.0); + auto cv83InputPosition = Vec(85.5, 289.0); + auto cv14InputPosition = Vec(120.5, 30.0); + auto cv24InputPosition = Vec(120.5, 67.0); + auto cv34InputPosition = Vec(120.5, 104.0); + auto cv44InputPosition = Vec(120.5, 141.0); + auto cv54InputPosition = Vec(120.5, 178.0); + auto cv64InputPosition = Vec(120.5, 215.0); + auto cv74InputPosition = Vec(120.5, 252.0); + auto cv84InputPosition = Vec(120.5, 289.0); + auto cv15InputPosition = Vec(155.5, 30.0); + auto cv25InputPosition = Vec(155.5, 67.0); + auto cv35InputPosition = Vec(155.5, 104.0); + auto cv45InputPosition = Vec(155.5, 141.0); + auto cv55InputPosition = Vec(155.5, 178.0); + auto cv65InputPosition = Vec(155.5, 215.0); + auto cv75InputPosition = Vec(155.5, 252.0); + auto cv85InputPosition = Vec(155.5, 289.0); + auto cv16InputPosition = Vec(190.5, 30.0); + auto cv26InputPosition = Vec(190.5, 67.0); + auto cv36InputPosition = Vec(190.5, 104.0); + auto cv46InputPosition = Vec(190.5, 141.0); + auto cv56InputPosition = Vec(190.5, 178.0); + auto cv66InputPosition = Vec(190.5, 215.0); + auto cv76InputPosition = Vec(190.5, 252.0); + auto cv86InputPosition = Vec(190.5, 289.0); + auto cv17InputPosition = Vec(225.5, 30.0); + auto cv27InputPosition = Vec(225.5, 67.0); + auto cv37InputPosition = Vec(225.5, 104.0); + auto cv47InputPosition = Vec(225.5, 141.0); + auto cv57InputPosition = Vec(225.5, 178.0); + auto cv67InputPosition = Vec(225.5, 215.0); + auto cv77InputPosition = Vec(225.5, 252.0); + auto cv87InputPosition = Vec(225.5, 289.0); + auto cv18InputPosition = Vec(260.5, 30.0); + auto cv28InputPosition = Vec(260.5, 67.0); + auto cv38InputPosition = Vec(260.5, 104.0); + auto cv48InputPosition = Vec(260.5, 141.0); + auto cv58InputPosition = Vec(260.5, 178.0); + auto cv68InputPosition = Vec(260.5, 215.0); + auto cv78InputPosition = Vec(260.5, 252.0); + auto cv88InputPosition = Vec(260.5, 289.0); + // end generated by svg_widgets.rb + + addInput(createInput<Port24>(cv11InputPosition, module, Matrix88Cv::CV11_INPUT)); + addInput(createInput<Port24>(cv21InputPosition, module, Matrix88Cv::CV21_INPUT)); + addInput(createInput<Port24>(cv31InputPosition, module, Matrix88Cv::CV31_INPUT)); + addInput(createInput<Port24>(cv41InputPosition, module, Matrix88Cv::CV41_INPUT)); + addInput(createInput<Port24>(cv51InputPosition, module, Matrix88Cv::CV51_INPUT)); + addInput(createInput<Port24>(cv61InputPosition, module, Matrix88Cv::CV61_INPUT)); + addInput(createInput<Port24>(cv71InputPosition, module, Matrix88Cv::CV71_INPUT)); + addInput(createInput<Port24>(cv81InputPosition, module, Matrix88Cv::CV81_INPUT)); + addInput(createInput<Port24>(cv12InputPosition, module, Matrix88Cv::CV12_INPUT)); + addInput(createInput<Port24>(cv22InputPosition, module, Matrix88Cv::CV22_INPUT)); + addInput(createInput<Port24>(cv32InputPosition, module, Matrix88Cv::CV32_INPUT)); + addInput(createInput<Port24>(cv42InputPosition, module, Matrix88Cv::CV42_INPUT)); + addInput(createInput<Port24>(cv52InputPosition, module, Matrix88Cv::CV52_INPUT)); + addInput(createInput<Port24>(cv62InputPosition, module, Matrix88Cv::CV62_INPUT)); + addInput(createInput<Port24>(cv72InputPosition, module, Matrix88Cv::CV72_INPUT)); + addInput(createInput<Port24>(cv82InputPosition, module, Matrix88Cv::CV82_INPUT)); + addInput(createInput<Port24>(cv13InputPosition, module, Matrix88Cv::CV13_INPUT)); + addInput(createInput<Port24>(cv23InputPosition, module, Matrix88Cv::CV23_INPUT)); + addInput(createInput<Port24>(cv33InputPosition, module, Matrix88Cv::CV33_INPUT)); + addInput(createInput<Port24>(cv43InputPosition, module, Matrix88Cv::CV43_INPUT)); + addInput(createInput<Port24>(cv53InputPosition, module, Matrix88Cv::CV53_INPUT)); + addInput(createInput<Port24>(cv63InputPosition, module, Matrix88Cv::CV63_INPUT)); + addInput(createInput<Port24>(cv73InputPosition, module, Matrix88Cv::CV73_INPUT)); + addInput(createInput<Port24>(cv83InputPosition, module, Matrix88Cv::CV83_INPUT)); + addInput(createInput<Port24>(cv14InputPosition, module, Matrix88Cv::CV14_INPUT)); + addInput(createInput<Port24>(cv24InputPosition, module, Matrix88Cv::CV24_INPUT)); + addInput(createInput<Port24>(cv34InputPosition, module, Matrix88Cv::CV34_INPUT)); + addInput(createInput<Port24>(cv44InputPosition, module, Matrix88Cv::CV44_INPUT)); + addInput(createInput<Port24>(cv54InputPosition, module, Matrix88Cv::CV54_INPUT)); + addInput(createInput<Port24>(cv64InputPosition, module, Matrix88Cv::CV64_INPUT)); + addInput(createInput<Port24>(cv74InputPosition, module, Matrix88Cv::CV74_INPUT)); + addInput(createInput<Port24>(cv84InputPosition, module, Matrix88Cv::CV84_INPUT)); + addInput(createInput<Port24>(cv15InputPosition, module, Matrix88Cv::CV15_INPUT)); + addInput(createInput<Port24>(cv25InputPosition, module, Matrix88Cv::CV25_INPUT)); + addInput(createInput<Port24>(cv35InputPosition, module, Matrix88Cv::CV35_INPUT)); + addInput(createInput<Port24>(cv45InputPosition, module, Matrix88Cv::CV45_INPUT)); + addInput(createInput<Port24>(cv55InputPosition, module, Matrix88Cv::CV55_INPUT)); + addInput(createInput<Port24>(cv65InputPosition, module, Matrix88Cv::CV65_INPUT)); + addInput(createInput<Port24>(cv75InputPosition, module, Matrix88Cv::CV75_INPUT)); + addInput(createInput<Port24>(cv85InputPosition, module, Matrix88Cv::CV85_INPUT)); + addInput(createInput<Port24>(cv16InputPosition, module, Matrix88Cv::CV16_INPUT)); + addInput(createInput<Port24>(cv26InputPosition, module, Matrix88Cv::CV26_INPUT)); + addInput(createInput<Port24>(cv36InputPosition, module, Matrix88Cv::CV36_INPUT)); + addInput(createInput<Port24>(cv46InputPosition, module, Matrix88Cv::CV46_INPUT)); + addInput(createInput<Port24>(cv56InputPosition, module, Matrix88Cv::CV56_INPUT)); + addInput(createInput<Port24>(cv66InputPosition, module, Matrix88Cv::CV66_INPUT)); + addInput(createInput<Port24>(cv76InputPosition, module, Matrix88Cv::CV76_INPUT)); + addInput(createInput<Port24>(cv86InputPosition, module, Matrix88Cv::CV86_INPUT)); + addInput(createInput<Port24>(cv17InputPosition, module, Matrix88Cv::CV17_INPUT)); + addInput(createInput<Port24>(cv27InputPosition, module, Matrix88Cv::CV27_INPUT)); + addInput(createInput<Port24>(cv37InputPosition, module, Matrix88Cv::CV37_INPUT)); + addInput(createInput<Port24>(cv47InputPosition, module, Matrix88Cv::CV47_INPUT)); + addInput(createInput<Port24>(cv57InputPosition, module, Matrix88Cv::CV57_INPUT)); + addInput(createInput<Port24>(cv67InputPosition, module, Matrix88Cv::CV67_INPUT)); + addInput(createInput<Port24>(cv77InputPosition, module, Matrix88Cv::CV77_INPUT)); + addInput(createInput<Port24>(cv87InputPosition, module, Matrix88Cv::CV87_INPUT)); + addInput(createInput<Port24>(cv18InputPosition, module, Matrix88Cv::CV18_INPUT)); + addInput(createInput<Port24>(cv28InputPosition, module, Matrix88Cv::CV28_INPUT)); + addInput(createInput<Port24>(cv38InputPosition, module, Matrix88Cv::CV38_INPUT)); + addInput(createInput<Port24>(cv48InputPosition, module, Matrix88Cv::CV48_INPUT)); + addInput(createInput<Port24>(cv58InputPosition, module, Matrix88Cv::CV58_INPUT)); + addInput(createInput<Port24>(cv68InputPosition, module, Matrix88Cv::CV68_INPUT)); + addInput(createInput<Port24>(cv78InputPosition, module, Matrix88Cv::CV78_INPUT)); + addInput(createInput<Port24>(cv88InputPosition, module, Matrix88Cv::CV88_INPUT)); + } +}; + +Model* modelMatrix88Cv = createModel<Matrix88Cv, Matrix88CvWidget>("Bogaudio-Matrix88Cv", "MX88CV", "CV expander for MATRIX88", "Mixer", "Expander", "Polyphonic"); diff --git a/src/Matrix88Cv.hpp b/src/Matrix88Cv.hpp @@ -0,0 +1,105 @@ +#pragma once + +#include "Matrix88_shared.hpp" + +namespace bogaudio { + +typedef ChainableExpanderModule<Matrix88ExpanderMessage, Matrix88Element, 1, BGModule> Matrix88CvBase; + +struct Matrix88Cv : Matrix88CvBase { + enum ParamsIds { + NUM_PARAMS + }; + + enum InputsIds { + CV11_INPUT, + CV21_INPUT, + CV31_INPUT, + CV41_INPUT, + CV51_INPUT, + CV61_INPUT, + CV71_INPUT, + CV81_INPUT, + CV12_INPUT, + CV22_INPUT, + CV32_INPUT, + CV42_INPUT, + CV52_INPUT, + CV62_INPUT, + CV72_INPUT, + CV82_INPUT, + CV13_INPUT, + CV23_INPUT, + CV33_INPUT, + CV43_INPUT, + CV53_INPUT, + CV63_INPUT, + CV73_INPUT, + CV83_INPUT, + CV14_INPUT, + CV24_INPUT, + CV34_INPUT, + CV44_INPUT, + CV54_INPUT, + CV64_INPUT, + CV74_INPUT, + CV84_INPUT, + CV15_INPUT, + CV25_INPUT, + CV35_INPUT, + CV45_INPUT, + CV55_INPUT, + CV65_INPUT, + CV75_INPUT, + CV85_INPUT, + CV16_INPUT, + CV26_INPUT, + CV36_INPUT, + CV46_INPUT, + CV56_INPUT, + CV66_INPUT, + CV76_INPUT, + CV86_INPUT, + CV17_INPUT, + CV27_INPUT, + CV37_INPUT, + CV47_INPUT, + CV57_INPUT, + CV67_INPUT, + CV77_INPUT, + CV87_INPUT, + CV18_INPUT, + CV28_INPUT, + CV38_INPUT, + CV48_INPUT, + CV58_INPUT, + CV68_INPUT, + CV78_INPUT, + CV88_INPUT, + NUM_INPUTS + }; + + enum OutputsIds { + NUM_OUTPUTS + }; + + Input** _cvs = NULL; + + Matrix88Cv() { + config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); + _cvs = new Input*[64]; + for (int i = 0; i < 64; ++i) { + _cvs[i] = &inputs[CV11_INPUT + i]; + } + setLocalElements({new Matrix88Element(NULL, _cvs)}); + setBaseModelPredicate([](Model* m) { return m == modelMatrix88 || m == modelMatrix88M; }); + setExpanderModelPredicate([](Model* m) { return m == modelMatrix88M; }); + } + virtual ~Matrix88Cv() { + delete[] _cvs; + } + + void processAlways(const ProcessArgs& args) override; +}; + +} // namespace bogaudio diff --git a/src/Matrix88M.cpp b/src/Matrix88M.cpp @@ -0,0 +1,165 @@ + +#include "Matrix88M.hpp" +#include "mixer.hpp" + +void Matrix88M::processAlways(const ProcessArgs& args) { + int position = 0; + int baseID = 0; + if (baseConnected()) { + Matrix88ExpanderMessage* bm = fromBase(); + baseID = bm->baseID; + position = bm->position; + } + setBaseIDAndPosition(baseID, position); + + if (expanderConnected()) { + Matrix88ExpanderMessage* te = toExpander(); + te->baseID = _baseID; + te->position = _position > 0 ? _position + 1 : 0; + } +} + +struct Matrix88MWidget : BGModuleWidget { + static constexpr int hp = 20; + + Matrix88MWidget(Matrix88M* module) { + setModule(module); + box.size = Vec(RACK_GRID_WIDTH * hp, RACK_GRID_HEIGHT); + setPanel(box.size, "Matrix88M"); + createScrews(); + + // generated by svg_widgets.rb + auto mute11ParamPosition = Vec(18.5, 33.0); + auto mute21ParamPosition = Vec(18.5, 70.0); + auto mute31ParamPosition = Vec(18.5, 107.0); + auto mute41ParamPosition = Vec(18.5, 144.0); + auto mute51ParamPosition = Vec(18.5, 181.0); + auto mute61ParamPosition = Vec(18.5, 218.0); + auto mute71ParamPosition = Vec(18.5, 255.0); + auto mute81ParamPosition = Vec(18.5, 292.0); + auto mute12ParamPosition = Vec(53.5, 33.0); + auto mute22ParamPosition = Vec(53.5, 70.0); + auto mute32ParamPosition = Vec(53.5, 107.0); + auto mute42ParamPosition = Vec(53.5, 144.0); + auto mute52ParamPosition = Vec(53.5, 181.0); + auto mute62ParamPosition = Vec(53.5, 218.0); + auto mute72ParamPosition = Vec(53.5, 255.0); + auto mute82ParamPosition = Vec(53.5, 292.0); + auto mute13ParamPosition = Vec(88.5, 33.0); + auto mute23ParamPosition = Vec(88.5, 70.0); + auto mute33ParamPosition = Vec(88.5, 107.0); + auto mute43ParamPosition = Vec(88.5, 144.0); + auto mute53ParamPosition = Vec(88.5, 181.0); + auto mute63ParamPosition = Vec(88.5, 218.0); + auto mute73ParamPosition = Vec(88.5, 255.0); + auto mute83ParamPosition = Vec(88.5, 292.0); + auto mute14ParamPosition = Vec(123.5, 33.0); + auto mute24ParamPosition = Vec(123.5, 70.0); + auto mute34ParamPosition = Vec(123.5, 107.0); + auto mute44ParamPosition = Vec(123.5, 144.0); + auto mute54ParamPosition = Vec(123.5, 181.0); + auto mute64ParamPosition = Vec(123.5, 218.0); + auto mute74ParamPosition = Vec(123.5, 255.0); + auto mute84ParamPosition = Vec(123.5, 292.0); + auto mute15ParamPosition = Vec(158.5, 33.0); + auto mute25ParamPosition = Vec(158.5, 70.0); + auto mute35ParamPosition = Vec(158.5, 107.0); + auto mute45ParamPosition = Vec(158.5, 144.0); + auto mute55ParamPosition = Vec(158.5, 181.0); + auto mute65ParamPosition = Vec(158.5, 218.0); + auto mute75ParamPosition = Vec(158.5, 255.0); + auto mute85ParamPosition = Vec(158.5, 292.0); + auto mute16ParamPosition = Vec(193.5, 33.0); + auto mute26ParamPosition = Vec(193.5, 70.0); + auto mute36ParamPosition = Vec(193.5, 107.0); + auto mute46ParamPosition = Vec(193.5, 144.0); + auto mute56ParamPosition = Vec(193.5, 181.0); + auto mute66ParamPosition = Vec(193.5, 218.0); + auto mute76ParamPosition = Vec(193.5, 255.0); + auto mute86ParamPosition = Vec(193.5, 292.0); + auto mute17ParamPosition = Vec(228.5, 33.0); + auto mute27ParamPosition = Vec(228.5, 70.0); + auto mute37ParamPosition = Vec(228.5, 107.0); + auto mute47ParamPosition = Vec(228.5, 144.0); + auto mute57ParamPosition = Vec(228.5, 181.0); + auto mute67ParamPosition = Vec(228.5, 218.0); + auto mute77ParamPosition = Vec(228.5, 255.0); + auto mute87ParamPosition = Vec(228.5, 292.0); + auto mute18ParamPosition = Vec(263.5, 33.0); + auto mute28ParamPosition = Vec(263.5, 70.0); + auto mute38ParamPosition = Vec(263.5, 107.0); + auto mute48ParamPosition = Vec(263.5, 144.0); + auto mute58ParamPosition = Vec(263.5, 181.0); + auto mute68ParamPosition = Vec(263.5, 218.0); + auto mute78ParamPosition = Vec(263.5, 255.0); + auto mute88ParamPosition = Vec(263.5, 292.0); + // end generated by svg_widgets.rb + + addParam(createParam<SoloMuteButton>(mute11ParamPosition, module, Matrix88M::MUTE11_PARAM)); + addParam(createParam<SoloMuteButton>(mute21ParamPosition, module, Matrix88M::MUTE21_PARAM)); + addParam(createParam<SoloMuteButton>(mute31ParamPosition, module, Matrix88M::MUTE31_PARAM)); + addParam(createParam<SoloMuteButton>(mute41ParamPosition, module, Matrix88M::MUTE41_PARAM)); + addParam(createParam<SoloMuteButton>(mute51ParamPosition, module, Matrix88M::MUTE51_PARAM)); + addParam(createParam<SoloMuteButton>(mute61ParamPosition, module, Matrix88M::MUTE61_PARAM)); + addParam(createParam<SoloMuteButton>(mute71ParamPosition, module, Matrix88M::MUTE71_PARAM)); + addParam(createParam<SoloMuteButton>(mute81ParamPosition, module, Matrix88M::MUTE81_PARAM)); + addParam(createParam<SoloMuteButton>(mute12ParamPosition, module, Matrix88M::MUTE12_PARAM)); + addParam(createParam<SoloMuteButton>(mute22ParamPosition, module, Matrix88M::MUTE22_PARAM)); + addParam(createParam<SoloMuteButton>(mute32ParamPosition, module, Matrix88M::MUTE32_PARAM)); + addParam(createParam<SoloMuteButton>(mute42ParamPosition, module, Matrix88M::MUTE42_PARAM)); + addParam(createParam<SoloMuteButton>(mute52ParamPosition, module, Matrix88M::MUTE52_PARAM)); + addParam(createParam<SoloMuteButton>(mute62ParamPosition, module, Matrix88M::MUTE62_PARAM)); + addParam(createParam<SoloMuteButton>(mute72ParamPosition, module, Matrix88M::MUTE72_PARAM)); + addParam(createParam<SoloMuteButton>(mute82ParamPosition, module, Matrix88M::MUTE82_PARAM)); + addParam(createParam<SoloMuteButton>(mute13ParamPosition, module, Matrix88M::MUTE13_PARAM)); + addParam(createParam<SoloMuteButton>(mute23ParamPosition, module, Matrix88M::MUTE23_PARAM)); + addParam(createParam<SoloMuteButton>(mute33ParamPosition, module, Matrix88M::MUTE33_PARAM)); + addParam(createParam<SoloMuteButton>(mute43ParamPosition, module, Matrix88M::MUTE43_PARAM)); + addParam(createParam<SoloMuteButton>(mute53ParamPosition, module, Matrix88M::MUTE53_PARAM)); + addParam(createParam<SoloMuteButton>(mute63ParamPosition, module, Matrix88M::MUTE63_PARAM)); + addParam(createParam<SoloMuteButton>(mute73ParamPosition, module, Matrix88M::MUTE73_PARAM)); + addParam(createParam<SoloMuteButton>(mute83ParamPosition, module, Matrix88M::MUTE83_PARAM)); + addParam(createParam<SoloMuteButton>(mute14ParamPosition, module, Matrix88M::MUTE14_PARAM)); + addParam(createParam<SoloMuteButton>(mute24ParamPosition, module, Matrix88M::MUTE24_PARAM)); + addParam(createParam<SoloMuteButton>(mute34ParamPosition, module, Matrix88M::MUTE34_PARAM)); + addParam(createParam<SoloMuteButton>(mute44ParamPosition, module, Matrix88M::MUTE44_PARAM)); + addParam(createParam<SoloMuteButton>(mute54ParamPosition, module, Matrix88M::MUTE54_PARAM)); + addParam(createParam<SoloMuteButton>(mute64ParamPosition, module, Matrix88M::MUTE64_PARAM)); + addParam(createParam<SoloMuteButton>(mute74ParamPosition, module, Matrix88M::MUTE74_PARAM)); + addParam(createParam<SoloMuteButton>(mute84ParamPosition, module, Matrix88M::MUTE84_PARAM)); + addParam(createParam<SoloMuteButton>(mute15ParamPosition, module, Matrix88M::MUTE15_PARAM)); + addParam(createParam<SoloMuteButton>(mute25ParamPosition, module, Matrix88M::MUTE25_PARAM)); + addParam(createParam<SoloMuteButton>(mute35ParamPosition, module, Matrix88M::MUTE35_PARAM)); + addParam(createParam<SoloMuteButton>(mute45ParamPosition, module, Matrix88M::MUTE45_PARAM)); + addParam(createParam<SoloMuteButton>(mute55ParamPosition, module, Matrix88M::MUTE55_PARAM)); + addParam(createParam<SoloMuteButton>(mute65ParamPosition, module, Matrix88M::MUTE65_PARAM)); + addParam(createParam<SoloMuteButton>(mute75ParamPosition, module, Matrix88M::MUTE75_PARAM)); + addParam(createParam<SoloMuteButton>(mute85ParamPosition, module, Matrix88M::MUTE85_PARAM)); + addParam(createParam<SoloMuteButton>(mute16ParamPosition, module, Matrix88M::MUTE16_PARAM)); + addParam(createParam<SoloMuteButton>(mute26ParamPosition, module, Matrix88M::MUTE26_PARAM)); + addParam(createParam<SoloMuteButton>(mute36ParamPosition, module, Matrix88M::MUTE36_PARAM)); + addParam(createParam<SoloMuteButton>(mute46ParamPosition, module, Matrix88M::MUTE46_PARAM)); + addParam(createParam<SoloMuteButton>(mute56ParamPosition, module, Matrix88M::MUTE56_PARAM)); + addParam(createParam<SoloMuteButton>(mute66ParamPosition, module, Matrix88M::MUTE66_PARAM)); + addParam(createParam<SoloMuteButton>(mute76ParamPosition, module, Matrix88M::MUTE76_PARAM)); + addParam(createParam<SoloMuteButton>(mute86ParamPosition, module, Matrix88M::MUTE86_PARAM)); + addParam(createParam<SoloMuteButton>(mute17ParamPosition, module, Matrix88M::MUTE17_PARAM)); + addParam(createParam<SoloMuteButton>(mute27ParamPosition, module, Matrix88M::MUTE27_PARAM)); + addParam(createParam<SoloMuteButton>(mute37ParamPosition, module, Matrix88M::MUTE37_PARAM)); + addParam(createParam<SoloMuteButton>(mute47ParamPosition, module, Matrix88M::MUTE47_PARAM)); + addParam(createParam<SoloMuteButton>(mute57ParamPosition, module, Matrix88M::MUTE57_PARAM)); + addParam(createParam<SoloMuteButton>(mute67ParamPosition, module, Matrix88M::MUTE67_PARAM)); + addParam(createParam<SoloMuteButton>(mute77ParamPosition, module, Matrix88M::MUTE77_PARAM)); + addParam(createParam<SoloMuteButton>(mute87ParamPosition, module, Matrix88M::MUTE87_PARAM)); + addParam(createParam<SoloMuteButton>(mute18ParamPosition, module, Matrix88M::MUTE18_PARAM)); + addParam(createParam<SoloMuteButton>(mute28ParamPosition, module, Matrix88M::MUTE28_PARAM)); + addParam(createParam<SoloMuteButton>(mute38ParamPosition, module, Matrix88M::MUTE38_PARAM)); + addParam(createParam<SoloMuteButton>(mute48ParamPosition, module, Matrix88M::MUTE48_PARAM)); + addParam(createParam<SoloMuteButton>(mute58ParamPosition, module, Matrix88M::MUTE58_PARAM)); + addParam(createParam<SoloMuteButton>(mute68ParamPosition, module, Matrix88M::MUTE68_PARAM)); + addParam(createParam<SoloMuteButton>(mute78ParamPosition, module, Matrix88M::MUTE78_PARAM)); + addParam(createParam<SoloMuteButton>(mute88ParamPosition, module, Matrix88M::MUTE88_PARAM)); + } +}; + +Model* modelMatrix88M = createModel<Matrix88M, Matrix88MWidget>("Bogaudio-Matrix88M", "MX88M", "Mutes expander for MATRIX88", "Mixer", "Expander", "Polyphonic"); diff --git a/src/Matrix88M.hpp b/src/Matrix88M.hpp @@ -0,0 +1,177 @@ +#pragma once + +#include "Matrix88_shared.hpp" + +namespace bogaudio { + +typedef ChainableExpanderModule<Matrix88ExpanderMessage, Matrix88Element, 1, BGModule> Matrix88MBase; + +struct Matrix88M : Matrix88MBase { + enum ParamsIds { + MUTE11_PARAM, + MUTE21_PARAM, + MUTE31_PARAM, + MUTE41_PARAM, + MUTE51_PARAM, + MUTE61_PARAM, + MUTE71_PARAM, + MUTE81_PARAM, + MUTE12_PARAM, + MUTE22_PARAM, + MUTE32_PARAM, + MUTE42_PARAM, + MUTE52_PARAM, + MUTE62_PARAM, + MUTE72_PARAM, + MUTE82_PARAM, + MUTE13_PARAM, + MUTE23_PARAM, + MUTE33_PARAM, + MUTE43_PARAM, + MUTE53_PARAM, + MUTE63_PARAM, + MUTE73_PARAM, + MUTE83_PARAM, + MUTE14_PARAM, + MUTE24_PARAM, + MUTE34_PARAM, + MUTE44_PARAM, + MUTE54_PARAM, + MUTE64_PARAM, + MUTE74_PARAM, + MUTE84_PARAM, + MUTE15_PARAM, + MUTE25_PARAM, + MUTE35_PARAM, + MUTE45_PARAM, + MUTE55_PARAM, + MUTE65_PARAM, + MUTE75_PARAM, + MUTE85_PARAM, + MUTE16_PARAM, + MUTE26_PARAM, + MUTE36_PARAM, + MUTE46_PARAM, + MUTE56_PARAM, + MUTE66_PARAM, + MUTE76_PARAM, + MUTE86_PARAM, + MUTE17_PARAM, + MUTE27_PARAM, + MUTE37_PARAM, + MUTE47_PARAM, + MUTE57_PARAM, + MUTE67_PARAM, + MUTE77_PARAM, + MUTE87_PARAM, + MUTE18_PARAM, + MUTE28_PARAM, + MUTE38_PARAM, + MUTE48_PARAM, + MUTE58_PARAM, + MUTE68_PARAM, + MUTE78_PARAM, + MUTE88_PARAM, + NUM_PARAMS + }; + + enum InputsIds { + NUM_INPUTS + }; + + enum OutputsIds { + NUM_OUTPUTS + }; + + Param** _mutes = NULL; + + Matrix88M() { + config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); + configParam(MUTE11_PARAM, 0.0f, 3.0f, 0.0f, "Mute 1A"); + configParam(MUTE21_PARAM, 0.0f, 3.0f, 0.0f, "Mute 2A"); + configParam(MUTE31_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3A"); + configParam(MUTE41_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4A"); + configParam(MUTE51_PARAM, 0.0f, 3.0f, 0.0f, "Mute 5A"); + configParam(MUTE61_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6A"); + configParam(MUTE71_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7A"); + configParam(MUTE81_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8A"); + + configParam(MUTE12_PARAM, 0.0f, 3.0f, 0.0f, "Mute 1B"); + configParam(MUTE22_PARAM, 0.0f, 3.0f, 0.0f, "Mute 2B"); + configParam(MUTE32_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3B"); + configParam(MUTE42_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4B"); + configParam(MUTE52_PARAM, 0.0f, 3.0f, 0.0f, "Mute 5B"); + configParam(MUTE62_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6B"); + configParam(MUTE72_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7B"); + configParam(MUTE82_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8B"); + + configParam(MUTE13_PARAM, 0.0f, 3.0f, 0.0f, "Mute 1C"); + configParam(MUTE23_PARAM, 0.0f, 3.0f, 0.0f, "Mute 2C"); + configParam(MUTE33_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3C"); + configParam(MUTE43_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4C"); + configParam(MUTE53_PARAM, 0.0f, 3.0f, 0.0f, "Mute 5C"); + configParam(MUTE63_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6C"); + configParam(MUTE73_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7C"); + configParam(MUTE83_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8C"); + + configParam(MUTE14_PARAM, 0.0f, 3.0f, 0.0f, "Mute 1D"); + configParam(MUTE24_PARAM, 0.0f, 3.0f, 0.0f, "Mute 2D"); + configParam(MUTE34_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3D"); + configParam(MUTE44_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4D"); + configParam(MUTE54_PARAM, 0.0f, 3.0f, 0.0f, "Mute 5D"); + configParam(MUTE64_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6D"); + configParam(MUTE74_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7D"); + configParam(MUTE84_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8D"); + + configParam(MUTE15_PARAM, 0.0f, 3.0f, 0.0f, "Mute 1E"); + configParam(MUTE25_PARAM, 0.0f, 3.0f, 0.0f, "Mute 2E"); + configParam(MUTE35_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3E"); + configParam(MUTE45_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4E"); + configParam(MUTE55_PARAM, 0.0f, 3.0f, 0.0f, "Mute 5E"); + configParam(MUTE65_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6E"); + configParam(MUTE75_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7E"); + configParam(MUTE85_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8E"); + + configParam(MUTE16_PARAM, 0.0f, 3.0f, 0.0f, "Mute 1F"); + configParam(MUTE26_PARAM, 0.0f, 3.0f, 0.0f, "Mute 2F"); + configParam(MUTE36_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3F"); + configParam(MUTE46_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4F"); + configParam(MUTE56_PARAM, 0.0f, 3.0f, 0.0f, "Mute 5F"); + configParam(MUTE66_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6F"); + configParam(MUTE76_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7F"); + configParam(MUTE86_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8F"); + + configParam(MUTE17_PARAM, 0.0f, 3.0f, 0.0f, "Mute 1G"); + configParam(MUTE27_PARAM, 0.0f, 3.0f, 0.0f, "Mute 2G"); + configParam(MUTE37_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3G"); + configParam(MUTE47_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4G"); + configParam(MUTE57_PARAM, 0.0f, 3.0f, 0.0f, "Mute 5G"); + configParam(MUTE67_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6G"); + configParam(MUTE77_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7G"); + configParam(MUTE87_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8G"); + + configParam(MUTE18_PARAM, 0.0f, 3.0f, 0.0f, "Mute 1H"); + configParam(MUTE28_PARAM, 0.0f, 3.0f, 0.0f, "Mute 2H"); + configParam(MUTE38_PARAM, 0.0f, 3.0f, 0.0f, "Mute 3H"); + configParam(MUTE48_PARAM, 0.0f, 3.0f, 0.0f, "Mute 4H"); + configParam(MUTE58_PARAM, 0.0f, 3.0f, 0.0f, "Mute 5H"); + configParam(MUTE68_PARAM, 0.0f, 3.0f, 0.0f, "Mute 6H"); + configParam(MUTE78_PARAM, 0.0f, 3.0f, 0.0f, "Mute 7H"); + configParam(MUTE88_PARAM, 0.0f, 3.0f, 0.0f, "Mute 8H"); + + _mutes = new Param*[64]; + for (int i = 0; i < 64; ++i) { + _mutes[i] = &params[MUTE11_PARAM + i]; + } + setLocalElements({new Matrix88Element(_mutes, NULL)}); + setBaseModelPredicate([](Model* m) { return m == modelMatrix88 || m == modelMatrix88Cv; }); + setExpanderModelPredicate([](Model* m) { return m == modelMatrix88Cv; }); + } + virtual ~Matrix88M() { + delete[] _mutes; + } + + void processAlways(const ProcessArgs& args) override; +}; + +} // namespace bogaudio diff --git a/src/Matrix88_shared.hpp b/src/Matrix88_shared.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include "bogaudio.hpp" +#include "matrix_base.hpp" +#include "expanders.hpp" + +extern Model* modelMatrix88; +extern Model* modelMatrix88Cv; +extern Model* modelMatrix88M; + +namespace bogaudio { + +typedef ChainableExpanderMessage Matrix88ExpanderMessage; + +struct Matrix88Element { + Param** mutes; + Input** cvs; + + Matrix88Element( + Param** mutes, + Input** cvs + ) + : mutes(mutes) + , cvs(cvs) + {} +}; + +typedef ChainableRegistry<Matrix88Element, 1> Matrix88Registry; + +} // namespace bogaudio diff --git a/src/bogaudio.cpp b/src/bogaudio.cpp @@ -50,6 +50,8 @@ #include "Matrix44Cvm.hpp" #include "Matrix81.hpp" #include "Matrix88.hpp" +#include "Matrix88Cv.hpp" +#include "Matrix88M.hpp" #include "MegaGate.hpp" #include "Mix1.hpp" #include "Mix2.hpp" @@ -191,6 +193,8 @@ void init(rack::Plugin *p) { p->addModel(modelMatrix44); p->addModel(modelMatrix44Cvm); p->addModel(modelMatrix88); + p->addModel(modelMatrix88Cv); + p->addModel(modelMatrix88M); p->addModel(modelSwitch81); p->addModel(modelSwitch18); p->addModel(modelSwitch44);