From 499bde0d84522a4f0a22657d919388722af6be93 Mon Sep 17 00:00:00 2001 From: alban Date: Wed, 11 Nov 2020 22:14:38 +0100 Subject: [PATCH] [wip] Revamps in progress --- exports/toNull.py | 2 +- exports/toRedis.py | 2 +- exports/toUDP.py | 2 +- filters/anaglyph.py | 2 +- filters/colorcycle.py | 2 +- filters/kaleidoscope.py | 2 +- filters/redilysis.py | 2 +- filters/redilysis_colors.py | 2 +- generators/159.gml | 2407 ------------------------- generators/160.gml | 2791 ----------------------------- generators/README.md | 17 + generators/blank.py | 44 +- generators/book2.ild | Bin 108656 -> 0 bytes generators/brmlab1.svg | 54 - generators/brmlab2.svg | 53 - generators/dummy.py | 32 +- generators/example.py | 182 -- generators/fromGML.py | 2 +- generators/fromOSC.py | 2 +- generators/fromRedis.py | 2 +- generators/fromilda.py | 2 +- generators/osc2redis.py | 11 +- generators/redilysis_lines.py | 2 +- generators/redilysis_particles.py | 2 +- generators/redilysis_shape.py | 2 +- generators/text.py | 2 +- generators/trckr.py | 2 +- generators/tunnel.py | 2 +- generators/turtle.py | 2 +- generators/turtle1.py | 19 - {generators => lib}/OSC3.py | 0 lib/clitools.py | 32 + runner_lib.py => lib/runner.py | 0 runner.py | 2 +- runner_midi.py | 2 +- 35 files changed, 113 insertions(+), 5571 deletions(-) delete mode 100755 generators/159.gml delete mode 100755 generators/160.gml create mode 100644 generators/README.md delete mode 100755 generators/book2.ild delete mode 100755 generators/brmlab1.svg delete mode 100755 generators/brmlab2.svg delete mode 100755 generators/example.py delete mode 100644 generators/turtle1.py rename {generators => lib}/OSC3.py (100%) create mode 100644 lib/clitools.py rename runner_lib.py => lib/runner.py (100%) diff --git a/exports/toNull.py b/exports/toNull.py index 08b4dfc..a98955a 100755 --- a/exports/toNull.py +++ b/exports/toNull.py @@ -10,7 +10,7 @@ v0.1.0 A basic exporter -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/exports/toRedis.py b/exports/toRedis.py index 36381b8..71eacb3 100644 --- a/exports/toRedis.py +++ b/exports/toRedis.py @@ -10,7 +10,7 @@ v0.1.0 A basic exporter -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/exports/toUDP.py b/exports/toUDP.py index 64787db..29101f5 100644 --- a/exports/toUDP.py +++ b/exports/toUDP.py @@ -10,7 +10,7 @@ v0.1.0 A basic exporter -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/filters/anaglyph.py b/filters/anaglyph.py index 12d2203..dee5141 100755 --- a/filters/anaglyph.py +++ b/filters/anaglyph.py @@ -10,7 +10,7 @@ v0.1.0 Attempts to create a valid 3D-glasses structure -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/filters/colorcycle.py b/filters/colorcycle.py index e293336..00c2e68 100755 --- a/filters/colorcycle.py +++ b/filters/colorcycle.py @@ -10,7 +10,7 @@ v0.1.0 A simple effect : cycle colors -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/filters/kaleidoscope.py b/filters/kaleidoscope.py index 8f874b3..0ae3c4d 100755 --- a/filters/kaleidoscope.py +++ b/filters/kaleidoscope.py @@ -10,7 +10,7 @@ v0.1.0 A simple effect : mirror a quadrant of the input -LICENCE : CC +Licensed under GNU GPLv3 by Sam Neurohack diff --git a/filters/redilysis.py b/filters/redilysis.py index 00cd61a..edb9f0a 100755 --- a/filters/redilysis.py +++ b/filters/redilysis.py @@ -13,7 +13,7 @@ A complex effect that depends on redis keys for audio analysis see https://git.interhacker.space/teamlase/redilysis for more informations about the redilysis project -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/filters/redilysis_colors.py b/filters/redilysis_colors.py index 2b4abc1..9092431 100755 --- a/filters/redilysis_colors.py +++ b/filters/redilysis_colors.py @@ -13,7 +13,7 @@ A complex effect that depends on redis keys for audio analysis see https://git.interhacker.space/teamlase/redilysis for more informations about the redilysis project -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/generators/159.gml b/generators/159.gml deleted file mode 100755 index c121f21..0000000 --- a/generators/159.gml +++ /dev/null @@ -1,2407 +0,0 @@ - - -
- - katsu - -
- - - 117.000000 - -77.000000 - 0.810000 - - - 0.000000 - 0.000000 - 0.000000 - - - - - - 0.237305 - 0.406250 - 0.000000 - - - - 0.238266 - 0.403367 - 1.400000 - - - - 0.239250 - 0.399071 - 3.300000 - - - - 0.238950 - 0.393930 - 4.800000 - - - - 0.237823 - 0.387477 - 6.700000 - - - - 0.236545 - 0.380665 - 8.100000 - - - - 0.234818 - 0.372415 - 10.000000 - - - - 0.232324 - 0.363344 - 11.400000 - - - - 0.229294 - 0.353159 - 13.400000 - - - - 0.227202 - 0.345460 - 14.800000 - - - - 0.225002 - 0.338646 - 16.600000 - - - - 0.221592 - 0.334011 - 18.100000 - - - - 0.217400 - 0.330838 - 20.100000 - - - - 0.214784 - 0.331250 - 21.400000 - - - - 0.213434 - 0.333180 - 23.299999 - - - - 0.214631 - 0.333387 - 24.700001 - - - - 0.217572 - 0.333613 - 26.600000 - - - - 0.221165 - 0.337621 - 28.000000 - - - - 0.226135 - 0.344309 - 29.900000 - - - - 0.233033 - 0.350578 - 31.400000 - - - - 0.242032 - 0.357017 - 33.299999 - - - - 0.250983 - 0.362042 - 34.700001 - - - - 0.260938 - 0.366166 - 36.599998 - - - - 0.269995 - 0.367181 - 38.099998 - - - - 0.279334 - 0.366333 - 39.900002 - - - - 0.286610 - 0.364380 - 41.400002 - - - - 0.292839 - 0.361992 - 43.200001 - - - - 0.295499 - 0.360920 - 44.700001 - - - - 0.296439 - 0.361083 - 46.599998 - - - - 0.296743 - 0.363428 - 48.000000 - - - - 0.296226 - 0.366788 - 49.900002 - - - - 0.293507 - 0.368321 - 51.299999 - - - - 0.289128 - 0.370038 - 53.299999 - - - - 0.284667 - 0.375439 - 54.700001 - - - - 0.279292 - 0.383830 - 56.599998 - - - - 0.272978 - 0.392327 - 58.000000 - - - - 0.264724 - 0.402094 - 59.900002 - - - - 0.254888 - 0.412061 - 61.299999 - - - - 0.242979 - 0.421866 - 63.200001 - - - - 0.232024 - 0.425413 - 64.599998 - - - - 0.220943 - 0.425049 - 66.500000 - - - - 0.213157 - 0.421471 - 68.000000 - - - - 0.206600 - 0.415554 - 69.900002 - - - - 0.202100 - 0.408913 - 71.300003 - - - - 0.198550 - 0.402056 - 73.199997 - - - - 0.196690 - 0.396906 - 74.599998 - - - - 0.194517 - 0.386215 - 76.500000 - - - - 0.192082 - 0.372647 - 78.000000 - - - - 0.191367 - 0.363967 - 79.900002 - - - - 0.192626 - 0.350222 - 81.300003 - - - - 0.195742 - 0.331501 - 83.199997 - - - - 0.201127 - 0.314455 - 84.599998 - - - - 0.208935 - 0.298130 - 86.500000 - - - - 0.218118 - 0.289324 - 87.900002 - - - - 0.227836 - 0.284232 - 89.800003 - - - - 0.233098 - 0.282664 - 91.199997 - - - - 0.239028 - 0.283907 - 93.199997 - - - - 0.246120 - 0.286885 - 94.599998 - - - - 0.251493 - 0.290493 - 96.500000 - - - - 0.255933 - 0.294309 - 97.900002 - - - - 0.257817 - 0.296784 - 99.800003 - - - - 0.258481 - 0.300957 - 101.199997 - - - - 0.258513 - 0.306063 - 103.099998 - - - - 0.257754 - 0.308355 - 104.599998 - - - - 0.256641 - 0.308205 - 106.400002 - - - - 0.256132 - 0.304081 - 107.900002 - - - - 0.255947 - 0.298122 - 109.800003 - - - - 0.255520 - 0.294058 - 111.199997 - - - - 0.253853 - 0.287026 - 112.900002 - - - - 0.251582 - 0.276624 - 114.800003 - - - - 0.250550 - 0.264782 - 116.199997 - - - - 0.250176 - 0.252431 - 117.900002 - - - - 0.251030 - 0.243700 - 119.800003 - - - - 0.255387 - 0.226922 - 121.300003 - - - - 0.263554 - 0.202966 - 123.099998 - - - - 0.275911 - 0.180318 - 124.599998 - - - - 0.292870 - 0.157185 - 126.400002 - - - - 0.311563 - 0.140687 - 127.900002 - - - - 0.330837 - 0.127536 - 129.600006 - - - - 0.342601 - 0.121198 - 131.399994 - - - - 0.360462 - 0.115677 - 132.899994 - - - - 0.385381 - 0.110322 - 134.699997 - - - - 0.410884 - 0.108722 - 136.199997 - - - - 0.436238 - 0.108989 - 137.899994 - - - - 0.452571 - 0.111970 - 139.699997 - - - - 0.480148 - 0.124429 - 141.199997 - - - - 0.517819 - 0.145000 - 143.100006 - - - - 0.550556 - 0.168666 - 144.500000 - - - - 0.581781 - 0.196913 - 146.399994 - - - - 0.601696 - 0.223718 - 147.800003 - - - - 0.616049 - 0.249516 - 149.600006 - - - - 0.622164 - 0.264828 - 151.399994 - - - - 0.625057 - 0.287230 - 152.899994 - - - - 0.625694 - 0.316760 - 154.699997 - - - - 0.621193 - 0.341844 - 156.100006 - - - - 0.614264 - 0.364259 - 157.800003 - - - - 0.609128 - 0.376585 - 159.699997 - - - - 0.599180 - 0.392089 - 161.100006 - - - - 0.585311 - 0.411216 - 163.000000 - - - - 0.573383 - 0.425426 - 164.500000 - - - - 0.563464 - 0.436341 - 166.399994 - - - - 0.562424 - 0.438469 - 167.800003 - - - - 0.565697 - 0.436409 - 169.600006 - - - - 0.568010 - 0.434087 - 171.300003 - - - - 0.571403 - 0.428415 - 172.800003 - - - - 0.575579 - 0.419926 - 174.699997 - - - - 0.578187 - 0.411397 - 176.100006 - - - - 0.579963 - 0.403025 - 177.699997 - - - - 0.579101 - 0.397602 - 179.699997 - - - - 0.572211 - 0.388333 - 181.100006 - - - - 0.560337 - 0.376165 - 183.000000 - - - - 0.546285 - 0.367486 - 184.399994 - - - - 0.529320 - 0.361160 - 186.300003 - - - - 0.513171 - 0.360249 - 187.800003 - - - - 0.497612 - 0.361897 - 189.600006 - - - - 0.489072 - 0.362779 - 191.300003 - - - - 0.478694 - 0.363116 - 192.800003 - - - - 0.466592 - 0.365000 - 194.600006 - - - - 0.459726 - 0.373001 - 196.100006 - - - - 0.455583 - 0.383964 - 197.699997 - - - - 0.455467 - 0.389494 - 199.600006 - - - - 0.461772 - 0.393773 - 201.099991 - - - - 0.472622 - 0.397396 - 202.899994 - - - - 0.484001 - 0.397476 - 204.399994 - - - - 0.495359 - 0.395824 - 206.300003 - - - - 0.500694 - 0.396154 - 207.699997 - - - - 0.504116 - 0.401060 - 209.500000 - - - - 0.507142 - 0.407704 - 211.300003 - - - - 0.509173 - 0.409010 - 212.800003 - - - - 0.510549 - 0.408760 - 214.600006 - - - - 0.510377 - 0.413436 - 216.000000 - - - - 0.509656 - 0.423175 - 217.699997 - - - - 0.510039 - 0.437761 - 219.600006 - - - - 0.511007 - 0.454457 - 221.000000 - - - - 0.512445 - 0.465432 - 223.000000 - - - - 0.517009 - 0.484037 - 224.399994 - - - - 0.523108 - 0.506813 - 226.199997 - - - - 0.526299 - 0.519175 - 227.699997 - - - - 0.529222 - 0.532477 - 229.500000 - - - - 0.532194 - 0.546901 - 231.199997 - - - - 0.533497 - 0.553280 - 232.699997 - - - - 0.532559 - 0.554776 - 234.500000 - - - - 0.526393 - 0.551951 - 236.000000 - - - - 0.515800 - 0.545929 - 237.600006 - - - - 0.503077 - 0.537723 - 239.500000 - - - - 0.489564 - 0.528625 - 241.000000 - - - - 0.480308 - 0.523430 - 242.899994 - - - - 0.463340 - 0.516762 - 244.300003 - - - - 0.442252 - 0.509113 - 246.100006 - - - - 0.429044 - 0.505096 - 247.800003 - - - - 0.408866 - 0.501124 - 249.399994 - - - - 0.382391 - 0.497741 - 251.199997 - - - - 0.361137 - 0.499471 - 252.800003 - - - - 0.341117 - 0.505065 - 254.500000 - - - - 0.325356 - 0.513125 - 256.000000 - - - - 0.310059 - 0.523336 - 257.799988 - - - - 0.297048 - 0.532576 - 259.200012 - - - - 0.285151 - 0.541197 - 260.899994 - - - - 0.279039 - 0.544930 - 262.799988 - - - - 0.272821 - 0.546257 - 264.299988 - - - - 0.266187 - 0.546688 - 266.000000 - - - - 0.262526 - 0.545294 - 267.799988 - - - - 0.258181 - 0.538467 - 269.399994 - - - - 0.252331 - 0.527450 - 271.100006 - - - - 0.245771 - 0.516021 - 272.700012 - - - - 0.237181 - 0.502877 - 274.399994 - - - - 0.226215 - 0.489939 - 276.000000 - - - - 0.212237 - 0.476052 - 277.799988 - - - - 0.198120 - 0.465278 - 279.200012 - - - - 0.183146 - 0.455572 - 280.899994 - - - - 0.172635 - 0.449194 - 282.799988 - - - - 0.164410 - 0.444415 - 284.200012 - - - - 0.160954 - 0.442424 - 286.000000 - - - - 0.159557 - 0.441727 - 287.799988 - - - - 0.158342 - 0.441503 - 289.299988 - - - - 0.157638 - 0.441801 - 291.100006 - - - - 0.159560 - 0.443429 - 292.700012 - - - - 0.164166 - 0.445872 - 294.399994 - - - - 0.171964 - 0.447725 - 295.899994 - - - - 0.183510 - 0.449047 - 297.799988 - - - - 0.198072 - 0.448860 - 299.200012 - - - - 0.216656 - 0.446182 - 300.799988 - - - - 0.236024 - 0.437773 - 302.700012 - - - - 0.255533 - 0.426657 - 304.200012 - - - - 0.264077 - 0.421624 - 305.899994 - - - - 0.270242 - 0.416507 - 307.700012 - - - - 0.285242 - 0.401079 - 309.299988 - - - - 0.306944 - 0.377572 - 311.000000 - - - - 0.325403 - 0.355063 - 312.700012 - - - - 0.342980 - 0.330997 - 314.299988 - - - - 0.355254 - 0.310116 - 315.899994 - - - - 0.365175 - 0.288973 - 317.700012 - - - - 0.370345 - 0.271894 - 319.200012 - - - - 0.372310 - 0.256070 - 321.000000 - - - - 0.369063 - 0.246051 - 322.399994 - - - - 0.362007 - 0.238857 - 324.200012 - - - - 0.353067 - 0.235886 - 325.899994 - - - - 0.342262 - 0.235644 - 327.700012 - - - - 0.332780 - 0.238882 - 329.200012 - - - - 0.323099 - 0.245278 - 331.000000 - - - - 0.314945 - 0.254620 - 332.600006 - - - - 0.307750 - 0.266582 - 334.299988 - - - - 0.305395 - 0.277350 - 335.899994 - - - - 0.306559 - 0.288579 - 337.700012 - - - - 0.311927 - 0.298402 - 339.200012 - - - - 0.321557 - 0.307862 - 341.000000 - - - - 0.335558 - 0.313442 - 342.399994 - - - - 0.353981 - 0.316924 - 344.100006 - - - - 0.372326 - 0.317582 - 345.799988 - - - - 0.392738 - 0.316352 - 347.700012 - - - - 0.411319 - 0.313254 - 349.200012 - - - - 0.430198 - 0.308730 - 351.000000 - - - - 0.443847 - 0.304220 - 352.500000 - - - - 0.455290 - 0.300051 - 354.299988 - - - - 0.461868 - 0.299224 - 355.899994 - - - - 0.465540 - 0.300232 - 357.600006 - - - - 0.464523 - 0.301520 - 359.200012 - - - - 0.460185 - 0.303992 - 361.000000 - - - - 0.453440 - 0.309787 - 362.399994 - - - - 0.444113 - 0.319305 - 364.299988 - - - - 0.433524 - 0.332246 - 365.700012 - - - - 0.421915 - 0.346667 - 367.600006 - - - - 0.414575 - 0.353069 - 369.100006 - - - - 0.409007 - 0.357931 - 371.000000 - - - - 0.404972 - 0.370217 - 372.500000 - - - - 0.402204 - 0.385333 - 374.200012 - - - - 0.403513 - 0.388217 - 375.899994 - - - - 0.406782 - 0.383831 - 377.600006 - - - - 0.408335 - 0.377552 - 379.100006 - - - - 0.408907 - 0.369803 - 380.899994 - - - - 0.409096 - 0.362416 - 382.299988 - - - - 0.408545 - 0.355666 - 384.200012 - - - - 0.405816 - 0.354217 - 385.700012 - - - - 0.401068 - 0.355807 - 387.600006 - - - - 0.394958 - 0.358402 - 389.100006 - - - - 0.386951 - 0.361858 - 390.899994 - - - - 0.377958 - 0.365621 - 392.500000 - - - - 0.367797 - 0.369911 - 394.200012 - - - - 0.360106 - 0.373530 - 395.799988 - - - - 0.353720 - 0.376353 - 397.500000 - - - - 0.351009 - 0.375830 - 399.100006 - - - - 0.350846 - 0.372523 - 400.899963 - - - - 0.354108 - 0.366263 - 402.400024 - - - - 0.359899 - 0.357724 - 404.199982 - - - - 0.366497 - 0.349940 - 405.600037 - - - - 0.374134 - 0.342065 - 407.499969 - - - - 0.380713 - 0.336173 - 409.100006 - - - - 0.386883 - 0.331278 - 410.899994 - - - - 0.390289 - 0.329198 - 412.500000 - - - - 0.391362 - 0.328892 - 414.200012 - - - - 0.387780 - 0.330577 - 415.799988 - - - - 0.379452 - 0.335101 - 417.500000 - - - - 0.365258 - 0.345071 - 419.200012 - - - - 0.345925 - 0.359539 - 420.799988 - - - - 0.327136 - 0.373961 - 422.299988 - - - - 0.305583 - 0.391195 - 424.200012 - - - - 0.282553 - 0.411361 - 425.600006 - - - - 0.257187 - 0.434770 - 427.500000 - - - - 0.238864 - 0.453028 - 429.000000 - - - - 0.223230 - 0.469666 - 430.799988 - - - - 0.212653 - 0.481482 - 432.399994 - - - - 0.204680 - 0.490439 - 434.100006 - - - - 0.202330 - 0.491983 - 435.700012 - - - - 0.203973 - 0.488410 - 437.500000 - - - - 0.210313 - 0.480180 - 439.100006 - - - - 0.220521 - 0.468781 - 440.799988 - - - - 0.232309 - 0.458956 - 442.200012 - - - - 0.245988 - 0.449142 - 444.100006 - - - - 0.257461 - 0.440942 - 445.600006 - - - - 0.268508 - 0.433367 - 447.399994 - - - - 0.276488 - 0.429358 - 448.899994 - - - - 0.282595 - 0.427889 - 450.799988 - - - - 0.283685 - 0.430579 - 452.299988 - - - - 0.281773 - 0.436715 - 454.100006 - - - - 0.278308 - 0.445719 - 455.700012 - - - - 0.273276 - 0.458077 - 457.500000 - - - - 0.267071 - 0.472238 - 458.899994 - - - - 0.259583 - 0.488495 - 460.700012 - - - - 0.253053 - 0.501354 - 462.200012 - - - - 0.246716 - 0.512565 - 464.100006 - - - - 0.242491 - 0.518100 - 465.600006 - - - - 0.240103 - 0.519739 - 467.399994 - - - - 0.242347 - 0.515574 - 468.799988 - - - - 0.247951 - 0.507164 - 470.700012 - - - - 0.255252 - 0.496871 - 472.299988 - - - - 0.265144 - 0.483949 - 474.100006 - - - - 0.277446 - 0.470320 - 475.700012 - - - - 0.292135 - 0.455340 - 477.399994 - - - - 0.304081 - 0.444064 - 478.799988 - - - - 0.315483 - 0.434723 - 480.700012 - - - - 0.324345 - 0.430757 - 482.100006 - - - - 0.331603 - 0.429969 - 484.000000 - - - - 0.333213 - 0.432263 - 485.500000 - - - - 0.331672 - 0.437245 - 487.399994 - - - - 0.329092 - 0.444963 - 488.799988 - - - - 0.324664 - 0.456201 - 490.700012 - - - - 0.316508 - 0.470615 - 492.200012 - - - - 0.305199 - 0.488167 - 494.000000 - - - - 0.294439 - 0.503123 - 495.600006 - - - - 0.283174 - 0.517742 - 497.399994 - - - - 0.274307 - 0.528757 - 498.799988 - - - - 0.266672 - 0.537988 - 500.700012 - - - - 0.263409 - 0.541916 - 502.100006 - - - - 0.262681 - 0.543120 - 504.000000 - - - - 0.264231 - 0.542744 - 505.399994 - - - - 0.268529 - 0.539429 - 507.399994 - - - - 0.277662 - 0.528517 - 508.700012 - - - - 0.290994 - 0.510818 - 510.600006 - - - - 0.304901 - 0.489955 - 512.099976 - - - - 0.319566 - 0.467018 - 514.000000 - - - - 0.328959 - 0.453192 - 515.599976 - - - - 0.336279 - 0.444050 - 517.299988 - - - - 0.341794 - 0.440344 - 518.799988 - - - - 0.347328 - 0.439062 - 520.599976 - - - - 0.352925 - 0.438652 - 522.099976 - - - - 0.358917 - 0.438528 - 523.900024 - - - - 0.363028 - 0.438491 - 525.400024 - - - - 0.366784 - 0.438481 - 527.400024 - - - - 0.370847 - 0.438478 - 528.900024 - - - - 0.375878 - 0.439026 - 530.599976 - - - - 0.381314 - 0.441498 - 532.000000 - - - - 0.386464 - 0.444897 - 533.900024 - - - - 0.386990 - 0.446442 - 535.500000 - - - - 0.384857 - 0.447978 - 537.299988 - - - - 0.382292 - 0.452556 - 538.900024 - - - - 0.378701 - 0.460060 - 540.500000 - - - - 0.373160 - 0.469140 - 542.099976 - - - - 0.365731 - 0.479986 - 543.900024 - - - - 0.358456 - 0.489480 - 545.299988 - - - - 0.351377 - 0.498188 - 547.200012 - - - - 0.348293 - 0.501949 - 548.700012 - - - - 0.347986 - 0.501881 - 550.599976 - - - - 0.351199 - 0.495997 - 552.000000 - - - - 0.357159 - 0.485918 - 553.900024 - - - - 0.364576 - 0.475143 - 555.400024 - - - - 0.373101 - 0.463488 - 557.200012 - - - - 0.379096 - 0.455161 - 558.700012 - - - - 0.384186 - 0.448551 - 560.599976 - - - - 0.388065 - 0.445767 - 562.000000 - - - - 0.391945 - 0.444605 - 563.900024 - - - - 0.395839 - 0.443465 - 565.299988 - - - - 0.400169 - 0.442419 - 567.200012 - - - - 0.403799 - 0.442699 - 568.599976 - - - - 0.407846 - 0.444004 - 570.599976 - - - - 0.412816 - 0.446104 - 572.000000 - - - - 0.419199 - 0.449147 - 573.900024 - - - - 0.425986 - 0.452979 - 575.299988 - - - - 0.432459 - 0.457329 - 577.200012 - - - - 0.433563 - 0.459997 - 578.599976 - - - - 0.431635 - 0.462402 - 580.500000 - - - - 0.429137 - 0.465879 - 582.000000 - - - - 0.425567 - 0.471068 - 583.799988 - - - - 0.420032 - 0.478084 - 585.299988 - - - - 0.412971 - 0.487249 - 587.200012 - - - - 0.407346 - 0.496765 - 588.599976 - - - - 0.402533 - 0.506320 - 590.500000 - - - - 0.400478 - 0.510503 - 591.900024 - - - - 0.400361 - 0.511448 - 593.799988 - - - - 0.402873 - 0.509462 - 595.200012 - - - - 0.407921 - 0.504809 - 597.099976 - - - - 0.415658 - 0.496991 - 598.599976 - - - - 0.425742 - 0.486598 - 600.500000 - - - - 0.434939 - 0.477252 - 601.900024 - - - - 0.444523 - 0.468223 - 603.799988 - - - - 0.452646 - 0.462828 - 605.299988 - - - - 0.459832 - 0.459413 - 607.099976 - - - - 0.462184 - 0.458776 - 608.599976 - - - - 0.461997 - 0.460562 - 610.400024 - - - - 0.461023 - 0.466134 - 611.900024 - - - - 0.459022 - 0.476376 - 613.900024 - - - - 0.454908 - 0.492869 - 615.200012 - - - - 0.449254 - 0.515733 - 617.099976 - - - - 0.444486 - 0.540295 - 618.599976 - - - - 0.440625 - 0.567259 - 620.400024 - - - - 0.440457 - 0.587020 - 621.900024 - - - - 0.443666 - 0.604370 - 623.799988 - - - - 0.451628 - 0.617181 - 625.200012 - - - - 0.463893 - 0.627507 - 627.099976 - - - - 0.478073 - 0.630404 - 628.599976 - - - - 0.495688 - 0.626996 - 630.599976 - - - - 0.514596 - 0.614125 - 631.799988 - - - - 0.536437 - 0.592826 - 633.799988 - - - - 0.556186 - 0.566624 - 635.200012 - - - - 0.574705 - 0.538497 - 637.099976 - - - - 0.584683 - 0.521737 - 638.500000 - - - - 0.596327 - 0.497782 - 640.400024 - - - - 0.609338 - 0.469517 - 641.900024 - - - - 0.616886 - 0.450656 - 643.700012 - - - - 0.626927 - 0.418090 - 645.200012 - - - - 0.638739 - 0.374543 - 647.099976 - - - - 0.644749 - 0.340645 - 648.500000 - - - - 0.647749 - 0.312258 - 650.400024 - - - - 0.648873 - 0.300183 - 651.799988 - - - - 0.649248 - 0.295919 - 653.700012 - - - - 0.649365 - 0.294543 - 655.099976 - - - - 0.649400 - 0.294121 - 657.000000 - - - - 0.649410 - 0.293995 - 658.500000 - - - - -
-
diff --git a/generators/160.gml b/generators/160.gml deleted file mode 100755 index ec75b4d..0000000 --- a/generators/160.gml +++ /dev/null @@ -1,2791 +0,0 @@ - - -
- - katsu-2f - -
- - - -390.000000 - -32.000000 - 0.419999 - - - 27.000000 - 1.000000 - 0.000000 - - - - - - 0.147498 - 0.219538 - 0.000000 - - - - 0.147101 - 0.212942 - 4.800000 - - - - 0.146946 - 0.207503 - 8.100000 - - - - 0.146896 - 0.203511 - 11.700000 - - - - 0.146724 - 0.200267 - 14.900000 - - - - 0.145868 - 0.198226 - 21.400000 - - - - 0.144555 - 0.198876 - 37.400002 - - - - 0.144007 - 0.204583 - 40.700001 - - - - 0.143825 - 0.218993 - 43.799999 - - - - 0.144083 - 0.244724 - 46.799999 - - - - 0.145928 - 0.283239 - 50.000000 - - - - 0.149557 - 0.334128 - 55.200001 - - - - 0.153129 - 0.393071 - 58.299999 - - - - 0.157055 - 0.452832 - 61.500000 - - - - 0.160675 - 0.504902 - 64.699997 - - - - 0.162888 - 0.543471 - 68.000000 - - - - 0.164641 - 0.566973 - 70.800003 - - - - 0.165319 - 0.577339 - 74.099998 - - - - 0.165380 - 0.577548 - 77.500000 - - - - 0.164436 - 0.569779 - 80.699997 - - - - 0.162290 - 0.551430 - 83.800003 - - - - 0.160746 - 0.519498 - 86.900002 - - - - 0.162346 - 0.474171 - 90.099998 - - - - 0.168769 - 0.419902 - 95.099998 - - - - 0.179235 - 0.363529 - 96.599998 - - - - 0.191592 - 0.310718 - 101.600006 - - - - 0.203349 - 0.266803 - 104.599998 - - - - 0.212709 - 0.234213 - 107.800003 - - - - 0.221958 - 0.211743 - 111.099998 - - - - 0.230964 - 0.197793 - 114.500000 - - - - 0.238148 - 0.190139 - 117.699997 - - - - 0.241712 - 0.187392 - 121.199997 - - - - 0.241863 - 0.188725 - 127.599998 - - - - 0.238471 - 0.193682 - 131.100006 - - - - 0.230219 - 0.204596 - 134.399994 - - - - 0.215112 - 0.223009 - 137.600006 - - - - 0.190758 - 0.248874 - 140.899994 - - - - 0.160085 - 0.277562 - 144.000000 - - - - 0.137657 - 0.299022 - 147.199997 - - - - 0.128785 - 0.309744 - 150.600006 - - - - 0.133414 - 0.311778 - 154.100006 - - - - 0.155941 - 0.309188 - 157.199997 - - - - 0.193346 - 0.305108 - 160.500000 - - - - 0.228740 - 0.299964 - 163.800003 - - - - 0.253422 - 0.295978 - 167.199997 - - - - 0.264634 - 0.294442 - 170.399994 - - - - 0.266414 - 0.294263 - 175.100006 - - - - 0.263061 - 0.296915 - 178.300003 - - - - 0.252713 - 0.307180 - 188.000000 - - - - 0.232599 - 0.328229 - 191.399994 - - - - 0.204065 - 0.355782 - 194.500000 - - - - 0.172543 - 0.382441 - 197.800003 - - - - 0.149473 - 0.403684 - 201.000000 - - - - 0.140979 - 0.415348 - 204.199997 - - - - 0.147685 - 0.417817 - 207.199997 - - - - 0.170972 - 0.415219 - 210.300003 - - - - 0.207678 - 0.410333 - 213.600006 - - - - 0.241156 - 0.403733 - 218.399994 - - - - 0.264855 - 0.398507 - 220.199997 - - - - 0.276658 - 0.396329 - 224.699997 - - - - 0.278753 - 0.396704 - 227.899994 - - - - 0.275512 - 0.399013 - 231.399994 - - - - 0.265043 - 0.409096 - 240.699997 - - - - 0.244400 - 0.431799 - 244.000000 - - - - 0.215947 - 0.461355 - 247.199997 - - - - 0.184644 - 0.490551 - 250.399994 - - - - 0.158855 - 0.515649 - 255.300003 - - - - 0.147252 - 0.530952 - 258.600006 - - - - 0.150665 - 0.537521 - 260.200012 - - - - 0.170124 - 0.539555 - 265.299988 - - - - 0.203710 - 0.539361 - 268.500000 - - - - 0.237539 - 0.538235 - 270.200012 - - - - 0.263426 - 0.537737 - 275.000000 - - - - 0.276508 - 0.537570 - 278.100006 - - - - 0.280789 - 0.537051 - 281.399994 - - - - 0.282061 - 0.533388 - 291.299988 - - - - 0.280388 - 0.521766 - 294.600006 - - - - 0.276759 - 0.498281 - 297.799988 - - - - 0.271772 - 0.458763 - 301.299988 - - - - 0.267678 - 0.405435 - 304.100006 - - - - 0.265460 - 0.349976 - 307.399994 - - - - 0.264354 - 0.299561 - 310.500000 - - - - 0.263968 - 0.259491 - 313.700012 - - - - 0.261974 - 0.226793 - 317.000000 - - - - 0.259377 - 0.203145 - 321.799988 - - - - 0.257215 - 0.188513 - 323.500000 - - - - 0.255590 - 0.179361 - 328.299988 - - - - 0.253874 - 0.172849 - 331.600006 - - - - 0.252245 - 0.170845 - 334.700012 - - - - 0.250191 - 0.177144 - 344.500000 - - - - 0.251849 - 0.191016 - 347.899994 - - - - 0.264729 - 0.207100 - 350.799988 - - - - 0.286535 - 0.215832 - 354.100006 - - - - 0.305704 - 0.211457 - 357.700012 - - - - 0.322146 - 0.198270 - 360.600006 - - - - 0.332962 - 0.184742 - 363.899994 - - - - 0.337163 - 0.177908 - 367.000000 - - - - 0.338044 - 0.180978 - 371.899994 - - - - 0.341200 - 0.195514 - 375.299988 - - - - 0.348981 - 0.221432 - 378.700012 - - - - 0.358888 - 0.249712 - 381.799988 - - - - 0.368269 - 0.268955 - 383.500000 - - - - 0.375277 - 0.277451 - 388.299988 - - - - 0.376711 - 0.274843 - 391.600006 - - - - 0.370444 - 0.264650 - 394.700012 - - - - 0.354739 - 0.251913 - 397.899994 - - - - 0.330954 - 0.239503 - 401.100037 - - - - 0.305098 - 0.234869 - 404.400024 - - - - 0.278715 - 0.242935 - 407.799988 - - - - 0.257355 - 0.258671 - 411.299988 - - - - 0.247030 - 0.276599 - 414.799988 - - - - 0.249702 - 0.292942 - 418.100006 - - - - 0.269077 - 0.306275 - 421.299988 - - - - 0.298912 - 0.313020 - 424.500000 - - - - 0.324806 - 0.311014 - 427.700012 - - - - 0.347155 - 0.301181 - 431.200012 - - - - 0.364667 - 0.289043 - 434.299988 - - - - 0.371274 - 0.284698 - 437.600006 - - - - 0.369309 - 0.291631 - 440.600006 - - - - 0.366688 - 0.310593 - 443.799988 - - - - 0.369982 - 0.336748 - 447.000000 - - - - 0.377064 - 0.359132 - 451.799988 - - - - 0.382586 - 0.371178 - 453.399994 - - - - 0.384248 - 0.372355 - 458.200012 - - - - 0.379720 - 0.364313 - 461.500000 - - - - 0.368068 - 0.349230 - 464.700012 - - - - 0.350863 - 0.332844 - 467.899994 - - - - 0.330266 - 0.323100 - 471.000000 - - - - 0.306545 - 0.322503 - 474.200012 - - - - 0.279713 - 0.334284 - 477.500000 - - - - 0.258044 - 0.354927 - 480.799988 - - - - 0.251509 - 0.375972 - 485.399994 - - - - 0.259964 - 0.394879 - 487.000000 - - - - 0.283940 - 0.408116 - 491.899994 - - - - 0.315556 - 0.415470 - 495.200012 - - - - 0.343272 - 0.413118 - 498.600006 - - - - 0.364788 - 0.402943 - 502.000000 - - - - 0.378398 - 0.391449 - 505.000000 - - - - 0.383290 - 0.386474 - 508.299988 - - - - 0.382467 - 0.390747 - 511.399994 - - - - 0.381383 - 0.405106 - 514.599976 - - - - 0.385468 - 0.429323 - 518.000000 - - - - 0.393922 - 0.458409 - 521.099976 - - - - 0.402835 - 0.479974 - 524.400024 - - - - 0.409548 - 0.489318 - 527.599976 - - - - 0.409624 - 0.485882 - 530.799988 - - - - 0.399947 - 0.472618 - 534.000000 - - - - 0.382151 - 0.456040 - 537.299988 - - - - 0.359939 - 0.441743 - 540.500000 - - - - 0.335052 - 0.437076 - 545.400024 - - - - 0.308402 - 0.446628 - 548.500000 - - - - 0.282966 - 0.466629 - 551.799988 - - - - 0.268008 - 0.490933 - 554.900024 - - - - 0.264737 - 0.518682 - 558.000000 - - - - 0.277294 - 0.545423 - 561.200012 - - - - 0.304358 - 0.563725 - 564.599976 - - - - 0.336221 - 0.565624 - 567.900024 - - - - 0.365144 - 0.554470 - 571.099976 - - - - 0.385629 - 0.537324 - 574.299988 - - - - 0.395120 - 0.520635 - 577.400024 - - - - 0.397741 - 0.509295 - 580.700012 - - - - 0.398446 - 0.504870 - 585.500000 - - - - 0.400507 - 0.501883 - 595.200012 - - - - 0.403275 - 0.494354 - 598.299988 - - - - 0.405980 - 0.476584 - 601.599976 - - - - 0.407215 - 0.447245 - 604.700012 - - - - 0.406229 - 0.409150 - 608.000000 - - - - 0.402911 - 0.365193 - 611.099976 - - - - 0.395999 - 0.320598 - 614.400024 - - - - 0.387898 - 0.283510 - 617.599976 - - - - 0.378035 - 0.255143 - 620.799988 - - - - 0.364471 - 0.234389 - 625.500000 - - - - 0.348860 - 0.220218 - 627.200012 - - - - 0.333607 - 0.213004 - 630.900024 - - - - 0.323149 - 0.210466 - 635.500000 - - - - 0.319674 - 0.209528 - 637.200012 - - - - 0.324884 - 0.208452 - 641.000000 - - - - 0.344589 - 0.207077 - 644.299988 - - - - 0.381633 - 0.206356 - 647.400024 - - - - 0.428256 - 0.205475 - 650.599976 - - - - 0.474102 - 0.204958 - 655.599976 - - - - 0.505527 - 0.205708 - 658.799988 - - - - 0.516439 - 0.205758 - 661.799988 - - - - 0.508215 - 0.203712 - 665.000000 - - - - 0.485687 - 0.198101 - 668.500000 - - - - 0.458773 - 0.190210 - 671.700012 - - - - 0.437007 - 0.182408 - 674.900024 - - - - 0.424183 - 0.176636 - 678.299988 - - - - 0.419345 - 0.173647 - 681.599976 - - - - 0.418746 - 0.173684 - 684.799988 - - - - 0.418562 - 0.176975 - 694.599976 - - - - 0.417728 - 0.184705 - 697.799988 - - - - 0.416737 - 0.200831 - 701.099976 - - - - 0.418364 - 0.231608 - 704.200012 - - - - 0.423521 - 0.276369 - 707.400024 - - - - 0.429823 - 0.327786 - 710.599976 - - - - 0.435994 - 0.385716 - 715.400024 - - - - 0.443300 - 0.443433 - 718.599976 - - - - 0.450654 - 0.494634 - 721.799988 - - - - 0.457348 - 0.534476 - 725.000000 - - - - 0.461711 - 0.558751 - 728.200012 - - - - 0.464278 - 0.568464 - 731.599976 - - - - 0.465058 - 0.568496 - 738.000000 - - - - 0.464499 - 0.562244 - 741.500000 - - - - 0.463116 - 0.550366 - 744.900024 - - - - 0.461115 - 0.531740 - 748.299988 - - - - 0.455752 - 0.504265 - 751.299988 - - - - 0.446720 - 0.470332 - 754.500000 - - - - 0.436830 - 0.434405 - 758.000000 - - - - 0.427988 - 0.400716 - 761.400024 - - - - 0.421847 - 0.373602 - 764.700012 - - - - 0.416401 - 0.354023 - 768.000000 - - - - 0.410507 - 0.340942 - 771.299988 - - - - 0.402502 - 0.332598 - 774.500000 - - - - 0.393569 - 0.327622 - 778.000000 - - - - 0.384325 - 0.325644 - 781.200012 - - - - 0.375299 - 0.324378 - 784.700012 - - - - 0.368262 - 0.323594 - 787.700012 - - - - 0.366172 - 0.323617 - 790.900024 - - - - 0.372145 - 0.323510 - 799.000000 - - - - 0.389782 - 0.324242 - 800.599976 - - - - 0.417888 - 0.323640 - 805.400024 - - - - 0.452310 - 0.321457 - 808.700012 - - - - 0.488739 - 0.318786 - 812.199951 - - - - 0.514817 - 0.316756 - 815.499939 - - - - 0.525668 - 0.316132 - 818.700073 - - - - 0.525497 - 0.316734 - 822.000000 - - - - 0.520815 - 0.318286 - 825.299988 - - - - 0.512779 - 0.321455 - 828.700012 - - - - 0.499554 - 0.330459 - 831.799988 - - - - 0.480254 - 0.346696 - 835.099976 - - - - 0.457230 - 0.366834 - 838.500000 - - - - 0.435334 - 0.385397 - 841.599976 - - - - 0.417258 - 0.398212 - 844.799988 - - - - 0.404593 - 0.407738 - 848.000000 - - - - 0.394486 - 0.414978 - 851.200012 - - - - 0.387133 - 0.420416 - 854.799988 - - - - 0.384329 - 0.423438 - 858.099976 - - - - 0.386247 - 0.424527 - 861.299988 - - - - 0.395220 - 0.424865 - 867.799988 - - - - 0.415724 - 0.424963 - 870.900024 - - - - 0.446690 - 0.424990 - 874.099976 - - - - 0.483037 - 0.425154 - 878.900024 - - - - 0.513626 - 0.426007 - 882.200012 - - - - 0.530573 - 0.427008 - 885.500000 - - - - 0.536514 - 0.425072 - 891.900024 - - - - 0.539590 - 0.417120 - 898.299988 - - - - 0.542084 - 0.400982 - 901.900024 - - - - 0.544145 - 0.375992 - 905.200012 - - - - 0.544324 - 0.343366 - 908.700012 - - - - 0.546176 - 0.307746 - 911.900024 - - - - 0.550750 - 0.274911 - 915.099976 - - - - 0.556467 - 0.247385 - 918.299988 - - - - 0.562560 - 0.226640 - 921.900024 - - - - 0.568610 - 0.213369 - 925.099976 - - - - 0.573840 - 0.206559 - 928.299988 - - - - 0.577922 - 0.204314 - 932.000000 - - - - 0.581998 - 0.204738 - 935.200012 - - - - 0.585659 - 0.207542 - 938.400024 - - - - 0.587884 - 0.210501 - 941.599976 - - - - 0.589484 - 0.210442 - 944.900024 - - - - 0.589155 - 0.206517 - 952.200012 - - - - 0.586739 - 0.198973 - 955.500000 - - - - 0.581450 - 0.189525 - 958.799988 - - - - 0.570753 - 0.180337 - 962.000000 - - - - 0.554798 - 0.175269 - 965.299988 - - - - 0.536278 - 0.176573 - 968.400024 - - - - 0.517960 - 0.185382 - 971.700012 - - - - 0.504393 - 0.202094 - 974.900024 - - - - 0.497798 - 0.226673 - 978.700012 - - - - 0.498790 - 0.251586 - 982.000000 - - - - 0.508159 - 0.266724 - 985.099976 - - - - 0.524045 - 0.272603 - 988.700012 - - - - 0.540881 - 0.268866 - 992.000000 - - - - 0.554694 - 0.257203 - 995.099976 - - - - 0.568662 - 0.241204 - 998.400024 - - - - 0.586445 - 0.224275 - 1001.599976 - - - - 0.607029 - 0.214020 - 1004.799988 - - - - 0.628998 - 0.214627 - 1008.099976 - - - - 0.649572 - 0.225100 - 1011.299988 - - - - 0.663201 - 0.244939 - 1014.599976 - - - - 0.665337 - 0.270374 - 1017.799988 - - - - 0.654835 - 0.294422 - 1021.000000 - - - - 0.636253 - 0.310065 - 1025.800049 - - - - 0.613572 - 0.316058 - 1029.000000 - - - - 0.592576 - 0.311410 - 1032.300049 - - - - 0.576137 - 0.297925 - 1035.599976 - - - - 0.566508 - 0.282871 - 1038.699951 - - - - 0.564403 - 0.274740 - 1041.900024 - - - - 0.570343 - 0.280583 - 1048.400024 - - - - 0.581247 - 0.298306 - 1051.599976 - - - - 0.591481 - 0.320678 - 1054.800049 - - - - 0.599135 - 0.340327 - 1058.000000 - - - - 0.604412 - 0.351957 - 1061.199951 - - - - 0.605622 - 0.351208 - 1064.400024 - - - - 0.602778 - 0.339352 - 1067.699951 - - - - 0.597219 - 0.322804 - 1070.900024 - - - - 0.586266 - 0.306888 - 1075.699951 - - - - 0.569584 - 0.293991 - 1077.500000 - - - - 0.550593 - 0.289608 - 1082.300049 - - - - 0.532725 - 0.297187 - 1085.500000 - - - - 0.517822 - 0.312066 - 1088.699951 - - - - 0.508728 - 0.331508 - 1091.900024 - - - - 0.508349 - 0.357325 - 1095.199951 - - - - 0.515664 - 0.380783 - 1098.300049 - - - - 0.528819 - 0.394893 - 1101.599976 - - - - 0.544529 - 0.398818 - 1104.800049 - - - - 0.557503 - 0.392380 - 1107.900024 - - - - 0.568650 - 0.379443 - 1111.099976 - - - - 0.581767 - 0.362380 - 1114.500000 - - - - 0.599613 - 0.344568 - 1117.699951 - - - - 0.618550 - 0.333499 - 1122.500000 - - - - 0.635398 - 0.332690 - 1126.099976 - - - - 0.651876 - 0.343348 - 1128.199951 - - - - 0.664543 - 0.362404 - 1132.000000 - - - - 0.669732 - 0.385758 - 1136.000000 - - - - 0.665965 - 0.407815 - 1138.000000 - - - - 0.655260 - 0.421885 - 1142.000000 - - - - 0.641100 - 0.426645 - 1145.900024 - - - - 0.623389 - 0.423083 - 1147.900024 - - - - 0.605345 - 0.412180 - 1151.900024 - - - - 0.591861 - 0.398389 - 1155.900024 - - - - 0.584977 - 0.387573 - 1159.900024 - - - - 0.583646 - 0.382926 - 1161.900024 - - - - 0.586361 - 0.386844 - 1165.900024 - - - - 0.592024 - 0.400871 - 1170.000000 - - - - 0.598187 - 0.422768 - 1172.099976 - - - - 0.602552 - 0.444890 - 1176.099976 - - - - 0.605770 - 0.459687 - 1180.000000 - - - - 0.607000 - 0.461333 - 1182.000000 - - - - 0.605205 - 0.452585 - 1186.000000 - - - - 0.600118 - 0.437472 - 1190.000000 - - - - 0.589793 - 0.419546 - 1192.000000 - - - - 0.576026 - 0.405203 - 1196.000000 - - - - 0.562378 - 0.399333 - 1200.099976 - - - - 0.546925 - 0.403189 - 1202.199951 - - - - 0.530029 - 0.416156 - 1206.199951 - - - - 0.517886 - 0.436955 - 1208.300049 - - - - 0.513735 - 0.464572 - 1212.400024 - - - - 0.517474 - 0.491428 - 1216.400024 - - - - 0.528895 - 0.509789 - 1218.500000 - - - - 0.545723 - 0.517334 - 1222.500000 - - - - 0.563818 - 0.513873 - 1226.500000 - - - - 0.580026 - 0.502408 - 1228.599976 - - - - 0.596883 - 0.485546 - 1232.800049 - - - - 0.617096 - 0.468063 - 1234.900024 - - - - 0.636912 - 0.456976 - 1239.099976 - - - - 0.653880 - 0.457392 - 1241.199951 - - - - 0.669432 - 0.470322 - 1245.300049 - - - - 0.679957 - 0.493150 - 1249.300049 - - - - 0.683290 - 0.520121 - 1251.500000 - - - - 0.678327 - 0.546741 - 1255.599976 - - - - 0.664051 - 0.567840 - 1259.800049 - - - - 0.641157 - 0.580379 - 1261.900024 - - - - 0.612037 - 0.582622 - 1266.099976 - - - - 0.583202 - 0.576130 - 1268.300049 - - - - 0.561058 - 0.562159 - 1272.500000 - - - - 0.550816 - 0.545103 - 1274.599976 - - - - 0.549971 - 0.530313 - 1278.900024 - - - - 0.552603 - 0.521073 - 1283.199951 - - - - 0.554454 - 0.518592 - 1285.400024 - - - - 0.557187 - 0.515750 - 1289.699951 - - - - 0.565511 - 0.504439 - 1295.599976 - - - - 0.581152 - 0.483085 - 1300.099976 - - - - 0.606212 - 0.451072 - 1302.599976 - - - - 0.633582 - 0.414297 - 1304.900024 - - - - 0.653239 - 0.379192 - 1309.199951 - - - - 0.665091 - 0.347578 - 1311.500000 - - - - 0.667723 - 0.320888 - 1315.800049 - - - - 0.665502 - 0.296552 - 1320.099976 - - - - 0.662496 - 0.273029 - 1322.300049 - - - - 0.659536 - 0.251629 - 1326.599976 - - - - 0.657260 - 0.233176 - 1328.800049 - - - - 0.655603 - 0.218285 - 1333.300049 - - - - 0.654033 - 0.205944 - 1335.500000 - - - - 0.653254 - 0.193948 - 1339.900024 - - - - 0.652200 - 0.184011 - 1342.099976 - - - - 0.650984 - 0.179514 - 1346.500000 - - - - 0.651583 - 0.182362 - 1348.800049 - - - - 0.654725 - 0.194181 - 1353.199951 - - - - 0.659547 - 0.217951 - 1355.500000 - - - - 0.663591 - 0.250556 - 1359.900024 - - - - 0.665951 - 0.280603 - 1362.099976 - - - - 0.667748 - 0.301399 - 1366.400024 - - - - 0.668439 - 0.313631 - 1368.599976 - - - - 0.669129 - 0.318251 - 1373.000000 - - - - 0.672842 - 0.318625 - 1375.199951 - - - - 0.684166 - 0.317937 - 1386.199951 - - - - 0.704545 - 0.317297 - 1388.500000 - - - - 0.732368 - 0.317199 - 1392.900024 - - - - 0.762776 - 0.316406 - 1395.099976 - - - - 0.786474 - 0.316835 - 1399.599976 - - - - 0.798431 - 0.317537 - 1401.800049 - - - - 0.800595 - 0.314393 - 1408.400024 - - - - 0.798315 - 0.303256 - 1412.900024 - - - - 0.794056 - 0.283246 - 1415.199951 - - - - 0.788816 - 0.257298 - 1419.599976 - - - - 0.782921 - 0.230216 - 1421.900024 - - - - 0.778655 - 0.207764 - 1426.400024 - - - - 0.775311 - 0.193858 - 1428.699951 - - - - 0.773238 - 0.190285 - 1433.199951 - - - - 0.773410 - 0.197498 - 1435.699951 - - - - 0.775310 - 0.216704 - 1439.300049 - - - - 0.777407 - 0.248267 - 1442.599976 - - - - 0.780755 - 0.289166 - 1445.900024 - - - - 0.789189 - 0.333961 - 1449.199951 - - - - 0.800941 - 0.377074 - 1452.500000 - - - - 0.809557 - 0.410329 - 1455.800049 - - - - 0.814410 - 0.432982 - 1459.099976 - - - - 0.816319 - 0.444169 - 1462.500000 - - - - 0.816154 - 0.447289 - 1465.900024 - - - - 0.816609 - 0.447197 - 1469.199951 - - - - 0.816510 - 0.446843 - 1475.800049 - - - - 0.812068 - 0.445907 - 1479.099976 - - - - 0.800386 - 0.444410 - 1482.400024 - - - - 0.780039 - 0.443002 - 1485.699951 - - - - 0.753186 - 0.441818 - 1489.099976 - - - - 0.724619 - 0.443230 - 1492.400024 - - - - 0.700763 - 0.447363 - 1495.800049 - - - - 0.685206 - 0.451027 - 1499.099976 - - - - 0.679398 - 0.452469 - 1502.500000 - - - - 0.678969 - 0.452466 - 1505.800049 - - - - 0.678285 - 0.449268 - 1509.100098 - - - - 0.675342 - 0.439860 - 1512.599976 - - - - 0.673114 - 0.423442 - 1515.899902 - - - - 0.671947 - 0.400587 - 1519.300049 - - - - 0.669814 - 0.374874 - 1522.699951 - - - - 0.666257 - 0.352257 - 1526.100098 - - - - 0.663825 - 0.339772 - 1529.499878 - - - - 0.663065 - 0.339035 - 1532.900024 - - - - 0.663938 - 0.349327 - 1536.300049 - - - - 0.667181 - 0.372746 - 1538.000000 - - - - 0.672035 - 0.406363 - 1542.999878 - - - - 0.676244 - 0.448289 - 1546.499878 - - - - 0.679614 - 0.494068 - 1548.199951 - - - - 0.683577 - 0.531947 - 1551.699951 - - - - 0.686129 - 0.560923 - 1555.099976 - - - - 0.687079 - 0.580349 - 1558.500000 - - - - 0.687379 - 0.590142 - 1561.900024 - - - - 0.687467 - 0.594358 - 1565.400024 - - - - 0.687493 - 0.597168 - 1579.099854 - - - - 0.687655 - 0.599945 - 1582.599854 - - - - 0.688820 - 0.601836 - 1586.000000 - - - - 0.693243 - 0.601767 - 1598.000000 - - - - 0.705331 - 0.600703 - 1603.099854 - - - - 0.727112 - 0.600228 - 1606.600220 - - - - 0.754746 - 0.600224 - 1608.400024 - - - - 0.786093 - 0.601027 - 1611.899902 - - - - 0.813192 - 0.602482 - 1615.499878 - - - - 0.830850 - 0.603878 - 1618.199951 - - - - 0.838535 - 0.605215 - 1622.900024 - - - - 0.840017 - 0.604340 - 1625.400146 - - - - 0.839206 - 0.598724 - 1637.400146 - - - - 0.835954 - 0.585459 - 1640.000244 - - - - 0.830625 - 0.564145 - 1642.500000 - - - - 0.823858 - 0.538030 - 1647.400024 - - - - 0.816393 - 0.510937 - 1649.900024 - - - - 0.809934 - 0.485051 - 1652.399780 - - - - 0.805526 - 0.467726 - 1657.300171 - - - - 0.803709 - 0.462162 - 1659.800049 - - - - 0.802018 - 0.463961 - 1667.199951 - - - - -
-
diff --git a/generators/README.md b/generators/README.md new file mode 100644 index 0000000..c9a2b57 --- /dev/null +++ b/generators/README.md @@ -0,0 +1,17 @@ +# Generators + +## Turtle + +``` +# turtle-example.py +from turtle import * + +pencolor((255,0,0)) + +for i in range(4): + forward(100) + right(90) + +done() +#EOF +``` \ No newline at end of file diff --git a/generators/blank.py b/generators/blank.py index 657bc5a..b34aead 100755 --- a/generators/blank.py +++ b/generators/blank.py @@ -8,46 +8,40 @@ Send only black points v0.1.0 -Use it to test your filters and outputs +Use it to stop showing anything i.e. visual silence -LICENCE : CC +Licensed under GNU GPLv3 by cocoa ''' -from __future__ import print_function -import time -import argparse import sys -name="generator::dummy" - - -def debug(*args, **kwargs): - if( verbose == False ): - return - print(*args, file=sys.stderr, **kwargs) +from os import path, getcwd +abspath, filename = path.split(path.realpath(__file__ )) +sys.path.insert(0, path.join(abspath,"../lib")) +from clitools import Clitools +import argparse argsparser = argparse.ArgumentParser(description="dummy generator") argsparser.add_argument("-f","--fps",help="Frame Per Second",default=30,type=int) argsparser.add_argument("-v","--verbose",action="store_true",help="Verbose output") args = argsparser.parse_args() -fps=args.fps -verbose=args.verbose -optimal_looptime = 1 / fps -debug(name+" optimal looptime "+str(optimal_looptime)) - - -shape = [[400,400,0],[400,400,64],[400,400,0]] +fps = args.fps +verbose = args.verbose +looptime = 1 / fps +shape = [[400,400,0],[400,400,4],[400,400,0]] +name = "generator::dummy" +cli = Clitools({ + "verbose" : verbose, + "looptime" : looptime, + "name" : name + }) while True: - start = time.time() + cli.startFrame() print(shape, flush=True); - looptime = time.time() - start - if( looptime < optimal_looptime ): - time.sleep( optimal_looptime - looptime) - debug(name+" micro sleep:"+str( optimal_looptime - looptime)) - + cli.endFrame() diff --git a/generators/book2.ild b/generators/book2.ild deleted file mode 100755 index 608803e131869c30b36433f50ff07d73582c2831..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108656 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 CWy#S1 diff --git a/generators/brmlab1.svg b/generators/brmlab1.svg deleted file mode 100755 index 05bf423..0000000 --- a/generators/brmlab1.svg +++ /dev/null @@ -1,54 +0,0 @@ - -image/svg+xml - - \ No newline at end of file diff --git a/generators/brmlab2.svg b/generators/brmlab2.svg deleted file mode 100755 index 5c3a447..0000000 --- a/generators/brmlab2.svg +++ /dev/null @@ -1,53 +0,0 @@ - -image/svg+xml - \ No newline at end of file diff --git a/generators/dummy.py b/generators/dummy.py index 8f7eb2c..fd12ed8 100755 --- a/generators/dummy.py +++ b/generators/dummy.py @@ -10,23 +10,22 @@ v0.1.0 Use it to test your filters and outputs -LICENCE : CC +Licensed under GNU GPLv3 by cocoa ''' -from __future__ import print_function -import time -import argparse import sys +from os import path, getcwd +abspath, filename = path.split(path.realpath(__file__ )) +sys.path.insert(0, path.join(abspath,"../lib")) +from clitools import Clitools + name="generator::dummy" -def debug(*args, **kwargs): - if( verbose == False ): - return - print(*args, file=sys.stderr, **kwargs) +import argparse argsparser = argparse.ArgumentParser(description="dummy generator") argsparser.add_argument("-f","--fps",help="Frame Per Second",default=30,type=int) @@ -37,7 +36,13 @@ args = argsparser.parse_args() fps=args.fps verbose=args.verbose optimal_looptime = 1 / fps -debug(name+" optimal looptime "+str(optimal_looptime)) +cli = Clitools({ + "verbose" : verbose, + "looptime" : looptime, + "name" : name + }) + + color = 16777215 square = [[100.0, 100.0, color], [100.0, 500.0, color], [500.0, 500.0, color], [500.0, 100.0, color], [100.0, 100.0, color]] line =[] @@ -75,11 +80,6 @@ shape = mire while True: - start = time.time() + cli.startFrame() print(shape, flush=True); - looptime = time.time() - start - if( looptime < optimal_looptime ): - time.sleep( optimal_looptime - looptime) - debug(name+" micro sleep:"+str( optimal_looptime - looptime)) - - + cli.endFrame() diff --git a/generators/example.py b/generators/example.py deleted file mode 100755 index b1ad01c..0000000 --- a/generators/example.py +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/python3 -# -*- coding: utf-8 -*- -# -*- mode: Python -*- - - -''' - -example, based on custom -v0.1.0 - -A copy of square.py you can modify to code your plugin. -custom1 has necessary hooks in LJ.conf, webui and so on. - - -LICENCE : CC - -by Sam Neurohack - - -''' -import sys -import os -ljpath = r'%s' % os.getcwd().replace('\\','/') - -# import from shell -sys.path.append(ljpath +'/../../libs/') - -#import from LJ -sys.path.append(ljpath +'/libs/') -print(ljpath+'/../libs/') - -import lj23layers as lj - -sys.path.append('../libs') -import math -import time -import argparse - - -print ("") -print ("Arguments parsing if needed...") -argsparser = argparse.ArgumentParser(description="Custom1 example for LJ") -argsparser.add_argument("-v","--verbose",help="Verbosity level (0 by default)",default=0,type=int) -args = argsparser.parse_args() - -# Useful variables init. -white = lj.rgb2int(255,255,255) -red = lj.rgb2int(255,0,0) -blue = lj.rgb2int(0,0,255) -green = lj.rgb2int(0,255,0) - -width = 800 -height = 600 -centerX = width / 2 -centerY = height / 2 - -# 3D to 2D projection parameters -fov = 256 -viewer_distance = 2.2 - -# Anaglyph computation parameters for right and left eyes. -# algorythm come from anaglyph geo maps -eye_spacing = 100 -nadir = 0.5 -observer_altitude = 30000 -map_layerane_altitude = 0.0 - -# square coordinates : vertices that compose each of the square. -vertices = [ - (- 1.0, 1.0,- 1.0), - ( 1.0, 1.0,- 1.0), - ( 1.0,- 1.0,- 1.0), - (- 1.0,- 1.0,- 1.0) - ] - -face = [0,1,2,3] - -# -# LJ inits -# - -layer = 0 - -# Define properties for each drawn "element" : name, intensity, active, xy, color, red, green, blue, layer , closed -Leftsquare = lj.FixedObject('Leftsquare', True, 255, [], red, 255, 0, 0, layer , True) -Rightsquare = lj.FixedObject('Rightsquare', True, 255, [], green, 0, 255, 0, layer , True) - -# 'Destination' for given layer : name, number, active, layer , scene, laser -Dest0 = lj.DestObject('0', 0, True, 0 , 0, 0) # Dest0 will send layer 0 points to scene 0, laser 0 - - -# -# Anaglyph computation : different X coordinate for each eye -# - -def LeftShift(elevation): - - diff = elevation - map_layerane_altitude - return nadir * eye_spacing * diff / (observer_altitude - elevation) - -def RightShift(elevation): - - diff = map_layerane_altitude - elevation - return (1 - nadir) * eye_spacing * diff / (observer_altitude - elevation) - - -def Proj(x,y,z,angleX,angleY,angleZ): - - rad = angleX * math.pi / 180 - cosa = math.cos(rad) - sina = math.sin(rad) - y2 = y - y = y2 * cosa - z * sina - z = y2 * sina + z * cosa - - rad = angleY * math.pi / 180 - cosa = math.cos(rad) - sina = math.sin(rad) - z2 = z - z = z2 * cosa - x * sina - x = z2 * sina + x * cosa - - rad = angleZ * math.pi / 180 - cosa = math.cos(rad) - sina = math.sin(rad) - x2 = x - x = x2 * cosa - y * sina - y = x2 * sina + y * cosa - - - """ Transforms this 3D point to 2D using a perspective projection. """ - factor = fov / (viewer_distance + z) - x = x * factor + centerX - y = - y * factor + centerY - return (x,y) - - -# -# Main -# - -def Run(): - Left = [] - Right = [] - counter =0 - try: - while True: - Left = [] - Right = [] - x = vertices[0][0] - y = vertices[0][1] - z = vertices[0][2] - - # lj tracers will "move" the laser to this first point in black, then move to the next with second point color. - # for more accuracy in dac emulator, repeat this first point. - - # generate all points in square. - for point in face: - x = vertices[point][0] - y = vertices[point][1] - z = vertices[point][2] - left.append(proj(x+leftshift(z*25),y,z,0,counter,0)) - right.append(proj(x+rightshift(z*25),y,z,0,counter,0)) - - - lj.polylineonecolor(left, c = leftsquare.color , layer = leftsquare.layer, closed = leftsquare.closed) - lj.polylineonecolor(right, c = rightsquare.color , layer = rightsquare.layer, closed = rightsquare.closed) - lj.drawdests() - time.sleep(0.1) - counter += 1 - if counter > 360: - counter = 0 - - except KeyboardInterrupt: - pass - - # Gently stop on CTRL C - finally: - lj.ClosePlugin() - - -Run() diff --git a/generators/fromGML.py b/generators/fromGML.py index 7576b8f..b62033f 100644 --- a/generators/fromGML.py +++ b/generators/fromGML.py @@ -14,7 +14,7 @@ Support the gml spec="1.0 (minimum)" and header/client/name and maybe one day drawing/brush/color -LICENCE : CC +Licensed under GNU GPLv3 by cocoa and Sam Neurohack Heavy use of : https://github.com/kgn/pygml diff --git a/generators/fromOSC.py b/generators/fromOSC.py index d8005c5..736afaa 100644 --- a/generators/fromOSC.py +++ b/generators/fromOSC.py @@ -12,7 +12,7 @@ output CLI in CLI points format : [x,y,color] v0.1.0 -LICENCE : CC +Licensed under GNU GPLv3 by Cocoa, Sam Neurohack diff --git a/generators/fromRedis.py b/generators/fromRedis.py index 8c65951..3e77c9a 100755 --- a/generators/fromRedis.py +++ b/generators/fromRedis.py @@ -11,7 +11,7 @@ v0.1.0 Use it to create feedback loops by writing to the same frame or to copy the frame from someone else -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/generators/fromilda.py b/generators/fromilda.py index e6547e5..e7ab849 100644 --- a/generators/fromilda.py +++ b/generators/fromilda.py @@ -8,7 +8,7 @@ fromild v0.1.0 Read/display once an .ild animation file and quit ?? -LICENCE : CC +Licensed under GNU GPLv3 by cocoa and Sam Neurohack diff --git a/generators/osc2redis.py b/generators/osc2redis.py index af8a73e..2e0e5ba 100644 --- a/generators/osc2redis.py +++ b/generators/osc2redis.py @@ -12,19 +12,24 @@ END POINT Format : (x,y,color) v0.1.0 -LICENCE : CC +Licensed under GNU GPLv3 by Cocoa, Sam Neurohack ''' -from OSC3 import OSCServer, OSCClient, OSCMessage import sys +from os import path, getcwd +abspath, filename = path.split(path.realpath(__file__ )) +sys.path.insert(0, path.join(abspath,"../lib")) +from clitools import Clitools + +from OSC3 import OSCServer, OSCClient, OSCMessage from time import sleep -import argparse import ast import redis +import argparse argsparser = argparse.ArgumentParser(description="osc2redis generator") argsparser.add_argument("-i","--ip",help="IP to bind to (0.0.0.0 by default)",default="0.0.0.0",type=str) argsparser.add_argument("-p","--port",help="OSC port to bind to (9002 by default)",default=9002,type=str) diff --git a/generators/redilysis_lines.py b/generators/redilysis_lines.py index 123f487..a3f6a32 100755 --- a/generators/redilysis_lines.py +++ b/generators/redilysis_lines.py @@ -13,7 +13,7 @@ Add a line on every frame and scroll see https://git.interhacker.space/teamlaser/redilysis for more informations about the redilysis project -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/generators/redilysis_particles.py b/generators/redilysis_particles.py index 59e775a..eeecde7 100755 --- a/generators/redilysis_particles.py +++ b/generators/redilysis_particles.py @@ -8,7 +8,7 @@ v0.1.0 -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/generators/redilysis_shape.py b/generators/redilysis_shape.py index 4f0de7f..16cbda8 100755 --- a/generators/redilysis_shape.py +++ b/generators/redilysis_shape.py @@ -8,7 +8,7 @@ v0.1.0 -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/generators/text.py b/generators/text.py index 63fbcbd..2afc3c5 100644 --- a/generators/text.py +++ b/generators/text.py @@ -18,7 +18,7 @@ Font list : 'markers', 'mathlow', 'mathupp', 'meteorology', 'music', 'rowmand', 'rowmans', 'rowmant', 'scriptc', 'scripts', 'symbolic', 'timesg', 'timesi', 'timesib', 'timesr', 'timesrb' -LICENCE : CC +Licensed under GNU GPLv3 by cocoa and Sam Neurohack diff --git a/generators/trckr.py b/generators/trckr.py index 3c9bdec..a775385 100644 --- a/generators/trckr.py +++ b/generators/trckr.py @@ -9,7 +9,7 @@ v0.1.0 Get all points fom redis /trckr/frame/WSclientID points -LICENCE : CC +Licensed under GNU GPLv3 by cocoa and Sam Neurohack diff --git a/generators/tunnel.py b/generators/tunnel.py index 437cb12..6ab48a5 100755 --- a/generators/tunnel.py +++ b/generators/tunnel.py @@ -10,7 +10,7 @@ v0.1.0 Use it to test your filters and outputs -LICENCE : CC +Licensed under GNU GPLv3 by cocoa diff --git a/generators/turtle.py b/generators/turtle.py index 9e26349..619882b 100644 --- a/generators/turtle.py +++ b/generators/turtle.py @@ -6,7 +6,7 @@ Turtle library laser emulation v0.1b by Sam Neurohack -from /team/laser +from proton photon """ diff --git a/generators/turtle1.py b/generators/turtle1.py deleted file mode 100644 index a5919b6..0000000 --- a/generators/turtle1.py +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/python3 -# -*- coding: utf-8 -*- -# -*- mode: Python -*- - -''' - -Example using experimental Laserized Turtle graphics library - -''' - -from turtle import * - -pencolor((255,0,0)) - -for i in range(4): - forward(100) - right(90) - -done() \ No newline at end of file diff --git a/generators/OSC3.py b/lib/OSC3.py similarity index 100% rename from generators/OSC3.py rename to lib/OSC3.py diff --git a/lib/clitools.py b/lib/clitools.py new file mode 100644 index 0000000..ed36bd1 --- /dev/null +++ b/lib/clitools.py @@ -0,0 +1,32 @@ +from __future__ import print_function +import sys +import time + +class Clitools: + + def __init__(self,*initial_data, **kwargs): + for dictionary in initial_data: + for key in dictionary: + setattr(self, key, dictionary[key]) + for key in kwargs: + setattr(self, key, kwargs[key]) + + if not hasattr(self, 'name'): + self.name = "undefined" + def debug(self, *args, **kwargs): + if( self.verbose == False ): + return + print(*args, file=sys.stderr, **kwargs) + + def startFrame(self): + self.timer = time.time() + + def endFrame(self): + if not self.looptime : + self.debug( "No looptime provided at init.") + return + elapsed = time.time() - self.timer + if( elapsed < self.looptime ): + delta = self.looptime - elapsed + time.sleep( delta ) + self.debug(self.name + " micro sleep:" + str( delta )) diff --git a/runner_lib.py b/lib/runner.py similarity index 100% rename from runner_lib.py rename to lib/runner.py diff --git a/runner.py b/runner.py index ef27070..e900603 100755 --- a/runner.py +++ b/runner.py @@ -9,7 +9,7 @@ import tty,termios import re import json from pathlib import Path -import runner_lib as runner +from lib import runner diff --git a/runner_midi.py b/runner_midi.py index 979137b..c9e140b 100755 --- a/runner_midi.py +++ b/runner_midi.py @@ -3,7 +3,7 @@ import argparse import re import redis -import runner_lib as runner +from lib import runner import time novationRows = [