Signed-off-by: falkTX <falktx@falktx.com>tags/22.02
@@ -0,0 +1,157 @@ | |||||
<?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="71.120003mm" | |||||
height="128.5mm" | |||||
viewBox="0 0 71.120003 128.5" | |||||
version="1.1" | |||||
id="svg4620" | |||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" | |||||
sodipodi:docname="HostMIDICC.svg"> | |||||
<defs | |||||
id="defs4614"> | |||||
<style | |||||
id="style6" | |||||
type="text/css"> | |||||
.str0 {stroke:#565656;stroke-width:0.0966867} | |||||
.str1 {stroke:#4F4F4F;stroke-width:0.193345} | |||||
.fil0 {fill:none} | |||||
.fil2 {fill:#2B2A29} | |||||
.fil1 {fill:#6B6B6B} | |||||
</style> | |||||
</defs> | |||||
<sodipodi:namedview | |||||
id="base" | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1.0" | |||||
inkscape:pageopacity="0.0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:zoom="1.4" | |||||
inkscape:cx="129.78011" | |||||
inkscape:cy="288.75054" | |||||
inkscape:document-units="mm" | |||||
inkscape:current-layer="layer1" | |||||
showgrid="false" | |||||
inkscape:window-width="1920" | |||||
inkscape:window-height="1026" | |||||
inkscape:window-x="1920" | |||||
inkscape:window-y="0" | |||||
inkscape:window-maximized="1" | |||||
inkscape:pagecheckerboard="0" /> | |||||
<metadata | |||||
id="metadata4617"> | |||||
<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(0,-168.5)"> | |||||
<g | |||||
id="g843" | |||||
transform="translate(13.114734)"> | |||||
<g | |||||
transform="matrix(6.342689,0,0,6.342689,5.4472535,175.6457)" | |||||
id="g5299" | |||||
style="fill-rule:evenodd"> | |||||
<g | |||||
inkscape:label="Layer 1" | |||||
id="Layer_x0020_1" | |||||
transform="translate(-1.6191379e-5,-0.08553947)"> | |||||
<metadata | |||||
id="CorelCorpID_0Corel-Layer" /> | |||||
<circle | |||||
class="fil0 str0" | |||||
cx="0.525226" | |||||
cy="0.61075097" | |||||
r="0.15916" | |||||
id="circle10" | |||||
style="fill:none;stroke:#ffffff;stroke-width:0.0966867;stroke-opacity:1" /> | |||||
<circle | |||||
class="fil0 str1" | |||||
cx="0.525226" | |||||
cy="0.61075097" | |||||
r="0.42853901" | |||||
id="circle12" | |||||
style="fill:none;stroke:#ffffff;stroke-width:0.193345;stroke-opacity:1" /> | |||||
</g> | |||||
</g> | |||||
<g | |||||
transform="translate(-0.09449404,0.14174107)" | |||||
id="text5303" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||||
aria-label="Cardinal"> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5305" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 17.923601,176.99103 v 0.66043 q -0.31626,-0.29456 -0.675928,-0.44028 -0.356567,-0.14573 -0.759643,-0.14573 -0.79375,0 -1.21543,0.48679 -0.42168,0.48369 -0.42168,1.40146 0,0.91468 0.42168,1.40147 0.42168,0.48369 1.21543,0.48369 0.403076,0 0.759643,-0.14573 0.359668,-0.14572 0.675928,-0.44028 v 0.65422 q -0.328662,0.22325 -0.697632,0.33487 -0.365869,0.11162 -0.775146,0.11162 -1.051099,0 -1.655713,-0.64182 -0.604615,-0.64492 -0.604615,-1.75804 0,-1.11621 0.604615,-1.75803 0.604614,-0.64492 1.655713,-0.64492 0.415478,0 0.781347,0.11162 0.36897,0.10852 0.691431,0.32866 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5307" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 20.444377,179.51801 q -0.69143,0 -0.958081,0.15813 -0.26665,0.15813 -0.26665,0.5395 0,0.30386 0.198437,0.48369 0.201538,0.17674 0.545703,0.17674 0.47439,0 0.759644,-0.33487 0.288355,-0.33796 0.288355,-0.89606 v -0.12713 z m 1.137915,-0.23564 v 1.98127 h -0.570507 v -0.5271 q -0.195337,0.31626 -0.486792,0.46819 -0.291456,0.14883 -0.713135,0.14883 -0.533301,0 -0.849561,-0.29766 -0.313159,-0.30075 -0.313159,-0.80305 0,-0.58601 0.390674,-0.88367 0.393774,-0.29765 1.172021,-0.29765 h 0.799952 v -0.0558 q 0,-0.39378 -0.26045,-0.60772 -0.257348,-0.21704 -0.725537,-0.21704 -0.297656,0 -0.579809,0.0713 -0.282154,0.0713 -0.542603,0.21394 v -0.52709 q 0.313159,-0.12093 0.607715,-0.17984 0.294556,-0.062 0.573608,-0.062 0.753443,0 1.125513,0.39067 0.37207,0.39068 0.37207,1.18443 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5309" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 24.769695,178.32429 q -0.09612,-0.0558 -0.21084,-0.0806 -0.111621,-0.0279 -0.248047,-0.0279 -0.483691,0 -0.744141,0.31626 -0.257348,0.31315 -0.257348,0.90227 v 1.82934 H 22.73571 v -3.47265 h 0.573609 v 0.5395 q 0.179834,-0.31626 0.468188,-0.46819 0.288355,-0.15503 0.700733,-0.15503 0.05891,0 0.130224,0.009 0.07131,0.006 0.15813,0.0217 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5311" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 27.541618,178.31808 v -1.87895 h 0.570508 v 4.82451 h -0.570508 v -0.5209 q -0.179834,0.31006 -0.455786,0.46199 -0.272851,0.14883 -0.657324,0.14883 -0.629419,0 -1.026294,-0.5023 -0.393774,-0.50229 -0.393774,-1.32085 0,-0.81855 0.393774,-1.32085 0.396875,-0.50229 1.026294,-0.50229 0.384473,0 0.657324,0.15193 0.275952,0.14883 0.455786,0.45888 z m -1.944067,1.21233 q 0,0.62942 0.257349,0.98909 0.260449,0.35657 0.713134,0.35657 0.452686,0 0.713135,-0.35657 0.260449,-0.35967 0.260449,-0.98909 0,-0.62942 -0.260449,-0.98598 -0.260449,-0.35967 -0.713135,-0.35967 -0.452685,0 -0.713134,0.35967 -0.257349,0.35656 -0.257349,0.98598 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5313" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 29.287248,177.79099 h 0.570508 v 3.47265 h -0.570508 z m 0,-1.35186 h 0.570508 v 0.72244 h -0.570508 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5315" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 33.938127,179.16765 v 2.09599 h -0.570508 v -2.07739 q 0,-0.49299 -0.192236,-0.73794 -0.192236,-0.24495 -0.576709,-0.24495 -0.461987,0 -0.728638,0.29456 -0.26665,0.29455 -0.26665,0.80305 v 1.96267 h -0.573608 v -3.47265 h 0.573608 v 0.5395 q 0.204639,-0.31316 0.480591,-0.46819 0.279053,-0.15503 0.641821,-0.15503 0.598413,0 0.905371,0.37207 0.306958,0.36897 0.306958,1.08831 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5317" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 36.654241,179.51801 q -0.691431,0 -0.958081,0.15813 -0.26665,0.15813 -0.26665,0.5395 0,0.30386 0.198437,0.48369 0.201538,0.17674 0.545703,0.17674 0.47439,0 0.759644,-0.33487 0.288354,-0.33796 0.288354,-0.89606 v -0.12713 z m 1.137915,-0.23564 v 1.98127 h -0.570508 v -0.5271 q -0.195337,0.31626 -0.486792,0.46819 -0.291455,0.14883 -0.713135,0.14883 -0.5333,0 -0.84956,-0.29766 -0.313159,-0.30075 -0.313159,-0.80305 0,-0.58601 0.390674,-0.88367 0.393774,-0.29765 1.172021,-0.29765 h 0.799951 v -0.0558 q 0,-0.39378 -0.260449,-0.60772 -0.257349,-0.21704 -0.725537,-0.21704 -0.297656,0 -0.57981,0.0713 -0.282153,0.0713 -0.542602,0.21394 v -0.52709 q 0.313159,-0.12093 0.607715,-0.17984 0.294555,-0.062 0.573608,-0.062 0.753442,0 1.125513,0.39067 0.37207,0.39068 0.37207,1.18443 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5319" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 38.967278,176.43913 h 0.570508 v 4.82451 h -0.570508 z" /> | |||||
</g> | |||||
</g> | |||||
<text | |||||
xml:space="preserve" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58329964px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke:none;stroke-width:0.26458299" | |||||
x="19.321712" | |||||
y="188.65312" | |||||
id="text845"><tspan | |||||
sodipodi:role="line" | |||||
id="tspan843" | |||||
x="19.321712" | |||||
y="188.65312" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299">Host MIDI CC</tspan></text> | |||||
</g> | |||||
</svg> |
@@ -0,0 +1,202 @@ | |||||
<?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="71.120003mm" | |||||
height="128.5mm" | |||||
viewBox="0 0 71.120003 128.5" | |||||
version="1.1" | |||||
id="svg4620" | |||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)" | |||||
sodipodi:docname="HostMIDICC.svg"> | |||||
<defs | |||||
id="defs4614"> | |||||
<style | |||||
id="style6" | |||||
type="text/css"> | |||||
.str0 {stroke:#565656;stroke-width:0.0966867} | |||||
.str1 {stroke:#4F4F4F;stroke-width:0.193345} | |||||
.fil0 {fill:none} | |||||
.fil2 {fill:#2B2A29} | |||||
.fil1 {fill:#6B6B6B} | |||||
</style> | |||||
</defs> | |||||
<sodipodi:namedview | |||||
id="base" | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1.0" | |||||
inkscape:pageopacity="0.0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:zoom="1.4" | |||||
inkscape:cx="333.01034" | |||||
inkscape:cy="415.70018" | |||||
inkscape:document-units="mm" | |||||
inkscape:current-layer="layer1" | |||||
showgrid="false" | |||||
inkscape:window-width="1920" | |||||
inkscape:window-height="1026" | |||||
inkscape:window-x="1920" | |||||
inkscape:window-y="0" | |||||
inkscape:window-maximized="1" | |||||
inkscape:pagecheckerboard="0" /> | |||||
<metadata | |||||
id="metadata4617"> | |||||
<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(0,-168.5)"> | |||||
<g | |||||
id="g843" | |||||
transform="translate(13.114734)"> | |||||
<g | |||||
transform="matrix(6.342689,0,0,6.342689,5.4472535,175.6457)" | |||||
id="g5299" | |||||
style="fill-rule:evenodd"> | |||||
<g | |||||
inkscape:label="Layer 1" | |||||
id="Layer_x0020_1" | |||||
transform="translate(-1.6191379e-5,-0.08553947)"> | |||||
<metadata | |||||
id="CorelCorpID_0Corel-Layer" /> | |||||
<circle | |||||
class="fil0 str0" | |||||
cx="0.525226" | |||||
cy="0.61075097" | |||||
r="0.15916" | |||||
id="circle10" | |||||
style="fill:none;stroke:#ffffff;stroke-width:0.0966867;stroke-opacity:1" /> | |||||
<circle | |||||
class="fil0 str1" | |||||
cx="0.525226" | |||||
cy="0.61075097" | |||||
r="0.42853901" | |||||
id="circle12" | |||||
style="fill:none;stroke:#ffffff;stroke-width:0.193345;stroke-opacity:1" /> | |||||
</g> | |||||
</g> | |||||
<g | |||||
transform="translate(-0.09449404,0.14174107)" | |||||
id="text5303" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||||
aria-label="Cardinal"> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5305" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 17.923601,176.99103 v 0.66043 q -0.31626,-0.29456 -0.675928,-0.44028 -0.356567,-0.14573 -0.759643,-0.14573 -0.79375,0 -1.21543,0.48679 -0.42168,0.48369 -0.42168,1.40146 0,0.91468 0.42168,1.40147 0.42168,0.48369 1.21543,0.48369 0.403076,0 0.759643,-0.14573 0.359668,-0.14572 0.675928,-0.44028 v 0.65422 q -0.328662,0.22325 -0.697632,0.33487 -0.365869,0.11162 -0.775146,0.11162 -1.051099,0 -1.655713,-0.64182 -0.604615,-0.64492 -0.604615,-1.75804 0,-1.11621 0.604615,-1.75803 0.604614,-0.64492 1.655713,-0.64492 0.415478,0 0.781347,0.11162 0.36897,0.10852 0.691431,0.32866 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5307" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 20.444377,179.51801 q -0.69143,0 -0.958081,0.15813 -0.26665,0.15813 -0.26665,0.5395 0,0.30386 0.198437,0.48369 0.201538,0.17674 0.545703,0.17674 0.47439,0 0.759644,-0.33487 0.288355,-0.33796 0.288355,-0.89606 v -0.12713 z m 1.137915,-0.23564 v 1.98127 h -0.570507 v -0.5271 q -0.195337,0.31626 -0.486792,0.46819 -0.291456,0.14883 -0.713135,0.14883 -0.533301,0 -0.849561,-0.29766 -0.313159,-0.30075 -0.313159,-0.80305 0,-0.58601 0.390674,-0.88367 0.393774,-0.29765 1.172021,-0.29765 h 0.799952 v -0.0558 q 0,-0.39378 -0.26045,-0.60772 -0.257348,-0.21704 -0.725537,-0.21704 -0.297656,0 -0.579809,0.0713 -0.282154,0.0713 -0.542603,0.21394 v -0.52709 q 0.313159,-0.12093 0.607715,-0.17984 0.294556,-0.062 0.573608,-0.062 0.753443,0 1.125513,0.39067 0.37207,0.39068 0.37207,1.18443 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5309" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 24.769695,178.32429 q -0.09612,-0.0558 -0.21084,-0.0806 -0.111621,-0.0279 -0.248047,-0.0279 -0.483691,0 -0.744141,0.31626 -0.257348,0.31315 -0.257348,0.90227 v 1.82934 H 22.73571 v -3.47265 h 0.573609 v 0.5395 q 0.179834,-0.31626 0.468188,-0.46819 0.288355,-0.15503 0.700733,-0.15503 0.05891,0 0.130224,0.009 0.07131,0.006 0.15813,0.0217 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5311" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 27.541618,178.31808 v -1.87895 h 0.570508 v 4.82451 h -0.570508 v -0.5209 q -0.179834,0.31006 -0.455786,0.46199 -0.272851,0.14883 -0.657324,0.14883 -0.629419,0 -1.026294,-0.5023 -0.393774,-0.50229 -0.393774,-1.32085 0,-0.81855 0.393774,-1.32085 0.396875,-0.50229 1.026294,-0.50229 0.384473,0 0.657324,0.15193 0.275952,0.14883 0.455786,0.45888 z m -1.944067,1.21233 q 0,0.62942 0.257349,0.98909 0.260449,0.35657 0.713134,0.35657 0.452686,0 0.713135,-0.35657 0.260449,-0.35967 0.260449,-0.98909 0,-0.62942 -0.260449,-0.98598 -0.260449,-0.35967 -0.713135,-0.35967 -0.452685,0 -0.713134,0.35967 -0.257349,0.35656 -0.257349,0.98598 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5313" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 29.287248,177.79099 h 0.570508 v 3.47265 h -0.570508 z m 0,-1.35186 h 0.570508 v 0.72244 h -0.570508 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5315" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 33.938127,179.16765 v 2.09599 h -0.570508 v -2.07739 q 0,-0.49299 -0.192236,-0.73794 -0.192236,-0.24495 -0.576709,-0.24495 -0.461987,0 -0.728638,0.29456 -0.26665,0.29455 -0.26665,0.80305 v 1.96267 h -0.573608 v -3.47265 h 0.573608 v 0.5395 q 0.204639,-0.31316 0.480591,-0.46819 0.279053,-0.15503 0.641821,-0.15503 0.598413,0 0.905371,0.37207 0.306958,0.36897 0.306958,1.08831 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5317" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 36.654241,179.51801 q -0.691431,0 -0.958081,0.15813 -0.26665,0.15813 -0.26665,0.5395 0,0.30386 0.198437,0.48369 0.201538,0.17674 0.545703,0.17674 0.47439,0 0.759644,-0.33487 0.288354,-0.33796 0.288354,-0.89606 v -0.12713 z m 1.137915,-0.23564 v 1.98127 h -0.570508 v -0.5271 q -0.195337,0.31626 -0.486792,0.46819 -0.291455,0.14883 -0.713135,0.14883 -0.5333,0 -0.84956,-0.29766 -0.313159,-0.30075 -0.313159,-0.80305 0,-0.58601 0.390674,-0.88367 0.393774,-0.29765 1.172021,-0.29765 h 0.799951 v -0.0558 q 0,-0.39378 -0.260449,-0.60772 -0.257349,-0.21704 -0.725537,-0.21704 -0.297656,0 -0.57981,0.0713 -0.282153,0.0713 -0.542602,0.21394 v -0.52709 q 0.313159,-0.12093 0.607715,-0.17984 0.294555,-0.062 0.573608,-0.062 0.753442,0 1.125513,0.39067 0.37207,0.39068 0.37207,1.18443 z" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path5319" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke-width:0.26458332" | |||||
d="m 38.967278,176.43913 h 0.570508 v 4.82451 h -0.570508 z" /> | |||||
</g> | |||||
</g> | |||||
<g | |||||
aria-label="Host MIDI CC" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58329964px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke:none;stroke-width:0.26458299" | |||||
id="text845" | |||||
transform="translate(2.5400009)"> | |||||
<path | |||||
d="m 17.266437,185.05265 h 0.487136 v 1.47588 h 1.770091 v -1.47588 H 20.0108 v 3.60047 h -0.487136 v -1.71462 h -1.770091 v 1.71462 h -0.487136 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path830" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 22.007578,186.26326 q -0.356912,0 -0.564307,0.27974 -0.207394,0.27733 -0.207394,0.76206 0,0.48472 0.204983,0.76446 0.207395,0.27733 0.566718,0.27733 0.354501,0 0.561895,-0.27974 0.207395,-0.27974 0.207395,-0.76205 0,-0.47991 -0.207395,-0.75965 -0.207394,-0.28215 -0.561895,-0.28215 z m 0,-0.37621 q 0.578776,0 0.909161,0.37621 0.330385,0.3762 0.330385,1.0418 0,0.66318 -0.330385,1.04179 -0.330385,0.37621 -0.909161,0.37621 -0.581188,0 -0.911572,-0.37621 -0.327974,-0.37861 -0.327974,-1.04179 0,-0.6656 0.327974,-1.0418 0.330384,-0.37621 0.911572,-0.37621 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path832" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 25.704511,186.03175 v 0.41961 q -0.188102,-0.0965 -0.390674,-0.14469 -0.202571,-0.0482 -0.419612,-0.0482 -0.330385,0 -0.496783,0.10128 -0.163987,0.10129 -0.163987,0.30386 0,0.15434 0.118167,0.24357 0.118167,0.0868 0.475079,0.1664 l 0.151928,0.0338 q 0.472668,0.10128 0.670416,0.28697 0.20016,0.18328 0.20016,0.51367 0,0.3762 -0.299034,0.59565 -0.296623,0.21946 -0.817522,0.21946 -0.217041,0 -0.453374,-0.0434 -0.233922,-0.041 -0.494371,-0.1254 v -0.4582 q 0.245979,0.12781 0.484725,0.19293 0.238745,0.0627 0.472667,0.0627 0.313504,0 0.482313,-0.10611 0.16881,-0.10852 0.16881,-0.30386 0,-0.18087 -0.12299,-0.27733 -0.120578,-0.0965 -0.532956,-0.18569 l -0.154341,-0.0362 q -0.412378,-0.0868 -0.595657,-0.26528 -0.183279,-0.18086 -0.183279,-0.49437 0,-0.38103 0.270096,-0.58842 0.270095,-0.2074 0.766878,-0.2074 0.24598,0 0.463021,0.0362 0.217041,0.0362 0.40032,0.10852 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path834" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 26.994699,185.18529 v 0.76688 h 0.913984 v 0.34485 h -0.913984 v 1.46623 q 0,0.33039 0.08923,0.42444 0.09164,0.0941 0.36897,0.0941 h 0.455786 v 0.37138 h -0.455786 q -0.513664,0 -0.709001,-0.19051 -0.195337,-0.19293 -0.195337,-0.69936 v -1.46623 H 26.223 v -0.34485 h 0.325561 v -0.76688 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path836" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 30.081506,185.05265 h 0.725882 l 0.918807,2.45015 0.92363,-2.45015 h 0.725882 v 3.60047 h -0.475079 v -3.16156 l -0.928453,2.46944 h -0.489549 l -0.928453,-2.46944 v 3.16156 h -0.472667 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path838" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 34.342746,185.05265 h 0.487136 v 3.60047 h -0.487136 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path840" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 36.286469,185.45297 v 2.79983 h 0.588423 q 0.745174,0 1.090028,-0.33762 0.347266,-0.33762 0.347266,-1.06591 0,-0.72347 -0.347266,-1.05868 -0.344854,-0.33762 -1.090028,-0.33762 z m -0.487136,-0.40032 h 1.0008 q 1.04662,0 1.536169,0.4365 0.489548,0.43408 0.489548,1.36012 0,0.93086 -0.49196,1.36736 -0.49196,0.43649 -1.533757,0.43649 h -1.0008 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path842" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 39.602374,185.05265 h 0.487137 v 3.60047 h -0.487137 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path844" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 45.325022,185.32998 v 0.51367 q -0.245979,-0.2291 -0.525721,-0.34245 -0.277331,-0.11334 -0.590834,-0.11334 -0.617362,0 -0.945335,0.37862 -0.327973,0.3762 -0.327973,1.09002 0,0.71142 0.327973,1.09003 0.327973,0.37621 0.945335,0.37621 0.313503,0 0.590834,-0.11335 0.279742,-0.11334 0.525721,-0.34244 v 0.50884 q -0.255626,0.17363 -0.542602,0.26045 -0.284565,0.0868 -0.602892,0.0868 -0.817521,0 -1.287777,-0.4992 -0.470256,-0.5016 -0.470256,-1.36736 0,-0.86816 0.470256,-1.36735 0.470256,-0.50161 1.287777,-0.50161 0.32315,0 0.607715,0.0868 0.286976,0.0844 0.537779,0.25562 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path846" | |||||
inkscape:connector-curvature="0" /> | |||||
<path | |||||
d="m 48.773564,185.32998 v 0.51367 q -0.24598,-0.2291 -0.525722,-0.34245 -0.27733,-0.11334 -0.590834,-0.11334 -0.617361,0 -0.945334,0.37862 -0.327973,0.3762 -0.327973,1.09002 0,0.71142 0.327973,1.09003 0.327973,0.37621 0.945334,0.37621 0.313504,0 0.590834,-0.11335 0.279742,-0.11334 0.525722,-0.34244 v 0.50884 q -0.255626,0.17363 -0.542603,0.26045 -0.284565,0.0868 -0.602891,0.0868 -0.817522,0 -1.287777,-0.4992 -0.470256,-0.5016 -0.470256,-1.36736 0,-0.86816 0.470256,-1.36735 0.470255,-0.50161 1.287777,-0.50161 0.32315,0 0.607715,0.0868 0.286976,0.0844 0.537779,0.25562 z" | |||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888998px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808a8a;fill-opacity:1;stroke-width:0.26458299" | |||||
id="path848" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
</g> | |||||
</svg> |
@@ -24,9 +24,9 @@ USE_NAMESPACE_DISTRHO; | |||||
struct NanoKnob : Knob { | struct NanoKnob : Knob { | ||||
static const int ringSize = 4; | static const int ringSize = 4; | ||||
std::string displayLabel; | |||||
std::string displayString; | |||||
float normalizedValue = 0.0f; | |||||
std::string displayLabel = "Level"; | |||||
std::string displayString = "0 dB"; | |||||
float normalizedValue = 0.5f; | |||||
NanoKnob() | NanoKnob() | ||||
{ | { | ||||
@@ -39,10 +39,14 @@ struct HostMIDICC : Module { | |||||
}; | }; | ||||
enum InputIds { | enum InputIds { | ||||
ENUMS(CC_INPUTS, 16), | ENUMS(CC_INPUTS, 16), | ||||
CC_INPUT_CHANNEL_PRESSURE, | |||||
CC_INPUT_PITCHBEND, | |||||
NUM_INPUTS | NUM_INPUTS | ||||
}; | }; | ||||
enum OutputIds { | enum OutputIds { | ||||
ENUMS(CC_OUTPUT, 16), | ENUMS(CC_OUTPUT, 16), | ||||
CC_OUTPUT_CHANNEL_PRESSURE, | |||||
CC_OUTPUT_PITCHBEND, | |||||
NUM_OUTPUTS | NUM_OUTPUTS | ||||
}; | }; | ||||
enum LightIds { | enum LightIds { | ||||
@@ -272,16 +276,22 @@ struct HostMIDICC : Module { | |||||
for (int i = 0; i < 16; i++) | for (int i = 0; i < 16; i++) | ||||
configInput(CC_INPUTS + i, string::f("Cell %d", i + 1)); | configInput(CC_INPUTS + i, string::f("Cell %d", i + 1)); | ||||
configInput(CC_INPUT_CHANNEL_PRESSURE, "Channel pressure"); | |||||
configInput(CC_INPUT_PITCHBEND, "Pitchbend"); | |||||
for (int i = 0; i < 16; i++) | for (int i = 0; i < 16; i++) | ||||
configOutput(CC_OUTPUT + i, string::f("Cell %d", i + 1)); | configOutput(CC_OUTPUT + i, string::f("Cell %d", i + 1)); | ||||
configOutput(CC_OUTPUT_CHANNEL_PRESSURE, "Channel pressure"); | |||||
configOutput(CC_OUTPUT_PITCHBEND, "Pitchbend"); | |||||
onReset(); | onReset(); | ||||
} | } | ||||
void onReset() override | void onReset() override | ||||
{ | { | ||||
for (int i = 0; i < 16; i++) { | for (int i = 0; i < 16; i++) { | ||||
learnedCcs[i] = i; | |||||
learnedCcs[i] = i + 1; | |||||
} | } | ||||
midiInput.reset(); | midiInput.reset(); | ||||
midiOutput.reset(); | midiOutput.reset(); | ||||
@@ -353,7 +363,7 @@ struct HostMIDICC : Module { | |||||
if (json_t* const ccJ = json_array_get(ccsJ, i)) | if (json_t* const ccJ = json_array_get(ccsJ, i)) | ||||
learnedCcs[i] = json_integer_value(ccJ); | learnedCcs[i] = json_integer_value(ccJ); | ||||
else | else | ||||
learnedCcs[i] = i; | |||||
learnedCcs[i] = i + 1; | |||||
} | } | ||||
} | } | ||||
@@ -386,12 +396,204 @@ struct HostMIDICC : Module { | |||||
// -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
struct CardinalMIDILearnPJ301MPort : PJ301MPort { | |||||
void onDragStart(const DragStartEvent& e) override { | |||||
PJ301MPort::onDragStart(e); | |||||
} | |||||
void onDragEnd(const DragEndEvent& e) override { | |||||
PJ301MPort::onDragEnd(e); | |||||
} | |||||
}; | |||||
struct CardinalLedDisplayChoice : LedDisplayChoice { | |||||
CardinalLedDisplayChoice(const char* const label = nullptr) | |||||
{ | |||||
color = nvgRGBf(0.76f, 0.11f, 0.22f); | |||||
textOffset.y -= 4; | |||||
if (label != nullptr) | |||||
text = label; | |||||
} | |||||
void drawLayer(const DrawArgs& args, int layer) override | |||||
{ | |||||
// nvgScissor(args.vg, RECT_ARGS(args.clipBox)); | |||||
if (layer == 1) | |||||
{ | |||||
nvgFillColor(args.vg, color); | |||||
nvgTextAlign(args.vg, NVG_ALIGN_CENTER); | |||||
nvgTextLetterSpacing(args.vg, 0.0f); | |||||
nvgText(args.vg, box.size.x * 0.5f, textOffset.y, text.c_str(), NULL); | |||||
} | |||||
Widget::drawLayer(args, layer); | |||||
// nvgResetScissor(args.vg); | |||||
} | |||||
}; | |||||
/** | |||||
* Based on VCVRack's CcChoice as defined in src/core/plugin.hpp | |||||
* Copyright (C) 2016-2021 VCV. | |||||
* | |||||
* This program is free software: you can redistribute it and/or | |||||
* modify it under the terms of the GNU General Public License as | |||||
* published by the Free Software Foundation; either version 3 of | |||||
* the License, or (at your option) any later version. | |||||
*/ | |||||
struct CardinalCcChoice : CardinalLedDisplayChoice { | |||||
HostMIDICC* const module; | |||||
const int id; | |||||
int focusCc; | |||||
CardinalCcChoice(HostMIDICC* const m, const int i) | |||||
: CardinalLedDisplayChoice(), | |||||
module(m), | |||||
id(i) {} | |||||
void step() override | |||||
{ | |||||
int cc; | |||||
if (module == nullptr) | |||||
{ | |||||
cc = id; | |||||
} | |||||
else if (module->midiInput.learningId == id) | |||||
{ | |||||
cc = focusCc; | |||||
color.a = 0.5f; | |||||
} | |||||
else | |||||
{ | |||||
cc = module->learnedCcs[id]; | |||||
color.a = 1.0f; | |||||
// Cancel focus if no longer learning | |||||
if (APP->event->getSelectedWidget() == this) | |||||
APP->event->setSelectedWidget(NULL); | |||||
} | |||||
// Set text | |||||
if (cc < 0) | |||||
text = "--"; | |||||
else | |||||
text = string::f("%d", cc); | |||||
} | |||||
void onSelect(const SelectEvent& e) override | |||||
{ | |||||
DISTRHO_SAFE_ASSERT_RETURN(module != nullptr,); | |||||
module->midiInput.learningId = id; | |||||
focusCc = -1; | |||||
e.consume(this); | |||||
} | |||||
void onDeselect(const DeselectEvent&) override | |||||
{ | |||||
DISTRHO_SAFE_ASSERT_RETURN(module != nullptr,); | |||||
if (module->midiInput.learningId == id) | |||||
{ | |||||
if (0 <= focusCc && focusCc < 128) | |||||
module->learnedCcs[id] = focusCc; | |||||
module->midiInput.learningId = -1; | |||||
} | |||||
} | |||||
void onSelectText(const SelectTextEvent& e) override | |||||
{ | |||||
int c = e.codepoint; | |||||
if ('0' <= c && c <= '9') | |||||
{ | |||||
if (focusCc < 0) | |||||
focusCc = 0; | |||||
focusCc = focusCc * 10 + (c - '0'); | |||||
} | |||||
if (focusCc >= 128) | |||||
focusCc = -1; | |||||
e.consume(this); | |||||
} | |||||
void onSelectKey(const SelectKeyEvent& e) override | |||||
{ | |||||
if ((e.key == GLFW_KEY_ENTER || e.key == GLFW_KEY_KP_ENTER) && e.action == GLFW_PRESS && (e.mods & RACK_MOD_MASK) == 0) { | |||||
DeselectEvent eDeselect; | |||||
onDeselect(eDeselect); | |||||
APP->event->selectedWidget = NULL; | |||||
e.consume(this); | |||||
} | |||||
} | |||||
}; | |||||
struct CCGridDisplay : Widget { | |||||
void draw(const DrawArgs& args) override | |||||
{ | |||||
nvgBeginPath(args.vg); | |||||
nvgRoundedRect(args.vg, 0, 0, box.size.x, box.size.y, 4); | |||||
nvgFillColor(args.vg, nvgRGB(0, 0, 0)); | |||||
nvgFill(args.vg); | |||||
Widget::draw(args); | |||||
} | |||||
void setModule(HostMIDICC* const module) | |||||
{ | |||||
LedDisplaySeparator* hSeparators[6]; | |||||
LedDisplaySeparator* vSeparators[3]; | |||||
LedDisplayChoice* choices[3][6]; | |||||
// Add vSeparators | |||||
for (int x = 0; x < 3; ++x) | |||||
{ | |||||
vSeparators[x] = new LedDisplaySeparator; | |||||
vSeparators[x]->box.pos = Vec(box.size.x / 3 * (x+1), 0.0f); | |||||
vSeparators[x]->box.size = Vec(1.0f, box.size.y); | |||||
addChild(vSeparators[x]); | |||||
} | |||||
// Add hSeparators and choice widgets | |||||
for (int y = 0; y < 6; ++y) | |||||
{ | |||||
hSeparators[y] = new LedDisplaySeparator; | |||||
hSeparators[y]->box.pos = Vec(0.0f, box.size.y / 6 * (y+1)); | |||||
hSeparators[y]->box.size = Vec(box.size.x, 1.0f); | |||||
addChild(hSeparators[y]); | |||||
for (int x = 0; x < 3; ++x) | |||||
{ | |||||
const int id = 6 * x + y; | |||||
switch (id) | |||||
{ | |||||
case 16: | |||||
choices[x][y] = new CardinalLedDisplayChoice("Ch.press"); | |||||
break; | |||||
case 17: | |||||
choices[x][y] = new CardinalLedDisplayChoice("Pbend"); | |||||
break; | |||||
default: | |||||
choices[x][y] = new CardinalCcChoice(module, id); | |||||
break; | |||||
} | |||||
choices[x][y]->box.pos = Vec(box.size.x / 3 * x, box.size.y / 6 * y); | |||||
choices[x][y]->box.size = Vec(box.size.x / 3, box.size.y / 6); | |||||
addChild(choices[x][y]); | |||||
} | |||||
} | |||||
} | |||||
}; | |||||
struct HostMIDICCWidget : ModuleWidget { | struct HostMIDICCWidget : ModuleWidget { | ||||
static constexpr const float startX_In = 14.0f; | static constexpr const float startX_In = 14.0f; | ||||
static constexpr const float startX_Out = 96.0f; | |||||
static constexpr const float startY = 74.0f; | |||||
static constexpr const float startX_Out = 115.0f; | |||||
static constexpr const float startY = 190.0f; | |||||
static constexpr const float padding = 29.0f; | static constexpr const float padding = 29.0f; | ||||
static constexpr const float middleX = startX_In + (startX_Out - startX_In) * 0.5f + padding * 0.35f; | |||||
HostMIDICC* const module; | HostMIDICC* const module; | ||||
@@ -399,12 +601,31 @@ struct HostMIDICCWidget : ModuleWidget { | |||||
: module(m) | : module(m) | ||||
{ | { | ||||
setModule(m); | setModule(m); | ||||
setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/HostMIDI.svg"))); | |||||
setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/HostMIDICC.svg"))); | |||||
addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, 0))); | addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, 0))); | ||||
addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); | addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); | ||||
addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | ||||
addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | ||||
for (int i=0; i<18; ++i) | |||||
{ | |||||
const float x = startX_In + int(i / 6) * padding; | |||||
const float y = startY + int(i % 6) * padding; | |||||
addInput(createInput<CardinalMIDILearnPJ301MPort>(Vec(x, y), module, i)); | |||||
} | |||||
for (int i=0; i<18; ++i) | |||||
{ | |||||
const float x = startX_Out + int(i / 6) * padding; | |||||
const float y = startY + int(i % 6) * padding; | |||||
addOutput(createOutput<CardinalMIDILearnPJ301MPort>(Vec(x, y), module, i)); | |||||
} | |||||
CCGridDisplay* const display = createWidget<CCGridDisplay>(Vec(startX_In - 3.0f, 70.0f)); | |||||
display->box.size = Vec(box.size.x - startX_In * 2.0f + 6.0f, startY - 74.0f - 9.0f); | |||||
display->setModule(m); | |||||
addChild(display); | |||||
} | } | ||||
void draw(const DrawArgs& args) override | void draw(const DrawArgs& args) override | ||||
@@ -415,6 +636,11 @@ struct HostMIDICCWidget : ModuleWidget { | |||||
nvgRGB(0x18, 0x19, 0x19), nvgRGB(0x21, 0x22, 0x22))); | nvgRGB(0x18, 0x19, 0x19), nvgRGB(0x21, 0x22, 0x22))); | ||||
nvgFill(args.vg); | nvgFill(args.vg); | ||||
nvgBeginPath(args.vg); | |||||
nvgRoundedRect(args.vg, startX_Out - 2.5f, startY - 2.0f, padding * 3, padding * 6, 4); | |||||
nvgFillColor(args.vg, nvgRGB(0xd0, 0xd0, 0xd0)); | |||||
nvgFill(args.vg); | |||||
ModuleWidget::draw(args); | ModuleWidget::draw(args); | ||||
} | } | ||||
@@ -12,16 +12,6 @@ | |||||
"changelogUrl": "https://github.com/VCVRack/Rack/blob/v2/CHANGELOG.md", | "changelogUrl": "https://github.com/VCVRack/Rack/blob/v2/CHANGELOG.md", | ||||
"description": "Necessary modules built into Cardinal", | "description": "Necessary modules built into Cardinal", | ||||
"modules": [ | "modules": [ | ||||
{ | |||||
"slug": "MIDICCToCVInterface", | |||||
"name": "MIDI CC to CV", | |||||
"description": "Converts MIDI CC from an external device to CV", | |||||
"manualUrl": "https://vcvrack.com/manual/Core#MIDI-CC", | |||||
"tags": [ | |||||
"External", | |||||
"MIDI" | |||||
] | |||||
}, | |||||
{ | { | ||||
"slug": "MIDITriggerToCVInterface", | "slug": "MIDITriggerToCVInterface", | ||||
"name": "MIDI to Gate", | "name": "MIDI to Gate", | ||||
@@ -42,16 +32,6 @@ | |||||
"MIDI" | "MIDI" | ||||
] | ] | ||||
}, | }, | ||||
{ | |||||
"slug": "CV-CC", | |||||
"name": "CV to MIDI CC", | |||||
"description": "Converts CV to MIDI CC and sends to an external device", | |||||
"manualUrl": "https://vcvrack.com/manual/Core#CV-CC", | |||||
"tags": [ | |||||
"External", | |||||
"MIDI" | |||||
] | |||||
}, | |||||
{ | { | ||||
"slug": "CV-Gate", | "slug": "CV-Gate", | ||||
"name": "Gate to MIDI", | "name": "Gate to MIDI", | ||||
@@ -597,10 +597,8 @@ std::string pluginPath(const std::string& dirname); | |||||
// core plugins | // core plugins | ||||
namespace core { | namespace core { | ||||
extern Model* modelMIDICC_CV; | |||||
extern Model* modelMIDI_Gate; | extern Model* modelMIDI_Gate; | ||||
extern Model* modelMIDIMap; | extern Model* modelMIDIMap; | ||||
extern Model* modelCV_MIDICC; | |||||
extern Model* modelGate_MIDI; | extern Model* modelGate_MIDI; | ||||
extern Model* modelBlank; | extern Model* modelBlank; | ||||
} | } | ||||
@@ -694,10 +692,8 @@ static void initStatic__Core() | |||||
const StaticPluginLoader spl(p, "Core"); | const StaticPluginLoader spl(p, "Core"); | ||||
if (spl.ok()) | if (spl.ok()) | ||||
{ | { | ||||
p->addModel(rack::core::modelMIDICC_CV); | |||||
p->addModel(rack::core::modelMIDI_Gate); | p->addModel(rack::core::modelMIDI_Gate); | ||||
p->addModel(rack::core::modelMIDIMap); | p->addModel(rack::core::modelMIDIMap); | ||||
p->addModel(rack::core::modelCV_MIDICC); | |||||
p->addModel(rack::core::modelGate_MIDI); | p->addModel(rack::core::modelGate_MIDI); | ||||
p->addModel(rack::core::modelBlank); | p->addModel(rack::core::modelBlank); | ||||
} | } | ||||
@@ -129,7 +129,9 @@ IGNORED_FILES += Rack/src/app/Scene.cpp | |||||
IGNORED_FILES += Rack/src/app/TipWindow.cpp | IGNORED_FILES += Rack/src/app/TipWindow.cpp | ||||
IGNORED_FILES += Rack/src/core/Audio.cpp | IGNORED_FILES += Rack/src/core/Audio.cpp | ||||
IGNORED_FILES += Rack/src/core/CV_MIDI.cpp | IGNORED_FILES += Rack/src/core/CV_MIDI.cpp | ||||
IGNORED_FILES += Rack/src/core/CV_MIDICC.cpp | |||||
IGNORED_FILES += Rack/src/core/MIDI_CV.cpp | IGNORED_FILES += Rack/src/core/MIDI_CV.cpp | ||||
IGNORED_FILES += Rack/src/core/MIDICC_CV.cpp | |||||
IGNORED_FILES += Rack/src/core/Notes.cpp | IGNORED_FILES += Rack/src/core/Notes.cpp | ||||
IGNORED_FILES += Rack/src/engine/Engine.cpp | IGNORED_FILES += Rack/src/engine/Engine.cpp | ||||
IGNORED_FILES += Rack/src/plugin/Model.cpp | IGNORED_FILES += Rack/src/plugin/Model.cpp | ||||
@@ -88,10 +88,11 @@ static const std::map<PluginModuleSlug, PluginModuleSlug> moduleSlugFallbacks = | |||||
{{"Core", "AudioInterface"}, {"Cardinal", "HostAudio8"}}, | {{"Core", "AudioInterface"}, {"Cardinal", "HostAudio8"}}, | ||||
{{"Core", "AudioInterface16"}, {"Cardinal", "HostAudio8"}}, | {{"Core", "AudioInterface16"}, {"Cardinal", "HostAudio8"}}, | ||||
{{"Core", "MIDIToCVInterface"}, {"Cardinal", "HostMIDI"}}, | {{"Core", "MIDIToCVInterface"}, {"Cardinal", "HostMIDI"}}, | ||||
{{"Core", "MIDICCToCVInterface"}, {"Cardinal", "HostMIDICC"}}, | |||||
{{"Core", "CV-MIDI"}, {"Cardinal", "HostMIDI"}}, | {{"Core", "CV-MIDI"}, {"Cardinal", "HostMIDI"}}, | ||||
{{"Core", "CV-CC"}, {"Cardinal", "HostMIDICC"}}, | |||||
{{"Core", "Notes"}, {"Cardinal", "TextEditor"}}, | {{"Core", "Notes"}, {"Cardinal", "TextEditor"}}, | ||||
{{"MindMeld-ShapeMasterPro", "ShapeMasterPro"}, {"MindMeldModular", "ShapeMaster"}}, | {{"MindMeld-ShapeMasterPro", "ShapeMasterPro"}, {"MindMeldModular", "ShapeMaster"}}, | ||||
{{"MindMeldModular", "ShapeMaster"}, {"MindMeld-ShapeMasterPro", "ShapeMasterPro"}}, | |||||
// {{"", ""}, {"", ""}}, | // {{"", ""}, {"", ""}}, | ||||
}; | }; | ||||