Browse Source

Add Audio-2 WIP.

tags/v2.0.0
Andrew Belt 4 years ago
parent
commit
ae21a4c70d
9 changed files with 671 additions and 28 deletions
  1. +8
    -0
      Core.json
  2. +8
    -0
      include/app/AudioWidget.hpp
  3. +6
    -0
      include/componentlibrary.hpp
  4. +71
    -0
      res/ComponentLibrary/RoundBigBlackKnob.svg
  5. +451
    -0
      res/Core/AudioInterface2.svg
  6. +10
    -0
      src/app/AudioWidget.cpp
  7. +115
    -28
      src/core/AudioInterface.cpp
  8. +1
    -0
      src/core/plugin.cpp
  9. +1
    -0
      src/core/plugin.hpp

+ 8
- 0
Core.json View File

@@ -13,6 +13,14 @@
"donateUrl": "", "donateUrl": "",
"description": "Necessary modules built into VCV Rack", "description": "Necessary modules built into VCV Rack",
"modules": [ "modules": [
{
"slug": "AudioInterface2",
"name": "Audio-2",
"description": "Sends audio and CV to/from an audio device",
"tags": [
"External"
]
},
{ {
"slug": "AudioInterface", "slug": "AudioInterface",
"name": "Audio-8", "name": "Audio-8",


+ 8
- 0
include/app/AudioWidget.hpp View File

@@ -9,6 +9,7 @@ namespace rack {
namespace app { namespace app {




/** Designed for Audio-8 and Audio-16 module. */
struct AudioWidget : LedDisplay { struct AudioWidget : LedDisplay {
LedDisplayChoice* driverChoice; LedDisplayChoice* driverChoice;
LedDisplaySeparator* driverSeparator; LedDisplaySeparator* driverSeparator;
@@ -21,6 +22,13 @@ struct AudioWidget : LedDisplay {
}; };




/** Designed for Audio-2 module. */
struct AudioDeviceWidget : LedDisplay {
LedDisplayChoice* deviceChoice;
void setAudioPort(audio::Port* port);
};


/** Appends menu items to the given menu with driver, device, etc. /** Appends menu items to the given menu with driver, device, etc.
Useful alternative to putting an AudioWidget on your module's panel. Useful alternative to putting an AudioWidget on your module's panel.
*/ */


+ 6
- 0
include/componentlibrary.hpp View File

@@ -236,6 +236,12 @@ struct RoundLargeBlackKnob : RoundKnob {
} }
}; };


struct RoundBigBlackKnob : RoundKnob {
RoundBigBlackKnob() {
setSvg(APP->window->loadSvg(asset::system("res/ComponentLibrary/RoundBigBlackKnob.svg")));
}
};

struct RoundHugeBlackKnob : RoundKnob { struct RoundHugeBlackKnob : RoundKnob {
RoundHugeBlackKnob() { RoundHugeBlackKnob() {
setSvg(APP->window->loadSvg(asset::system("res/ComponentLibrary/RoundHugeBlackKnob.svg"))); setSvg(APP->window->loadSvg(asset::system("res/ComponentLibrary/RoundHugeBlackKnob.svg")));


+ 71
- 0
res/ComponentLibrary/RoundBigBlackKnob.svg View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="15.875mm"
height="15.875003mm"
viewBox="0 0 15.875 15.875003"
version="1.1"
id="svg52164"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="BlackKnob.svg">
<defs
id="defs52158" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="29.110815"
inkscape:cy="14.88916"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1600"
inkscape:window-height="879"
inkscape:window-x="0"
inkscape:window-y="21"
inkscape:window-maximized="1" />
<metadata
id="metadata52161">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-132.66964,-87.979167)">
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277778"
d="m 148.54464,95.916667 c 0,4.383543 -3.55395,7.937503 -7.9375,7.937503 -4.38354,0 -7.9375,-3.55396 -7.9375,-7.937503 0,-4.383539 3.55396,-7.9375 7.9375,-7.9375 4.38355,0 7.9375,3.553961 7.9375,7.9375"
id="path51525" />
<path
inkscape:connector-curvature="0"
style="fill:#fdfdfd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.35277778"
d="m 140.87035,88.009485 c -0.0854,-0.0193 -0.17226,-0.0303 -0.26321,-0.0303 -0.0909,0 -0.17776,0.01101 -0.26321,0.0303 v 8.006401 h 0.52642 z m 0,0"
id="path51527" />
</g>
</svg>

+ 451
- 0
res/Core/AudioInterface2.svg View File

@@ -0,0 +1,451 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="25.4mm"
height="128.50069mm"
viewBox="0 0 25.4 128.50069"
version="1.1"
id="svg26436"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="AudioInterface2.svg">
<defs
id="defs26430" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="37.514145"
inkscape:cy="240.1697"
inkscape:document-units="mm"
inkscape:current-layer="layer2"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-bbox="true"
inkscape:snap-bbox-midpoints="false"
inkscape:snap-nodes="false"
inkscape:snap-others="false"
inkscape:bbox-nodes="true"
inkscape:window-width="1600"
inkscape:window-height="900"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0" />
<metadata
id="metadata26433">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-70.454762,-51.321088)">
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="M 70.547091,51.414796 H 95.761054 V 179.72806 H 70.547091 Z m 0,0"
id="path14553" />
<path
inkscape:connector-curvature="0"
style="fill:#ababab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 95.854762,51.321088 h -25.4 V 179.82177 h 25.4 z M 95.667349,179.63436 H 70.640796 V 51.508501 h 25.026553 z m 0,0"
id="path14555" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:0.23495001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
d="M 77.15065,145.57477 H 89.157497"
id="path18575" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 73.029962,139.50875 c 0,0.0827 0.06615,0.14332 0.143316,0.14332 h 0.86541 c 0.07166,0 0.132292,-0.0551 0.132292,-0.12679 0,-0.0717 -0.06064,-0.13229 -0.132292,-0.13229 h -0.722094 v -1.21818 c 0,-0.0772 -0.06615,-0.13781 -0.143316,-0.13781 -0.07717,0 -0.143316,0.0606 -0.143316,0.13781 z m 0,0"
id="path25949" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 74.345393,139.8505 c 0,0.0606 0.04961,0.10473 0.110243,0.10473 0.0441,0 0.07717,-0.022 0.09922,-0.0606 l 0.937066,-1.92374 c 0.0055,-0.011 0.01101,-0.0331 0.01101,-0.0551 0,-0.0551 -0.0441,-0.10473 -0.104733,-0.10473 -0.0441,0 -0.08268,0.022 -0.09922,0.0661 l -0.942576,1.91823 c -0.0055,0.0165 -0.01101,0.0331 -0.01101,0.0551 z m 0,0"
id="path25957" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 75.783005,139.52528 c 0,0.0772 0.06063,0.13781 0.137805,0.13781 0.08268,0 0.143316,-0.0606 0.143316,-0.13781 v -0.95911 l 0.385851,0.58429 c 0.03305,0.0441 0.07166,0.0717 0.121267,0.0717 0.04961,0 0.0882,-0.0275 0.115754,-0.0717 l 0.391364,-0.5898 v 0.96462 c 0,0.0717 0.06615,0.13781 0.143316,0.13781 0.07717,0 0.143316,-0.0606 0.143316,-0.13781 v -1.34496 c 0,-0.0772 -0.06615,-0.14332 -0.143316,-0.14332 h -0.03305 c -0.05512,0 -0.09371,0.0275 -0.126781,0.0717 l -0.48507,0.76619 -0.490579,-0.76068 c -0.02755,-0.0441 -0.06615,-0.0772 -0.126782,-0.0772 h -0.03306 c -0.07717,0 -0.143316,0.0661 -0.143316,0.14332 z m 0,0"
id="path25953" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 78.61157,139.67962 c 0.496094,0 0.843361,-0.38033 0.843361,-0.83233 0,-0.45199 -0.341753,-0.82682 -0.837847,-0.82682 -0.490583,0 -0.837847,0.37483 -0.837847,0.82682 v 0.006 c 0,0.452 0.341753,0.82682 0.832333,0.82682 z m 0.0055,-0.25906 c -0.319705,0 -0.545705,-0.25908 -0.545705,-0.57327 0,-0.31419 0.226,-0.56775 0.540191,-0.56775 0.319705,0 0.545705,0.25907 0.545705,0.56775 v 0.006 c 0,0.3142 -0.220486,0.56775 -0.540191,0.56775 z m 0,0"
id="path25961" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 79.866482,139.52528 c 0,0.0772 0.06615,0.13781 0.143316,0.13781 0.07717,0 0.137805,-0.0606 0.137805,-0.13781 v -1.01974 l 0.826824,1.06935 c 0.03858,0.0496 0.07717,0.0882 0.143315,0.0882 h 0.01101 c 0.07717,0 0.137802,-0.0662 0.137802,-0.14331 v -1.34496 c 0,-0.0772 -0.06063,-0.13781 -0.137802,-0.13781 -0.07717,0 -0.137806,0.0606 -0.137806,0.13781 v 0.98667 l -0.804777,-1.04179 c -0.03858,-0.0496 -0.07717,-0.0827 -0.143316,-0.0827 h -0.03305 c -0.07717,0 -0.143316,0.0661 -0.143316,0.14331 z m 0,0"
id="path25965" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 85.520236,139.52528 c 0,0.0772 0.06615,0.13781 0.143316,0.13781 0.07717,0 0.143316,-0.0606 0.143316,-0.13781 v -0.43545 h 0.352778 l 0.391364,0.5016 c 0.03306,0.0441 0.07166,0.0717 0.137802,0.0717 0.06615,0 0.132292,-0.0496 0.132292,-0.13229 0,-0.0441 -0.01654,-0.0717 -0.0441,-0.10473 l -0.308681,-0.38586 c 0.214976,-0.0717 0.363802,-0.22599 0.363802,-0.47955 v -0.006 c 0,-0.14332 -0.0441,-0.25907 -0.132291,-0.34726 -0.09922,-0.0992 -0.25907,-0.15986 -0.463021,-0.15986 h -0.573261 c -0.07717,0 -0.143316,0.0606 -0.143316,0.14332 z m 0.286632,-0.6835 v -0.54019 h 0.407899 c 0.209462,0 0.330729,0.0937 0.330729,0.27009 0,0.16537 -0.126777,0.2701 -0.330729,0.2701 z m 0,0"
id="path25969" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 87.268261,139.52528 c 0,0.0772 0.06614,0.13781 0.143316,0.13781 0.07717,0 0.143315,-0.0606 0.143315,-0.13781 v -1.35047 c 0,-0.0772 -0.06614,-0.13781 -0.143315,-0.13781 -0.07717,0 -0.143316,0.0606 -0.143316,0.13781 z m 0,0"
id="path25973" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 88.805123,139.67962 c 0.237021,0 0.429948,-0.0827 0.56775,-0.17638 0.06615,-0.0386 0.09922,-0.0992 0.09922,-0.17639 v -0.42995 c 0,-0.0772 -0.06063,-0.14332 -0.143317,-0.14332 h -0.446482 c -0.06615,0 -0.126781,0.0551 -0.126781,0.12678 0,0.0661 0.06063,0.12127 0.126781,0.12127 h 0.319705 v 0.29766 c -0.09922,0.0772 -0.237025,0.12127 -0.391365,0.12127 -0.325215,0 -0.545701,-0.24254 -0.545701,-0.57327 0,-0.30868 0.225996,-0.56775 0.523653,-0.56775 0.170878,0 0.286632,0.0496 0.38585,0.12678 0.02755,0.0165 0.05512,0.0331 0.08819,0.0331 0.07717,0 0.143316,-0.0661 0.143316,-0.14332 0,-0.0551 -0.03306,-0.0937 -0.06063,-0.11575 -0.143316,-0.10473 -0.308681,-0.15985 -0.545705,-0.15985 -0.48507,0 -0.826823,0.38033 -0.826823,0.82682 v 0.005 c 0,0.46854 0.325219,0.82682 0.832337,0.82682 z m 0,0"
id="path25977" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 89.919696,139.52528 c 0,0.0772 0.06615,0.13781 0.143316,0.13781 0.07717,0 0.143316,-0.0606 0.143316,-0.13781 v -0.55121 h 0.766191 v 0.55121 c 0,0.0772 0.06063,0.13781 0.137802,0.13781 0.07717,0 0.143316,-0.0606 0.143316,-0.13781 v -1.35047 c 0,-0.0772 -0.06615,-0.13781 -0.143316,-0.13781 -0.07717,0 -0.137802,0.0606 -0.137802,0.13781 v 0.54019 h -0.766191 v -0.54019 c 0,-0.0772 -0.06615,-0.13781 -0.143316,-0.13781 -0.07717,0 -0.143316,0.0606 -0.143316,0.13781 z m 0,0"
id="path25985" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 92.114323,139.52528 c 0,0.0772 0.06615,0.13781 0.143316,0.13781 0.07717,0 0.143316,-0.0606 0.143316,-0.13781 v -1.21818 h 0.391364 c 0.07166,0 0.126778,-0.0606 0.126778,-0.12678 0,-0.0717 -0.05512,-0.13229 -0.126778,-0.13229 h -1.069357 c -0.07166,0 -0.126781,0.0606 -0.126781,0.13229 0,0.0661 0.05512,0.12678 0.126781,0.12678 h 0.391361 z m 0,0"
id="path25981" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 75.926966,60.605556 c 0,0.170879 0.126778,0.308681 0.297657,0.308681 0.137802,0 0.248045,-0.07717 0.303166,-0.203948 l 0.203952,-0.490583 h 1.306378 l 0.198438,0.468535 c 0.06063,0.132291 0.159854,0.225996 0.314194,0.225996 0.170875,0 0.308681,-0.143316 0.308681,-0.314191 0,-0.0441 -0.01101,-0.08819 -0.03306,-0.132292 l -1.036285,-2.331642 c -0.07166,-0.159851 -0.198438,-0.259069 -0.374827,-0.259069 h -0.03859 c -0.176389,0 -0.30868,0.09922 -0.380337,0.259069 l -1.030774,2.331642 c -0.02205,0.0441 -0.03858,0.0937 -0.03858,0.137802 z m 1.047309,-0.959114 0.41341,-0.975649 0.407899,0.975649 z m 0,0"
id="path25989" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 80.51566,60.930775 c 0.79375,0 1.300868,-0.435462 1.300868,-1.333941 v -1.372528 c 0,-0.181899 -0.148826,-0.325215 -0.330729,-0.325215 -0.181899,0 -0.325215,0.143316 -0.325215,0.325215 v 1.394577 c 0,0.474045 -0.242535,0.711066 -0.63941,0.711066 -0.396875,0 -0.63941,-0.248045 -0.63941,-0.727604 v -1.378039 c 0,-0.181899 -0.143316,-0.325215 -0.325219,-0.325215 -0.181899,0 -0.325215,0.143316 -0.325215,0.325215 v 1.394577 c 0,0.87092 0.485069,1.311892 1.28433,1.311892 z m 0,0"
id="path25993" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 82.544838,60.561459 c 0,0.181903 0.143316,0.325219 0.325219,0.325219 h 0.826822 c 0.931553,0 1.576476,-0.650434 1.576476,-1.482771 v -0.0055 c 0,-0.837847 -0.644923,-1.477257 -1.576476,-1.477257 h -0.826822 c -0.181903,0 -0.325219,0.148827 -0.325219,0.330729 z m 0.650434,-0.264583 v -1.785937 h 0.501607 c 0.534678,0 0.892969,0.369316 0.892969,0.892968 v 0.01101 c 0,0.523657 -0.358291,0.881945 -0.892969,0.881945 z m 0,0"
id="path26005" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 85.891334,60.583508 c 0,0.181903 0.143316,0.330729 0.325215,0.330729 0.181903,0 0.325219,-0.148826 0.325219,-0.330729 v -2.359202 c 0,-0.181899 -0.143316,-0.325215 -0.325219,-0.325215 -0.181899,0 -0.325215,0.143316 -0.325215,0.325215 z m 0,0"
id="path26001" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 88.733311,60.936286 c 0.915018,0 1.576476,-0.689018 1.576476,-1.532379 v -0.0055 c 0,-0.843361 -0.655948,-1.526868 -1.570965,-1.526868 -0.915018,0 -1.576476,0.689021 -1.576476,1.532379 v 0.01101 c 0,0.843361 0.655948,1.521354 1.570965,1.521354 z m 0.0055,-0.600823 c -0.523653,0 -0.89848,-0.424438 -0.89848,-0.931556 v -0.0055 c 0,-0.507118 0.363803,-0.926041 0.892969,-0.926041 0.523653,0 0.892969,0.424434 0.892969,0.931552 v 0.01101 c 0,0.507118 -0.363802,0.920531 -0.887458,0.920531 z m 0,0"
id="path25997" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 93.995789,155.74055 c 0,-0.54983 -0.450621,-1.00045 -1.000457,-1.00045 h -7.682565 c -0.549835,0 -0.999077,0.45062 -0.999077,1.00045 v 12.17359 c 0,0.54846 0.449242,0.99908 0.999077,0.99908 h 7.682565 c 0.549836,0 1.000457,-0.45062 1.000457,-0.99908 z m 0,0"
id="path18629" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 81.995831,155.74055 c 0,-0.54983 -0.450617,-1.00045 -1.000457,-1.00045 h -7.682562 c -0.549835,0 -0.999077,0.45062 -0.999077,1.00045 v 12.17359 c 0,0.54846 0.449242,0.99908 0.999077,0.99908 h 7.682562 c 0.54984,0 1.000457,-0.45062 1.000457,-0.99908 z m 0,0"
id="path18631" />
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 74.251261,157.65131 c 0,0.0992 0.07717,0.17639 0.176389,0.17639 h 0.832337 c 0.08819,0 0.159851,-0.0717 0.159851,-0.15986 0,-0.0882 -0.07166,-0.15985 -0.159851,-0.15985 h -0.655948 v -1.12448 c 0,-0.0992 -0.07717,-0.17638 -0.176389,-0.17638 -0.09922,0 -0.176389,0.0772 -0.176389,0.17638 z m 0,0"
id="path26013" />
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 75.902085,157.8277 h 0.898483 c 0.08819,0 0.15985,-0.0661 0.15985,-0.15434 0,-0.0882 -0.07166,-0.15985 -0.15985,-0.15985 h -0.722094 v -0.33625 h 0.61185 c 0.08268,0 0.154341,-0.0717 0.154341,-0.15433 0,-0.0882 -0.07166,-0.15986 -0.154341,-0.15986 h -0.61185 v -0.32522 h 0.711069 c 0.08819,0 0.159851,-0.0717 0.159851,-0.15434 0,-0.0882 -0.07166,-0.15985 -0.159851,-0.15985 h -0.887458 c -0.09922,0 -0.176389,0.0772 -0.176389,0.17639 v 1.25126 c 0,0.0992 0.07717,0.17639 0.176389,0.17639 z m 0,0"
id="path26009" />
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 77.342985,157.66233 c 0,0.0992 0.07717,0.17639 0.176388,0.17639 0.09922,0 0.176389,-0.0772 0.176389,-0.17639 v -0.45751 h 0.617361 c 0.09371,0 0.159855,-0.0717 0.159855,-0.15985 0,-0.0882 -0.06615,-0.15985 -0.159855,-0.15985 h -0.617361 v -0.34175 h 0.722094 c 0.08819,0 0.159851,-0.0717 0.159851,-0.15986 0,-0.0882 -0.07166,-0.15985 -0.159851,-0.15985 h -0.898483 c -0.09922,0 -0.176388,0.0772 -0.176388,0.17639 z m 0,0"
id="path26017" />
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 79.327539,157.66233 c 0,0.0992 0.07717,0.17639 0.176389,0.17639 0.09922,0 0.176389,-0.0772 0.176389,-0.17639 v -1.11345 h 0.336243 c 0.0937,0 0.165365,-0.0717 0.165365,-0.16537 0,-0.0882 -0.07166,-0.15985 -0.165365,-0.15985 h -1.030774 c -0.08819,0 -0.159851,0.0717 -0.159851,0.15985 0,0.0937 0.07166,0.16537 0.159851,0.16537 h 0.341753 z m 0,0"
id="path26021" />
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 85.475768,157.66233 c 0,0.0992 0.07717,0.17639 0.176389,0.17639 0.09922,0 0.176389,-0.0772 0.176389,-0.17639 v -0.34726 h 0.281122 l 0.347264,0.43546 c 0.03859,0.0496 0.09371,0.0882 0.170878,0.0882 0.08819,0 0.170875,-0.0606 0.170875,-0.15985 0,-0.0551 -0.02755,-0.0937 -0.06063,-0.1378 l -0.242535,-0.29766 c 0.192924,-0.0772 0.319705,-0.23702 0.319705,-0.48507 v -0.006 c 0,-0.15434 -0.04961,-0.27561 -0.137805,-0.36931 -0.104729,-0.10474 -0.264584,-0.15986 -0.468531,-0.15986 h -0.55673 c -0.09922,0 -0.176389,0.0772 -0.176389,0.17639 z m 0.352778,-0.66145 v -0.45751 h 0.352778 c 0.170878,0 0.275608,0.0772 0.275608,0.22599 v 0.006 c 0,0.1378 -0.09922,0.226 -0.270094,0.226 z m 0,0"
id="path26025" />
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 87.230669,157.66233 c 0,0.0992 0.07717,0.17639 0.176388,0.17639 0.09922,0 0.176389,-0.0772 0.176389,-0.17639 v -1.27882 c 0,-0.0992 -0.07717,-0.17638 -0.176389,-0.17638 -0.09922,0 -0.176388,0.0772 -0.176388,0.17638 z m 0,0"
id="path26029" />
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 88.820045,157.85526 c 0.242535,0 0.429948,-0.0827 0.56224,-0.15985 0.08268,-0.0496 0.126781,-0.12127 0.126781,-0.226 v -0.39136 c 0,-0.0992 -0.08268,-0.17639 -0.181903,-0.17639 h -0.402385 c -0.08268,0 -0.15434,0.0717 -0.15434,0.15434 0,0.0882 0.07166,0.15434 0.15434,0.15434 h 0.242535 v 0.22599 c -0.09371,0.0661 -0.203952,0.0992 -0.336243,0.0992 -0.281118,0 -0.48507,-0.21497 -0.48507,-0.51262 0,-0.27561 0.203952,-0.50161 0.463021,-0.50161 0.14883,0 0.253559,0.0386 0.347267,0.11024 0.02755,0.0165 0.06063,0.0386 0.110243,0.0386 0.0937,0 0.170875,-0.0827 0.170875,-0.17639 0,-0.0717 -0.03858,-0.11576 -0.07166,-0.14332 -0.143316,-0.0992 -0.30317,-0.15434 -0.545705,-0.15434 -0.485069,0 -0.843357,0.37483 -0.843357,0.82683 v 0.005 c 0,0.47404 0.341753,0.82682 0.843357,0.82682 z m 0,0"
id="path26033" />
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 89.932322,157.66233 c 0,0.0992 0.07717,0.17639 0.176389,0.17639 0.09922,0 0.176388,-0.0772 0.176388,-0.17639 v -0.47955 h 0.650435 v 0.47955 c 0,0.0992 0.07717,0.17639 0.176388,0.17639 0.09922,0 0.176389,-0.0772 0.176389,-0.17639 v -1.27882 c 0,-0.0992 -0.07717,-0.17638 -0.176389,-0.17638 -0.09922,0 -0.176388,0.0772 -0.176388,0.17638 v 0.47405 h -0.650435 v -0.47405 c 0,-0.0992 -0.07717,-0.17638 -0.176388,-0.17638 -0.09922,0 -0.176389,0.0772 -0.176389,0.17638 z m 0,0"
id="path26041" />
<path
inkscape:connector-curvature="0"
style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 92.102611,157.66233 c 0,0.0992 0.07717,0.17639 0.176388,0.17639 0.09922,0 0.176389,-0.0772 0.176389,-0.17639 v -1.11345 h 0.336244 c 0.0937,0 0.165364,-0.0717 0.165364,-0.16537 0,-0.0882 -0.07166,-0.15985 -0.165364,-0.15985 h -1.030775 c -0.08819,0 -0.15985,0.0717 -0.15985,0.15985 0,0.0937 0.07166,0.16537 0.15985,0.16537 h 0.341754 z m 0,0"
id="path26037" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:0.23495001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
d="M 72.313735,152.27065 H 93.995788"
id="path18665" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:0.23495001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1"
d="M 72.313735,75.580077 H 93.995788"
id="path18667" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 78.208751,114.07307 c 0,0.11024 0.08268,0.19844 0.187413,0.19844 h 1.157552 c 0.0937,0 0.170875,-0.0772 0.170875,-0.17639 0,-0.0992 -0.07717,-0.1819 -0.170875,-0.1819 h -0.970139 v -1.68672 c 0,-0.11025 -0.08268,-0.19293 -0.187413,-0.19293 -0.104733,0 -0.187413,0.0827 -0.187413,0.19293 z m 0,0"
id="path26045" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 80.331294,114.27151 h 1.262282 c 0.09371,0 0.170879,-0.0772 0.170879,-0.17639 0,-0.0937 -0.07717,-0.17088 -0.170879,-0.17088 h -1.074868 v -0.60082 h 0.920528 c 0.09371,0 0.170878,-0.0717 0.170878,-0.17088 0,-0.0992 -0.07717,-0.17639 -0.170878,-0.17639 h -0.920528 v -0.57877 h 1.058334 c 0.0937,0 0.170874,-0.0772 0.170874,-0.17639 0,-0.0937 -0.07717,-0.17088 -0.170874,-0.17088 h -1.245748 c -0.104732,0 -0.187413,0.0827 -0.187413,0.19844 v 1.82452 c 0,0.11024 0.08268,0.19844 0.187413,0.19844 z m 0,0"
id="path26049" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 83.104798,114.30458 h 0.02205 c 0.110243,0 0.181899,-0.0606 0.220486,-0.15985 l 0.749653,-1.84106 c 0.01101,-0.022 0.02205,-0.0551 0.02205,-0.0827 0,-0.10474 -0.08268,-0.18742 -0.187414,-0.18742 -0.08819,0 -0.159854,0.0606 -0.181902,0.12678 l -0.628386,1.61506 -0.617361,-1.60404 c -0.02755,-0.0827 -0.0937,-0.1378 -0.192924,-0.1378 -0.104732,0 -0.187413,0.0827 -0.187413,0.18742 0,0.0386 0.0055,0.0661 0.02205,0.0937 l 0.749653,1.83003 c 0.03858,0.0992 0.110242,0.15986 0.209461,0.15986 z m 0,0"
id="path26057" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 84.734159,114.27151 h 1.262281 c 0.09371,0 0.170879,-0.0772 0.170879,-0.17639 0,-0.0937 -0.07717,-0.17088 -0.170879,-0.17088 h -1.074868 v -0.60082 H 85.8421 c 0.09371,0 0.170878,-0.0717 0.170878,-0.17088 0,-0.0992 -0.07717,-0.17639 -0.170878,-0.17639 h -0.920528 v -0.57877 h 1.058334 c 0.0937,0 0.170875,-0.0772 0.170875,-0.17639 0,-0.0937 -0.07717,-0.17088 -0.170875,-0.17088 h -1.245747 c -0.104733,0 -0.187413,0.0827 -0.187413,0.19844 v 1.82452 c 0,0.11024 0.08268,0.19844 0.187413,0.19844 z m 0,0"
id="path26053" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 86.650229,114.07307 c 0,0.11024 0.08268,0.19844 0.187413,0.19844 h 1.157552 c 0.0937,0 0.170875,-0.0772 0.170875,-0.17639 0,-0.0992 -0.07717,-0.1819 -0.170875,-0.1819 h -0.970138 v -1.68672 c 0,-0.11025 -0.08269,-0.19293 -0.187414,-0.19293 -0.104732,0 -0.187413,0.0827 -0.187413,0.19293 z m 0,0"
id="path26061" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 82.126733,96.302431 h 0.429948 c 0.07166,0 0.137802,-0.06064 0.137802,-0.132292 0,-0.07717 -0.06615,-0.137806 -0.137802,-0.137806 h -0.429948 c -0.07717,0 -0.137806,0.06063 -0.137806,0.137806 0,0.07165 0.06063,0.132292 0.137806,0.132292 z m 0,0"
id="path26069" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 83.699684,96.897743 c 0.33624,0 0.595313,-0.226002 0.595313,-0.545706 v -0.0055 c 0,-0.319704 -0.248049,-0.501608 -0.55673,-0.501608 -0.192923,0 -0.303166,0.07717 -0.38585,0.159854 0.01101,-0.292145 0.14883,-0.512631 0.38585,-0.512631 0.104733,0 0.187414,0.03306 0.275608,0.09371 0.02205,0.01101 0.0441,0.01654 0.07166,0.01654 0.07166,0 0.132291,-0.05512 0.132291,-0.126777 0,-0.06064 -0.02755,-0.09371 -0.07166,-0.121267 -0.104729,-0.07166 -0.237021,-0.115758 -0.396875,-0.115758 -0.457507,0 -0.689018,0.380341 -0.689018,0.870921 v 0.0055 c 0,0.325215 0.07166,0.490579 0.192924,0.611846 0.110243,0.110244 0.248049,0.170878 0.446486,0.170878 z m -0.0055,-0.248049 c -0.198438,0 -0.330729,-0.121267 -0.330729,-0.286632 0,-0.154342 0.126781,-0.286633 0.325218,-0.286633 0.198438,0 0.325216,0.121269 0.325216,0.281122 v 0.0055 c 0,0.165364 -0.121268,0.286631 -0.319705,0.286631 z m 0,0"
id="path26065" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 82.229927,91.308137 h 0.429948 c 0.07166,0 0.137802,-0.06063 0.137802,-0.132292 0,-0.07717 -0.06615,-0.137803 -0.137802,-0.137803 h -0.429948 c -0.07717,0 -0.137805,0.06063 -0.137805,0.137803 0,0.07166 0.06064,0.132292 0.137805,0.132292 z m 0,0"
id="path26077" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 83.62529,91.90345 c 0.336243,0 0.56224,-0.214972 0.56224,-0.507119 v -0.0055 c 0,-0.297656 -0.225997,-0.418922 -0.468531,-0.451995 l 0.374826,-0.391364 c 0.04961,-0.04961 0.08268,-0.0882 0.08268,-0.154342 0,-0.07165 -0.06063,-0.121267 -0.143316,-0.121267 H 83.21188 c -0.06615,0 -0.121268,0.05512 -0.121268,0.121267 0,0.06615 0.05512,0.121269 0.121268,0.121269 h 0.584288 l -0.374827,0.402389 c -0.0441,0.04409 -0.06064,0.07717 -0.06064,0.115752 0,0.06615 0.05512,0.121267 0.121267,0.121267 h 0.06064 c 0.220486,0 0.369312,0.0882 0.369312,0.248049 v 0.0055 c 0,0.143317 -0.121267,0.242535 -0.281118,0.242535 -0.14883,0 -0.264583,-0.05512 -0.363802,-0.154342 -0.02205,-0.02204 -0.05512,-0.03858 -0.09371,-0.03858 -0.07166,0 -0.137802,0.06615 -0.137802,0.1378 0,0.03859 0.02205,0.07717 0.04961,0.09922 0.126782,0.126783 0.308681,0.209463 0.540191,0.209463 z m 0,0"
id="path26073" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 83.250337,86.909182 c 0.424434,0 0.700042,-0.369313 0.700042,-0.832334 0,-0.463021 -0.275608,-0.826823 -0.694532,-0.826823 -0.424434,0 -0.700041,0.369314 -0.700041,0.826823 v 0.0055 c 0,0.457509 0.275607,0.826823 0.694531,0.826823 z m 0.0055,-0.25356 c -0.248045,0 -0.407899,-0.25907 -0.407899,-0.578774 0,-0.319704 0.15434,-0.573265 0.402389,-0.573265 0.248045,0 0.41341,0.25907 0.41341,0.573265 v 0.0055 c 0,0.314195 -0.159851,0.573264 -0.4079,0.573264 z m 0,0"
id="path26081" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 82.340079,81.523552 c 0,0.07717 0.06063,0.132291 0.132291,0.132291 0.07166,0 0.132292,-0.05512 0.132292,-0.132291 v -0.319704 h 0.325215 c 0.06615,0 0.126781,-0.05512 0.126781,-0.121267 0,-0.07166 -0.06063,-0.126778 -0.126781,-0.126778 h -0.325215 v -0.319706 c 0,-0.07166 -0.06064,-0.132292 -0.132292,-0.132292 -0.07166,0 -0.132291,0.06063 -0.132291,0.132292 v 0.319706 H 82.01486 c -0.06615,0 -0.126778,0.05512 -0.126778,0.126778 0,0.06615 0.06063,0.121267 0.126778,0.121267 h 0.325219 z m 0,0"
id="path26085" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 83.858032,81.914918 c 0.336243,0 0.562239,-0.214977 0.562239,-0.507119 v -0.0055 c 0,-0.297656 -0.225996,-0.418923 -0.468531,-0.451996 l 0.374827,-0.391361 c 0.04961,-0.04961 0.08268,-0.0882 0.08268,-0.154342 0,-0.07166 -0.06063,-0.121266 -0.143316,-0.121266 h -0.821309 c -0.06615,0 -0.121267,0.05512 -0.121267,0.121266 0,0.06615 0.05512,0.121269 0.121267,0.121269 h 0.584288 l -0.374826,0.402384 c -0.0441,0.0441 -0.06064,0.07717 -0.06064,0.115758 0,0.06614 0.05512,0.121266 0.121267,0.121266 h 0.06063 c 0.220486,0 0.369313,0.0882 0.369313,0.248047 v 0.0055 c 0,0.143314 -0.121268,0.242533 -0.281118,0.242533 -0.14883,0 -0.264584,-0.05512 -0.363802,-0.154339 -0.02205,-0.02204 -0.05512,-0.03859 -0.09371,-0.03859 -0.07166,0 -0.137802,0.06615 -0.137802,0.137806 0,0.03858 0.02205,0.07717 0.04961,0.09922 0.126781,0.126778 0.30868,0.209463 0.540191,0.209463 z m 0,0"
id="path26089" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 81.766727,101.30359 h 0.429948 c 0.07166,0 0.137801,-0.0606 0.137801,-0.13229 0,-0.0772 -0.06615,-0.13781 -0.137801,-0.13781 h -0.429948 c -0.07717,0 -0.137806,0.0606 -0.137806,0.13781 0,0.0717 0.06064,0.13229 0.137806,0.13229 z m 0,0"
id="path26097" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 82.840579,101.74456 c 0,0.0772 0.06615,0.13781 0.137801,0.13781 0.08268,0 0.143316,-0.0606 0.143316,-0.13781 v -1.3615 c 0,-0.0772 -0.06063,-0.13781 -0.143316,-0.13781 -0.0441,0 -0.08268,0.011 -0.137801,0.0276 l -0.242535,0.0772 c -0.06064,0.0165 -0.09922,0.0606 -0.09922,0.12127 0,0.0606 0.06063,0.11576 0.126778,0.11576 0.01101,0 0.03306,0 0.04961,-0.005 l 0.165365,-0.0496 z m 0,0"
id="path26093" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 83.489023,101.73905 c 0,0.0827 0.06615,0.13229 0.148826,0.13229 h 0.909507 c 0.07166,0 0.126778,-0.0551 0.126778,-0.12127 0,-0.0717 -0.05512,-0.12678 -0.126778,-0.12678 h -0.650434 l 0.330729,-0.2756 c 0.286632,-0.23151 0.418924,-0.36932 0.418924,-0.62288 0,-0.28663 -0.214976,-0.47956 -0.529167,-0.47956 -0.253559,0 -0.402389,0.0937 -0.53468,0.25908 -0.01655,0.022 -0.02755,0.0551 -0.02755,0.0827 0,0.0717 0.05512,0.13229 0.126778,0.13229 0.0441,0 0.07717,-0.022 0.09922,-0.0441 0.09922,-0.12127 0.187413,-0.1819 0.314195,-0.1819 0.148826,0 0.259069,0.0937 0.259069,0.25356 0,0.14332 -0.07717,0.24804 -0.297656,0.42995 l -0.496094,0.41892 c -0.04961,0.0441 -0.07166,0.0882 -0.07166,0.14332 z m 0,0"
id="path26101" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 81.475508,106.30473 h 0.429948 c 0.07166,0 0.137803,-0.0606 0.137803,-0.1323 0,-0.0772 -0.06615,-0.1378 -0.137803,-0.1378 h -0.429948 c -0.07717,0 -0.137805,0.0606 -0.137805,0.1378 0,0.0717 0.06063,0.1323 0.137805,0.1323 z m 0,0"
id="path26109" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 82.217757,106.74019 c 0,0.0827 0.06615,0.13229 0.148826,0.13229 h 0.909507 c 0.07166,0 0.126777,-0.0551 0.126777,-0.12127 0,-0.0717 -0.05512,-0.12678 -0.126777,-0.12678 h -0.650434 l 0.330729,-0.27561 c 0.286632,-0.23151 0.418923,-0.36931 0.418923,-0.62287 0,-0.28663 -0.214975,-0.47956 -0.529166,-0.47956 -0.253559,0 -0.402389,0.0937 -0.534681,0.25907 -0.01654,0.022 -0.02755,0.0551 -0.02755,0.0827 0,0.0717 0.05512,0.13229 0.126778,0.13229 0.0441,0 0.07717,-0.022 0.09922,-0.0441 0.09922,-0.12126 0.187413,-0.1819 0.314194,-0.1819 0.148827,0 0.25907,0.0937 0.25907,0.25356 0,0.14332 -0.07717,0.24805 -0.297657,0.42995 l -0.496093,0.41892 c -0.04961,0.0441 -0.07166,0.0882 -0.07166,0.14332 z m 0,0"
id="path26105" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d="m 84.462167,106.75121 c 0,0.0772 0.06064,0.13229 0.137806,0.13229 0.07717,0 0.132292,-0.0551 0.132292,-0.13229 v -0.23702 h 0.126777 c 0.06615,0 0.115757,-0.0496 0.115757,-0.11576 0,-0.0661 -0.04961,-0.11575 -0.115757,-0.11575 h -0.126777 v -0.904 c 0,-0.0772 -0.06064,-0.13229 -0.132292,-0.13229 -0.08268,0 -0.126781,0.0275 -0.176389,0.0882 l -0.755167,0.89848 c -0.03858,0.0441 -0.06063,0.0937 -0.06063,0.14883 0,0.0772 0.06063,0.13229 0.137801,0.13229 h 0.71658 z m -0.523652,-0.46853 0.523652,-0.63941 v 0.63941 z m 0,0"
id="path26113" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 83.723892,172.79653 c 0,0.22187 -0.179144,0.40101 -0.40101,0.40101 -0.220486,0 -0.401009,-0.17914 -0.401009,-0.40101 0,-0.22186 0.180523,-0.40101 0.401009,-0.40101 0.221866,0 0.40101,0.17915 0.40101,0.40101"
id="path18731" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 80.401441,174.12221 c -0.117133,0 -0.224621,-0.0661 -0.276987,-0.1695 l -1.001833,-2.00505 c -0.07579,-0.15296 -0.01517,-0.33762 0.137802,-0.41479 0.151586,-0.0758 0.337623,-0.0138 0.413414,0.13918 l 0.727604,1.45246 0.726225,-1.45246 c 0.07579,-0.15296 0.260449,-0.21497 0.413413,-0.13918 0.151585,0.0772 0.213597,0.26183 0.137802,0.41479 l -1.001832,2.00505 c -0.05237,0.10335 -0.159854,0.1695 -0.275608,0.1695"
id="path18733" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 85.906704,174.12221 c -0.117133,0 -0.224621,-0.0661 -0.275607,-0.1695 l -1.003212,-2.00505 c -0.0758,-0.15296 -0.01379,-0.33762 0.137802,-0.41479 0.152964,-0.0758 0.337619,-0.0138 0.413413,0.13918 l 0.727604,1.45246 0.726225,-1.45246 c 0.07579,-0.15296 0.261828,-0.21497 0.413413,-0.13918 0.152961,0.0772 0.214972,0.26183 0.139181,0.41479 l -1.003211,2.00505 c -0.05237,0.10335 -0.158475,0.1695 -0.275608,0.1695"
id="path18735" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775"
d="m 83.303589,174.12221 c -0.72347,0 -1.310513,-0.58705 -1.310513,-1.31052 0,-0.72209 0.587043,-1.31052 1.310513,-1.31052 0.286632,0 0.558105,0.091 0.78686,0.26183 0.135047,0.10198 0.162609,0.29491 0.06063,0.43271 -0.101977,0.13505 -0.294901,0.16261 -0.431327,0.0606 -0.121267,-0.0909 -0.264583,-0.13918 -0.416168,-0.13918 -0.383096,0 -0.694531,0.31144 -0.694531,0.69453 0,0.38309 0.311435,0.69453 0.694531,0.69453 0.151585,0 0.294901,-0.0482 0.416168,-0.13918 0.136426,-0.10198 0.32935,-0.0744 0.431327,0.062 0.101974,0.13505 0.07441,0.32935 -0.06063,0.43133 -0.228755,0.17087 -0.500228,0.26183 -0.78686,0.26183"
id="path18737" />
<path
inkscape:connector-curvature="0"
style="fill:#f8de19;fill-opacity:1;stroke:none;stroke-width:0.35277775"
d=""
id="path26129" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="components"
style="display:none">
<circle
style="opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="path26681"
cx="12.7"
cy="74.018562"
r="2" />
<circle
r="2"
cy="94.252991"
cx="6.6965766"
id="circle27488"
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<circle
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="circle27490"
cx="18.702734"
cy="94.252991"
r="2" />
<circle
r="2"
cy="112.25361"
cx="6.6993308"
id="circle27492"
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<circle
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="circle27494"
cx="18.699963"
cy="112.25361"
r="2" />
<circle
r="2"
cy="29.759426"
cx="6.7000203"
id="circle27496"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<circle
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="circle27498"
cx="18.699978"
cy="29.759426"
r="2" />
<circle
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="circle27500"
cx="6.7000203"
cy="34.753441"
r="2" />
<circle
r="2"
cy="34.753441"
cx="18.699978"
id="circle27502"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<circle
r="2"
cy="39.748829"
cx="6.7000203"
id="circle27504"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<circle
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="circle27506"
cx="18.699978"
cy="39.748829"
r="2" />
<circle
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="circle27508"
cx="6.7000203"
cy="44.744213"
r="2" />
<circle
r="2"
cy="44.744213"
cx="18.699978"
id="circle27510"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<circle
r="2"
cy="49.743736"
cx="6.7000203"
id="circle27512"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<circle
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="circle27514"
cx="18.699978"
cy="49.743736"
r="2" />
<circle
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="circle27516"
cx="6.7000203"
cy="54.744637"
r="2" />
<circle
r="2"
cy="54.744637"
cx="18.699978"
id="circle27518"
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
style="opacity:1;vector-effect:none;fill:#ffff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.28789154;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect27520"
width="21.12808"
height="6.7248259"
x="2.1345811"
y="14.258561" />
</g>
</svg>

+ 10
- 0
src/app/AudioWidget.cpp View File

@@ -304,6 +304,16 @@ void AudioWidget::setAudioPort(audio::Port* port) {
} }




void AudioDeviceWidget::setAudioPort(audio::Port* port) {
AudioDeviceChoice* deviceChoice = createWidget<AudioDeviceChoice>(math::Vec());
deviceChoice->box.size.x = box.size.x;
deviceChoice->box.size.y = box.size.y;
deviceChoice->port = port;
addChild(deviceChoice);
this->deviceChoice = deviceChoice;
}


void appendAudioMenu(ui::Menu* menu, audio::Port* port) { void appendAudioMenu(ui::Menu* menu, audio::Port* port) {
menu->addChild(createMenuLabel("Audio driver")); menu->addChild(createMenuLabel("Audio driver"));
appendAudioDriverMenu(menu, port); appendAudioDriverMenu(menu, port);


+ 115
- 28
src/core/AudioInterface.cpp View File

@@ -14,7 +14,11 @@ namespace core {


template <int NUM_AUDIO_INPUTS, int NUM_AUDIO_OUTPUTS> template <int NUM_AUDIO_INPUTS, int NUM_AUDIO_OUTPUTS>
struct AudioInterface : Module, audio::Port { struct AudioInterface : Module, audio::Port {
static constexpr int NUM_INPUT_LIGHTS = (NUM_AUDIO_INPUTS > 2) ? (NUM_AUDIO_INPUTS / 2) : 0;
static constexpr int NUM_OUTPUT_LIGHTS = (NUM_AUDIO_OUTPUTS > 2) ? (NUM_AUDIO_OUTPUTS / 2) : 0;

enum ParamIds { enum ParamIds {
ENUMS(GAIN_PARAM, NUM_AUDIO_INPUTS == 2),
NUM_PARAMS NUM_PARAMS
}; };
enum InputIds { enum InputIds {
@@ -26,8 +30,9 @@ struct AudioInterface : Module, audio::Port {
NUM_OUTPUTS NUM_OUTPUTS
}; };
enum LightIds { enum LightIds {
ENUMS(INPUT_LIGHTS, NUM_AUDIO_INPUTS / 2 * 2),
ENUMS(OUTPUT_LIGHTS, NUM_AUDIO_OUTPUTS / 2 * 2),
ENUMS(INPUT_LIGHTS, NUM_INPUT_LIGHTS * 2),
ENUMS(OUTPUT_LIGHTS, NUM_OUTPUT_LIGHTS * 2),
ENUMS(VU_LIGHTS, (NUM_AUDIO_INPUTS == 2) ? (2 * 6) : 0),
NUM_LIGHTS NUM_LIGHTS
}; };


@@ -39,8 +44,9 @@ struct AudioInterface : Module, audio::Port {


dsp::ClockDivider lightDivider; dsp::ClockDivider lightDivider;
// For each pair of inputs/outputs // For each pair of inputs/outputs
float inputClipTimers[NUM_AUDIO_INPUTS / 2] = {};
float outputClipTimers[NUM_AUDIO_OUTPUTS / 2] = {};
float inputClipTimers[(NUM_AUDIO_INPUTS > 0) ? NUM_INPUT_LIGHTS : 0] = {};
float outputClipTimers[(NUM_AUDIO_INPUTS > 0) ? NUM_OUTPUT_LIGHTS : 0] = {};
dsp::VuMeter2 vuMeter[(NUM_AUDIO_INPUTS == 2) ? 2 : 0];


// Port variables // Port variables
int requestedEngineFrames = 0; int requestedEngineFrames = 0;
@@ -48,6 +54,8 @@ struct AudioInterface : Module, audio::Port {


AudioInterface() { AudioInterface() {
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
if (NUM_AUDIO_INPUTS == 2)
configParam(GAIN_PARAM, 0.f, 2.f, 1.f, "Level", " dB", -10, 20);
for (int i = 0; i < NUM_AUDIO_INPUTS; i++) for (int i = 0; i < NUM_AUDIO_INPUTS; i++)
configInput(AUDIO_INPUTS + i, string::f("To device %d", i + 1)); configInput(AUDIO_INPUTS + i, string::f("To device %d", i + 1));
for (int i = 0; i < NUM_AUDIO_OUTPUTS; i++) for (int i = 0; i < NUM_AUDIO_OUTPUTS; i++)
@@ -77,14 +85,33 @@ struct AudioInterface : Module, audio::Port {
const float clipTime = 0.25f; const float clipTime = 0.25f;


// Push inputs to buffer // Push inputs to buffer
if (!inputBuffer.full()) {
dsp::Frame<NUM_AUDIO_INPUTS> inputFrame;
for (int i = 0; i < NUM_AUDIO_INPUTS; i++) {
float v = inputs[AUDIO_INPUTS + i].getVoltageSum() / 10.f;
inputFrame.samples[i] = v;
dsp::Frame<NUM_AUDIO_INPUTS> inputFrame;
for (int i = 0; i < NUM_AUDIO_INPUTS; i++) {
// Get input
float v = 0.f;
if (inputs[AUDIO_INPUTS + i].isConnected())
v = inputs[AUDIO_INPUTS + i].getVoltageSum() / 10.f;
// Normalize right input to left on Audio-2
else if (i > 0 && NUM_AUDIO_INPUTS == 2)
v = inputFrame.samples[i - 1];

// Detect clipping
if (NUM_AUDIO_INPUTS > 2) {
if (std::fabs(v) >= 1.f) if (std::fabs(v) >= 1.f)
inputClipTimers[i / 2] = clipTime; inputClipTimers[i / 2] = clipTime;
} }
inputFrame.samples[i] = v;
}

// Apply gain from knob
if (NUM_AUDIO_INPUTS == 2) {
float gain = params[GAIN_PARAM].getValue();
for (int i = 0; i < NUM_AUDIO_INPUTS; i++) {
inputFrame.samples[i] *= gain;
}
}

if (!inputBuffer.full()) {
inputBuffer.push(inputFrame); inputBuffer.push(inputFrame);
} }


@@ -94,8 +121,12 @@ struct AudioInterface : Module, audio::Port {
for (int i = 0; i < NUM_AUDIO_OUTPUTS; i++) { for (int i = 0; i < NUM_AUDIO_OUTPUTS; i++) {
float v = outputFrame.samples[i]; float v = outputFrame.samples[i];
outputs[AUDIO_OUTPUTS + i].setVoltage(10.f * v); outputs[AUDIO_OUTPUTS + i].setVoltage(10.f * v);
if (std::fabs(v) >= 1.f)
outputClipTimers[i / 2] = clipTime;

// Detect clipping
if (NUM_AUDIO_OUTPUTS > 2) {
if (std::fabs(v) >= 1.f)
outputClipTimers[i / 2] = clipTime;
}
} }
} }
else { else {
@@ -104,26 +135,44 @@ struct AudioInterface : Module, audio::Port {
} }
} }


// Lights
if (NUM_AUDIO_INPUTS == 2) {
for (int i = 0; i < 2; i++) {
vuMeter[i].process(args.sampleTime, inputFrame.samples[i]);
}
}
if (lightDivider.process()) { if (lightDivider.process()) {
float lightTime = args.sampleTime * lightDivider.getDivision(); float lightTime = args.sampleTime * lightDivider.getDivision();
int numDeviceInputs = getNumInputs();
int numDeviceOutputs = getNumOutputs();
// Turn on light if at least one port is enabled in the nearby pair.
for (int i = 0; i < NUM_AUDIO_INPUTS / 2; i++) {
bool active = numDeviceOutputs >= 2 * i + 1;
bool clip = inputClipTimers[i] > 0.f;
if (clip)
inputClipTimers[i] -= lightTime;
lights[INPUT_LIGHTS + i * 2 + 0].setBrightness(active && !clip);
lights[INPUT_LIGHTS + i * 2 + 1].setBrightness(active && clip);
if (NUM_AUDIO_INPUTS == 2) {
for (int i = 0; i < 2; i++) {
lights[VU_LIGHTS + i * 6 + 0].setBrightness(vuMeter[i].getBrightness(0, 0));
lights[VU_LIGHTS + i * 6 + 1].setBrightness(vuMeter[i].getBrightness(-3, 0));
lights[VU_LIGHTS + i * 6 + 2].setBrightness(vuMeter[i].getBrightness(-6, -3));
lights[VU_LIGHTS + i * 6 + 3].setBrightness(vuMeter[i].getBrightness(-12, -6));
lights[VU_LIGHTS + i * 6 + 4].setBrightness(vuMeter[i].getBrightness(-24, -12));
lights[VU_LIGHTS + i * 6 + 5].setBrightness(vuMeter[i].getBrightness(-36, -24));
}
} }
for (int i = 0; i < NUM_AUDIO_OUTPUTS / 2; i++) {
bool active = numDeviceInputs >= 2 * i + 1;
bool clip = outputClipTimers[i] > 0.f;
if (clip)
outputClipTimers[i] -= lightTime;
lights[OUTPUT_LIGHTS + i * 2 + 0].setBrightness(active & !clip);
lights[OUTPUT_LIGHTS + i * 2 + 1].setBrightness(active & clip);
else {
int numDeviceInputs = getNumInputs();
int numDeviceOutputs = getNumOutputs();
// Turn on light if at least one port is enabled in the nearby pair.
for (int i = 0; i < NUM_AUDIO_INPUTS / 2; i++) {
bool active = numDeviceOutputs >= 2 * i + 1;
bool clip = inputClipTimers[i] > 0.f;
if (clip)
inputClipTimers[i] -= lightTime;
lights[INPUT_LIGHTS + i * 2 + 0].setBrightness(active && !clip);
lights[INPUT_LIGHTS + i * 2 + 1].setBrightness(active && clip);
}
for (int i = 0; i < NUM_AUDIO_OUTPUTS / 2; i++) {
bool active = numDeviceInputs >= 2 * i + 1;
bool clip = outputClipTimers[i] > 0.f;
if (clip)
outputClipTimers[i] -= lightTime;
lights[OUTPUT_LIGHTS + i * 2 + 0].setBrightness(active & !clip);
lights[OUTPUT_LIGHTS + i * 2 + 1].setBrightness(active & clip);
}
} }
} }
} }
@@ -362,6 +411,42 @@ struct AudioInterfaceWidget : ModuleWidget {
audioWidget->setAudioPort(module); audioWidget->setAudioPort(module);
addChild(audioWidget); addChild(audioWidget);
} }
else if (NUM_AUDIO_INPUTS == 2 && NUM_AUDIO_OUTPUTS == 2) {
setPanel(APP->window->loadSvg(asset::system("res/Core/AudioInterface2.svg")));

addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));

addParam(createParamCentered<RoundBigBlackKnob>(mm2px(Vec(12.7, 74.019)), module, TAudioInterface::GAIN_PARAM));

addInput(createInputCentered<PJ301MPort>(mm2px(Vec(6.697, 94.253)), module, TAudioInterface::AUDIO_INPUTS + 0));
addInput(createInputCentered<PJ301MPort>(mm2px(Vec(18.703, 94.253)), module, TAudioInterface::AUDIO_INPUTS + 1));

addOutput(createOutputCentered<PJ301MPort>(mm2px(Vec(6.699, 112.254)), module, TAudioInterface::AUDIO_OUTPUTS + 0));
addOutput(createOutputCentered<PJ301MPort>(mm2px(Vec(18.7, 112.254)), module, TAudioInterface::AUDIO_OUTPUTS + 1));

addChild(createLightCentered<MediumLight<RedLight>>(mm2px(Vec(6.7, 29.759)), module, TAudioInterface::VU_LIGHTS + 0 * 6 + 0));
addChild(createLightCentered<MediumLight<RedLight>>(mm2px(Vec(18.7, 29.759)), module, TAudioInterface::VU_LIGHTS + 1 * 6 + 0));
addChild(createLightCentered<MediumLight<YellowLight>>(mm2px(Vec(6.7, 34.753)), module, TAudioInterface::VU_LIGHTS + 0 * 6 + 1));
addChild(createLightCentered<MediumLight<YellowLight>>(mm2px(Vec(18.7, 34.753)), module, TAudioInterface::VU_LIGHTS + 1 * 6 + 1));
addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(6.7, 39.749)), module, TAudioInterface::VU_LIGHTS + 0 * 6 + 2));
addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(18.7, 39.749)), module, TAudioInterface::VU_LIGHTS + 1 * 6 + 2));
addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(6.7, 44.744)), module, TAudioInterface::VU_LIGHTS + 0 * 6 + 3));
addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(18.7, 44.744)), module, TAudioInterface::VU_LIGHTS + 1 * 6 + 3));
addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(6.7, 49.744)), module, TAudioInterface::VU_LIGHTS + 0 * 6 + 4));
addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(18.7, 49.744)), module, TAudioInterface::VU_LIGHTS + 1 * 6 + 4));
addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(6.7, 54.745)), module, TAudioInterface::VU_LIGHTS + 0 * 6 + 5));
addChild(createLightCentered<MediumLight<GreenLight>>(mm2px(Vec(18.7, 54.745)), module, TAudioInterface::VU_LIGHTS + 1 * 6 + 5));

AudioDeviceWidget* audioWidget = createWidget<AudioDeviceWidget>(mm2px(Vec(2.135, 14.259)));
audioWidget->box.size = mm2px(Vec(21.128, 6.725));
audioWidget->setAudioPort(module);
// Adjust deviceChoice position
audioWidget->deviceChoice->box.pos = Vec(-4, -4);
addChild(audioWidget);
}
} }


void appendContextMenu(Menu* menu) override { void appendContextMenu(Menu* menu) override {
@@ -378,6 +463,8 @@ struct AudioInterfaceWidget : ModuleWidget {
}; };




Model* modelAudioInterface2 = createModel<AudioInterface<2, 2>, AudioInterfaceWidget<2, 2>>("AudioInterface2");
// Legacy name for Audio-8
Model* modelAudioInterface = createModel<AudioInterface<8, 8>, AudioInterfaceWidget<8, 8>>("AudioInterface"); Model* modelAudioInterface = createModel<AudioInterface<8, 8>, AudioInterfaceWidget<8, 8>>("AudioInterface");
Model* modelAudioInterface16 = createModel<AudioInterface<16, 16>, AudioInterfaceWidget<16, 16>>("AudioInterface16"); Model* modelAudioInterface16 = createModel<AudioInterface<16, 16>, AudioInterfaceWidget<16, 16>>("AudioInterface16");




+ 1
- 0
src/core/plugin.cpp View File

@@ -6,6 +6,7 @@ namespace core {




void init(rack::Plugin* p) { void init(rack::Plugin* p) {
p->addModel(modelAudioInterface2);
p->addModel(modelAudioInterface); p->addModel(modelAudioInterface);
p->addModel(modelAudioInterface16); p->addModel(modelAudioInterface16);
p->addModel(modelMIDI_CV); p->addModel(modelMIDI_CV);


+ 1
- 0
src/core/plugin.hpp View File

@@ -5,6 +5,7 @@ namespace rack {
namespace core { namespace core {




extern Model* modelAudioInterface2;
extern Model* modelAudioInterface; extern Model* modelAudioInterface;
extern Model* modelAudioInterface16; extern Model* modelAudioInterface16;
extern Model* modelMIDI_CV; extern Model* modelMIDI_CV;


Loading…
Cancel
Save