Closed cristianvogel closed 7 years ago
here's an example of what it can look like on quite a dense patch... by the way this graph was also tweaked a bit using the weight=
atrribute, when the dot engine didn't quite arrange things in a clear way.
source for above diagram
rankdir = LR;
splines = polyline;
ordering=out;
concentrate=true;
dusg[label="{ {<_risebcv> RISE B CV | <_trigina> TRIG IN A | <_triginb> TRIG IN B}|DUSG| {<_bpout> BP OUT | <_endb> END B | <_outa> OUT A | <_outb> OUT B | <_pulsea> PULSE A}}" shape=Mrecord]
a118noise[label="{ {}|A118 NOISE| {<_colored> COLORED | <_random> RANDOM}}" shape=Mrecord]
blackquad[label="{ {<_in2> IN 2}|BLACKQUAD| {<_out2> OUT 2}}" shape=Mrecord]
cascade[label="{ {<_in1> IN 1 | <_in2> IN 2}|CASCADE| {<_out1> OUT 1 | <_out2> OUT 2}}" shape=Mrecord]
confusor[label="{ {<_in1> IN 1 | <_in2> IN 2 | <_in3> IN 3 | <_in4> IN 4}|CONFUSOR| {<_out1> OUT 1 | <_out2> OUT 2 | <_out3> OUT 3 | <_out4> OUT 4}}" shape=Mrecord ]
chordorgan[label="{ {}|CHORDORGAN| {<_out> OUT}}" shape=Mrecord]
crushdelay[label="{ {<_fbckcv> FBCK CV | <_fxreturn> FX RETURN | <_fxreturncv> FX RETURN CV | <_in> IN | <_speedcv> SPEED CV}|{{CRUSHDELAY}|{Drywet = 35%\nFb = 5%\nFxreturn = 75%\nIntodly = 55%}}| {<_fxsend> FX SEND | <_out> OUT}}" shape=Mrecord]
disting[label="{ {<_x> X | <_y> Y}|{{DISTING}|{Algorithm = 1A 3D ClockableDelayEcho}}| {<_a> A}}" shape=Mrecord]
evolution[label="{ {<_freqcv2> FREQ CV 2 | <_input> INPUT}|{{EVOLUTION}|{Freq = 65%\nFreq Cv2 = -100%\nQ = 30%\nQ Level Comp = 70%}}| {<_output> OUTPUT}}" shape=Mrecord]
joystick[label="{ {}|JOYSTICK| {<_xout> X OUT | <_yout> Y OUT}}" shape=Mrecord]
mikrophonie[label="{ {}|MIKROPHONIE| {<_out> OUT}}" shape=Mrecord]
minimod[label="{ {<_expcv> EXP CV | <_lincv> LIN CV}|MINIMOD| {<_sharktooth> SHARKTOOTH | <_triangleorsquare> TRIANGLE OR SQUARE}}" shape=Mrecord]
morphagene[label="{ {<_clk> CLK | <_genesize> GENE-SIZE | <_organize> ORGANIZE | <_play> PLAY | <_varispeed> VARISPEED}|{{MORPHAGENE}|{Reel1 = 808Beath | Reel2\nVarispeedcv = -30%}}| {<_cv> CV | <_eosgout> EOSG OUT | <_l> L | <_r> R}}" shape=Mrecord]
newpam[label="{ {}|{{NEWPAM}|{Bankpreset = C}}| {<_2> 2 | <_3> 3 | <_4> 4 | <_5> 5 | <_8> 8}}" shape=Mrecord]
pexp1[label="{ {}|PEXP1| {<_4> /4 | <_x1> X1 | <_x2> X2 | <_x4> X4}}" shape=Mrecord]
rxmx[label="{ {<_ch1> CH 1 | <_ch2> CH 2 | <_ch3> CH 3 | <_ch4> CH 4 | <_ch6> CH 6 | <_chselz> CH SELZ | <_level> LEVEL | <_strike> STRIKE}|{{RXMX}|{Ch Sel (Cv In) = 70%\nChannel = 55%\nLevel = 0%\nLevel (Cv In) = 65%\nRadiate = 35%}}| {<_outb> OUT B}}" shape=Mrecord]
snakecharmerout[label="{ {<_1> 1 | <_2> 2 | <_3> 3}|SNAKECHARMEROUT| {}}" shape=Mrecord]
strakal[label="{ {<_in> IN}|{{STRAKAL}|{Drive = 40%\nFb = 7.3\nIn = 5%\nOut = 5%}}| {<_out> OUT}}" shape=Mrecord]
svvcf[label="{ {<_cv1> CV 1 | <_in1> IN 1}|{{SVVCF}|{In1 = 75%\nNotch = 40%\nRes = 25%}}| {<_notch> NOTCH}}" shape=Mrecord]
ttlfov2[label="{ {<_sync> SYNC}|{{TTLFOV2}|{Wave = Square}}| {<_out> OUT}}" shape=Mrecord]
wogglebug[label="{ {<_influence> INFLUENCE | <_stepin> STEP IN | <_tiexternal> TI EXTERNAL}|{{WOGGLEBUG}|{Intclock = 50%\nWoggle = 0%}}| {<_stepped> STEPPED | <_woggleorburst> WOGGLE OR BURST | <_woggleout> WOGGLEOUT}}" shape=Mrecord]
a118noise:_colored:e -> rxmx:_ch6:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled]
blackquad:_out2:e -> evolution:_input:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled]
chordorgan:_out:e -> rxmx:_ch1:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled]
crushdelay:_fxsend:e -> rxmx:_ch2:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled]
crushdelay:_out:e -> snakecharmerout:_1:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled, weight=4]
disting:_a:e -> snakecharmerout:_3:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled, weight=3]
evolution:_output:e -> disting:_x:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled, weight=2]
mikrophonie:_out:e -> minimod:_lincv:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled]
minimod:_sharktooth:e -> rxmx:_ch3:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled]
minimod:_triangleorsquare:e -> crushdelay:_fxreturn:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled]
morphagene:_l:e -> svvcf:_in1:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled]
morphagene:_r:e -> strakal:_in:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled, weight=2, color=tomato]
morphagene:_eosgout:e -> confusor:_in4:e [color=red, dir=both, arrowtail=dot, style=dashed, weight=2]
morphagene:_cv:e -> svvcf:_cv1:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
rxmx:_outb:e -> blackquad:_in2:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled, weight=5]
strakal:_out:e -> snakecharmerout:_2:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled, weight=2]
svvcf:_notch:e -> crushdelay:_in:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled]
wogglebug:_woggleout:e -> rxmx:_ch4:w [arrowtail=dot, dir=both, penwidth=2, color=royalblue, style=filled] //xlabel="woggle out"]
newpam:_2:e -> dusg:_triginb:w [arrowtail=dot, dir=both, penwidth=2, color=purple, style=dashed]
newpam:_5:e -> morphagene:_play:w [arrowtail=dot, dir=both, penwidth=2, color=purple, style=dashed]
pexp1:_4:e -> morphagene:_varispeed:w [arrowtail=dot, dir=both, penwidth=2, color=violet, weight=10, style=dashed]
pexp1:_x1:e -> ttlfov2:_sync:w [arrowtail=dot, dir=both, penwidth=2, color=purple, style=dashed]
pexp1:_x2:e -> wogglebug:_stepin:w [arrowtail=dot, dir=both, penwidth=2, color=purple, style=dashed]
pexp1:_x4:e -> morphagene:_clk:w [arrowtail=dot, dir=both, penwidth=2, color=purple, style=dashed]
a118noise:_random:e -> morphagene:_genesize:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
cascade:_out1:e -> crushdelay:_speedcv:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
cascade:_out2:e -> morphagene:_organize:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
dusg:_bpout:e -> confusor:_in1:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen ]
dusg:_outa:e -> confusor:_in3:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
dusg:_outb:e -> confusor:_in2:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
confusor:_out1:e -> crushdelay:_fbckcv:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
confusor:_out2:e -> cascade:_in1:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
confusor:_out3:e -> dusg:_risebcv:w [arrowtail=dot, dir=both, penwidth=2, color=green, arrowtail=dot, dir=both, penwidth=2]
confusor:_out4:e -> disting:_y:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
joystick:_xout:e -> rxmx:_chselz:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
joystick:_yout:e -> rxmx:_level:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
newpam:_3:e -> wogglebug:_tiexternal:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
newpam:_4:e -> crushdelay:_fxreturncv:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
newpam:_8:e -> evolution:_freqcv2:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
ttlfov2:_out:e -> minimod:_expcv:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
wogglebug:_stepped:e -> cascade:_in2:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
wogglebug:_woggleorburst:e -> wogglebug:_influence:w [arrowtail=dot, dir=both, penwidth=2, color=forestgreen]
dusg:_endb:e -> dusg:_trigina:w [arrowtail=dot, dir=both, penwidth=2, color=red, style=dashed]
dusg:_pulsea:e -> rxmx:_strike:w [arrowtail=dot, dir=both, penwidth=2, color=red, style=dashed]
}
Yeah, this will also fall into the idea of the previous thread related to additional arguments. I'm re-writing parts of the parser to make it so additional arguments like color, weight etc can be added optionally, then it's just a matter of updating the graphviz method.
Added support for weight, dir and arrowtail arguments: https://github.com/SpektroAudio/Patchbook/commit/89ffe26b3a5ac3270daeef9b3e6edf01dbced020
With respect to what I mentioned in the the colors thread, graphviz is drawing lines on top of each other as they traverse a graph, which then emerge in different directions. Its impossible to tell which one came from which output.
I suggested color attribute as we are discussing, but also I found it good to have the following style of the edges (cables) so that its starting point is clearly defined, which makes it even more clear when the cable gets assigned a colour. Perhaps this should be the default?
[arrowtail=dot, dir=both]