diff --git a/Project.xml b/Project.xml
index b40d81b5c..4536d8c09 100644
--- a/Project.xml
+++ b/Project.xml
@@ -94,5 +94,5 @@
-
+
diff --git a/assets/data/south/south-easy.json b/assets/data/south/south-easy.json
new file mode 100644
index 000000000..d64df96e2
--- /dev/null
+++ b/assets/data/south/south-easy.json
@@ -0,0 +1 @@
+{"song":{"song":"South","notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[11636.818181818182,3,0],[11999.818181818182,3,0],[12363.818181818182,0,0],[12726.818181818182,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[13101.818181818182,0,0],[13454.818181818182,1,0],[13817.818181818182,3,0],[13999.818181818182,3,0],[14181.818181818182,3,200]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[14545.818181818182,3,0],[14908.818181818182,3,0],[15272.818181818182,3,0],[15636.818181818182,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[16008.818181818182,0,0],[16363.818181818182,0,0],[16726.818181818184,2,0],[17090.818181818184,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[17455,3,0],[17818,3,0],[18182,0,0],[18545,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[18920,0,0],[19273,1,0],[19636,3,0],[19818,3,0],[20000,3,200]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[20364,3,0],[20727,3,0],[21091,3,0],[21455,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[21827,0,0],[22182,0,0],[22545,2,0],[22909,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[23273,2,0],[23636,0,0],[23818,0,0],[24000,2,0],[24364,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[24734,2,0],[25091,2,0],[25455,2,0],[25818,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[26193,0,0],[26545,0,0],[26727,0,0],[26909,3,0],[27273,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[27648,2,0],[28000,2,0],[28364,2,0],[28545,3,0],[28727,0,0],[28909,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[29091.181818181816,2,0],[29454.181818181816,0,0],[29636.181818181816,0,0],[29818.181818181816,2,0],[30182.181818181816,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[30552.181818181816,2,0],[30909.181818181816,2,0],[31273.181818181816,2,0],[31636.181818181816,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[32011.181818181816,0,0],[32363.181818181816,0,0],[32545.181818181816,0,0],[32727.181818181816,3,0],[33091.181818181816,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[33466.181818181816,2,0],[33818.181818181816,2,0],[34182.181818181816,2,0],[34363.181818181816,3,0],[34545.181818181816,0,0],[34727.181818181816,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[34918,2,0],[35273,0,0],[35455,2,0],[35636,3,0],[35818,0,0],[36000,2,0],[36182,3,0],[35091,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[36380,0,0],[36545,2,0],[36727,3,0],[36909,0,0],[37273,3,0],[37455,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[37834,2,0],[38000,3,0],[38182,0,0],[38364,2,0],[38545,3,0],[38727,0,0],[38909,2,0],[39091,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[39284,0,0],[39727,3,0],[39909,0,0],[40000,3,0],[40182,0,0],[40364,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[40736.181818181816,2,0],[40909.181818181816,3,0],[41091.181818181816,0,0],[41273.181818181816,2,0],[41454.181818181816,3,0],[41636.181818181816,0,0],[41818.181818181816,2,0],[42000.181818181816,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[42198.181818181816,0,0],[42363.181818181816,2,0],[42545.181818181816,3,0],[42727.181818181816,0,0],[42909.181818181816,0,0],[43091.181818181816,3,0],[43273.181818181816,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[43652.181818181816,2,0],[43818.181818181816,3,0],[44000.181818181816,0,0],[44182.181818181816,2,0],[44363.181818181816,3,0],[44545.181818181816,0,0],[44727.181818181816,2,0],[44909.181818181816,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[45102.181818181816,0,0],[45545.181818181816,3,0],[45727.181818181816,0,0],[45818.181818181816,3,0],[46000.181818181816,0,0],[46182.181818181816,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[46554.818181818184,0,0],[46908.818181818184,1,0],[47181.818181818184,0,0],[47454.818181818184,1,0],[47726.818181818184,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[48011.818181818184,0,0],[48181.818181818184,2,0],[48363.818181818184,3,0],[48545.818181818184,0,0],[48726.818181818184,3,0],[48908.818181818184,2,0],[49090.818181818184,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[49455,0,0],[49818,3,0],[50000,0,0],[50364,3,0],[50727,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[50914,1,0],[51273,0,0],[51455,3,0],[51727,2,0],[52091,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[52373,0,0],[52727,1,0],[53000,0,0],[53273,1,0],[53545,2,0],[53727,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[53830,0,0],[54000,2,0],[54182,3,0],[54364,0,0],[54545,3,0],[54727,2,0],[54909,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[55273.181818181816,0,0],[55636.181818181816,3,0],[55818.181818181816,0,0],[56182.181818181816,3,0],[56545.181818181816,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[56732.181818181816,1,0],[57091.181818181816,0,0],[57273.181818181816,3,0],[57545.181818181816,2,0],[57909.181818181816,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[58182.27272727273,3,0],[58545.27272727273,3,0],[58909.27272727273,0,0],[59272.27272727273,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[59647.27272727273,0,0],[60363.27272727273,3,0],[60545.27272727273,3,0],[60727.27272727273,3,200]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[61091.27272727273,3,0],[61454.27272727273,3,0],[62182.27272727273,0,0],[61727,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[62550,0,0],[63000,0,0],[63364,0,0],[63364,7,0],[63636,5,0],[63636,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[64000.454545454544,3,0],[64363.454545454544,3,0],[64727.454545454544,0,0],[65090.454545454544,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[65465.454545454544,0,0],[66181.45454545454,3,0],[66363.45454545454,3,0],[66545.45454545454,3,200]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[66909.45454545454,3,0],[67272.45454545454,3,0],[68000.45454545454,0,0],[67545.18181818182,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[68368.18181818182,0,0],[68818.18181818182,0,0],[69182.18181818182,0,0],[69454.18181818182,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[69818.45454545454,2,0],[70181.45454545454,0,0],[70363.45454545454,0,0],[70545.45454545454,2,0],[70909.45454545454,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[71279.45454545454,2,0],[71636.45454545454,2,0],[72000.45454545454,2,0],[72363.45454545454,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[72738.45454545454,0,0],[73090.45454545454,0,0],[73272.45454545454,0,0],[73454.45454545454,3,0],[73818.45454545454,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[74195,2,0],[74364,3,0],[74727,0,0],[74909,1,0],[75273,0,0],[75455,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[75636.63636363637,2,0],[75999.63636363637,0,0],[76181.63636363637,0,0],[76363.63636363637,2,0],[76727.63636363637,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[77097.63636363637,2,0],[77454.63636363637,2,0],[77818.63636363637,2,0],[78181.63636363637,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[78556.63636363637,0,0],[78908.63636363637,0,0],[79090.63636363637,0,0],[79272.63636363637,3,0],[79636.63636363637,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[80013.18181818182,2,0],[80182.18181818182,3,0],[80545.18181818182,0,0],[80727.18181818182,1,0],[81091.18181818182,0,0],[81273.18181818182,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"lengthInSteps":16,"bpm":165,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0},{"lengthInSteps":16,"bpm":165,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0},{"lengthInSteps":16,"bpm":165,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0}],"bpm":165,"sections":0,"needsVoices":true,"player1":"bf","player2":"spooky","sectionLengths":[],"speed":1.1},"bpm":165,"sections":63,"notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[11636.818181818182,3,0],[11999.818181818182,3,0],[12363.818181818182,0,0],[12726.818181818182,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[13101.818181818182,0,0],[13454.818181818182,1,0],[13817.818181818182,3,0],[13999.818181818182,3,0],[14181.818181818182,3,200]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[14545.818181818182,3,0],[14908.818181818182,3,0],[15272.818181818182,3,0],[15636.818181818182,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[16008.818181818182,0,0],[16363.818181818182,0,0],[16726.818181818184,2,0],[17090.818181818184,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[17455,3,0],[17818,3,0],[18182,0,0],[18545,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[18920,0,0],[19273,1,0],[19636,3,0],[19818,3,0],[20000,3,200]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[20364,3,0],[20727,3,0],[21091,3,0],[21455,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[21827,0,0],[22182,0,0],[22545,2,0],[22909,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[23273,2,0],[23636,0,0],[23818,0,0],[24000,2,0],[24364,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[24734,2,0],[25091,2,0],[25455,2,0],[25818,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[26193,0,0],[26545,0,0],[26727,0,0],[26909,3,0],[27273,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[27648,2,0],[28000,2,0],[28364,2,0],[28545,3,0],[28727,0,0],[28909,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[29091.181818181816,2,0],[29454.181818181816,0,0],[29636.181818181816,0,0],[29818.181818181816,2,0],[30182.181818181816,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[30552.181818181816,2,0],[30909.181818181816,2,0],[31273.181818181816,2,0],[31636.181818181816,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[32011.181818181816,0,0],[32363.181818181816,0,0],[32545.181818181816,0,0],[32727.181818181816,3,0],[33091.181818181816,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[33466.181818181816,2,0],[33818.181818181816,2,0],[34182.181818181816,2,0],[34363.181818181816,3,0],[34545.181818181816,0,0],[34727.181818181816,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[34918,2,0],[35273,0,0],[35455,2,0],[35636,3,0],[35818,0,0],[36000,2,0],[36182,3,0],[35091,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[36380,0,0],[36545,2,0],[36727,3,0],[36909,0,0],[37273,3,0],[37455,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[37834,2,0],[38000,3,0],[38182,0,0],[38364,2,0],[38545,3,0],[38727,0,0],[38909,2,0],[39091,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[39284,0,0],[39727,3,0],[39909,0,0],[40000,3,0],[40182,0,0],[40364,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[40736.181818181816,2,0],[40909.181818181816,3,0],[41091.181818181816,0,0],[41273.181818181816,2,0],[41454.181818181816,3,0],[41636.181818181816,0,0],[41818.181818181816,2,0],[42000.181818181816,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[42198.181818181816,0,0],[42363.181818181816,2,0],[42545.181818181816,3,0],[42727.181818181816,0,0],[42909.181818181816,0,0],[43091.181818181816,3,0],[43273.181818181816,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[43652.181818181816,2,0],[43818.181818181816,3,0],[44000.181818181816,0,0],[44182.181818181816,2,0],[44363.181818181816,3,0],[44545.181818181816,0,0],[44727.181818181816,2,0],[44909.181818181816,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[45102.181818181816,0,0],[45545.181818181816,3,0],[45727.181818181816,0,0],[45818.181818181816,3,0],[46000.181818181816,0,0],[46182.181818181816,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[46554.818181818184,0,0],[46908.818181818184,1,0],[47181.818181818184,0,0],[47454.818181818184,1,0],[47726.818181818184,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[48011.818181818184,0,0],[48181.818181818184,2,0],[48363.818181818184,3,0],[48545.818181818184,0,0],[48726.818181818184,3,0],[48908.818181818184,2,0],[49090.818181818184,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[49455,0,0],[49818,3,0],[50000,0,0],[50364,3,0],[50727,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[50914,1,0],[51273,0,0],[51455,3,0],[51727,2,0],[52091,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[52373,0,0],[52727,1,0],[53000,0,0],[53273,1,0],[53545,2,0],[53727,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[53830,0,0],[54000,2,0],[54182,3,0],[54364,0,0],[54545,3,0],[54727,2,0],[54909,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[55273.181818181816,0,0],[55636.181818181816,3,0],[55818.181818181816,0,0],[56182.181818181816,3,0],[56545.181818181816,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[56732.181818181816,1,0],[57091.181818181816,0,0],[57273.181818181816,3,0],[57545.181818181816,2,0],[57909.181818181816,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[58182.27272727273,3,0],[58545.27272727273,3,0],[58909.27272727273,0,0],[59272.27272727273,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[59647.27272727273,0,0],[60363.27272727273,3,0],[60545.27272727273,3,0],[60727.27272727273,3,200]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[61091.27272727273,3,0],[61454.27272727273,3,0],[62182.27272727273,0,0],[61727,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[62550,0,0],[63000,0,0],[63364,0,0],[63364,7,0],[63636,5,0],[63636,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[64000.454545454544,3,0],[64363.454545454544,3,0],[64727.454545454544,0,0],[65090.454545454544,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[65465.454545454544,0,0],[66181.45454545454,3,0],[66363.45454545454,3,0],[66545.45454545454,3,200]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[66909.45454545454,3,0],[67272.45454545454,3,0],[68000.45454545454,0,0],[67545.18181818182,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[68368.18181818182,0,0],[68818.18181818182,0,0],[69182.18181818182,0,0],[69454.18181818182,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[69818.45454545454,2,0],[70181.45454545454,0,0],[70363.45454545454,0,0],[70545.45454545454,2,0],[70909.45454545454,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[71279.45454545454,2,0],[71636.45454545454,2,0],[72000.45454545454,2,0],[72363.45454545454,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[72738.45454545454,0,0],[73090.45454545454,0,0],[73272.45454545454,0,0],[73454.45454545454,3,0],[73818.45454545454,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[74195,2,0],[74364,3,0],[74727,0,0],[74909,1,0],[75273,0,0],[75455,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[75636.63636363637,2,0],[75999.63636363637,0,0],[76181.63636363637,0,0],[76363.63636363637,2,0],[76727.63636363637,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[77097.63636363637,2,0],[77454.63636363637,2,0],[77818.63636363637,2,0],[78181.63636363637,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[78556.63636363637,0,0],[78908.63636363637,0,0],[79090.63636363637,0,0],[79272.63636363637,3,0],[79636.63636363637,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[80013.18181818182,2,0],[80182.18181818182,3,0],[80545.18181818182,0,0],[80727.18181818182,1,0],[81091.18181818182,0,0],[81273.18181818182,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"lengthInSteps":16,"bpm":165,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0},{"lengthInSteps":16,"bpm":165,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0},{"lengthInSteps":16,"bpm":165,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0}]}
\ No newline at end of file
diff --git a/assets/data/spookeez/spookeez-easy.json b/assets/data/spookeez/spookeez-easy.json
new file mode 100644
index 000000000..13bad4705
--- /dev/null
+++ b/assets/data/spookeez/spookeez-easy.json
@@ -0,0 +1 @@
+{"song":{"song":"Spookeez","notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[6400,0,0],[6800,3,0],[7200,3,0],[7600,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[8000,1,0],[8400,3,0],[9300,0,0],[9400,3,0],[8800,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[9600,0,0],[10000,3,0],[10400,3,0],[10800,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[11200,1,0],[11600,3,0],[12500,0,0],[12600,3,0],[12000,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[12800,2,0],[13200,0,0],[13700,2,0],[13900,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[15100,1,0],[14400,1,0],[14800,3,0],[15700,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[16000,2,0],[16400,0,0],[16900,2,0],[17100,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[19000,4,0],[19100,7,0],[18300,1,0],[17600,1,0],[18000,3,0],[18900,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[20000,3,0],[20600,3,0],[19700,3,0],[20400,3,0],[19200,2,0],[19500,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[20800,2,0],[21100,1,0],[21300,3,0],[21600,3,0],[22000,3,0],[21900,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[22900,3,0],[23200,3,0],[23600,3,0],[23800,3,0],[22700,1,0],[22400,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[24500,3,0],[24300,1,0],[24000,2,0],[25200,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[26400,3,0],[27000,3,0],[26100,3,0],[26800,3,0],[25600,2,0],[25900,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[27200,2,0],[27500,1,0],[27700,3,0],[28000,3,0],[28400,3,0],[28300,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[29300,3,0],[29600,3,0],[30000,3,0],[30200,3,0],[29100,1,0],[28800,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[30900,3,0],[30700,1,0],[30400,2,0],[31600,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[32000,0,0],[32400,3,0],[32800,3,0],[33200,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[33600,1,0],[34000,3,0],[34900,0,0],[34400,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[35200,0,0],[35600,3,0],[36000,3,0],[36400,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[36800,1,0],[37200,3,0],[38100,0,0],[37600,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[38400,2,0],[38800,0,0],[39000,0,0],[39400,3,0],[39600,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[40700,1,0],[40000,1,0],[40400,3,0],[40900,0,0],[41300,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[41600,2,0],[42000,0,0],[42200,0,0],[42600,3,0],[42800,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[44600,4,0],[44700,7,0],[43900,1,0],[43200,1,0],[43600,3,0],[44100,0,0],[44500,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[45600,3,0],[45300,3,0],[46000,3,0],[44800,2,0],[45100,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[46400,2,0],[46700,1,0],[46900,3,0],[47300,1,0],[47500,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[48500,3,0],[48800,3,0],[49200,3,0],[49400,3,0],[48300,1,0],[48000,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[50100,3,0],[49900,1,0],[49600,2,0],[50400,3,0],[50800,4,0],[51000,7,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[52000,3,0],[51700,3,0],[52400,3,0],[51200,2,0],[51500,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[52800,2,0],[53100,1,0],[53300,3,0],[53700,1,0],[53900,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[54900,3,0],[55200,3,0],[55600,3,0],[55800,3,0],[54700,1,0],[54400,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[56500,3,0],[56300,1,0],[56000,2,0],[56800,3,0],[56900,4,0],[56800,4,0],[56700,4,0],[57100,4,0],[57300,5,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[57600,2,300],[58000,3,400],[58500,1,200],[58800,2,200]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[59200,2,100],[59600,0,300],[60000,1,300],[60400,2,200]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[60800,1,0],[61200,1,0],[61800,3,0],[62000,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[62400,1,0],[62800,1,0],[63400,3,0],[63600,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[64000,2,300],[64400,3,400],[64900,1,200],[65200,2,200]]},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[65600,2,100],[66000,0,300],[66400,1,300],[66800,2,200]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[67200,1,0],[67600,1,0],[68200,3,0],[68400,0,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[68800,1,0],[69200,1,0],[69800,3,0],[70000,0,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[70400,2,0],[71000,2,0],[71400,3,0],[71700,1,0],[70600,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[72000,2,0],[72600,2,0],[73000,3,0],[73300,1,0],[72200,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[73600,2,0],[74200,2,0],[74600,3,0],[74900,1,0],[73800,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":157,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[75200,2,0],[75800,2,0],[76200,3,0],[76500,1,0],[75400,2,0],[75200,4,300],[75600,5,300],[76000,7,300],[76400,5,300]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[76800,2,0],[77400,2,0],[77800,3,0],[78100,1,0],[77000,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[78400,2,0],[79000,2,0],[79400,3,0],[79700,1,0],[78600,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[80000,2,0],[80600,2,0],[81000,3,0],[81300,1,0],[80200,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[81600,2,0],[82200,2,0],[82600,3,0],[82900,1,0],[81800,2,0],[81600,4,300],[82000,5,300],[82400,7,300],[82800,5,300]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[83200,2,0],[83800,2,0],[84200,3,0],[84500,1,0],[83400,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[84800,2,0],[85400,2,0],[85800,3,0],[86100,1,0],[85000,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[86400,2,0],[87000,2,0],[87400,3,0],[87700,1,0],[86600,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[88000,2,0],[88600,2,0],[89000,3,0],[89300,1,0],[88200,2,0],[88000,4,300],[88400,5,300],[88800,7,300],[89200,5,300]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[89600,2,0],[90200,2,0],[90600,3,0],[90900,1,0],[89800,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[91200,2,0],[91800,2,0],[92200,3,0],[92500,1,0],[91400,2,0],[91200,2,0],[91800,2,0],[92200,3,0],[92500,1,0],[91400,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[92800,2,0],[93400,2,0],[93800,3,0],[94100,1,0],[93000,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[94400,2,0],[95000,2,0],[95400,3,0],[95700,1,0],[94600,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0}],"bpm":150,"sections":0,"needsVoices":true,"player1":"bf","player2":"spooky","sectionLengths":[],"speed":1},"bpm":150,"sections":63,"notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[6400,0,0],[6800,3,0],[7200,3,0],[7600,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[8000,1,0],[8400,3,0],[9300,0,0],[9400,3,0],[8800,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[9600,0,0],[10000,3,0],[10400,3,0],[10800,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[11200,1,0],[11600,3,0],[12500,0,0],[12600,3,0],[12000,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[12800,2,0],[13200,0,0],[13700,2,0],[13900,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[15100,1,0],[14400,1,0],[14800,3,0],[15700,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[16000,2,0],[16400,0,0],[16900,2,0],[17100,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[19000,4,0],[19100,7,0],[18300,1,0],[17600,1,0],[18000,3,0],[18900,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[20000,3,0],[20600,3,0],[19700,3,0],[20400,3,0],[19200,2,0],[19500,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[20800,2,0],[21100,1,0],[21300,3,0],[21600,3,0],[22000,3,0],[21900,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[22900,3,0],[23200,3,0],[23600,3,0],[23800,3,0],[22700,1,0],[22400,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[24500,3,0],[24300,1,0],[24000,2,0],[25200,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[26400,3,0],[27000,3,0],[26100,3,0],[26800,3,0],[25600,2,0],[25900,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[27200,2,0],[27500,1,0],[27700,3,0],[28000,3,0],[28400,3,0],[28300,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[29300,3,0],[29600,3,0],[30000,3,0],[30200,3,0],[29100,1,0],[28800,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[30900,3,0],[30700,1,0],[30400,2,0],[31600,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[32000,0,0],[32400,3,0],[32800,3,0],[33200,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[33600,1,0],[34000,3,0],[34900,0,0],[34400,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[35200,0,0],[35600,3,0],[36000,3,0],[36400,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[36800,1,0],[37200,3,0],[38100,0,0],[37600,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[38400,2,0],[38800,0,0],[39000,0,0],[39400,3,0],[39600,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[40700,1,0],[40000,1,0],[40400,3,0],[40900,0,0],[41300,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[41600,2,0],[42000,0,0],[42200,0,0],[42600,3,0],[42800,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[44600,4,0],[44700,7,0],[43900,1,0],[43200,1,0],[43600,3,0],[44100,0,0],[44500,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[45600,3,0],[45300,3,0],[46000,3,0],[44800,2,0],[45100,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[46400,2,0],[46700,1,0],[46900,3,0],[47300,1,0],[47500,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[48500,3,0],[48800,3,0],[49200,3,0],[49400,3,0],[48300,1,0],[48000,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[50100,3,0],[49900,1,0],[49600,2,0],[50400,3,0],[50800,4,0],[51000,7,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[52000,3,0],[51700,3,0],[52400,3,0],[51200,2,0],[51500,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[52800,2,0],[53100,1,0],[53300,3,0],[53700,1,0],[53900,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[54900,3,0],[55200,3,0],[55600,3,0],[55800,3,0],[54700,1,0],[54400,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[56500,3,0],[56300,1,0],[56000,2,0],[56800,3,0],[56900,4,0],[56800,4,0],[56700,4,0],[57100,4,0],[57300,5,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[57600,2,300],[58000,3,400],[58500,1,200],[58800,2,200]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[59200,2,100],[59600,0,300],[60000,1,300],[60400,2,200]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[60800,1,0],[61200,1,0],[61800,3,0],[62000,0,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[62400,1,0],[62800,1,0],[63400,3,0],[63600,0,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[64000,2,300],[64400,3,400],[64900,1,200],[65200,2,200]]},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[65600,2,100],[66000,0,300],[66400,1,300],[66800,2,200]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[67200,1,0],[67600,1,0],[68200,3,0],[68400,0,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[68800,1,0],[69200,1,0],[69800,3,0],[70000,0,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[70400,2,0],[71000,2,0],[71400,3,0],[71700,1,0],[70600,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[72000,2,0],[72600,2,0],[73000,3,0],[73300,1,0],[72200,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[73600,2,0],[74200,2,0],[74600,3,0],[74900,1,0],[73800,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":157,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[75200,2,0],[75800,2,0],[76200,3,0],[76500,1,0],[75400,2,0],[75200,4,300],[75600,5,300],[76000,7,300],[76400,5,300]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[76800,2,0],[77400,2,0],[77800,3,0],[78100,1,0],[77000,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[78400,2,0],[79000,2,0],[79400,3,0],[79700,1,0],[78600,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[80000,2,0],[80600,2,0],[81000,3,0],[81300,1,0],[80200,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[81600,2,0],[82200,2,0],[82600,3,0],[82900,1,0],[81800,2,0],[81600,4,300],[82000,5,300],[82400,7,300],[82800,5,300]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[83200,2,0],[83800,2,0],[84200,3,0],[84500,1,0],[83400,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[84800,2,0],[85400,2,0],[85800,3,0],[86100,1,0],[85000,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[86400,2,0],[87000,2,0],[87400,3,0],[87700,1,0],[86600,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":false,"sectionNotes":[[88000,2,0],[88600,2,0],[89000,3,0],[89300,1,0],[88200,2,0],[88000,4,300],[88400,5,300],[88800,7,300],[89200,5,300]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[89600,2,0],[90200,2,0],[90600,3,0],[90900,1,0],[89800,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[91200,2,0],[91800,2,0],[92200,3,0],[92500,1,0],[91400,2,0],[91200,2,0],[91800,2,0],[92200,3,0],[92500,1,0],[91400,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[92800,2,0],[93400,2,0],[93800,3,0],[94100,1,0],[93000,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[[94400,2,0],[95000,2,0],[95400,3,0],[95700,1,0],[94600,2,0]],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0},{"lengthInSteps":16,"bpm":150,"changeBPM":false,"mustHitSection":true,"sectionNotes":[],"typeOfSection":0}]}
\ No newline at end of file
diff --git a/assets/data/tutorial/tutorial-easy.json b/assets/data/tutorial/tutorial-easy.json
new file mode 100644
index 000000000..b5a64ec3a
--- /dev/null
+++ b/assets/data/tutorial/tutorial-easy.json
@@ -0,0 +1 @@
+{"song":{"song":"Tutorial","notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[9600,0,0],[10800,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[12000,0,0],[13200,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[14400,0,0],[15600,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[16800,0,0],[18000,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[19200,2,0],[20400,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[21600,2,0],[22800,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[24000,2,0],[25200,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[26400,2,0],[27600,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[28800,0,0],[30000,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[31200,1,0],[32400,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[33600,0,0],[34800,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[36000,1,0],[37200,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[38400,1,0],[39000,1,0],[39600,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[40800,1,0],[41400,1,0],[42000,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[43200,1,0],[43800,1,0],[44400,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[45600,1,0],[46200,1,0],[46800,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[48000,1,0],[48300,2,0],[48600,3,0],[48900,2,0],[49800,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[50400,1,0],[50700,2,0],[51000,3,0],[51300,2,0],[52200,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[52800,3,0],[53400,1,0],[54000,0,0],[54600,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[55200,2,0],[55800,3,0],[56400,0,0],[57000,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[57600,1,750]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]}],"bpm":100,"sections":0,"needsVoices":false,"player1":"bf","player2":"gf","sectionLengths":[],"speed":1},"bpm":100,"sections":27,"notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[9600,0,0],[10800,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[12000,0,0],[13200,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[14400,0,0],[15600,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[16800,0,0],[18000,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[19200,2,0],[20400,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[21600,2,0],[22800,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[24000,2,0],[25200,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[26400,2,0],[27600,1,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[28800,0,0],[30000,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[31200,1,0],[32400,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[33600,0,0],[34800,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[36000,1,0],[37200,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[38400,1,0],[39000,1,0],[39600,2,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[40800,1,0],[41400,1,0],[42000,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[43200,1,0],[43800,1,0],[44400,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[45600,1,0],[46200,1,0],[46800,3,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[48000,1,0],[48300,2,0],[48600,3,0],[48900,2,0],[49800,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[50400,1,0],[50700,2,0],[51000,3,0],[51300,2,0],[52200,3,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[52800,3,0],[53400,1,0],[54000,0,0],[54600,1,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[55200,2,0],[55800,3,0],[56400,0,0],[57000,2,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[[57600,1,750]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"sectionNotes":[]}]}
\ No newline at end of file
diff --git a/assets/data/tutorial/tutorial-hard.json b/assets/data/tutorial/tutorial-hard.json
new file mode 100644
index 000000000..0b77bf90b
Binary files /dev/null and b/assets/data/tutorial/tutorial-hard.json differ
diff --git a/assets/images/menuBGBlue.png b/assets/images/menuBGBlue.png
new file mode 100644
index 000000000..17df463d3
Binary files /dev/null and b/assets/images/menuBGBlue.png differ
diff --git a/source/Alphabet.hx b/source/Alphabet.hx
index 4e04631ef..9824e2f35 100644
--- a/source/Alphabet.hx
+++ b/source/Alphabet.hx
@@ -17,6 +17,10 @@ class Alphabet extends FlxSpriteGroup
public var delay:Float = 0.05;
public var paused:Bool = false;
+ // for menu shit
+ public var targetY:Float = 0;
+ public var isMenuItem:Bool = false;
+
public var text:String = "";
var _finalText:String = "";
@@ -207,6 +211,14 @@ class Alphabet extends FlxSpriteGroup
override function update(elapsed:Float)
{
+ if (isMenuItem)
+ {
+ var scaledY = FlxMath.remapToRange(targetY, 0, 1, 0, 1.3);
+
+ y = FlxMath.lerp(y, (scaledY * 120) + (FlxG.height * 0.48), 0.16);
+ x = FlxMath.lerp(x, (targetY * 20) + 90, 0.16);
+ }
+
super.update(elapsed);
}
}
diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx
index a75ee3d3d..a98c1d8a5 100644
--- a/source/FreeplayState.hx
+++ b/source/FreeplayState.hx
@@ -3,6 +3,7 @@ package;
import flixel.FlxG;
import flixel.FlxSprite;
import flixel.addons.display.FlxGridOverlay;
+import flixel.group.FlxGroup.FlxTypedGroup;
import flixel.text.FlxText;
class FreeplayState extends MusicBeatState
@@ -12,31 +13,40 @@ class FreeplayState extends MusicBeatState
var selector:FlxText;
var curSelected:Int = 0;
+ private var grpSongs:FlxTypedGroup;
+
override function create()
{
// LOAD MUSIC
// LOAD CHARACTERS
- var bg:FlxSprite = FlxGridOverlay.create(20, 20);
+ var bg:FlxSprite = new FlxSprite().loadGraphic(AssetPaths.menuBGBlue__png);
add(bg);
+ grpSongs = new FlxTypedGroup();
+ add(grpSongs);
+
for (i in 0...songs.length)
{
var songText:Alphabet = new Alphabet(0, (70 * i) + 30, songs[i], true, false);
- add(songText);
- songText.x += 40;
+ songText.isMenuItem = true;
+ songText.targetY = i;
+ grpSongs.add(songText);
+ // songText.x += 40;
// DONT PUT X IN THE FIRST PARAMETER OF new ALPHABET() !!
// songText.screenCenter(X);
}
- FlxG.sound.playMusic('assets/music/title' + TitleState.soundExt, 0);
- FlxG.sound.music.fadeIn(2, 0, 0.8);
+ changeSelection();
+
+ // FlxG.sound.playMusic('assets/music/title' + TitleState.soundExt, 0);
+ // FlxG.sound.music.fadeIn(2, 0, 0.8);
selector = new FlxText();
selector.size = 40;
selector.text = ">";
- add(selector);
+ // add(selector);
var swag:Alphabet = new Alphabet(1, 0, "swag");
@@ -52,26 +62,48 @@ class FreeplayState extends MusicBeatState
if (upP)
{
- curSelected -= 1;
+ changeSelection(-1);
}
if (downP)
{
- curSelected += 1;
+ changeSelection(1);
}
+ if (accepted)
+ {
+ PlayState.SONG = Song.loadFromJson(songs[curSelected].toLowerCase(), songs[curSelected].toLowerCase());
+ PlayState.isStoryMode = false;
+ FlxG.switchState(new PlayState());
+ FlxG.sound.music.stop();
+ }
+ }
+
+ function changeSelection(change:Int = 0)
+ {
+ curSelected += change;
+
if (curSelected < 0)
curSelected = songs.length - 1;
if (curSelected >= songs.length)
curSelected = 0;
- selector.y = (70 * curSelected) + 30;
+ // selector.y = (70 * curSelected) + 30;
- if (accepted)
+ var bullShit:Int = 0;
+
+ for (item in grpSongs.members)
{
- PlayState.SONG = Song.loadFromJson(songs[curSelected].toLowerCase());
- PlayState.isStoryMode = false;
- FlxG.switchState(new PlayState());
- FlxG.sound.music.stop();
+ item.targetY = bullShit - curSelected;
+ bullShit++;
+
+ item.alpha = 0.6;
+ // item.setGraphicSize(Std.int(item.width * 0.8));
+
+ if (item.targetY == 0)
+ {
+ item.alpha = 1;
+ // item.setGraphicSize(Std.int(item.width));
+ }
}
}
}
diff --git a/source/PlayState.hx b/source/PlayState.hx
index 29aeb7335..4e01c2fbb 100644
--- a/source/PlayState.hx
+++ b/source/PlayState.hx
@@ -1283,7 +1283,7 @@ class PlayState extends MusicBeatState
if (!boyfriend.animation.curAnim.name.startsWith("sing"))
boyfriend.playAnim('idle');
- if (totalBeats % 8 == 6)
+ if (totalBeats % 8 == 7 && curSong == 'Bopeebo')
{
boyfriend.playAnim('hey', true);
diff --git a/source/StoryMenuState.hx b/source/StoryMenuState.hx
index 093746479..5554fbe13 100644
--- a/source/StoryMenuState.hx
+++ b/source/StoryMenuState.hx
@@ -16,10 +16,10 @@ class StoryMenuState extends MusicBeatState
{
var scoreText:FlxText;
- var weekData:Array = [['Tutorial', 'Bopeebo', 'Fresh', 'Dadbattle'], ['Spookeez', 'South', 'Monster']];
+ var weekData:Array = [['Tutorial', 'Bopeebo', 'Fresh', 'Dadbattle'], ['Spookeez', 'South']];
var curDifficulty:Int = 1;
- public static var weekUnlocked:Array = [true, false];
+ public static var weekUnlocked:Array = [true, true];
var weekCharacters:Array = [['dad', 'bf', 'gf'], ['spooky', 'bf', 'gf']];
var curWeek:Int = 0;
@@ -243,7 +243,8 @@ class StoryMenuState extends MusicBeatState
PlayState.SONG = Song.loadFromJson(PlayState.storyPlaylist[0].toLowerCase() + diffic, PlayState.storyPlaylist[0].toLowerCase());
new FlxTimer().start(1, function(tmr:FlxTimer)
{
- FlxG.sound.music.stop();
+ if (FlxG.sound.music != null)
+ FlxG.sound.music.stop();
FlxG.switchState(new PlayState());
});
}