Files
Matt Nadareski 7689c6dd07 Libraries
This change looks dramatic, but it's just separating out the already-split namespaces into separate top-level folders. In theory, every single one could be built into their own Nuget package. `SabreTools.Serialization` still builds the normal Nuget package that is used by all other projects and includes all namespaces.
2026-03-21 16:26:56 -04:00

94 lines
2.5 KiB
C#

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