@@ -32,6 +32,21 @@ NOTE: here's an example video: https://vimeo.com/288968750 | |||
# Legato | |||
Meant for legato-slides, this module applies a slew filter to the incoming (V/oct) signal. | |||
Two parameter sets are used to configure the slide speed | |||
1) when a new note is triggered ("min") | |||
2) when the next note is played while the previous note key is still held down (i.e. no new trigger) ("max") | |||
- Connect the original V/oct signal to the "I" input | |||
- Connect the trigger (gate) to the "T" input. | |||
- The "R" knob (rate) determines the interpolation speed between the min/max parameter sets. The speed can be modulated via the "M" input. Whe a new note is triggered, the interpolation is reset to 0. | |||
- The "min" and "max" knobs are used to adjust the rise and fall rates | |||
# Obxd_VCF | |||
An adaption of Filatov Vadim's excellent Ob-Xd filter. Distributed under terms of the GNU General Public License V3. | |||
@@ -2,6 +2,7 @@ ALL_OBJ= \ | |||
src/AttenuMixer.o \ | |||
src/DownSampler.o \ | |||
src/bsp.o \ | |||
src/Legato.o \ | |||
src/Obxd_VCF.o \ | |||
src/RMS.o \ | |||
src/Scanner.o \ | |||
@@ -0,0 +1,555 @@ | |||
<?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.239717mm" | |||
height="128.4993mm" | |||
viewBox="0 0 15.239717 128.4993" | |||
version="1.1" | |||
id="svg261903" | |||
sodipodi:docname="Legato.svg" | |||
inkscape:version="0.92.3 (2405546, 2018-03-11)"> | |||
<defs | |||
id="defs261897"> | |||
<linearGradient | |||
id="linear20" | |||
gradientUnits="userSpaceOnUse" | |||
x1="-0.095554203" | |||
y1="0" | |||
x2="1.32507" | |||
y2="0" | |||
gradientTransform="matrix(0,6.4087959,-6.4087959,0,64.256445,118.95198)"> | |||
<stop | |||
offset="0" | |||
style="stop-color:rgb(25.489807%,25.097656%,25.881958%);stop-opacity:1;" | |||
id="stop217759" /> | |||
<stop | |||
offset="0.0625" | |||
style="stop-color:rgb(25.489807%,25.097656%,25.881958%);stop-opacity:1;" | |||
id="stop217761" /> | |||
<stop | |||
offset="0.078125" | |||
style="stop-color:rgb(25.398254%,24.996948%,25.778198%);stop-opacity:1;" | |||
id="stop217763" /> | |||
<stop | |||
offset="0.09375" | |||
style="stop-color:rgb(25.177002%,24.754333%,25.527954%);stop-opacity:1;" | |||
id="stop217765" /> | |||
<stop | |||
offset="0.109375" | |||
style="stop-color:rgb(24.916077%,24.465942%,25.231934%);stop-opacity:1;" | |||
id="stop217767" /> | |||
<stop | |||
offset="0.125" | |||
style="stop-color:rgb(24.653625%,24.179077%,24.935913%);stop-opacity:1;" | |||
id="stop217769" /> | |||
<stop | |||
offset="0.140625" | |||
style="stop-color:rgb(24.3927%,23.892212%,24.639893%);stop-opacity:1;" | |||
id="stop217771" /> | |||
<stop | |||
offset="0.15625" | |||
style="stop-color:rgb(24.131775%,23.605347%,24.343872%);stop-opacity:1;" | |||
id="stop217773" /> | |||
<stop | |||
offset="0.171875" | |||
style="stop-color:rgb(23.87085%,23.316956%,24.047852%);stop-opacity:1;" | |||
id="stop217775" /> | |||
<stop | |||
offset="0.1875" | |||
style="stop-color:rgb(23.609924%,23.03009%,23.751831%);stop-opacity:1;" | |||
id="stop217777" /> | |||
<stop | |||
offset="0.203125" | |||
style="stop-color:rgb(23.348999%,22.743225%,23.455811%);stop-opacity:1;" | |||
id="stop217779" /> | |||
<stop | |||
offset="0.21875" | |||
style="stop-color:rgb(23.088074%,22.45636%,23.15979%);stop-opacity:1;" | |||
id="stop217781" /> | |||
<stop | |||
offset="0.234375" | |||
style="stop-color:rgb(22.825623%,22.167969%,22.86377%);stop-opacity:1;" | |||
id="stop217783" /> | |||
<stop | |||
offset="0.25" | |||
style="stop-color:rgb(22.564697%,21.881104%,22.567749%);stop-opacity:1;" | |||
id="stop217785" /> | |||
<stop | |||
offset="0.265625" | |||
style="stop-color:rgb(22.303772%,21.594238%,22.271729%);stop-opacity:1;" | |||
id="stop217787" /> | |||
<stop | |||
offset="0.28125" | |||
style="stop-color:rgb(22.042847%,21.307373%,21.975708%);stop-opacity:1;" | |||
id="stop217789" /> | |||
<stop | |||
offset="0.296875" | |||
style="stop-color:rgb(21.781921%,21.018982%,21.679688%);stop-opacity:1;" | |||
id="stop217791" /> | |||
<stop | |||
offset="0.3125" | |||
style="stop-color:rgb(21.520996%,20.732117%,21.383667%);stop-opacity:1;" | |||
id="stop217793" /> | |||
<stop | |||
offset="0.328125" | |||
style="stop-color:rgb(21.260071%,20.445251%,21.087646%);stop-opacity:1;" | |||
id="stop217795" /> | |||
<stop | |||
offset="0.34375" | |||
style="stop-color:rgb(20.99762%,20.15686%,20.793152%);stop-opacity:1;" | |||
id="stop217797" /> | |||
<stop | |||
offset="0.359375" | |||
style="stop-color:rgb(20.736694%,19.869995%,20.497131%);stop-opacity:1;" | |||
id="stop217799" /> | |||
<stop | |||
offset="0.375" | |||
style="stop-color:rgb(20.475769%,19.58313%,20.201111%);stop-opacity:1;" | |||
id="stop217801" /> | |||
<stop | |||
offset="0.390625" | |||
style="stop-color:rgb(20.214844%,19.296265%,19.90509%);stop-opacity:1;" | |||
id="stop217803" /> | |||
<stop | |||
offset="0.40625" | |||
style="stop-color:rgb(19.953918%,19.007874%,19.60907%);stop-opacity:1;" | |||
id="stop217805" /> | |||
<stop | |||
offset="0.421875" | |||
style="stop-color:rgb(19.692993%,18.721008%,19.313049%);stop-opacity:1;" | |||
id="stop217807" /> | |||
<stop | |||
offset="0.4375" | |||
style="stop-color:rgb(19.432068%,18.434143%,19.017029%);stop-opacity:1;" | |||
id="stop217809" /> | |||
<stop | |||
offset="0.453125" | |||
style="stop-color:rgb(19.169617%,18.147278%,18.721008%);stop-opacity:1;" | |||
id="stop217811" /> | |||
<stop | |||
offset="0.46875" | |||
style="stop-color:rgb(18.908691%,17.858887%,18.424988%);stop-opacity:1;" | |||
id="stop217813" /> | |||
<stop | |||
offset="0.484375" | |||
style="stop-color:rgb(18.647766%,17.572021%,18.128967%);stop-opacity:1;" | |||
id="stop217815" /> | |||
<stop | |||
offset="0.5" | |||
style="stop-color:rgb(18.386841%,17.285156%,17.832947%);stop-opacity:1;" | |||
id="stop217817" /> | |||
<stop | |||
offset="0.515625" | |||
style="stop-color:rgb(18.125916%,16.998291%,17.536926%);stop-opacity:1;" | |||
id="stop217819" /> | |||
<stop | |||
offset="0.53125" | |||
style="stop-color:rgb(17.86499%,16.7099%,17.240906%);stop-opacity:1;" | |||
id="stop217821" /> | |||
<stop | |||
offset="0.546875" | |||
style="stop-color:rgb(17.604065%,16.423035%,16.944885%);stop-opacity:1;" | |||
id="stop217823" /> | |||
<stop | |||
offset="0.5625" | |||
style="stop-color:rgb(17.341614%,16.136169%,16.648865%);stop-opacity:1;" | |||
id="stop217825" /> | |||
<stop | |||
offset="0.578125" | |||
style="stop-color:rgb(17.080688%,15.849304%,16.352844%);stop-opacity:1;" | |||
id="stop217827" /> | |||
<stop | |||
offset="0.59375" | |||
style="stop-color:rgb(16.819763%,15.560913%,16.056824%);stop-opacity:1;" | |||
id="stop217829" /> | |||
<stop | |||
offset="0.609375" | |||
style="stop-color:rgb(16.558838%,15.274048%,15.760803%);stop-opacity:1;" | |||
id="stop217831" /> | |||
<stop | |||
offset="0.625" | |||
style="stop-color:rgb(16.297913%,14.987183%,15.464783%);stop-opacity:1;" | |||
id="stop217833" /> | |||
<stop | |||
offset="0.640625" | |||
style="stop-color:rgb(16.036987%,14.700317%,15.168762%);stop-opacity:1;" | |||
id="stop217835" /> | |||
<stop | |||
offset="0.65625" | |||
style="stop-color:rgb(15.776062%,14.411926%,14.872742%);stop-opacity:1;" | |||
id="stop217837" /> | |||
<stop | |||
offset="0.671875" | |||
style="stop-color:rgb(15.513611%,14.125061%,14.576721%);stop-opacity:1;" | |||
id="stop217839" /> | |||
<stop | |||
offset="0.6875" | |||
style="stop-color:rgb(15.252686%,13.838196%,14.280701%);stop-opacity:1;" | |||
id="stop217841" /> | |||
<stop | |||
offset="0.703125" | |||
style="stop-color:rgb(14.99176%,13.551331%,13.98468%);stop-opacity:1;" | |||
id="stop217843" /> | |||
<stop | |||
offset="0.71875" | |||
style="stop-color:rgb(14.730835%,13.262939%,13.68866%);stop-opacity:1;" | |||
id="stop217845" /> | |||
<stop | |||
offset="0.734375" | |||
style="stop-color:rgb(14.46991%,12.976074%,13.392639%);stop-opacity:1;" | |||
id="stop217847" /> | |||
<stop | |||
offset="0.75" | |||
style="stop-color:rgb(14.208984%,12.689209%,13.096619%);stop-opacity:1;" | |||
id="stop217849" /> | |||
<stop | |||
offset="0.765625" | |||
style="stop-color:rgb(13.948059%,12.402344%,12.802124%);stop-opacity:1;" | |||
id="stop217851" /> | |||
<stop | |||
offset="0.78125" | |||
style="stop-color:rgb(13.771057%,12.207031%,12.600708%);stop-opacity:1;" | |||
id="stop217853" /> | |||
<stop | |||
offset="0.8125" | |||
style="stop-color:rgb(13.725281%,12.156677%,12.548828%);stop-opacity:1;" | |||
id="stop217855" /> | |||
<stop | |||
offset="0.875" | |||
style="stop-color:rgb(13.725281%,12.156677%,12.548828%);stop-opacity:1;" | |||
id="stop217857" /> | |||
<stop | |||
offset="1" | |||
style="stop-color:rgb(13.725281%,12.156677%,12.548828%);stop-opacity:1;" | |||
id="stop217859" /> | |||
</linearGradient> | |||
</defs> | |||
<sodipodi:namedview | |||
id="base" | |||
pagecolor="#ffffff" | |||
bordercolor="#666666" | |||
borderopacity="1.0" | |||
inkscape:pageopacity="0.0" | |||
inkscape:pageshadow="2" | |||
inkscape:zoom="2.8" | |||
inkscape:cx="84.442981" | |||
inkscape:cy="427.99593" | |||
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:snap-bbox="true" | |||
inkscape:bbox-nodes="true" | |||
inkscape:snap-nodes="false" | |||
inkscape:snap-others="false" | |||
inkscape:window-width="1600" | |||
inkscape:window-height="882" | |||
inkscape:window-x="299" | |||
inkscape:window-y="76" | |||
inkscape:window-maximized="0" | |||
inkscape:snap-global="false" /> | |||
<metadata | |||
id="metadata261900"> | |||
<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 /> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
inkscape:label="Layer 1" | |||
inkscape:groupmode="layer" | |||
id="layer1" | |||
transform="translate(-56.636094,-70.97654)"> | |||
<path | |||
inkscape:connector-curvature="0" | |||
id="path227414" | |||
d="M 56.636094,70.97654 H 71.689792 V 199.2898 H 56.636094 Z m 0,0" | |||
style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
id="path227416" | |||
d="M 71.875811,70.97654 H 56.636094 v 128.4993 H 71.875811 Z M 71.689756,199.28981 H 56.823489 V 71.163954 h 14.866267 z m 0,0" | |||
style="fill:#ababab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
<rect | |||
style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20018744;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" | |||
id="rect866-0-0" | |||
width="10.705551" | |||
height="10.537507" | |||
x="59.100956" | |||
y="179.87476" | |||
ry="1.2795542" /> | |||
<g | |||
aria-label="I" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text915" | |||
transform="matrix(0.33151022,0,0,0.33151022,70.343906,61.159974)"> | |||
<path | |||
d="m -1.3917749,85.387271 h 1.04386388 v 7.715291 H -1.3917749 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path937" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="T" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text919" | |||
transform="matrix(0.33151022,0,0,0.33151022,70.4384,67.963546)"> | |||
<path | |||
d="m -4.0650935,97.147136 h 6.5267332 v 0.878499 h -2.73885084 v 6.836795 H -1.3262427 v -6.836795 h -2.7388508 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path940" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="R" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text923" | |||
transform="matrix(0.33151022,0,0,0.33151022,70.046656,73.784863)"> | |||
<path | |||
d="m 1.4651083,114.07401 q 0.3358968,0.11369 0.651123,0.48576 0.3203939,0.37207 0.6407877,1.02319 l 1.0593669,2.1084 H 2.6950073 L 1.7079875,115.71215 Q 1.3255819,114.93701 0.96384688,114.68379 0.6072795,114.43058 -0.01283767,114.43058 H -1.1497191 v 3.26078 H -2.193583 v -7.71529 h 2.3564452 q 1.3229166,0 1.9740397,0.55294 0.651123,0.55293 0.651123,1.66915 0,0.72863 -0.3410645,1.20922 -0.3358968,0.4806 -0.9818521,0.66663 z m -2.6148274,-3.24011 v 2.73885 h 1.3125813 q 0.75447589,0 1.1368815,-0.34623 0.3875732,-0.3514 0.3875732,-1.02836 0,-0.67697 -0.3875732,-1.01803 -0.38240561,-0.34623 -1.1368815,-0.34623 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path943" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="M" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text927" | |||
transform="matrix(0.33151022,0,0,0.33151022,69.846203,78.464046)"> | |||
<path | |||
d="m -2.7281192,123.07228 h 1.5554606 l 1.96887201,5.25032 1.97920729,-5.25032 h 1.5554606 v 7.71529 H 3.3128556 v -6.77478 L 1.323313,129.30445 H 0.27428146 l -1.98954256,-5.29166 v 6.77478 h -1.0128581 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path946" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="MIN" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text931" | |||
transform="matrix(0.28169956,0,0,0.28169956,62.81098,89.915833)"> | |||
<path | |||
d="m -3.2626596,142.85021 h 1.5554606 l 1.968872,5.25033 1.9792073,-5.25033 h 1.5554606 v 7.7153 H 2.7783152 v -6.77478 l -1.98954261,5.29166 h -1.04903154 l -1.98954255,-5.29166 v 6.77478 h -1.0128581 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path949" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 5.873733,142.85021 h 1.0438639 v 7.7153 H 5.873733 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path951" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 8.9949889,142.85021 h 1.4055991 l 3.42098,6.45439 v -6.45439 h 1.012858 v 7.7153 h -1.405599 l -3.42098,-6.45439 v 6.45439 H 8.9949889 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path953" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="MAX" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text935" | |||
transform="matrix(0.28169956,0,0,0.28169956,62.422471,108.66995)"> | |||
<path | |||
d="m -2.7281192,160.75729 h 1.5554606 l 1.96887201,5.25032 1.97920729,-5.25032 h 1.5554606 v 7.71529 H 3.3128556 V 161.6978 L 1.323313,166.98947 H 0.27428146 L -1.7152611,161.6978 v 6.77478 h -1.0128581 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path956" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 8.9869273,161.78565 -1.4159342,3.83956 H 10.408029 Z M 8.397816,160.75729 h 1.1833903 l 2.9403887,7.71529 H 11.43639 l -0.702799,-1.97921 H 7.2557669 l -0.7027995,1.97921 H 5.4522595 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path958" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 13.270904,160.75729 h 1.121379 l 1.917195,2.86804 1.927531,-2.86804 h 1.121379 l -2.480469,3.7052 2.645833,4.01009 h -1.121378 l -2.17041,-3.28145 -2.185913,3.28145 h -1.126546 l 2.754353,-4.11861 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path960" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="R" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text965" | |||
transform="matrix(0.3303036,0,0,0.3303036,41.602579,91.831285)"> | |||
<path | |||
d="m 87.791817,136.9887 q 0.335896,0.11369 0.651123,0.48576 0.320393,0.37207 0.640787,1.02319 l 1.059367,2.1084 h -1.121378 l -0.98702,-1.97921 q -0.382406,-0.77515 -0.744141,-1.02836 -0.356567,-0.25321 -0.976684,-0.25321 h -1.136882 v 3.26078 h -1.043864 v -7.71529 h 2.356446 q 1.322916,0 1.974039,0.55294 0.651123,0.55293 0.651123,1.66914 0,0.72864 -0.341064,1.20923 -0.335897,0.48059 -0.981852,0.66663 z m -2.614828,-3.24011 v 2.73885 h 1.312582 q 0.754475,0 1.136881,-0.34624 0.387573,-0.35139 0.387573,-1.02836 0,-0.67696 -0.387573,-1.01802 -0.382406,-0.34623 -1.136881,-0.34623 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path974" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="F" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text969" | |||
transform="matrix(0.3303036,0,0,0.3303036,41.413591,98.540362)"> | |||
<path | |||
d="m 84.605591,141.39523 h 4.433838 v 0.8785 h -3.389974 v 2.27376 h 3.059244 v 0.8785 h -3.059244 v 3.68453 h -1.043864 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path971" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="R" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text965-9" | |||
transform="matrix(0.33030361,0,0,0.33030361,41.572164,115.53042)"> | |||
<path | |||
d="m 87.791817,136.9887 q 0.335896,0.11369 0.651123,0.48576 0.320393,0.37207 0.640787,1.02319 l 1.059367,2.1084 h -1.121378 l -0.98702,-1.97921 q -0.382406,-0.77515 -0.744141,-1.02836 -0.356567,-0.25321 -0.976684,-0.25321 h -1.136882 v 3.26078 h -1.043864 v -7.71529 h 2.356446 q 1.322916,0 1.974039,0.55294 0.651123,0.55293 0.651123,1.66914 0,0.72864 -0.341064,1.20923 -0.335897,0.48059 -0.981852,0.66663 z m -2.614828,-3.24011 v 2.73885 h 1.312582 q 0.754475,0 1.136881,-0.34624 0.387573,-0.35139 0.387573,-1.02836 0,-0.67696 -0.387573,-1.01802 -0.382406,-0.34623 -1.136881,-0.34623 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path974-5" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="F" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text969-2" | |||
transform="matrix(0.33030361,0,0,0.33030361,41.383175,122.2395)"> | |||
<path | |||
d="m 84.605591,141.39523 h 4.433838 v 0.8785 h -3.389974 v 2.27376 h 3.059244 v 0.8785 h -3.059244 v 3.68453 h -1.043864 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path971-6" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="LEG | |||
ATO" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text1039" | |||
transform="matrix(0.32357543,0,0,0.32357543,31.371788,59.230842)"> | |||
<path | |||
d="m 93.015564,57.39001 h 1.043864 v 6.836792 h 3.756876 v 0.878499 h -4.80074 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1043" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 98.906677,57.39001 h 4.878253 v 0.878499 h -3.834389 v 2.284098 h 3.674199 v 0.8785 h -3.674199 v 2.795695 h 3.927409 v 0.878499 h -4.971273 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1045" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 110.8646,64.004593 v -2.072225 h -1.70532 v -0.857829 h 2.73885 v 3.31246 q -0.60461,0.428914 -1.33325,0.651123 -0.72864,0.217041 -1.55546,0.217041 -1.80868,0 -2.83187,-1.0542 -1.01802,-1.059366 -1.01802,-2.945556 0,-1.891358 1.01802,-2.945557 1.02319,-1.059367 2.83187,-1.059367 0.75448,0 1.43144,0.186036 0.68213,0.186035 1.25573,0.54777 v 1.111043 q -0.57877,-0.490926 -1.2299,-0.738973 -0.65112,-0.248047 -1.36942,-0.248047 -1.41593,0 -2.12907,0.79065 -0.70797,0.790649 -0.70797,2.356445 0,1.560628 0.70797,2.351277 0.71314,0.79065 2.12907,0.79065 0.55294,0 0.98702,-0.09302 0.43408,-0.09819 0.78031,-0.299723 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1047" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 95.594218,71.647537 -1.415934,3.839559 h 2.837036 z m -0.589111,-1.028361 h 1.18339 l 2.940389,7.715291 h -1.085205 l -0.7028,-1.979207 h -3.477824 l -0.702799,1.979207 H 92.05955 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1049" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 98.353739,70.619176 h 6.526731 v 0.878499 h -2.73885 v 6.836792 h -1.04903 v -6.836792 h -2.738851 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1051" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 109.02492,71.327143 q -1.13688,0 -1.80867,0.847494 -0.66663,0.847493 -0.66663,2.309936 0,1.457275 0.66663,2.304769 0.67179,0.847493 1.80867,0.847493 1.13688,0 1.79834,-0.847493 0.66663,-0.847494 0.66663,-2.304769 0,-1.462443 -0.66663,-2.309936 -0.66146,-0.847494 -1.79834,-0.847494 z m 0,-0.847493 q 1.62264,0 2.59416,1.090372 0.97152,1.085205 0.97152,2.914551 0,1.824178 -0.97152,2.914551 -0.97152,1.085205 -2.59416,1.085205 -1.62781,0 -2.60449,-1.085205 -0.97152,-1.085205 -0.97152,-2.914551 0,-1.829346 0.97152,-2.914551 0.97668,-1.090372 2.60449,-1.090372 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1053" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
</g> | |||
<g | |||
inkscape:groupmode="layer" | |||
id="layer2" | |||
inkscape:label="widgets" | |||
style="display:none"> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.19901438;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect262182" | |||
width="4.7473311" | |||
height="10.000421" | |||
x="5.2461929" | |||
y="46.91531" /> | |||
<rect | |||
y="17.69401" | |||
x="3.513984" | |||
height="8.2103519" | |||
width="8.2117491" | |||
id="rect262989" | |||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect262991" | |||
width="8.2117491" | |||
height="8.2103519" | |||
x="3.513984" | |||
y="32.18959" /> | |||
<rect | |||
y="62.809601" | |||
x="3.5153599" | |||
height="8.2103519" | |||
width="8.2117491" | |||
id="rect262993" | |||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect262995" | |||
width="8.2117491" | |||
height="8.2103519" | |||
x="3.5153599" | |||
y="77.809547" /> | |||
<rect | |||
y="87.811348" | |||
x="3.513984" | |||
height="8.2103519" | |||
width="8.2117491" | |||
id="rect262997" | |||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect262999" | |||
width="8.2117491" | |||
height="8.2103519" | |||
x="3.513984" | |||
y="97.809021" /> | |||
<rect | |||
y="107.80944" | |||
x="3.513984" | |||
height="8.2103519" | |||
width="8.2117491" | |||
id="rect263001" | |||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
y="77.715843" | |||
x="10.820329" | |||
height="0.99907935" | |||
width="0.99910229" | |||
id="rect263003" | |||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.02885729;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.02885729;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect263005" | |||
width="0.99910229" | |||
height="0.99907935" | |||
x="10.820329" | |||
y="87.716263" /> | |||
<rect | |||
y="97.716682" | |||
x="10.820329" | |||
height="0.99907935" | |||
width="0.99910229" | |||
id="rect263007" | |||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.02885729;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.02885729;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect263009" | |||
width="0.99910229" | |||
height="0.99907935" | |||
x="10.820329" | |||
y="107.71573" /> | |||
</g> | |||
</svg> |
@@ -0,0 +1,197 @@ | |||
/* | |||
Copyright (c) 2018 bsp | |||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||
of this software and associated documentation files (the "Software"), to deal | |||
in the Software without restriction, including without limitation the rights | |||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the Software is | |||
furnished to do so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in all | |||
copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
SOFTWARE. | |||
*/ | |||
#include <math.h> | |||
#include "bsp.hpp" | |||
#include "dsp/digital.hpp" | |||
namespace rack_plugin_bsp { | |||
struct Legato : Module { | |||
enum ParamIds { | |||
DECAY_RATE_PARAM, | |||
SMOOTH_MIN_RISE_PARAM, | |||
SMOOTH_MIN_FALL_PARAM, | |||
SMOOTH_MAX_RISE_PARAM, | |||
SMOOTH_MAX_FALL_PARAM, | |||
NUM_PARAMS | |||
}; | |||
enum InputIds { | |||
CTL_INPUT, | |||
TRIG_INPUT, | |||
RATE_MOD_INPUT, | |||
NUM_INPUTS | |||
}; | |||
enum OutputIds { | |||
CTL_OUTPUT, | |||
NUM_OUTPUTS | |||
}; | |||
double smoothed_sign; | |||
double last_smoothed_val; | |||
double smoothed_val; | |||
double decay_t; | |||
SchmittTrigger trigger; | |||
double rcp_sample_rate; | |||
Legato() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) { | |||
smoothed_sign = 0.0; | |||
last_smoothed_val = 0.0; | |||
smoothed_val = 0.0; | |||
decay_t = 0.0; | |||
handleSampleRateChanged(); | |||
} | |||
void handleSampleRateChanged(void) { | |||
rcp_sample_rate = 1.0 / double(engineGetSampleRate()); | |||
} | |||
void onSampleRateChange() override { | |||
Module::onSampleRateChange(); | |||
handleSampleRateChanged(); | |||
} | |||
void step() override; | |||
}; | |||
void Legato::step() { | |||
// Read ctl input | |||
float inVal = inputs[CTL_INPUT].value; | |||
if(trigger.process(inputs[TRIG_INPUT].value)) | |||
{ | |||
decay_t = 0.0; | |||
smoothed_sign = 0.0f; | |||
} | |||
else | |||
{ | |||
double dcyR = params[DECAY_RATE_PARAM].value; | |||
if(inputs[RATE_MOD_INPUT].active) | |||
{ | |||
dcyR += inputs[RATE_MOD_INPUT].value * (1.0 / 5); | |||
if(dcyR < 0.0) | |||
dcyR = 0.0; | |||
else if(dcyR > 1.0) | |||
dcyR = 1.0; | |||
} | |||
dcyR *= dcyR; | |||
dcyR *= dcyR; | |||
dcyR *= 4000.0f; | |||
dcyR += 1.0f; | |||
dcyR *= rcp_sample_rate; // divide by sample rate | |||
decay_t += dcyR; | |||
if(decay_t >= 1.0) | |||
decay_t = 1.0; | |||
} | |||
double smoothAmt; | |||
if(smoothed_sign >= 0.0f) | |||
{ | |||
smoothAmt = params[SMOOTH_MIN_RISE_PARAM].value + (params[SMOOTH_MAX_RISE_PARAM].value - params[SMOOTH_MIN_RISE_PARAM].value) * decay_t; | |||
} | |||
else | |||
{ | |||
smoothAmt = params[SMOOTH_MIN_FALL_PARAM].value + (params[SMOOTH_MAX_FALL_PARAM].value - params[SMOOTH_MIN_FALL_PARAM].value) * decay_t; | |||
} | |||
smoothAmt = (1.0 - smoothAmt); | |||
smoothAmt *= smoothAmt; | |||
smoothAmt *= smoothAmt; | |||
smoothAmt *= smoothAmt; | |||
smoothed_val = smoothed_val + (inVal - smoothed_val) * smoothAmt; | |||
smoothed_sign = (smoothed_val - last_smoothed_val); | |||
last_smoothed_val = smoothed_val; | |||
outputs[CTL_OUTPUT].value = float(smoothed_val); | |||
#if 0 | |||
static int xxx = 0; | |||
if(0 == (++xxx & 32767)) | |||
{ | |||
printf("xxx smoothAmt=%g decay_t=%g\n", smoothAmt, decay_t); | |||
} | |||
#endif | |||
} | |||
struct LegatoWidget : ModuleWidget { | |||
LegatoWidget(Legato *module); | |||
}; | |||
LegatoWidget::LegatoWidget(Legato *module) : ModuleWidget(module) { | |||
setPanel(SVG::load(assetPlugin(plugin, "res/Legato.svg"))); | |||
addChild(Widget::create<ScrewSilver>(Vec(15, 0))); | |||
addChild(Widget::create<ScrewSilver>(Vec(15, 365))); | |||
float cx; | |||
float cy; | |||
#define STY 30.0f | |||
cx = 12.0f; | |||
cy = 50.0f; | |||
addInput(Port::create<PJ301MPort>(Vec(11.0f, cy), Port::INPUT, module, Legato::CTL_INPUT)); | |||
cy += STY; | |||
addInput(Port::create<PJ301MPort>(Vec(11.0f, cy), Port::INPUT, module, Legato::TRIG_INPUT)); | |||
cy += STY; | |||
addParam(ParamWidget::create<RoundSmallBlackKnob>(Vec(cx, cy), module, Legato::DECAY_RATE_PARAM, 0.0f, 1.0f, 0.2f)); | |||
cy += STY; | |||
addInput(Port::create<PJ301MPort>(Vec(11.0f, cy), Port::INPUT, module, Legato::RATE_MOD_INPUT)); | |||
#undef STY | |||
#define STY 30.0f | |||
cx = 12.0f; | |||
cy = 185.0f; | |||
addParam(ParamWidget::create<RoundSmallBlackKnob>(Vec(cx, cy), module, Legato::SMOOTH_MIN_RISE_PARAM, 0.0f, 1.0f, 0.0f)); | |||
cy += STY; | |||
addParam(ParamWidget::create<RoundSmallBlackKnob>(Vec(cx, cy), module, Legato::SMOOTH_MIN_FALL_PARAM, 0.0f, 1.0f, 0.0f)); | |||
cy += 10.0f; | |||
cy += STY; | |||
addParam(ParamWidget::create<RoundSmallBlackKnob>(Vec(cx, cy), module, Legato::SMOOTH_MAX_RISE_PARAM, 0.0f, 1.0f, 0.6f)); | |||
cy += STY; | |||
addParam(ParamWidget::create<RoundSmallBlackKnob>(Vec(cx, cy), module, Legato::SMOOTH_MAX_FALL_PARAM, 0.0f, 1.0f, 0.6f)); | |||
#undef STX | |||
#undef STY | |||
addOutput(Port::create<PJ301MPort>(Vec(11, 325), Port::OUTPUT, module, Legato::CTL_OUTPUT)); | |||
} | |||
} // namespace rack_plugin_bsp | |||
using namespace rack_plugin_bsp; | |||
RACK_PLUGIN_MODEL_INIT(bsp, Legato) { | |||
Model *modelLegato = Model::create<Legato, LegatoWidget>("bsp", "Legato", "Legato", SLEW_LIMITER_TAG, UTILITY_TAG); | |||
return modelLegato; | |||
} |
@@ -2,6 +2,7 @@ | |||
RACK_PLUGIN_MODEL_DECLARE(bsp, AttenuMixer); | |||
RACK_PLUGIN_MODEL_DECLARE(bsp, DownSampler); | |||
RACK_PLUGIN_MODEL_DECLARE(bsp, Legato); | |||
RACK_PLUGIN_MODEL_DECLARE(bsp, Obxd_VCF); | |||
RACK_PLUGIN_MODEL_DECLARE(bsp, RMS); | |||
RACK_PLUGIN_MODEL_DECLARE(bsp, Scanner); | |||
@@ -15,6 +16,7 @@ RACK_PLUGIN_INIT(bsp) { | |||
RACK_PLUGIN_MODEL_ADD(bsp, AttenuMixer); | |||
RACK_PLUGIN_MODEL_ADD(bsp, DownSampler); | |||
RACK_PLUGIN_MODEL_ADD(bsp, Legato); | |||
RACK_PLUGIN_MODEL_ADD(bsp, Obxd_VCF); | |||
RACK_PLUGIN_MODEL_ADD(bsp, RMS); | |||
RACK_PLUGIN_MODEL_ADD(bsp, Scanner); | |||
@@ -0,0 +1,132 @@ | |||
use tksdl; | |||
use tkopengl; | |||
int numframesrendered=0; | |||
float shape = 0.0f; | |||
function onDraw() { | |||
float dt=FPS.precision; | |||
glClearColor(0,0,0.2,1); | |||
// glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); | |||
glClear(GL_COLOR_BUFFER_BIT); | |||
glDisable(GL_DEPTH_TEST); | |||
if( !(++numframesrendered&127) ) | |||
trace "FPS.real="+FPS.real; | |||
zglInitOrtho(1, 1); | |||
glColor3f(0.9,0.9,0.9); | |||
float cx = -1.0f; | |||
float stepCx = (2.0f / Viewport.width); | |||
float x = 0.0f; | |||
float stepX = (1.0f / Viewport.width); | |||
float lx = 0; | |||
float ly = 0; | |||
glBegin(GL_LINES); | |||
loop(Viewport.width) | |||
{ | |||
float cy = 0.0f; | |||
float triY = x*2; | |||
if(triY > 1.0f) | |||
triY = (2.0f - triY); | |||
float expY = sin(x*PI); | |||
expY = mathPowerf(expY, mathPowerf(1.0f - shape, 9.0f)*64 + 1.0f); | |||
float rectY = triY; | |||
// rectY = (triY < 0.5) ? 0.0f : 1.0f; | |||
rectY = mathPowerf(triY * 2.0f, mathPowerf((shape - 0.75f)*4, 20) * 400.0f + 1.0f); | |||
if(rectY > 1.0f) | |||
rectY = 1.0f; | |||
float t; | |||
if(shape < 0.5f) | |||
{ | |||
cy = expY; | |||
} | |||
else if( (shape >= 0.5f) && (shape < 0.75f)) | |||
{ | |||
t = (shape -0.5f) * 4.0f; | |||
cy = expY + (triY - expY) * t; | |||
} | |||
else if(shape >= 0.75f) | |||
{ | |||
t = (shape - 0.75f) * 4.0f; | |||
cy = triY + (rectY - triY) * t; | |||
} | |||
// cy = triY; | |||
// cy = expY; | |||
glVertex2f(lx, ly); | |||
glVertex2f(cx, cy); | |||
lx = cx; | |||
ly = cy; | |||
cx += stepCx; | |||
x += stepX; | |||
} | |||
glVertex2f(0.0f, 0.0f); | |||
glVertex2f(1.0f, 0.0f); | |||
glEnd(); | |||
} | |||
function onMouse(int _x, int _y, int _cbs, int _nbs) { | |||
print "x="+_x+" y="+_y+" cbs="+_cbs+" nbs="+_nbs; | |||
shape = (_y / float(Viewport.height)); | |||
} | |||
function onKeyboard(Key _k) { | |||
switch(_k.pressed) | |||
{ | |||
case VKEY_ESCAPE: | |||
SDL.exitEventLoop(); | |||
break; | |||
} | |||
} | |||
int tim_count = 0; | |||
function onTimer() { | |||
// trace "xxx onTimer"; | |||
// if(++tim_count > 100) | |||
// SDL.exitEventLoop(); | |||
} | |||
function main() { | |||
use callbacks; | |||
FPS.tickInterval=1000.0/60; | |||
//FPS.limit=30; | |||
FPS.limit=60; | |||
SDL.eventPolling = false; // tksdl default is "true" (do not block while waiting for an SDL event) | |||
SDL.timerInterval = 20; | |||
// SDL.dpiAwareness = true; // no OS scaling | |||
// SDL.dpiAwareness = false; // assume 96dpi and let OS scale window to actual DPI | |||
// SDL.touchInput = true; // enable WM_POINTER* messages | |||
Viewport.multisampleSamples = 4; | |||
Viewport.multisampleBuffers = 1; | |||
// Viewport.stencilBits = 8; | |||
Viewport.openWindow(640, 480); | |||
//Viewport.openScreen(640, 480, 32); | |||
//Viewport.swapInterval(1); | |||
trace "xxx Viewport.dpi="+Viewport.dpi; | |||
trace "xxx entering eventloop"; | |||
SDL.eventLoop(); | |||
} |
@@ -32,6 +32,21 @@ NOTE: here's an example video: https://vimeo.com/288968750 | |||
# Legato | |||
Meant for legato-slides, this module applies a slew filter to the incoming (V/oct) signal. | |||
Two parameter sets are used to configure the slide speed | |||
1) when a new note is triggered ("min") | |||
2) when the next note is played while the previous note key is still held down (i.e. no new trigger) ("max") | |||
- Connect the original V/oct signal to the "I" input | |||
- Connect the trigger (gate) to the "T" input. | |||
- The "R" knob (rate) determines the interpolation speed between the min/max parameter sets. The speed can be modulated via the "M" input. Whe a new note is triggered, the interpolation is reset to 0. | |||
- The "min" and "max" knobs are used to adjust the rise and fall rates | |||
# Obxd_VCF | |||
An adaption of Filatov Vadim's excellent Ob-Xd filter. Distributed under terms of the GNU General Public License V3. | |||
@@ -0,0 +1,555 @@ | |||
<?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.239717mm" | |||
height="128.4993mm" | |||
viewBox="0 0 15.239717 128.4993" | |||
version="1.1" | |||
id="svg261903" | |||
sodipodi:docname="Legato.svg" | |||
inkscape:version="0.92.3 (2405546, 2018-03-11)"> | |||
<defs | |||
id="defs261897"> | |||
<linearGradient | |||
id="linear20" | |||
gradientUnits="userSpaceOnUse" | |||
x1="-0.095554203" | |||
y1="0" | |||
x2="1.32507" | |||
y2="0" | |||
gradientTransform="matrix(0,6.4087959,-6.4087959,0,64.256445,118.95198)"> | |||
<stop | |||
offset="0" | |||
style="stop-color:rgb(25.489807%,25.097656%,25.881958%);stop-opacity:1;" | |||
id="stop217759" /> | |||
<stop | |||
offset="0.0625" | |||
style="stop-color:rgb(25.489807%,25.097656%,25.881958%);stop-opacity:1;" | |||
id="stop217761" /> | |||
<stop | |||
offset="0.078125" | |||
style="stop-color:rgb(25.398254%,24.996948%,25.778198%);stop-opacity:1;" | |||
id="stop217763" /> | |||
<stop | |||
offset="0.09375" | |||
style="stop-color:rgb(25.177002%,24.754333%,25.527954%);stop-opacity:1;" | |||
id="stop217765" /> | |||
<stop | |||
offset="0.109375" | |||
style="stop-color:rgb(24.916077%,24.465942%,25.231934%);stop-opacity:1;" | |||
id="stop217767" /> | |||
<stop | |||
offset="0.125" | |||
style="stop-color:rgb(24.653625%,24.179077%,24.935913%);stop-opacity:1;" | |||
id="stop217769" /> | |||
<stop | |||
offset="0.140625" | |||
style="stop-color:rgb(24.3927%,23.892212%,24.639893%);stop-opacity:1;" | |||
id="stop217771" /> | |||
<stop | |||
offset="0.15625" | |||
style="stop-color:rgb(24.131775%,23.605347%,24.343872%);stop-opacity:1;" | |||
id="stop217773" /> | |||
<stop | |||
offset="0.171875" | |||
style="stop-color:rgb(23.87085%,23.316956%,24.047852%);stop-opacity:1;" | |||
id="stop217775" /> | |||
<stop | |||
offset="0.1875" | |||
style="stop-color:rgb(23.609924%,23.03009%,23.751831%);stop-opacity:1;" | |||
id="stop217777" /> | |||
<stop | |||
offset="0.203125" | |||
style="stop-color:rgb(23.348999%,22.743225%,23.455811%);stop-opacity:1;" | |||
id="stop217779" /> | |||
<stop | |||
offset="0.21875" | |||
style="stop-color:rgb(23.088074%,22.45636%,23.15979%);stop-opacity:1;" | |||
id="stop217781" /> | |||
<stop | |||
offset="0.234375" | |||
style="stop-color:rgb(22.825623%,22.167969%,22.86377%);stop-opacity:1;" | |||
id="stop217783" /> | |||
<stop | |||
offset="0.25" | |||
style="stop-color:rgb(22.564697%,21.881104%,22.567749%);stop-opacity:1;" | |||
id="stop217785" /> | |||
<stop | |||
offset="0.265625" | |||
style="stop-color:rgb(22.303772%,21.594238%,22.271729%);stop-opacity:1;" | |||
id="stop217787" /> | |||
<stop | |||
offset="0.28125" | |||
style="stop-color:rgb(22.042847%,21.307373%,21.975708%);stop-opacity:1;" | |||
id="stop217789" /> | |||
<stop | |||
offset="0.296875" | |||
style="stop-color:rgb(21.781921%,21.018982%,21.679688%);stop-opacity:1;" | |||
id="stop217791" /> | |||
<stop | |||
offset="0.3125" | |||
style="stop-color:rgb(21.520996%,20.732117%,21.383667%);stop-opacity:1;" | |||
id="stop217793" /> | |||
<stop | |||
offset="0.328125" | |||
style="stop-color:rgb(21.260071%,20.445251%,21.087646%);stop-opacity:1;" | |||
id="stop217795" /> | |||
<stop | |||
offset="0.34375" | |||
style="stop-color:rgb(20.99762%,20.15686%,20.793152%);stop-opacity:1;" | |||
id="stop217797" /> | |||
<stop | |||
offset="0.359375" | |||
style="stop-color:rgb(20.736694%,19.869995%,20.497131%);stop-opacity:1;" | |||
id="stop217799" /> | |||
<stop | |||
offset="0.375" | |||
style="stop-color:rgb(20.475769%,19.58313%,20.201111%);stop-opacity:1;" | |||
id="stop217801" /> | |||
<stop | |||
offset="0.390625" | |||
style="stop-color:rgb(20.214844%,19.296265%,19.90509%);stop-opacity:1;" | |||
id="stop217803" /> | |||
<stop | |||
offset="0.40625" | |||
style="stop-color:rgb(19.953918%,19.007874%,19.60907%);stop-opacity:1;" | |||
id="stop217805" /> | |||
<stop | |||
offset="0.421875" | |||
style="stop-color:rgb(19.692993%,18.721008%,19.313049%);stop-opacity:1;" | |||
id="stop217807" /> | |||
<stop | |||
offset="0.4375" | |||
style="stop-color:rgb(19.432068%,18.434143%,19.017029%);stop-opacity:1;" | |||
id="stop217809" /> | |||
<stop | |||
offset="0.453125" | |||
style="stop-color:rgb(19.169617%,18.147278%,18.721008%);stop-opacity:1;" | |||
id="stop217811" /> | |||
<stop | |||
offset="0.46875" | |||
style="stop-color:rgb(18.908691%,17.858887%,18.424988%);stop-opacity:1;" | |||
id="stop217813" /> | |||
<stop | |||
offset="0.484375" | |||
style="stop-color:rgb(18.647766%,17.572021%,18.128967%);stop-opacity:1;" | |||
id="stop217815" /> | |||
<stop | |||
offset="0.5" | |||
style="stop-color:rgb(18.386841%,17.285156%,17.832947%);stop-opacity:1;" | |||
id="stop217817" /> | |||
<stop | |||
offset="0.515625" | |||
style="stop-color:rgb(18.125916%,16.998291%,17.536926%);stop-opacity:1;" | |||
id="stop217819" /> | |||
<stop | |||
offset="0.53125" | |||
style="stop-color:rgb(17.86499%,16.7099%,17.240906%);stop-opacity:1;" | |||
id="stop217821" /> | |||
<stop | |||
offset="0.546875" | |||
style="stop-color:rgb(17.604065%,16.423035%,16.944885%);stop-opacity:1;" | |||
id="stop217823" /> | |||
<stop | |||
offset="0.5625" | |||
style="stop-color:rgb(17.341614%,16.136169%,16.648865%);stop-opacity:1;" | |||
id="stop217825" /> | |||
<stop | |||
offset="0.578125" | |||
style="stop-color:rgb(17.080688%,15.849304%,16.352844%);stop-opacity:1;" | |||
id="stop217827" /> | |||
<stop | |||
offset="0.59375" | |||
style="stop-color:rgb(16.819763%,15.560913%,16.056824%);stop-opacity:1;" | |||
id="stop217829" /> | |||
<stop | |||
offset="0.609375" | |||
style="stop-color:rgb(16.558838%,15.274048%,15.760803%);stop-opacity:1;" | |||
id="stop217831" /> | |||
<stop | |||
offset="0.625" | |||
style="stop-color:rgb(16.297913%,14.987183%,15.464783%);stop-opacity:1;" | |||
id="stop217833" /> | |||
<stop | |||
offset="0.640625" | |||
style="stop-color:rgb(16.036987%,14.700317%,15.168762%);stop-opacity:1;" | |||
id="stop217835" /> | |||
<stop | |||
offset="0.65625" | |||
style="stop-color:rgb(15.776062%,14.411926%,14.872742%);stop-opacity:1;" | |||
id="stop217837" /> | |||
<stop | |||
offset="0.671875" | |||
style="stop-color:rgb(15.513611%,14.125061%,14.576721%);stop-opacity:1;" | |||
id="stop217839" /> | |||
<stop | |||
offset="0.6875" | |||
style="stop-color:rgb(15.252686%,13.838196%,14.280701%);stop-opacity:1;" | |||
id="stop217841" /> | |||
<stop | |||
offset="0.703125" | |||
style="stop-color:rgb(14.99176%,13.551331%,13.98468%);stop-opacity:1;" | |||
id="stop217843" /> | |||
<stop | |||
offset="0.71875" | |||
style="stop-color:rgb(14.730835%,13.262939%,13.68866%);stop-opacity:1;" | |||
id="stop217845" /> | |||
<stop | |||
offset="0.734375" | |||
style="stop-color:rgb(14.46991%,12.976074%,13.392639%);stop-opacity:1;" | |||
id="stop217847" /> | |||
<stop | |||
offset="0.75" | |||
style="stop-color:rgb(14.208984%,12.689209%,13.096619%);stop-opacity:1;" | |||
id="stop217849" /> | |||
<stop | |||
offset="0.765625" | |||
style="stop-color:rgb(13.948059%,12.402344%,12.802124%);stop-opacity:1;" | |||
id="stop217851" /> | |||
<stop | |||
offset="0.78125" | |||
style="stop-color:rgb(13.771057%,12.207031%,12.600708%);stop-opacity:1;" | |||
id="stop217853" /> | |||
<stop | |||
offset="0.8125" | |||
style="stop-color:rgb(13.725281%,12.156677%,12.548828%);stop-opacity:1;" | |||
id="stop217855" /> | |||
<stop | |||
offset="0.875" | |||
style="stop-color:rgb(13.725281%,12.156677%,12.548828%);stop-opacity:1;" | |||
id="stop217857" /> | |||
<stop | |||
offset="1" | |||
style="stop-color:rgb(13.725281%,12.156677%,12.548828%);stop-opacity:1;" | |||
id="stop217859" /> | |||
</linearGradient> | |||
</defs> | |||
<sodipodi:namedview | |||
id="base" | |||
pagecolor="#ffffff" | |||
bordercolor="#666666" | |||
borderopacity="1.0" | |||
inkscape:pageopacity="0.0" | |||
inkscape:pageshadow="2" | |||
inkscape:zoom="2.8" | |||
inkscape:cx="84.442981" | |||
inkscape:cy="427.99593" | |||
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:snap-bbox="true" | |||
inkscape:bbox-nodes="true" | |||
inkscape:snap-nodes="false" | |||
inkscape:snap-others="false" | |||
inkscape:window-width="1600" | |||
inkscape:window-height="882" | |||
inkscape:window-x="299" | |||
inkscape:window-y="76" | |||
inkscape:window-maximized="0" | |||
inkscape:snap-global="false" /> | |||
<metadata | |||
id="metadata261900"> | |||
<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 /> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
inkscape:label="Layer 1" | |||
inkscape:groupmode="layer" | |||
id="layer1" | |||
transform="translate(-56.636094,-70.97654)"> | |||
<path | |||
inkscape:connector-curvature="0" | |||
id="path227414" | |||
d="M 56.636094,70.97654 H 71.689792 V 199.2898 H 56.636094 Z m 0,0" | |||
style="fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
<path | |||
inkscape:connector-curvature="0" | |||
id="path227416" | |||
d="M 71.875811,70.97654 H 56.636094 v 128.4993 H 71.875811 Z M 71.689756,199.28981 H 56.823489 V 71.163954 h 14.866267 z m 0,0" | |||
style="fill:#ababab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277775" /> | |||
<rect | |||
style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20018744;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" | |||
id="rect866-0-0" | |||
width="10.705551" | |||
height="10.537507" | |||
x="59.100956" | |||
y="179.87476" | |||
ry="1.2795542" /> | |||
<g | |||
aria-label="I" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text915" | |||
transform="matrix(0.33151022,0,0,0.33151022,70.343906,61.159974)"> | |||
<path | |||
d="m -1.3917749,85.387271 h 1.04386388 v 7.715291 H -1.3917749 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path937" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="T" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text919" | |||
transform="matrix(0.33151022,0,0,0.33151022,70.4384,67.963546)"> | |||
<path | |||
d="m -4.0650935,97.147136 h 6.5267332 v 0.878499 h -2.73885084 v 6.836795 H -1.3262427 v -6.836795 h -2.7388508 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path940" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="R" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text923" | |||
transform="matrix(0.33151022,0,0,0.33151022,70.046656,73.784863)"> | |||
<path | |||
d="m 1.4651083,114.07401 q 0.3358968,0.11369 0.651123,0.48576 0.3203939,0.37207 0.6407877,1.02319 l 1.0593669,2.1084 H 2.6950073 L 1.7079875,115.71215 Q 1.3255819,114.93701 0.96384688,114.68379 0.6072795,114.43058 -0.01283767,114.43058 H -1.1497191 v 3.26078 H -2.193583 v -7.71529 h 2.3564452 q 1.3229166,0 1.9740397,0.55294 0.651123,0.55293 0.651123,1.66915 0,0.72863 -0.3410645,1.20922 -0.3358968,0.4806 -0.9818521,0.66663 z m -2.6148274,-3.24011 v 2.73885 h 1.3125813 q 0.75447589,0 1.1368815,-0.34623 0.3875732,-0.3514 0.3875732,-1.02836 0,-0.67697 -0.3875732,-1.01803 -0.38240561,-0.34623 -1.1368815,-0.34623 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path943" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="M" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text927" | |||
transform="matrix(0.33151022,0,0,0.33151022,69.846203,78.464046)"> | |||
<path | |||
d="m -2.7281192,123.07228 h 1.5554606 l 1.96887201,5.25032 1.97920729,-5.25032 h 1.5554606 v 7.71529 H 3.3128556 v -6.77478 L 1.323313,129.30445 H 0.27428146 l -1.98954256,-5.29166 v 6.77478 h -1.0128581 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path946" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="MIN" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text931" | |||
transform="matrix(0.28169956,0,0,0.28169956,62.81098,89.915833)"> | |||
<path | |||
d="m -3.2626596,142.85021 h 1.5554606 l 1.968872,5.25033 1.9792073,-5.25033 h 1.5554606 v 7.7153 H 2.7783152 v -6.77478 l -1.98954261,5.29166 h -1.04903154 l -1.98954255,-5.29166 v 6.77478 h -1.0128581 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path949" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 5.873733,142.85021 h 1.0438639 v 7.7153 H 5.873733 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path951" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 8.9949889,142.85021 h 1.4055991 l 3.42098,6.45439 v -6.45439 h 1.012858 v 7.7153 h -1.405599 l -3.42098,-6.45439 v 6.45439 H 8.9949889 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path953" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="MAX" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text935" | |||
transform="matrix(0.28169956,0,0,0.28169956,62.422471,108.66995)"> | |||
<path | |||
d="m -2.7281192,160.75729 h 1.5554606 l 1.96887201,5.25032 1.97920729,-5.25032 h 1.5554606 v 7.71529 H 3.3128556 V 161.6978 L 1.323313,166.98947 H 0.27428146 L -1.7152611,161.6978 v 6.77478 h -1.0128581 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path956" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 8.9869273,161.78565 -1.4159342,3.83956 H 10.408029 Z M 8.397816,160.75729 h 1.1833903 l 2.9403887,7.71529 H 11.43639 l -0.702799,-1.97921 H 7.2557669 l -0.7027995,1.97921 H 5.4522595 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path958" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 13.270904,160.75729 h 1.121379 l 1.917195,2.86804 1.927531,-2.86804 h 1.121379 l -2.480469,3.7052 2.645833,4.01009 h -1.121378 l -2.17041,-3.28145 -2.185913,3.28145 h -1.126546 l 2.754353,-4.11861 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path960" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="R" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text965" | |||
transform="matrix(0.3303036,0,0,0.3303036,41.602579,91.831285)"> | |||
<path | |||
d="m 87.791817,136.9887 q 0.335896,0.11369 0.651123,0.48576 0.320393,0.37207 0.640787,1.02319 l 1.059367,2.1084 h -1.121378 l -0.98702,-1.97921 q -0.382406,-0.77515 -0.744141,-1.02836 -0.356567,-0.25321 -0.976684,-0.25321 h -1.136882 v 3.26078 h -1.043864 v -7.71529 h 2.356446 q 1.322916,0 1.974039,0.55294 0.651123,0.55293 0.651123,1.66914 0,0.72864 -0.341064,1.20923 -0.335897,0.48059 -0.981852,0.66663 z m -2.614828,-3.24011 v 2.73885 h 1.312582 q 0.754475,0 1.136881,-0.34624 0.387573,-0.35139 0.387573,-1.02836 0,-0.67696 -0.387573,-1.01802 -0.382406,-0.34623 -1.136881,-0.34623 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path974" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="F" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text969" | |||
transform="matrix(0.3303036,0,0,0.3303036,41.413591,98.540362)"> | |||
<path | |||
d="m 84.605591,141.39523 h 4.433838 v 0.8785 h -3.389974 v 2.27376 h 3.059244 v 0.8785 h -3.059244 v 3.68453 h -1.043864 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path971" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="R" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text965-9" | |||
transform="matrix(0.33030361,0,0,0.33030361,41.572164,115.53042)"> | |||
<path | |||
d="m 87.791817,136.9887 q 0.335896,0.11369 0.651123,0.48576 0.320393,0.37207 0.640787,1.02319 l 1.059367,2.1084 h -1.121378 l -0.98702,-1.97921 q -0.382406,-0.77515 -0.744141,-1.02836 -0.356567,-0.25321 -0.976684,-0.25321 h -1.136882 v 3.26078 h -1.043864 v -7.71529 h 2.356446 q 1.322916,0 1.974039,0.55294 0.651123,0.55293 0.651123,1.66914 0,0.72864 -0.341064,1.20923 -0.335897,0.48059 -0.981852,0.66663 z m -2.614828,-3.24011 v 2.73885 h 1.312582 q 0.754475,0 1.136881,-0.34624 0.387573,-0.35139 0.387573,-1.02836 0,-0.67696 -0.387573,-1.01802 -0.382406,-0.34623 -1.136881,-0.34623 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path974-5" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="F" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text969-2" | |||
transform="matrix(0.33030361,0,0,0.33030361,41.383175,122.2395)"> | |||
<path | |||
d="m 84.605591,141.39523 h 4.433838 v 0.8785 h -3.389974 v 2.27376 h 3.059244 v 0.8785 h -3.059244 v 3.68453 h -1.043864 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path971-6" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
<g | |||
aria-label="LEG | |||
ATO" | |||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#8b8b8b;fill-opacity:1;stroke:none;stroke-width:0.26458332" | |||
id="text1039" | |||
transform="matrix(0.32357543,0,0,0.32357543,31.371788,59.230842)"> | |||
<path | |||
d="m 93.015564,57.39001 h 1.043864 v 6.836792 h 3.756876 v 0.878499 h -4.80074 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1043" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 98.906677,57.39001 h 4.878253 v 0.878499 h -3.834389 v 2.284098 h 3.674199 v 0.8785 h -3.674199 v 2.795695 h 3.927409 v 0.878499 h -4.971273 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1045" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 110.8646,64.004593 v -2.072225 h -1.70532 v -0.857829 h 2.73885 v 3.31246 q -0.60461,0.428914 -1.33325,0.651123 -0.72864,0.217041 -1.55546,0.217041 -1.80868,0 -2.83187,-1.0542 -1.01802,-1.059366 -1.01802,-2.945556 0,-1.891358 1.01802,-2.945557 1.02319,-1.059367 2.83187,-1.059367 0.75448,0 1.43144,0.186036 0.68213,0.186035 1.25573,0.54777 v 1.111043 q -0.57877,-0.490926 -1.2299,-0.738973 -0.65112,-0.248047 -1.36942,-0.248047 -1.41593,0 -2.12907,0.79065 -0.70797,0.790649 -0.70797,2.356445 0,1.560628 0.70797,2.351277 0.71314,0.79065 2.12907,0.79065 0.55294,0 0.98702,-0.09302 0.43408,-0.09819 0.78031,-0.299723 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1047" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 95.594218,71.647537 -1.415934,3.839559 h 2.837036 z m -0.589111,-1.028361 h 1.18339 l 2.940389,7.715291 h -1.085205 l -0.7028,-1.979207 h -3.477824 l -0.702799,1.979207 H 92.05955 Z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1049" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 98.353739,70.619176 h 6.526731 v 0.878499 h -2.73885 v 6.836792 h -1.04903 v -6.836792 h -2.738851 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1051" | |||
inkscape:connector-curvature="0" /> | |||
<path | |||
d="m 109.02492,71.327143 q -1.13688,0 -1.80867,0.847494 -0.66663,0.847493 -0.66663,2.309936 0,1.457275 0.66663,2.304769 0.67179,0.847493 1.80867,0.847493 1.13688,0 1.79834,-0.847493 0.66663,-0.847494 0.66663,-2.304769 0,-1.462443 -0.66663,-2.309936 -0.66146,-0.847494 -1.79834,-0.847494 z m 0,-0.847493 q 1.62264,0 2.59416,1.090372 0.97152,1.085205 0.97152,2.914551 0,1.824178 -0.97152,2.914551 -0.97152,1.085205 -2.59416,1.085205 -1.62781,0 -2.60449,-1.085205 -0.97152,-1.085205 -0.97152,-2.914551 0,-1.829346 0.97152,-2.914551 0.97668,-1.090372 2.60449,-1.090372 z" | |||
style="fill:#8b8b8b;fill-opacity:1;stroke-width:0.26458332" | |||
id="path1053" | |||
inkscape:connector-curvature="0" /> | |||
</g> | |||
</g> | |||
<g | |||
inkscape:groupmode="layer" | |||
id="layer2" | |||
inkscape:label="widgets" | |||
style="display:none"> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.19901438;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect262182" | |||
width="4.7473311" | |||
height="10.000421" | |||
x="5.2461929" | |||
y="46.91531" /> | |||
<rect | |||
y="17.69401" | |||
x="3.513984" | |||
height="8.2103519" | |||
width="8.2117491" | |||
id="rect262989" | |||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect262991" | |||
width="8.2117491" | |||
height="8.2103519" | |||
x="3.513984" | |||
y="32.18959" /> | |||
<rect | |||
y="62.809601" | |||
x="3.5153599" | |||
height="8.2103519" | |||
width="8.2117491" | |||
id="rect262993" | |||
style="opacity:1;vector-effect:none;fill:#00ff00;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect262995" | |||
width="8.2117491" | |||
height="8.2103519" | |||
x="3.5153599" | |||
y="77.809547" /> | |||
<rect | |||
y="87.811348" | |||
x="3.513984" | |||
height="8.2103519" | |||
width="8.2117491" | |||
id="rect262997" | |||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect262999" | |||
width="8.2117491" | |||
height="8.2103519" | |||
x="3.513984" | |||
y="97.809021" /> | |||
<rect | |||
y="107.80944" | |||
x="3.513984" | |||
height="8.2103519" | |||
width="8.2117491" | |||
id="rect263001" | |||
style="opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.23716429;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
y="77.715843" | |||
x="10.820329" | |||
height="0.99907935" | |||
width="0.99910229" | |||
id="rect263003" | |||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.02885729;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.02885729;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect263005" | |||
width="0.99910229" | |||
height="0.99907935" | |||
x="10.820329" | |||
y="87.716263" /> | |||
<rect | |||
y="97.716682" | |||
x="10.820329" | |||
height="0.99907935" | |||
width="0.99910229" | |||
id="rect263007" | |||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.02885729;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> | |||
<rect | |||
style="opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:0.02885729;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" | |||
id="rect263009" | |||
width="0.99910229" | |||
height="0.99907935" | |||
x="10.820329" | |||
y="107.71573" /> | |||
</g> | |||
</svg> |