Initial VST3 Support (disabled)

Disabled until Steinberg licensing compliance  can be sorted out.
This commit is contained in:
Robin Davies
2022-08-15 18:14:49 -04:00
parent 351d1542e1
commit 553ae2a3f7
56 changed files with 4840 additions and 637 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+328
View File
@@ -0,0 +1,328 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 123.64451 57.061291"
xml:space="preserve"
sodipodi:docname="vst.svg"
width="123.64451"
height="57.061291"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"><metadata
id="metadata1016"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs1014" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1019"
id="namedview1012"
showgrid="false"
fit-margin-top="2"
fit-margin-left="2"
fit-margin-right="2"
fit-margin-bottom="2"
inkscape:zoom="7.3537604"
inkscape:cx="51.146503"
inkscape:cy="48.566934"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<style
type="text/css"
id="style849">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#030304;stroke:#FFFFFF;stroke-width:0.8877;stroke-miterlimit:10;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
.st2{fill:#030304;}
.st3{fill-rule:evenodd;clip-rule:evenodd;fill:#030304;}
.st4{fill:#FFFFFF;}
</style>
<path
class="st3"
d="m 72.920741,18.998501 h 36.199999 l 0.1,6.4 h -1.7 c -0.6,-2.2 -2.2,-3.7 -4.9,-4.4 -1.5,-0.4 -3.799999,-0.7 -6.799999,-0.7 v 16 c 0,1.1 0.4,1.6 1.1,1.9 0.8,0.4 2.4,0.4 4.799999,0.4 v 1.4 H 80.420741 v -1.4 c 2.3,0 3.9,-0.2 4.7,-0.5 0.8,-0.4 1.2,-0.7 1.2,-1.8 v -16 c -2.9,0 -5.2,0.3 -6.7,0.7 -2.9,0.8 -4.5,2.3 -4.9,4.4 -0.5,0 -1.7,0 -1.7,0 z"
id="path879" />
<g
id="g885"
transform="translate(3.6207414,-0.00149918)">
<path
class="st3"
d="m 40.9,29.8 3.3,0.4 0.1,0.1 c 1.3,2.7 3.4,4.8 6.3,6 2.9,1.3 6.3,1.9 10.1,1.9 3.6,0 6.3,-0.4 7.8,-1.3 1.5,-0.8 2.2,-1.7 2.2,-2.6 0,-1 -0.8,-1.9 -2.3,-2.5 C 67.3,31.3 65.1,30.7 61.9,30 L 56.6,28.8 C 51.4,27.6 47.6,26.4 45.5,25.2 43.1,24 42,22.5 42,20.7 c 0,-1.9 1.5,-3.7 4.4,-5.4 2.9,-1.6 7.3,-2.4 13.2,-2.4 3,0 5.9,0.2 8.7,0.6 1.8,0.3 4.3,0.6 4.8,0.6 1.1,0 1.5,-0.2 1.7,-0.3 0.3,-0.2 0.6,-0.5 0.8,-0.9 l 0.1,-0.1 h 2.8 v 8.7 h -2.6 l -0.1,-0.1 c -1.1,-1.8 -3,-3.5 -5.7,-4.8 -2.7,-1.4 -6,-2 -9.8,-2 -2.7,0 -4.9,0.3 -6.4,1 -1.5,0.6 -2.2,1.4 -2.2,2.3 0,1.1 0.7,1.9 2.1,2.5 1.5,0.6 4.8,1.5 9.8,2.6 l 6.1,1.4 c 2.7,0.6 4.9,1.3 6.5,2.1 3.1,1.5 4.7,3.3 4.7,5.4 0,2 -1.7,3.9 -5,5.6 C 72.4,39.2 67.2,40 60,40 58.4,40 56.7,39.9 55,39.8 53.3,39.7 51.6,39.4 50,39.2 l -1.6,-0.3 c -0.4,0 -0.7,-0.1 -1,-0.1 -0.3,0 -0.6,-0.1 -0.9,-0.1 -0.8,0 -1.3,0.1 -1.6,0.3 -0.3,0.2 -0.5,0.5 -0.8,0.9 V 40 h -3.2 z"
id="path881" />
<path
class="st4"
d="m 78.1,13.1 v 8.2 h -2.3 c -1.1,-1.9 -3,-3.5 -5.7,-4.9 -2.7,-1.4 -6,-2.1 -9.9,-2.1 -2.8,0 -4.9,0.3 -6.5,1 -1.6,0.7 -2.4,1.5 -2.4,2.5 0,1.2 0.8,2.1 2.3,2.7 1.5,0.6 4.8,1.5 9.9,2.6 l 6.1,1.4 c 2.7,0.6 4.9,1.3 6.5,2.1 3,1.4 4.5,3.2 4.5,5.2 0,1.9 -1.6,3.7 -4.9,5.4 -3.2,1.7 -8.4,2.5 -15.5,2.5 -1.6,0 -3.3,-0.1 -5,-0.2 -1.7,-0.1 -3.3,-0.3 -5,-0.6 l -1.6,-0.3 c -0.4,0 -0.7,-0.1 -1.1,-0.1 -0.3,0 -0.6,-0.1 -0.9,-0.1 -0.8,0 -1.4,0.1 -1.7,0.3 -0.3,0.2 -0.6,0.5 -0.8,1 H 41.2 V 30 l 2.9,0.4 c 1.3,2.8 3.4,4.9 6.4,6.1 3,1.3 6.3,1.9 10.1,1.9 3.7,0 6.3,-0.4 7.9,-1.3 1.6,-0.9 2.3,-1.8 2.3,-2.8 0,-1.1 -0.8,-2 -2.5,-2.8 C 67.2,31 65,30.4 61.8,29.7 l -5.3,-1.2 c -5.2,-1.2 -8.9,-2.4 -11.1,-3.6 -2.1,-1.2 -3.2,-2.6 -3.2,-4.4 0,-1.8 1.4,-3.6 4.2,-5.2 2.9,-1.6 7.2,-2.4 13.1,-2.4 3,0 5.9,0.2 8.6,0.6 2.8,0.4 4.4,0.6 4.8,0.6 0.9,0 1.5,-0.1 1.9,-0.3 0.3,-0.2 0.6,-0.6 0.8,-1 h 2.5 m 0.4,-0.2 H 78 75.6 75.3 l -0.1,0.2 c -0.2,0.3 -0.4,0.6 -0.7,0.8 -0.1,0.1 -0.5,0.3 -1.6,0.3 -0.5,0 -3.7,-0.5 -4.7,-0.6 -2.8,-0.4 -5.7,-0.6 -8.7,-0.6 -5.9,0 -10.4,0.8 -13.3,2.5 -3,1.7 -4.5,3.5 -4.5,5.6 0,1.9 1.2,3.5 3.5,4.8 2.2,1.2 5.9,2.4 11.2,3.6 l 5.3,1.2 c 3.2,0.7 5.4,1.3 6.5,1.8 1.4,0.6 2.2,1.4 2.2,2.3 0,0.8 -0.7,1.6 -2.1,2.4 -1.5,0.8 -4.1,1.2 -7.7,1.2 -3.7,0 -7.1,-0.6 -10,-1.9 C 47.8,35 45.7,33 44.5,30.3 L 44.3,30 H 44 l -2.9,-0.4 -0.5,-0.1 v 0.5 9.7 0.5 h 0.5 2.9 0.3 L 44.4,40 c 0.2,-0.4 0.4,-0.6 0.7,-0.8 0.1,-0.1 0.5,-0.3 1.5,-0.3 0.2,0 0.5,0 0.8,0.1 0.3,0 0.7,0.1 1.1,0.1 l 1.6,0.3 c 1.6,0.3 3.3,0.5 5,0.6 1.7,0.1 3.4,0.2 5,0.2 7.2,0 12.5,-0.9 15.8,-2.6 3.4,-1.8 5.1,-3.7 5.1,-5.8 0,-2.2 -1.6,-4.1 -4.8,-5.6 -1.6,-0.8 -3.9,-1.5 -6.6,-2.1 l -6.1,-1.4 c -5,-1.1 -8.3,-2 -9.8,-2.6 -1.3,-0.5 -2,-1.3 -2,-2.2 0,-0.8 0.7,-1.5 2.1,-2.1 1.5,-0.7 3.7,-1 6.4,-1 3.8,0 7.1,0.7 9.7,2 2.7,1.3 4.5,2.9 5.6,4.7 l 0.1,0.2 h 0.3 2.3 0.5 V 21.2 13 12.6 Z"
id="path883" />
</g>
<g
id="g893"
transform="translate(3.6207414,-0.00149918)">
<g
id="g891">
<path
class="st3"
d="M 28.3,40.6 13.2,22.9 C 12.6,22.2 12,21.7 11.4,21.4 10.8,21.1 9.1,20.9 7.6,20.9 H 7.4 v -1.4 h 21 V 21 h -0.2 c -2.1,0.1 -3.4,0.1 -4.1,0.3 -0.7,0.1 -0.7,0.4 -0.7,0.7 0,0.1 0,0.3 0,0.4 0,0.1 0.1,0.2 0.2,0.3 l 8.8,10.8 h 0.1 l 7.6,-9.9 c 0.2,-0.2 0.3,-0.4 0.4,-0.6 0.3,-0.4 0.3,-0.7 0.3,-0.8 0,-0.3 -0.1,-0.7 -0.8,-0.8 -0.6,-0.1 -2,-0.2 -4,-0.3 H 35.8 V 19.6 H 49.6 V 21 h -0.2 c -1.5,0.1 -3.4,0.3 -4,0.6 -0.7,0.3 -1.3,0.9 -2,1.7 L 30.1,40.6 Z"
id="path887" />
<path
class="st4"
d="m 49.5,19.7 v 1 c -1.4,0.1 -3.4,0.3 -4.1,0.6 -0.7,0.3 -1.4,0.9 -2.1,1.8 L 30,40.4 H 28.4 L 13.3,22.7 C 12.7,22 12.1,21.5 11.4,21.2 10.8,20.9 8.9,20.7 7.5,20.6 v -1 H 28 v 1 c -2.1,0.1 -3.5,0.2 -4.1,0.3 -0.6,0.1 -0.9,0.4 -0.9,0.9 0,0.1 0,0.3 0.1,0.4 0.1,0.1 0.2,0.3 0.3,0.4 l 8.9,10.9 h 0.3 l 7.7,-9.9 c 0.2,-0.2 0.3,-0.4 0.5,-0.7 0.2,-0.4 0.3,-0.7 0.3,-0.9 0,-0.6 -0.3,-0.9 -1,-1 -0.6,-0.1 -2,-0.3 -4,-0.3 v -1 H 49.5 M 50,19.2 H 49.5 36.2 35.7 v 0.5 1 0.5 h 0.5 c 2,0.1 3.3,0.2 3.9,0.3 0.6,0.1 0.6,0.4 0.6,0.6 0,0.1 0,0.3 -0.3,0.7 -0.1,0.2 -0.3,0.4 -0.4,0.6 L 32.5,33 23.8,22.4 c -0.1,-0.1 -0.2,-0.2 -0.2,-0.3 0,-0.1 0,-0.2 0,-0.3 0,-0.1 0,-0.3 0.5,-0.4 0.6,-0.1 1.9,-0.2 4,-0.3 h 0.5 v -0.5 -1 -0.5 H 28.1 7.6 7.1 v 0.5 1 0.4 h 0.4 c 1.7,0.1 3.2,0.3 3.7,0.5 0.6,0.3 1.2,0.8 1.7,1.4 l 15.1,17.6 0.1,0.2 h 0.2 1.7 0.2 l 0.1,-0.2 13.4,-17.3 c 0.6,-0.8 1.3,-1.3 1.9,-1.6 0.5,-0.3 2.1,-0.5 3.9,-0.6 h 0.4 v -0.4 -1 -0.4 z"
id="path889" />
</g>
</g>
<g
id="g1009"
transform="translate(3.6207414,-0.00149918)">
<path
class="st4"
d="m 14.1,87.1 h -0.5 l -1.2,-7.3 h 0.5 l 1,6.3 1.1,-6.3 h 0.5 z"
id="path895" />
<path
class="st4"
d="m 16.8,84.7 v 0.6 c 0,0.6 0,0.9 0.2,1.1 0.2,0.3 0.6,0.4 0.9,0.4 0.7,0 0.9,-0.5 0.9,-1.2 0,-0.8 -0.2,-1.1 -1.1,-2 -0.8,-0.8 -1.3,-1.3 -1.3,-2.3 0,-0.6 0.1,-1.6 1.4,-1.6 1.3,0 1.4,1 1.4,1.7 v 0.5 h -0.5 v -0.7 c 0,-0.4 0,-1.1 -0.9,-1.1 -0.6,0 -0.9,0.4 -0.9,1.1 0,0.7 0.1,1 1.2,2.1 0.8,0.8 1.1,1.2 1.1,2.1 0,0.7 -0.1,1.7 -1.5,1.7 -0.9,0 -1.5,-0.4 -1.5,-1.5 v -1 h 0.6 z"
id="path897" />
<path
class="st4"
d="m 21.7,80.2 v 6.9 H 21.2 V 80.2 H 19.9 V 79.7 H 23 v 0.5 z"
id="path899" />
<path
class="st4"
d="m 25.8,81.3 v -0.8 h 0.4 v 0.8 z m 0,5.8 v -5.2 h 0.4 v 5.2 z"
id="path901" />
<path
class="st4"
d="m 27.6,85.3 v 0.5 c 0,0.3 0,1 0.8,1 0.4,0 0.8,-0.2 0.8,-0.9 0,-0.5 -0.1,-0.7 -0.9,-1.3 -0.6,-0.5 -0.9,-0.8 -0.9,-1.6 0,-0.4 0.1,-1.1 1.1,-1.1 1.1,0 1.1,0.8 1.1,1.2 v 0.4 h -0.4 v -0.4 c 0,-0.6 -0.2,-0.8 -0.6,-0.8 -0.6,0 -0.7,0.4 -0.7,0.7 0,0.5 0,0.6 1,1.4 0.5,0.4 0.8,0.7 0.8,1.4 0,0.8 -0.3,1.3 -1.2,1.3 -1.1,0 -1.2,-0.6 -1.2,-1.5 v -0.4 h 0.3 z"
id="path903" />
<path
class="st4"
d="m 35.1,87.1 c -0.4,0 -0.6,-0.1 -0.7,-0.4 -0.2,0.1 -0.5,0.4 -1,0.4 -0.7,0 -1,-0.6 -1,-1.2 0,-1.5 1.4,-1.6 2,-2.2 V 83 c 0,-0.4 -0.1,-0.7 -0.6,-0.7 -0.5,0 -0.7,0.3 -0.7,1 v 0.3 h -0.4 v -0.3 c 0,-1 0.4,-1.4 1.2,-1.4 0.7,0 1.1,0.4 1.1,1.1 v 3.6 c 0,0.2 0.1,0.2 0.3,0.2 z m -0.7,-2.9 c -0.3,0.2 -0.6,0.3 -0.9,0.5 -0.5,0.3 -0.7,0.6 -0.7,1.2 0,0.2 0,0.8 0.7,0.8 0.4,0 0.7,-0.2 0.9,-0.5 z"
id="path905" />
<path
class="st4"
d="m 38.5,81.9 v 0.9 c 0.2,-0.6 0.7,-0.9 1.1,-1.1 v 0.6 c -0.1,0 -0.3,0.1 -0.4,0.2 -0.4,0.2 -0.6,0.8 -0.7,0.9 v 3.7 H 38 v -5.2 z"
id="path907" />
<path
class="st4"
d="m 42.6,85.9 c 0,0.6 -0.3,1.2 -1.2,1.2 -0.7,0 -1.2,-0.4 -1.2,-1.2 v -2.8 c 0,-0.6 0.3,-1.2 1.2,-1.2 0.8,0 1.2,0.4 1.2,1.4 v 1.3 h -2 v 1.3 c 0,0.3 0.1,0.9 0.7,0.9 0.7,0 0.8,-0.6 0.8,-1.1 v -0.4 h 0.4 v 0.6 z m -0.5,-2.8 c 0,-0.6 -0.3,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 v 1 h 1.5 z"
id="path909" />
<path
class="st4"
d="m 46,87.5 c 0,0.9 -0.6,1.3 -1.3,1.3 -0.4,0 -0.9,-0.1 -1,-0.5 C 43.6,88.2 43.6,88 43.6,87.7 H 44 c 0,0 0,0.2 0.1,0.4 0.2,0.3 0.6,0.3 0.6,0.3 0.1,0 0.8,-0.1 0.8,-0.8 v -0.9 c -0.1,0.1 -0.4,0.5 -0.9,0.5 -0.7,0 -1,-0.6 -1,-1.2 v -3 c 0,-0.9 0.5,-1.2 1.1,-1.2 0.5,0 0.8,0.3 0.9,0.5 V 81.9 H 46 Z M 45.6,83 c -0.1,-0.4 -0.4,-0.7 -0.8,-0.7 -0.6,0 -0.7,0.5 -0.7,0.9 v 2.6 c 0,0.7 0.3,0.9 0.7,0.9 0.3,0 0.7,-0.2 0.8,-0.8 z"
id="path911" />
<path
class="st4"
d="m 47.2,81.3 v -0.8 h 0.4 v 0.8 z m 0,5.8 v -5.2 h 0.4 v 5.2 z"
id="path913" />
<path
class="st4"
d="m 49,85.3 v 0.5 c 0,0.3 0,1 0.8,1 0.4,0 0.8,-0.2 0.8,-0.9 0,-0.5 -0.1,-0.7 -0.9,-1.3 -0.6,-0.5 -0.9,-0.8 -0.9,-1.6 0,-0.4 0.1,-1.1 1.1,-1.1 1.1,0 1.1,0.8 1.1,1.2 v 0.4 h -0.4 v -0.4 c 0,-0.6 -0.2,-0.8 -0.6,-0.8 -0.6,0 -0.7,0.4 -0.7,0.7 0,0.5 0,0.6 1,1.4 0.5,0.4 0.8,0.7 0.8,1.4 0,0.8 -0.3,1.3 -1.2,1.3 -1.1,0 -1.2,-0.6 -1.2,-1.5 V 85.2 H 49 Z"
id="path915" />
<path
class="st4"
d="m 51.5,81.9 h 0.6 v -1.4 h 0.4 v 1.4 h 0.8 v 0.4 h -0.8 v 4.1 c 0,0.3 0.3,0.3 0.4,0.3 0.1,0 0.3,0 0.4,0 v 0.4 c -0.2,0 -0.3,0 -0.5,0 -0.6,0 -0.8,-0.2 -0.8,-0.6 v -4.2 h -0.6 v -0.4 z"
id="path917" />
<path
class="st4"
d="m 56.3,85.9 c 0,0.6 -0.3,1.2 -1.2,1.2 -0.7,0 -1.2,-0.4 -1.2,-1.2 v -2.8 c 0,-0.6 0.3,-1.2 1.2,-1.2 0.8,0 1.2,0.4 1.2,1.4 v 1.3 h -2 v 1.3 c 0,0.3 0.1,0.9 0.7,0.9 0.7,0 0.8,-0.6 0.8,-1.1 v -0.4 h 0.4 v 0.6 z m -0.4,-2.8 c 0,-0.6 -0.3,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 v 1 h 1.5 z"
id="path919" />
<path
class="st4"
d="m 57.8,81.9 v 0.9 c 0.2,-0.6 0.7,-0.9 1.1,-1.1 v 0.6 c -0.1,0 -0.3,0.1 -0.4,0.2 -0.4,0.2 -0.6,0.8 -0.7,0.9 v 3.7 h -0.4 v -5.2 z"
id="path921" />
<path
class="st4"
d="m 62,85.9 c 0,0.6 -0.3,1.2 -1.2,1.2 -0.7,0 -1.2,-0.4 -1.2,-1.2 v -2.8 c 0,-0.6 0.3,-1.2 1.2,-1.2 0.8,0 1.2,0.4 1.2,1.4 v 1.3 h -2 v 1.3 c 0,0.3 0.1,0.9 0.7,0.9 0.7,0 0.8,-0.6 0.8,-1.1 V 85.3 H 62 Z m -0.5,-2.8 c 0,-0.6 -0.3,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 v 1 h 1.5 z"
id="path923" />
<path
class="st4"
d="m 65,87.1 v -0.6 c -0.1,0.2 -0.4,0.6 -1,0.6 -0.5,0 -1,-0.3 -1,-1.2 v -2.8 c 0,-0.9 0.5,-1.3 1.1,-1.3 0.6,0 0.8,0.4 0.9,0.5 v -2.6 h 0.4 V 87 H 65 Z m 0,-3.9 c -0.1,-0.5 -0.3,-0.9 -0.8,-0.9 -0.5,0 -0.7,0.4 -0.7,0.8 v 2.7 c 0,0.3 0.1,0.9 0.7,0.9 0.4,0 0.7,-0.4 0.8,-0.8 z"
id="path925" />
<path
class="st4"
d="m 68.2,81.9 h 0.6 v -1.4 h 0.4 v 1.4 H 70 v 0.4 h -0.8 v 4.1 c 0,0.3 0.3,0.3 0.4,0.3 0.1,0 0.3,0 0.4,0 v 0.4 c -0.2,0 -0.3,0 -0.5,0 -0.6,0 -0.8,-0.2 -0.8,-0.6 v -4.2 h -0.6 v -0.4 z"
id="path927" />
<path
class="st4"
d="m 71.1,81.9 v 0.9 c 0.2,-0.6 0.7,-0.9 1.1,-1.1 v 0.6 c -0.1,0 -0.3,0.1 -0.4,0.2 -0.4,0.2 -0.6,0.8 -0.7,0.9 v 3.7 h -0.4 v -5.2 z"
id="path929" />
<path
class="st4"
d="m 75.4,87.1 c -0.4,0 -0.6,-0.1 -0.7,-0.4 -0.2,0.1 -0.5,0.4 -1,0.4 -0.7,0 -1,-0.6 -1,-1.2 0,-1.5 1.4,-1.6 2,-2.2 V 83 c 0,-0.4 -0.1,-0.7 -0.6,-0.7 -0.5,0 -0.7,0.3 -0.7,1 v 0.3 H 73 v -0.3 c 0,-1 0.4,-1.4 1.2,-1.4 0.8,0 1.1,0.4 1.1,1.1 v 3.6 c 0,0.2 0.1,0.2 0.3,0.2 z m -0.7,-2.9 c -0.3,0.2 -0.6,0.3 -0.9,0.5 -0.5,0.3 -0.7,0.6 -0.7,1.2 0,0.2 0,0.8 0.7,0.8 0.4,0 0.7,-0.2 0.9,-0.5 z"
id="path931" />
<path
class="st4"
d="m 78.3,87.1 v -0.6 c -0.1,0.2 -0.4,0.6 -1,0.6 -0.5,0 -1,-0.3 -1,-1.2 v -2.8 c 0,-0.9 0.5,-1.3 1.1,-1.3 0.6,0 0.8,0.4 0.9,0.5 v -2.6 h 0.4 V 87 h -0.4 z m -0.1,-3.9 c -0.1,-0.5 -0.3,-0.9 -0.8,-0.9 -0.5,0 -0.7,0.4 -0.7,0.8 v 2.7 c 0,0.3 0.1,0.9 0.7,0.9 0.4,0 0.8,-0.4 0.8,-0.8 z"
id="path933" />
<path
class="st4"
d="m 82.2,85.9 c 0,0.6 -0.3,1.2 -1.2,1.2 -0.7,0 -1.2,-0.4 -1.2,-1.2 v -2.8 c 0,-0.6 0.3,-1.2 1.2,-1.2 0.8,0 1.2,0.4 1.2,1.4 v 1.3 h -2 v 1.3 c 0,0.3 0.1,0.9 0.7,0.9 0.7,0 0.8,-0.6 0.8,-1.1 v -0.4 h 0.4 v 0.6 z m -0.5,-2.8 c 0,-0.6 -0.3,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 v 1 h 1.5 z"
id="path935" />
<path
class="st4"
d="m 87.2,87.1 v -4 c 0,-0.5 -0.1,-0.9 -0.7,-0.9 -0.4,0 -0.7,0.3 -0.9,0.6 V 87 h -0.4 v -4 c 0,-0.5 -0.2,-0.7 -0.7,-0.7 -0.5,0 -0.8,0.4 -0.8,0.6 v 4.3 H 83.3 V 82 h 0.4 v 0.4 c 0.1,-0.2 0.5,-0.5 1,-0.5 0.6,0 0.8,0.4 0.9,0.6 0.1,-0.2 0.4,-0.6 1.1,-0.6 0.5,0 1,0.3 1,1.2 v 4.2 h -0.5 z"
id="path937" />
<path
class="st4"
d="m 91.2,87.1 c -0.4,0 -0.6,-0.1 -0.7,-0.4 -0.2,0.1 -0.5,0.4 -1,0.4 -0.7,0 -1,-0.6 -1,-1.2 0,-1.5 1.4,-1.6 2,-2.2 V 83 c 0,-0.4 -0.1,-0.7 -0.6,-0.7 -0.5,0 -0.7,0.3 -0.7,1 v 0.3 h -0.4 v -0.3 c 0,-1 0.4,-1.4 1.2,-1.4 0.7,0 1.1,0.4 1.1,1.1 v 3.6 c 0,0.2 0.1,0.2 0.3,0.2 z m -0.6,-2.9 c -0.3,0.2 -0.6,0.3 -0.9,0.5 -0.5,0.3 -0.7,0.6 -0.7,1.2 0,0.2 0,0.8 0.7,0.8 0.4,0 0.7,-0.2 0.9,-0.5 z"
id="path939" />
<path
class="st4"
d="m 92.6,81.9 v 0.9 c 0.2,-0.6 0.7,-0.9 1.1,-1.1 v 0.6 c -0.1,0 -0.3,0.1 -0.4,0.2 -0.4,0.2 -0.6,0.8 -0.7,0.9 v 3.7 h -0.4 v -5.2 z"
id="path941" />
<path
class="st4"
d="m 96.5,87.1 -1.1,-2.8 -0.5,0.8 V 87 h -0.4 v -7.3 h 0.4 v 4.6 l 1.5,-2.5 h 0.5 l -1.2,2 1.3,3.2 h -0.5 z"
id="path943" />
<path
class="st4"
d="m 102.1,85.7 c 0,1 -0.6,1.4 -1.2,1.4 -0.7,0 -1.2,-0.4 -1.2,-1.1 v -2.9 c 0,-0.6 0.3,-1.3 1.3,-1.3 0.8,0 1.2,0.5 1.2,1.3 v 2.6 z m -0.4,-2.5 c 0,-0.4 -0.1,-0.9 -0.7,-0.9 -0.7,0 -0.8,0.5 -0.8,1 v 2.6 c 0,0.6 0.3,0.8 0.8,0.8 0.7,0 0.8,-0.6 0.8,-0.9 v -2.6 z"
id="path945" />
<path
class="st4"
d="m 102.8,81.9 h 0.6 v -1.3 c 0,-0.4 0.2,-0.8 0.9,-0.8 0.1,0 0.2,0 0.3,0 v 0.4 c 0,0 -0.1,0 -0.2,0 -0.3,0 -0.6,0.1 -0.6,0.6 v 1.1 h 0.6 v 0.4 h -0.7 v 4.8 h -0.4 v -4.8 h -0.6 v -0.4 z"
id="path947" />
<path
class="st4"
d="m 6.9,96.7 v 0.6 c 0,0.6 0,0.9 0.2,1.1 0.2,0.3 0.6,0.4 0.9,0.4 0.7,0 0.9,-0.5 0.9,-1.2 0,-0.8 -0.2,-1.1 -1.1,-2 C 7,94.8 6.5,94.3 6.5,93.3 c 0,-0.6 0.1,-1.6 1.4,-1.6 1.3,0 1.4,1 1.4,1.7 v 0.5 H 8.8 v -0.7 c 0,-0.4 0,-1.1 -0.9,-1.1 -0.6,0 -0.9,0.4 -0.9,1.1 0,0.7 0.1,1 1.2,2.1 0.8,0.8 1.1,1.2 1.1,2.1 0,0.7 -0.1,1.7 -1.5,1.7 -0.9,0 -1.5,-0.4 -1.5,-1.5 v -1 h 0.6 z"
id="path949" />
<path
class="st4"
d="m 9.9,93.9 h 0.6 v -1.4 h 0.4 v 1.4 h 0.8 v 0.4 h -0.8 v 4.1 c 0,0.3 0.3,0.3 0.4,0.3 0.1,0 0.3,0 0.4,0 v 0.4 c -0.2,0 -0.3,0 -0.5,0 -0.6,0 -0.8,-0.2 -0.8,-0.6 V 94.3 H 9.9 Z"
id="path951" />
<path
class="st4"
d="m 14.7,98 c 0,0.6 -0.3,1.2 -1.2,1.2 -0.7,0 -1.2,-0.4 -1.2,-1.2 v -2.8 c 0,-0.6 0.3,-1.2 1.2,-1.2 0.8,0 1.2,0.4 1.2,1.4 v 1.3 h -2 V 98 c 0,0.3 0.1,0.9 0.7,0.9 0.7,0 0.8,-0.6 0.8,-1.1 v -0.4 h 0.4 V 98 Z m -0.5,-2.8 c 0,-0.6 -0.3,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 v 1 h 1.5 z"
id="path953" />
<path
class="st4"
d="m 15.7,93.3 v -0.8 h 0.4 v 0.8 z m 0,5.9 V 94 h 0.4 v 5.2 z"
id="path955" />
<path
class="st4"
d="M 19.3,99.2 V 95 c 0,-0.4 -0.1,-0.8 -0.6,-0.8 -0.4,0 -0.7,0.2 -0.9,0.7 v 4.3 H 17.4 V 94 h 0.4 v 0.5 c 0.3,-0.5 0.8,-0.6 1,-0.6 0.4,0 1,0.2 1,1.1 v 4.2 z"
id="path957" />
<path
class="st4"
d="m 20.9,91.8 h 0.4 v 2.6 c 0.3,-0.4 0.7,-0.5 1,-0.5 0.9,0 1,0.8 1,1.3 v 2.7 c 0,0.5 -0.3,1.2 -1.1,1.2 -0.1,0 -0.6,0 -0.8,-0.5 V 99 h -0.5 z m 0.5,5.9 c 0,0.9 0.6,1 0.8,1 0.5,0 0.7,-0.4 0.7,-1 v -2.6 c 0,-0.2 0,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 z"
id="path959" />
<path
class="st4"
d="m 26.8,98 c 0,0.6 -0.3,1.2 -1.2,1.2 -0.7,0 -1.2,-0.4 -1.2,-1.2 v -2.8 c 0,-0.6 0.3,-1.2 1.2,-1.2 0.8,0 1.2,0.4 1.2,1.4 v 1.3 h -2 V 98 c 0,0.3 0.1,0.9 0.7,0.9 0.7,0 0.8,-0.6 0.8,-1.1 v -0.4 h 0.4 V 98 Z m -0.5,-2.8 c 0,-0.6 -0.3,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 v 1 h 1.5 z"
id="path961" />
<path
class="st4"
d="m 28.3,93.9 v 0.9 c 0.2,-0.6 0.7,-0.9 1.1,-1.1 v 0.6 c -0.1,0 -0.3,0.1 -0.4,0.2 -0.4,0.2 -0.6,0.8 -0.7,0.9 v 3.7 h -0.4 v -5.2 z"
id="path963" />
<path
class="st4"
d="m 32.5,99.5 c 0,0.9 -0.6,1.3 -1.3,1.3 -0.4,0 -0.9,-0.1 -1,-0.5 -0.1,-0.1 -0.1,-0.3 -0.1,-0.6 h 0.4 c 0,0 0,0.2 0.1,0.4 0.2,0.3 0.6,0.3 0.6,0.3 0.1,0 0.8,-0.1 0.8,-0.8 v -0.9 c -0.1,0.1 -0.4,0.5 -0.9,0.5 -0.7,0 -1,-0.6 -1,-1.2 v -2.9 c 0,-0.9 0.5,-1.2 1.1,-1.2 0.5,0 0.8,0.3 0.9,0.5 V 94 h 0.4 z M 32,95 c -0.1,-0.4 -0.4,-0.7 -0.8,-0.7 -0.6,0 -0.7,0.5 -0.7,0.9 v 2.6 c 0,0.7 0.3,0.9 0.7,0.9 0.3,0 0.7,-0.2 0.8,-0.8 z"
id="path965" />
<path
class="st4"
d="m 39.3,99.2 c 0,-0.5 0,-5.1 0,-6.8 L 38,99.2 h -0.5 l -1.3,-6.8 v 6.8 h -0.5 c 0,-0.5 0.1,-7.3 0.1,-7.3 h 0.7 l 1.2,6.3 1.2,-6.3 h 0.7 c 0,0.8 0.1,7.3 0.1,7.3 z"
id="path967" />
<path
class="st4"
d="m 43.3,98 c 0,0.6 -0.3,1.2 -1.2,1.2 -0.7,0 -1.2,-0.4 -1.2,-1.2 v -2.8 c 0,-0.6 0.3,-1.2 1.2,-1.2 0.8,0 1.2,0.4 1.2,1.4 v 1.3 h -2 V 98 c 0,0.3 0.1,0.9 0.7,0.9 0.7,0 0.8,-0.6 0.8,-1.1 v -0.4 h 0.4 V 98 Z m -0.4,-2.8 c 0,-0.6 -0.3,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 v 1 h 1.5 z"
id="path969" />
<path
class="st4"
d="m 46.3,99.2 v -0.6 c -0.1,0.2 -0.4,0.6 -1,0.6 -0.5,0 -1,-0.3 -1,-1.2 v -2.8 c 0,-0.9 0.5,-1.3 1.1,-1.3 0.6,0 0.8,0.4 0.9,0.5 v -2.6 h 0.4 v 7.3 h -0.4 z m 0,-3.9 c -0.1,-0.5 -0.3,-0.9 -0.8,-0.9 -0.5,0 -0.7,0.4 -0.7,0.8 v 2.7 c 0,0.3 0.1,0.9 0.7,0.9 0.4,0 0.7,-0.4 0.8,-0.8 z"
id="path971" />
<path
class="st4"
d="m 48,93.3 v -0.8 h 0.4 v 0.8 z m 0,5.9 V 94 h 0.4 v 5.2 z"
id="path973" />
<path
class="st4"
d="m 52,99.2 c -0.4,0 -0.6,-0.1 -0.7,-0.4 -0.2,0.1 -0.5,0.4 -1,0.4 -0.7,0 -1,-0.6 -1,-1.2 0,-1.5 1.4,-1.6 2,-2.2 V 95 c 0,-0.4 -0.1,-0.7 -0.6,-0.7 -0.5,0 -0.7,0.3 -0.7,1 v 0.3 h -0.4 v -0.3 c 0,-1 0.4,-1.4 1.2,-1.4 0.7,0 1.1,0.4 1.1,1.1 v 3.6 c 0,0.2 0.1,0.2 0.3,0.2 z m -0.6,-3 c -0.3,0.2 -0.6,0.3 -0.9,0.5 -0.5,0.3 -0.7,0.6 -0.7,1.2 0,0.2 0,0.8 0.7,0.8 0.4,0 0.7,-0.2 0.9,-0.5 z"
id="path975" />
<path
class="st4"
d="m 56.3,92.3 v 6.9 h -0.5 v -6.9 h -1.3 v -0.5 h 3.1 v 0.5 z"
id="path977" />
<path
class="st4"
d="m 60,98 c 0,0.6 -0.3,1.2 -1.2,1.2 -0.7,0 -1.2,-0.4 -1.2,-1.2 v -2.8 c 0,-0.6 0.3,-1.2 1.2,-1.2 0.8,0 1.2,0.4 1.2,1.4 v 1.3 H 58 V 98 c 0,0.3 0.1,0.9 0.7,0.9 0.7,0 0.8,-0.6 0.8,-1.1 V 97.4 H 60 Z m -0.4,-2.8 c 0,-0.6 -0.3,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 v 1 h 1.5 z"
id="path979" />
<path
class="st4"
d="m 63.5,97.8 c 0,0.8 -0.3,1.4 -1.3,1.4 -0.9,0 -1.2,-0.7 -1.2,-1.3 v -2.6 c 0,-1 0.5,-1.3 1.2,-1.3 0.8,0 1.2,0.5 1.2,1.4 v 0.5 H 63 v -0.4 c 0,-0.5 -0.1,-1.1 -0.8,-1.1 -0.7,0 -0.8,0.6 -0.8,1 v 2.3 c 0,0.5 0,1.2 0.8,1.2 0.6,0 0.7,-0.5 0.7,-0.9 v -0.8 h 0.5 v 0.6 z"
id="path981" />
<path
class="st4"
d="m 66.4,99.2 v -3.9 c 0,-0.5 -0.1,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.7 v 4.2 H 64.5 V 92 h 0.4 v 2.5 C 65,94.4 65.3,94 65.8,94 c 0.4,0 1,0.2 1,1.1 v 4.2 h -0.4 z"
id="path983" />
<path
class="st4"
d="M 70,99.2 V 95 c 0,-0.4 -0.1,-0.8 -0.6,-0.8 -0.4,0 -0.7,0.2 -0.9,0.7 v 4.3 H 68 V 94 h 0.4 v 0.5 c 0.3,-0.5 0.8,-0.6 1,-0.6 0.4,0 1,0.2 1,1.1 v 4.2 z"
id="path985" />
<path
class="st4"
d="m 74,97.8 c 0,1 -0.6,1.4 -1.2,1.4 -0.7,0 -1.2,-0.4 -1.2,-1.1 v -2.9 c 0,-0.6 0.3,-1.3 1.3,-1.3 0.8,0 1.2,0.5 1.2,1.3 v 2.6 z m -0.5,-2.6 c 0,-0.4 -0.1,-0.9 -0.7,-0.9 -0.7,0 -0.8,0.5 -0.8,1 v 2.6 c 0,0.6 0.3,0.8 0.8,0.8 0.7,0 0.8,-0.6 0.8,-0.9 v -2.6 z"
id="path987" />
<path
class="st4"
d="m 75,99.2 v -7.3 h 0.4 v 7.3 z"
id="path989" />
<path
class="st4"
d="m 79.1,97.8 c 0,1 -0.6,1.4 -1.2,1.4 -0.7,0 -1.2,-0.4 -1.2,-1.1 v -2.9 c 0,-0.6 0.3,-1.3 1.3,-1.3 0.8,0 1.2,0.5 1.2,1.3 v 2.6 z m -0.5,-2.6 c 0,-0.4 -0.1,-0.9 -0.7,-0.9 -0.7,0 -0.8,0.5 -0.8,1 v 2.6 c 0,0.6 0.3,0.8 0.8,0.8 0.7,0 0.8,-0.6 0.8,-0.9 v -2.6 z"
id="path991" />
<path
class="st4"
d="m 82.6,99.5 c 0,0.9 -0.6,1.3 -1.3,1.3 -0.4,0 -0.9,-0.1 -1,-0.5 -0.1,-0.1 -0.1,-0.3 -0.1,-0.6 h 0.4 c 0,0 0,0.2 0.1,0.4 0.2,0.3 0.6,0.3 0.6,0.3 0.1,0 0.8,-0.1 0.8,-0.8 v -0.9 c -0.1,0.1 -0.4,0.5 -0.9,0.5 -0.8,0 -1,-0.6 -1,-1.2 v -2.9 c 0,-0.9 0.5,-1.2 1.1,-1.2 0.5,0 0.8,0.3 0.9,0.5 V 94 h 0.4 z M 82.2,95 c -0.1,-0.4 -0.4,-0.7 -0.8,-0.7 -0.6,0 -0.7,0.5 -0.7,0.9 v 2.6 c 0,0.7 0.3,0.9 0.7,0.9 0.3,0 0.7,-0.2 0.8,-0.8 z"
id="path993" />
<path
class="st4"
d="m 83.8,93.3 v -0.8 h 0.4 v 0.8 z m 0,5.9 V 94 h 0.4 v 5.2 z"
id="path995" />
<path
class="st4"
d="m 87.7,98 c 0,0.6 -0.3,1.2 -1.2,1.2 -0.7,0 -1.2,-0.4 -1.2,-1.2 v -2.8 c 0,-0.6 0.3,-1.2 1.2,-1.2 0.8,0 1.2,0.4 1.2,1.4 v 1.3 h -2 V 98 c 0,0.3 0.1,0.9 0.7,0.9 0.7,0 0.8,-0.6 0.8,-1.1 v -0.4 h 0.4 V 98 Z m -0.4,-2.8 c 0,-0.6 -0.3,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 v 1 h 1.5 z"
id="path997" />
<path
class="st4"
d="m 89,97.3 v 0.5 c 0,0.3 0,1 0.8,1 0.4,0 0.8,-0.2 0.8,-0.9 0,-0.5 -0.1,-0.7 -0.9,-1.3 -0.6,-0.5 -0.9,-0.8 -0.9,-1.6 0,-0.4 0.1,-1.1 1.1,-1.1 1.1,0 1.1,0.8 1.1,1.2 v 0.4 h -0.4 v -0.4 c 0,-0.6 -0.2,-0.8 -0.6,-0.8 -0.6,0 -0.7,0.4 -0.7,0.7 0,0.5 0,0.6 1,1.4 0.5,0.4 0.8,0.7 0.8,1.4 0,0.8 -0.3,1.3 -1.2,1.3 -1.1,0 -1.2,-0.6 -1.2,-1.5 V 97.2 H 89 Z"
id="path999" />
<path
class="st4"
d="m 96.6,99.2 v -0.6 c -0.1,0.2 -0.5,0.7 -1.2,0.7 -0.4,0 -0.9,-0.2 -1.1,-0.6 C 94.1,98.3 94,98 94,97.3 v -3.9 c 0,-1 0.4,-1.6 1.5,-1.6 1.1,0 1.4,0.7 1.4,1.3 v 1.1 h -0.5 v -0.9 c 0,-0.6 -0.1,-1.1 -1,-1.1 -0.8,0 -1,0.6 -1,1.2 v 3.8 c 0,0.6 0,0.9 0.1,1.2 0.1,0.2 0.3,0.5 0.8,0.5 0.7,0 1,-0.8 1,-1.2 V 96.4 H 95.2 V 96 H 97 v 3.4 h -0.4 z"
id="path1001" />
<path
class="st4"
d="m 102.1,99.2 v -4 c 0,-0.5 -0.1,-0.9 -0.7,-0.9 -0.4,0 -0.7,0.3 -0.9,0.6 v 4.2 h -0.4 V 95 c 0,-0.5 -0.2,-0.7 -0.7,-0.7 -0.5,0 -0.8,0.4 -0.8,0.6 v 4.3 H 98.2 V 94 h 0.4 v 0.4 c 0.1,-0.2 0.5,-0.5 1,-0.5 0.6,0 0.8,0.4 0.9,0.6 0.1,-0.2 0.4,-0.6 1.1,-0.6 0.5,0 1,0.3 1,1.2 v 4.2 h -0.5 z"
id="path1003" />
<path
class="st4"
d="m 103.7,91.8 h 0.4 v 2.6 c 0.3,-0.4 0.7,-0.5 1,-0.5 0.9,0 1,0.8 1,1.3 v 2.7 c 0,0.5 -0.3,1.2 -1.1,1.2 -0.1,0 -0.6,0 -0.8,-0.5 V 99 h -0.5 z m 0.5,5.9 c 0,0.9 0.6,1 0.8,1 0.5,0 0.7,-0.4 0.7,-1 v -2.6 c 0,-0.2 0,-0.9 -0.7,-0.9 -0.5,0 -0.8,0.4 -0.8,0.9 z"
id="path1005" />
<path
class="st4"
d="m 109.6,99.2 v -3.4 h -1.8 v 3.4 h -0.5 v -7 h 0.5 v 3.1 h 1.8 v -3.1 h 0.5 v 7 z"
id="path1007" />
</g>
<rect
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1018"
width="115.64451"
height="49.061291"
x="4"
y="4" /></svg>

After

Width:  |  Height:  |  Size: 22 KiB

+1 -1
View File
@@ -1,5 +1,5 @@
{
"socket_server_port": 80,
"socket_server_port": 8080,
"socket_server_address": "*",
"debug": true,
"max_upload_size": 1048576,
+18 -2
View File
@@ -228,6 +228,7 @@ export const LoadPluginDialog =
let gridWidth = width - this.margin_reserve;
let columns = Math.floor((gridWidth) / this.nominal_column_width);
if (columns < 1) columns = 1;
if (columns > 3) columns = 3;
return columns;
}
@@ -388,6 +389,14 @@ export const LoadPluginDialog =
// let selectedUri = this.state.selected_uri;
}
vst3_indicator(uiPlugin? : UiPlugin)
{
if (uiPlugin?.is_vst3)
{
return (<img alt="vst" src="/img/vst.svg" style={{marginLeft: 8,height: 22, opacity: 0.6,position: "relative",top: -1}} />)
}
return null;
}
stereo_indicator(uiPlugin?: UiPlugin): string {
if (!uiPlugin) return "";
if (uiPlugin.audio_inputs === 2 || uiPlugin.audio_outputs === 2) {
@@ -436,7 +445,13 @@ export const LoadPluginDialog =
for (let i = 0; i < plugins.length; ++i) {
let plugin = plugins[i];
if (filterType === PluginType.Plugin || rootClass.is_type_of(filterType, plugin.plugin_type)) {
let score = searchFilter.score(plugin.name, plugin.plugin_display_type, plugin.author_name);
let score:number = 0;
if (plugin.is_vst3)
{
score = searchFilter.score(plugin.name, plugin.plugin_display_type, plugin.author_name,"vst3");
} else {
score = searchFilter.score(plugin.name, plugin.plugin_display_type, plugin.author_name);
}
if (score !== 0) {
if (this.state.favoritesList[plugin.uri]) {
@@ -668,8 +683,9 @@ export const LoadPluginDialog =
<div style={{ display: "flex", justifyContent: "start", alignItems: "center", flex: "1 1 auto", height: "100%", overflow: "hidden" }} >
<PluginInfoDialog plugin_uri={this.state.selected_uri ?? ""} />
<Typography display='block' variant='body2' color="textPrimary" noWrap >
{this.info_string(selectedPlugin)}
{this.info_string(selectedPlugin)}
</Typography>
{this.vst3_indicator(selectedPlugin)}
<div style={{
color: isFavorite ? "#F80" : "#CCC", display: (this.state.selected_uri !== "" ? "block" : "none"),
position: "relative", top: -2
+26 -2
View File
@@ -45,6 +45,8 @@ export class Port implements Deserializable<Port> {
this.supports_time_position = input.supports_time_position;
this.port_group = input.port_group;
this.comment = input.comment;
this.is_bypass = input.is_bypass;
this.is_program_controller = input.is_program_controller;
return this;
}
@@ -75,12 +77,17 @@ export class Port implements Deserializable<Port> {
supports_time_position: boolean = false;
port_group: string = "";
comment: string = "";
is_bypass: boolean = false;
is_program_controller: boolean = false;
}
export class PortGroup {
deserialize(input: any): PortGroup {
this.symbol = input.symbol;
this.name = input.name;
this.parent_group = input.parent_group;
this.program_list_id = input.program_list_id ?? -1;
return this;
}
static deserialize_array(input: any) : PortGroup[] {
@@ -94,6 +101,8 @@ export class PortGroup {
symbol: string = "";
name: string = "";
parent_group: string = "";
program_list_id: number = -1;
};
export class Lv2Plugin implements Deserializable<Lv2Plugin> {
@@ -223,10 +232,19 @@ export class UiControl implements Deserializable<UiControl> {
this.scale_points = ScalePoint.deserialize_array(input.scale_points);
this.port_group = input.port_group;
this.units = input.units as Units;
this.comment = input.comment;
this.comment = input.comment ?? "";
this.is_bypass = input.is_bypass ? true: false;
this.is_program_controller = input.is_program_controller? true: false;
this.custom_units = input.custom_units ?? "";
this.controlType = ControlType.Dial;
if (this.is_bypass)
{
this.not_on_gui = true;
}
if (this.enumeration_property && this.scale_points.length === 2)
{
@@ -234,7 +252,7 @@ export class UiControl implements Deserializable<UiControl> {
} else {
if (this.min_value === 0 && this.max_value === 1)
{
if (this.toggled_property || this.integer_property)
if (this.toggled_property || this.integer_property || this.range_steps === 2)
{
this.controlType = ControlType.OnOffSwitch;
}
@@ -276,6 +294,10 @@ export class UiControl implements Deserializable<UiControl> {
port_group: string = "";
units: Units = Units.none;
comment: string = "";
is_bypass: boolean = true;
is_program_controller: boolean = true;
custom_units: string = "";
// Return the value of the closest scale_point.
clampSelectValue(value: number): number{
@@ -452,6 +474,7 @@ export class UiPlugin implements Deserializable<UiPlugin> {
this.description = input.description;
this.controls = UiControl.deserialize_array(input.controls);
this.port_groups = PortGroup.deserialize_array(input.port_groups);
this.is_vst3 = input.is_vst3;
return this;
}
@@ -501,5 +524,6 @@ export class UiPlugin implements Deserializable<UiPlugin> {
description: string = "";
controls: UiControl[] = [];
port_groups: PortGroup[] = [];
is_vst3 : boolean = false;
}
+2
View File
@@ -67,6 +67,7 @@ export class PedalBoardItem implements Deserializable<PedalBoardItem> {
this.midiBindings = MidiBinding.deserialize_array(input.midiBindings);
this.controlValues = ControlValue.deserializeArray(input.controlValues);
this.vstState = input.vstState ?? "";
return this;
}
deserialize(input: any): PedalBoardItem {
@@ -183,6 +184,7 @@ export class PedalBoardItem implements Deserializable<PedalBoardItem> {
pluginName?: string;
controlValues: ControlValue[] = ControlValue.EmptyArray;
midiBindings: MidiBinding[] = [];
vstState: string = "";
};
+115 -97
View File
@@ -62,6 +62,12 @@ const EMPTY_ICON_URL = "img/fx_empty.svg";
const ERROR_ICON_URL = "img/fx_error.svg";
const TERMINAL_ICON_URL = "img/fx_terminal.svg";
function CalculateConnection(numberOfInputs: number, numberOfOutputs: number)
{
let result = Math.min(numberOfInputs, numberOfOutputs);
if (result > 2) result = 2;
return result;
}
const pedalBoardStyles = (theme: Theme) => createStyles({
scrollContainer: {
@@ -210,10 +216,9 @@ class PedalLayout {
bounds: Rect = new Rect();
inputs: number = 0;
outputs: number = 0;
stereoInput: boolean = false;
stereoOutput: boolean = false;
numberOfInputs: number = 2;
numberOfOutputs: number = 2;
pedalItem?: PedalBoardItem;
// Split Layout only.
@@ -227,8 +232,8 @@ class PedalLayout {
let t: PedalLayout = new PedalLayout();
t.uri = START_PEDALBOARD_ITEM_URI;
t.iconUrl = TERMINAL_ICON_URL;
t.inputs = 0;
t.outputs = 1;
t.numberOfInputs = 0;
t.numberOfOutputs = 2;
return t;
}
static End(): PedalLayout {
@@ -236,8 +241,8 @@ class PedalLayout {
t.pluginType = PluginType.UtilityPlugin;
t.uri = END_PEDALBOARD_ITEM_URI;
t.iconUrl = TERMINAL_ICON_URL;
t.inputs = 2;
t.outputs = 0;
t.numberOfInputs = 2;
t.numberOfOutputs = 0;
return t;
}
constructor(model?: PiPedalModel, pedalItem?: PedalBoardItem) {
@@ -256,27 +261,27 @@ class PedalLayout {
this.topChildren = makeChain(model, splitter.topChain);
this.bottomChildren = makeChain(model, splitter.bottomChain);
this.inputs = 2;
this.outputs = 2;
this.numberOfInputs = 2;
this.numberOfOutputs = 2;
} else if (pedalItem.isEmpty()) {
this.pluginType = PluginType.UtilityPlugin;
this.iconUrl = EMPTY_ICON_URL;
this.inputs = 2;
this.outputs = 2;
this.numberOfInputs = 2;
this.numberOfOutputs = 2;
} else if (pedalItem.uri === START_PEDALBOARD_ITEM_URI) {
this.pluginType = PluginType.UtilityPlugin;
this.iconUrl = TERMINAL_ICON_URL;
this.inputs = 0;
this.outputs = PiPedalModelFactory.getInstance().jackSettings.get().inputAudioPorts.length;
this.numberOfInputs = 0;
this.numberOfOutputs = PiPedalModelFactory.getInstance().jackSettings.get().inputAudioPorts.length;
} else if (pedalItem.uri === END_PEDALBOARD_ITEM_URI) {
this.pluginType = PluginType.UtilityPlugin;
this.iconUrl = TERMINAL_ICON_URL;
this.inputs = PiPedalModelFactory.getInstance().jackSettings.get().outputAudioPorts.length;
this.outputs = 0;
this.numberOfInputs = PiPedalModelFactory.getInstance().jackSettings.get().outputAudioPorts.length;
this.numberOfOutputs = 0;
}
else {
let uiPlugin = model.getUiPlugin(pedalItem.uri);
@@ -284,15 +289,15 @@ class PedalLayout {
this.pluginType = uiPlugin.plugin_type;
this.iconUrl = SelectIcon(uiPlugin.plugin_type,uiPlugin.uri);
this.name = uiPlugin.name;
this.inputs = uiPlugin.audio_inputs;
this.outputs = uiPlugin.audio_outputs;
this.numberOfInputs = Math.max(uiPlugin.audio_inputs,2);
this.numberOfOutputs = Math.max(uiPlugin.audio_outputs,2);
} else {
// default to empty plugin.
this.pluginType = PluginType.UtilityPlugin;
this.name = pedalItem.pluginName??"#error";
this.iconUrl = ERROR_ICON_URL;
this.inputs = 2;
this.outputs = 2;
this.numberOfInputs = 2;
this.numberOfOutputs = 2;
}
}
}
@@ -677,18 +682,18 @@ const PedalBoardView =
// let classes = this.props.classes;
let x_ = item.bounds.x + CELL_WIDTH / 2;
let y_ = item.bounds.y + CELL_HEIGHT / 2;
let isStereo = item.stereoOutput;
let numberOfOutputs = item.numberOfOutputs;
let color = enabled ? ENABLED_CONNECTOR_COLOR : DISABLED_CONNECTOR_COLOR;
let svgPath = new SvgPathBuilder().moveTo(x_, y_).lineTo(x_ + CELL_WIDTH, y_).toString();
if (isStereo) {
if (numberOfOutputs === 2) {
output.push((
<path d={svgPath} stroke={color} strokeWidth={SVG_STEREO_STROKE_WIDTH} />
));
output.push((
<path d={svgPath} stroke="white" strokeWidth={SVG_STROKE_WIDTH} />
));
} else {
} else if (numberOfOutputs === 1) {
output.push((
<path d={svgPath} stroke={color} strokeWidth={SVG_STROKE_WIDTH} />
));
@@ -712,18 +717,18 @@ const PedalBoardView =
let topStartPath = new SvgPathBuilder().moveTo(x_, y_).lineTo(x_, yTop).lineTo(x_ + CELL_WIDTH, yTop).toString();
let bottomStartPath = new SvgPathBuilder().moveTo(x_, y_).lineTo(x_, yBottom).lineTo(x_ + CELL_WIDTH, yBottom).toString();
if (item.stereoInput && item.topChildren[0].stereoInput) {
if (item.numberOfInputs === 2 && item.topChildren[0].numberOfInputs === 2) {
output.push((<path d={topStartPath} stroke={topColor} strokeWidth={SVG_STEREO_STROKE_WIDTH} />));
output.push((<path d={topStartPath} stroke="white" strokeWidth={SVG_STROKE_WIDTH} />));
} else {
} else if (item.numberOfInputs !== 0 && item.topChildren[0].numberOfInputs !== 0) {
output.push((<path d={topStartPath} stroke={topColor} strokeWidth={SVG_STROKE_WIDTH} />));
}
if (item.stereoInput && item.bottomChildren[0].stereoInput) {
if (item.numberOfInputs === 2 && item.bottomChildren[0].numberOfInputs === 2) {
output.push((<path d={bottomStartPath} stroke={bottomColor} strokeWidth={SVG_STEREO_STROKE_WIDTH} />));
output.push((<path d={bottomStartPath} stroke="white" strokeWidth={SVG_STROKE_WIDTH} />));
} else {
} else if (item.numberOfInputs !== 0 && item.bottomChildren[0].numberOfInputs !== 0) {
output.push((<path d={bottomStartPath} stroke={bottomColor} strokeWidth={SVG_STROKE_WIDTH} />));
}
@@ -741,6 +746,8 @@ const PedalBoardView =
let firstPathStereo: boolean;
let secondPathStereo: boolean;
let firstPathAbsent: boolean;
let secondPathAbsent: boolean;
let firstPathEnabled: boolean;
let secondPathEnabled: boolean;
let xTee: number;
@@ -753,11 +760,13 @@ const PedalBoardView =
// Third case: L/R stereo output, when both outputs are mono, requires a third stroke.
let thirdPath: string | null = null; // for L/R stereo output (which can be stereo even if both outputs are mono)
let hasThirdPath = item.stereoOutput && (!lastTop.stereoOutput) && (!lastBottom.stereoOutput);
let hasThirdPath = item.numberOfOutputs === 2 && (lastTop.numberOfOutputs !== 2) && (lastBottom.numberOfOutputs !== 2);
if (hasThirdPath) {
firstPathStereo = false;
secondPathStereo = false;
firstPathAbsent = lastTop.numberOfOutputs === 0 || item.numberOfOutputs === 0;
secondPathAbsent = lastBottom.numberOfOutputs === 0 || item.numberOfOutputs === 0;
xTee = xTee0 - monoAdjustment;
firstPath = new SvgPathBuilder().moveTo(xBottom, yBottom).lineTo(xTee, yBottom).lineTo(xTee, y_).toString();
@@ -767,10 +776,13 @@ const PedalBoardView =
thirdPath= new SvgPathBuilder().moveTo(xTee0,y_).lineTo(xEnd,y_).toString();
firstPathEnabled = bottomEnabled;
secondPathEnabled = topEnabled;
} else if (bottomPathFirst || (topEnabled && lastTop.stereoOutput)) {
} else if (bottomPathFirst || (topEnabled && lastTop.numberOfOutputs === 2)) {
// draw the bottom path first.
firstPathStereo = item.stereoOutput && lastBottom.stereoOutput;
secondPathStereo = item.stereoOutput && lastTop.stereoOutput;
firstPathStereo = item.numberOfOutputs === 2 && lastBottom.numberOfOutputs === 2;
secondPathStereo = item.numberOfOutputs === 2 && lastTop.numberOfOutputs === 2;
firstPathAbsent = item.numberOfOutputs === 0 || lastBottom.numberOfOutputs === 0;
secondPathAbsent = item.numberOfOutputs === 0 || lastTop.numberOfOutputs === 0;
xTee = firstPathStereo ? xTee0 : xTee0 - monoAdjustment;
firstPath = new SvgPathBuilder().moveTo(xBottom, yBottom).lineTo(xTee, yBottom).lineTo(xTee, y_).toString();
xTee = secondPathStereo ? xTee0 : xTee0 - monoAdjustment;
@@ -780,8 +792,10 @@ const PedalBoardView =
secondPathEnabled = topEnabled;
} else {
// draw the top path first.
firstPathStereo = item.stereoOutput && lastTop.stereoOutput;
secondPathStereo = item.stereoOutput && lastBottom.stereoOutput;
firstPathStereo = item.numberOfOutputs === 2 && lastTop.numberOfOutputs === 2;
secondPathStereo = item.numberOfOutputs === 2 && lastBottom.numberOfOutputs === 2;
firstPathAbsent = item.numberOfOutputs === 0 || lastTop.numberOfOutputs === 0;
secondPathAbsent = item.numberOfOutputs === 0 || lastBottom.numberOfOutputs === 0;
xTee = firstPathStereo ? xTee0 : xTee0 - monoAdjustment;
firstPath = new SvgPathBuilder().moveTo(xTop, yTop).lineTo(xTee, yTop).lineTo(xTee, y_).toString();
@@ -804,7 +818,7 @@ const PedalBoardView =
output.push((
<path d={firstPath} stroke="white" strokeWidth={SVG_STROKE_WIDTH} />
));
} else {
} else if (!firstPathAbsent) {
output.push((
<path d={firstPath} stroke={firstPathColor} strokeWidth={SVG_STROKE_WIDTH} />
));
@@ -816,7 +830,7 @@ const PedalBoardView =
output.push((
<path d={secondPath} stroke="white" strokeWidth={SVG_STROKE_WIDTH} />
));
} else {
} else if (!secondPathAbsent) {
output.push((
<path d={secondPath} stroke={secondPathColor} strokeWidth={SVG_STROKE_WIDTH} />
));
@@ -828,7 +842,7 @@ const PedalBoardView =
output.push((
<path d={firstPath} stroke={firstPathColor} strokeWidth={SVG_STEREO_STROKE_WIDTH} />
));
} else {
} else if (!firstPathAbsent) {
output.push((
<path d={firstPath} stroke={firstPathColor} strokeWidth={SVG_STROKE_WIDTH} />
));
@@ -837,7 +851,7 @@ const PedalBoardView =
output.push((
<path d={secondPath} stroke={secondPathColor} strokeWidth={SVG_STEREO_STROKE_WIDTH} />
));
} else {
} else if (!secondPathAbsent) {
output.push((
<path d={secondPath} stroke={secondPathColor} strokeWidth={SVG_STROKE_WIDTH} />
));
@@ -1011,126 +1025,130 @@ const PedalBoardView =
}
return true;
}
canOutputStereo(item: PedalLayout): boolean {
getNumberOfInputs(item: PedalLayout): number {
if (item.pedalItem) {
let plugin = this.model.getUiPlugin(item.pedalItem.uri);
if (plugin) {
return plugin.audio_outputs === 2;
return plugin.audio_inputs;
}
}
return true;
return 1;
}
getNumberOfOutputs(item: PedalLayout): number {
if (item.pedalItem) {
let plugin = this.model.getUiPlugin(item.pedalItem.uri);
if (plugin) {
return plugin.audio_outputs;
}
}
return 1;
}
markStereoOutputs(layoutChain: PedalLayout[], stereoInput: boolean, stereoOutput: boolean) {
markStereoOutputs(layoutChain: PedalLayout[], numberOfInputs: number, numberOfOutputs: number) {
// analyze forward flow.
this.markStereoForward(layoutChain, stereoInput);
this.markStereoForward(layoutChain, numberOfInputs);
// mark items that feed a mono effect as mono.
this.markStereoBackward(layoutChain, stereoOutput);
this.markStereoBackward(layoutChain, numberOfOutputs);
}
markStereoBackward(layoutChain: PedalLayout[], stereoOutput: boolean) : boolean
markStereoBackward(layoutChain: PedalLayout[], numberOfOutputs: number) : number
{
for (let i = layoutChain.length-1; i >= 0; --i)
{
let item = layoutChain[i];
if (item.isSplitter())
{
if (!stereoOutput)
{
item.stereoOutput = false;
}
this.markStereoBackward(item.topChildren,stereoOutput);
this.markStereoBackward(item.bottomChildren,stereoOutput);
let topStereoInput = item.topChildren[0].stereoInput;
let bottomStereoInput = item.bottomChildren[0].stereoInput;
item.numberOfOutputs = CalculateConnection(item.numberOfOutputs, numberOfOutputs)
if (! (topStereoInput || bottomStereoInput))
this.markStereoBackward(item.topChildren,numberOfOutputs);
this.markStereoBackward(item.bottomChildren,numberOfOutputs);
let topInputs = item.topChildren[0].numberOfInputs;
let bottomInputs = item.bottomChildren[0].numberOfInputs;
let splitItem = item.pedalItem as PedalBoardSplitItem;
if (splitItem.getSplitType() !== SplitType.Lr)
{
let splitItem = item.pedalItem as PedalBoardSplitItem;
if (splitItem.getSplitType() !== SplitType.Lr)
{
item.stereoInput = false;
}
item.numberOfInputs = CalculateConnection(item.numberOfInputs, Math.max(topInputs,bottomInputs));
}
} else if (item.isEnd())
{
} else if (item.isStart())
{
if (!stereoOutput)
{
item.stereoOutput = false;
}
return item.stereoOutput;
item.numberOfOutputs = CalculateConnection(item.numberOfOutputs,numberOfOutputs);
return item.numberOfOutputs;
} else if (item.isEmpty()) {
if (!stereoOutput)
if (numberOfOutputs === 0)
{
item.stereoOutput = false;
item.stereoInput = false;
item.numberOfOutputs = 0;
item.numberOfInputs = CalculateConnection(item.numberOfInputs,2);
} else {
item.numberOfOutputs = CalculateConnection(item.numberOfOutputs,numberOfOutputs);
item.numberOfInputs = CalculateConnection(item.numberOfInputs,numberOfOutputs);
}
} else {
if (!stereoOutput)
{
item.stereoOutput = false;
}
item.numberOfOutputs = CalculateConnection(item.numberOfOutputs,numberOfOutputs);
}
stereoOutput = item.stereoInput;
numberOfOutputs = item.numberOfInputs;
}
return stereoOutput;
return numberOfOutputs;
}
markStereoForward(layoutChain: PedalLayout[],stereoInput: boolean): boolean
markStereoForward(layoutChain: PedalLayout[],numberOfInputs: number): number
{
if (layoutChain.length === 0) {
return stereoInput;
return numberOfInputs;
}
for (let i = 0; i < layoutChain.length; ++i) {
let item = layoutChain[i];
if (item.isSplitter()) {
let splitter = item.pedalItem as PedalBoardSplitItem;
item.stereoInput = stereoInput;
item.numberOfInputs = numberOfInputs;
let isChainInputStereo = stereoInput;
let chainInputs = numberOfInputs;
if (splitter.getSplitType() === SplitType.Lr)
{
isChainInputStereo = false;
chainInputs = CalculateConnection(numberOfInputs,1);
}
let topStereo = this.markStereoForward(item.topChildren, isChainInputStereo);
let bottomStereo = this.markStereoForward(item.bottomChildren, isChainInputStereo);
let topOutputs = this.markStereoForward(item.topChildren, chainInputs);
let bottomOutputs = this.markStereoForward(item.bottomChildren, chainInputs);
if (splitter.getSplitType() === SplitType.Ab) {
if (splitter.isASelected()) {
item.stereoOutput = topStereo;
item.numberOfOutputs = topOutputs;
} else {
item.stereoOutput = bottomStereo;
item.numberOfOutputs = bottomOutputs;
}
} else if (splitter.getSplitType() === SplitType.Lr) {
item.stereoOutput = true;
item.numberOfOutputs = (topOutputs !== 0 && bottomOutputs !== 0) ? 2: 0;
} else {
item.stereoOutput = topStereo || bottomStereo;
item.numberOfOutputs = CalculateConnection(topOutputs,bottomOutputs);
}
} else if (item.isStart())
{
item.stereoOutput = (PiPedalModelFactory.getInstance().jackSettings.get().inputAudioPorts.length > 1);
item.numberOfOutputs = Math.min(PiPedalModelFactory.getInstance().jackSettings.get().inputAudioPorts.length,2);
} else if (item.isEnd()) {
item.stereoInput = (PiPedalModelFactory.getInstance().jackSettings.get().outputAudioPorts.length > 1) && stereoInput;
return item.stereoInput;
item.numberOfInputs =
CalculateConnection(
Math.min(PiPedalModelFactory.getInstance().jackSettings.get().outputAudioPorts.length,2),
numberOfInputs);
return item.numberOfInputs;
} else if (item.isEmpty()) {
item.stereoInput = stereoInput;
item.stereoOutput = stereoInput;
} else {
if (stereoInput && this.canOutputStereo(item)) {
item.stereoInput = true;
item.numberOfInputs = numberOfInputs;
if (numberOfInputs === 0)
{
item.numberOfOutputs = 2;
} else {
item.stereoInput = false;
item.numberOfOutputs = item.numberOfInputs;
}
item.stereoOutput = this.canOutputStereo(item);
} else {
item.numberOfInputs = CalculateConnection(numberOfInputs,this.getNumberOfInputs(item));
item.numberOfOutputs = this.getNumberOfOutputs(item);
}
stereoInput = item.stereoOutput;
numberOfInputs = item.numberOfOutputs;
}
return stereoInput;
return numberOfInputs;
}
currentLayout?: PedalLayout[];
@@ -1145,7 +1163,7 @@ const PedalBoardView =
{
layoutChain.splice(0, 0, start);
layoutChain.splice(layoutChain.length, 0, end);
this.markStereoOutputs(layoutChain, true, true);
this.markStereoOutputs(layoutChain, 2,2);
}
let layoutSize = this.doLayout(layoutChain);
+80 -2
View File
@@ -22,7 +22,7 @@ import { UiPlugin, UiControl, PluginType } from './Lv2Plugin';
import { PiPedalArgumentError, PiPedalStateError } from './PiPedalError';
import { ObservableProperty } from './ObservableProperty';
import { PedalBoard, ControlValue } from './PedalBoard'
import { PedalBoard, PedalBoardItem, ControlValue } from './PedalBoard'
import PluginClass from './PluginClass';
import PiPedalSocket, { PiPedalMessageHeader } from './PiPedalSocket';
import { nullCast } from './Utility'
@@ -303,6 +303,13 @@ interface ControlChangedBody {
symbol: string;
value: number;
};
interface Vst3ControlChangedBody {
clientId: number;
instanceId: number;
symbol: string;
value: number;
state: string;
};
export interface FavoritesList {
[url: string]: boolean;
@@ -634,6 +641,16 @@ class PiPedalModelImpl implements PiPedalModel {
controlChangedBody.value,
false // do NOT notify the server of the change.
);
} else if (message === "onVst3ControlChanged") {
let controlChangedBody = body as Vst3ControlChangedBody;
this._setVst3PedalBoardControlValue(
controlChangedBody.instanceId,
controlChangedBody.symbol,
controlChangedBody.value,
controlChangedBody.state,
false // do NOT notify the server of the change.
);
} else if (message === "onJackServerSettingsChanged") {
let jackServerSettings = new JackServerSettings().deserialize(body);
this.jackServerSettings.set(jackServerSettings);
@@ -1195,6 +1212,29 @@ class PiPedalModelImpl implements PiPedalModel {
}
}
}
_setVst3PedalBoardControlValue(instanceId: number, key: string, value: number, state: string, notifyServer: boolean ): void {
let pedalBoard = this.pedalBoard.get();
if (pedalBoard === undefined) throw new PiPedalStateError("Pedalboard not ready.");
let newPedalBoard = pedalBoard.clone();
let item: PedalBoardItem = newPedalBoard.getItem(instanceId);
let changed = item.setControlValue(key, value);
item.vstState = state;
if (changed) {
this.pedalBoard.set(newPedalBoard);
if (notifyServer) {
this._setServerControl("setControl", instanceId, key, value);
}
for (let i = 0; i < this._controlValueChangeItems.length; ++i) {
let item = this._controlValueChangeItems[i];
if (instanceId === item.instanceId) {
item.onValueChanged(key, value);
}
}
}
}
setPedalBoardControlValue(instanceId: number, key: string, value: number): void {
@@ -1232,7 +1272,7 @@ class PiPedalModelImpl implements PiPedalModel {
clientId: this.clientId,
pedalBoard: this.pedalBoard.get()
};
this.webSocket?.send("setCurrentPedalBoard", body);
this.webSocket?.send("updateCurrentPedalBoard", body);
}
@@ -1288,6 +1328,8 @@ class PiPedalModelImpl implements PiPedalModel {
deletePedalBoardPedal(instanceId: number): number | null {
let pedalBoard = this.pedalBoard.get();
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
let result = newPedalBoard.deleteItem(instanceId);
if (result != null) {
this.pedalBoard.set(newPedalBoard);
@@ -1301,6 +1343,9 @@ class PiPedalModelImpl implements PiPedalModel {
if (fromInstanceId === toInstanceId) return;
let pedalBoard = this.pedalBoard.get();
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
let fromItem = newPedalBoard.getItem(fromInstanceId);
if (fromItem === null) {
throw new PiPedalArgumentError("fromInstanceId not found.");
@@ -1317,6 +1362,9 @@ class PiPedalModelImpl implements PiPedalModel {
if (fromInstanceId === toInstanceId) return;
let pedalBoard = this.pedalBoard.get();
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
let fromItem = newPedalBoard.getItem(fromInstanceId);
if (fromItem === null) {
throw new PiPedalArgumentError("fromInstanceId not found.");
@@ -1334,6 +1382,10 @@ class PiPedalModelImpl implements PiPedalModel {
let pedalBoard = this.pedalBoard.get();
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
let fromItem = newPedalBoard.getItem(instanceId);
if (fromItem === null) {
throw new PiPedalArgumentError("fromInstanceId not found.");
@@ -1350,6 +1402,9 @@ class PiPedalModelImpl implements PiPedalModel {
let pedalBoard = this.pedalBoard.get();
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
let fromItem = newPedalBoard.getItem(instanceId);
if (fromItem === null) {
throw new PiPedalArgumentError("fromInstanceId not found.");
@@ -1371,6 +1426,9 @@ class PiPedalModelImpl implements PiPedalModel {
let pedalBoard = this.pedalBoard.get();
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
let fromItem = newPedalBoard.getItem(fromInstanceId);
let toItem = newPedalBoard.getItem(toInstanceId);
if (fromItem === null) {
@@ -1389,6 +1447,9 @@ class PiPedalModelImpl implements PiPedalModel {
addPedalBoardItem(instanceId: number, append: boolean): number {
let pedalBoard = this.pedalBoard.get();
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
let item = newPedalBoard.getItem(instanceId);
if (item === null) {
throw new PiPedalArgumentError("instanceId not found.");
@@ -1402,6 +1463,8 @@ class PiPedalModelImpl implements PiPedalModel {
addPedalBoardSplitItem(instanceId: number, append: boolean): number {
let pedalBoard = this.pedalBoard.get();
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
let item = newPedalBoard.getItem(instanceId);
if (item === null) {
throw new PiPedalArgumentError("instanceId not found.");
@@ -1416,6 +1479,9 @@ class PiPedalModelImpl implements PiPedalModel {
setPedalBoardItemEmpty(instanceId: number): number {
let pedalBoard = this.pedalBoard.get();
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
let item = newPedalBoard.getItem(instanceId);
if (item === null) {
throw new PiPedalArgumentError("instanceId not found.");
@@ -1768,12 +1834,24 @@ class PiPedalModelImpl implements PiPedalModel {
this.showAlert(error);
});
}
updateVst3State(pedalBoard: PedalBoard)
{
// let it = pedalBoard.itemsGenerator();
// while (true) {
// let v = it.next();
// if (v.done) break;
// let item = v.value;
// }
}
setMidiBinding(instanceId: number, midiBinding: MidiBinding): void {
let pedalBoard = this.pedalBoard.get();
if (!pedalBoard) {
throw new PiPedalStateError("Pedalboard not loaded.");
}
let newPedalBoard = pedalBoard.clone();
this.updateVst3State(newPedalBoard);
if (newPedalBoard.setMidiBinding(instanceId, midiBinding)) {
this.pedalBoard.set(newPedalBoard);
// notify the server.
+14 -8
View File
@@ -603,17 +603,23 @@ const PluginControl =
let uiControl = this.props.uiControl;
if (uiControl) {
if (uiControl.range_steps > 1) {
range = Math.round(range * uiControl.range_steps-1) / (uiControl.range_steps-1);
range = Math.round(range * (uiControl.range_steps-1)) / (uiControl.range_steps-1);
}
let value: number;
if (uiControl.is_logarithmic)
if (uiControl.min_value === uiControl.max_value)
{
value = uiControl.min_value*Math.pow(uiControl.max_value/uiControl.min_value,range);
} else {
value = range * (uiControl.max_value - uiControl.min_value) + uiControl.min_value;
}
if (uiControl.integer_property) {
value = Math.round(value);
value = uiControl.min_value;
} else
{
if (uiControl.is_logarithmic)
{
value = uiControl.min_value*Math.pow(uiControl.max_value/uiControl.min_value,range);
} else {
value = range * (uiControl.max_value - uiControl.min_value) + uiControl.min_value;
}
if (uiControl.integer_property) {
value = Math.round(value);
}
}
return value;
}