#N canvas 349 623 1128 544 10; #X declare -lib timbreID/timbreIDLib; #X obj 127 433 adc~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; #X obj 57 474 dac~, f 6; #N canvas 215 619 730 390 analyzers_______________________________ 0; #X obj 95 44 inlet~; #X obj 119 69 inlet~; #X obj 148 96 inlet~; #X obj 172 121 inlet~; #X obj 198 45 inlet~; #X obj 224 72 inlet~; #X obj 253 101 inlet~; #X obj 277 124 inlet~; #X obj 299 50 inlet~; #X obj 324 76 inlet~; #X obj 353 104 inlet~; #X obj 378 129 inlet~; #X obj 402 55 inlet~; #X obj 427 80 inlet~; #X obj 456 111 inlet~; #X obj 480 132 inlet~; #X obj 96 183 core 0; #X obj 120 204 core 1; #X obj 149 226 core 2; #X obj 173 249 core 3; #X obj 199 182 core 4; #X obj 225 205 core 5; #X obj 252 227 core 6; #X obj 277 250 core 7; #X obj 300 183 core 8; #X obj 324 206 core 9; #X obj 354 228 core 10; #X obj 377 251 core 11; #X obj 403 184 core 12; #X obj 428 207 core 13; #X obj 457 229 core 14; #X obj 481 252 core 15; #X connect 0 0 16 0; #X connect 1 0 17 0; #X connect 2 0 18 0; #X connect 3 0 19 0; #X connect 4 0 20 0; #X connect 5 0 21 0; #X connect 6 0 22 0; #X connect 7 0 23 0; #X connect 8 0 24 0; #X connect 9 0 25 0; #X connect 10 0 26 0; #X connect 11 0 27 0; #X connect 12 0 28 0; #X connect 13 0 29 0; #X connect 14 0 30 0; #X connect 15 0 31 0; #X restore 128 473 pd analyzers_______________________________; #X obj 57 45 bang~; #X obj 57 68 count 16; #X obj 57 95 sel 0; #X obj 57 121 s shmemupdate; #N canvas 763 290 408 235 window 0; #N canvas 0 0 450 300 (subpatch) 0; #X array hann 1024 float 1; #A 0 0 1.88351e-005 3.76403e-005 9.41157e-005 0.000150591 0.000244677 0.000338793 0.000470519 0.000602275 0.000771612 0.000940949 0.00114787 0.00135478 0.00159925 0.00184369 0.00212568 0.00240764 0.00272709 0.00304651 0.00340337 0.00376022 0.00415444 0.00454867 0.00498021 0.00541174 0.00588053 0.0063493 0.00685525 0.00736117 0.0079042 0.00844723 0.0090273 0.00960734 0.0102243 0.0108413 0.0114951 0.0121489 0.0128395 0.01353 0.0142572 0.0149843 0.015748 0.0165117 0.0173118 0.0181119 0.0189483 0.0197847 0.0206572 0.0215298 0.0224383 0.0233469 0.0242914 0.0252359 0.0262161 0.0271963 0.0282121 0.0292279 0.0302792 0.0313304 0.032417 0.0335035 0.0346252 0.0357469 0.0369035 0.0380601 0.0392516 0.040443 0.041669 0.042895 0.0441554 0.0454159 0.0467106 0.0480052 0.0493339 0.0506626 0.0520252 0.0533877 0.0547839 0.05618 0.0576096 0.0590392 0.060502 0.0619648 0.0634605 0.0649563 0.0664848 0.0680134 0.0695744 0.0711355 0.0727288 0.0743222 0.0759476 0.077573 0.0792302 0.0808874 0.0825762 0.0842649 0.085985 0.0877051 0.0894562 0.0912073 0.0929892 0.0947711 0.0965835 0.0983959 0.100239 0.102081 0.103954 0.105826 0.107729 0.109631 0.111563 0.113494 0.115455 0.117416 0.119406 0.121395 0.123413 0.125431 0.127478 0.129524 0.131598 0.133672 0.135774 0.137876 0.140005 0.142134 0.14429 0.146446 0.148629 0.150811 0.15302 0.155229 0.157464 0.159699 0.161959 0.16422 0.166506 0.168792 0.171102 0.173413 0.175748 0.178084 0.180443 0.182803 0.185186 0.18757 0.189977 0.192384 0.194814 0.197244 0.199697 0.20215 0.204625 0.2071 0.209598 0.212095 0.214614 0.217133 0.219674 0.222214 0.224775 0.227337 0.229919 0.2325 0.235102 0.237704 0.240326 0.242948 0.245589 0.24823 0.25089 0.25355 0.256229 0.258907 0.261604 0.264301 0.267015 0.26973 0.272462 0.275194 0.277942 0.280691 0.283457 0.286222 0.289003 0.291785 0.294582 0.297379 0.300191 0.303003 0.305831 0.308658 0.311499 0.314341 0.317196 0.320052 0.322921 0.32579 0.328672 0.331555 0.334449 0.337344 0.340252 0.343159 0.346078 0.348997 0.351927 0.354857 0.357798 0.36074 0.363691 0.366643 0.369605 0.372567 0.375538 0.37851 0.38149 0.384471 0.38746 0.390449 0.393447 0.396444 0.399449 0.402455 0.405467 0.40848 0.411499 0.414519 0.417545 0.420571 0.423603 0.426635 0.429672 0.432709 0.435752 0.438794 0.441842 0.444889 0.44794 0.450991 0.454046 0.457101 0.460159 0.463218 0.466279 0.46934 0.472403 0.475466 0.478531 0.481596 0.484663 0.487729 0.490797 0.493864 0.496932 0.5 0.503068 0.506136 0.509203 0.512271 0.515337 0.518404 0.521469 0.524534 0.527597 0.53066 0.533721 0.536782 0.539841 0.542899 0.545954 0.549009 0.55206 0.555111 0.558158 0.561205 0.564248 0.56729 0.570328 0.573365 0.576397 0.579429 0.582455 0.585481 0.588501 0.59152 0.594533 0.597545 0.600551 0.603556 0.606553 0.609551 0.61254 0.615529 0.61851 0.62149 0.624462 0.627433 0.630395 0.633357 0.636308 0.63926 0.642201 0.645143 0.648073 0.651003 0.653922 0.656841 0.659748 0.662656 0.66555 0.668445 0.671328 0.67421 0.677079 0.679948 0.682804 0.685659 0.688501 0.691342 0.694169 0.696997 0.699809 0.702621 0.705418 0.708215 0.710997 0.713778 0.716543 0.719309 0.722057 0.724806 0.727538 0.73027 0.732984 0.735699 0.738396 0.741092 0.743771 0.74645 0.74911 0.75177 0.754411 0.757052 0.759674 0.762295 0.764897 0.767499 0.770081 0.772663 0.775224 0.777786 0.780326 0.782867 0.785386 0.787905 0.790402 0.7929 0.795375 0.79785 0.800303 0.802756 0.805186 0.807616 0.810023 0.812431 0.814814 0.817197 0.819557 0.821916 0.824252 0.826587 0.828898 0.831209 0.833494 0.83578 0.838041 0.840301 0.842536 0.844771 0.84698 0.849189 0.851372 0.853554 0.85571 0.857866 0.859995 0.862124 0.864226 0.866328 0.868402 0.870476 0.872523 0.874569 0.876587 0.878605 0.880595 0.882584 0.884545 0.886506 0.888438 0.890369 0.892272 0.894174 0.896047 0.897919 0.899762 0.901605 0.903417 0.905229 0.907011 0.908793 0.910544 0.912295 0.914015 0.915736 0.917424 0.919113 0.92077 0.922428 0.924053 0.925678 0.927272 0.928865 0.930426 0.931987 0.933516 0.935044 0.93654 0.938036 0.939499 0.940961 0.942391 0.94382 0.945217 0.946613 0.947975 0.949338 0.950667 0.951995 0.95329 0.954585 0.955845 0.957106 0.958332 0.959558 0.960749 0.96194 0.963097 0.964254 0.965375 0.966497 0.967584 0.96867 0.969721 0.970773 0.971788 0.972804 0.973784 0.974765 0.975709 0.976654 0.977562 0.978471 0.979343 0.980216 0.981052 0.981889 0.982689 0.983489 0.984252 0.985016 0.985743 0.98647 0.987161 0.987852 0.988505 0.989159 0.989776 0.990393 0.990973 0.991553 0.992096 0.992639 0.993145 0.993651 0.99412 0.994589 0.99502 0.995452 0.995846 0.99624 0.996597 0.996954 0.997273 0.997593 0.997874 0.998156 0.998401 0.998645 0.998852 0.999059 0.999228 0.999398 0.99953 0.999661 0.999755 0.999849 0.999906 0.999962 0.999981 1 0.999981 0.999962 0.999906 0.999849 0.999755 0.999661 0.999529 0.999398 0.999228 0.999059 0.998852 0.998645 0.998401 0.998156 0.997874 0.997592 0.997273 0.996953 0.996596 0.996239 0.995845 0.995451 0.995019 0.994588 0.994119 0.99365 0.993144 0.992638 0.992095 0.991552 0.990972 0.990392 0.989775 0.989158 0.988504 0.987851 0.98716 0.986469 0.985742 0.985015 0.984251 0.983488 0.982687 0.981887 0.981051 0.980215 0.979342 0.978469 0.977561 0.976652 0.975708 0.974763 0.973783 0.972803 0.971787 0.970771 0.96972 0.968669 0.967582 0.966495 0.965374 0.964252 0.963095 0.961939 0.960747 0.959556 0.95833 0.957104 0.955843 0.954583 0.953288 0.951993 0.950665 0.949336 0.947973 0.946611 0.945215 0.943818 0.942389 0.940959 0.939496 0.938034 0.936538 0.935042 0.933514 0.931985 0.930424 0.928863 0.927269 0.925676 0.924051 0.922425 0.920768 0.919111 0.917422 0.915733 0.914013 0.912293 0.910542 0.908791 0.907009 0.905227 0.903414 0.901602 0.899759 0.897917 0.896044 0.894171 0.892269 0.890367 0.888435 0.886503 0.884542 0.882582 0.880592 0.878602 0.876584 0.874566 0.87252 0.870473 0.868399 0.866325 0.864223 0.862121 0.859992 0.857863 0.855707 0.853551 0.851368 0.849186 0.846977 0.844768 0.842533 0.840298 0.838037 0.835777 0.833491 0.831205 0.828895 0.826584 0.824249 0.821913 0.819554 0.817194 0.814811 0.812427 0.81002 0.807613 0.805183 0.802753 0.8003 0.797847 0.795372 0.792896 0.790399 0.787901 0.785382 0.782863 0.780323 0.777782 0.775221 0.77266 0.770078 0.767496 0.764894 0.762292 0.75967 0.757048 0.754407 0.751766 0.749106 0.746446 0.743767 0.741089 0.738392 0.735695 0.732981 0.730266 0.727534 0.724802 0.722054 0.719305 0.71654 0.713774 0.710993 0.708211 0.705414 0.702617 0.699805 0.696993 0.694165 0.691338 0.688497 0.685655 0.6828 0.679944 0.677075 0.674206 0.671324 0.668441 0.665546 0.662652 0.659744 0.656837 0.653918 0.650999 0.648069 0.645139 0.642197 0.639256 0.636304 0.633353 0.630391 0.627429 0.624458 0.621486 0.618506 0.615525 0.612536 0.609547 0.606549 0.603552 0.600546 0.597541 0.594529 0.591516 0.588496 0.585477 0.582451 0.579425 0.576393 0.573361 0.570324 0.567286 0.564244 0.561201 0.558154 0.555107 0.552056 0.549004 0.545949 0.542894 0.539836 0.536778 0.533717 0.530656 0.527593 0.52453 0.521464 0.518399 0.515333 0.512266 0.509199 0.506131 0.503064 0.499996 0.496928 0.49386 0.490792 0.487725 0.484659 0.481592 0.478527 0.475462 0.472399 0.469335 0.466274 0.463213 0.460155 0.457097 0.454042 0.450987 0.447936 0.444884 0.441837 0.43879 0.435748 0.432705 0.429668 0.42663 0.423598 0.420566 0.417541 0.414515 0.411495 0.408476 0.405463 0.40245 0.399445 0.39644 0.393442 0.390445 0.387456 0.384466 0.381486 0.378505 0.375534 0.372563 0.369601 0.366639 0.363687 0.360736 0.357794 0.354853 0.351923 0.348993 0.346074 0.343155 0.340247 0.33734 0.334445 0.331551 0.328668 0.325786 0.322917 0.320048 0.317192 0.314337 0.311495 0.308654 0.305827 0.302999 0.300187 0.297375 0.294578 0.291781 0.288999 0.286218 0.283453 0.280687 0.277939 0.27519 0.272458 0.269726 0.267012 0.264297 0.2616 0.258904 0.256225 0.253547 0.250886 0.248226 0.245585 0.242944 0.240323 0.237701 0.235099 0.232497 0.229915 0.227333 0.224772 0.222211 0.21967 0.21713 0.214611 0.212092 0.209594 0.207097 0.204622 0.202146 0.199693 0.19724 0.19481 0.19238 0.189973 0.187566 0.185183 0.182799 0.18044 0.17808 0.175745 0.17341 0.171099 0.168788 0.166502 0.164217 0.161956 0.159696 0.157461 0.155226 0.153017 0.150808 0.148625 0.146443 0.144287 0.142131 0.140002 0.137873 0.135771 0.133669 0.131595 0.129521 0.127474 0.125428 0.12341 0.121392 0.119402 0.117413 0.115452 0.113491 0.11156 0.109628 0.107726 0.105823 0.103951 0.102078 0.100236 0.0983929 0.0965805 0.0947681 0.0929862 0.0912043 0.0894532 0.0877021 0.0859821 0.084262 0.0825733 0.0808845 0.0792273 0.0775701 0.0759448 0.0743194 0.0727261 0.0711327 0.0695717 0.0680107 0.0664822 0.0649537 0.0634579 0.0619622 0.0604994 0.0590366 0.0576071 0.0561775 0.0547814 0.0533852 0.0520227 0.0506602 0.0493315 0.0480028 0.0467082 0.0454136 0.0441532 0.0428927 0.0416667 0.0404407 0.0392494 0.038058 0.0369014 0.0357447 0.0346231 0.0335014 0.0324149 0.0313284 0.0302772 0.0292259 0.0282102 0.0271944 0.0262142 0.025234 0.0242896 0.0233451 0.0224366 0.0215281 0.0206555 0.019783 0.0189467 0.0181103 0.0173103 0.0165102 0.0157465 0.0149829 0.0142557 0.0135286 0.0128381 0.0121476 0.0114938 0.01084 0.0102231 0.00960615 0.00902611 0.0084461 0.0079031 0.0073601 0.00685418 0.00634828 0.00587955; #A 1000 0.00541082 0.00497931 0.00454783 0.00415364 0.00375944 0.00340265 0.00304583 0.00272644 0.00240701 0.00212508 0.00184315 0.00159872 0.00135431 0.00114745 0.000940561 0.000771254 0.000601947 0.000470281 0.000338584 0.000244498 0.000150442 9.39965e-005 3.75807e-005 1.87755e-005; #X coords 0 1 1023 0 300 100 1 0 0; #X restore 39 32 graph; #X restore 406 39 pd window; #N canvas 333 794 594 420 commands_from_unity 0; #X obj 66 31 inlet; #X obj 160 326 s sample_playback; #X text 150 55 1 ... sample playback; #X text 149 38 0 ... dsp start/stop; #X msg 23 276 \; pd dsp \$1; #X obj 106 273 sel 1; #X obj 109 312 outlet; #X text 150 69 2 ... text message; #X obj 25 219 t f; #X obj 184 193 list prepend label; #X obj 184 220 list trim; #X obj 70 94 route processing sample state; #X obj 184 247 s previous; #X obj 304 194 list prepend label; #X obj 304 221 list trim; #X obj 427 194 list prepend label; #X obj 427 221 list trim; #X obj 184 143 route previous current next; #X obj 304 248 s current; #X obj 427 248 s next; #X connect 0 0 11 0; #X connect 5 0 6 0; #X connect 8 0 4 0; #X connect 9 0 10 0; #X connect 10 0 12 0; #X connect 11 0 5 0; #X connect 11 0 8 0; #X connect 11 1 1 0; #X connect 11 2 17 0; #X connect 13 0 14 0; #X connect 14 0 18 0; #X connect 15 0 16 0; #X connect 16 0 19 0; #X connect 17 0 9 0; #X connect 17 1 13 0; #X connect 17 2 15 0; #X restore 242 79 pd commands_from_unity; #N canvas 667 603 480 371 sample_playback 0; #X obj 86 166 readsf~; #X obj 95 6 r sample_playback; #X obj 87 280 outlet~; #X obj 168 221 makefilename ../../../../AudioSamples/%s; #X obj 168 260 route symbol; #X obj 168 182 symbol; #X obj 168 143 text get samplefiles; #X floatatom 168 105 5 0 0 0 - - -; #X obj 95 38 sel 0; #X obj 122 72 - 1; #X msg 33 114 0; #X msg 168 298 open \$1 \, 1; #X connect 0 0 2 0; #X connect 1 0 8 0; #X connect 3 0 4 0; #X connect 4 0 11 0; #X connect 5 0 3 0; #X connect 6 0 5 0; #X connect 7 0 6 0; #X connect 8 0 10 0; #X connect 8 1 9 0; #X connect 9 0 7 0; #X connect 10 0 0 0; #X connect 11 0 0 0; #X restore 60 398 pd sample_playback; #X obj 56 159 text define -k samplefiles; #A set Back_Back.wav \; Brutal_Synth.wav \; Dialog.wav \; Drums.wav \; Fox_Melo.wav \; Kick.wav \; Pads+Strings.wav \; Rose_Sax.wav \; Roses_Front.wav \; TimbreID_Test.wav \;; #X obj 242 363 netsend -u -b; #X msg 242 163 connect localhost 56765; #X obj 264 133 loadbang; #X obj 97 218 list prepend send; #X obj 97 242 list trim; #X obj 97 194 midiin; #X msg 417 166 23 31; #X msg 464 166 80 84, f 10; #X text 429 140 sample CC; #X msg 417 201 send 176 \$1 \$2; #X text 416 223 176... control channel 1; #X obj 6 194 midirealtimein; #X obj 242 41 netreceive -u 54345; #X obj 598 90 cnv 15 500 60 empty current Outro 20 12 0 45 -204786 -66577 0; #X obj 786 234 bng 50 250 50 0 empty empty next 15 25 0 10 -204786 -1 -1; #X obj 596 227 bng 50 250 50 0 empty empty rewind 7 25 0 10 -261234 -1 -1; #X msg 596 303 send 176 127 0; #X text 896 305 <--- midi is temporal; #X obj 692 231 bng 50 250 50 0 empty empty previous 4 25 0 10 -204786 -1 -1; #X msg 692 303 send 176 127 1; #X msg 786 304 send 176 127 2; #X obj 594 46 cnv 12 500 30 empty previous Silent_Hill 20 12 0 25 -262130 -66577 0; #X obj 596 152 cnv 12 500 30 empty next --- 20 12 0 25 -262130 -66577 0; #X obj 879 467 declare -lib timbreID/timbreIDLib; #N canvas 28 541 1273 735 timbreID_example 0; #X obj 77 657 nbx 3 28 -1e+037 1e+037 0 0 empty empty empty 0 -8 0 28 -262144 -1 -1 0 256; #X floatatom 189 663 10 0 0 0 - - -; #X obj 77 690 print timbre; #X obj 93 556 timbreID, f 17; #X obj 103 480 tgl 15 0 empty empty train 17 7 0 12 -262144 -1 -1 0 1; #X obj 182 480 spigot; #X obj 231 480 tgl 15 0 empty empty id 17 7 0 12 -262144 -1 -1 0 1 ; #N canvas 507 196 745 433 onsets 0; #X obj 56 53 inlet~; #X obj 146 327 outlet; #X obj 3 4 cnv 10 400 10 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 3 4 cnv 10 10 400 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 178 173 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 171 96 r bark-settings; #X text 308 53 timbreID comes with its own onset detection object: bark~. See its helpfile for more details. In comparison with bonk~ (the usual onset detection object in Pd) \, bark~ performs very similarly but has several extra conveniences. Most importantly \, there is a non-real-time version of the object \, enabling easy parsing of pre-recorded audio.; #X obj 146 135 bark~ 1024 256 0.5; #X obj 336 292 loadbang; #X msg 336 314 \; bark-settings minvel 15 \; bark-settings debounce 350 \; bark-settings thresh 5 12 \; bark-settings filter_range 20 49 \;; #X obj 56 385 outlet~; #X text 308 163 Doing the attack detection in a subpatch with the input signal connected in series before [bfcc~] guarantees the DSP order. We first analyze the signal with [bark~] here to look for attacks \, and if we find one \, spit out a bang to get the most recent BFCC analysis possible back in the parent patch.; #X text 558 321 These were good onset detection settings for the audio files used in this help file., f 22; #X connect 0 0 7 0; #X connect 0 0 10 0; #X connect 5 0 7 0; #X connect 7 0 4 0; #X connect 7 0 1 0; #X connect 8 0 9 0; #X restore 59 259 pd onsets; #X obj 54 307 bfcc~ 1024 0.5; #X obj 54 480 spigot; #X obj 54 329 list split 25; #N canvas 0 50 450 250 (subpatch) 0; #X array closed 10584 float 2; #X coords 0 1 10584 -1 200 140 1; #X restore 405 118 graph; #N canvas 0 50 450 250 (subpatch) 0; #X array snare 16391 float 2; #X coords 0 1 16391 -1 200 140 1 0 0; #X restore 623 117 graph; #N canvas 0 50 450 250 (subpatch) 0; #X array kick 27342 float 2; #X coords 0 1 27342 -1 200 140 1 0 0; #X restore 843 116 graph; #X obj 851 369 soundfiler; #X msg 851 317 read -resize samples/snare.wav snare \, read -resize samples/kick.wav kick \, read -resize samples/closed.wav closed; #X obj 851 282 loadbang; #X obj 59 170 tabplay~ snare; #X obj 86 199 tabplay~ closed; #X obj 141 231 tabplay~ kick; #X obj 67 115 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 107 133 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 188 169 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 253 514 write trained.timid; #X connect 0 0 2 0; #X connect 3 0 0 0; #X connect 3 1 1 0; #X connect 4 0 9 1; #X connect 5 0 3 1; #X connect 6 0 5 1; #X connect 7 0 8 0; #X connect 7 1 8 0; #X connect 8 0 10 0; #X connect 9 0 3 0; #X connect 10 0 5 0; #X connect 10 0 9 0; #X connect 15 0 14 0; #X connect 16 0 15 0; #X connect 17 0 7 0; #X connect 18 0 7 0; #X connect 19 0 7 0; #X connect 20 0 17 0; #X connect 21 0 18 0; #X connect 22 0 19 0; #X connect 23 0 3 0; #X restore 879 442 pd timbreID_example; #X obj 321 320 r netsend; #N canvas 695 332 450 300 shmem 0; #X obj 90 182 table level 16; #X obj 89 152 shmem level 16; #X obj 89 127 r shmemupdate; #X obj 213 182 table noise 16; #X obj 213 154 shmem noise 16; #X obj 213 128 r shmemupdate; #X obj 320 127 r shmemupdate; #X obj 320 152 shmem pitch 16; #X obj 320 180 table pitch 16; #X connect 2 0 1 0; #X connect 5 0 4 0; #X connect 6 0 7 0; #X restore 405 71 pd shmem; #X connect 0 0 2 0; #X connect 0 1 2 1; #X connect 0 2 2 2; #X connect 0 3 2 3; #X connect 0 4 2 4; #X connect 0 5 2 5; #X connect 0 6 2 6; #X connect 0 7 2 7; #X connect 0 8 2 8; #X connect 0 9 2 9; #X connect 0 10 2 10; #X connect 0 11 2 11; #X connect 0 12 2 12; #X connect 0 13 2 13; #X connect 0 14 2 14; #X connect 0 15 2 15; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 8 0 12 0; #X connect 9 0 1 0; #X connect 9 0 1 1; #X connect 9 0 2 0; #X connect 12 0 11 0; #X connect 13 0 12 0; #X connect 14 0 15 0; #X connect 15 0 11 0; #X connect 16 0 14 0; #X connect 17 0 20 0; #X connect 18 0 20 0; #X connect 20 0 11 0; #X connect 22 0 14 0; #X connect 23 0 8 0; #X connect 25 0 31 0; #X connect 26 0 27 0; #X connect 27 0 11 0; #X connect 29 0 30 0; #X connect 30 0 11 0; #X connect 31 0 11 0; #X connect 36 0 11 0;