1.) Bei einem FileStream sollte man
ReadBuffer und
WriteBuffer anstelle von Read und Write verwerden.
2.) Datenstrukturen schreibt man nicht Byte für Byte, sondern in einem Rutsch.
Delphi-Quellcode:
type
TMidiHeader = record .... end;
var
midiheader : TMidiHeader;
f := TFileStream.Create(MidiFilename, fmCreate);
f.WriteBuffer(midiheader, sizeof(midiheader));
....
f.Free;