TrenAlSur (only intro part, wip)

idk what to sayyyyyyyyyyyyy...but headphones recommended (it's stereo)
#cover

Log in to post a comment.

// converted to a string the synth sample from the beginning
let sample_syn="PTSQPLGHJHECEIIKPOOQVXVRRNFEHHEB@DHGLOMOQVXURSKDDGFC?>CFGMNMNQWYUSTJBEGFC?=CCGNMLMPUXTSSIDGHGEA@EDINMLMOTVTSRKEIIHHCBFEJOMMNOSVTSSKGJJJIDDFEKOOMNPSVUTSLGLKKJEEGFLPOMOPSWVTTLIKKKJEEFFLOPNOPRWWTTMHLKKJFEFFKOONNPQWWUTNJKKKJGFDFKNPNNPQUXUSOIKKKJHEDFIMONMNPTXUSOJILJIHDBEIMOMMNOSXUSPIIKJIHDBDHLONMMOSWVRPJHKJIIDADGKONMLORWURQIIKJIIDACGKNNMLNRVWRRJHKJIJDABGKNNMKNQVVSRJHKKIIDBAFKNNLLMQUWSRKHJKJIEAAELMNMLMQUVTRLGJLJIFB@DKNNLLLPUVTRMHJLKIGCACLMNLLLPUVURMHILLIHDACKNMLLKOUVURNIILLJIDAAKMMLLKNTVURNIILMIIEABINMLLKNTWURNJHLMJIFBAIMNLLKMSWURNIILMJJGBBGMMMLKMSWUQNJILMKJGCAGLNLKKLRWURNJJLMLKHCBFLMMKKLSWVRNKJLMMJIDBFKMLJKLRWUSNKKLMNLIDBEJMMIJLRUVSOKKLMOLJEBEIMLJJLQVUTOKKLLONIFCEILMIJLQTUTOKLLMONJFCEHLLJJLPTTTOJLLLOOIFDEHLLIJLPSTTNKLLLOPKFDEGLKIJLOSTTOKLLLOQKFEEGKLIJLORTTOKLKMORLGEEFKKIJKNQTSPKMLMORNGFEEJKHIKNPTSOLLKMOROHFEEIKIIKMOTSOMLKMPRPIGEEIKHHJMOTRONLKNPQPJGEEHJHHJMOSSNOLKNPQQKGEEHKHHJLOSRNOLJNPPQLFEEHKIHJLOSRNOLJNPPQMGEEGKIHJLOSRNOLJNPOQNGEEGJIGJLPRQNOLJOPOQOHEEGIIGIMPRPNOMKNPOQPHEEGIIGILPQPNPMJOPPQPIDFGHIGHMQQOOOMKNPPQQJEEHHHFGLQPNNONKOPPPQLEEIHHGFLQQNNONKNPPQPMFEHHGFFLQQNNONKNQOPPMFEIGGFELRPNLONKNPOPPMFFHHGFDKQQNMNOLNQOPQMHEHHGEDKRPOLNNLNQOPQMHGHHHEDKRQOLMNMNQOOQMIHHHHEDKQQOMLMMNQNORMJIHHHFDJQPPMLLMNQOOQNIKHHIFDJPQPMLLLNQOOQNILHIIFEIOQPLLLLNQOOQMJLHIIFEINQPLLLKNPOOQLJMIHIFFJNQOLLLKOOOPOKLLHIHFGIOQOLLLLOONPOJLMHHHGHJOQNLLLLONNPNJLMIHHHIJNPNKLLMONNPNKMMIHHIHJOPMKLLNOMNQMKMMIGHJHJOOMKLKOOLNPMLLMIGHJIKOOLLLKOOLMOMLLMIGIKHLPNLLLKPOJLOMLLMIGILILPNKLKKPNJLMNMLLIGJLJNPMKLKLONJKMNMKLIHJKKNPLJMKLPMJKLNNKKIIKKLOPLKMKLOLJKLMNLJIIKKMPPLJNLMOKJKLMOKIIJKKNPPKJMMMNKJKKMOKIJJJKOQOLJNMNMJJKKMOKHJKJKOQOKJMNNLIJLKMOJHKKILORNKINNNLIJLKMOJHKJIKPQOKJNOOLHJLKNOJIKKILPRNKINONKHJLKMNJILJILPROKJOONKIJKLNMJJKKJLOQOKINOMKIJJLNLJKKJJMOQOKJOOMJJJJKMKJLKJKLOQOJKOOLJKKIKMKKLKJKMNPOKKONLJLKIJLKKLKJKMNPOKMONKJMLIILKKKKKLLNOOLLOMKKMLIHKKKKKLLLMOPLMNLKKMLIGKJLJKLMKMOPMMNLKLMLIGJKLJJMNKLOPMMNLLLMMIFJKLJJMNKKNPNMMKLMMMHFIKLJJNNLKNQMMLKLMMMHFJKLJJNOLKNQOLKKMMNNHGJJLJJOOKKMPOKJLMMNNHGJJMJJONKKNPOJJLNMNNGHJJLKJONJLNPOJIMNMOMHHJILKJOMJLNQPHILONOMHHJHLLKNMJMOROHIMNOPMHIJHLLLNLJMOQOGIMNOPLIIKHKLMMKJLORNGIMNPPMIIKGKLMMJIMORNHIMNPOLJJKHJMNMIJLORNHILOPOMJKKGJMOLIILPRMIILOQNMKKKHINNLIJKPQMIJKOPNMKKKGJNNLJJKPQLJJKOPNMKLJGJNMKKJKPPMJJKNONNKLJHKNLKKJKOOMKJKNNNNKLJHLNKJLKKONMLJLNMNNKLJHLNJJMKKNNMMJLNLNNKLJIMMIJMLJMNMMKLNMMNLKKJMMHJNLKLMMNJLNLMNKLKKNLGKMMJLMNNKLNLNNKKKKNLGJNMKJMNNJLOLNNJLLLNLFJNMKJLONJLNMMMJLLLOLGIMMKILPNJLOLMNILMLNLFJMLLJMQOHMOMMMIMLLNLFIMLLJMQOIKOMMMIMLLNMGILLKJNQOHLNNMKIOLKNMHIKLKKNRNILNNMJJNLKMMHIKKKLOQNILMNMJJOLJMMIIJJKMPQMJLMNMIKOLJLMJIIJKMPPMKKMNMILOMILMKIIIKNQONLJMNLJLNLJKNKIIHKOQPNLJMNLJMMLJKMKJHHKNQPOMJLMLKMMLJKMKJHHKOOQPMJKMMKNMLKKLKJHHLONQPNJKMLKNLKKKLKJHHMNNRRNKJMMKNLJKLKJIHHMMLRRNJJLLKNLKKLJJIIJNLMRSNJIMLKNLJLKJIIHJNLLSSOJJMKLNLJKLJIHHKOJLQTPKJLKKNLJLLJIHHLOKLQTQKJLJLNLKLLJHGHLOJLQTQLKKJKMLKLKJHGHMNLKPTRMKKJKMLLKKJHGILNLLOSROKKKKLLMKKIHGHLMMLORRPLJKKKMMLJIGGILMLLOQRRLJKKKLNLJHGGILMMLOPQSNILKKLNLJHGHIKMMMOOQTMJKJKLNLJHGIIJMMMONQSOKKJKLNMJHGIIJMLNPNPTOLKJKLNMKGGIIJLKNPNPRPLJJKLMLKHFJJJLKNPNORPMJJKLMLKHGJIJKJNPOOQPNKIKMLLLHFKJJKJMQPOPPOKJKMKKLHGJJJJKMPQOOQNKJKMKJLIGKJIIKLPRONPOLJKMKJLIHKKIIKLPRONPNMKKMLJLIHJKIIKKOSPNOMOLKMLJLIHJKIHJKOSQMNLOLLLLJKIIJKIIJKNRQNNKONLLLKJIIJKJHJJNRRNMKONLKLKJIJJKJIJJMRROMKNOLKMLJIJJKJIJIMPROLKNOMKMLJIJJKJJJIMPRPLKMONLMLJIIIJKIJILORPLLMNNLMLJIIIJLJJJLOROLLMMNMMMJIHIKMIJJKNROMMMMONNMJIHIKNIIKKMRNMNMLNNNNJIHHKOHILKMQMMNLLNONNJHHHKOIGLKMQMMNMLNOONKHHIKOIGLJMPLMOMLMNOOKGHILNJGLKMOLLOMLMNPOKFHILNJHKLMNLLNMMMNPPLFHJLMKHKLMMLLNMMMMPQKFHJLMKIJMMLKLNNMMMPQLFHKLLKIJMNLKKMNNMMPRLFGLLLKJINNLJKMONMLPRMFGLMKKJIMNKJKLNNNMPQMGGLMKKJIMNLIJKONNMPQMGGLMLJJJMNLJJKNNONOPMHGKMLJJJMNLIJKNNONOONHHKNLJIKLNLJIJMOONOONJIJMMJIKLNMIIJMNPOONNJJJMMJHLLMMJHIMNPPONMKJJLNIHLLMMJHILNOQONNKKJLMJHKLMNKHHLNPPNNMLLJKNJHKLMNKHHLMOQNNMLLJJMKHJKNNLGHKMOQONMMMKJMJIJKNOKHHKMOQNNMMMLKLKIJJNOLHHJMOPONNMMLKKJJIJNOKIHJLNPOONMMLLKJJIINOLIHILNOOOOMMMLJJJIINPKIHILMOPOOMMMMJHKIINPLIIIKMOPOONMMNIHJJIMPLIIIKLNPPPNMMNJGJJIMPMIIIJLNPPPOMMNJGIJILPMJIIJKNOPPOMMOKFIJJKPMIJJIKMOPPPNNOKFHJKKPMJIJIKMOPPPNMOKEGJLKONIJJHKMNPPQONNKFFIKKOMJIJIJMNPPQONOKEFILKNNJJJIJMNOPRPONKFEHLLNNKJJIJMNOOQPPNKFFGLLNNKJIJJLMNORQPNKFEGKMNMKJIJJLNNOQQQOKEEGKMNMKJIJKLMNNRQQOKFEGKNNMKJIJLLMMNQRRPKEFGKMOMKJHJLLNMNQRRPLEEGJMOMKJHIMLMMNQRRQLDEFJMOMKJHJLLNMMQQRRLEEGIMOMKJHIMMMMMPRRSMDFGIMOMKJHILMMMMPQRSMDEGHLOMKJHIMMNMMPRQTODEHGLOLKJHIMNMMMORQTODEHGLOMKJHIMNMMMNRQTPDEIFKOLKJGJMNMMMORRTPFDIFKNLLJHINNMMMNRQTPEFHFKNLLJGJMNMNMNQQTOGEHFJMLMIGJNNNMNNRQSPGFHFJLLMIFJMNNMNNQRTOIFGGIKLNIGJNNNMNNQRSOIGFGIKLMIFKMNNMNOPSSOKGFGIILNHGJMNNMNOPRSOLHDHIHLNIFKMNNMMOPRROLHEHIHLMIGJMNOMMOPRRPMIEHHGMMJGJMNONMOPRSPMHEGHFKMJHJMMONMOPQSPNIEGHFKLJHJLMPNMNPQSQNHFGHFJMKIJLMPOMNPQRRMHFGGGJLKIILMPOMMPQSRMHGGFGIMKJIKNQOMMOQRSMIGGFGILLKIKNQPMMOQSSMHHFFHIKLKHKNQPMLNQSSLIHFFHIKLLHJOQOMLNRSRMHIFEHIJMLHJOQOMKNRSRMIIEFHHJMLHJPQOMKNRSRMHIFFHIJMKHKPQOMKNRRRMIIFFHHJMKHKPPOMKNRRRMIJFFHHJLKHMPPOLKOQQQMJIFGHHJLKINQPOLKOQQPMJIGGHIJKJIOQONKLQPPPLJIGGHIJKJJOQONKMPPPOMJIHHHIJJIJQQOMKMRPOOMJHHHHIJJHLQQOMJNQPNNMJIHHIJJIHLQQOLJMRPNNLJIHHIIJIGMQQOLJNRPMNLJIHHJJKHHMQQOKKNRPMMKJJHIJIKIHMQQNLKNRQLMKJJHIJIKHHNPPOLKNQPMMKKJIIJIKHINOPOLKNPPMLJKJIIJIKHINOPOLLNPPMKJKJJIIJKIIMOOOMLNPPNKJKJJIIJKIINNOOMMMPPNJJJJKIIJKJJMNNNNMMOQMKKJKKIIJKJJMMNNNMMOPMKJIKKJHJLKJMMNNOMMOQLKJIKKIIJKKJMMNNOMMPQLKJILKIIJKKKLMNNOLMOQLKJIKKIIJLKKLMNOOLMPPLKJILKIJJKKKLMNOOKMPPMKIJLKIKJKKKLNNPNKMOPMKIILJILJKKJLNNPNKMOPNKIJLIJLKJJJLNNPMKMOPNKJILIJLJJJJLNOPMLMOPNKJJKHKLJJJJMNOPMLLNPOKJIKIKMJJIIMNOOMLLNPOJKJKIMLJJIIMNOOMKLMPOJJJKIMLJIIILOOOMKLMPOJKKJJMLIIIIMNOONKLMPOJJKKJMLIIJILOOONKLMPOKJLKKMLHHIHLONONKLNONKJLLKMLHHJILONOOKLNONKJLLKMLGIIHMNMPNKMMONKJMMKMLHIIIMNMPNLMNNNKJMMLLLGIHIMMMPNLNNNNKJMMLMKHIGINLMPMLNMMNKKMMMMJIIGJNLLPMLNMMNKKNMMMJIIFINLLOMMNMMNLLMMNMIJIFINLMNMMNMLMLLMMMMJKHFIMLMNNNNMLMLMMMNMJKHGILLMMMMNMMMLLMMMLKKHGHLLMMMMNMMMMMMMNLKKIHHKLNMMMMLMMMLMLMKLLIHIJLNMLMMMMNMMNLMKLLJHHILNNKMMMNNMMNLMKLMJIIILNNKLLMNNLMNLMKLMKHIILNOKKLNOMLNNLLKLNKIHIKNOLJKNOMLONLKKMMKIHIKMOLIJNOMMPNKKKNMLJHIKMOLIJOOLMPNKJKOMLJHHLLNMIIONLNPNJJLOLLKHILLNLIIONLOPNJILOMLLHHLKNMIINMMOPNIIMOLLLIIKKNMIIMMMOPMIJNOMLLJIKKNNIILMNOPMHJNNMLLJIKKNMJIKMOPPLHJNNMLKKJJKMNJHJMOPPLHKMNNMKKJJKMNJHJLOPOLIKMNNMKKKJJMNKHILOPNLILMNOMJKKJKMNKGILOPNLJKLMONJKLJKMNKGJLOQMLKLLNONJKKJKMMKGJLOPMMLLKNOOKKKJLMMJGJKNPLLMKKNONKKKJLNLJHIKNOLMNLIMOOKKKJMNKJIJKNOLMNKJMPOLKKJMNKJIJJMNLMOLIMPNLLKJMOJJJJJMNLMOLJLPNLLKJNNJIJJJLMLMOMJLPNLMKKNNJIJJJLMLMNMJLPOLMJKNNJIJJJKMKNNNKLONLMKLNMKIIJJKLLMMNKLOOLMKLNMKIIJKKLLMMNLMONMLKMMMLIHIKKKMMMNMMONLLLMMMLIHIKKKMLLNMMONLLLMMLLJHIJKKMLLNMMONLLMMNLLJGHJKLMKLNNNPMLLLMNLMJGHJKMLJKMNNPMKMMMNLLJFHJKNMJKNNOQMLMLMNLMKEHJJNMJKMNOQNKMLLNMMKFGJKNMJJMNOQNLMLLNMMKEGIKNMJJMNOQOLMLLMMNKEEILMMKJMNOQNMLKLMMNKEEJLKMLKMNOQONLKLMNNJEEJMJNLKLMOQOOLJKNNNKEEJMJMMLLMPQOOLJKNNMKEEKLIMNLLMPPOOMJKOMMKEEJLILNMLLPPOPMIKOMLKFEKLILNNLLPPOPMIKOMKJFEKKILNOMKPQOPMJKOMKJGFJKILMPMKPQOPLJLOLJIGGIKJLMPNKPQNPLJLOLJHHGIKJLMOOLOQOOLKMOLIHIHHKJLMOOLORNNLKNNLIGIHHKJLMOOMOROMLLNNLHFIHHKJLLNPNOQNMLLNOLHFIHIKKLLNOOOQOLLLNOLHFIHIKKLLMPOPQNLLLNOLHFHHILKLLMOOPQNLLLMOLHFHGILLLLMPOQQMLMKMOLHFGGIMLLLMOOQQNLMKLOLHFGFIMMKLNPNQRMMMKLOLIFFFHNMKLNONQQNMMKKOMIGFEIMNJLOPNPRNMNJJOMIGFEHNNKKOPNPQNMNJJOMHHFDHNPJLOPNPQNMNJINMHHFDGNOKKPPNOQOMNJHNMIHGDGNPLLPPNOQNMNJHMMIHGDGNPLKQPNOROMNJHMMIHFDFMOMKQPMOQOMMKILNIHFDGMOMLRPMOQOLMKILMIIFDGLOMLQQMNQOMLJILMIIFDGLNMMRQNNQOMLJILMIIFDHKNMMRRONQOMLJILLIIFCHKMMMRQPNPOMLJIMLIJFDIKMMMRRPNPOMLIJMLIJGCHLMMMRRPOPOMLIJMLIJGDIKLNMRRPOOOMLHJMLIJGDIKLMMRSPPONMKHJMKIJGEIKLNMQTQPNNLKHJMKIJGEIKLMMPSQPONLKHJMJIKGFIJLMMPTQPOMLKHJMJIKGFIJLMMPSRPOMLKHJLJIKGFJJKMNPSRPPMLKHJLIIKHGJJKMNOSRQPMLKIJLIIJHGKIJMNOSRPPMLKIJLIJIHHKJJMNORRPQMLLIIKIJIHHLJJMNORQPQMLLIIKIKIHILJJLNOQQPQNLLJHJJKIHILKJMNNQPPRNLLJHJJKIGJLKJLNNPPPROLLKHIJKIGJLKJMNNPOOROLLKHIKKIGJLKJMNNONORPMLKHIKKIGJLKJMNNNNNSPMLKHIJKJHJLKJMONNMNRQNLKIIJKJHJLKJLONMLMSPNKKIJJKJHJLKKLONMKMRQOKKJJJKJIJLKKLONLKMRQOKKJKJKJIJKKKLOOLJLQQOKKJKJKJIKKKJMOOKJLRQOLKKKKKKJKKJKMONJJLQQNLKLKKLJJKJJJNONJILQPNLKLKKMJJKJIJNOMIIMQPNLKMKLNJJKIIJNPMIINPONLLLKLOJIKIIKNOLHHOOOMLMLJMPKILIIKOOLHIOONMKNLJNQLIKHILOOKGIPNMLKOKJNQLIKHHMNNJGJONNLKPLJNRMJJHIMNNJGKONMKKQKJORMJJGINMMJHKNNMKLPKJPRNKIGIMMLIIKMNLJMPLKORNKHGJNMLIJKMNLJMNMKPSOLHGJMLJIKJLNKKMMMLOSPLHHJLLJILJLNKKMMNLORPLHHJKLJJLILNKLLLNMOSPMIIJJLIKKILMKMKLOMORQMJJJIKJLKILLLMKLONORPNJJJHJKLJIKKMMJLONOQPNKJIHILMIIKKNMJLONOQPOKJHHIMMHIJKOLJLONOQQPLJHGINLHIILPLJLOOOPQPLJHGJNLHIILOLJLNONPQQMIGFKNKHHHMOLJLNONPQQMIGGLNKHHIMNLKLNONPRQMIFGMMJGHJMMLKKMONPRQMIFHNMJGHJMMMKKMONPSQMIFHNMJFHKMMNLJMOMPTQMHEINMJFHLLLNLJMOMPUQMHEJNMJEHMLLNLIMOLQUPLHEKNLIEHMLKOLIMNMRUPLHGLNLIEIMLKNMILNLRUOLGGLMKHFIMLKOMIMNMSTOLHHMMJHGIMLLNMIMMMSTOKHIMMJHGILLLNMIMMMSSOKHIMLIHHJLKLNMJMMMRSNLIJMLIHHJLKLNMKMMMRRNKJJMKHHIKMKLNLKMMMRRMLKKMKIHIKLKLMLLMMMQQNLKKLJIHILLJLMMLMMMQQMLKLKIJHILLJKMMMMMMPPMLLLKIJHILLJLMMNMMNOPNKLMJIKHILLJLLMNMMNNONKKMJIJHJLKJLLNOMMNNONKKMJJJIJLJJMLNOMMNMONJKMJJJIKLIKMLOOMMNMONKKMKJIJKLHJMMOPMMNMNNJJLKKIJLLGKMMOPNMMMONJJLLKIJLKGJMMOPMMMMNNJILLKIJMLGJMNOPNLMNNMIHLMKIJMKGIMNPPNLMOOLIHLLLJKLKHIMOPPNLLOOLIGKLLKKLKHHLOPPNLLOOLIGLLLKLKJIIKPQPNLLPOKHGKLLLLKJIIKPQPMLMPPKHGKLLMLJJIIKPQOMMMOPKGHJLLMMJIJJKOROLMMPPJGHILLNMJIJJKOROLMMPPJGHHLLNNJIJKLNRNLNMPPIHHHLLNMJIJKLNQNLNNPOJIGHLKNNIHJKMOQMLNMPOJIFHKKNNIHKLMOPMLNMPOJIEHKKNOIIJLMPOLMNMPOKIEIJJOOIIJLMPNLNNMPOLIEHJJNOIJJLNQMKNNMOOMHFIIJONJKKLNQMJNNMOPMHFIIINNJKKLOQMJMNMNQNHGIHIMNKKLLOQMIMNMMQOGGIHIMNLKLLOQMILNMMQOHHHGILMLLMMNQNIKNMLQOIHHGJLMLLMMNQNHJNMMQOIIGGJKLLLNNNQNHJMMMPPJIGGJKLLLONNPNIILMNPPKIGHJKLLMPONPNIIKMNPPLIFHIKKLMPONPNIHJMOOPLIFHIKKKMPOOOOIHIMOPPMIFHIKKKMPPOONIHILPPPMIFGIKKKMPQPONIGHLPPPMIFGIKKKLPQPONIGHKOPPMJGGIKKKLPRPONIGHKOPPLJGGJKLKKPRPOMIGHKOQPLKGFJKLLKPRQOMIHHKOQPLKGFJKKLKPRQPMIGHKOQPLKGFJKKLKORQPMHGHJNQOLLGFJKKLKORQQNHGHJOQOLLGFILLLLNRQQNGFIJNPOLKHFILLLLNQQQOGFIJNPNMKGFIKLLLNQQQPGFJJMPNMKGGIKLMMMQQQPHEJIMPMMKGGJKLMMMQQQQHEJIMPMMKGGJKLMMMQQQPIFIILOMNKGHJKLMNMQQQPIFIILOMNKGHKKLLNMPQQPJFHILNMNJGHKKLLNNPRQPKGGIKMMNJFIKKLLNNPRQOLHFIKLMNJFILLLLNNORROMIFIKLMNJFIKLLLNOOQROMIEIKKMNJGILLLMMOOQRPNIEHKJMNJGIKLLMMOOQRPOJFHKJLMJHIKLMMMOPPRPOIFGKJLMJHIKLMMNNPPRQOIGGJIKMJHHKLMMNNPPRROJGGIJKMKIHKLNNNNOPRROJGGHIJLKIHJLNNNNOPRSOJGGHIJLKJHJLNNNMNPQSOJHGGIIKLKHILOONMNPRTOIHHGIIKLKHHMOONMMPRTOJIGGIIJLLIHMOONMMPRSOJIGFIIJLMHHMOONMMPRSPJJHFIIILMHHMPONMMPRROJJHGHIILMHHMPONLMQRROKJHGHHILLIINPONLMQRROKJHGHHILLHINPOMLMQQQOKJHGHHILLHJOPOMKNQQPNKJHHHHIKKHJPONLKNQPPNKJHHHHJKKHKPONLKOQPONLJIHHHJKJHLQONKKPRPONLJIIHIJJIIMQPMKKPRONNKJIIIIJKHINQPMJKPRONNKJJIIIJJGINQPMJKPRONNKJIIIJJJGJOPPMJLPRNMMKKIIJJJJGKOPOMJLPRNMMJKIIJJJJFKOPOMKLPRNMLKKIIJJJJGLNOOMKLPQNMLKKJJJJJJGLNOOMLLOQOMKKKJJJJKJHLNNONLLOPOMKKKKJIJKJHLNNNNMLOPPLKKKKJIIKKILMMNNMLNPPLKJKLKIIKKILMMNNMLNPOKKJKLKIIKKILMMNNNLNQOKLIKLJHIKKJKLMNNMLNQOKLIKLJIJKLJKLMNOMLNQOKKIKLJIJKLKKLNNOMKOQOKKIKLIJJKLJKLNNOLKOPOLJIKLIJKKKKKMNNPKKOPOLJIKLIKKJKJJMNNOKLOPOLJJLKIKLJKJJMNNOKKOPPLJJLKILKJJJJMNONKLNPPLJJLKIMKJJIJNNONKLMOQLJJKKJMKJIIKNNOMKLMOQLJJKJJNKJIHKNNONKKMOQLJKKJKNKIIHJNNONLKMOQLJKKJLMKIIIJNNNNLKMOQLJKLJLMKHIIJNONOLKMOPMJKLJMMKHIIJNONOLKMOPMJKMKLNJGJIJNNNOLKMNOMJKMLLNJGIHJNMNOLKMNOMJKMLLNJHIHKNMNOLLMMOMJKNLLMIHIGKNLOPLLMMNMJLNLMMIIHGLNKOOKMNMNMJLNLMMIJGGLNKOOLMNMNMJMMLNLIJGGLNKNNLMNLMMKMMMNLJKGGLNKNNMMNLMMLMMMNLJJGGLMKNMMMMLMMLMMMNKKJGHKMLMMMMMLMMLLMMNKKJHHJLMMMMMMLMMMMMMMKLJHHJLMMMMMMMMNLMMMMKLKIIIKMNMLMLMMNLMMMMKMKIIIKMNMKMLMNMLNMLLKMLIIIKMOMKLLNNMLNMLLKMMIHIJMOMJKLNNLMOMLKKMMJHIJLOMJJLOOLMOMLKLNMKIHJLNNJILONLNOLKJLNMKIHJLNNJILPMLNOLKJMNLLJGJLMNJHLPMLOOLJJNOLLJGKLLNKHKOMMOOLIJNNLLKGJLLNKHKNMNOOLIKOOLLLHJLLNLHJMMNOOKHKONLLLIJKLNLIJLMOPOKHLONLLLJJKKNLIILMPPOKHLNNMLKKJKKNLIIKMPPOJHLNNNLKKJJKNLIHJMPONJILNNNLKKKJKNMIHJMPPNKILMNNLJLKJKMMIGJMPPMKJLMNOMJLKJKMMIGJLPOLKKLLNOMJLKJLMMIGKMPOLLLKLNONJLKJMMLIGJLONLLMKKOONKLKJMMKIHJLONLMNJKNPNKKKJNMJIIJKNNLMNJJNPNLLKJNMJJIJKNMKNNKJNPNLLJKNMIJJJKMMLNOKJNPMLLJKOMIJJJJMMLNOLJNPMMMJLOMIJJJJLLKNNLJMPMMMJLNMIIJJJLLLNNMJMPMMMJMNMJIJJJKLLMNMKMONLMKMMMJIIJJKKMMMMLMONLMLMMMKIHJKKKMLMMLNONLLLNMLKIHIKKKMLMMMNONLLLNMLLIHIKKLMKLNMNOMLLMNMLLIGIJKLLKLNNOOLLMMNMLLIGIJKMLJLNNOPLLMMNMLLIFIJKNKJLNNOPLLMLNNLMIEHJKNKJLNNPPLLMLMNLMIEHJKNLJKNNPPMLMLMMMMIEHJLNLJKMNPQNLLLMNNMIDGJLMMJKMNPPNMLLMNNMHEFKLLNKKMNPPNMLKLNNNHEFLLKNKKMNPPNNKKLNNNHEFLKJNLLLNPPOOKJLNMMIDFLKJNMLLNPPOOKILOMMIDFLKJMNMLNPPOOLILOMLIDFLJJMNNLMQPOPLIMOLKIEGLJJMNOLMQPOOLIMOLJIFGKJJLNOLLQPOOKJMOLJHGGJJJLNPMLQPOOKKNOKIHHGJKJLNPNLQQNNKLNNKHHIGIJJLMPNLPQNNKLNNKHGIHIKJLMOOMPQNMKLNNKGGIHIKJLMOONPQNLLMNNKGGIHIKKLLNPNPQNLLLNNKGFIHJKKLLNPOQQNLMLNNKGFHHJKKLLNPOQQMLLLNOKFFHGJLKLLNPOQPMLLKNOKGFGGJMLLLNPOQQMMMKMOKHFGGJMLKLNOORQMMMKLOKHFFGJNMKLNONQQMMMJLOLHFFFJNMKLOPNQQMMMJKOLHGEEJNNJLOPNQQNMMJKOLHGFEJNNJMPPNPQNMMIJOLHHFDINOKLPPNPQNMNJJNLIHFDIOOKLQONOQNMNJINMIHFDHNOLLQONORNMMJIMMIHFDGNOLLRONOQNMMJIMMIHFDHNOLLRPMOQOMMJILMIHFDHMOMMRQMOQOMLJILMIIFDHLNMMRQNOQOMLJILLIIFDHLNMNRQNNQOMLJILLIIFDIKNMNRQONPOMLJJMLIJFDILMMNRRPNPOMKIJMLIJFDIKMMMRRPOPNMKIJMLIJFDIKMMMRRPOONLKIJMKIJGDIKLMMRSPOONLKHJMKIJFEIKLMMRSPPNNLKHJMJIJFEIKLMMQSQPONLKHJMJIJFFIKLMMQTQPOMLKHKMJIKGFJJLMNQSRPOMLKHJLIIKGGJJKMNPSRPOMLKHJLIIJGGKJKMNPSRQPMLKHJKIIJHHKJJMNPSRQPMLKHJKIJIHHLJJMNORQQPMLKIIKIJIHILJJMNORQQQMLLIIJIKIHILJJMNOQPPQMLLIHJJKHHJLJJMNOQPPQNLLJHJJKHHJLJJMNOPPPRNLLJHIKKHGKLKJMNNPOPROLLJHIKKHGKLKJMNNONOROMLJHIKKIGKLKJMNNNNOROMLJHIJKIHJLKKMNNNMORPMLJHJJKIHJLKKMONMLNRPNKKIJJKIIJLKKMONMKNRPNKKIJJKJIJLKKMONLKNRQNKKJKJKJIKKKKMONKJNRQNKKJKJKJIKKJKMONJJMRPNKKKKKKJJKKJKNONJJMRPNKKKKKLJJKJIKNOMIINQPNLKLKLMJJKJIKOOLIINQONLKLKLNIJKIIKOOLHIOPONLLLKMOJJKIILOOKHIOONMLLLKNPJJKHILOOKHJPONMLNKKNPJIKHILONJGJPNNLLOKKOQKIJHIMNNJGKONNKLPKKORLJJGIMNMIHKNNMKLPKKPRLJIGJMMMIILNNMJMPKKPRMJIGJNMLIJLMNLJMOLKPRNKHGJNMKIKKMNKJNNLKPRNKHGJMLJIKKMNKKMMMLPROKHHJLLJJLJLMJLMMMLPROKHIJKLIKKJMMKMLMNLPRPLIJJJKJKKILMKMKMOMORPLIJJIKJLKILLLMJMOMORPMJJIIJKLJIKLMMJLONOQPMJJIHJLLIIKLNLJLONOQPNKJHHJMLIIJLOLJLONOPQOLJHGJNLHIILOKJLOOOPQPLJHGJNLHIIMOKJLNOOPQQMIGGKNKHHIMOKJLNONPQQMIGGLNKHHIMNLJLNONPRQMIFGMMJGHJNNLKKNONPRQMHEHNMIGHKMMMKKMOMQSQMHEIOMIFHLMMMKJNOMQTQMHEJOMIEHMMLMLJMOMQUQLHEKNLIEHMLLNLIMOLQUPLGFLNLIEHMLKOLIMNMRUPLGGLNKIFIMLKOLIMNLRUOKGHMMKHFIMLKOMIMMMSTOKHIMMJHGIMLKOMIMMMSTOKHIMLJHHJMKLNMJMMMSSNKHJMLIHHJLKLNMJMMMSSNKIJMLIHHJLKLNMKMMMRRNKJKMKHHIKLKLNMKMMMRRMKJKMJHHIKLKLNMLMMMQQMKKKLJIHILLKLMMLMMMQQMKKLLIJHILLJLMMMMMMPPMKKMKIJHILLJLMMNMMNOOMKKMKIJHILLJLLMNMMNNONKKMJIJIJLKJLLNOMMNNONKKMJIJIJLJJLLNOMMNMONKKMJJIIKLIJMLNOMMNMNNJKMKJIIKLHJMLNPMMNMNNJJLKKIJLLHJMMOPNLMMNNJJLLKIJLLHJMMOPNLMMNMJILLKIJMLGJMNOPNLMNNMJILMLIJLKHIMNPPNLMNOLJHLMLJKLKHIMOPPNLLOOLIHKLLKKLKHHLPPPNLLOOLIGKLLKKKKIIKPQPNLMOOKHGKLLLLKJIIKPQOMLMPOKHHJLLMLJJIIKPQOMMMOPKGHJLLMMJIJJKOQOLMMOPJGHILLNMJIJJLOROLNMOPJGHHLLNNJIJKLNROLNMOPJHGHLLNNJHJKLNQNLNNPOJHGHKKNNJHJKMOQNLNMPOJIFHKKNNJHJLMOPMLNMPOJIEHKKNOJIJLMPOMMNMPOKIEHKJNOJIJLMPNLMNMPOLIEHJJNOJJJLNQNKNNMOPMIEIJINOJJKLNQMJNNMOPNHFIIINOJJKLNQMJMNMNQOHGIHIMNKJLLNQMILOMMQOHGHHIMNKKLLNQNILNMMQOHHHGILMLLMMNQNIKNMMQPIHHGJLMLLMMNQNIJNMMQOIIGGJKLLLNNNQOIJMNMQPJIGGJKLLLNNNPOIILNNPPKIGHJKLKLONNPNIHKMNPPLIFHIKKKMPONPOIHJMOOPLIFGHKMNPRRRTURQSUUTTQJCBACEFHIHGEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBCCCCCDDDDEEEFFFGGGHHIIIJJJKKKKKLLLLLLLLLLL";
sample_syn=sample_syn.split("").map(x=>(x.charCodeAt()-76)/128);
let lerp=(a,b,x)=>a+(b-a)*x
let fract=x=>x-Math.floor(x)

let play_sample=(x,sample)=>{
	i=x/4;
	p=15333/4;
	i=i>p?p+Math.abs((i-p)%(32768/4)-(16384/4)):i;
	return sample[i|0]
}

let chords_ = [
    [57,64,69,72],
    [53,60,65,0xFF]
];

// rvb from https://dittytoy.net/ditty/cfd7da1d77
// it's extremely minified because it's reused from a schroeder algorithm I had made. also, some of the implementations
// might be wrong
class CircularBuffer{constructor(size){this.buffer=Array(size).fill(0);this.bufferLength=size;this.head=this.tail=0}cubicInterpolation(y0,y1,y2,y3,mu){var a0=0;var a1=0;var a2=0;var a3=0;var mu2=mu*mu;a0=-.5*y0+1.5*y1-1.5*y2+.5*y3;a1=y0-2.5*y1+2*y2-.5*y3;a2=-.5*y0+.5*y2;a3=y1;return a0*mu*mu2+a1*mu2+a2*mu+a3}getSample(inValue){this.tail=this.head-inValue;if(this.tail>this.bufferLength-1){this.tail-=this.bufferLength}else if(this.tail<0){this.tail+=this.bufferLength}return this.buffer[this.tail]}write(inValue){this.head=(this.head+=1)%this.bufferLength;this.buffer[this.head]=inValue}readCubic(index){var mu=index-Math.floor(index);return this.cubicInterpolation(this.getSample(Math.floor(index)+1),this.getSample(Math.floor(index)),this.getSample(Math.floor(index)-1),this.getSample(Math.floor(index)-2),mu)}}
class AllPass{constructor(inValue,inG,sr){this.delayLength=inValue;this.g=inG;this.delayedSample=this.feedForwardSample=0;this.buffer=new CircularBuffer(sr)}process(sample){this.delayedSample=this.buffer.readCubic(this.delayLength);this.buffer.write(sample+this.delayedSample*this.g);this.feedForwardSample=sample*-this.g;return this.delayedSample+this.feedForwardSample}setFeedback(i){this.g=i}}

class Reverb {
	constructor (SR,delays,decay=.5,dry=1.,wet=.5,enableLowpass=true,cutoff=.4) {
		this.SR = SR;
		this.options = {decay:decay,dry:dry,wet:wet};

		this.t = Array(delays.length).fill(0);
		this.bufs = delays.map(x=>Array(x).fill(0));
		this.alls = delays.map(x=>new AllPass(x,Math.random()/4+.25 ,SR))

		this.eLP = enableLowpass;
		this.l = 0;
		this.rl = 0
		this.cutoff = cutoff;
	}

	changeOptions (opt) {
		for (let i=0;i<Object.values(opt).length;i++) {
			this.options[Object.keys(opt)[i]] = Object.values(opt)[i];
		}
	}

	process (x) {
		for (let i=0;i<this.bufs.length;i++) {
			this.t[i] = (this.t[i]+1)%this.bufs[i].length;
			this.bufs[i][this.t[i]] = (i==0?x:this.bufs[i-1][this.t[i-1]])+this.alls[i].process(this.bufs[i][this.t[i]]*(this.options.decay))||0
		}
		let o;
		if (this.eLP) {
			this.l = this.bufs[this.bufs.length-1][this.t[this.bufs.length-1]]*this.cutoff+this.l*(1-this.cutoff);
			this.rl = x*this.cutoff+this.rl*(1-this.cutoff);
			o = this.l;
		}
		else {
			o=this.bufs[this.bufs.length-1][this.t[this.bufs.length-1]]-x;
		}

		return (o-(this.eLP?this.rl:0))*this.options.wet+x*this.options.dry
	}
}

let StereoReverbPreset = filter.def(class {
	constructor (options) {
		this.SR = 48e3;
        this.eff = [new Reverb(48e3,[5481,9547,12287,13256],.5,1.,.1,true,.2),new Reverb(48e3,[5485,9549,12288,13257],.5,1.,.1,true,.2)];
        this.x = [0,0]; // i'm adding a hp filter because it's really unstable sometimes
	}

    process (input,options) {
        let unFiltOut = [this.eff[0].process(input[0]),this.eff[1].process(input[1])];
        // there might be a quicker method for this but idrk
        unFiltOut.forEach((x,i)=>{
            this.x[i] += (x - this.x[i])/80;
        })
        return this.x.map((x,i)=>x-unFiltOut[i]);
    }
}
)

let sharedRV = StereoReverbPreset.createShared();

const osc = synth.def( (phase, env, tick, options) => {o=play_sample(phase*169,sample_syn) * env.value*2;return [o,o*.5]} );
const sine_ = synth.def( (phase, env, tick, options) => {o=Math.sin(phase * 8 * Math.PI)/6 * env.value;return [o*.5,o]} );

// https://dittytoy.net/syntax#envelopes
const sinenv = env.def(
    class {
        constructor(options) {
        }

        duration(options) {
            return options.duration;
        }

        value(tick, options) {
            return 1.+ .2 * Math.cos(tick / options.duration * 32 * Math.PI);
        }
    },
    { duration: 1, name: 'sinenv' }
);

const bas = synth.def( (phase, env, tick, options) => Math.sin(phase/4 * Math.PI+Math.sin(phase/4*Math.PI)) * env.value );

const drum = synth.def(
    class {
        constructor(options) {
            this.phase = 0;
        }
        process(note, env, tick, options) {
            this.phase += 1;
            let o = 0;
            let t = this.phase;
            if (note == 40) {
                o += Math.sin(Math.sin(Math.sqrt(t)**.1*128+t*Math.PI/1024)+((Math.random()-.5)*.1**(t/200)))*.1**(t/9900);
            }
            if (note == 41) {
                o += Math.tanh(2*(((Math.random()-.5)*.1**(t/3000))+Math.sin(t/ditty.sampleRate*110*Math.PI*2-50/(t/44))/2*.4**(t/2200)));
            }
            return o * env.value;
        }
    }
);

const guitar = synth.def(
    class {
        constructor (options) {
            this.size = 1920*4;
            this.buf = Array(this.size).fill(0).map(x=>Math.random()*2-1)
            this.t = 0;
            this.x = 0;
            this.lp = 0;
        }
        
        process (note,env,tick,options) {
            this.t++;
            this.r = ditty.sampleRate/(midi_to_hz(note));
            let a = this.buf[(this.t-(this.r|0)+this.size)%this.size];
            let b = this.buf[(this.t-(this.r|0)-1+this.size)%this.size];
            
            this.x = lerp(a,b,fract(this.r));
            
            this.lp += (this.x-this.lp)*options.amp/1.3;
            
            this.x = this.lp;
            
            this.buf[this.t%this.size] = this.x;
            
            return this.x*env.value/2;
        }
    }    
)

ditty.bpm = 180;


loop( () => {


    osc.play(c4, { attack: 0., release: 0.8,  duration: 4 });
    
    sleep(4);
    osc.play(d3, { attack: 0., release: 0.8,  duration: 1 });
    sleep(1);
    osc.play(e3, { attack: 0., release: 0.8,  duration: 1 });
    sleep(1);
    osc.play(f3, { attack: 0., release: 0.8,  duration: 1 });
    sleep(1);
    
    osc.play(c4, { attack: 0., release: 0.8,  duration: 2 });
    sleep(2);
    osc.play(a3, { attack: 0., release: 0.8,  duration: 3 });
    sleep(3);   
    
    osc.play(d3, { attack: 0., release: 0.8,  duration: 1 });
    sleep(1);   
    osc.play(e3, { attack: 0., release: 0.8,  duration: 1 });
    sleep(1);   
    osc.play(f3, { attack: 0., release: 0.8,  duration: 1 });
    sleep(1);  
    osc.play(e4, { attack: 0., release: 0.8,  duration: 1 });
    sleep(1);  
    
}, { name: 'synth1' });

loop( (loopCount) => {
    if (loopCount >= 4) {
    drum.play(40, { attack: 0., release: 0.25,  duration: 1 });
    sleep(1);
    drum.play(41, { attack: 0., release: 0.25,  duration: 1 });
    sleep(.5);
    drum.play(40, { attack: 0., release: 0.25,  duration: 1 });
    sleep(1.5);
    drum.play(41, { attack: 0., release: 0.25,  duration: 1 });
    sleep(1);
    
    }
    else if (loopCount == 3) {
        sleep(3)
        drum.play(41, { attack: 0., release: 0.25,  duration: 1 });
        sleep(1)
    }
    else {
        sleep(4);
    }
    
}, { name: 'drums' });

// https://dittytoy.net/ditty/220e9dcde7
class Smoother {
    // We feed values to this object, and it smoothes them out
    constructor(v, dur) {
        this.v = v;
        this.a0 = clamp01(ditty.dt / dur);
    }
    update(target) { // should be called once per sample
        return this.v += this.a0 * (target - this.v);
    }
}

loop( (loopCount) => {

    if (loopCount >= 8) {
    const note_smoother = new Smoother(c4, 0.01);
    const q = sine_.play( (tick, options) => note_smoother.update(options.target), { duration: 16, target: c4, env: sinenv } );
    
    sleep(4);
    q.options.target = d3;
    sleep(1);
    q.options.target = e3;
    sleep(1);
    q.options.target = f3;
    sleep(1);
    
    q.options.target = c4;
    sleep(2);
    q.options.target = a3;
    sleep(3);   
    
    q.options.target = d3;
    sleep(1);   
    q.options.target = e3;
    sleep(1);   
    q.options.target = f3;
    sleep(1);  
    q.options.target = e4;
    sleep(1);  
    }
    else {
        sleep(4);
    }
    
}, { name: 'flute (?)' });

loop( (loopCount) => {

    if (loopCount >= 8) {

    bas.play(a4, { attack: 0.01, release: 0.01,  duration: 1 });
    sleep(1.5);
    bas.play(a4, { attack: 0.01, release: 0.01,  duration: 1 });
    sleep(1);
    bas.play(g4, { attack: 0.01, release: 0.01,  duration: .5 });
    sleep(0.5);
    bas.play(a4, { attack: 0.01, release: 0.01,  duration: .5 });
    sleep(1);
    
    bas.play(f4, { attack: 0.01, release: 0.01,  duration: 1 });
    sleep(1.5);
    bas.play(f4, { attack: 0.01, release: 0.01,  duration: .5 });
    sleep(1);
    bas.play(f4, { attack: 0.01, release: 0.01,  duration: .5 });
    sleep(.5);
    bas.play(g4, { attack: 0.01, release: 0.01,  duration: .5 });
    sleep(1);
    }
    else if (loopCount==7) {
        sleep(2.5)
        bas.play(e4, { attack: 0.01, release: 0.01,  duration: .5 });
        sleep(.5)
        bas.play(f4, { attack: 0.01, release: 0.01,  duration: .5 });
        sleep(.5)
        bas.play(g4, { attack: 0.01, release: 0.01,  duration: .5 });
        sleep(.5)
    }
    else {
        sleep(4);
    }
    
}, { name: 'bass' });

let o = [];
for (let i = 0; i< chords_[0].length; i++) {
o.push(Math.random());
loop( (loopCount) => {
    if (loopCount>=8) {
    if (chords_[loopCount/2&1][i]!=0xFF) {
        sleep(.5);
        guitar.play(chords_[loopCount/2&1][i], { attack: 0., release: 0.1,  duration: .1, amp:.3, pan: i/7 });
        sleep(.25);
        guitar.play(chords_[loopCount/2&1][i], { attack: 0., release: 0.1,  duration: .1, amp:.3, pan: i/7 });
        sleep(.25);
        guitar.play(chords_[loopCount/2&1][i], { attack: 0., release: 0.3,  duration: .4, pan: i/7 });
        sleep(.5);
        guitar.play(chords_[loopCount/2&1][i], { attack: 0., release: 0.2,  duration: .4, pan: i/7 });
        sleep(.5);
    }
    else {
        sleep(2)
    }
    }
    else {
        // "prep" the delays
        sleep(4+(i)/512);
    }
}, { name: 'guitar(?) n'+(1+i) }).connect(sharedRV);
}