I started writing a more generic representation of a Tape file. It is needed for when I start the mamoth task of supporting the Spectrum TZX format. It is a great deal more complicated than the Commodore TAP format. But, by basing them off a common route class it will allow a more standardized interface for manipulating the files.
Each basically consists of a Header (of variable size and content), and a Data Block which contains the actual digital representation of tape signals.
TGenTapeFile is the top level container class.