BINGO!

just spotted a bug in your code

IT_Pattern = class(TObject)
NumberOfRows : Word; {Ranges from 32->200}
NumberOfNotes : Integer;
Notes: Array of IT_Note;
end;

this definition is wrong
first field is length in bytes
second field number of rows
third is ok