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(); }
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); } }