Пример #1
0
        bool Rip(byte[] data, SongSt song, InstrumentMap instrument_map, List <List <byte> > trackdata)
        {
            //Rip
            for (uint track = 0; track < song.tracks; track++)
            {
                uint songtrack_pointer     = song.header + 8 + (4 * track);
                uint songtrackdata_pointer = U.u32(data, songtrack_pointer);
                if (!U.isPointer(songtrackdata_pointer))
                {
                    this.ErrorMessage += "\r\n" +
                                         R.Error("track:" + track.ToString() + " can not pointer! addr:" + songtrack_pointer.ToString("X08") + " data:" + songtrackdata_pointer.ToString("X08"));
                    return(false);
                }
                songtrackdata_pointer = U.toOffset(songtrackdata_pointer);

                List <byte> track_data = process_track(data, songtrackdata_pointer, instrument_map);

                trackdata.Add(track_data);
            }
            //ドラムがない曲の場合、それは困るので、ダミーのドラムを追加する.
            instrument_map.appendDrumIfNoDrum();
            return(true);
        }