diff --git a/source/Character.hx b/source/Character.hx index 272ab4abc..bdd0bf6e0 100644 --- a/source/Character.hx +++ b/source/Character.hx @@ -552,7 +552,7 @@ class Character extends FlxSprite { var swagshit = Song.loadFromJson('picospeaker', 'stress'); - var notes = swagshit.notes; + var notes = swagshit.notes[0]; for (section in notes) { diff --git a/source/ChartingState.hx b/source/ChartingState.hx index 77b205bb4..28255ded8 100644 --- a/source/ChartingState.hx +++ b/source/ChartingState.hx @@ -132,12 +132,12 @@ class ChartingState extends MusicBeatState { _song = { song: 'Test', - notes: [], + notes: [[]], bpm: 150, needsVoices: true, player1: 'bf', player2: 'dad', - speed: 1, + speed: [1], validScore: false, voiceList: ["BF", "BF-pixel"] }; @@ -150,7 +150,7 @@ class ChartingState extends MusicBeatState addSection(); - // sections = _song.notes; + // sections = _song.notes[Conductor.curNotes]; updateGrid(); @@ -241,7 +241,7 @@ class ChartingState extends MusicBeatState var loadAutosaveBtn:FlxButton = new FlxButton(reloadSongJson.x, reloadSongJson.y + 30, 'load autosave', loadAutosave); var stepperSpeed:FlxUINumericStepper = new FlxUINumericStepper(10, 80, 0.1, 1, 0.1, 10, 2); - stepperSpeed.value = _song.speed; + stepperSpeed.value = _song.speed[Conductor.curNotes]; stepperSpeed.name = 'song_speed'; var stepperBPM:FlxUINumericStepper = new FlxUINumericStepper(10, 65, 1, 100, 1, 999, 3); @@ -298,7 +298,7 @@ class ChartingState extends MusicBeatState tab_group_section.name = 'Section'; stepperLength = new FlxUINumericStepper(10, 10, 4, 0, 0, 999, 0); - stepperLength.value = _song.notes[curSection].lengthInSteps; + stepperLength.value = _song.notes[Conductor.curNotes][curSection].lengthInSteps; stepperLength.name = "section_length"; stepperSectionBPM = new FlxUINumericStepper(10, 80, 1, Conductor.bpm, 1, 999, 3); @@ -316,11 +316,11 @@ class ChartingState extends MusicBeatState var swapSection:FlxButton = new FlxButton(10, 170, "Swap section", function() { - for (i in 0..._song.notes[curSection].sectionNotes.length) + for (i in 0..._song.notes[Conductor.curNotes][curSection].sectionNotes.length) { - var note = _song.notes[curSection].sectionNotes[i]; + var note = _song.notes[Conductor.curNotes][curSection].sectionNotes[i]; note[1] = (note[1] + 4) % 8; - _song.notes[curSection].sectionNotes[i] = note; + _song.notes[Conductor.curNotes][curSection].sectionNotes[i] = note; updateGrid(); } }); @@ -468,7 +468,7 @@ class ChartingState extends MusicBeatState bullshitUI.add(title); /* var loopCheck = new FlxUICheckBox(UI_box.x + 10, UI_box.y + 50, null, null, "Loops", 100, ['loop check']); - loopCheck.checked = curNoteSelected.doesLoop; + loopCheck.checked = notes[0]elected.doesLoop; tooltips.add(loopCheck, {title: 'Section looping', body: "Whether or not it's a simon says style section", style: tooltipType}); bullshitUI.add(loopCheck); @@ -484,15 +484,15 @@ class ChartingState extends MusicBeatState switch (label) { case 'Must hit section': - _song.notes[curSection].mustHitSection = check.checked; + _song.notes[Conductor.curNotes][curSection].mustHitSection = check.checked; updateHeads(); case 'Change BPM': - _song.notes[curSection].changeBPM = check.checked; + _song.notes[Conductor.curNotes][curSection].changeBPM = check.checked; FlxG.log.add('changed bpm shit'); case "Alt Animation": - _song.notes[curSection].altAnim = check.checked; + _song.notes[Conductor.curNotes][curSection].altAnim = check.checked; } } else if (id == FlxUINumericStepper.CHANGE_EVENT && (sender is FlxUINumericStepper)) @@ -502,12 +502,12 @@ class ChartingState extends MusicBeatState FlxG.log.add(wname); if (wname == 'section_length') { - _song.notes[curSection].lengthInSteps = Std.int(nums.value); + _song.notes[Conductor.curNotes][curSection].lengthInSteps = Std.int(nums.value); updateGrid(); } else if (wname == 'song_speed') { - _song.speed = nums.value; + _song.speed[Conductor.curNotes] = nums.value; } else if (wname == 'song_bpm') { @@ -522,7 +522,7 @@ class ChartingState extends MusicBeatState } else if (wname == 'section_bpm') { - _song.notes[curSection].bpm = nums.value; + _song.notes[Conductor.curNotes][curSection].bpm = nums.value; updateGrid(); } } @@ -535,10 +535,10 @@ class ChartingState extends MusicBeatState /* this function got owned LOL function lengthBpmBullshit():Float { - if (_song.notes[curSection].changeBPM) - return _song.notes[curSection].lengthInSteps * (_song.notes[curSection].bpm / _song.bpm); + if (_song.notes[Conductor.curNotes][curSection].changeBPM) + return _song.notes[Conductor.curNotes][curSection].lengthInSteps * (_song.notes[Conductor.curNotes][curSection].bpm / _song.bpm); else - return _song.notes[curSection].lengthInSteps; + return _song.notes[Conductor.curNotes][curSection].lengthInSteps; }*/ function sectionStartTime():Float { @@ -546,9 +546,9 @@ class ChartingState extends MusicBeatState var daPos:Float = 0; for (i in 0...curSection) { - if (_song.notes[i].changeBPM) + if (_song.notes[Conductor.curNotes][i].changeBPM) { - daBPM = _song.notes[i].bpm; + daBPM = _song.notes[Conductor.curNotes][i].bpm; } daPos += 4 * (1000 * 60 / daBPM); } @@ -569,7 +569,7 @@ class ChartingState extends MusicBeatState playheadTest.x = FlxMath.remapToRange(Conductor.songPosition, 0, FlxG.sound.music.length, 0, FlxG.width); - strumLine.y = getYfromStrum((Conductor.songPosition - sectionStartTime()) % (Conductor.stepCrochet * _song.notes[curSection].lengthInSteps)); + strumLine.y = getYfromStrum((Conductor.songPosition - sectionStartTime()) % (Conductor.stepCrochet * _song.notes[Conductor.curNotes][curSection].lengthInSteps)); /* if (FlxG.sound.music.playing) { @@ -584,10 +584,10 @@ class ChartingState extends MusicBeatState if (curBeat % 4 == 0 && curStep >= 16 * (curSection + 1)) { trace(curStep); - trace((_song.notes[curSection].lengthInSteps) * (curSection + 1)); + trace((_song.notes[Conductor.curNotes][curSection].lengthInSteps) * (curSection + 1)); trace('DUMBSHIT'); - if (_song.notes[curSection + 1] == null) + if (_song.notes[Conductor.curNotes][curSection + 1] == null) { addSection(); } @@ -692,7 +692,7 @@ class ChartingState extends MusicBeatState if (FlxG.mouse.x > gridBG.x && FlxG.mouse.x < gridBG.x + gridBG.width && FlxG.mouse.y > gridBG.y - && FlxG.mouse.y < gridBG.y + (GRID_SIZE * _song.notes[curSection].lengthInSteps)) + && FlxG.mouse.y < gridBG.y + (GRID_SIZE * _song.notes[Conductor.curNotes][curSection].lengthInSteps)) { FlxG.log.add('added note'); addNote(); @@ -705,7 +705,7 @@ class ChartingState extends MusicBeatState if (FlxG.mouse.x > gridBG.x && FlxG.mouse.x < gridBG.x + gridBG.width && FlxG.mouse.y > gridBG.y - && FlxG.mouse.y < gridBG.y + (GRID_SIZE * _song.notes[curSection].lengthInSteps)) + && FlxG.mouse.y < gridBG.y + (GRID_SIZE * _song.notes[Conductor.curNotes][curSection].lengthInSteps)) { dummyArrow.x = Math.floor(FlxG.mouse.x / GRID_SIZE) * GRID_SIZE; if (FlxG.keys.pressed.SHIFT) @@ -934,7 +934,7 @@ class ChartingState extends MusicBeatState { trace('changing section' + sec); - if (_song.notes[sec] != null) + if (_song.notes[Conductor.curNotes][sec] != null) { curSection = sec; @@ -967,12 +967,12 @@ class ChartingState extends MusicBeatState { var daSec = FlxMath.maxInt(curSection, sectionNum); - for (note in _song.notes[daSec - sectionNum].sectionNotes) + for (note in _song.notes[Conductor.curNotes][daSec - sectionNum].sectionNotes) { - var strum = note[0] + Conductor.stepCrochet * (_song.notes[daSec].lengthInSteps * sectionNum); + var strum = note[0] + Conductor.stepCrochet * (_song.notes[Conductor.curNotes][daSec].lengthInSteps * sectionNum); var copiedNote:Array = [strum, note[1], note[2]]; - _song.notes[daSec].sectionNotes.push(copiedNote); + _song.notes[Conductor.curNotes][daSec].sectionNotes.push(copiedNote); } updateGrid(); @@ -980,7 +980,7 @@ class ChartingState extends MusicBeatState function updateSectionUI():Void { - var sec = _song.notes[curSection]; + var sec = _song.notes[Conductor.curNotes][curSection]; stepperLength.value = sec.lengthInSteps; check_mustHitSection.checked = sec.mustHitSection; @@ -1041,11 +1041,11 @@ class ChartingState extends MusicBeatState curRenderedSustains.remove(curRenderedSustains.members[0], true); } - var sectionInfo:Array = _song.notes[curSection].sectionNotes; + var sectionInfo:Array = _song.notes[Conductor.curNotes][curSection].sectionNotes; - if (_song.notes[curSection].changeBPM && _song.notes[curSection].bpm > 0) + if (_song.notes[Conductor.curNotes][curSection].changeBPM && _song.notes[Conductor.curNotes][curSection].bpm > 0) { - Conductor.changeBPM(_song.notes[curSection].bpm); + Conductor.changeBPM(_song.notes[Conductor.curNotes][curSection].bpm); FlxG.log.add('CHANGED BPM!'); } else @@ -1053,20 +1053,20 @@ class ChartingState extends MusicBeatState // get last bpm var daBPM:Float = _song.bpm; for (i in 0...curSection) - if (_song.notes[i].changeBPM) - daBPM = _song.notes[i].bpm; + if (_song.notes[Conductor.curNotes][i].changeBPM) + daBPM = _song.notes[Conductor.curNotes][i].bpm; Conductor.changeBPM(daBPM); } /* // PORT BULLSHIT, INCASE THERE'S NO SUSTAIN DATA FOR A NOTE - for (sec in 0..._song.notes.length) + for (sec in 0..._song.notes[Conductor.curNotes].length) { - for (notesse in 0..._song.notes[sec].sectionNotes.length) + for (notesse in 0..._song.notes[Conductor.curNotes][sec].sectionNotes.length) { - if (_song.notes[sec].sectionNotes[notesse][2] == null) + if (_song.notes[Conductor.curNotes][sec].sectionNotes[notesse][2] == null) { trace('SUS NULL'); - _song.notes[sec].sectionNotes[notesse][2] = 0; + _song.notes[Conductor.curNotes][sec].sectionNotes[notesse][2] = 0; } } } @@ -1083,7 +1083,7 @@ class ChartingState extends MusicBeatState note.setGraphicSize(GRID_SIZE, GRID_SIZE); note.updateHitbox(); note.x = Math.floor(daNoteInfo * GRID_SIZE); - note.y = Math.floor(getYfromStrum((daStrumTime - sectionStartTime()) % (Conductor.stepCrochet * _song.notes[curSection].lengthInSteps))); + note.y = Math.floor(getYfromStrum((daStrumTime - sectionStartTime()) % (Conductor.stepCrochet * _song.notes[Conductor.curNotes][curSection].lengthInSteps))); curRenderedNotes.add(note); @@ -1108,18 +1108,18 @@ class ChartingState extends MusicBeatState altAnim: false }; - _song.notes.push(sec); + _song.notes[Conductor.curNotes].push(sec); } function selectNote(note:Note):Void { var swagNum:Int = 0; - for (i in _song.notes[curSection].sectionNotes) + for (i in _song.notes[Conductor.curNotes][curSection].sectionNotes) { if (i.strumTime == note.strumTime && i.noteData % 4 == note.noteData) { - curSelectedNote = _song.notes[curSection].sectionNotes[swagNum]; + curSelectedNote = _song.notes[Conductor.curNotes][curSection].sectionNotes[swagNum]; } swagNum += 1; @@ -1131,7 +1131,7 @@ class ChartingState extends MusicBeatState function deleteNote(note:Note):Void { - for (i in _song.notes[curSection].sectionNotes) + for (i in _song.notes[Conductor.curNotes][curSection].sectionNotes) { if (i[0] == note.strumTime && i[1] % 4 == note.noteData) { @@ -1145,7 +1145,7 @@ class ChartingState extends MusicBeatState FlxG.sound.play(Paths.sound('funnyNoise/funnyNoise-0' + placeIDK)); FlxG.log.add('FOUND EVIL NUMBER'); - _song.notes[curSection].sectionNotes.remove(i); + _song.notes[Conductor.curNotes][curSection].sectionNotes.remove(i); } } @@ -1154,16 +1154,16 @@ class ChartingState extends MusicBeatState function clearSection():Void { - _song.notes[curSection].sectionNotes = []; + _song.notes[Conductor.curNotes][curSection].sectionNotes = []; updateGrid(); } function clearSong():Void { - for (daSection in 0..._song.notes.length) + for (daSection in 0..._song.notes[Conductor.curNotes].length) { - _song.notes[daSection].sectionNotes = []; + _song.notes[Conductor.curNotes][daSection].sectionNotes = []; } updateGrid(); @@ -1203,13 +1203,13 @@ class ChartingState extends MusicBeatState FlxG.sound.play(Paths.sound('pianoStuff/piano-00' + Std.string((bullshit % 8) + 1)), FlxG.random.float(0.3, 0.6)); // trace('bullshit $bullshit'); // trace(Math.floor(dummyArrow.y / GRID_SIZE) * GRID_SIZE); - _song.notes[curSection].sectionNotes.push([noteStrum, noteData, noteSus, noteAlt]); + _song.notes[Conductor.curNotes][curSection].sectionNotes.push([noteStrum, noteData, noteSus, noteAlt]); - curSelectedNote = _song.notes[curSection].sectionNotes[_song.notes[curSection].sectionNotes.length - 1]; + curSelectedNote = _song.notes[Conductor.curNotes][curSection].sectionNotes[_song.notes[Conductor.curNotes][curSection].sectionNotes.length - 1]; if (FlxG.keys.pressed.CONTROL) { - _song.notes[curSection].sectionNotes.push([noteStrum, (noteData + 4) % 8, noteSus, noteAlt]); + _song.notes[Conductor.curNotes][curSection].sectionNotes.push([noteStrum, (noteData + 4) % 8, noteSus, noteAlt]); } trace(noteStrum); @@ -1236,7 +1236,7 @@ class ChartingState extends MusicBeatState { var daLength:Int = 0; - for (i in _song.notes) + for (i in _song.notes[Conductor.curNotes]) { var swagLength = i.lengthInSteps; @@ -1258,14 +1258,14 @@ class ChartingState extends MusicBeatState function loadLevel():Void { - trace(_song.notes); + trace(_song.notes[Conductor.curNotes]); } function getNotes():Array { var noteData:Array = []; - for (i in _song.notes) + for (i in _song.notes[Conductor.curNotes]) { noteData.push(i.sectionNotes); } diff --git a/source/Conductor.hx b/source/Conductor.hx index 49d2cd290..02067334c 100644 --- a/source/Conductor.hx +++ b/source/Conductor.hx @@ -6,7 +6,6 @@ import Song.SwagSong; * ... * @author */ - typedef BPMChangeEvent = { var stepTime:Int; @@ -23,11 +22,11 @@ class Conductor public static var lastSongPos:Float; public static var offset:Float = 0; + public static var curNotes:Int = 0; + public static var bpmChangeMap:Array = []; - public function new() - { - } + public function new() {} public static function mapBPMChanges(song:SwagSong) { @@ -38,9 +37,9 @@ class Conductor var totalPos:Float = 0; for (i in 0...song.notes.length) { - if(song.notes[i].changeBPM && song.notes[i].bpm != curBPM) + if (song.notes[Conductor.curNotes][i].changeBPM && song.notes[Conductor.curNotes][i].bpm != curBPM) { - curBPM = song.notes[i].bpm; + curBPM = song.notes[Conductor.curNotes][i].bpm; var event:BPMChangeEvent = { stepTime: totalSteps, songTime: totalPos, @@ -49,7 +48,7 @@ class Conductor bpmChangeMap.push(event); } - var deltaSteps:Int = song.notes[i].lengthInSteps; + var deltaSteps:Int = song.notes[Conductor.curNotes][i].lengthInSteps; totalSteps += deltaSteps; totalPos += ((60 / curBPM) * 1000 / 4) * deltaSteps; } diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx index b3bd97dd0..455a50c10 100644 --- a/source/FreeplayState.hx +++ b/source/FreeplayState.hx @@ -482,7 +482,7 @@ class FreeplayState extends MusicBeatState curDifficulty = 1; }*/ - PlayState.SONG = Song.loadFromJson(poop, songs[curSelected].songName.toLowerCase()); + PlayState.SONG = Song.loadFromJson(poop + '-new', songs[curSelected].songName.toLowerCase()); PlayState.isStoryMode = false; PlayState.storyDifficulty = curDifficulty; diff --git a/source/Note.hx b/source/Note.hx index acde0b250..4d0107516 100644 --- a/source/Note.hx +++ b/source/Note.hx @@ -48,8 +48,8 @@ class Note extends FlxSprite public static var BAD_THRESHOLD:Float = 0.8; // 125ms , 8 frames public static var GOOD_THRESHOLD:Float = 0.55; // 91.67ms , 5.5 frames public static var SICK_THRESHOLD:Float = 0.2; // 33.33ms , 2 frames - // anything below sick threshold is sick + // anything below sick threshold is sick public static var arrowColors:Array = [1, 1, 1, 1]; public function new(strumTime:Float, noteData:Int, ?prevNote:Note, ?sustainNote:Bool = false) @@ -195,7 +195,7 @@ class Note extends FlxSprite prevNote.updateHitbox(); - var scaleThing:Float = Math.round((Conductor.stepCrochet) * (0.45 * FlxMath.roundDecimal(PlayState.SONG.speed, 2))); + var scaleThing:Float = Math.round((Conductor.stepCrochet) * (0.45 * FlxMath.roundDecimal(PlayState.SONG.speed[Conductor.curNotes], 2))); // get them a LIL closer together cuz the antialiasing blurs the edges if (antialiasing) scaleThing *= 1.0 + (1.0 / prevNote.frameHeight); diff --git a/source/PlayState.hx b/source/PlayState.hx index 55cd689de..7adc419eb 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -1573,7 +1573,7 @@ class PlayState extends MusicBeatState var noteData:Array; // NEW SHIT - noteData = SONG.notes; + noteData = SONG.notes[Conductor.curNotes]; for (section in noteData) { @@ -2037,9 +2037,9 @@ class PlayState extends MusicBeatState changeSection(-1); #end - if (generatedMusic && SONG.notes[Std.int(curStep / 16)] != null) + if (generatedMusic && SONG.notes[Conductor.curNotes][Std.int(curStep / 16)] != null) { - cameraRightSide = SONG.notes[Std.int(curStep / 16)].mustHitSection; + cameraRightSide = SONG.notes[Conductor.curNotes][Std.int(curStep / 16)].mustHitSection; cameraMovement(); } @@ -2110,7 +2110,7 @@ class PlayState extends MusicBeatState } } - while (unspawnNotes[0] != null && unspawnNotes[0].strumTime - Conductor.songPosition < 1800 / SONG.speed) + while (unspawnNotes[0] != null && unspawnNotes[0].strumTime - Conductor.songPosition < 1800 / SONG.speed[Conductor.curNotes]) { var dunceNote:Note = unspawnNotes[0]; notes.add(dunceNote); @@ -2135,7 +2135,7 @@ class PlayState extends MusicBeatState } var strumLineMid = strumLine.y + Note.swagWidth / 2; - daNote.y = (Conductor.songPosition - daNote.strumTime) * (0.45 * FlxMath.roundDecimal(SONG.speed, 2)); + daNote.y = (Conductor.songPosition - daNote.strumTime) * (0.45 * FlxMath.roundDecimal(SONG.speed[Conductor.curNotes], 2)); if (PreferencesMenu.getPref('downscroll')) { @@ -2172,9 +2172,9 @@ class PlayState extends MusicBeatState var altAnim:String = ""; - if (SONG.notes[Math.floor(curStep / 16)] != null) + if (SONG.notes[Conductor.curNotes][Math.floor(curStep / 16)] != null) { - if (SONG.notes[Math.floor(curStep / 16)].altAnim) + if (SONG.notes[Conductor.curNotes][Math.floor(curStep / 16)].altAnim) altAnim = '-alt'; } @@ -2207,7 +2207,7 @@ class PlayState extends MusicBeatState } // WIP interpolation shit? Need to fix the pause issue - // daNote.y = (strumLine.y - (songTime - daNote.strumTime) * (0.45 * SONG.speed)); + // daNote.y = (strumLine.y - (songTime - daNote.strumTime) * (0.45 * SONG.speed[Conductor.curNotes])); // removing this so whether the note misses or not is entirely up to Note class // var noteMiss:Bool = daNote.y < -daNote.height; @@ -2291,9 +2291,9 @@ class PlayState extends MusicBeatState var daPos:Float = 0; for (i in 0...(Std.int(curStep / 16 + sec))) { - if (SONG.notes[i].changeBPM) + if (SONG.notes[Conductor.curNotes][i].changeBPM) { - daBPM = SONG.notes[i].bpm; + daBPM = SONG.notes[Conductor.curNotes][i].bpm; } daPos += 4 * (1000 * 60 / daBPM); } @@ -3070,17 +3070,17 @@ class PlayState extends MusicBeatState notes.sort(sortNotes, FlxSort.DESCENDING); } - if (SONG.notes[Math.floor(curStep / 16)] != null) + if (SONG.notes[Conductor.curNotes][Math.floor(curStep / 16)] != null) { - if (SONG.notes[Math.floor(curStep / 16)].changeBPM) + if (SONG.notes[Conductor.curNotes][Math.floor(curStep / 16)].changeBPM) { - Conductor.changeBPM(SONG.notes[Math.floor(curStep / 16)].bpm); + Conductor.changeBPM(SONG.notes[Conductor.curNotes][Math.floor(curStep / 16)].bpm); FlxG.log.add('CHANGED BPM!'); } // else // Conductor.changeBPM(SONG.bpm); } - // FlxG.log.add('change bpm' + SONG.notes[Std.int(curStep / 16)].changeBPM); + // FlxG.log.add('change bpm' + SONG.notes[Conductor.curNotes][Std.int(curStep / 16)].changeBPM); // HARDCODING FOR MILF ZOOMS! @@ -3106,9 +3106,9 @@ class PlayState extends MusicBeatState iconP2.updateHitbox(); if (curBeat % 8 == 7 - && SONG.notes[Math.floor(curStep / 16)].mustHitSection + && SONG.notes[Conductor.curNotes][Math.floor(curStep / 16)].mustHitSection && combo > 5 - && !SONG.notes[Math.floor(curStep / 16) + 1].mustHitSection) + && !SONG.notes[Conductor.curNotes][Math.floor(curStep / 16) + 1].mustHitSection) { var animShit:ComboCounter = new ComboCounter(-100, 300, combo); animShit.scrollFactor.set(0.6, 0.6); diff --git a/source/Song.hx b/source/Song.hx index 39768bf87..e486a9792 100644 --- a/source/Song.hx +++ b/source/Song.hx @@ -10,11 +10,11 @@ using StringTools; typedef SwagSong = { var song:String; - var notes:Array; + var notes:Array>; var bpm:Float; var needsVoices:Bool; var voiceList:Array; - var speed:Float; + var speed:Array; var player1:String; var player2:String; @@ -24,7 +24,7 @@ typedef SwagSong = class Song { public var song:String; - public var notes:Array; + public var notes:Array>; public var bpm:Float; public var needsVoices:Bool = true; public var speed:Float = 1; @@ -72,6 +72,8 @@ class Song { var swagShit:SwagSong = cast Json.parse(rawJson).song; swagShit.validScore = true; + trace(swagShit.notes[Conductor.curNotes]); + // swagShit.notes[0] = cast Json.parse(rawJson).song.notes[Conductor.curNotes]; // by default uses return swagShit; } }