diff --git a/src/automaton.json b/src/automaton.json index 6ae74a9..e38e1bb 100644 --- a/src/automaton.json +++ b/src/automaton.json @@ -1 +1 @@ -{"version":"4.1.1","resolution":400,"curves":[{"nodes":[[0,1,0,0,0.16140350877192983],[1,0,-0.47719298245614045]]},{"nodes":[[],[0.6666666666666666,1,-0.4560629631300563,-0.1852941176470587],[0.6666666666666666,0,0,0,0.26644908616188,0.1029411764705882],[2,1.1900000000000002,-0.1],[2,0.00686274509803933,0,0,0.10652741514360319],[2.6666666666666665,0.7000000000000001],[2.6666666666666665,0,0,0,0.1391644908616188,0.5215686274509802],[3.333333333333333,0.9,-0.5014360313315928,-0.22647058823529403],[3.333333333333333,0,0,0,0.3974946346535474,0.10043744264185422],[4.666666666666666,1.2000000000000002,0,0,0.1],[4.666666666666666],[5.333333333333333,0.7000000000000001,-0.24079400848586707,-0.49736814906842436],[5.333333333333333],[6,0.8,-0.4356422056174482,-0.17156862745098037],[6,0,0,0,0.32852235276081576,0.05490196078431372],[7.333333333333333,1.1441176470588237,-0.1,0,0.1],[7.333333333333333],[8,0.3333],[8,0,0,0,0.08806743643105143,0.4254901960784307],[8.666666666666666,0.9,-0.3995834676293276,-0.08230605476940031],[8.666666666666666],[9.4,1.1,-0.2785205844025618,-0.17156862745098012,0.2785205844025618,0.17156862745098012],[10,1.3],[10],[10.666666666666666,0.6000000000000001,-0.11225401796276425,-0.5783350570563074]],"fxs":[{"def":"repeat","params":{"interval":0.2299999999999996},"time":7.333333333333333,"length":0.6666666666666667}]},{"nodes":[[0,0,0,0,0.12284595300261082,0.061764705882352944],[0.6666666666666666,0.4,-0.1],[0.6666666666666666,0.06568627450980391],[2,0.2],[2.236344893790143,0.4,-0.1,0,0.1],[2.6666666666666665,0,-0.34575086532310695,0,0.04271204452939744],[2.769918291305192,0.1,-0.05130523784998782,0,0.09999999999999999],[3.333333333333333,0.1],[3.6666666666666665,0.32774323388394533],[4.666666666666666,0.30000000000000004],[4.666666666666666,0.023323265139934546],[5.333333333333333,0.1],[5.333333333333333],[6,0.30000000000000004],[6,0.02745098039215696,0,0,0.09974597868276715,-0.006845312262542842],[7.333333333333333,0.1,-0.1],[7.333333333333333,0.7000000000000001],[8.666666666666666,0.7000000000000001],[8.666666666666666,1],[10,0.1],[10.666666666666666]]},{"nodes":[[0,0,0,0,0.1],[0.3333333333333333,1,-0.1,0,0.1],[0.6666666666666666,0,-0.1],[1.9166666666666665,1,-1.0007832898172324,0,0.06],[2],[2.025071712633245,1,-0.044516971279373374,0,0.1],[2.1623944411350506,0.5,-0.07221383357420871,0.2738348538091391,0.07221383357420871,-0.2738348538091391],[2.6666666666666665,0,-0.1,0,0.1],[3,1,-0.2864316909347707,0,0.24406085208595923],[3.333333333333333,0,-0.036443741726782705,0.4106336078810942],[3.6666666666666665,0.7544057184393509,-0.08631141286229893,-0.07178801363349067,0.13346814639852406,0.11100980502520727],[4.666666666666666,1,-0.33942558746736295,-0.018347344929083464,0.09208797505724492,-0.3264027483296351],[4.851079899134173,0.30000000000000004,-0.07486057061026631,-0.013179150760383026,0.1],[5.0444017511428605,0.9656862745098039,-0.1,0,0.1],[5.333333333333333,0.044689231228471016,-0.1,0,0.1],[5.666666666666666,1,-0.1,0,0.1],[6,0,-0.1],[7.333333333333333,1,-1.0426547051383652,0,0.1],[7.6000000000000005,0.7000000000000001,-0.1,0,0.1],[8,1],[8,0,-0.1,0,0.1],[8.166666666666666,1,-0.099988538641853,-0.006965859231865531],[8.489362746562259,1,0,0,0.09998887794379856,-0.006861981819672439],[8.666666666666666,0,-0.11262160793957762,0.041182622607896624],[8.9,1,-0.11617352813418727,-0.020588235294117612,0.11617352813418727,0.020588235294117612],[9.04400609908224,0.15784313725490162,-0.0988340957186134,-0.027450980392156817,0.0988340957186134,0.027450980392156817],[9.3,1,-0.09200304954112025,-0.041176470588235224,0.09200304954112025,0.041176470588235224],[9.5,0.2,-0.09449923761471994,-0.06176470588235285,0.09449923761471994,0.06176470588235285],[9.666666666666666,1,-0.08899847522943988,-0.027450980392156817,0.08899847522943988,0.027450980392156817],[10,0.30000000000000004,-0.06149466330303955,-0.06176470588235285,0.06149466330303955,0.06176470588235285],[10,1,-0.1,0,0.1],[10.666666666666666,0.1,-0.1,0,0.1]],"fxs":[{"def":"repeat","params":{"interval":0.2490000000000001},"time":2,"length":0.6666666666666665},{"def":"sine","params":{"amp":0.26,"freq":8.590000000000002,"offset":0},"time":3.934411837854859,"length":0.7322548288118069},{"def":"sine","params":{"amp":0.4400000000000004,"freq":5.889999999999998,"offset":0},"time":10.234266741175261,"length":0.4323999254914046},{"def":"hermitePatch","params":{},"time":3.821100533282267,"length":0.12610951070520438,"row":1},{"def":"hermitePatch","params":{},"time":10.18270758125172,"length":0.09198590579094379,"row":1}]},{"nodes":[[0,0,0,0,0.1],[0.6666666666666666,1,-0.1],[0.6666666666666666,0.04000000000000001],[2,0.019999999999999997],[2,0.4],[2.6666666666666665],[3.333333333333333,0.2,-0.1],[3.333333333333333,0.5],[4.666666666666666,0.6000000000000001],[4.666666666666666,0.059594068084455554],[5.333333333333333],[6,0.1],[7.333333333333333,0,-1.3219093627620064,-0.061764705882352944],[8],[8,0.8],[10,0.8],[10,0.1],[10.666666666666666]]},{"nodes":[[0,0,0,0,0.11631853785900784,0.15784313725490196],[0.3333333333333333,0.2,-0.1,-0.06862745098039215],[0.3333333333333333,0,0,0,0.10652741514360313,0.034313725490196074],[0.6257615317667536,0.4,-0.035197899213743125,-0.1178437887562426,0.05762038784328031,0.19291505927163513],[1.5833333333333333,1.6588235294117648,-0.14423846823324632,-0.08235294117647059],[1.5833333333333333,0,0,0,0.0706266318537859,0.12352941176470589],[1.8333333333333333,0.6000000000000001,-0.07923141560987097,-0.16655319476142408,0.05223508415950609,0.10980392156862741],[2,0.8,-0.07118673688066018,-0.08235294117647059]]},{"nodes":[[0,0.7000000000000001,0,0,0.14895561357702347,-0.7343137254901958],[0.6666666666666666,0.01999999999999999,-0.07958650842810296,0.0005266470222471706,0.7602446192333546,-0.005030759268204068],[1.75,0.2,-0.175065274151436,-0.0480392156862745],[2,1,-0.1]]},{"nodes":[[0,0.264705882352941,0,0,0.2664490861618798,-0.3705882352941175],[1.75,0,-0.1,0,0.1],[2,1,-0.1]]},{"nodes":[[0,0,0,0,0.1],[0.3333333333333333,0.9460784313725474,-0.1,0,0.1],[1.3333333333333333,0.3627450980392144,-0.11276290315437737,0.31798356313506776,0.058202350589290165,-0.16412659044332573],[1.6666666666666665,1,-0.1,0,0.1],[1.7304177545691903,0.1,-0.1,0,0.1],[2,1.4000000000000001,-0.05099116999738633,-0.5930547707442783]],"fxs":[{"def":"sine","params":{"amp":0.3999999999999999,"freq":17.779999999999987,"offset":0},"time":0.6103133159268926,"length":0.7230200174064406},{"def":"hermitePatch","params":{},"time":0.5580939947780674,"length":0.08289817232376029,"row":1},{"def":"hermitePatch","params":{},"time":1.2836814621409922,"length":0.11631853785900792,"row":1}]},{"nodes":[[0,1,0,0,0.06843643544269563,-0.8715686274509801],[0.6666666666666666,0,-0.47719298245614045]]},{"nodes":[[],[2,2]]},{"nodes":[[0,0.1],[1.3333333333333333,0.30000000000000004]]},{"nodes":[[],[1.3333333333333333]]},{"nodes":[[0,0,0,0,0.07564543093234954,0.8647058823529409],[1.3333333333333333,1]]},{"nodes":[[],[0.3333333333333333,0.333],[0.3333333333333333,0,0,0,0.04050107306929012,0.096078431372549],[0.5833333333333333,0.30000000000000004,-0.10502788587794674,-0.054901960784313704],[1.3333333333333333]],"fxs":[{"def":"repeat","params":{"interval":0.2499999999999999},"time":0.3333333333333333,"length":1}]},{"nodes":[[0,0,0,0,0.041253263707571805],[0.1,0.472549019607836,-0.044516971279373374,-0.2333333333333331,0.037233176309202774,0.19515571003904697],[1.3333333333333333,1,-1.2945169712793734]]},{"nodes":[[0,0,0,0,0.1],[0.8,0.9,-0.10634811016391839,-0.09574850838471399,0.10634811016391839,0.09574850838471399],[1,1,-0.034837955875665044,-0.008249475331448328]]},{"nodes":[[0,1,0,0,0.08905168734696595,-0.6204705716763121],[0.8,0.1,-0.3657976094933656,0.05238364149449456,0.3657976094933656,-0.05238364149449456],[4,0,-0.5779474714155504]]},{"nodes":[[0,0,0,0,0.33333333333333337],[0.5833333333333333,0.13137254901960788,-0.06553651288762144,-0.14663596634864273,0.06553651288762144,0.14663596634864273],[0.6673629242819844,0.7480392156862745,-0.06736292428198434,-0.16470588235294117,0.06736292428198434,0.16470588235294117],[1.563751087902524,0.9519607843137257,-0.20443864229765013,-0.02745098039215686,0.20443864229765013,0.02745098039215686],[4,1,-0.5779474714155504]]},{"nodes":[[0,0,0,0,0.3154046997389034],[1.3333333333333333,1,-0.29908616187989556]]},{"nodes":[[],[1.3333333333333333,1]]},{"nodes":[[0,1,0,0,0.08905168734696595,-0.6204705716763121],[4,0,-3.146485330423383]]},{"nodes":[[0,1,0,0,0.15000000000000002],[0.25,1,-0.1,0,0.047780678851174936],[0.3333333333333333,0,-0.006527415143603133,0.3068670573880632,0.04083550913838122,0.1415436161688415],[0.4601827676240209,0,-0.031462140992167105,0.14076447719138005,0.031462140992167105,0.08154620354285587],[0.5515665796344648,0,-0.024934725848563967,0.05959145643516391,0.03472584856396867,0.040773101771427935],[0.6364229765013054,0,-0.024934725848563963,0.02509113955164797],[1,0,0,0,0.35333333333333333],[2.333333333333333,1,-0.3643603133159269,0,0.1]]},{"nodes":[[0,0,0,0,0.3317232375979112],[2,1,-1.3746781892076712]]},{"nodes":[[0,0,0,0,0.28276762402088773],[2.6666666666666665,1,-0.4673674842468357]]},{"nodes":[[0,0,0,0,0.429634464751958],[2.6666666666666665,0.99,-1.447911227154047]]},{"nodes":[[0,1,0,0,0.03472584856396867,-0.3705882352941176],[0.6666666666666666,0,-0.6417754569190601]]},{"nodes":[[0,0.4166666666666666,0,0,0.1],[0.6666666666666666,0,-0.664621409921671]]},{"nodes":[[0,0,0,0,0.1],[1.0065274151436032,0.9480392156862747,-0.791906005221932,-0.19215686274509805,0.17102946263472904,0.04150048712872081],[1.3333333333333333,1,-0.1]]},{"nodes":[[0,0,0,0,0.09780980358890974,0.020588235294117938],[0.3333333333333333,1,-0.04311987540653206,-0.9333333333333332]]},{"nodes":[[0,0.2],[1.3333333333333333,1.8,-1.0186386106576615,-0.609915244226372]]},{"nodes":[[0,0,0,0,0.011879895561357705,0.5490196078431372],[1.3333333333333333,1,-1.2292428198433418]]}],"channels":[["EnvironmentMap/accumulate",{"items":[{},{"time":5.333333333333333,"length":1,"value":0.1,"curve":26,"amp":0.9},{"time":48,"length":1,"value":0.1,"curve":26,"amp":0.9},{"time":110.66666666666666,"length":1,"value":0.1,"curve":26,"amp":0.9}]}],["Glitch/amp",{"items":[{},{"time":48,"length":1,"curve":0},{"time":50.666666666666664,"length":1,"curve":0},{"time":53.333333333333336,"length":1,"curve":0},{"time":56,"length":1,"curve":0},{"time":58.666666666666664,"length":1,"curve":0},{"time":61.333333333333336,"length":1,"curve":0},{"time":64,"length":1,"curve":0},{"time":66.66666666666666,"length":1,"curve":0},{"time":69.33333333333333,"length":1,"curve":0},{"time":71.99999999999999,"length":1,"curve":0},{"time":74.66666666666666,"length":1,"curve":0},{"time":77.33333333333333,"length":1,"curve":0},{"time":79.99999999999999,"length":1,"curve":0},{"time":82.66666666666666,"length":1,"curve":0},{"time":85.33333333333333,"length":1,"curve":0},{"time":88,"length":1,"curve":0},{"time":261.3333333333333}]}],["PixelSorter/amp",{"items":[{},{"time":48,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":50.666666666666664,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":53.333333333333336,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":56,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":58.666666666666664,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":61.333333333333336,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":64,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":66.66666666666666,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":69.33333333333333,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":71.99999999999999,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":74.66666666666666,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":77.33333333333333,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":79.99999999999999,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":82.66666666666666,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":85.33333333333333,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":87.99999999999999,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":90.33333333333333,"length":0.3333333333333286,"curve":29,"speed":1.0000000000000153,"amp":-0.4},{"time":90.66666666666666},{"time":91.99999999999999,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":94.66666666666666,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":97.33333333333333,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":99.99999999999999,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":102.66666666666666,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":105.33333333333333,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":107.99999999999999,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":110.66666666666666,"length":1.3333333333333428,"value":0.2,"reset":true}]}],["Serial/enable",{"items":[{},{"time":91.99999999999999,"length":1.3333333333333428},{"time":94.66666666666666,"length":1.3333333333333428},{"time":97.33333333333333,"length":1.3333333333333428},{"time":99.99999999999999,"length":1.3333333333333428},{"time":102.66666666666666,"length":1.3333333333333428},{"time":105.33333333333333,"length":1.3333333333333428},{"time":107.99999999999999,"length":1.3333333333333428},{"time":110.66666666666666,"length":1.3333333333333428}]}],["SceneBegin/active",{"items":[{},{"time":5.333333333333333,"length":42.666666666666664}]}],["Sync/first/clap",{"items":[{},{"time":27.666666666666664,"length":1.3333333333333321,"curve":15},{"time":28.999999999999996,"length":1.3333333333333321,"value":1,"curve":15},{"time":30.33333333333333,"length":1.3333333333333321,"value":2,"curve":15},{"time":31.66666666666666,"length":1.3333333333333321,"value":3,"curve":15},{"time":32.99999999999999,"length":1.3333333333333321,"value":4,"curve":15},{"time":34.33333333333333,"length":1.3333333333333321,"value":5,"curve":15},{"time":35.66666666666666,"length":1.3333333333333321,"value":6,"curve":15},{"time":36.99999999999999,"length":1.3333333333333321,"value":7,"curve":15},{"time":38.33333333333332,"length":1.3333333333333321,"value":8,"curve":15},{"time":39.66666666666665,"length":1.3333333333333321,"value":9,"curve":15},{"time":40.99999999999998,"length":1.3333333333333321,"value":10,"curve":15},{"time":42.33333333333331,"length":1.3333333333333321,"value":11,"curve":15}]}],["Condition/hahaRatio",{"items":[{},{"time":42.666666666666664,"length":4,"curve":25}]}],["Condition/phaseWidth",{"items":[{"value":0.1},{"time":27.666666666666664,"length":20.333333333333332,"value":0.1,"curve":16,"speed":0.049180327868852465,"amp":0.5888750576601328}]}],["SceneNeuro/active",{"items":[{},{"time":48,"length":42.666666666666664}]}],["sufferText/push",{"items":[{"time":48},{"time":50.666666666666664,"value":1},{"time":53.333333333333336,"value":2},{"time":56,"value":3},{"time":58.666666666666664,"value":4},{"time":61.333333333333336,"value":5},{"time":64,"value":6},{"time":66.66666666666666,"value":7},{"time":69.33333333333333,"value":8},{"time":71.99999999999999,"value":9},{"time":74.66666666666666,"value":10},{"time":77.33333333333333,"value":11},{"time":79.99999999999999,"value":12},{"time":82.66666666666666,"value":13},{"time":85.33333333333333,"value":14},{"time":87.99999999999999,"value":15}]}],["IFSPistons/group0/rot",{"items":[{},{"time":48.666666666666664,"length":2,"curve":23},{"time":54,"length":2,"value":1,"curve":23},{"time":59.333333333333336,"length":2,"value":2,"curve":23},{"time":64.66666666666666,"length":2,"value":3,"curve":23},{"time":69.99999999999999,"length":2,"value":4,"curve":23},{"time":75.33333333333333,"length":2,"value":5,"curve":23},{"time":80.66666666666666,"length":2,"value":6,"curve":23},{"time":85.99999999999999,"length":2,"value":7,"curve":23}]}],["IFSPistons/group1/rot",{"items":[{},{"time":51.333333333333336,"length":2,"curve":23},{"time":56.666666666666664,"length":2,"value":1,"curve":23},{"time":62,"length":2,"value":2,"curve":23},{"time":67.33333333333333,"length":2,"value":3,"curve":23},{"time":72.66666666666666,"length":2,"value":4,"curve":23},{"time":77.99999999999999,"length":2,"value":5,"curve":23},{"time":83.33333333333333,"length":2,"value":6,"curve":23},{"time":88.66666666666666,"length":2,"value":7,"curve":23}]}],["IFSPistons/group0/pos",{"items":[{"value":3},{"time":47.666666666666664,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":53,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":58.333333333333336,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":63.666666666666664,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":69.03333333333333,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":74.33333333333333,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":79.66666666666666,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":84.99999999999999,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998}]}],["IFSPistons/group1/pos",{"items":[{"value":3},{"time":50.333333333333336,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":55.666666666666664,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":61,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":66.33333333333333,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":71.66666666666666,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":76.99999999999999,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":82.33333333333333,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":87.66666666666666,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998}]}],["Music/NEURO_TIME",{"items":[{},{"time":48,"length":10.666666666666664,"curve":1},{"time":58.666666666666664,"length":8.666666666666671,"curve":1},{"time":67.33333333333333,"length":1.999999999999993,"curve":5},{"time":69.33333333333333,"length":10.666666666666664,"curve":1},{"time":79.99999999999999,"length":8.666666666666671,"curve":1},{"time":88.66666666666666,"length":0.6666666666666714,"curve":5},{"time":89.33333333333333,"length":1.3333333333333286,"curve":30},{"time":90.66666666666666,"length":1.3333333333333286,"curve":10,"offset":1.4210854715202004e-14},{"time":91.99999999999999,"length":1.3333333333333286,"curve":14},{"time":93.33333333333331,"length":1.3333333333333428,"curve":10},{"time":95.99999999999999,"length":1.3333333333333428,"curve":10},{"time":97.33333333333333,"length":1.3333333333333286,"curve":14},{"time":98.66666666666666,"length":1.3333333333333428,"curve":10},{"time":101.33333333333333,"length":1.3333333333333428,"curve":10},{"time":102.66666666666667,"length":1.3333333333333144,"curve":14},{"time":103.99999999999999,"length":1.3333333333333428,"curve":10},{"time":106.66666666666666,"length":1.3333333333333428,"curve":10},{"time":108,"length":1.3333333333333286,"curve":14},{"time":109.33333333333333,"length":1.3333333333333428,"curve":10}]}],["Music/NEURO_DETUNE",{"items":[{},{"time":48,"length":10.666666666666664,"curve":2},{"time":58.666666666666664,"length":8.666666666666671,"curve":2},{"time":67.33333333333333,"length":1.999999999999993,"curve":6},{"time":69.33333333333333,"length":10.666666666666664,"curve":2},{"time":79.99999999999999,"length":8.666666666666671,"curve":2},{"time":88.66666666666666,"length":2,"curve":6,"speed":0.8333333333333358},{"time":90.66666666666666,"length":1.3333333333333286,"curve":11},{"time":93.33333333333333,"length":1.3333333333333286,"curve":11},{"time":95.99999999999999,"length":1.3333333333333286,"curve":11},{"time":97.33333333333331,"length":1.3333333333333428,"value":0.77},{"time":98.66666666666666,"length":1.3333333333333286,"curve":11},{"time":101.33333333333333,"length":1.3333333333333286,"curve":11},{"time":103.99999999999999,"length":1.3333333333333286,"curve":11},{"time":106.66666666666666,"length":1.3333333333333286,"curve":11},{"time":107.99999999999999,"length":1.3333333333333428,"value":0.77},{"time":109.33333333333333,"length":1.3333333333333286,"curve":11}]}],["Music/NEURO_DETUNE_PHASE",{"items":[{},{"time":48,"length":10.666666666666664,"curve":4},{"time":58.666666666666664,"length":8.666666666666671,"curve":4},{"time":67.33333333333333,"length":1.999999999999993,"curve":7},{"time":69.33333333333333,"length":10.666666666666664,"curve":4},{"time":79.99999999999999,"length":8.666666666666671,"curve":4},{"time":88.66666666666666,"length":2,"curve":7,"speed":0.8333333333333358},{"time":90.66666666666666,"length":1.3333333333333428,"curve":12},{"time":93.33333333333333,"length":1.3333333333333428,"curve":12},{"time":95.99999999999999,"length":1.3333333333333428,"curve":12},{"time":98.66666666666666,"length":1.3333333333333428,"curve":12},{"time":101.33333333333333,"length":1.3333333333333428,"curve":12},{"time":103.99999999999999,"length":1.3333333333333428,"curve":12},{"time":106.66666666666666,"length":1.3333333333333428,"curve":12},{"time":109.33333333333333,"length":1.3333333333333428,"curve":12}]}],["Music/NEURO_WUB_AMP",{"items":[{},{"time":48,"length":10.668578038364203,"curve":3},{"time":58.6685780383642,"length":8.664755294969133,"curve":3},{"time":67.33333333333333,"length":2.0038227433950624,"curve":8},{"time":69.33715607672839,"length":10.668578038364203,"curve":3},{"time":80.0057341150926,"length":8.660932551574064,"curve":3},{"time":88.66666666666666,"length":2,"curve":8,"speed":0.8028871529270708},{"time":90.66666666666666,"length":1.3333333333333333,"curve":13},{"time":93.33333333333333,"length":1.3333333333333333,"curve":13},{"time":95.99999999999999,"length":1.3333333333333333,"curve":13},{"time":98.66666666666666,"length":1.3333333333333333,"curve":13},{"time":101.33333333333333,"length":1.3333333333333333,"curve":13},{"time":103.99999999999999,"length":1.3333333333333333,"curve":13},{"time":106.66666666666666,"length":1.3333333333333333,"curve":13},{"time":109.33333333333333,"length":1.3333333333333333,"curve":13}]}],["Music/NEURO_WUB_FREQ",{"items":[{},{"time":48,"length":2,"value":1},{"time":50,"length":0.6666666666666643,"value":0.49999999999999967},{"time":50.666666666666664,"length":0.6666666666666714,"value":1},{"time":51.333333333333336,"length":1.3333333333333286,"value":2},{"time":52.666666666666664,"length":0.6666666666666714,"value":2.5},{"time":53.333333333333336,"length":0.6666666666666643,"value":1},{"time":54,"length":1.3333333333333357,"value":1},{"time":55.333333333333336,"length":0.6666666666666643,"value":2},{"time":56,"length":2,"value":1},{"time":58,"length":0.6666666666666643,"value":2},{"time":58.666666666666664,"length":0.6666666666666714,"value":1},{"time":59.333333333333336,"length":1.3333333333333286,"value":2.1000000000000014},{"time":60.666666666666664,"length":0.6666666666666714,"value":0.5},{"time":61.333333333333336,"length":0.6666666666666643,"value":7},{"time":62,"length":1.3333333333333357,"value":3},{"time":63.333333333333336,"length":0.6666666666666714,"value":1},{"time":64,"length":0.6666666666666714,"value":0.9600000000000006},{"time":64.66666666666667,"length":1.3333333333333215,"value":6},{"time":66,"length":0.6666666666666785,"value":10.840000000000003},{"time":66.66666666666667,"length":0.6666666666666572,"value":1},{"time":67.33333333333333,"length":1.3333333333333428,"value":3.989999999999996},{"time":68.66666666666667,"length":0.6666666666666572,"value":4.109999999999999},{"time":69.33333333333333,"length":2,"value":1},{"time":71.33333333333333,"length":0.6666666666666643,"value":0.49999999999999967},{"time":71.99999999999999,"length":0.6666666666666714,"value":1},{"time":72.66666666666666,"length":1.3333333333333286,"value":2},{"time":73.99999999999999,"length":0.6666666666666714,"value":2.5},{"time":74.66666666666666,"length":0.6666666666666643,"value":1},{"time":75.33333333333333,"length":1.3333333333333357,"value":1},{"time":76.66666666666667,"length":0.6666666666666643,"value":2},{"time":77.33333333333333,"length":2,"value":1},{"time":79.33333333333333,"length":0.6666666666666643,"value":2},{"time":79.99999999999999,"length":0.6666666666666714,"value":1},{"time":80.66666666666666,"length":1.3333333333333286,"value":2.1000000000000014},{"time":81.99999999999999,"length":0.6666666666666714,"value":0.5},{"time":82.66666666666666,"length":0.6666666666666643,"value":7},{"time":83.33333333333333,"length":1.3333333333333357,"value":3},{"time":84.66666666666667,"length":0.6666666666666714,"value":1},{"time":85.33333333333334,"length":0.6666666666666714,"value":0.9600000000000006},{"time":86.00000000000001,"length":1.3333333333333144,"value":6},{"time":87.33333333333333,"length":0.6666666666666856,"value":10.840000000000003},{"time":88.00000000000001,"length":0.6666666666666572,"value":1},{"time":88.66666666666667,"length":1.3333333333333428,"value":3.9899999999999993},{"time":90.00000000000001,"length":0.6666666666666572,"value":4.109999999999999},{"time":90.66666666666667,"length":1.3333333333333144,"value":1},{"time":93.33333333333333,"length":1.3333333333333144,"value":1},{"time":95.99999999999999,"length":1.3333333333333144,"value":1},{"time":98.66666666666666,"length":1.3333333333333144,"value":1},{"time":101.33333333333333,"length":1.3333333333333144,"value":1},{"time":103.99999999999999,"length":1.3333333333333144,"value":1},{"time":106.66666666666666,"length":1.3333333333333144,"value":1},{"time":109.33333333333333,"length":1.3333333333333144,"value":1}]}],["Trails/active",{"items":[{}]}],["SceneCrystals/active",{"items":[{},{"time":111.33333333333333,"length":43.33333333333333}]}],["FlickyParticles/active",{"items":[{},{"time":48,"length":42.666666666666664},{"time":90.66666666666666,"length":1.3333333333333286},{"time":93.33333333333333,"length":1.3333333333333286},{"time":95.99999999999999,"length":1.3333333333333286},{"time":98.66666666666666,"length":1.3333333333333286},{"time":101.33333333333333,"length":1.3333333333333286},{"time":103.99999999999999,"length":1.3333333333333286},{"time":106.66666666666666,"length":1.3333333333333286},{"time":109.33333333333333,"length":1.3333333333333286},{"time":111.33333333333333,"length":43.33333333333333}]}],["SphereParticles/active",{"items":[{},{"time":90.66666666666666,"length":1.3333333333333286},{"time":93.33333333333333,"length":1.3333333333333286},{"time":95.99999999999999,"length":1.3333333333333286},{"time":98.66666666666666,"length":1.3333333333333286},{"time":101.33333333333333,"length":1.3333333333333286},{"time":103.99999999999999,"length":1.3333333333333286},{"time":106.66666666666666,"length":1.3333333333333286},{"time":109.33333333333333,"length":1.3333333333333286},{"time":111.33333333333333,"length":43.33333333333333}]}],["SceneCrystals/ChaosTorus/active",{"items":[{"time":-8.200000000000001},{"time":121.33333333333333,"length":1.3333333333333286}]}],["FlashyTerrain/active",{"items":[{},{"time":91.99999999999999,"length":1.3333333333333428},{"time":102.66666666666666,"length":1.3333333333333428}]}],["Camera/pos/x",{"items":[{},{"time":48,"value":0.029999999999999923},{"time":50.666666666666664,"value":0.22},{"time":53.333333333333336,"value":-0.3300000000000002},{"time":58.666666666666664,"value":0.030000000000000478},{"time":61.333333333333336,"value":0.4300000000000005},{"time":64,"value":-0.3099999999999998},{"time":66.66666666666666,"value":0.04000000000000473},{"time":69.33333333333333,"value":0.2500000000000004},{"time":71.99999999999999,"value":0.22},{"time":74.66666666666666,"value":0.18999999999999975},{"time":77.33333333333333,"value":-0.33000000000000024},{"time":79.99999999999999,"value":0.030000000000000478},{"time":82.66666666666666,"value":-0.32999999999999946},{"time":85.33333333333333,"value":6.349087922075114e-16},{"time":88},{"time":90.66666666666666},{"time":117.33333333333333,"value":0.2599999999999958},{"time":122.66666666666666,"value":-0.25000000000000006},{"time":128}]}],["Camera/pos/y",{"items":[{},{"time":48},{"time":53.333333333333336,"value":0.18999999999999986},{"time":58.666666666666664},{"time":69.33333333333333},{"time":74.66666666666666,"value":-0.2599999999999998},{"time":79.99999999999999},{"time":87.99999999999999},{"time":90.66666666666666},{"time":102.66666666666666,"value":0.8799999999999999},{"time":104},{"time":117.33333333333333,"value":0.009999999999995882},{"time":122.66666666666666},{"time":128}]}],["Camera/pos/z",{"items":[{},{"time":48},{"time":64,"value":-0.12999999999999998},{"time":66.66666666666666,"value":0.04000000000000473},{"time":69.33333333333333},{"time":85.33333333333333,"value":-0.019999999999999588},{"time":87.99999999999999},{"time":90.66666666666666}]}],["Camera/rot/r",{"items":[{},{"time":5.333333333333333,"length":4,"value":5,"curve":17,"amp":10},{"time":26.033333333333335,"length":4,"value":5,"curve":18,"amp":-2},{"time":42,"length":4,"value":3,"curve":18,"amp":4},{"time":48,"value":3.316984746376379},{"time":50.666666666666664,"value":4.160000000000001},{"time":53.33333333333333,"value":2.9236224967058},{"time":56,"value":4.760000000000006},{"time":58.666666666666664,"value":3.490000000000002},{"time":61.333333333333336,"value":3.289999999999999},{"time":64,"value":2.519999999999998},{"time":66.66666666666666,"value":5.050000000000004},{"time":69.33333333333333,"value":4.170000000000001},{"time":71.99999999999999,"value":4.399999999999997},{"time":74.66666666666666,"value":2.699999999999999},{"time":77.33333333333333,"value":5.470000000000008},{"time":79.99999999999999,"value":3.4499999999999997},{"time":82.66666666666666,"value":4.43},{"time":85.33333333333333,"value":2.9000000000000017},{"time":88,"value":6.6},{"time":89.33333333333331,"length":1.3333333333333428,"value":6.6,"curve":28,"speed":0.4999999999999974,"amp":4.4999999999999964},{"time":90.66666666666666,"length":1.3333333333333286,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":93.33333333333333,"length":1.3333333333333286,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":96,"length":1.3333333333333286,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":98.66666666666667,"length":1.3333333333333144,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":101.33333333333334,"length":1.3333333333333144,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":104.00000000000001,"length":1.3333333333333144,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":106.66666666666669,"length":1.3333333333333002,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":109.33333333333336,"length":1.3333333333333002,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":111.33333333333333,"length":4,"value":5.589999999999992,"curve":18,"speed":1.0000000000000002,"amp":-2},{"time":117.33333333333333,"value":2.939999999999995},{"time":121.33333333333333,"value":4.839999999999997},{"time":122.66666666666666,"length":5.333333333333329,"value":3.4599999999999933,"curve":24,"speed":0.5000000000000013,"amp":-1.2000000000000026},{"time":127.99999999999999,"length":2.6666666666666714,"value":4.969999999999989,"curve":24,"speed":0.9999999999999999,"amp":-1.2000000000000026}]}],["Camera/rot/t",{"items":[{},{"time":26.666666666666664,"length":5.333333333333332,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":31.999999999999996,"length":5.333333333333332,"value":1.2000000000000002,"curve":19,"speed":0.2499999999999999,"amp":-0.9},{"time":37.333333333333336,"length":5.333333333333329,"value":-0.3,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":48,"value":0.12000000000000001},{"time":50.666666666666664,"value":-0.30999999999999495},{"time":53.333333333333336,"value":0.5200000000000048},{"time":56,"value":-0.029999999999995274},{"time":58.666666666666664,"value":0.2600000000000046},{"time":61.333333333333336,"value":-0.2899999999999953},{"time":64,"value":-0.06999999999999539},{"time":66.66666666666666,"value":0.2600000000000049},{"time":69.33333333333333,"value":0.12000000000000001},{"time":71.99999999999999,"value":0.7500000000000049},{"time":74.66666666666666,"value":-0.3599999999999952},{"time":77.33333333333333,"value":-1.1999999999999946},{"time":79.99999999999999,"value":0.2600000000000046},{"time":82.65764496093742,"value":-0.2899999999999953},{"time":85.33333333333333,"value":0.39000000000000457},{"time":87.99999999999999,"value":-0.029999999999995274},{"time":90.66666666666666},{"time":91.99999999999999,"value":0.5700000000000002},{"time":93.33333333333333},{"time":95.99999999999999},{"time":98.66666666666666},{"time":101.33333333333333},{"time":102.66666666666666,"value":-0.32},{"time":103.99999999999999},{"time":106.66666666666666},{"time":109.33333333333333},{"time":111.33333333333333,"value":0.14999999999999633},{"time":117.33333333333333,"value":0.5699999999999952},{"time":121.33333333333331,"length":1.3333333333333428,"value":0.37000000000000166,"curve":24,"speed":1.9999999999999891,"amp":-0.08000000000000007},{"time":122.66666666666666,"value":0.09999999999999977},{"time":128}]}],["Camera/rot/p",{"items":[{},{"time":26.666666666666664,"length":5.333333333333332,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":32,"value":-2.3500000000000125},{"time":37.333333333333336,"length":5.333333333333329,"value":-0.3,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":48,"length":2.6666666666666643,"curve":24},{"time":50.666666666666664,"length":2.6666666666666714,"value":-0.9690196078431373,"curve":24},{"time":53.333333333333336,"length":2.6666666666666714,"value":-0.33999999999999997,"curve":24},{"time":56.00000000000001,"length":2.6666666666666714,"value":-0.39117647058823524,"curve":24},{"time":58.66666666666668,"length":2.6666666666666714,"value":-0.12117647058823516,"curve":24},{"time":61.33333333333335,"length":2.6666666666666714,"value":-1.4311764705882353,"curve":24},{"time":64.00000000000003,"length":2.6666666666666714,"value":-0.29117647058823515,"curve":24},{"time":66.66666666666669,"length":2.6666666666666714,"value":-0.7811764705882349,"curve":24},{"time":69.33333333333336,"length":2.6666666666666643,"curve":24},{"time":72.00000000000001,"length":2.6666666666666714,"value":-0.9690196078431373,"curve":24},{"time":74.66666666666669,"length":2.6666666666666714,"value":-0.51,"curve":24},{"time":77.33333333333336,"length":2.6666666666666714,"value":-0.5111764705882352,"curve":24},{"time":80.00000000000003,"length":2.6666666666666714,"value":-0.6411764705882351,"curve":24},{"time":82.6666666666667,"length":2.6666666666666714,"value":-1.3611764705882354,"curve":24},{"time":85.33333333333337,"length":2.6666666666666714,"value":-0.4911764705882345,"curve":24},{"time":88.00000000000004,"length":1.3333333333333286,"value":-1.5411764705882351,"curve":24},{"time":89.33333333333337,"length":1.333333333333286,"value":-1.016,"curve":28,"speed":0.5000000000000079,"amp":3},{"time":90.66666666666666},{"time":91.99999999999999,"length":1.3333333333333428,"curve":20,"amp":6},{"time":93.33333333333333},{"time":95.99999999999999},{"time":98.66666666666666},{"time":101.33333333333333},{"time":102.66666666666666,"length":1.3333333333333428,"curve":20,"amp":6},{"time":104},{"time":106.66666666666666},{"time":109.33333333333333},{"time":111.33333333333333,"value":0.56},{"time":112,"length":5.333333333333329,"value":0.56,"curve":24,"speed":0.5000000000000013,"amp":-1.0400000000000003},{"time":117.33333333333333,"length":3.999999999999986,"value":0.6199999999999997,"curve":24,"speed":0.5000000000000012,"amp":-1.0400000000000003},{"time":121.33333333333331,"length":1.3333333333333428,"value":-0.8499999999999985,"curve":24,"speed":1.9999999999999891,"amp":1.2399999999999998},{"time":122.66666666666666,"length":5.333333333333329,"value":0.37000000000000166,"curve":24,"speed":0.5000000000000013,"amp":-0.7100000000000002},{"time":127.99999999999999,"length":2.6666666666666714,"value":-0.71,"curve":24,"speed":0.9999999999999998,"amp":0.71}]}],["Camera/roll",{"items":[{"time":5.333333333333334,"length":21.333333333333332,"value":-0.2500000000000003,"curve":21,"speed":0.1875},{"time":32,"value":-1.190000000000011},{"time":37.33333333333333,"length":5.333333333333329,"value":-0.3,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":48},{"time":53.333333333333336,"value":0.25},{"time":56},{"time":58.666666666666664,"value":-0.14},{"time":61.333333333333336,"value":-0.460000000000002},{"time":64},{"time":66.66666666666666},{"time":69.33333333333333,"value":0.54},{"time":71.99999999999999,"value":0.15},{"time":74.66666666666666,"value":-0.25},{"time":77.33333333333333,"value":0.5000000000000004},{"time":79.99999999999999,"value":0.33000000000000007},{"time":82.66666666666666,"value":0.23000000000000007},{"time":85.33333333333333,"value":2.380000000000001},{"time":88},{"time":89.33333333333331,"length":1.3333333333333428,"curve":28,"speed":0.4999999999999974,"amp":3},{"time":90.66666666666666},{"time":101.33333333333333},{"time":102.66666666666666,"value":-0.26000000000000006},{"time":104.00158889323498},{"time":112,"length":5.333333333333329,"curve":24,"speed":0.5000000000000013,"amp":-0.2700000000000004},{"time":117.33333333333333,"value":0.32999999999999585},{"time":122.66666666666666,"length":5.333333333333329,"value":0.10999999999999989,"curve":24,"speed":0.5000000000000013,"amp":0.049999999999999524},{"time":127.99999999999999}]}],["Camera/shake",{"items":[{},{"time":48,"length":1,"curve":27},{"time":50.666666666666664,"length":1,"curve":27},{"time":53.333333333333336,"length":1,"curve":27},{"time":56,"length":1,"curve":27},{"time":58.666666666666664,"length":1,"curve":27},{"time":61.333333333333336,"length":1,"curve":27},{"time":64,"length":1,"curve":27},{"time":66.66666666666666,"length":1,"curve":27},{"time":69.33333333333333,"length":1,"curve":27},{"time":71.99999999999999,"length":1,"curve":27},{"time":74.66666666666666,"length":1,"curve":27},{"time":77.33333333333333,"length":1,"curve":27},{"time":79.99999999999999,"length":1,"curve":27},{"time":82.66666666666666,"length":1,"curve":27},{"time":85.33333333333333,"length":1,"curve":27},{"time":88,"length":1,"curve":27},{"time":121.33333333333333,"length":1.3333333333333286,"value":0.01999999999999999,"reset":true}]}],["Camera/fov",{"items":[{"value":0.5},{"time":48,"value":0.8}]}],["DVi/active",{"items":[{},{"time":112,"length":16}]}],["DVi/amp",{"items":[{},{"time":112,"length":1.3333333333333286,"curve":31}]}],["DVi/offset",{"items":[{"time":112,"length":1.3333333333333286,"curve":31,"amp":8}]}],["Post/colorPreset",{"items":[{},{"time":48,"value":1}]}]],"labels":{"zero":0,"begin":5.333333333333333,"neuro":48,"porterfuckingrobinson":112,"fuckingcamellia":90.66666666666666,"psy":154.66666666666666},"guiSettings":{"snapTimeActive":true,"snapTimeInterval":0.1,"snapValueActive":true,"snapValueInterval":1,"snapBeatActive":true,"bpm":180,"beatOffset":0,"useBeatInGUI":true,"minimizedPrecisionTime":3,"minimizedPrecisionValue":3}} \ No newline at end of file +{"version":"4.1.1","resolution":400,"curves":[{"nodes":[[0,1,0,0,0.16140350877192983],[1,0,-0.47719298245614045]]},{"nodes":[[],[0.6666666666666666,1,-0.4560629631300563,-0.1852941176470587],[0.6666666666666666,0,0,0,0.26644908616188,0.1029411764705882],[2,1.1900000000000002,-0.1],[2,0.00686274509803933,0,0,0.10652741514360319],[2.6666666666666665,0.7000000000000001],[2.6666666666666665,0,0,0,0.1391644908616188,0.5215686274509802],[3.333333333333333,0.9,-0.5014360313315928,-0.22647058823529403],[3.333333333333333,0,0,0,0.3974946346535474,0.10043744264185422],[4.666666666666666,1.2000000000000002,0,0,0.1],[4.666666666666666],[5.333333333333333,0.7000000000000001,-0.24079400848586707,-0.49736814906842436],[5.333333333333333],[6,0.8,-0.4356422056174482,-0.17156862745098037],[6,0,0,0,0.32852235276081576,0.05490196078431372],[7.333333333333333,1.1441176470588237,-0.1,0,0.1],[7.333333333333333],[8,0.3333],[8,0,0,0,0.08806743643105143,0.4254901960784307],[8.666666666666666,0.9,-0.3995834676293276,-0.08230605476940031],[8.666666666666666],[9.4,1.1,-0.2785205844025618,-0.17156862745098012,0.2785205844025618,0.17156862745098012],[10,1.3],[10],[10.666666666666666,0.6000000000000001,-0.11225401796276425,-0.5783350570563074]],"fxs":[{"def":"repeat","params":{"interval":0.2299999999999996},"time":7.333333333333333,"length":0.6666666666666667}]},{"nodes":[[0,0,0,0,0.12284595300261082,0.061764705882352944],[0.6666666666666666,0.4,-0.1],[0.6666666666666666,0.06568627450980391],[2,0.2],[2.236344893790143,0.4,-0.1,0,0.1],[2.6666666666666665,0,-0.34575086532310695,0,0.04271204452939744],[2.769918291305192,0.1,-0.05130523784998782,0,0.09999999999999999],[3.333333333333333,0.1],[3.6666666666666665,0.32774323388394533],[4.666666666666666,0.30000000000000004],[4.666666666666666,0.023323265139934546],[5.333333333333333,0.1],[5.333333333333333],[6,0.30000000000000004],[6,0.02745098039215696,0,0,0.09974597868276715,-0.006845312262542842],[7.333333333333333,0.1,-0.1],[7.333333333333333,0.7000000000000001],[8.666666666666666,0.7000000000000001],[8.666666666666666,1],[10,0.1],[10.666666666666666]]},{"nodes":[[0,0,0,0,0.1],[0.3333333333333333,1,-0.1,0,0.1],[0.6666666666666666,0,-0.1],[1.9166666666666665,1,-1.0007832898172324,0,0.06],[2],[2.025071712633245,1,-0.044516971279373374,0,0.1],[2.1623944411350506,0.5,-0.07221383357420871,0.2738348538091391,0.07221383357420871,-0.2738348538091391],[2.6666666666666665,0,-0.1,0,0.1],[3,1,-0.2864316909347707,0,0.24406085208595923],[3.333333333333333,0,-0.036443741726782705,0.4106336078810942],[3.6666666666666665,0.7544057184393509,-0.08631141286229893,-0.07178801363349067,0.13346814639852406,0.11100980502520727],[4.666666666666666,1,-0.33942558746736295,-0.018347344929083464,0.09208797505724492,-0.3264027483296351],[4.851079899134173,0.30000000000000004,-0.07486057061026631,-0.013179150760383026,0.1],[5.0444017511428605,0.9656862745098039,-0.1,0,0.1],[5.333333333333333,0.044689231228471016,-0.1,0,0.1],[5.666666666666666,1,-0.1,0,0.1],[6,0,-0.1],[7.333333333333333,1,-1.0426547051383652,0,0.1],[7.6000000000000005,0.7000000000000001,-0.1,0,0.1],[8,1],[8,0,-0.1,0,0.1],[8.166666666666666,1,-0.099988538641853,-0.006965859231865531],[8.489362746562259,1,0,0,0.09998887794379856,-0.006861981819672439],[8.666666666666666,0,-0.11262160793957762,0.041182622607896624],[8.9,1,-0.11617352813418727,-0.020588235294117612,0.11617352813418727,0.020588235294117612],[9.04400609908224,0.15784313725490162,-0.0988340957186134,-0.027450980392156817,0.0988340957186134,0.027450980392156817],[9.3,1,-0.09200304954112025,-0.041176470588235224,0.09200304954112025,0.041176470588235224],[9.5,0.2,-0.09449923761471994,-0.06176470588235285,0.09449923761471994,0.06176470588235285],[9.666666666666666,1,-0.08899847522943988,-0.027450980392156817,0.08899847522943988,0.027450980392156817],[10,0.30000000000000004,-0.06149466330303955,-0.06176470588235285,0.06149466330303955,0.06176470588235285],[10,1,-0.1,0,0.1],[10.666666666666666,0.1,-0.1,0,0.1]],"fxs":[{"def":"repeat","params":{"interval":0.2490000000000001},"time":2,"length":0.6666666666666665},{"def":"sine","params":{"amp":0.26,"freq":8.590000000000002,"offset":0},"time":3.934411837854859,"length":0.7322548288118069},{"def":"sine","params":{"amp":0.4400000000000004,"freq":5.889999999999998,"offset":0},"time":10.234266741175261,"length":0.4323999254914046},{"def":"hermitePatch","params":{},"time":3.821100533282267,"length":0.12610951070520438,"row":1},{"def":"hermitePatch","params":{},"time":10.18270758125172,"length":0.09198590579094379,"row":1}]},{"nodes":[[0,0,0,0,0.1],[0.6666666666666666,1,-0.1],[0.6666666666666666,0.04000000000000001],[2,0.019999999999999997],[2,0.4],[2.6666666666666665],[3.333333333333333,0.2,-0.1],[3.333333333333333,0.5],[4.666666666666666,0.6000000000000001],[4.666666666666666,0.059594068084455554],[5.333333333333333],[6,0.1],[7.333333333333333,0,-1.3219093627620064,-0.061764705882352944],[8],[8,0.8],[10,0.8],[10,0.1],[10.666666666666666]]},{"nodes":[[0,0,0,0,0.11631853785900784,0.15784313725490196],[0.3333333333333333,0.2,-0.1,-0.06862745098039215],[0.3333333333333333,0,0,0,0.10652741514360313,0.034313725490196074],[0.6257615317667536,0.4,-0.035197899213743125,-0.1178437887562426,0.05762038784328031,0.19291505927163513],[1.5833333333333333,1.6588235294117648,-0.14423846823324632,-0.08235294117647059],[1.5833333333333333,0,0,0,0.0706266318537859,0.12352941176470589],[1.8333333333333333,0.6000000000000001,-0.07923141560987097,-0.16655319476142408,0.05223508415950609,0.10980392156862741],[2,0.8,-0.07118673688066018,-0.08235294117647059]]},{"nodes":[[0,0.7000000000000001,0,0,0.14895561357702347,-0.7343137254901958],[0.6666666666666666,0.01999999999999999,-0.07958650842810296,0.0005266470222471706,0.7602446192333546,-0.005030759268204068],[1.75,0.2,-0.175065274151436,-0.0480392156862745],[2,1,-0.1]]},{"nodes":[[0,0.264705882352941,0,0,0.2664490861618798,-0.3705882352941175],[1.75,0,-0.1,0,0.1],[2,1,-0.1]]},{"nodes":[[0,0,0,0,0.1],[0.3333333333333333,0.9460784313725474,-0.1,0,0.1],[1.3333333333333333,0.3627450980392144,-0.11276290315437737,0.31798356313506776,0.058202350589290165,-0.16412659044332573],[1.6666666666666665,1,-0.1,0,0.1],[1.7304177545691903,0.1,-0.1,0,0.1],[2,1.4000000000000001,-0.05099116999738633,-0.5930547707442783]],"fxs":[{"def":"sine","params":{"amp":0.3999999999999999,"freq":17.779999999999987,"offset":0},"time":0.6103133159268926,"length":0.7230200174064406},{"def":"hermitePatch","params":{},"time":0.5580939947780674,"length":0.08289817232376029,"row":1},{"def":"hermitePatch","params":{},"time":1.2836814621409922,"length":0.11631853785900792,"row":1}]},{"nodes":[[0,1,0,0,0.06843643544269563,-0.8715686274509801],[0.6666666666666666,0,-0.47719298245614045]]},{"nodes":[[],[2,2]]},{"nodes":[[0,0.1],[1.3333333333333333,0.30000000000000004]]},{"nodes":[[],[1.3333333333333333]]},{"nodes":[[0,0,0,0,0.07564543093234954,0.8647058823529409],[1.3333333333333333,1]]},{"nodes":[[],[0.3333333333333333,0.333],[0.3333333333333333,0,0,0,0.04050107306929012,0.096078431372549],[0.5833333333333333,0.30000000000000004,-0.10502788587794674,-0.054901960784313704],[1.3333333333333333]],"fxs":[{"def":"repeat","params":{"interval":0.2499999999999999},"time":0.3333333333333333,"length":1}]},{"nodes":[[0,0,0,0,0.041253263707571805],[0.1,0.472549019607836,-0.044516971279373374,-0.2333333333333331,0.037233176309202774,0.19515571003904697],[1.3333333333333333,1,-1.2945169712793734]]},{"nodes":[[0,0,0,0,0.1],[0.8,0.9,-0.10634811016391839,-0.09574850838471399,0.10634811016391839,0.09574850838471399],[1,1,-0.034837955875665044,-0.008249475331448328]]},{"nodes":[[0,1,0,0,0.08905168734696595,-0.6204705716763121],[0.8,0.1,-0.3657976094933656,0.05238364149449456,0.3657976094933656,-0.05238364149449456],[4,0,-0.5779474714155504]]},{"nodes":[[0,0,0,0,0.33333333333333337],[0.5833333333333333,0.13137254901960788,-0.06553651288762144,-0.14663596634864273,0.06553651288762144,0.14663596634864273],[0.6673629242819844,0.7480392156862745,-0.06736292428198434,-0.16470588235294117,0.06736292428198434,0.16470588235294117],[1.563751087902524,0.9519607843137257,-0.20443864229765013,-0.02745098039215686,0.20443864229765013,0.02745098039215686],[4,1,-0.5779474714155504]]},{"nodes":[[0,0,0,0,0.3154046997389034],[1.3333333333333333,1,-0.29908616187989556]]},{"nodes":[[],[1.3333333333333333,1]]},{"nodes":[[0,1,0,0,0.08905168734696595,-0.6204705716763121],[4,0,-3.146485330423383]]},{"nodes":[[0,1,0,0,0.15000000000000002],[0.25,1,-0.1,0,0.047780678851174936],[0.3333333333333333,0,-0.006527415143603133,0.3068670573880632,0.04083550913838122,0.1415436161688415],[0.4601827676240209,0,-0.031462140992167105,0.14076447719138005,0.031462140992167105,0.08154620354285587],[0.5515665796344648,0,-0.024934725848563967,0.05959145643516391,0.03472584856396867,0.040773101771427935],[0.6364229765013054,0,-0.024934725848563963,0.02509113955164797],[1,0,0,0,0.35333333333333333],[2.333333333333333,1,-0.3643603133159269,0,0.1]]},{"nodes":[[0,0,0,0,0.3317232375979112],[2,1,-1.3746781892076712]]},{"nodes":[[0,0,0,0,0.28276762402088773],[2.6666666666666665,1,-0.4673674842468357]]},{"nodes":[[0,0,0,0,0.429634464751958],[2.6666666666666665,0.99,-1.447911227154047]]},{"nodes":[[0,1,0,0,0.03472584856396867,-0.3705882352941176],[0.6666666666666666,0,-0.6417754569190601]]},{"nodes":[[0,0.4166666666666666,0,0,0.1],[0.6666666666666666,0,-0.664621409921671]]},{"nodes":[[0,0,0,0,0.1],[1.0065274151436032,0.9480392156862747,-0.791906005221932,-0.19215686274509805,0.17102946263472904,0.04150048712872081],[1.3333333333333333,1,-0.1]]},{"nodes":[[0,0,0,0,0.09780980358890974,0.020588235294117938],[0.3333333333333333,1,-0.04311987540653206,-0.9333333333333332]]},{"nodes":[[0,0.2],[1.3333333333333333,1.8,-1.0186386106576615,-0.609915244226372]]},{"nodes":[[0,0,0,0,0.011879895561357705,0.5490196078431372],[1.3333333333333333,1,-1.2292428198433418]]}],"channels":[["EnvironmentMap/accumulate",{"items":[{},{"time":5.333333333333333,"length":1,"value":0.1,"curve":26,"amp":0.9},{"time":48,"length":1,"value":0.1,"curve":26,"amp":0.9},{"time":110.66666666666666,"length":1,"value":0.1,"curve":26,"amp":0.9}]}],["Glitch/amp",{"items":[{},{"time":48,"length":1,"curve":0},{"time":50.666666666666664,"length":1,"curve":0},{"time":53.333333333333336,"length":1,"curve":0},{"time":56,"length":1,"curve":0},{"time":58.666666666666664,"length":1,"curve":0},{"time":61.333333333333336,"length":1,"curve":0},{"time":64,"length":1,"curve":0},{"time":66.66666666666666,"length":1,"curve":0},{"time":69.33333333333333,"length":1,"curve":0},{"time":71.99999999999999,"length":1,"curve":0},{"time":74.66666666666666,"length":1,"curve":0},{"time":77.33333333333333,"length":1,"curve":0},{"time":79.99999999999999,"length":1,"curve":0},{"time":82.66666666666666,"length":1,"curve":0},{"time":85.33333333333333,"length":1,"curve":0},{"time":88,"length":1,"curve":0},{"time":261.3333333333333}]}],["PixelSorter/amp",{"items":[{},{"time":48,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":50.666666666666664,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":53.333333333333336,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":56,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":58.666666666666664,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":61.333333333333336,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":64,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":66.66666666666666,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":69.33333333333333,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":71.99999999999999,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":74.66666666666666,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":77.33333333333333,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":79.99999999999999,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":82.66666666666666,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":85.33333333333333,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":87.99999999999999,"length":1.3333333333333357,"curve":9,"speed":0.4999999999999975},{"time":90.33333333333333,"length":0.3333333333333286,"curve":29,"speed":1.0000000000000153,"amp":-0.4},{"time":90.66666666666666},{"time":91.99999999999999,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":94.66666666666666,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":97.33333333333333,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":99.99999999999999,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":102.66666666666666,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":105.33333333333333,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":107.99999999999999,"length":1.3333333333333428,"value":0.2,"reset":true},{"time":110.66666666666666,"length":1.3333333333333428,"value":0.2,"reset":true}]}],["Serial/enable",{"items":[{},{"time":91.99999999999999,"length":1.3333333333333428},{"time":94.66666666666666,"length":1.3333333333333428},{"time":97.33333333333333,"length":1.3333333333333428},{"time":99.99999999999999,"length":1.3333333333333428},{"time":102.66666666666666,"length":1.3333333333333428},{"time":105.33333333333333,"length":1.3333333333333428},{"time":107.99999999999999,"length":1.3333333333333428},{"time":110.66666666666666,"length":1.3333333333333428}]}],["SceneBegin/active",{"items":[{},{"time":5.333333333333333,"length":42.666666666666664}]}],["Sync/first/clap",{"items":[{},{"time":27.666666666666664,"length":1.3333333333333321,"curve":15},{"time":28.999999999999996,"length":1.3333333333333321,"value":1,"curve":15},{"time":30.33333333333333,"length":1.3333333333333321,"value":2,"curve":15},{"time":31.66666666666666,"length":1.3333333333333321,"value":3,"curve":15},{"time":32.99999999999999,"length":1.3333333333333321,"value":4,"curve":15},{"time":34.33333333333333,"length":1.3333333333333321,"value":5,"curve":15},{"time":35.66666666666666,"length":1.3333333333333321,"value":6,"curve":15},{"time":36.99999999999999,"length":1.3333333333333321,"value":7,"curve":15},{"time":38.33333333333332,"length":1.3333333333333321,"value":8,"curve":15},{"time":39.66666666666665,"length":1.3333333333333321,"value":9,"curve":15},{"time":40.99999999999998,"length":1.3333333333333321,"value":10,"curve":15},{"time":42.33333333333331,"length":1.3333333333333321,"value":11,"curve":15}]}],["Condition/hahaRatio",{"items":[{},{"time":42.666666666666664,"length":4,"curve":25}]}],["Condition/phaseWidth",{"items":[{"value":0.1},{"time":27.666666666666664,"length":20.333333333333332,"value":0.1,"curve":16,"speed":0.049180327868852465,"amp":0.5888750576601328}]}],["SceneNeuro/active",{"items":[{},{"time":48,"length":42.666666666666664}]}],["sufferText/push",{"items":[{"time":48},{"time":50.666666666666664,"value":1},{"time":53.333333333333336,"value":2},{"time":56,"value":3},{"time":58.666666666666664,"value":4},{"time":61.333333333333336,"value":5},{"time":64,"value":6},{"time":66.66666666666666,"value":7},{"time":69.33333333333333,"value":8},{"time":71.99999999999999,"value":9},{"time":74.66666666666666,"value":10},{"time":77.33333333333333,"value":11},{"time":79.99999999999999,"value":12},{"time":82.66666666666666,"value":13},{"time":85.33333333333333,"value":14},{"time":87.99999999999999,"value":15}]}],["IFSPistons/group0/rot",{"items":[{},{"time":48.666666666666664,"length":2,"curve":23},{"time":54,"length":2,"value":1,"curve":23},{"time":59.333333333333336,"length":2,"value":2,"curve":23},{"time":64.66666666666666,"length":2,"value":3,"curve":23},{"time":69.99999999999999,"length":2,"value":4,"curve":23},{"time":75.33333333333333,"length":2,"value":5,"curve":23},{"time":80.66666666666666,"length":2,"value":6,"curve":23},{"time":85.99999999999999,"length":2,"value":7,"curve":23}]}],["IFSPistons/group1/rot",{"items":[{},{"time":51.333333333333336,"length":2,"curve":23},{"time":56.666666666666664,"length":2,"value":1,"curve":23},{"time":62,"length":2,"value":2,"curve":23},{"time":67.33333333333333,"length":2,"value":3,"curve":23},{"time":72.66666666666666,"length":2,"value":4,"curve":23},{"time":77.99999999999999,"length":2,"value":5,"curve":23},{"time":83.33333333333333,"length":2,"value":6,"curve":23},{"time":88.66666666666666,"length":2,"value":7,"curve":23}]}],["IFSPistons/group0/pos",{"items":[{"value":3},{"time":47.666666666666664,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":53,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":58.333333333333336,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":63.666666666666664,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":69.03333333333333,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":74.33333333333333,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":79.66666666666666,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":84.99999999999999,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998}]}],["IFSPistons/group1/pos",{"items":[{"value":3},{"time":50.333333333333336,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":55.666666666666664,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":61,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":66.33333333333333,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":71.66666666666666,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":76.99999999999999,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":82.33333333333333,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998},{"time":87.66666666666666,"length":2.3333333333333357,"value":1.2000000000000002,"curve":22,"amp":1.7999999999999998}]}],["Music/NEURO_TIME",{"items":[{},{"time":48,"length":10.666666666666664,"curve":1},{"time":58.666666666666664,"length":8.666666666666671,"curve":1},{"time":67.33333333333333,"length":1.999999999999993,"curve":5},{"time":69.33333333333333,"length":10.666666666666664,"curve":1},{"time":79.99999999999999,"length":8.666666666666671,"curve":1},{"time":88.66666666666666,"length":0.6666666666666714,"curve":5},{"time":89.33333333333333,"length":1.3333333333333286,"curve":30},{"time":90.66666666666666,"length":1.3333333333333286,"curve":10,"offset":1.4210854715202004e-14},{"time":91.99999999999999,"length":1.3333333333333286,"curve":14},{"time":93.33333333333331,"length":1.3333333333333428,"curve":10},{"time":95.99999999999999,"length":1.3333333333333428,"curve":10},{"time":97.33333333333333,"length":1.3333333333333286,"curve":14},{"time":98.66666666666666,"length":1.3333333333333428,"curve":10},{"time":101.33333333333333,"length":1.3333333333333428,"curve":10},{"time":102.66666666666667,"length":1.3333333333333144,"curve":14},{"time":103.99999999999999,"length":1.3333333333333428,"curve":10},{"time":106.66666666666666,"length":1.3333333333333428,"curve":10},{"time":108,"length":1.3333333333333286,"curve":14},{"time":109.33333333333333,"length":1.3333333333333428,"curve":10}]}],["Music/NEURO_DETUNE",{"items":[{},{"time":48,"length":10.666666666666664,"curve":2},{"time":58.666666666666664,"length":8.666666666666671,"curve":2},{"time":67.33333333333333,"length":1.999999999999993,"curve":6},{"time":69.33333333333333,"length":10.666666666666664,"curve":2},{"time":79.99999999999999,"length":8.666666666666671,"curve":2},{"time":88.66666666666666,"length":2,"curve":6,"speed":0.8333333333333358},{"time":90.66666666666666,"length":1.3333333333333286,"curve":11},{"time":93.33333333333333,"length":1.3333333333333286,"curve":11},{"time":95.99999999999999,"length":1.3333333333333286,"curve":11},{"time":97.33333333333331,"length":1.3333333333333428,"value":0.77},{"time":98.66666666666666,"length":1.3333333333333286,"curve":11},{"time":101.33333333333333,"length":1.3333333333333286,"curve":11},{"time":103.99999999999999,"length":1.3333333333333286,"curve":11},{"time":106.66666666666666,"length":1.3333333333333286,"curve":11},{"time":107.99999999999999,"length":1.3333333333333428,"value":0.77},{"time":109.33333333333333,"length":1.3333333333333286,"curve":11}]}],["Music/NEURO_DETUNE_PHASE",{"items":[{},{"time":48,"length":10.666666666666664,"curve":4},{"time":58.666666666666664,"length":8.666666666666671,"curve":4},{"time":67.33333333333333,"length":1.999999999999993,"curve":7},{"time":69.33333333333333,"length":10.666666666666664,"curve":4},{"time":79.99999999999999,"length":8.666666666666671,"curve":4},{"time":88.66666666666666,"length":2,"curve":7,"speed":0.8333333333333358},{"time":90.66666666666666,"length":1.3333333333333428,"curve":12},{"time":93.33333333333333,"length":1.3333333333333428,"curve":12},{"time":95.99999999999999,"length":1.3333333333333428,"curve":12},{"time":98.66666666666666,"length":1.3333333333333428,"curve":12},{"time":101.33333333333333,"length":1.3333333333333428,"curve":12},{"time":103.99999999999999,"length":1.3333333333333428,"curve":12},{"time":106.66666666666666,"length":1.3333333333333428,"curve":12},{"time":109.33333333333333,"length":1.3333333333333428,"curve":12}]}],["Music/NEURO_WUB_AMP",{"items":[{},{"time":48,"length":10.668578038364203,"curve":3},{"time":58.6685780383642,"length":8.664755294969133,"curve":3},{"time":67.33333333333333,"length":2.0038227433950624,"curve":8},{"time":69.33715607672839,"length":10.668578038364203,"curve":3},{"time":80.0057341150926,"length":8.660932551574064,"curve":3},{"time":88.66666666666666,"length":2,"curve":8,"speed":0.8028871529270708},{"time":90.66666666666666,"length":1.3333333333333333,"curve":13},{"time":93.33333333333333,"length":1.3333333333333333,"curve":13},{"time":95.99999999999999,"length":1.3333333333333333,"curve":13},{"time":98.66666666666666,"length":1.3333333333333333,"curve":13},{"time":101.33333333333333,"length":1.3333333333333333,"curve":13},{"time":103.99999999999999,"length":1.3333333333333333,"curve":13},{"time":106.66666666666666,"length":1.3333333333333333,"curve":13},{"time":109.33333333333333,"length":1.3333333333333333,"curve":13}]}],["Music/NEURO_WUB_FREQ",{"items":[{},{"time":48,"length":2,"value":1},{"time":50,"length":0.6666666666666643,"value":0.49999999999999967},{"time":50.666666666666664,"length":0.6666666666666714,"value":1},{"time":51.333333333333336,"length":1.3333333333333286,"value":2},{"time":52.666666666666664,"length":0.6666666666666714,"value":2.5},{"time":53.333333333333336,"length":0.6666666666666643,"value":1},{"time":54,"length":1.3333333333333357,"value":1},{"time":55.333333333333336,"length":0.6666666666666643,"value":2},{"time":56,"length":2,"value":1},{"time":58,"length":0.6666666666666643,"value":2},{"time":58.666666666666664,"length":0.6666666666666714,"value":1},{"time":59.333333333333336,"length":1.3333333333333286,"value":2.1000000000000014},{"time":60.666666666666664,"length":0.6666666666666714,"value":0.5},{"time":61.333333333333336,"length":0.6666666666666643,"value":7},{"time":62,"length":1.3333333333333357,"value":3},{"time":63.333333333333336,"length":0.6666666666666714,"value":1},{"time":64,"length":0.6666666666666714,"value":0.9600000000000006},{"time":64.66666666666667,"length":1.3333333333333215,"value":6},{"time":66,"length":0.6666666666666785,"value":10.840000000000003},{"time":66.66666666666667,"length":0.6666666666666572,"value":1},{"time":67.33333333333333,"length":1.3333333333333428,"value":3.989999999999996},{"time":68.66666666666667,"length":0.6666666666666572,"value":4.109999999999999},{"time":69.33333333333333,"length":2,"value":1},{"time":71.33333333333333,"length":0.6666666666666643,"value":0.49999999999999967},{"time":71.99999999999999,"length":0.6666666666666714,"value":1},{"time":72.66666666666666,"length":1.3333333333333286,"value":2},{"time":73.99999999999999,"length":0.6666666666666714,"value":2.5},{"time":74.66666666666666,"length":0.6666666666666643,"value":1},{"time":75.33333333333333,"length":1.3333333333333357,"value":1},{"time":76.66666666666667,"length":0.6666666666666643,"value":2},{"time":77.33333333333333,"length":2,"value":1},{"time":79.33333333333333,"length":0.6666666666666643,"value":2},{"time":79.99999999999999,"length":0.6666666666666714,"value":1},{"time":80.66666666666666,"length":1.3333333333333286,"value":2.1000000000000014},{"time":81.99999999999999,"length":0.6666666666666714,"value":0.5},{"time":82.66666666666666,"length":0.6666666666666643,"value":7},{"time":83.33333333333333,"length":1.3333333333333357,"value":3},{"time":84.66666666666667,"length":0.6666666666666714,"value":1},{"time":85.33333333333334,"length":0.6666666666666714,"value":0.9600000000000006},{"time":86.00000000000001,"length":1.3333333333333144,"value":6},{"time":87.33333333333333,"length":0.6666666666666856,"value":10.840000000000003},{"time":88.00000000000001,"length":0.6666666666666572,"value":1},{"time":88.66666666666667,"length":1.3333333333333428,"value":3.9899999999999993},{"time":90.00000000000001,"length":0.6666666666666572,"value":4.109999999999999},{"time":90.66666666666667,"length":1.3333333333333144,"value":1},{"time":93.33333333333333,"length":1.3333333333333144,"value":1},{"time":95.99999999999999,"length":1.3333333333333144,"value":1},{"time":98.66666666666666,"length":1.3333333333333144,"value":1},{"time":101.33333333333333,"length":1.3333333333333144,"value":1},{"time":103.99999999999999,"length":1.3333333333333144,"value":1},{"time":106.66666666666666,"length":1.3333333333333144,"value":1},{"time":109.33333333333333,"length":1.3333333333333144,"value":1}]}],["Trails/active",{"items":[{}]}],["SceneCrystals/active",{"items":[{},{"time":111.33333333333333,"length":41.999999999999986}]}],["FlickyParticles/active",{"items":[{},{"time":48,"length":42.666666666666664},{"time":90.66666666666666,"length":1.3333333333333286},{"time":93.33333333333333,"length":1.3333333333333286},{"time":95.99999999999999,"length":1.3333333333333286},{"time":98.66666666666666,"length":1.3333333333333286},{"time":101.33333333333333,"length":1.3333333333333286},{"time":103.99999999999999,"length":1.3333333333333286},{"time":106.66666666666666,"length":1.3333333333333286},{"time":109.33333333333333,"length":1.3333333333333286},{"time":111.33333333333333,"length":41.999999999999986}]}],["SphereParticles/active",{"items":[{},{"time":90.66666666666666,"length":1.3333333333333286},{"time":93.33333333333333,"length":1.3333333333333286},{"time":95.99999999999999,"length":1.3333333333333286},{"time":98.66666666666666,"length":1.3333333333333286},{"time":101.33333333333333,"length":1.3333333333333286},{"time":103.99999999999999,"length":1.3333333333333286},{"time":106.66666666666666,"length":1.3333333333333286},{"time":109.33333333333333,"length":1.3333333333333286},{"time":111.33333333333333,"length":41.999999999999986}]}],["SceneCrystals/ChaosTorus/active",{"items":[{"time":-8.200000000000001},{"time":121.33333333333333,"length":1.3333333333333286}]}],["FlashyTerrain/active",{"items":[{},{"time":91.99999999999999,"length":1.3333333333333428},{"time":102.66666666666666,"length":1.3333333333333428}]}],["Camera/pos/x",{"items":[{},{"time":48,"value":0.029999999999999923},{"time":50.666666666666664,"value":0.22},{"time":53.333333333333336,"value":-0.3300000000000002},{"time":58.666666666666664,"value":0.030000000000000478},{"time":61.333333333333336,"value":0.4300000000000005},{"time":64,"value":-0.3099999999999998},{"time":66.66666666666666,"value":0.04000000000000473},{"time":69.33333333333333,"value":0.2500000000000004},{"time":71.99999999999999,"value":0.22},{"time":74.66666666666666,"value":0.18999999999999975},{"time":77.33333333333333,"value":-0.33000000000000024},{"time":79.99999999999999,"value":0.030000000000000478},{"time":82.66666666666666,"value":-0.32999999999999946},{"time":85.33333333333333,"value":6.349087922075114e-16},{"time":88},{"time":90.66666666666666},{"time":117.33333333333333,"value":0.2599999999999958},{"time":122.66666666666666,"value":-0.25000000000000006},{"time":128}]}],["Camera/pos/y",{"items":[{},{"time":48},{"time":53.333333333333336,"value":0.18999999999999986},{"time":58.666666666666664},{"time":69.33333333333333},{"time":74.66666666666666,"value":-0.2599999999999998},{"time":79.99999999999999},{"time":87.99999999999999},{"time":90.66666666666666},{"time":102.66666666666666,"value":0.8799999999999999},{"time":104},{"time":117.33333333333333,"value":0.009999999999995882},{"time":122.66666666666666},{"time":128}]}],["Camera/pos/z",{"items":[{},{"time":48},{"time":64,"value":-0.12999999999999998},{"time":66.66666666666666,"value":0.04000000000000473},{"time":69.33333333333333},{"time":85.33333333333333,"value":-0.019999999999999588},{"time":87.99999999999999},{"time":90.66666666666666}]}],["Camera/rot/r",{"items":[{},{"time":5.333333333333333,"length":4,"value":5,"curve":17,"amp":10},{"time":26.033333333333335,"length":4,"value":5,"curve":18,"amp":-2},{"time":42,"length":4,"value":3,"curve":18,"amp":4},{"time":48,"value":3.316984746376379},{"time":50.666666666666664,"value":4.160000000000001},{"time":53.33333333333333,"value":2.9236224967058},{"time":56,"value":4.760000000000006},{"time":58.666666666666664,"value":3.490000000000002},{"time":61.333333333333336,"value":3.289999999999999},{"time":64,"value":2.519999999999998},{"time":66.66666666666666,"value":5.050000000000004},{"time":69.33333333333333,"value":4.170000000000001},{"time":71.99999999999999,"value":4.399999999999997},{"time":74.66666666666666,"value":2.699999999999999},{"time":77.33333333333333,"value":5.470000000000008},{"time":79.99999999999999,"value":3.4499999999999997},{"time":82.66666666666666,"value":4.43},{"time":85.33333333333333,"value":2.9000000000000017},{"time":88,"value":6.6},{"time":89.33333333333331,"length":1.3333333333333428,"value":6.6,"curve":28,"speed":0.4999999999999974,"amp":4.4999999999999964},{"time":90.66666666666666,"length":1.3333333333333286,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":93.33333333333333,"length":1.3333333333333286,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":96,"length":1.3333333333333286,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":98.66666666666667,"length":1.3333333333333144,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":101.33333333333334,"length":1.3333333333333144,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":104.00000000000001,"length":1.3333333333333144,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":106.66666666666669,"length":1.3333333333333002,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":109.33333333333336,"length":1.3333333333333002,"value":5,"curve":17,"speed":3.000000000000011,"amp":5},{"time":111.33333333333333,"length":4,"value":5.589999999999992,"curve":18,"speed":1.0000000000000002,"amp":-2},{"time":117.33333333333333,"value":2.939999999999995},{"time":121.33333333333333,"length":1.3333333333333286,"value":6.110000000000004,"curve":31,"amp":-0.99},{"time":122.66666666666666,"length":5.333333333333329,"value":3.4599999999999933,"curve":24,"speed":0.5000000000000013,"amp":-1.2000000000000026},{"time":127.99999999999999,"length":2.6666666666666714,"value":4.969999999999989,"curve":24,"speed":0.9999999999999999,"amp":-1.2000000000000026},{"time":133.33333333333331,"value":2.6600000000000015},{"time":144,"value":2.0499999999999976}]}],["Camera/rot/t",{"items":[{},{"time":26.666666666666664,"length":5.333333333333332,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":31.999999999999996,"length":5.333333333333332,"value":1.2000000000000002,"curve":19,"speed":0.2499999999999999,"amp":-0.9},{"time":37.333333333333336,"length":5.333333333333329,"value":-0.3,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":48,"value":0.12000000000000001},{"time":50.666666666666664,"value":-0.30999999999999495},{"time":53.333333333333336,"value":0.5200000000000048},{"time":56,"value":-0.029999999999995274},{"time":58.666666666666664,"value":0.2600000000000046},{"time":61.333333333333336,"value":-0.2899999999999953},{"time":64,"value":-0.06999999999999539},{"time":66.66666666666666,"value":0.2600000000000049},{"time":69.33333333333333,"value":0.12000000000000001},{"time":71.99999999999999,"value":0.7500000000000049},{"time":74.66666666666666,"value":-0.3599999999999952},{"time":77.33333333333333,"value":-1.1999999999999946},{"time":79.99999999999999,"value":0.2600000000000046},{"time":82.65764496093742,"value":-0.2899999999999953},{"time":85.33333333333333,"value":0.39000000000000457},{"time":87.99999999999999,"value":-0.029999999999995274},{"time":90.66666666666666},{"time":91.99999999999999,"value":0.5700000000000002},{"time":93.33333333333333},{"time":95.99999999999999},{"time":98.66666666666666},{"time":101.33333333333333},{"time":102.66666666666666,"value":-0.32},{"time":103.99999999999999},{"time":106.66666666666666},{"time":109.33333333333333},{"time":111.33333333333333,"value":0.14999999999999633},{"time":117.33333333333333,"value":0.5699999999999952},{"time":121.33333333333331,"length":1.3333333333333428,"value":0.37000000000000166,"curve":24,"speed":1.9999999999999891,"amp":-0.08000000000000007},{"time":122.66666666666666,"value":0.09999999999999977},{"time":128},{"time":133.33333333333331,"value":0.4699999999999978},{"time":144,"value":-0.3700000000000031}]}],["Camera/rot/p",{"items":[{},{"time":26.666666666666664,"length":5.333333333333332,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":32,"value":-2.3500000000000125},{"time":37.333333333333336,"length":5.333333333333329,"value":-0.3,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":48,"length":2.6666666666666643,"curve":24},{"time":50.666666666666664,"length":2.6666666666666714,"value":-0.9690196078431373,"curve":24},{"time":53.333333333333336,"length":2.6666666666666714,"value":-0.33999999999999997,"curve":24},{"time":56.00000000000001,"length":2.6666666666666714,"value":-0.39117647058823524,"curve":24},{"time":58.66666666666668,"length":2.6666666666666714,"value":-0.12117647058823516,"curve":24},{"time":61.33333333333335,"length":2.6666666666666714,"value":-1.4311764705882353,"curve":24},{"time":64.00000000000003,"length":2.6666666666666714,"value":-0.29117647058823515,"curve":24},{"time":66.66666666666669,"length":2.6666666666666714,"value":-0.7811764705882349,"curve":24},{"time":69.33333333333336,"length":2.6666666666666643,"curve":24},{"time":72.00000000000001,"length":2.6666666666666714,"value":-0.9690196078431373,"curve":24},{"time":74.66666666666669,"length":2.6666666666666714,"value":-0.51,"curve":24},{"time":77.33333333333336,"length":2.6666666666666714,"value":-0.5111764705882352,"curve":24},{"time":80.00000000000003,"length":2.6666666666666714,"value":-0.6411764705882351,"curve":24},{"time":82.6666666666667,"length":2.6666666666666714,"value":-1.3611764705882354,"curve":24},{"time":85.33333333333337,"length":2.6666666666666714,"value":-0.4911764705882345,"curve":24},{"time":88.00000000000004,"length":1.3333333333333286,"value":-1.5411764705882351,"curve":24},{"time":89.33333333333337,"length":1.333333333333286,"value":-1.016,"curve":28,"speed":0.5000000000000079,"amp":3},{"time":90.66666666666666},{"time":91.99999999999999,"length":1.3333333333333428,"curve":20,"amp":6},{"time":93.33333333333333},{"time":95.99999999999999},{"time":98.66666666666666},{"time":101.33333333333333},{"time":102.66666666666666,"length":1.3333333333333428,"curve":20,"amp":6},{"time":104},{"time":106.66666666666666},{"time":109.33333333333333},{"time":111.33333333333333,"value":0.56},{"time":112,"length":5.333333333333329,"value":0.56,"curve":24,"speed":0.5000000000000013,"amp":-1.0400000000000003},{"time":117.33333333333333,"length":3.999999999999986,"value":0.6199999999999997,"curve":24,"speed":0.5000000000000012,"amp":-1.0400000000000003},{"time":121.33333333333331,"length":1.3333333333333428,"value":-0.3799999999999981,"curve":24,"speed":1.9999999999999891,"amp":0.56},{"time":122.66666666666666,"length":5.333333333333329,"value":0.37000000000000166,"curve":24,"speed":0.5000000000000013,"amp":-0.7100000000000002},{"time":127.99999999999999,"length":2.6666666666666714,"value":-0.71,"curve":24,"speed":0.9999999999999998,"amp":0.71},{"time":133.33333333333331,"length":10.666666666666686,"curve":20,"speed":0.12499999999999978,"amp":26.999999999999986},{"time":144,"length":10.666666666666686,"curve":20,"speed":0.12499999999999978,"amp":26.999999999999986}]}],["Camera/roll",{"items":[{"time":5.333333333333334,"length":21.333333333333332,"value":-0.2500000000000003,"curve":21,"speed":0.1875},{"time":32,"value":-1.190000000000011},{"time":37.33333333333333,"length":5.333333333333329,"value":-0.3,"curve":19,"speed":0.2499999999999999,"amp":0.30000000000000004},{"time":48},{"time":53.333333333333336,"value":0.25},{"time":56},{"time":58.666666666666664,"value":-0.14},{"time":61.333333333333336,"value":-0.460000000000002},{"time":64},{"time":66.66666666666666},{"time":69.33333333333333,"value":0.54},{"time":71.99999999999999,"value":0.15},{"time":74.66666666666666,"value":-0.25},{"time":77.33333333333333,"value":0.5000000000000004},{"time":79.99999999999999,"value":0.33000000000000007},{"time":82.66666666666666,"value":0.23000000000000007},{"time":85.33333333333333,"value":2.380000000000001},{"time":88},{"time":89.33333333333331,"length":1.3333333333333428,"curve":28,"speed":0.4999999999999974,"amp":3},{"time":90.66666666666666},{"time":101.33333333333333},{"time":102.66666666666666,"value":-0.26000000000000006},{"time":104.00158889323498},{"time":112,"length":5.333333333333329,"curve":24,"speed":0.5000000000000013,"amp":-0.2700000000000004},{"time":117.33333333333333,"value":0.32999999999999585},{"time":122.66666666666666,"length":5.333333333333329,"value":0.10999999999999989,"curve":24,"speed":0.5000000000000013,"amp":0.049999999999999524},{"time":127.99999999999999},{"time":133.33333333333331,"value":0.4699999999999978},{"time":144,"value":-0.3300000000000022}]}],["Camera/shake",{"items":[{},{"time":48,"length":1,"curve":27},{"time":50.666666666666664,"length":1,"curve":27},{"time":53.333333333333336,"length":1,"curve":27},{"time":56,"length":1,"curve":27},{"time":58.666666666666664,"length":1,"curve":27},{"time":61.333333333333336,"length":1,"curve":27},{"time":64,"length":1,"curve":27},{"time":66.66666666666666,"length":1,"curve":27},{"time":69.33333333333333,"length":1,"curve":27},{"time":71.99999999999999,"length":1,"curve":27},{"time":74.66666666666666,"length":1,"curve":27},{"time":77.33333333333333,"length":1,"curve":27},{"time":79.99999999999999,"length":1,"curve":27},{"time":82.66666666666666,"length":1,"curve":27},{"time":85.33333333333333,"length":1,"curve":27},{"time":88,"length":1,"curve":27},{"time":121.33333333333333,"length":1.3333333333333286,"value":0.01999999999999999,"reset":true}]}],["Camera/fov",{"items":[{"value":0.5},{"time":48,"value":0.8}]}],["DVi/amp",{"items":[{},{"time":112,"length":1.3333333333333286,"curve":31}]}],["DVi/offset",{"items":[{"time":112,"length":1.3333333333333286,"curve":31,"amp":8}]}],["Post/colorPreset",{"items":[{},{"time":48,"value":1}]}],["Greetings/active",{"items":[{},{"time":133.33333333333331,"length":20}]}]],"labels":{"zero":0,"begin":5.333333333333333,"neuro":48,"porterfuckingrobinson":112,"fuckingcamellia":90.66666666666666,"psy":154.66666666666666},"guiSettings":{"snapTimeActive":true,"snapTimeInterval":0.1,"snapValueActive":true,"snapValueInterval":1,"snapBeatActive":true,"bpm":180,"beatOffset":0,"useBeatInGUI":true,"minimizedPrecisionTime":3,"minimizedPrecisionValue":3}} \ No newline at end of file diff --git a/src/config-hot.ts b/src/config-hot.ts index 491cbe5..db2d33e 100644 --- a/src/config-hot.ts +++ b/src/config-hot.ts @@ -3,7 +3,7 @@ export const // RTINSPECTOR_MULTIPLE = true, RTINSPECTOR_CAPTURE_NAME: string | null = null, // RTINSPECTOR_CAPTURE_NAME: string | null = 'PixelSorter/index', - // RTINSPECTOR_CAPTURE_NAME: string | null = 'Bloom/swap1', + // RTINSPECTOR_CAPTURE_NAME: string | null = 'Greetings/intermediate0', // RTINSPECTOR_CAPTURE_NAME: string | null = 'main/postSwap0', // RTINSPECTOR_CAPTURE_NAME: string | null = 'DeferredCamera/cameraTarget', RTINSPECTOR_CAPTURE_INDEX = 0, diff --git a/src/config.ts b/src/config.ts index f65f496..2009633 100644 --- a/src/config.ts +++ b/src/config.ts @@ -5,7 +5,7 @@ export const AO_RESOLUTION_RATIO = 1.0, RESOLUTION = [ 1280, 720 ], MUSIC_BPM = 180, - START_POSITION = 45, + START_POSITION = 112, MUSIC_LENGTH = 213, MUSIC_AUTOMATON_TEXTURE_HEIGHT = 16, IBLLUT_ITER = 400, diff --git a/src/entities/DVi.ts b/src/entities/DVi.ts index 742f0d7..333cf5d 100644 --- a/src/entities/DVi.ts +++ b/src/entities/DVi.ts @@ -4,12 +4,12 @@ import { Entity } from '../heck/Entity'; import { Material } from '../heck/Material'; import { Quad } from '../heck/components/Quad'; import { RenderTarget } from '../heck/RenderTarget'; +import { auto } from '../globals/automaton'; import { dummyRenderTarget } from '../globals/dummyRenderTarget'; import { quadGeometry } from '../globals/quadGeometry'; import { randomTexture } from '../globals/randomTexture'; import dviFrag from '../shaders/dvi.frag'; import quadVert from '../shaders/quad.vert'; -import { auto } from '../globals/automaton'; export interface DViOptions { input: BufferRenderTarget; diff --git a/src/entities/DeferredCamera.ts b/src/entities/DeferredCamera.ts index 70ae467..acf6aad 100644 --- a/src/entities/DeferredCamera.ts +++ b/src/entities/DeferredCamera.ts @@ -15,7 +15,6 @@ import { randomTexture } from '../globals/randomTexture'; import aoFrag from '../shaders/ao.frag'; import quadVert from '../shaders/quad.vert'; import shadingFrag from '../shaders/shading.frag'; -import { auto } from '../globals/automaton'; export interface DeferredCameraOptions { scenes: Entity[]; diff --git a/src/entities/Greetings.ts b/src/entities/Greetings.ts new file mode 100644 index 0000000..31eb175 --- /dev/null +++ b/src/entities/Greetings.ts @@ -0,0 +1,319 @@ +import { BufferRenderTarget } from '../heck/BufferRenderTarget'; +import { Entity } from '../heck/Entity'; +import { GLCatTexture } from '@fms-cat/glcat-ts'; +import { InstancedGeometry } from '../heck/InstancedGeometry'; +import { Lambda } from '../heck/components/Lambda'; +import { Material } from '../heck/Material'; +import { Mesh } from '../heck/components/Mesh'; +import { Quad } from '../heck/components/Quad'; +import { SPRITE_SHEET_SIZE, createFontSpriteSheet } from '../utils/createFontSpriteSheet'; +import { Swap, TRIANGLE_STRIP_QUAD } from '@fms-cat/experimental'; +import { auto } from '../globals/automaton'; +import { calcCharPos } from '../utils/calcCharPos'; +import { dummyRenderTarget } from '../globals/dummyRenderTarget'; +import { gl, glCat } from '../globals/canvas'; +import { quadGeometry } from '../globals/quadGeometry'; +import blurFrag from '../shaders/blur.frag'; +import greetingsFrag from '../shaders/greetings.frag'; +import greetingsPreBeatmaniaFrag from '../shaders/greetings-pre-beatmania.frag'; +import greetingsPreLainFrag from '../shaders/greetings-pre-lain.frag'; +import greetingsVert from '../shaders/greetings.vert'; +import quadVert from '../shaders/quad.vert'; + +const INSTANCES = 256; + +// -- preprocessor --------------------------------------------------------------------------------- +const materialBlurH = new Material( + quadVert, + blurFrag, + { initOptions: { geometry: quadGeometry, target: dummyRenderTarget } }, +); + +const materialBlurV = new Material( + quadVert, + blurFrag, + { + defines: [ 'IS_VERTICAL 1' ], + initOptions: { geometry: quadGeometry, target: dummyRenderTarget } + }, +); + +const materialPreBeatmania = new Material( + quadVert, + greetingsPreBeatmaniaFrag, + { initOptions: { geometry: quadGeometry, target: dummyRenderTarget } }, +); + +const materialPreLain = new Material( + quadVert, + greetingsPreLainFrag, + { initOptions: { geometry: quadGeometry, target: dummyRenderTarget } }, +); + +/** + * Do not add me to its components! + * It's just for preprocessing + */ +const quadPreprocessor = new Quad( { + name: process.env.DEV && 'Greetings/quadPreprocessor', +} ); + +// -- spritesheets --------------------------------------------------------------------------------- +const styles = [ + { + font: 'Bold 96px Courier New', + preprocessorMaterials: [ materialPreLain ], + }, + { + font: '96px Arial', + spacing: 2.0, + }, + { + font: 'Bold 96px Arial', + preprocessorMaterials: [ + materialBlurH, + materialBlurV, + materialBlurH, // fuck you + materialBlurV, // fuck you (2) + materialPreBeatmania, + ], + }, + { + font: '96px Times New Roman', + scaleY: 1.2, + spacing: 1.9, + }, + { + font: 'Bold 96px Courier New', + preprocessorMaterials: [ materialPreLain ], + }, + { + font: 'Bold 96px Arial', + spacing: 1.5, + }, + { + font: 'Bold 96px Arial', + preprocessorMaterials: [ + materialBlurH, + materialBlurV, + materialBlurH, // fuck you + materialBlurV, // fuck you (2) + materialPreBeatmania, + ], + }, + { + font: '96px Times New Roman', + }, +]; + +const swapIntermediate = new Swap( + new BufferRenderTarget( { + width: SPRITE_SHEET_SIZE, + height: SPRITE_SHEET_SIZE, + name: process.env.DEV && 'Greetings/intermediate0', + } ), + new BufferRenderTarget( { + width: SPRITE_SHEET_SIZE, + height: SPRITE_SHEET_SIZE, + name: process.env.DEV && 'Greetings/intermediate0', + } ), +); + +const spritesheets = styles.map( ( style, iStyle ) => { + const textureSpriteSheet = createFontSpriteSheet( style ); + let texture: GLCatTexture = textureSpriteSheet; + + ( style.preprocessorMaterials ?? [] ).map( ( material, i ) => { + material.addUniformTexture( + 'sampler0', + i === 0 ? textureSpriteSheet : swapIntermediate.o.texture, + ); + + quadPreprocessor.material = material; + quadPreprocessor.target = swapIntermediate.i; + quadPreprocessor.drawImmediate(); + + swapIntermediate.swap(); + texture = swapIntermediate.o.texture; + } ); + + const dest = new BufferRenderTarget( { + width: SPRITE_SHEET_SIZE, + height: SPRITE_SHEET_SIZE, + name: process.env.DEV && `Greetings/spriteSheet${ iStyle }`, + } ); + + materialBlurH.addUniformTexture( 'sampler0', texture ); + + quadPreprocessor.material = materialBlurH; + quadPreprocessor.target = dest; + quadPreprocessor.drawImmediate(); + + return dest.texture; +} ); + +// -- greetings! ----------------------------------------------------------------------------------- +const charPosList = [ + '0x4015', + 'Alcatraz', + 'Altair', + 'Astronomena', + 'CNCD', + 'Cocoon', + 'Conspiracy', + 'Fairlight', + 'Flopine', + 'FRONTL1NE', + 'holon', + 'gam0022', + 'jetlag', + 'Jugem-T', + 'kaneta', + 'Limp Ninja', + 'LJ', + 'Logicoma', + 'Mercury', + 'nikq::cube', + 'Ninjadev', + 'NuSan', + 'Poo-Brain', + 'Prismbeings', + 'Radium Software', + 'rgba', + 'Satori', + 'sp4ghet', + 'Still', + 'Suricrasia Online', + 'tdhooper', + 'Ümlaüt Design', + 'Virgill', + 'Wrighter', + 'yx', +].map( ( text, iGreeting ) => { + const style = styles[ iGreeting % styles.length ]; + const spacing = style.spacing ?? 1.0; + const { totalWidth, chars } = calcCharPos( text, style.font ); + + return { + totalWidth: totalWidth * spacing, + scaleY: style.scaleY ?? 1.0, + chars: chars.map( ( { char, x } ) => ( { + char: char.charCodeAt( 0 ), + x: ( x - 0.5 * totalWidth ) / 96.0 * spacing * 1.4 // what the fuck is this magic number + } ) ), + }; +} ); + +export class Greetings extends Entity { + public constructor() { + super(); + + // -- geometry --------------------------------------------------------------------------------- + const geometry = new InstancedGeometry(); + + const bufferP = glCat.createBuffer(); + bufferP.setVertexbuffer( new Float32Array( TRIANGLE_STRIP_QUAD ) ); + + geometry.vao.bindVertexbuffer( bufferP, 0, 2 ); + + const arrayParams = new Float32Array( 4 * INSTANCES ); // char, posFromCenter, width, time + const arrayParams2 = new Float32Array( 4 * INSTANCES ); // totalWidth, scaleY + for ( let i = 0; i < INSTANCES; i ++ ) { + arrayParams[ 4 * i + 0 ] = 0; + arrayParams[ 4 * i + 1 ] = 0; + arrayParams[ 4 * i + 2 ] = 0; + arrayParams[ 4 * i + 3 ] = 0; + arrayParams2[ 4 * i + 0 ] = 0; + } + + const bufferParams = glCat.createBuffer(); + bufferParams.setVertexbuffer( arrayParams, gl.STREAM_DRAW ); + geometry.vao.bindVertexbuffer( bufferParams, 1, 4, 1 ); + + const bufferParams2 = glCat.createBuffer(); + bufferParams2.setVertexbuffer( arrayParams2, gl.STREAM_DRAW ); + geometry.vao.bindVertexbuffer( bufferParams2, 2, 4, 1 ); + + geometry.count = 4; + geometry.mode = gl.TRIANGLE_STRIP; + geometry.primcount = INSTANCES; + + // -- material render -------------------------------------------------------------------------- + const forward = new Material( + greetingsVert, + greetingsFrag, + { + initOptions: { geometry: geometry, target: dummyRenderTarget }, + blend: [ gl.ONE, gl.ONE ], + }, + ); + + const materials = { forward }; + + forward.addUniformTextureArray( 'samplerSpriteSheets', spritesheets ); + + if ( process.env.DEV ) { + if ( module.hot ) { + module.hot.accept( + [ + '../shaders/greetings.vert', + '../shaders/greetings.frag', + ], + () => { + forward.replaceShader( greetingsVert, greetingsFrag ); + } + ); + } + } + + // -- mesh ------------------------------------------------------------------------------------- + const mesh = new Mesh( { + geometry, + materials, + name: process.env.DEV && 'Greetings/mesh', + } ); + + // -- buffer updater --------------------------------------------------------------------------- + let headInstance = 0; + let headGreetings = 0; + + const lambda = new Lambda( { + onUpdate: ( { time, deltaTime } ) => { + if ( Math.floor( 6.0 * time ) === Math.floor( 6.0 * ( time - deltaTime ) ) ) { + return; + } + + const { totalWidth, scaleY, chars } = charPosList[ headGreetings ]; + + chars.map( ( { char, x } ) => { + arrayParams[ 4 * headInstance + 0 ] = char; + arrayParams[ 4 * headInstance + 1 ] = x; + arrayParams[ 4 * headInstance + 2 ] = headGreetings; + arrayParams[ 4 * headInstance + 3 ] = time; + arrayParams2[ 4 * headInstance + 0 ] = totalWidth; + arrayParams2[ 4 * headInstance + 1 ] = scaleY; + + headInstance = ( headInstance + 1 ) % INSTANCES; + } ); + + headGreetings = ( headGreetings + 1 ) % charPosList.length; + + bufferParams.setVertexbuffer( arrayParams, gl.STREAM_DRAW ); + bufferParams2.setVertexbuffer( arrayParams2, gl.STREAM_DRAW ); + }, + name: process.env.DEV && 'Greetings/spawner', + } ); + + // -- components ------------------------------------------------------------------------------- + this.components.push( + lambda, + mesh, + ); + + // -- auto ------------------------------------------------------------------------------------- + auto( 'Greetings/active', ( { uninit } ) => { + mesh.active = !uninit; + mesh.visible = !uninit; + } ); + } +} diff --git a/src/entities/Post.ts b/src/entities/Post.ts index b01817c..68ca4a0 100644 --- a/src/entities/Post.ts +++ b/src/entities/Post.ts @@ -65,5 +65,9 @@ export class Post extends Entity { material.addUniform( 'colorGamma', '4f', ...preset.gamma ); material.addUniform( 'colorGain', '4f', ...preset.gain ); } ); + + auto( 'Post/mixInvert', ( { value } ) => { + material.addUniform( 'mixInvert', '1f', value ); + } ); } } diff --git a/src/entities/SceneCrystals.ts b/src/entities/SceneCrystals.ts index fd3cde4..357d577 100644 --- a/src/entities/SceneCrystals.ts +++ b/src/entities/SceneCrystals.ts @@ -1,6 +1,7 @@ import { ChaosTorus } from '../automaton-fxs/ChaosTorus'; import { Crystal } from './Crystal'; import { Entity } from '../heck/Entity'; +import { Greetings } from './Greetings'; import { Lambda } from '../heck/components/Lambda'; import { Quaternion, Vector3, Xorshift } from '@fms-cat/experimental'; import { Rings } from './Rings'; @@ -12,10 +13,8 @@ export class SceneCrystals extends Entity { // -- crystals --------------------------------------------------------------------------------- const crystal = new Crystal( { width: 0.4, height: 1.5, noiseOffset: 7.0 } ); - this.children.push( crystal ); const speen = new Entity(); - this.children.push( speen ); const up = new Vector3( [ 0.0, 1.0, 0.0 ] ); this.components.push( new Lambda( { @@ -40,12 +39,12 @@ export class SceneCrystals extends Entity { new Vector3( [ 0.0, 0.0, 1.0 ] ), 0.1, ) ); - this.children.push( rings ); // -- chaos torus ------------------------------------------------------------------------------ const rng = new Xorshift( 618954 ); const chaosToruses = [ ...Array( 6 ).keys() ].map( () => { const pivot = new Entity(); + pivot.visible = false; pivot.transform.rotation = Quaternion.fromAxisAngle( new Vector3( [ 1.0, 0.0, 0.0 ] ), rng.gen() * 6.0, @@ -53,7 +52,6 @@ export class SceneCrystals extends Entity { new Vector3( [ 0.0, 1.0, 0.0 ] ), rng.gen() * 6.0, ) ); - this.children.push( pivot ); const chaosTorus = new ChaosTorus(); chaosTorus.transform.position = new Vector3( [ 2.5, 0.0, 0.0 ] ); @@ -65,5 +63,17 @@ export class SceneCrystals extends Entity { auto( 'SceneCrystals/ChaosTorus/active', ( { uninit } ) => { chaosToruses.map( ( entity ) => ( entity.visible = !uninit ) ); } ); + + // -- greetings -------------------------------------------------------------------------------- + const greetings = new Greetings(); + + // -- children --------------------------------------------------------------------------------- + this.children.push( + crystal, + speen, + rings, + ...chaosToruses, + greetings, + ); } } diff --git a/src/entities/SufferTexts.ts b/src/entities/SufferTexts.ts index eb44f11..278ae8c 100644 --- a/src/entities/SufferTexts.ts +++ b/src/entities/SufferTexts.ts @@ -5,7 +5,7 @@ import { Lambda } from '../heck/components/Lambda'; import { Material } from '../heck/Material'; import { TRIANGLE_STRIP_QUAD } from '@fms-cat/experimental'; import { auto } from '../globals/automaton'; -import { dummyRenderTarget, dummyRenderTargetFourDrawBuffers } from '../globals/dummyRenderTarget'; +import { dummyRenderTarget } from '../globals/dummyRenderTarget'; import { gl, glCat } from '../globals/canvas'; import { quadGeometry } from '../globals/quadGeometry'; import { randomTextureStatic } from '../globals/randomTexture'; @@ -86,7 +86,7 @@ export class SufferTexts extends Entity { sufferTextsRenderVert, sufferTextsRenderFrag, { - initOptions: { geometry: geometryRender, target: dummyRenderTargetFourDrawBuffers }, + initOptions: { geometry: geometryRender, target: dummyRenderTarget }, }, ); diff --git a/src/heck/components/Quad.ts b/src/heck/components/Quad.ts index 16783d4..5975315 100644 --- a/src/heck/components/Quad.ts +++ b/src/heck/components/Quad.ts @@ -5,8 +5,8 @@ import { gl, glCat } from '../../globals/canvas'; import { quadGeometry } from '../../globals/quadGeometry'; export interface QuadOptions extends ComponentOptions { - material: Material; - target: RenderTarget; + material?: Material; + target?: RenderTarget; range?: [ number, number, number, number ]; clear?: Array | false; } @@ -15,8 +15,8 @@ export interface QuadOptions extends ComponentOptions { * Renders a fullscreen quad. */ export class Quad extends Component { - public material: Material; - public target: RenderTarget; + public material?: Material; + public target?: RenderTarget; public range: [ number, number, number, number ] = [ -1.0, -1.0, 1.0, 1.0 ]; public clear: Array | false = false; @@ -31,11 +31,17 @@ export class Quad extends Component { if ( options.clear !== undefined ) { this.clear = options.clear; } } - protected __updateImpl( event: ComponentUpdateEvent ): void { - glCat.useProgram( this.material.program ); + public drawImmediate( event?: Partial ): void { + const { target, material } = this; - this.target.bind(); - this.material.setBlendMode(); + if ( target == null || material == null ) { + throw process.env.DEV && new Error( 'Quad: You must assign target and material before draw' ); + } + + glCat.useProgram( material.program ); + + target.bind(); + material.setBlendMode(); gl.enable( gl.DEPTH_TEST ); gl.depthMask( true ); @@ -44,16 +50,20 @@ export class Quad extends Component { glCat.clear( ...this.clear ); } - this.material.setUniforms(); + material.setUniforms(); - const program = this.material.program; + const program = material.program; - program.uniform( 'time', '1f', event.time ); - program.uniform( 'deltaTime', '1f', event.deltaTime ); - program.uniform( 'frameCount', '1f', event.frameCount ); - program.uniform( 'resolution', '2f', this.target.width, this.target.height ); + program.uniform( 'time', '1f', event?.time ?? 0.0 ); + program.uniform( 'deltaTime', '1f', event?.deltaTime ?? 0.0 ); + program.uniform( 'frameCount', '1f', event?.frameCount ?? 0 ); + program.uniform( 'resolution', '2f', target.width, target.height ); program.uniform( 'range', '4f', ...this.range ); quadGeometry.draw(); } + + protected __updateImpl( event: ComponentUpdateEvent ): void { + this.drawImmediate( event ); + } } diff --git a/src/shaders/chaos-torus.frag b/src/shaders/chaos-torus.frag index d914395..30ab605 100644 --- a/src/shaders/chaos-torus.frag +++ b/src/shaders/chaos-torus.frag @@ -43,7 +43,7 @@ void main() { #ifdef DEFERRED fragPosition = vPosition; fragNormal = vec4( normalize( vNormal ), 1.0 ); - fragColor = vec4( vec3( 0.001 ), 1.0 ); + fragColor = vec4( vec3( 1.0 ), 1.0 ); fragWTF = vec4( vec3( 0.99, 0.01, 0.0 ), MTL_PBR ); #endif diff --git a/src/shaders/greetings-pre-beatmania.frag b/src/shaders/greetings-pre-beatmania.frag new file mode 100644 index 0000000..37bd42f --- /dev/null +++ b/src/shaders/greetings-pre-beatmania.frag @@ -0,0 +1,13 @@ +#version 300 es + +precision highp float; + +in vec2 vUv; + +out vec4 fragColor; + +uniform sampler2D sampler0; + +void main() { + fragColor = step( 0.9, texture( sampler0, vUv ) ); +} diff --git a/src/shaders/greetings-pre-lain.frag b/src/shaders/greetings-pre-lain.frag new file mode 100644 index 0000000..178cd08 --- /dev/null +++ b/src/shaders/greetings-pre-lain.frag @@ -0,0 +1,18 @@ +#version 300 es + +precision highp float; + +in vec2 vUv; + +out vec4 fragColor; + +uniform sampler2D sampler0; + +#pragma glslify: cyclicNoise = require( ./modules/cyclicNoise ); + +void main() { + vec2 uv = vUv; + uv += 0.001 * sin( 20.0 * cyclicNoise( vec3( 4.0 * uv, 1.0 ) ).xy ); + + fragColor = texture( sampler0, uv ); +} diff --git a/src/shaders/greetings.frag b/src/shaders/greetings.frag new file mode 100644 index 0000000..fdb01c6 --- /dev/null +++ b/src/shaders/greetings.frag @@ -0,0 +1,41 @@ +#version 300 es + +precision highp float; + +in float vTime; +in vec2 vUv; +in vec4 vCharParams; + +out vec4 fragColor; + +uniform sampler2D samplerSpriteSheets[ 8 ]; + + +// this is BAD +vec4 fetchSpriteSheet( int iFont ) { + if ( iFont == 0 ) { + return texture( samplerSpriteSheets[ 0 ], vUv ); + } else if ( iFont == 1 ) { + return texture( samplerSpriteSheets[ 1 ], vUv ); + } else if ( iFont == 2 ) { + return texture( samplerSpriteSheets[ 2 ], vUv ); + } else if ( iFont == 3 ) { + return texture( samplerSpriteSheets[ 3 ], vUv ); + } else if ( iFont == 4 ) { + return texture( samplerSpriteSheets[ 4 ], vUv ); + } else if ( iFont == 5 ) { + return texture( samplerSpriteSheets[ 5 ], vUv ); + } else if ( iFont == 6 ) { + return texture( samplerSpriteSheets[ 6 ], vUv ); + } else if ( iFont == 7 ) { + return texture( samplerSpriteSheets[ 7 ], vUv ); + } +} + +// gl.ONE, gl.ONE +void main() { + if ( vTime < 0.0 ) { discard; } + + int font = int( vCharParams.z ) % 8; + fragColor = exp( -17.0 * vTime ) * fetchSpriteSheet( font ) * vec4( 3.0, 0.4, 7.0, 1.0 ); +} diff --git a/src/shaders/greetings.vert b/src/shaders/greetings.vert new file mode 100644 index 0000000..904731d --- /dev/null +++ b/src/shaders/greetings.vert @@ -0,0 +1,56 @@ +#version 300 es + +#define fs(i) (fract(sin((i)*114.514)*1919.810)) +#define saturate(i) clamp(i,0.,1.) + +// ------------------------------------------------------------------------------------------------- + +layout (location = 0) in vec2 position; +layout (location = 1) in vec4 charParams; +layout (location = 2) in vec4 charParams2; + +out float vTime; +out vec2 vUv; +out vec4 vCharParams; +out vec4 vPosition; + +uniform float time; +uniform vec2 resolution; + +// == utils ======================================================================================== +vec2 yflip( vec2 uv ) { + return vec2( 0.0, 1.0 ) + vec2( 1.0, -1.0 ) * uv; +} + +// == main procedure =============================================================================== +void main() { + vCharParams = charParams; + + float char = vCharParams.x; + + vUv = yflip( 0.5 + 0.499 * position ); + vUv = ( vUv + floor( mod( vec2( char / vec2( 1.0, 16.0 ) ), 16.0 ) ) ) / 16.0; + + vTime = time - vCharParams.w; + + // == compute size =============================================================================== + vPosition = vec4( 0.0, 0.0, 0.0, 1.0 ); + + vec2 shape = 0.5 * position; + shape.y *= charParams2.y; + + vec2 offset = ( 0.6 - 0.2 * exp( -5.0 * vTime ) ) * vec2( vCharParams.y, 0.0 ); + vPosition.xy += ( offset + shape ) * min( 500.0 / charParams2.x, 1.0 ); + + vPosition.xy += 1.0 + * ( fs( vCharParams.z + vec2( 2.66, 1.79 ) ) * 2.0 - 1.0 ) + * pow( fs( vCharParams.z + 7.8 ), 2.0 ); + + // == send the vertex position =================================================================== + vPosition = vPosition; + vec4 outPos = vPosition; + outPos.x *= resolution.y / resolution.x; + gl_Position = outPos; + + vPosition.w = outPos.z / outPos.w; +} diff --git a/src/shaders/post.frag b/src/shaders/post.frag index 8908df3..b15e63e 100644 --- a/src/shaders/post.frag +++ b/src/shaders/post.frag @@ -18,6 +18,7 @@ in vec2 vUv; out vec4 fragColor; uniform float time; +uniform float mixInvert; uniform vec2 resolution; uniform vec4 colorLift; uniform vec4 colorGamma; @@ -86,6 +87,7 @@ void main() { vec3 col = tex.xyz; vec4 seed = texture( samplerRandom, uv ); + col = mix( col, 1.0 - 5.0 * col, mixInvert ); prng( seed ); prng( seed ); col = aces( max( 2.0 * col, 0.0 ) ) / aces( vec3( 11.2 ) ); diff --git a/src/shaders/shading.frag b/src/shaders/shading.frag index d46e0c7..4aa1f34 100644 --- a/src/shaders/shading.frag +++ b/src/shaders/shading.frag @@ -288,9 +288,12 @@ void main() { // color = 0.5 + 0.5 * isect.normal; // color = vec3( calcDepth( tex0.xyz ) ); - // color = vec3( 0.5, 0.9, 0.6 ) * ( 1.0 - texture( samplerAo, isect.screenUv ).xyz ); - // color = vec3( 0.5, 0.9, 0.6 ) * ( texture( samplerAo, isect.screenUv ).xyz ); - // xfdA = shadeGradient( isect ); + // color = vec3( 0.5, 0.2, 0.9 ) * ( 1.0 - texture( samplerAo, isect.screenUv ).xyz ); + // color = mix( + // color, + // vec3( 0.96 ) * smoothstep( 0.9, 0.1, texture( samplerAo, isect.screenUv ).xyz ), + // 1.0 + // ); fragColor = vec4( color, 1.0 ); // fragColor.xyz *= smoothstep( 1.0, 0.7, calcDepth( tex0.xyz ) ); diff --git a/src/utils/calcCharPos.ts b/src/utils/calcCharPos.ts new file mode 100644 index 0000000..8f30b6f --- /dev/null +++ b/src/utils/calcCharPos.ts @@ -0,0 +1,30 @@ +const canvas = document.createElement( 'canvas' ); +const context = canvas.getContext( '2d' )!; + +export function calcCharPos( + text: string, + font: string, +): { + totalWidth: number; + chars: { + char: string; + x: number; + }[]; + } { + let totalWidth = 0; + let currentText = ''; + + context.font = font; + + const chars = text.split( '' ).map( ( char ) => { + const charWidth = context.measureText( char ).width; + + currentText += char; + totalWidth = context.measureText( currentText ).width; + const x = totalWidth - 0.5 * charWidth; + + return { x, char }; + } ); + + return { totalWidth, chars }; +} diff --git a/src/utils/createFontSpriteSheet.ts b/src/utils/createFontSpriteSheet.ts new file mode 100644 index 0000000..18f95d4 --- /dev/null +++ b/src/utils/createFontSpriteSheet.ts @@ -0,0 +1,42 @@ +// yoinked from https://github.com/mapbox/tiny-sdf (BSD 2-Clause) + +import { GLCatTexture } from '@fms-cat/glcat-ts'; +import { glCat } from '../globals/canvas'; + +const SPRITE_SIZE = 128; +export const SPRITE_SHEET_SIZE = 16 * SPRITE_SIZE; + +const CHARS = [ ...new Array( 256 ).keys() ].map( ( i ) => String.fromCharCode( i ) ); + +export function createFontSpriteSheet( { font, baseline }: { + font: string; + + /** + * 0.8 is recommended + */ + baseline?: number; +} ): GLCatTexture { + const texture = glCat.createTexture(); + + const canvas = document.createElement( 'canvas' ); + canvas.width = SPRITE_SHEET_SIZE; + canvas.height = SPRITE_SHEET_SIZE; + + const context = canvas.getContext( '2d' )!; + context.textAlign = 'center'; + context.fillStyle = '#fff'; + + context.font = font; + + for ( let i = 0; i < 256; i ++ ) { + const char = CHARS[ i ]; + const x = ( ( i % 16 ) + 0.5 ) * SPRITE_SIZE; + const y = ( Math.floor( i / 16 ) + ( baseline ?? 0.7 ) ) * SPRITE_SIZE; + + context.fillText( char, x, y ); + } + + texture.setTexture( canvas ); + + return texture; +}