2025-09-26 13:06:18 -04:00
|
|
|
namespace SabreTools.Data.Models.PlayJ
|
2025-09-26 11:57:18 -04:00
|
|
|
{
|
|
|
|
|
/// <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>
|
2025-10-31 13:59:28 -04:00
|
|
|
public string Track { get; set; } = string.Empty;
|
2025-09-26 11:57:18 -04:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Length of the artist name
|
|
|
|
|
/// </summary>
|
|
|
|
|
public ushort ArtistLength { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Artist name (not null-terminated)
|
|
|
|
|
/// </summary>
|
2025-10-31 13:59:28 -04:00
|
|
|
public string Artist { get; set; } = string.Empty;
|
2025-09-26 11:57:18 -04:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Length of the album name
|
|
|
|
|
/// </summary>
|
|
|
|
|
public ushort AlbumLength { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Album name (not null-terminated)
|
|
|
|
|
/// </summary>
|
2025-10-31 13:59:28 -04:00
|
|
|
public string Album { get; set; } = string.Empty;
|
2025-09-26 11:57:18 -04:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Length of the writer name
|
|
|
|
|
/// </summary>
|
|
|
|
|
public ushort WriterLength { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Writer name (not null-terminated)
|
|
|
|
|
/// </summary>
|
2025-10-31 13:59:28 -04:00
|
|
|
public string Writer { get; set; } = string.Empty;
|
2025-09-26 11:57:18 -04:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Length of the publisher name
|
|
|
|
|
/// </summary>
|
|
|
|
|
public ushort PublisherLength { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Publisher name (not null-terminated)
|
|
|
|
|
/// </summary>
|
2025-10-31 13:59:28 -04:00
|
|
|
public string Publisher { get; set; } = string.Empty;
|
2025-09-26 11:57:18 -04:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Length of the label name
|
|
|
|
|
/// </summary>
|
|
|
|
|
public ushort LabelLength { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Label name (not null-terminated)
|
|
|
|
|
/// </summary>
|
2025-10-31 13:59:28 -04:00
|
|
|
public string Label { get; set; } = string.Empty;
|
2025-09-26 11:57:18 -04:00
|
|
|
|
|
|
|
|
/// <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; }
|
|
|
|
|
}
|
2025-10-30 23:05:24 -04:00
|
|
|
}
|