#N canvas 616 83 568 531 10; #X obj 0 995 cnv 15 552 21 empty empty empty 20 12 0 14 -233017 -33289 0; #X obj 0 438 cnv 3 550 3 empty empty inlets 8 12 0 13 -228856 -1 0 ; #N canvas 613 452 348 203 META 0; #X text 0 18 LICENSE SIBSD; #X text 0 90 LIBRARY cyclone; #X text 0 0 KEYWORDS signal ramp generator exponential; #X text 0 36 DESCRIPTION exponential ramp generator; #X text 0 54 INLET_0 list; #X text 0 72 OUTLET_0 signal; #X text 0 110 VERSION 0.1-alpha57; #X text 0 128 AUTHOR Krzysztof Czaja; #X text 1 146 RELEASE_DATE 2002; #X text 2 165 WEBSITE http://suita.chopin.edu.pl/~czaja/miXed/externs/cyclone.html ; #X text 2 197 HELP_PATCH_AUTHORS Christoph Kummerer. Revised by Jonathan Wilkes for Pd-extended 0.42 to conform to the PDDP template. Alex Cleveland updated this patch for Pd-l2ork version 2013.05.28. Fred Jan Kraan adapted the patch to pd-extended 2015-02-02; #X restore 501 997 pd META; #X obj 0 608 cnv 3 550 3 empty empty outlets 8 12 0 13 -228856 -1 0 ; #X obj 0 645 cnv 3 550 3 empty empty arguments 8 12 0 13 -228856 -1 0; #X obj 0 721 cnv 3 550 3 empty empty more_info 8 12 0 13 -228856 -1 0; #N canvas 305 549 428 109 Related_objects 0; #X obj 0 0 cnv 15 425 20 empty empty empty 3 12 0 14 -204280 -1 0; #X text 6 1 Related Objects; #X obj 34 36 line~; #X obj 80 36 vline~; #X restore 203 997 pd Related_objects; #X obj 89 617 cnv 17 3 17 empty empty 0 5 9 0 16 -228856 -162280 0 ; #X obj 0 0 cnv 15 552 40 empty empty curve~ 3 12 0 18 -204280 -1 0 ; #X text 12 23 Exponential ramp generator; #X text 119 446 list; #X text 119 616 signal; #X text 179 616 - signal produced by input parameters; #X text 115 664 1) float; #X text 179 664 - set initial value; #X text 115 685 2) float; #X text 179 685 - set parameter; #X text 115 738 curve~ is similar to line~. It produces a signal that goes from an initial to target value over a specified number of milliseconds. However \, it produces non-linear ramps using a piecewise approximation of an exponential function. You specify the parameter to this exponential function in the curve~ object's right inlet. Values from 0 to 1 produce an "exponential" curve when increasing in value and values from -1 to 0 produce a "logarithmic" curve. The closer to 0 the curve parameter is \, the closer the curve is to a straight line \, and the farther away the parameter is from 0 \, the steeper the curve. curve~ can also accept a list of up two or three arguments (the previous curve parameter is used if there are two arguments) \, or a list with two or more value \, time \, parameter triples. curve~ is limited to 42 such triples in a single list. The object's approximation of the exponential becomes better when the vector size is smaller \, but the object also becomes more computationally expensive.; #X obj 500 3 curve~; #X obj 89 448 cnv 17 3 80 empty empty 0 5 9 0 16 -228856 -162280 0 ; #X obj 89 534 cnv 17 3 30 empty empty 1 5 9 0 16 -228856 -162280 0 ; #X text 119 532 float; #X text 179 533 - curve duration in milliseconds (useful if you wish to feed individual float values into first inlet; #X obj 89 571 cnv 17 3 30 empty empty 2 5 9 0 16 -228856 -162280 0 ; #X text 119 569 float; #X text 179 570 - curve parameter (-1 to 1). See "different_parameters" subpatch for more info; #N canvas 633 440 350 403 different_parameters 0; #X obj 104 177 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X text 202 80 parameter; #X text 134 80 time; #X floatatom 203 97 0 0 0 0 - - -; #X msg 137 97 1 \, 0 500; #X text 69 80 value; #X text 116 148 curve signal out; #X text 122 174 bang when done; #X text 49 58 try different curve parameters (-1 to 1); #X obj 71 149 curve~; #X msg 71 97 0 \, 1 500; #X obj 2 3 cnv 15 425 20 empty empty empty 3 12 0 14 -204280 -1 0; #N canvas 0 0 450 300 (subpatch) 0; #X array \$0-diffCurve 1024 float 3; #A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; #A 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; #X coords 0 1 1023 -1 150 80 1 0 0; #X restore 67 261 graph; #X obj 87 201 metro 50; #X obj 81 180 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 70 224 tabwrite~ \$0-diffCurve; #X obj 70 261 hsl 145 80 0 127 0 0 blank_outlet blank_inlet empty -2 -8 0 10 -262144 -262144 -262144 0 1; #X text 55 257 1; #X text 50 327 -1; #X text 4 4 Different curve parameters; #X connect 3 0 9 2; #X connect 4 0 9 0; #X connect 9 0 15 0; #X connect 9 1 0 0; #X connect 10 0 9 0; #X connect 13 0 15 0; #X connect 14 0 13 0; #X restore 380 142 pd different_parameters; #X text 119 457 float; #X text 179 447 - triplet of floats of form intial value \, time (ms) \, parameter. Parameter specifies what kind of cuve 1 to 0 for exponential \, 0 for line \, 0 to -1 for logarithmic. Can have up to 42 triplets. Single float value sets the curve immediately to that value unless duration is set to other than 0 via second inlet.; #N canvas 1 52 450 300 (subpatch) 0; #X array \$0-curveArray 1024 float 1; #A 0 1 0.997175 0.994366 0.991571 0.988791 0.986026 0.983275 0.980539 0.977818 0.975111 0.972418 0.96974 0.967076 0.964426 0.961791 0.959169 0.956561 0.953967 0.951387 0.94882 0.946267 0.943728 0.941202 0.93869 0.936191 0.933705 0.931233 0.928773 0.926327 0.923893 0.921473 0.919065 0.91667 0.914288 0.911919 0.909562 0.907218 0.904886 0.902566 0.900259 0.897964 0.895682 0.893411 0.891152 0.888906 0.886671 0.884448 0.882238 0.880038 0.877851 0.875675 0.873511 0.871358 0.869216 0.867086 0.864968 0.86286 0.860764 0.858679 0.856605 0.854542 0.85249 0.850448 0.848418 0.846399 0.84439 0.842392 0.840404 0.838427 0.836461 0.834505 0.832559 0.830624 0.828699 0.826784 0.824879 0.822985 0.8211 0.819226 0.817361 0.815507 0.813662 0.811827 0.810002 0.808186 0.806381 0.804584 0.802798 0.80102 0.799253 0.797494 0.795745 0.794005 0.792275 0.790554 0.788841 0.787138 0.785444 0.783759 0.782083 0.780416 0.778758 0.777108 0.775467 0.773835 0.772212 0.770597 0.768991 0.767393 0.765804 0.764224 0.762651 0.761087 0.759532 0.757984 0.756445 0.754914 0.753391 0.751876 0.75037 0.748871 0.74738 0.745897 0.744422 0.742955 0.741496 0.740044 0.7386 0.737164 0.735736 0.734315 0.732901 0.731495 0.730097 0.728706 0.727322 0.725946 0.724577 0.723215 0.721861 0.720513 0.719173 0.71784 0.716514 0.715195 0.713883 0.712579 0.711281 0.709989 0.708705 0.707428 0.706157 0.704893 0.703636 0.702386 0.701142 0.699905 0.698674 0.69745 0.696232 0.695021 0.693816 0.692618 0.691426 0.69024 0.689061 0.687888 0.686721 0.685561 0.684406 0.683258 0.682115 0.680979 0.679849 0.678725 0.677607 0.676495 0.675388 0.674288 0.673193 0.672105 0.671022 0.669944 0.668873 0.667807 0.666747 0.665692 0.664643 0.6636 0.662562 0.66153 0.660503 0.659482 0.658466 0.657455 0.65645 0.65545 0.654456 0.653466 0.652482 0.651504 0.65053 0.649562 0.648598 0.64764 0.646687 0.645739 0.644796 0.643858 0.642925 0.641997 0.641074 0.640156 0.639243 0.638334 0.637431 0.636532 0.635638 0.634749 0.633864 0.632984 0.632109 0.631239 0.630373 0.629511 0.628655 0.627802 0.626955 0.626112 0.625273 0.624439 0.623609 0.622783 0.621962 0.621146 0.620333 0.619525 0.618722 0.617922 0.617127 0.616336 0.615549 0.614767 0.613988 0.613214 0.612444 0.611678 0.610916 0.610158 0.609404 0.608654 0.607908 0.607166 0.606428 0.605694 0.604964 0.604237 0.603515 0.602796 0.602081 0.60137 0.600663 0.59996 0.59926 0.598564 0.597871 0.597183 0.596498 0.595816 0.595139 0.594464 0.593794 0.593127 0.592463 0.591803 0.591147 0.590494 0.589844 0.589198 0.588556 0.587917 0.587281 0.586648 0.586019 0.585394 0.584771 0.584152 0.583536 0.582924 0.582314 0.581708 0.581106 0.580506 0.57991 0.579316 0.578726 0.578139 0.577555 0.576975 0.576397 0.575822 0.575251 0.574682 0.574117 0.573554 0.572995 0.572438 0.571885 0.571334 0.570786 0.570241 0.5697 0.569161 0.568624 0.568091 0.567561 0.567033 0.566508 0.565986 0.565467 0.56495 0.564436 0.563925 0.563417 0.562911 0.562408 0.561908 0.56141 0.560915 0.560423 0.559933 0.559446 0.558961 0.558479 0.558 0.557523 0.557049 0.556577 0.556108 0.555641 0.555176 0.554715 0.554255 0.553798 0.553344 0.552891 0.552442 0.551994 0.551549 0.551107 0.550666 0.550228 0.549793 0.54936 0.548929 0.5485 0.548073 0.547649 0.547227 0.546808 0.54639 0.545975 0.545562 0.545151 0.544743 0.544336 0.543932 0.54353 0.54313 0.542732 0.542336 0.541942 0.541551 0.541161 0.540774 0.540388 0.540005 0.539624 0.539244 0.538867 0.538492 0.538119 0.537747 0.537378 0.537011 0.536645 0.536282 0.53592 0.535561 0.535203 0.534847 0.534493 0.534141 0.533791 0.533443 0.533096 0.532752 0.532409 0.532068 0.531729 0.531392 0.531056 0.530722 0.53039 0.53006 0.529732 0.529405 0.52908 0.528757 0.528435 0.528115 0.527797 0.527481 0.527166 0.526853 0.526541 0.526232 0.525923 0.525617 0.525312 0.525009 0.524707 0.524407 0.524109 0.523812 0.523517 0.523223 0.522931 0.52264 0.522351 0.522063 0.521778 0.521493 0.52121 0.520929 0.520649 0.52037 0.520093 0.519818 0.519544 0.519271 0.519 0.51873 0.518462 0.518195 0.517929 0.517665 0.517403 0.517142 0.516882 0.516623 0.516366 0.51611 0.515856 0.515603 0.515351 0.515101 0.514852 0.514604 0.514358 0.514113 0.513869 0.513627 0.513385 0.513146 0.512907 0.51267 0.512433 0.512199 0.511965 0.511733 0.511502 0.511272 0.511043 0.510816 0.510589 0.510364 0.51014 0.509918 0.509696 0.509476 0.509257 0.509039 0.508822 0.508606 0.508392 0.508178 0.507966 0.507755 0.507545 0.507336 0.507128 0.506922 0.506716 0.506512 0.506308 0.506106 0.505905 0.505705 0.505506 0.505308 0.505111 0.504915 0.50472 0.504526 0.504333 0.504141 0.50395 0.503761 0.503572 0.503384 0.503197 0.503011 0.502827 0.502643 0.50246 0.502278 0.502097 0.501917 0.501738 0.50156 0.501383 0.501207 0.501032 0.500858 0.500684 0.500512 0.50034 0.50017 0.5 0.49983 0.49966 0.499488 0.499316 0.499142 0.498968 0.498793 0.498617 0.49844 0.498262 0.498083 0.497903 0.497722 0.49754 0.497357 0.497173 0.496989 0.496803 0.496616 0.496428 0.496239 0.49605 0.495859 0.495667 0.495474 0.49528 0.495085 0.494889 0.494692 0.494494 0.494295 0.494095 0.493894 0.493692 0.493488 0.493284 0.493078 0.492872 0.492664 0.492455 0.492245 0.492034 0.491822 0.491608 0.491394 0.491178 0.490961 0.490743 0.490524 0.490304 0.490082 0.48986 0.489636 0.489411 0.489184 0.488957 0.488728 0.488498 0.488267 0.488035 0.487801 0.487567 0.48733 0.487093 0.486854 0.486615 0.486373 0.486131 0.485887 0.485642 0.485396 0.485148 0.484899 0.484649 0.484397 0.484144 0.48389 0.483634 0.483377 0.483118 0.482858 0.482597 0.482335 0.482071 0.481805 0.481538 0.48127 0.481 0.480729 0.480456 0.480182 0.479907 0.47963 0.479351 0.479071 0.47879 0.478507 0.478222 0.477936 0.477649 0.47736 0.477069 0.476777 0.476483 0.476188 0.475891 0.475593 0.475293 0.474991 0.474688 0.474383 0.474077 0.473768 0.473459 0.473147 0.472834 0.472519 0.472203 0.471885 0.471565 0.471243 0.47092 0.470595 0.470268 0.46994 0.46961 0.469278 0.468944 0.468608 0.468271 0.467932 0.467591 0.467248 0.466904 0.466557 0.466209 0.465859 0.465507 0.465153 0.464797 0.464439 0.46408 0.463718 0.463355 0.462989 0.462622 0.462253 0.461881 0.461508 0.461133 0.460756 0.460376 0.459995 0.459612 0.459226 0.458839 0.458449 0.458058 0.457664 0.457268 0.45687 0.45647 0.456068 0.455664 0.455257 0.454849 0.454438 0.454025 0.45361 0.453192 0.452773 0.452351 0.451927 0.4515 0.451071 0.45064 0.450207 0.449772 0.449334 0.448893 0.448451 0.448006 0.447558 0.447109 0.446656 0.446202 0.445745 0.445285 0.444824 0.444359 0.443892 0.443423 0.442951 0.442477 0.442 0.441521 0.441039 0.440554 0.440067 0.439577 0.439085 0.43859 0.438092 0.437592 0.437089 0.436583 0.436075 0.435564 0.43505 0.434533 0.434014 0.433492 0.432967 0.432439 0.431909 0.431376 0.430839 0.4303 0.429759 0.429214 0.428666 0.428115 0.427562 0.427005 0.426446 0.425883 0.425318 0.424749 0.424178 0.423603 0.423025 0.422445 0.421861 0.421274 0.420684 0.42009 0.419494 0.418894 0.418292 0.417685 0.417076 0.416464 0.415848 0.415229 0.414606 0.413981 0.413352 0.412719 0.412083 0.411444 0.410802 0.410156 0.409506 0.408853 0.408197 0.407537 0.406873 0.406206 0.405536 0.404861 0.404184 0.403502 0.402817 0.402129 0.401436 0.40074 0.40004 0.399337 0.39863 0.397919 0.397204 0.396485 0.395763 0.395036 0.394306 0.393572 0.392834 0.392092 0.391346 0.390596 0.389842 0.389084 0.388322 0.387556 0.386786 0.386012 0.385233 0.384451 0.383664 0.382873 0.382078 0.381278 0.380475 0.379667 0.378854 0.378038 0.377217 0.376391 0.375561 0.374727 0.373888 0.373045 0.372198 0.371345 0.370489 0.369627 0.368761 0.367891 0.367016 0.366136 0.365251 0.364362 0.363468 0.362569 0.361666 0.360757 0.359844 0.358926 0.358003 0.357075 0.356142 0.355204 0.354261 0.353313 0.35236 0.351402 0.350438 0.34947 0.348496 0.347518 0.346534 0.345544 0.34455 0.34355 0.342545 0.341534 0.340518 0.339497 0.33847 0.337438 0.3364 0.335357 0.334308 0.333253 0.332193 0.331127 0.330056 0.328978 0.327895 0.326807 0.325712 0.324612 0.323505 0.322393 0.321275 0.320151 0.319021 0.317885 0.316742 0.315594 0.314439 0.313279 0.312112 0.310939 0.30976 0.308574 0.307382 0.306184 0.304979 0.303768 0.30255 0.301326 0.300095 0.298858 0.297614 0.296364 0.295107 0.293843 0.292572 0.291295 0.290011 0.288719 0.287421 0.286117 0.284805 0.283486 0.28216 0.280827 0.279487 0.278139 0.276785 0.275423 0.274054 0.272678 0.271294 0.269903 0.268505 0.267099 0.265685 0.264264 0.262836 0.2614 0.259956 0.258504 0.257045 0.255578 0.254103 0.25262 0.251129 0.24963 0.248124 0.246609 0.245086 0.243555 0.242016 0.240468 0.238913 0.237349 0.235776 0.234196 0.232607 0.231009 0.229403 0.227788 0.226165 0.224533 0.222892 0.221242 0.219584 0.217917 0.216241 0.214556 0.212862 0.211159 0.209446 0.207725 0.205995 0.204255 0.202506 0.200747 0.19898 0.197202 0.195416 0.193619 0.191814 0.189998 0.188173 0.186338 0.184493 0.182639 0.180774 0.1789 0.177015 0.175121 0.173216 0.171301 0.169376 0.167441 0.165495 0.163539 0.161573 0.159596 0.157608 0.15561 0.153601 0.151582 0.149552 0.14751 0.145458 0.143395; #A 1000 0.141321 0.139236 0.13714 0.135032 0.132914 0.130784 0.128642 0.126489 0.124325 0.122149 0.119962 0.117762 0.115552 0.113329 0.111094 0.108848 0.106589 0.104318 0.102036 0.0997408 0.0974337 0.0951142 0.0927823 0.090438; #X coords 0 1 1023 0 200 140 1 0 0; #X restore 91 286 graph; #X obj 75 183 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 95 182 cyclone/curve~; #X msg 95 99 1 \, 0.5 12 0.5 0 12 -0.5; #X msg 86 73 1 \, 0.5 12 -0.5 0 12 0.5; #X obj 324 264 cyclone/curve~; #X msg 101 124 0 \, 0.5 12 0.5 1 12 -0.5; #X msg 324 199 0 \, 1 500 0.5 1 500 0 0 500 0.5; #X obj 337 325 osc~ 440; #X obj 323 351 *~; #X obj 324 386 output~; #X msg 75 49 0 \, 0.5 11 -1 1 11 1; #X obj 405 363 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X text 422 362 the end; #X text 253 95 examples of "s" curves; #X obj 94 246 tabwrite~ \$0-curveArray; #X obj 472 254 vsl 15 128 0 1 0 0 empty empty empty 0 -9 0 10 -262144 -1 -1 0 1; #X obj 417 230 cyclone/Snapshot~ 100; #X text 79 280 1; #X text 79 412 0; #X connect 30 0 44 0; #X connect 31 0 44 0; #X connect 32 0 30 0; #X connect 32 0 31 0; #X connect 33 0 31 0; #X connect 33 0 30 0; #X connect 34 0 38 0; #X connect 34 0 46 0; #X connect 34 1 41 0; #X connect 35 0 31 0; #X connect 35 0 30 0; #X connect 36 0 34 0; #X connect 37 0 38 1; #X connect 38 0 39 0; #X connect 38 0 39 1; #X connect 40 0 31 0; #X connect 40 0 30 0; #X connect 46 0 45 0;