public void WriteTo(IWriteable s)
{
// magic number "MThd" (0x4D546864)
var b = new byte[] { 0x4D, 0x54, 0x68, 0x64 };
s.Write(b, 0, b.Length);
// Header Length 6 (0x00000006)
b = new byte[] { 0x00, 0x00, 0x00, 0x06 };
s.Write(b, 0, b.Length);
// format
b = new byte[] { 0x00, 0x01 };
s.Write(b, 0, b.Length);
// number of tracks
short v = (short)Tracks.Count;
b = new [] { (byte)((v >> 8) & 0xFF), (byte)(v & 0xFF) };
s.Write(b, 0, b.Length);
v = MidiUtils.QuarterTime;
b = new [] { (byte)((v >> 8) & 0xFF), (byte)(v & 0xFF) };
s.Write(b, 0, b.Length);
for (int i = 0, j = Tracks.Count; i < j; i++)
{
Tracks[i].WriteTo(s);
}
}