namespace SabreTools.Data.Models.PlayJ { /// /// PlayJ audio header / CDS entry header /// /// V1 and V2 variants exist public abstract class AudioHeader { /// /// Signature (0x4B539DFF) /// public uint Signature { get; set; } /// /// Version /// public uint Version { get; set; } // Header-specific data goes here /// /// Length of the track name /// public ushort TrackLength { get; set; } /// /// Track name (not null-terminated) /// public string Track { get; set; } = string.Empty; /// /// Length of the artist name /// public ushort ArtistLength { get; set; } /// /// Artist name (not null-terminated) /// public string Artist { get; set; } = string.Empty; /// /// Length of the album name /// public ushort AlbumLength { get; set; } /// /// Album name (not null-terminated) /// public string Album { get; set; } = string.Empty; /// /// Length of the writer name /// public ushort WriterLength { get; set; } /// /// Writer name (not null-terminated) /// public string Writer { get; set; } = string.Empty; /// /// Length of the publisher name /// public ushort PublisherLength { get; set; } /// /// Publisher name (not null-terminated) /// public string Publisher { get; set; } = string.Empty; /// /// Length of the label name /// public ushort LabelLength { get; set; } /// /// Label name (not null-terminated) /// public string Label { get; set; } = string.Empty; /// /// Length of the comments /// /// Optional field only in some samples public ushort CommentsLength { get; set; } /// /// Comments (not null-terminated) /// /// Optional field only in some samples public string? Comments { get; set; } } }