Update of /cvsroot/pure-data/extensions/gui/ix In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22026
Modified Files: kbd.wid mat-demo.pd mat.wid ngrid-demo.pd Log Message: wheel up
Index: ngrid-demo.pd =================================================================== RCS file: /cvsroot/pure-data/extensions/gui/ix/ngrid-demo.pd,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ngrid-demo.pd 2 May 2005 11:23:19 -0000 1.2 --- ngrid-demo.pd 15 Jun 2005 13:02:15 -0000 1.3 *************** *** 1,3 **** ! #N canvas 57 204 1033 585 12; #X obj 9 -29 widget ngrid n1 #w 382 #h 382 #move 0 #radius 8; #X floatatom 360 365 3 2 233 0 - - -; --- 1,8 ---- ! #N canvas 1333 136 79 124 12; ! #X msg 785 -536 -height 26 -width 26 -bg gray95; ! #N canvas 0 0 595 500 intro 1; ! #X obj 9 418 osc~; ! #X obj 9 456 dac~; ! #X obj 9 399 line; #X obj 9 -29 widget ngrid n1 #w 382 #h 382 #move 0 #radius 8; #X floatatom 360 365 3 2 233 0 - - -; *************** *** 7,11 **** #X obj 403 337 bng 23 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1; - #X obj 9 418 osc~; #X obj 61 418 osc~; #X obj 35 418 osc~; --- 12,15 ---- *************** *** 13,18 **** #X obj 113 418 osc~; #X obj 139 418 osc~; - #X obj 9 456 dac~; - #X obj 9 399 line; #X obj 35 399 line; #X obj 61 399 line; --- 17,20 ---- *************** *** 34,38 **** #X obj 243 399 line; #X obj 355 446 tow . ngrid n1; ! #X obj 9 361 Append 100; #X msg 258 363 move swarm; #X msg 312 385 5; --- 36,40 ---- #X obj 243 399 line; #X obj 355 446 tow . ngrid n1; ! #X obj 9 360 Append 100; #X msg 258 363 move swarm; #X msg 312 385 5; *************** *** 41,47 **** #X obj 86 454 prepend set; #X obj 160 442 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 ! -1 -1 6350 1; #X obj 160 458 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 ! -1 -1 6350 1; #X obj 423 50 widget ngrid m #w 64 #h 64; #X msg 407 451 add x 1 0 10 , add y 2 0 10; --- 43,49 ---- #X obj 86 454 prepend set; #X obj 160 442 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 ! -1 -1 2100 1; #X obj 160 458 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 ! -1 -1 0 1; #X obj 423 50 widget ngrid m #w 64 #h 64; #X msg 407 451 add x 1 0 10 , add y 2 0 10; *************** *** 50,56 **** #X obj 400 147 prepend set; #X obj 435 166 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 ! -1 -1 1270 1; #X obj 435 181 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 ! -1 -1 2540 1; #X obj 496 50 widget ngrid m #w 64 #h 64; #X obj 510 212 widget ngrid m #w 64 #h 64; --- 52,58 ---- #X obj 400 147 prepend set; #X obj 435 166 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 ! -1 -1 12700 1; #X obj 435 181 hsl 128 15 0 10 0 0 empty empty empty -2 -6 0 8 -262144 ! -1 -1 385 1; #X obj 496 50 widget ngrid m #w 64 #h 64; #X obj 510 212 widget ngrid m #w 64 #h 64; *************** *** 92,162 **** #X obj 448 352 spigot; #X msg 472 333 0 2000; ! #X text 530 -25 ngrid; ! #X obj 884 480 sendOSC; ! #X msg 885 404 connect localhost 16180; ! #X obj 884 461 prepend send; ! #X obj 601 362 dumpOSC 3339; ! #X obj 600 -30 widget ngrid n2 #w 382 #h 382 #move 0 #radius 8; ! #X obj 601 381 OSCroute /om; ! #X obj 601 400 OSCroute /new_port; ! #X obj 601 419 niagara 4; ! #X obj 601 438 niagara 1; ! #X obj 601 476 glue; ! #X obj 601 533 prepend add; ! #X obj 601 457 a2l; ! #X obj 984 385 t b b b; ! #X msg 884 442 /om/request/all_objects 5; ! #X obj 785 366 widget dm dmngr #items .(error normal swarm trails.) ! ; ! #X msg 732 372 move $1; ! #X msg 929 481 disconnect; ! #X obj 677 437 prepend /om/synth/set_port_value 1; ! #X msg 883 423 /om/engine/register_client 0 localhost 3339; ! #X msg 1080 -23 -height 26 -width 26 -bg gray95; ! #X obj 650 457 niagara 1; ! #X obj 601 495 spigot; ! #X msg 650 495 1; ! #X msg 670 495 0; ! #X obj 650 476 route CONTROL; ! #X obj 724 399 OSCroute /control_change; ! #X obj 724 416 prepend setpos; ! #X obj 680 379 spigot; ! #X obj 711 365 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; ! #X obj 743 456 OSCroute /node_removal; ! #X obj 690 495 niagara 1; ! #X obj 601 514 spigot; ! #X msg 650 514 1; ! #X msg 670 514 0; ! #X obj 690 514 route INPUT; ! #X obj 744 475 prepend delete; ! #X obj 932 384 loadbang; ! #X text 844 524 www.nongnu.org/om-synth/; ! #X text 877 514 get om:; ! #X connect 0 0 33 0; ! #X connect 1 0 4 0; ! #X connect 2 0 3 0; ! #X connect 3 0 32 0; ! #X connect 4 0 32 0; ! #X connect 5 0 35 0; ! #X connect 5 0 42 0; ! #X connect 5 0 63 0; ! #X connect 5 0 65 0; ! #X connect 5 0 64 0; ! #X connect 6 0 59 0; ! #X connect 7 0 59 0; ! #X connect 8 0 59 0; #X connect 9 0 59 0; #X connect 10 0 59 0; #X connect 11 0 59 0; ! #X connect 13 0 6 0; ! #X connect 14 0 8 0; ! #X connect 15 0 7 0; ! #X connect 16 0 9 0; ! #X connect 17 0 10 0; ! #X connect 18 0 11 0; #X connect 19 0 59 0; #X connect 20 0 59 0; ! #X connect 21 0 13 0; #X connect 21 1 14 0; #X connect 21 2 15 0; --- 94,129 ---- #X obj 448 352 spigot; #X msg 472 333 0 2000; ! #X obj 49 480 switch~; ! #X obj 430 324 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; ! #X obj 63 363 hsl 128 15 0 2000 0 0 empty empty empty -2 -6 0 8 -262144 ! -1 -1 12700 1; ! #X obj 78 368 prepend set; ! #X connect 0 0 59 0; ! #X connect 2 0 0 0; ! #X connect 3 0 33 0; ! #X connect 4 0 7 0; ! #X connect 5 0 6 0; ! #X connect 6 0 32 0; ! #X connect 7 0 32 0; ! #X connect 8 0 35 0; ! #X connect 8 0 42 0; ! #X connect 8 0 63 0; ! #X connect 8 0 65 0; ! #X connect 8 0 64 0; ! #X connect 8 0 86 0; #X connect 9 0 59 0; #X connect 10 0 59 0; #X connect 11 0 59 0; ! #X connect 12 0 59 0; ! #X connect 13 0 59 0; ! #X connect 14 0 10 0; ! #X connect 15 0 9 0; ! #X connect 16 0 11 0; ! #X connect 17 0 12 0; ! #X connect 18 0 13 0; #X connect 19 0 59 0; #X connect 20 0 59 0; ! #X connect 21 0 2 0; #X connect 21 1 14 0; #X connect 21 2 15 0; *************** *** 216,221 **** #X connect 57 0 32 0; #X connect 58 0 32 0; ! #X connect 59 0 12 0; ! #X connect 59 0 12 1; #X connect 60 0 49 0; #X connect 61 0 60 0; --- 183,188 ---- #X connect 57 0 32 0; #X connect 58 0 32 0; ! #X connect 59 0 1 0; ! #X connect 59 0 1 1; #X connect 60 0 49 0; #X connect 61 0 60 0; *************** *** 251,296 **** #X connect 83 0 71 0; #X connect 84 0 81 0; ! #X connect 87 0 86 0; ! #X connect 88 0 86 0; ! #X connect 89 0 91 0; ! #X connect 90 0 103 0; ! #X connect 91 0 92 0; ! #X connect 91 0 113 0; ! #X connect 91 0 115 0; ! #X connect 92 0 93 0; ! #X connect 93 0 94 0; ! #X connect 93 1 95 1; ! #X connect 94 0 97 0; ! #X connect 94 1 106 0; ! #X connect 95 0 107 0; ! #X connect 96 0 90 0; ! #X connect 97 0 95 0; ! #X connect 98 0 99 0; ! #X connect 98 1 104 0; ! #X connect 98 2 87 0; ! #X connect 99 0 88 0; ! #X connect 100 0 101 0; ! #X connect 101 0 90 0; ! #X connect 102 0 86 0; ! #X connect 103 0 88 0; ! #X connect 104 0 88 0; ! #X connect 106 0 110 0; ! #X connect 106 1 116 0; ! #X connect 107 0 117 0; ! #X connect 108 0 107 1; ! #X connect 109 0 107 1; ! #X connect 110 0 108 0; ! #X connect 110 1 109 0; ! #X connect 111 0 112 0; ! #X connect 112 0 90 0; ! #X connect 113 0 111 0; ! #X connect 114 0 113 1; ! #X connect 115 0 121 0; ! #X connect 116 0 120 0; ! #X connect 117 0 96 0; ! #X connect 118 0 117 1; ! #X connect 119 0 117 1; ! #X connect 120 0 118 0; ! #X connect 120 1 119 0; ! #X connect 121 0 90 0; ! #X connect 122 0 98 0; --- 218,310 ---- #X connect 83 0 71 0; #X connect 84 0 81 0; ! #X connect 86 0 85 0; ! #X connect 87 0 88 0; ! #X connect 88 0 33 0; ! #X restore 18 35 pd intro; ! #N canvas 0 0 442 580 om 0; ! #X obj 306 502 sendOSC; ! #X msg 307 426 connect localhost 16180; ! #X obj 306 483 prepend send; ! #X obj 23 382 dumpOSC 3339; ! #X obj 22 -8 widget ngrid n2 #w 382 #h 382 #move 0 #radius 8; ! #X obj 23 403 OSCroute /om; ! #X obj 23 422 OSCroute /new_port; ! #X obj 23 441 niagara 4; ! #X obj 23 460 niagara 1; ! #X obj 23 498 glue; ! #X obj 23 555 prepend add; ! #X obj 23 479 a2l; ! #X obj 406 407 t b b b; ! #X msg 306 464 /om/request/all_objects 5; ! #X obj 207 388 widget dm dmngr #items .(error normal swarm trails.) ! ; ! #X msg 154 394 move $1; ! #X msg 351 503 disconnect; ! #X obj 99 459 prepend /om/synth/set_port_value 1; ! #X msg 305 445 /om/engine/register_client 0 localhost 3339; ! #X obj 72 479 niagara 1; ! #X obj 23 517 spigot; ! #X msg 72 517 1; ! #X msg 92 517 0; ! #X obj 72 498 route CONTROL; ! #X obj 146 421 OSCroute /control_change; ! #X obj 146 438 prepend setpos; ! #X obj 102 401 spigot; ! #X obj 133 387 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 ! 1; ! #X obj 165 478 OSCroute /node_removal; ! #X obj 112 517 niagara 1; ! #X obj 23 536 spigot; ! #X msg 72 536 1; ! #X msg 92 536 0; ! #X obj 112 536 route INPUT; ! #X obj 166 497 prepend delete; ! #X obj 354 406 loadbang; ! #X text 266 546 www.nongnu.org/om-synth/; ! #X obj 199 532 print NOSHIT; ! #X connect 1 0 0 0; ! #X connect 2 0 0 0; ! #X connect 3 0 5 0; ! #X connect 3 0 37 0; ! #X connect 4 0 17 0; ! #X connect 5 0 6 0; ! #X connect 5 0 26 0; ! #X connect 5 0 28 0; ! #X connect 6 0 7 0; ! #X connect 7 0 8 0; ! #X connect 7 1 9 1; ! #X connect 8 0 11 0; ! #X connect 8 1 19 0; ! #X connect 9 0 20 0; ! #X connect 10 0 4 0; ! #X connect 11 0 9 0; ! #X connect 12 0 13 0; ! #X connect 12 1 18 0; ! #X connect 12 2 1 0; ! #X connect 13 0 2 0; ! #X connect 14 0 15 0; ! #X connect 15 0 4 0; ! #X connect 16 0 0 0; ! #X connect 17 0 2 0; ! #X connect 18 0 2 0; ! #X connect 19 0 23 0; ! #X connect 19 1 29 0; ! #X connect 20 0 30 0; ! #X connect 21 0 20 1; ! #X connect 22 0 20 1; ! #X connect 23 0 21 0; ! #X connect 23 1 22 0; ! #X connect 24 0 25 0; ! #X connect 25 0 4 0; ! #X connect 26 0 24 0; ! #X connect 27 0 26 1; ! #X connect 28 0 34 0; ! #X connect 29 0 33 0; ! #X connect 30 0 10 0; ! #X connect 31 0 30 1; ! #X connect 32 0 30 1; ! #X connect 33 0 31 0; ! #X connect 33 1 32 0; ! #X connect 34 0 4 0; ! #X connect 35 0 12 0; ! #X restore 18 59 pd om;
Index: mat.wid =================================================================== RCS file: /cvsroot/pure-data/extensions/gui/ix/mat.wid,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** mat.wid 24 May 2005 22:28:08 -0000 1.6 --- mat.wid 15 Jun 2005 13:02:15 -0000 1.7 *************** *** 1,13 **** package require tkpath namespace eval ::ix { ! proc random_int {} {return [expr "int(floor(rand()*16))"]} ! proc random_clr {} {return [format "#%1X%1X%1X%1X%1X%1X" [random_int] [random_int] [random_int] [random_int] [random_int] [random_int]]} ! proc mat_note {p t item} { variable _ set id [lindex [$p.m itemcget $item -tags] 1] ! set len [expr [lindex $_($t:items:$id) 2] - [lindex $_($t:items:$id) 0]] set vel [$p.m itemcget $item -fillopacity] ! pd [concat $t.rp _cb note [lindex $_($t:items:$id) 1] $vel $len ;]}
proc mat_click {m button action p t x y} { --- 1,11 ---- package require tkpath namespace eval ::ix { ! proc rc {} {return [format "#%06x" [expr "int(floor(rand() * 16))"]]} proc mat_note {p t item} { variable _ set id [lindex [$p.m itemcget $item -tags] 1] ! set len [expr [dict get $_($t) $id xx] - [dict get $_($t) $id x]] set vel [$p.m itemcget $item -fillopacity] ! pd [concat $t.rp _cb note [dict get $_($t) $id y] $vel $len ;]}
proc mat_click {m button action p t x y} { *************** *** 65,72 **** foreach item [$p.m find withtag item] { set id [lindex [$p.m itemcget $item -tags] 1] ! set px [mat_tr $p $t x t [lindex $_($t:items:$id) 0]] ! set py [mat_tr $p $t y t [lindex $_($t:items:$id) 1]] ! set sx [mat_tr $p $t x id [expr [lindex $_($t:items:$id) 2] - [lindex $_($t:items:$id) 0]]] ! # set sy [mat_tr $p $t y id [expr [lindex $_($t:items:$id) 3] - [lindex $_($t:items:$id) 1]]] set sy [mat_tr $p $t y id 1] $p.m coords $item [::tkpath::coords rect $px $py $sx $sy -rx 3 -ry 3] --- 63,69 ---- foreach item [$p.m find withtag item] { set id [lindex [$p.m itemcget $item -tags] 1] ! set px [mat_tr $p $t x t [dict get $_($t) $id x]] ! set py [mat_tr $p $t y t [dict get $_($t) $id y]] ! set sx [mat_tr $p $t x id [expr [dict get $_($t) $id xx] - [dict get $_($t) $id x]]] set sy [mat_tr $p $t y id 1] $p.m coords $item [::tkpath::coords rect $px $py $sx $sy -rx 3 -ry 3] *************** *** 98,102 **** $p.m coords drawing [::tkpath::coords rect $xa $y [expr $xb - $xa] [mat_tr $p $t y id 1] -rx 3 -ry 3] set yi [mat_tr $p $t y i $y] ! set _($t:items:$_($t:i)) [list [mat_tr $p $t x i $xa] $yi [mat_tr $p $t x i $xb] $yi] pd [concat $t.rp _cb note $yi 0.8 ;]} first { --- 95,102 ---- $p.m coords drawing [::tkpath::coords rect $xa $y [expr $xb - $xa] [mat_tr $p $t y id 1] -rx 3 -ry 3] set yi [mat_tr $p $t y i $y] ! dict set _($t) $_($t:i) x [mat_tr $p $t x i $xa] ! dict set _($t) $_($t:i) y $yi ! dict set _($t) $_($t:i) xx [mat_tr $p $t x i $xb] ! dict set _($t) $_($t:i) yy $yi pd [concat $t.rp _cb note $yi 0.8 ;]} first {
Index: kbd.wid =================================================================== RCS file: /cvsroot/pure-data/extensions/gui/ix/kbd.wid,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** kbd.wid 24 May 2005 23:38:22 -0000 1.4 --- kbd.wid 15 Jun 2005 13:02:14 -0000 1.5 *************** *** 5,10 **** if {[llength $args] == 1} {set v 1;if {$_($t:lp) != -1 && $_($t:lp) ne $w} {kbd_action $_($t:lp) $t 0}} {set v [lindex $args 1]} kbd_action $w $t $v ! set _($t:lp) $w ! }
proc kbd_play {t m b x y} { --- 5,9 ---- if {[llength $args] == 1} {set v 1;if {$_($t:lp) != -1 && $_($t:lp) ne $w} {kbd_action $_($t:lp) $t 0}} {set v [lindex $args 1]} kbd_action $w $t $v ! set _($t:lp) $w}
proc kbd_play {t m b x y} { *************** *** 28,35 ****
proc kbd {path t octaves b f} { if {![winfo exists $path.f0]} { variable _ set _($t:lp) -1 - $path config -width [expr $octaves * 66] set bw {0 1 0 1 0 0 1 0 1 0 1 0} ; set npl {0 1 1 2 2 3 4 4 5 5 6 6} foreach a {{bg "0 $b 1 $f"} {fg "1 $b 0 $f"} {an {0 ";lower $wk" 1 "-anchor n"}} {rw {0 {[expr 1 / 7.]} 1 {[expr 1 / 10.]}}} {rh {0 {[expr 1.]} 1 {[expr 6 / 10.]}}}} {array set [lindex $a 0] [lindex $a 1]} --- 27,34 ----
proc kbd {path t octaves b f} { + $path config -width [expr $octaves * 66] if {![winfo exists $path.f0]} { variable _ set _($t:lp) -1 set bw {0 1 0 1 0 0 1 0 1 0 1 0} ; set npl {0 1 1 2 2 3 4 4 5 5 6 6} foreach a {{bg "0 $b 1 $f"} {fg "1 $b 0 $f"} {an {0 ";lower $wk" 1 "-anchor n"}} {rw {0 {[expr 1 / 7.]} 1 {[expr 1 / 10.]}}} {rh {0 {[expr 1.]} 1 {[expr 6 / 10.]}}}} {array set [lindex $a 0] [lindex $a 1]}
Index: mat-demo.pd =================================================================== RCS file: /cvsroot/pure-data/extensions/gui/ix/mat-demo.pd,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** mat-demo.pd 24 May 2005 23:38:22 -0000 1.5 --- mat-demo.pd 15 Jun 2005 13:02:15 -0000 1.6 *************** *** 1,65 **** ! #N canvas 25 0 920 1029 12; ! #X obj 17 22 widget mat n1 #w 881 #bg white #divX 8 #divY 5 #h 740 ! #Yb 1 #Ya 88 #qYv 2 #qYa 8; #X msg 1080 -13 -height 26 -width 26 -bg gray95; ! #X msg 19 0 redefine; ! #X msg 229 1 #w $1; ! #X msg 193 0 #h $1; ! #X floatatom 159 -1 5 0 0 0 - - -; ! #X floatatom 127 1 5 0 0 0 - - -; ! #X obj 121 879 * 127; ! #X msg 447 689 #w $1 , #h $1; ! #X floatatom 453 672 5 0 0 0 - - -; ! #X obj 85 877 + 36; ! #X obj 577 798 rr ss; ! #X obj 577 779 rg; ! #X obj 17 771 route note; ! #X msg 460 1 #Ya 88 , Yb 24 , #qYv 2; ! #X obj 9 836 unpack f f f; ! #X obj 37 871 * 127; ! #X obj 16 901 pack f f f; ! #X obj 18 958 print note; ! #X obj 39 925 makenote 99 250; ! #X obj 92 961 noteout; ! #X msg 317 2 #Ya 1 , #Yb 128 , #qYv 8; ! #X obj 535 833 rp ss kbd; ! #X obj 591 833 rp ss kb2; ! #X obj 109 775 widget kbd k1 #bg blue #fg green -height 32; ! #X obj 207 823 widget kbd k2 #bg blue #fg green -height 32; ! #X msg 283 874 redefine; ! #X msg 414 885 #bg blue , #fg green; ! #X obj 98 855 unpack 0 0 0; ! #X obj 106 819 Append 1; ! #X obj 201 864 Append 2; ! #X connect 0 0 13 0; #X connect 2 0 0 0; ! #X connect 3 0 0 0; ! #X connect 4 0 0 0; ! #X connect 5 0 3 0; ! #X connect 6 0 4 0; ! #X connect 7 0 20 1; ! #X connect 9 0 8 0; ! #X connect 10 0 20 0; ! #X connect 12 0 11 0; ! #X connect 13 0 15 0; ! #X connect 14 0 0 0; ! #X connect 15 0 17 0; ! #X connect 15 1 16 0; ! #X connect 15 2 17 2; ! #X connect 16 0 17 1; ! #X connect 17 0 18 0; ! #X connect 17 0 19 0; ! #X connect 19 0 20 0; ! #X connect 19 1 20 1; ! #X connect 21 0 0 0; ! #X connect 24 0 29 0; ! #X connect 25 0 30 0; ! #X connect 26 0 24 0; ! #X connect 26 0 25 0; ! #X connect 27 0 25 0; ! #X connect 27 0 24 0; ! #X connect 28 0 10 0; ! #X connect 28 1 7 0; ! #X connect 28 2 20 2; ! #X connect 29 0 28 0; ! #X connect 30 0 28 0; --- 1,50 ---- ! #N canvas 1036 0 914 718 12; ! #X obj 17 22 widget mat n1 #w 881 #bg gray83 #divX 8 #divY 5 #h 494 ! #Yb 1 #Ya 88 #qYv 2 #qYa 8 #ln white; #X msg 1080 -13 -height 26 -width 26 -bg gray95; ! #X msg 184 648 redefine; ! #X obj 131 646 * 127; ! #X obj 95 644 + 36; ! #X obj 587 565 rr ss; ! #X obj 587 546 rg; ! #X obj 27 538 route note; ! #X obj 19 603 unpack f f f; ! #X obj 47 638 * 127; ! #X obj 26 668 pack f f f; ! #X obj 49 692 makenote 99 250; ! #X obj 102 728 noteout; ! #X obj 108 584 rp ss kbd; ! #X obj 158 583 rp ss kb2; ! #X obj 138 537 widget kbd k1 #bg blue #fg green #ln gray50 -height ! 32; ! #X obj 138 570 widget kbd k2 #bg orange #fg red #ln gray50 -height ! 32; ! #X obj 108 622 unpack 0 0 0; ! #X obj 108 603 Append 1; ! #X obj 158 602 Append 2; ! #X msg 74 575 1; ! #X connect 0 0 7 0; #X connect 2 0 0 0; ! #X connect 3 0 12 1; ! #X connect 4 0 12 0; ! #X connect 6 0 5 0; ! #X connect 7 0 8 0; ! #X connect 8 0 10 0; ! #X connect 8 1 9 0; ! #X connect 8 2 10 2; ! #X connect 9 0 10 1; ! #X connect 10 0 11 0; ! #X connect 11 0 12 0; ! #X connect 11 1 12 1; ! #X connect 13 0 18 0; ! #X connect 14 0 19 0; ! #X connect 15 0 18 0; ! #X connect 15 0 13 0; ! #X connect 16 0 19 0; ! #X connect 16 0 14 0; ! #X connect 17 0 4 0; ! #X connect 17 1 3 0; ! #X connect 17 2 12 2; ! #X connect 18 0 17 0; ! #X connect 19 0 17 0; ! #X connect 20 0 10 2;