private static void DecodeChartDrums(SongData song, QbFile qbchart, NoteChart chart) { QbItemArray drumsitems = qbchart.FindItem(QbKey.Create(song.ID + "_drums_notes"), false) as QbItemArray; if (drumsitems != null) { drumsitems = drumsitems.Items[0] as QbItemArray; } if (drumsitems != null) { chart.PartDrums = new NoteChart.Drums(chart); Dictionary <uint, int> drumnotes = new Dictionary <uint, int>() // Garbage: 65, 70, 48, 64 { { 60, 0 }, { 40, 1 }, { 64, 1 }, { 55, 2 }, { 67, 2 }, { 53, 2 }, { 39, 3 }, { 38, 3 }, { 63, 3 }, { 62, 3 }, { 68, 4 }, { 56, 4 }, { 66, 4 }, { 54, 4 }, { 69, 4 }, { 57, 4 }, { 37, 4 }, { 61, 4 }, }; Dictionary <uint, NoteChart.Drums.Animation> drumanimnotes = new Dictionary <uint, NoteChart.Drums.Animation>() { }; foreach (QbItemInteger drums in drumsitems.Items) { NoteChart.Note note = new NoteChart.Note(chart.GetTicks(drums.Values[0]), (ulong)chart.Division.TicksPerBeat / 8); uint notenum = drums.Values[1]; if (drumnotes.ContainsKey(notenum)) { int notevalue = drumnotes[notenum]; chart.PartDrums.Gems[NoteChart.Difficulty.Expert][notevalue].Add(note); } if (drumanimnotes.ContainsKey(notenum)) { chart.PartDrums.Animations.Add(new Pair <NoteChart.Note, NoteChart.Drums.Animation>(note, drumanimnotes[notenum])); } } } ChartFormatGH5.FillSections(chart, 1, 8, 1, chart.PartDrums.Overdrive, null); ChartFormatGH5.FillSections(chart, 1, 4, 3, chart.PartDrums.DrumFills, null); }
public static void Initialise() { Formats = new List <IFormat>(); //PlatformDJHWiiDisc.Initialise(); PlatformFretsOnFire.Initialise(); PlatformGH2PS2Disc.Initialise(); PlatformGH3WiiDisc.Initialise(); PlatformGH4WiiDLC.Initialise(); PlatformGH5WiiDisc.Initialise(); //PlatformGH5WiiDLC.Initialise(); PlatformLocalStorage.Initialise(); PlatformRawkFile.Initialise(); //PlatformRB2360Disc.Initialise(); //PlatformRB2360DLC.Initialise(); PlatformRB2360RBN.Initialise(); PlatformRB2WiiCustomDLC.Initialise(); PlatformRB2WiiDisc.Initialise(); //PlatformRB2WiiDLC.Initialise(); //ChartFormatChart.Initialise(); //ChartFormatFsgMub.Initialise(); ChartFormatGH1.Initialise(); ChartFormatGH2.Initialise(); ChartFormatGH3.Initialise(); ChartFormatGH4.Initialise(); ChartFormatGH5.Initialise(); ChartFormatRB.Initialise(); AudioFormatBeatlesBink.Initialise(); AudioFormatBink.Initialise(); AudioFormatFFmpeg.Initialise(); AudioFormatGH3WiiFSB.Initialise(); AudioFormatMogg.Initialise(); //AudioFormatMp3.Initialise(); AudioFormatOgg.Initialise(); AudioFormatRB2Bink.Initialise(); AudioFormatRB2Mogg.Initialise(); AudioFormatVGS.Initialise(); NeversoftMetadata.Initialise(); }
public static void DecodeDrums(NoteChart chart, Midi midi, bool gh1) { chart.PartDrums = new NoteChart.Drums(chart); Midi.Track track; if (gh1) { track = midi.GetTrack("TRIGGERS"); } else { track = midi.GetTrack("BAND DRUMS"); } foreach (Midi.NoteEvent note in track.Notes) { switch (note.Note) { case 60: case 36: // Kick chart.PartDrums.Gems[NoteChart.Difficulty.Expert][0].Add(new NoteChart.Note(note)); break; case 61: case 37: // Crash chart.PartDrums.Gems[NoteChart.Difficulty.Expert][4].Add(new NoteChart.Note(note)); break; case 0x30: case 0x31: case 0x40: case 0x41: break; } } if (gh1) { track = midi.GetTrack("EVENTS"); } Midi.TextEvent previouscomment = new Midi.TextEvent(0, "[nobeat]"); string previoustext = "nobeat"; foreach (var comment in track.Comments) { NoteChart.Point note = new NoteChart.Point(comment.Time); string text = comment.Text.Trim('[', ']', ' '); if (gh1) { if (text.StartsWith("drum_")) { text = text.Substring(5); } else { continue; } } switch (text) { case "idle": case "off": case "noplay": chart.PartDrums.CharacterMoods.Add(new Pair <NoteChart.Point, NoteChart.CharacterMood>(note, NoteChart.CharacterMood.Idle)); break; case "play": case "normal": case "on": chart.PartDrums.CharacterMoods.Add(new Pair <NoteChart.Point, NoteChart.CharacterMood>(note, NoteChart.CharacterMood.Play)); previouscomment = comment; break; default: ulong duration = comment.Time - previouscomment.Time; ulong time = previouscomment.Time; float fraction = 0; switch (previoustext) { case "on": case "allplay": case "play": case "allbeat": case "allbreat": case "all_beat": case "normal": case "norm": case "nomral": case "normal_tempo": fraction = 1; break; case "off": case "noplay": case "nobeat": case "no_beat": fraction = 0; break; case "double": case "double_time": case "doubletime": case "double_tempo": case "doulbe_time": fraction = 0.5f; break; case "half": case "half_time": case "halftime": case "half_tempo": fraction = 2; break; } if (fraction > 0) { while (time < comment.Time) { chart.PartDrums.Gems[NoteChart.Difficulty.Expert][(previoustext == "play" || previoustext == "normal") ? 2 : 1].Add(new NoteChart.Note(time)); time += (ulong)(midi.Division.TicksPerBeat * fraction); } } previouscomment = comment; previoustext = text; break; } } ChartFormatGH5.FillSections(chart, 1, 8, 1, chart.PartDrums.Overdrive, null); ChartFormatGH5.FillSections(chart, 1, 4, 3, chart.PartDrums.DrumFills, null); }
public static void Initialise() { Instance = new ChartFormatGH5(); Platform.AddFormat(Instance); }