예제 #1
0
        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);
        }
예제 #2
0
        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();
        }
예제 #3
0
        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);
        }
예제 #4
0
 public static void Initialise()
 {
     Instance = new ChartFormatGH5();
     Platform.AddFormat(Instance);
 }