private static void ViewTrack(Track track)
        {
            Console.WriteLine("=== Track Chunk ===");
            int ecnt = 0;

            foreach (MDEvent mdevent in track)
            {
                ecnt++;
                //Console.WriteLine(StaticFunc.HexaString(mdevent.Buffer));
                Console.Write("{0}th delta:{1}", ecnt, mdevent.Delta);

                if (mdevent is MetaEvent)
                {
                    Console.Write("<Meta>");
                    ViewMeta(mdevent as MetaEvent);
                }
                if (mdevent is MidiEvent)
                {
                    Console.Write("<Midi>");
                    ViewMidi(mdevent as MidiEvent);
                }
                if (mdevent is SysEvent)
                {
                    Console.Write("<Sysex>");
                    ViewSysex(mdevent as SysEvent);
                }
                Console.WriteLine(StaticFunc.HexaString(mdevent.Buffer));
            }
        }
 private static void ViewHeader(Header header)
 {
     Console.WriteLine("=== 헤더 Chunk ===");
     Console.WriteLine(StaticFunc.HexaString(header.Buffer));
     Console.WriteLine("Format : {0}", header.Format);
     Console.WriteLine("Tracks : {0}", header.TrackCount);
     Console.WriteLine("Division : {0}", header.Division);
     Console.WriteLine();
 }
Example #3
0
        public static Chunk Parse(Stream stream)
        {
            try
            {
                BinaryReader br     = new BinaryReader(stream);
                int          ctype  = br.ReadInt32();
                int          length = br.ReadInt32();
                length = StaticFunc.ConvertHostorder(length);
                byte[] buffer = br.ReadBytes(length);
                int    cval   = StaticFunc.ConvertHostorder(ctype);
                switch (StaticFunc.ConvertHostorder(ctype))
                {
                case 0x4d546864: return(new Header(ctype, length, buffer));

                case 0x4d54726b: return(new Track(ctype, length, buffer));
                }
                return(new Chunk(ctype, length, buffer));
            }
            catch
            {
                return(null);
            }
        }