package funkin; import funkin.SongLoad.SwagSong; /** * ... * @author */ typedef BPMChangeEvent = { var stepTime:Int; var songTime:Float; var bpm:Float; } class Conductor { public static var bpm:Float = 100; public static var crochet:Float = ((60 / bpm) * 1000); // beats in milliseconds public static var stepCrochet:Float = crochet / 4; // steps in milliseconds public static var songPosition:Float; public static var lastSongPos:Float; public static var offset:Float = 0; public static var bpmChangeMap:Array = []; public function new() {} public static function mapBPMChanges(song:SwagSong) { bpmChangeMap = []; var curBPM:Float = song.bpm; var totalSteps:Int = 0; var totalPos:Float = 0; for (i in 0...SongLoad.getSong().length) { if (SongLoad.getSong()[i].changeBPM && SongLoad.getSong()[i].bpm != curBPM) { curBPM = SongLoad.getSong()[i].bpm; var event:BPMChangeEvent = { stepTime: totalSteps, songTime: totalPos, bpm: curBPM }; bpmChangeMap.push(event); } var deltaSteps:Int = SongLoad.getSong()[i].lengthInSteps; totalSteps += deltaSteps; totalPos += ((60 / curBPM) * 1000 / 4) * deltaSteps; } trace("new BPM map BUDDY " + bpmChangeMap); } public static function changeBPM(newBpm:Float) { bpm = newBpm; crochet = ((60 / bpm) * 1000); stepCrochet = crochet / 4; } }