computerscare-vcv-modules

computerscare modules for VCV Rack
Log | Files | Refs

commit b6149aadd68e862dbf4063c545d22aacdd7a7ebd
parent 9eb9bdcf083311878a5912982c3282cdef468fbb
Author: Adam M <aemalone@gmail.com>
Date:   Fri, 19 Nov 2021 14:16:21 -0600

horse cv2, put cv and gate options in submenu, update panel

Diffstat:
Mres/ComputerscareHorseADoodleDooPanel.svg | 155++++++++++++++++++++++++++++---------------------------------------------------
Msrc/ComputerscareHorseADoodleDoo.cpp | 134++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------
2 files changed, 164 insertions(+), 125 deletions(-)

diff --git a/res/ComputerscareHorseADoodleDooPanel.svg b/res/ComputerscareHorseADoodleDooPanel.svg @@ -24,11 +24,11 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="4.0000003" - inkscape:cx="17.256898" - inkscape:cy="212.5269" + inkscape:zoom="11.313709" + inkscape:cx="71.704039" + inkscape:cy="354.94638" inkscape:document-units="mm" - inkscape:current-layer="g1669" + inkscape:current-layer="text1141" showgrid="false" units="px" inkscape:snap-bbox="true" @@ -173,82 +173,8 @@ x="0.071190082" y="290.79446" /> <g - aria-label="computerscare" - transform="matrix(0.94988578,-0.02804688,0.4051471,0.5822115,-124.33412,122.62476)" - 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:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" - id="text1651"> - <path - d="m 9.6027791,290.64805 -0.1785472,1.13642 q -0.2071013,-0.22115 -0.4403012,-0.2959 -0.2289893,-0.082 -0.4873177,-0.0166 -0.5763522,0.1409 -1.0153469,0.97678 -0.4367476,0.82622 -0.6495621,2.18074 -0.2127596,1.35428 -0.011668,2.0279 0.2021416,0.66697 0.7797313,0.52296 0.259638,-0.0689 0.5316849,-0.2657 0.2776392,-0.20851 0.5741694,-0.55615 l -0.1764568,1.12315 q -0.2859177,0.30015 -0.5722526,0.48508 -0.2831694,0.18458 -0.583333,0.25957 -0.8170394,0.20584 -1.1320824,-0.72716 -0.3157407,-0.93062 -0.035471,-2.7145 0.2844124,-1.8103 0.9313988,-2.96829 0.6501935,-1.15871 1.4955927,-1.36946 0.2742623,-0.0675 0.516621,-0.0134 0.2438341,0.0468 0.4524011,0.21807 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.86896825" - id="path1701" - inkscape:connector-curvature="0" /> - <path - d="m 10.830236,291.43632 q -0.242121,0.0741 -0.521559,0.57491 -0.278305,0.4971 -0.5188844,1.29095 -0.2405799,0.79385 -0.2403983,1.20956 0.00301,0.41129 0.2467005,0.33695 0.2404212,-0.0734 0.5199302,-0.57442 0.2795,-0.50105 0.51888,-1.29093 0.238185,-0.78594 0.236377,-1.20119 -6.09e-4,-0.4192 -0.241046,-0.34583 z m 0.186718,-0.6161 q 0.392499,-0.11967 0.429888,0.42797 0.03734,0.54781 -0.293009,1.63784 -0.329159,1.08613 -0.741139,1.77453 -0.410787,0.68447 -0.8033151,0.80422 -0.3941992,0.12035 -0.431527,-0.42747 -0.034513,-0.55222 0.2946412,-1.63833 0.3303527,-1.09005 0.7395069,-1.77404 0.410787,-0.68447 0.804954,-0.80472 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.46487415" - id="path1703" - inkscape:connector-curvature="0" /> - <path - d="m 12.807825,292.43649 q 0.205376,-0.44273 0.383783,-0.65959 0.178399,-0.21686 0.344437,-0.2297 0.223488,-0.0171 0.228448,0.40604 0.0059,0.41968 -0.207833,1.21429 l -0.639393,2.37685 -0.236181,0.0178 0.633715,-2.35578 q 0.15227,-0.56606 0.153268,-0.83476 10e-4,-0.26867 -0.148429,-0.25721 -0.182514,0.0136 -0.378442,0.35612 -0.195844,0.34217 -0.350959,0.91879 l -0.598741,2.22567 -0.236178,0.0178 0.633714,-2.35578 q 0.153226,-0.56959 0.153269,-0.83477 10e-4,-0.26864 -0.150977,-0.25701 -0.179992,0.0135 -0.376835,0.35945 -0.195847,0.34216 -0.350016,0.91529 l -0.598731,2.22564 -0.236175,0.0178 1.059316,-3.93799 0.236176,-0.0178 -0.164564,0.61175 q 0.177856,-0.36827 0.336583,-0.5492 0.158669,-0.18072 0.313205,-0.19264 0.155863,-0.0123 0.205723,0.19761 0.05123,0.20939 -0.0081,0.62045 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.40262118" - id="path1705" - inkscape:connector-curvature="0" /> - <path - d="m 13.60117,295.28799 -0.554629,2.13184 -0.267265,0.0195 1.443525,-5.54854 0.267267,-0.0195 -0.158727,0.61011 q 0.177173,-0.36501 0.349134,-0.54657 0.17433,-0.18522 0.352032,-0.19813 0.294924,-0.0224 0.326968,0.54651 0.03367,0.56789 -0.212846,1.51542 -0.246502,0.94749 -0.582696,1.54239 -0.334749,0.59479 -0.629491,0.61632 -0.17774,0.0129 -0.261498,-0.14988 -0.08139,-0.16659 -0.07182,-0.51936 z m 1.269531,-1.4693 q 0.189548,-0.72859 0.175557,-1.13245 -0.01161,-0.40756 -0.222552,-0.39216 -0.210881,0.0151 -0.440613,0.44055 -0.227296,0.42149 -0.416846,1.15007 -0.189545,0.72858 -0.177937,1.13612 0.01399,0.40387 0.22493,0.38848 0.210882,-0.0151 0.438235,-0.43686 0.229674,-0.42519 0.419218,-1.15375 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.43304038" - id="path1707" - inkscape:connector-curvature="0" /> - <path - d="m 15.055401,295.73684 0.724151,-2.70123 0.3058,-0.15606 -0.716673,2.67333 q -0.169825,0.63345 -0.15225,0.89989 0.01859,0.26239 0.224461,0.15806 0.247262,-0.12499 0.491712,-0.57662 0.245936,-0.45182 0.421108,-1.10524 l 0.678203,-2.52983 0.305801,-0.15606 -1.19623,4.46214 -0.305797,0.15607 0.183713,-0.68527 q -0.220195,0.4628 -0.421392,0.73706 -0.198389,0.26912 -0.392768,0.36807 -0.32063,0.16323 -0.35841,-0.231 -0.03788,-0.39383 0.208823,-1.31409 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.45902026" - id="path1709" - inkscape:connector-curvature="0" /> - <path - d="m 18.113428,292.3357 -0.179064,0.85803 0.491607,0.0721 -0.08052,0.38584 -0.491607,-0.0721 -0.342349,1.64047 q -0.07714,0.36965 -0.0511,0.4819 0.02738,0.11224 0.176528,0.13418 l 0.245304,0.0351 -0.08672,0.41554 -0.245305,-0.0351 q -0.276353,-0.0402 -0.336915,-0.26884 -0.06004,-0.23118 0.05822,-0.79779 l 0.342349,-1.64049 -0.175178,-0.0253 0.08052,-0.38584 0.175179,0.0253 0.179063,-0.85803 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.36464316" - id="path1711" - inkscape:connector-curvature="0" /> - <path - d="m 20.261915,292.97708 -0.07466,0.29993 -1.257665,0.52946 q -0.139748,0.62563 -0.07111,0.89506 0.07099,0.26547 0.343071,0.15079 0.157847,-0.0674 0.326325,-0.21496 0.170227,-0.14922 0.359046,-0.38381 l -0.144348,0.57988 q -0.182046,0.20203 -0.354909,0.34045 -0.172839,0.13835 -0.331881,0.2052 -0.398421,0.16777 -0.502421,-0.25374 -0.102476,-0.42229 0.118208,-1.30876 0.228131,-0.91641 0.581722,-1.54555 0.355894,-0.63309 0.730507,-0.79076 0.33577,-0.14063 0.40955,0.26329 0.07592,0.40065 -0.13147,1.23373 z m -0.228747,-0.0648 q 0.122266,-0.50191 0.07358,-0.74995 -0.04723,-0.24866 -0.249404,-0.16353 -0.228759,0.0957 -0.439357,0.44448 -0.20894,0.34749 -0.360834,0.88279 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.40433538" - id="path1713" - inkscape:connector-curvature="0" /> - <path - d="m 21.673498,292.84153 q -0.02499,-0.0664 -0.06594,-0.10097 -0.03882,-0.0377 -0.09539,-0.0472 -0.200434,-0.0342 -0.392529,0.28546 -0.189936,0.31632 -0.3466,0.94546 l -0.486472,1.9536 -0.237943,-0.0394 0.923474,-3.70854 0.237943,0.0394 -0.143468,0.57613 q 0.158635,-0.3251 0.318554,-0.46708 0.160764,-0.1454 0.331675,-0.1164 0.02431,0.005 0.05169,0.0182 0.0278,0.0121 0.05955,0.0351 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.40433538" - id="path1715" - inkscape:connector-curvature="0" /> - <path - d="m 22.229258,293.93465 -0.102668,0.39617 q -0.07248,-0.13083 -0.164162,-0.21902 -0.09165,-0.0884 -0.202529,-0.13415 -0.168771,-0.0697 -0.278572,-0.009 -0.108573,0.0611 -0.158124,0.25229 -0.03777,0.1458 7.57e-4,0.2549 0.03913,0.10682 0.201965,0.25733 l 0.06936,0.0639 q 0.216657,0.19541 0.272253,0.41237 0.05741,0.21525 -0.02345,0.5272 -0.09204,0.35517 -0.298505,0.49929 -0.205219,0.14461 -0.471313,0.0347 -0.110888,-0.0457 -0.220988,-0.13657 -0.109481,-0.0879 -0.221839,-0.22275 l 0.112114,-0.43259 q 0.09439,0.17255 0.200407,0.28439 0.106615,0.10961 0.226124,0.15887 0.160139,0.0662 0.272416,8.8e-4 0.112791,-0.0669 0.160582,-0.25127 0.04426,-0.17077 0.005,-0.28779 -0.038,-0.1165 -0.226818,-0.28773 l -0.06998,-0.0667 q -0.189435,-0.16883 -0.239373,-0.3761 -0.04937,-0.20941 0.02734,-0.50541 0.09322,-0.35974 0.281955,-0.49858 0.188722,-0.13884 0.442502,-0.0341 0.125679,0.0517 0.227651,0.13195 0.102022,0.0799 0.177954,0.18687 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.33832553" - id="path1717" - inkscape:connector-curvature="0" /> - <path - d="m 23.986751,292.12191 c -0.128774,0.25908 -0.285096,-0.0923 -0.517645,-0.0646 -0.159144,0.002 -0.29396,0.0931 -0.404426,0.27171 -0.110275,0.17711 -0.185605,0.42507 -0.225985,0.7439 -0.04034,0.31882 -0.02779,0.56619 0.03777,0.74213 0.06574,0.17449 0.178211,0.26034 0.337352,0.25788 0.07111,-10e-4 0.143417,-0.0185 0.216918,-0.0523 0.07456,-0.0353 0.150753,-0.0869 0.228587,-0.15493 l -0.05024,0.39658 c -0.07555,0.0571 -0.151996,0.10017 -0.229319,0.12922 -0.07646,0.0292 -0.15603,0.0444 -0.238701,0.0456 -0.224928,0.003 -0.387991,-0.11731 -0.48913,-0.36262 -0.101153,-0.24523 -0.12514,-0.57778 -0.07196,-0.9977 0.05397,-0.42616 0.163107,-0.76234 0.327388,-1.00858 0.165177,-0.24626 0.364234,-0.3712 0.597172,-0.37482 0.07569,-0.002 0.147877,0.01 0.215995,0.039 0.06878,0.0246 0.351198,0.27269 0.41187,0.32611 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.33832553" - id="path1719" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccccccccccc" /> - <path - d="m 25.156213,294.62363 c -0.312517,0.0125 -0.547151,0.0755 -0.703953,0.18946 -0.15681,0.11392 -0.278931,0.30245 -0.366342,0.56547 -0.06973,0.20967 -0.08035,0.37475 -0.03187,0.49525 0.05059,0.11828 0.153688,0.17414 0.309207,0.16813 0.21443,-0.009 0.424504,-0.13092 0.630195,-0.36698 0.207831,-0.23833 0.375738,-0.55003 0.503717,-0.93507 l 0.04365,-0.13151 z m 0.852522,-0.27447 -0.681487,2.05034 -0.386726,0.0151 0.181291,-0.54547 c -0.160822,0.22168 -0.324516,0.38756 -0.491082,0.49763 -0.165839,0.10786 -0.344069,0.16559 -0.53468,0.1732 -0.241081,0.01 -0.398927,-0.0855 -0.473591,-0.28516 -0.07257,-0.20187 -0.05126,-0.47611 0.06392,-0.82266 0.134371,-0.40428 0.323972,-0.71259 0.568803,-0.92494 0.246236,-0.21242 0.54523,-0.32562 0.896983,-0.33958 l 0.542379,-0.0216 0.01911,-0.0576 c 0.0903,-0.27167 0.101113,-0.47897 0.03246,-0.62188 -0.06654,-0.14511 -0.205622,-0.21349 -0.417233,-0.20506 -0.134581,0.006 -0.27376,0.0353 -0.41765,0.0894 -0.143873,0.0543 -0.23933,0.0105 -0.389784,0.11369 l 0.129593,-0.42308 c 0.169238,-0.0889 0.327181,-0.15634 0.47384,-0.20236 0.147348,-0.0481 0.284083,-0.0745 0.410263,-0.0797 0.340575,-0.0136 0.550131,0.11107 0.628684,0.37402 0.07858,0.26285 0.02686,0.66808 -0.155151,1.21569 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.49534509" - id="path1721" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccccccccccccccccccccc" /> - <path - d="m 28.126914,293.2913 q -0.04162,-0.05 -0.103389,-0.0773 -0.05896,-0.0295 -0.141049,-0.0387 -0.290942,-0.0329 -0.539632,0.19734 -0.245901,0.22772 -0.417305,0.68886 l -0.532281,1.43196 -0.345034,-0.0384 1.010313,-2.71829 0.345034,0.0384 -0.156978,0.42227 q 0.200189,-0.2354 0.41784,-0.33487 0.218607,-0.10209 0.466633,-0.0742 0.03543,0.004 0.07571,0.0154 0.0407,0.0112 0.08858,0.0282 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.41692752" - id="path1723" - inkscape:connector-curvature="0" /> - <path - d="m 29.861651,294.43588 -0.07656,0.20539 -1.546187,-0.002 c -0.09291,0.29071 -0.13687,0.34741 -0.0668,0.51355 0.07195,0.16485 0.221806,0.25971 0.449493,0.2848 0.131883,0.0148 0.266754,0.009 0.404711,-0.017 0.139202,-0.0259 0.501078,-0.12507 0.652538,-0.1908 l -0.148138,0.39714 c -0.147036,0.0504 -0.508081,0.13863 -0.649956,0.15781 -0.141876,0.0193 -0.279382,0.0214 -0.412486,0.007 -0.33344,-0.037 -0.553567,-0.18454 -0.660393,-0.44348 -0.105566,-0.25875 -0.08288,-0.5905 0.06807,-0.99522 0.156134,-0.41842 0.371833,-0.73999 0.647359,-0.96467 0.277318,-0.22604 0.572748,-0.32179 0.886286,-0.28722 0.281199,0.0307 0.461833,0.16663 0.541999,0.40665 0.08195,0.23874 0.05199,0.5483 -0.08989,0.92868 z m -0.297458,-0.16104 c 0.08311,-0.23003 0.09867,-0.4192 0.04645,-0.56751 -0.05093,-0.14821 -0.161032,-0.23161 -0.330238,-0.25027 -0.191612,-0.021 -0.370002,0.0283 -0.535043,0.14776 -0.16384,0.11974 -0.137625,0.29219 -0.244719,0.53066 z" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, 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;stroke-width:0.40432581" - id="path1725" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccscccsscscscccccsccc" /> - </g> - <g id="g9547" - transform="matrix(0.60186406,0.03418152,0.00599569,0.11388483,4.9544592,293.20677)"> + transform="matrix(0.36066609,0.08758903,0.00359291,0.29182614,-3.8000472,287.26951)"> <g style="display:inline" inkscape:label="Layer 1" @@ -261,7 +187,7 @@ <path id="rect5874" d="m 14.667374,10.662096 h 3.995763 v 1.331921 h -3.995763 z" - style="opacity:1;fill:#ffffff;fill-opacity:0.98571424;stroke:#000000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="opacity:1;fill:#ffffff;fill-opacity:0.985714;stroke:#000000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" inkscape:connector-curvature="0" /> <path id="rect5878" @@ -272,7 +198,7 @@ <path id="rect5880" d="m 26.64423,10.662096 -3.171232,0.209056 v 1.331921 l 3.171232,-0.209056 z" - style="opacity:1;fill:#ffffff;fill-opacity:0.98571424;stroke:#000000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="opacity:1;fill:#ffffff;fill-opacity:0.985714;stroke:#000000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" inkscape:connector-curvature="0" /> <path id="rect5882" @@ -394,20 +320,31 @@ </g> </g> <path - style="fill:#c6c6c6;fill-opacity:1;stroke:#000000;stroke-width:0.4221397px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 10.989302,259.65003 12.552693,0.18603 -0.238953,30.41303 H 9.4437423 Z" + style="fill:#c6c6c6;fill-opacity:1;stroke:#000000;stroke-width:0.42214px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 11.121594,261.03909 12.420401,-0.74001 -0.172807,36.4323 -13.5947166,-0.13229 z" id="path1132" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" /> + <g + aria-label="2" + id="text1141" + style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + transform="matrix(0.77106807,0,0,0.79873627,1.6721348,60.549491)"> + <path + d="m 26.105737,293.05816 0.895481,0.2877 -0.09525,0.35494 -1.20414,-0.38685 0.09525,-0.35495 c 0.141834,-0.13434 0.217058,-0.58166 0.459435,-0.80618 0.243602,-0.22565 0.514705,-0.10403 0.579559,-0.17089 0.122854,-0.12531 0.214382,-0.23502 0.274578,-0.32908 0.06139,-0.0951 0.105752,-0.19357 0.133028,-0.29518 0.04446,-0.16563 0.04516,-0.31208 0.002,-0.43933 -0.04226,-0.12704 -0.120134,-0.20869 -0.233604,-0.24515 -0.08045,-0.0258 -0.209651,0.11115 -0.311744,0.12826 -0.101233,0.0173 -0.177255,-0.0849 -0.303897,-0.0243 l 0.114308,-0.42593 c 0.121607,-0.035 0.231981,-0.0556 0.331068,-0.0615 0.09908,-0.006 0.185891,0.003 0.260379,0.0273 0.196449,0.0632 0.33144,0.1942 0.404968,0.39319 0.07352,0.19901 0.07405,0.43352 0.0016,0.70356 -0.03437,0.12806 -0.08188,0.24509 -0.142511,0.35111 -0.05944,0.10493 -0.148585,0.2229 -0.267477,0.35404 -0.03202,0.0336 -0.13071,0.12888 -0.296097,0.28588 -0.165023,0.15564 -0.397348,0.37355 -0.696983,0.65376 z" + style="stroke-width:0.0868997" + id="path1143" + sodipodi:nodetypes="cccccsccscscccssssccccc" /> + </g> <path - style="fill:#a2a2a2;fill-opacity:1;stroke:#000000;stroke-width:0.36160204px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 10.607003,259.85857 -2.0699576,1.9084 -0.6415948,29.4234 1.4581693,-1.05082 z" + style="fill:#a2a2a2;fill-opacity:1;stroke:#000000;stroke-width:0.361602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 11.136169,260.98305 -0.945478,-1.39889 -2.0968029,31.07705 1.6566068,5.89448 z" id="path1134" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" /> <path - style="fill:#e1e1e1;fill-opacity:1;stroke:#000000;stroke-width:0.36353821;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 7.8742933,291.40381 13.6624767,0.0171 1.73142,-1.00133 -13.87197,-0.30939 z" + style="fill:#e1e1e1;fill-opacity:1;stroke:#000000;stroke-width:0.363538;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 11.247731,260.97674 12.273415,-0.7105 -1.311288,-1.19977 -12.15218,0.28592 z" id="path1136" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" /> @@ -447,8 +384,8 @@ inkscape:connector-curvature="0" /> <g aria-label="trg" - transform="scale(1.0194966,0.98087624)" - style="font-style:normal;font-weight:normal;font-size:2.87486291px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.07187158" + transform="matrix(1.0194966,0,0,0.98087624,0,-1.0583333)" + style="font-style:normal;font-weight:normal;font-size:2.87486px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.0718716" id="text898"> <path d="m 19.369058,273.29735 -0.148579,0.73956 0.520786,0.11303 -0.06682,0.33258 -0.520786,-0.11303 -0.284071,1.41399 q -0.06401,0.31861 -0.03139,0.42035 0.034,0.10198 0.192027,0.13627 l 0.259706,0.0564 -0.07195,0.35814 -0.259705,-0.0564 q -0.292685,-0.0635 -0.367078,-0.2714 -0.07392,-0.21021 0.02419,-0.69861 l 0.284071,-1.41399 -0.185504,-0.0403 0.06681,-0.33257 0.185504,0.0403 0.148577,-0.73956 z" @@ -457,7 +394,7 @@ inkscape:connector-curvature="0" /> <path d="m 20.999928,274.1158 c -0.0348,-0.0338 -0.07296,-0.0582 -0.11448,-0.0732 -0.0404,-0.0168 -0.08529,-0.0252 -0.134672,-0.0252 -0.175082,0 -0.309761,0.0956 -0.404037,0.28686 -0.09315,0.18936 -0.139733,0.46216 -0.139733,0.8184 v 0.944 l -0.311446,0.0477 v -2.48223 h 0.311446 v 0.48934 c 0.06509,-0.19124 0.149828,-0.33279 0.254205,-0.42465 0.104377,-0.0938 0.231199,-0.14064 0.380467,-0.14064 0.02132,0 0.04489,0.003 0.07071,0.008 0.02581,0.004 0.05443,0.0107 0.08586,0.02 z" - style="stroke-width:0.11140583" + style="stroke-width:0.111406" id="path926" inkscape:connector-curvature="0" sodipodi:nodetypes="ccscsccccccsccc" /> @@ -474,25 +411,25 @@ style="font-style:normal;font-weight:normal;font-size:2.47565603px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.0618914" id="text906"> <path - d="m 22.962019,243.99449 v 0.1088 l -1.022659,0.0894 c 0.0097,0.15311 0.05561,0.18058 0.137805,0.26117 0.08301,0.0798 0.198246,0.11968 0.345722,0.11968 0.08542,0 0.168025,-0.0105 0.247807,-0.0314 0.08059,-0.0209 0.16037,-0.0524 0.239346,-0.0943 v 0.21033 c -0.07978,0.0339 -0.161579,0.0597 -0.24539,0.0774 -0.08381,0.0177 -0.168831,0.0266 -0.25506,0.0266 -0.215975,0 -0.387224,-0.0629 -0.513747,-0.18857 -0.125717,-0.12572 -0.188576,-0.29576 -0.188576,-0.51012 0,-0.22162 0.05964,-0.3973 0.178905,-0.52705 0.120076,-0.13055 0.281655,-0.19583 0.484736,-0.19583 0.182128,0 0.325977,0.0588 0.431547,0.17649 0.106376,0.11685 0.159564,0.27601 0.159564,0.47748 z m -0.222422,-0.0653 c -0.0016,-0.12169 -0.03585,-0.2188 -0.10275,-0.29133 -0.06608,-0.0725 -0.153921,-0.10879 -0.263522,-0.10879 -0.124105,0 -0.223631,0.0351 -0.298577,0.10517 -0.07414,0.0701 -0.116853,0.26938 -0.128135,0.39671 z" + d="m 22.962019,243.48887 v 0.1088 l -1.022659,0.0894 c 0.0097,0.15311 0.05561,0.18058 0.137805,0.26117 0.08301,0.0798 0.198246,0.11968 0.345722,0.11968 0.08542,0 0.168025,-0.0105 0.247807,-0.0314 0.08059,-0.0209 0.16037,-0.0524 0.239346,-0.0943 v 0.21033 c -0.07978,0.0339 -0.161579,0.0597 -0.24539,0.0774 -0.08381,0.0177 -0.168831,0.0266 -0.25506,0.0266 -0.215975,0 -0.387224,-0.0629 -0.513747,-0.18857 -0.125717,-0.12572 -0.188576,-0.29576 -0.188576,-0.51012 0,-0.22162 0.05964,-0.3973 0.178905,-0.52705 0.120076,-0.13055 0.281655,-0.19583 0.484736,-0.19583 0.182128,0 0.325977,0.0588 0.431547,0.17649 0.106376,0.11685 0.159564,0.27601 0.159564,0.47748 z m -0.222422,-0.0653 c -0.0016,-0.12169 -0.03585,-0.2188 -0.10275,-0.29133 -0.06608,-0.0725 -0.153921,-0.10879 -0.263522,-0.10879 -0.124105,0 -0.223631,0.0351 -0.298577,0.10517 -0.07414,0.0701 -0.116853,0.26938 -0.128135,0.39671 z" style="stroke-width:0.0618914" id="path917" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccscccsscscscccccsccc" /> <path - d="m 23.767779,243.53029 q -0.178498,0.005 -0.259683,0.1479 -0.08138,0.14164 -0.04233,0.38406 0.03905,0.24241 0.164102,0.37941 0.126065,0.13576 0.30577,0.13067 0.177291,-0.005 0.258475,-0.14787 0.08119,-0.14284 0.04233,-0.38405 -0.03866,-0.24002 -0.164921,-0.37698 -0.126452,-0.13817 -0.303744,-0.13314 z m -0.03031,-0.18815 q 0.289456,-0.008 0.484995,0.17526 0.195539,0.18346 0.249161,0.51634 0.05343,0.33167 -0.0813,0.52571 -0.134923,0.19282 -0.424379,0.20102 -0.290663,0.008 -0.486201,-0.17522 -0.194528,-0.18471 -0.247955,-0.51637 -0.05362,-0.33288 0.0801,-0.52567 0.134923,-0.19284 0.425585,-0.20107 z" + d="m 23.767779,243.02467 q -0.178498,0.005 -0.259683,0.1479 -0.08138,0.14164 -0.04233,0.38406 0.03905,0.24241 0.164102,0.37941 0.126065,0.13576 0.30577,0.13067 0.177291,-0.005 0.258475,-0.14787 0.08119,-0.14284 0.04233,-0.38405 -0.03866,-0.24002 -0.164921,-0.37698 -0.126452,-0.13817 -0.303744,-0.13314 z m -0.03031,-0.18815 q 0.289456,-0.008 0.484995,0.17526 0.195539,0.18346 0.249161,0.51634 0.05343,0.33167 -0.0813,0.52571 -0.134923,0.19282 -0.424379,0.20102 -0.290663,0.008 -0.486201,-0.17522 -0.194528,-0.18471 -0.247955,-0.51637 -0.05362,-0.33288 0.0801,-0.52567 0.134923,-0.19284 0.425585,-0.20107 z" style="stroke-width:0.0618914" id="path919" inkscape:connector-curvature="0" /> <path - d="m 25.814825,243.18343 v 0.24551 q -0.09429,-0.0614 -0.189784,-0.0914 -0.09429,-0.0314 -0.190993,-0.0314 -0.216378,0 -0.336051,0.16271 -0.119673,0.16128 -0.119673,0.45389 0,0.29259 0.119673,0.45532 0.119673,0.16129 0.336051,0.16129 0.09671,0 0.190993,-0.03 0.0955,-0.0314 0.189784,-0.0927 v 0.24265 q -0.09308,0.0514 -0.19341,0.0771 -0.09912,0.0258 -0.211543,0.0258 -0.305831,0 -0.485944,-0.22695 -0.180114,-0.22694 -0.180114,-0.61231 0,-0.3911 0.181323,-0.61518 0.182531,-0.22411 0.499241,-0.22411 0.102749,0 0.200663,0.0258 0.09791,0.0244 0.189784,0.0743 z" - style="stroke-width:0.06725306" + d="m 25.814825,242.67781 v 0.24551 q -0.09429,-0.0614 -0.189784,-0.0914 -0.09429,-0.0314 -0.190993,-0.0314 -0.216378,0 -0.336051,0.16271 -0.119673,0.16128 -0.119673,0.45389 0,0.29259 0.119673,0.45532 0.119673,0.16129 0.336051,0.16129 0.09671,0 0.190993,-0.03 0.0955,-0.0314 0.189784,-0.0927 v 0.24265 q -0.09308,0.0514 -0.19341,0.0771 -0.09912,0.0258 -0.211543,0.0258 -0.305831,0 -0.485944,-0.22695 -0.180114,-0.22694 -0.180114,-0.61231 0,-0.3911 0.181323,-0.61518 0.182531,-0.22411 0.499241,-0.22411 0.102749,0 0.200663,0.0258 0.09791,0.0244 0.189784,0.0743 z" + style="stroke-width:0.0672531" id="path921" inkscape:connector-curvature="0" /> <g aria-label="poly" - transform="matrix(3.0969641,0,0,1.8287161,-91.027165,-317.14641)" - style="font-style:normal;font-weight:normal;font-size:1.05467272px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.00163188" + transform="matrix(3.0969641,0,0,1.8287161,-91.027165,-316.64079)" + style="font-style:normal;font-weight:normal;font-size:1.05467px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.00163188" id="text933"> <path d="m 33.763349,302.77256 v 0.40526 h -0.09527 v -1.05476 h 0.09527 v 0.11592 q 0.02987,-0.0682 0.07519,-0.10095 0.04583,-0.0334 0.109175,-0.0334 0.105056,0 0.170458,0.11049 0.06592,0.11049 0.06592,0.29063 0,0.18012 -0.06592,0.29064 -0.0654,0.11049 -0.170458,0.11049 -0.06334,0 -0.109175,-0.0327 -0.04532,-0.0334 -0.07519,-0.10161 z m 0.322375,-0.26676 q 0,-0.1385 -0.04326,-0.21695 -0.04274,-0.0791 -0.117929,-0.0791 -0.07519,0 -0.118445,0.0791 -0.04274,0.0784 -0.04274,0.21695 0,0.13849 0.04274,0.21764 0.04326,0.0784 0.118445,0.0784 0.07519,0 0.117929,-0.0784 0.04326,-0.0791 0.04326,-0.21764 z" @@ -519,18 +456,18 @@ </g> <g aria-label="cv" - transform="matrix(1.0194966,0,0,2.0575314,0,-312.25393)" - style="font-style:normal;font-weight:normal;font-size:2.87486291px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.07187158" + transform="matrix(1.0194966,0,0,2.0575314,0,-313.31227)" + style="font-style:normal;font-weight:normal;font-size:2.87486px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.0718716" id="text910"> <path d="m 20.309217,290.12043 v 0.24145 c -0.07299,-0.0403 -0.146457,-0.0702 -0.220387,-0.0898 -0.073,-0.0206 -0.146925,-0.0309 -0.221791,-0.0309 -0.167513,0 -0.297593,0.0533 -0.39024,0.16002 -0.09265,0.10575 -0.09309,0.26591 -0.09309,0.45776 0,0.19184 4.46e-4,0.32974 0.09309,0.43643 0.09265,0.10575 0.222727,0.15862 0.39024,0.15862 0.07487,0 0.148796,-0.01 0.221791,-0.0295 0.07393,-0.0206 0.101515,0.0172 0.174509,-0.023 l 0.04588,0.17043 c -0.07206,0.0337 -0.146925,0.0589 -0.224598,0.0758 -0.07674,0.0169 -0.158623,0.0253 -0.245655,0.0253 -0.236765,0 -0.424866,-0.0744 -0.564304,-0.22319 -0.139439,-0.1488 -0.209158,-0.34954 -0.209158,-0.60221 0,-0.25641 0.07019,-0.45808 0.210561,-0.60501 0.14131,-0.14693 0.334559,-0.22039 0.579746,-0.22039 0.07954,0 0.157219,0.008 0.233021,0.0253 0.0758,0.0159 0.149264,0.0403 0.220387,0.073 z" - style="stroke-width:0.07187158" + style="stroke-width:0.0718716" id="path912" inkscape:connector-curvature="0" sodipodi:nodetypes="cccscscsccccscscsccc" /> <path d="m 20.575928,290.151 0.27373,-0.0227 0.49131,1.25132 0.238982,-1.30815 0.526057,-0.0114 -0.589572,1.57219 H 21.1655 Z" - style="stroke-width:0.07187158" + style="stroke-width:0.0718716" id="path914" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccc" /> @@ -664,5 +601,23 @@ id="path976" inkscape:connector-curvature="0" /> </g> + <g + aria-label="cv" + transform="matrix(0.88126119,0.11679658,-0.2461928,1.8575899,74.319121,-250.2889)" + style="font-style:normal;font-weight:normal;font-size:2.87486px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.0718716" + id="g1137"> + <path + d="m 20.309217,290.12043 v 0.24145 c -0.07299,-0.0403 -0.146457,-0.0702 -0.220387,-0.0898 -0.073,-0.0206 -0.146925,-0.0309 -0.221791,-0.0309 -0.167513,0 -0.297593,0.0533 -0.39024,0.16002 -0.09265,0.10575 -0.09309,0.26591 -0.09309,0.45776 0,0.19184 4.46e-4,0.32974 0.09309,0.43643 0.09265,0.10575 0.222727,0.15862 0.39024,0.15862 0.07487,0 0.148796,-0.01 0.221791,-0.0295 0.07393,-0.0206 0.101515,0.0172 0.174509,-0.023 l 0.04588,0.17043 c -0.07206,0.0337 -0.146925,0.0589 -0.224598,0.0758 -0.07674,0.0169 -0.158623,0.0253 -0.245655,0.0253 -0.236765,0 -0.424866,-0.0744 -0.564304,-0.22319 -0.139439,-0.1488 -0.209158,-0.34954 -0.209158,-0.60221 0,-0.25641 0.07019,-0.45808 0.210561,-0.60501 0.14131,-0.14693 0.334559,-0.22039 0.579746,-0.22039 0.07954,0 0.157219,0.008 0.233021,0.0253 0.0758,0.0159 0.149264,0.0403 0.220387,0.073 z" + style="stroke-width:0.0718716" + id="path1133" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccscscsccccscscsccc" /> + <path + d="m 20.575928,290.151 0.27373,-0.0227 0.49131,1.25132 0.238982,-1.30815 0.526057,-0.0114 -0.589572,1.57219 H 21.1655 Z" + style="stroke-width:0.0718716" + id="path1135" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + </g> </g> </svg> diff --git a/src/ComputerscareHorseADoodleDoo.cpp b/src/ComputerscareHorseADoodleDoo.cpp @@ -40,6 +40,7 @@ struct HorseSequencer { int pendingNumSteps = 8; float pendingDensity = 0.5f; float pendingPhase = 0.f; + float pendingPhase2 = 0.f; float pendingGatePhase = 0.f; bool pendingChange = 0; bool forceChange = 0; @@ -61,12 +62,13 @@ struct HorseSequencer { HorseSequencer() { } - HorseSequencer(float patt, int steps, float dens, int ch, float phi, float gatePhi) { + HorseSequencer(float patt, int steps, float dens, int ch, float phi, float phi2, float gatePhi) { numSteps = steps; density = dens; pattern = patt; channel = ch; phase = phi; + phase2 = phi2; gatePhase = gatePhi; makeAbsolute(); } @@ -129,13 +131,14 @@ struct HorseSequencer { setTimeToNextStep(); } - void checkAndArm(float patt, int steps, float dens, float phi, float gatePhi) { + void checkAndArm(float patt, int steps, float dens, float phi, float phi2, float gatePhi) { - if (pattern != patt || numSteps != steps || density != dens || phase != phi || gatePhase != gatePhi) { + if (pattern != patt || numSteps != steps || density != dens || phase != phi || phase2 != phi2 || gatePhase != gatePhi) { pendingPattern = patt; pendingNumSteps = steps; pendingDensity = dens; pendingPhase = phi; + pendingPhase2 = phi2; pendingGatePhase = gatePhi; pendingChange = true; } @@ -149,13 +152,15 @@ struct HorseSequencer { pendingNumSteps = numSteps; pendingDensity = density; pendingPhase = phase; + pendingPhase2 = phase2; pendingGatePhase = gatePhase; } - void change(float patt, int steps, float dens, float phi, float gatePhi) { + void change(float patt, int steps, float dens, float phi, float phi2, float gatePhi) { numSteps = std::max(1, steps); density = std::fmax(0, dens); pattern = patt; phase = phi; + phase2 = phi2; gatePhase = gatePhi; currentStep = 0; makeAbsolute(); @@ -165,7 +170,7 @@ struct HorseSequencer { currentStep++; currentStep %= numSteps; if ((currentStep == 0 && pendingChange) || forceChange) { - change(pendingPattern, pendingNumSteps, pendingDensity, pendingPhase, pendingGatePhase); + change(pendingPattern, pendingNumSteps, pendingDensity, pendingPhase, pendingPhase2, pendingGatePhase); pendingChange = false; forceChange = false; currentStep = 0; @@ -246,6 +251,9 @@ struct ComputerscareHorseADoodleDoo : ComputerscareMenuParamModule { GATE_LENGTH_SCALE, GATE_LENGTH_OFFSET, GATE_LENGTH_PHASE, + CV2_SCALE, + CV2_OFFSET, + CV2_PHASE, NUM_PARAMS }; enum InputIds { @@ -287,6 +295,10 @@ struct ComputerscareHorseADoodleDoo : ComputerscareMenuParamModule { float cvOffset = 0.f; float cvScale = 1.f; + float lastPhase2Knob = 0.f; + float cv2Offset = 0.f; + float cv2Scale = 1.f; + float gateLengthOffset = 0.f; float gateLengthScale = 1.f; @@ -391,11 +403,15 @@ struct ComputerscareHorseADoodleDoo : ComputerscareMenuParamModule { configMenuParam(CV_SCALE, -2.f, 2.f, 1.f, "CV Scale", 2); configMenuParam(CV_OFFSET, -10.f, 10.f, 0.f, "CV Offset", 2); - configMenuParam(CV_PHASE, -3.14159f, 3.14159f, 0.f, "CV Phase", 2); + configMenuParam(CV_PHASE, -3.14159f, 3.14159f, 0.f, "CV Variation", 2); + + configMenuParam(CV2_SCALE, -2.f, 2.f, 1.f, "CV2 Scale", 2); + configMenuParam(CV2_OFFSET, -10.f, 10.f, 0.f, "CV2 Offset", 2); + configMenuParam(CV2_PHASE, -3.14159f, 3.14159f, 0.f, "CV2 Variation", 2); configMenuParam(GATE_LENGTH_SCALE, 0.f, 2.f, 1.f, "Gate Length Scaling", 2); configMenuParam(GATE_LENGTH_OFFSET, 0.f, 1.f, 0.f, "Gate Length Minimum", 2); - configMenuParam(GATE_LENGTH_PHASE, -3.14159f, 3.14159f, 0.f, "Gate Length Phase", 2); + configMenuParam(GATE_LENGTH_PHASE, -3.14159f, 3.14159f, 0.f, "Gate Length Variation", 2); getParamQuantity(POLY_KNOB)->randomizeEnabled = false; @@ -417,7 +433,7 @@ struct ComputerscareHorseADoodleDoo : ComputerscareMenuParamModule { configOutput(CV2_OUTPUT, "2nd CV Sequence"); for (int i = 0; i < 16; i++) { - seq[i] = HorseSequencer(0.f, 8, 0.f, i, 0.f, 0.f); + seq[i] = HorseSequencer(0.f, 8, 0.f, i, 0.f, 0.f, 0.f); previousStep[i] = -1; } @@ -535,6 +551,9 @@ struct ComputerscareHorseADoodleDoo : ComputerscareMenuParamModule { cvScale = params[CV_SCALE].getValue(); cvOffset = params[CV_OFFSET].getValue(); + cv2Scale = params[CV2_SCALE].getValue(); + cv2Offset = params[CV2_OFFSET].getValue(); + gateLengthOffset = params[GATE_LENGTH_OFFSET].getValue(); gateLengthScale = params[GATE_LENGTH_SCALE].getValue(); @@ -543,6 +562,7 @@ struct ComputerscareHorseADoodleDoo : ComputerscareMenuParamModule { lastPolyKnob = std::floor(params[POLY_KNOB].getValue()); lastPhaseKnob = params[CV_PHASE].getValue(); + lastPhase2Knob = params[CV2_PHASE].getValue(); lastGatePhaseKnob = params[GATE_LENGTH_PHASE].getValue(); polyChannels = lastPolyKnob == 0 ? std::max(clockNum, std::max(pattNum, std::max(stepsNum, densityNum))) : lastPolyKnob; @@ -569,7 +589,7 @@ struct ComputerscareHorseADoodleDoo : ComputerscareMenuParamModule { stepsVal = std::max(2, stepsVal); densityVal = std::fmax(0, std::fmin(1, densityVal)); - seq[i].checkAndArm(patternVal, stepsVal, densityVal, lastPhaseKnob, lastGatePhaseKnob); + seq[i].checkAndArm(patternVal, stepsVal, densityVal, lastPhaseKnob, lastPhase2Knob, lastGatePhaseKnob); } } void processChannel(int ch, bool clocked, bool reset, bool clockInputHigh, int overrideMode = 0, bool overriddenTriggerHigh = false) { @@ -647,7 +667,7 @@ struct ComputerscareHorseADoodleDoo : ComputerscareMenuParamModule { } //DEBUG("before output:%f",cvVal); outputs[CV_OUTPUT].setVoltage(cvScale * cvVal[ch] + cvOffset, ch); - outputs[CV2_OUTPUT].setVoltage(cvScale * cv2Val[ch] + cvOffset, ch); + outputs[CV2_OUTPUT].setVoltage(cv2Scale * cv2Val[ch] + cv2Offset, ch); //outputs[EOC_OUTPUT].setVoltage((currentTriggerIsHigh && atFirstStepPoly[ch]) ? 10.f : 0.0f, ch); } else { @@ -888,7 +908,7 @@ struct ComputerscareHorseADoodleDooWidget : ModuleWidget { addInput(createInput<InPort>(Vec(2, inputY + 2 * dy), module, ComputerscareHorseADoodleDoo::RESET_INPUT)); - channelWidget = new PolyOutputChannelsWidget(Vec(outputX + 18, inputY - 25), module, ComputerscareHorseADoodleDoo::POLY_KNOB); + channelWidget = new PolyOutputChannelsWidget(Vec(outputX + 18, inputY - 22), module, ComputerscareHorseADoodleDoo::POLY_KNOB); addChild(channelWidget); addOutput(createOutput<PointingUpPentagonPort>(Vec(outputX, outputY), module, ComputerscareHorseADoodleDoo::TRIGGER_OUTPUT)); @@ -948,6 +968,64 @@ struct ComputerscareHorseADoodleDooWidget : ModuleWidget { void appendContextMenu(Menu* menu) override { ComputerscareHorseADoodleDoo* horse = dynamic_cast<ComputerscareHorseADoodleDoo*>(this->module); + + struct CV1Submenu : MenuItem { + ComputerscareHorseADoodleDoo* module; + Menu *createChildMenu() override { + Menu *submenu = new Menu; + + submenu->addChild(construct<MenuLabel>(&MenuLabel::text, "Dialingus Bingus. Dialingus Bingus")); + + MenuParam* cvScaleParamControl = new MenuParam(module->paramQuantities[ComputerscareHorseADoodleDoo::CV_SCALE], 2); + submenu->addChild(cvScaleParamControl); + + MenuParam* cvOffsetParamControl = new MenuParam(module->paramQuantities[ComputerscareHorseADoodleDoo::CV_OFFSET], 2); + submenu->addChild(cvOffsetParamControl); + + MenuParam* cvPhaseParamControl = new MenuParam(module->paramQuantities[ComputerscareHorseADoodleDoo::CV_PHASE], 2); + submenu->addChild(cvPhaseParamControl); + + return submenu; + } + }; + struct CV2Submenu : MenuItem { + ComputerscareHorseADoodleDoo* module; + Menu *createChildMenu() override { + Menu *submenu = new Menu; + + submenu->addChild(construct<MenuLabel>(&MenuLabel::text, "Dialingus Bingus. Dialingus Bingus")); + + MenuParam* cvScaleParamControl = new MenuParam(module->paramQuantities[ComputerscareHorseADoodleDoo::CV2_SCALE], 2); + submenu->addChild(cvScaleParamControl); + + MenuParam* cvOffsetParamControl = new MenuParam(module->paramQuantities[ComputerscareHorseADoodleDoo::CV2_OFFSET], 2); + submenu->addChild(cvOffsetParamControl); + + MenuParam* cvPhaseParamControl = new MenuParam(module->paramQuantities[ComputerscareHorseADoodleDoo::CV2_PHASE], 2); + submenu->addChild(cvPhaseParamControl); + + return submenu; + } + }; + struct GateLengthSubmenu : MenuItem { + ComputerscareHorseADoodleDoo* module; + Menu *createChildMenu() override { + Menu *submenu = new Menu; + + submenu->addChild(construct<MenuLabel>(&MenuLabel::text, "Dialingus Bingus. Dialingus Bingus")); + MenuParam* gateScaleParamControl = new MenuParam(module->paramQuantities[ComputerscareHorseADoodleDoo::GATE_LENGTH_SCALE], 2); + submenu->addChild(gateScaleParamControl); + + MenuParam* gateOffsetParamControl = new MenuParam(module->paramQuantities[ComputerscareHorseADoodleDoo::GATE_LENGTH_OFFSET], 2); + submenu->addChild(gateOffsetParamControl); + + MenuParam* gatePhaseParamControl = new MenuParam(module->paramQuantities[ComputerscareHorseADoodleDoo::GATE_LENGTH_PHASE], 2); + submenu->addChild(gatePhaseParamControl); + + return submenu; + } + }; + menu->addChild(new MenuEntry); ModeChildMenu *modeMenu = new ModeChildMenu(); modeMenu->text = "Polyphonic Triggering Mode"; @@ -963,26 +1041,32 @@ struct ComputerscareHorseADoodleDooWidget : ModuleWidget { menu->addChild(construct<MenuLabel>(&MenuLabel::text, "")); - MenuParam* cvScaleParamControl = new MenuParam(horse->paramQuantities[ComputerscareHorseADoodleDoo::CV_SCALE], 2); - menu->addChild(cvScaleParamControl); + CV1Submenu *cv1 = new CV1Submenu(); + cv1->text = "CV 1 Configuration"; + cv1->rightText = RIGHT_ARROW; + cv1->module = horse; + menu->addChild(cv1); - MenuParam* cvOffsetParamControl = new MenuParam(horse->paramQuantities[ComputerscareHorseADoodleDoo::CV_OFFSET], 2); - menu->addChild(cvOffsetParamControl); - MenuParam* cvPhaseParamControl = new MenuParam(horse->paramQuantities[ComputerscareHorseADoodleDoo::CV_PHASE], 2); - menu->addChild(cvPhaseParamControl); + CV2Submenu *cv2 = new CV2Submenu(); + cv2->text = "CV 2 Configuration"; + cv2->rightText = RIGHT_ARROW; + cv2->module = horse; + menu->addChild(cv2); - menu->addChild(construct<MenuLabel>(&MenuLabel::text, "")); - menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Gate Length Options")); - MenuParam* gateScaleParamControl = new MenuParam(horse->paramQuantities[ComputerscareHorseADoodleDoo::GATE_LENGTH_SCALE], 2); - menu->addChild(gateScaleParamControl); - MenuParam* gateOffsetParamControl = new MenuParam(horse->paramQuantities[ComputerscareHorseADoodleDoo::GATE_LENGTH_OFFSET], 2); - menu->addChild(gateOffsetParamControl); + GateLengthSubmenu *gateMenu = new GateLengthSubmenu(); + gateMenu->text = "Gate Length Configuration"; + gateMenu->rightText = RIGHT_ARROW; + gateMenu->module = horse; + menu->addChild(gateMenu); + + + + menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Gate Length Options")); + - MenuParam* gatePhaseParamControl = new MenuParam(horse->paramQuantities[ComputerscareHorseADoodleDoo::GATE_LENGTH_PHASE], 2); - menu->addChild(gatePhaseParamControl); } PolyOutputChannelsWidget* channelWidget; NumStepsOverKnobDisplay* numStepsKnob;