using System;
namespace SabreTools.Data.Models.Charts
{
///
/// [song]/[Song]
public class SongIni
{
#region Song/Chart Metadata
///
/// Title of the song.
///
/// name
public string? Name { get; set; }
///
/// Artist(s) or band(s) behind the song.
///
/// artist
public string? Artist { get; set; }
///
/// Title of the album the song is featured in.
///
/// album
public string? Album { get; set; }
///
/// Genre of the song.
///
/// genre
public string? Genre { get; set; }
///
/// Sub-genre for the song.
///
/// sub_genre
public string? SubGenre { get; set; }
///
/// Year of the song’s release.
///
/// year
public string? Year { get; set; }
///
/// Community member responsible for charting the song.
///
/// charter, frets
public string? Charter { get; set; }
///
/// Version number for the song.
///
/// version
public long? Version { get; set; }
///
/// Track number of the song within the album it's from.
///
/// album_track, track
public long? AlbumTrack { get; set; }
///
/// Track number of the song within the playlist/setlist it's from.
///
/// playlist_track
public long? PlaylistTrack { get; set; }
///
/// Length of the song's audio in milliseconds.
///
/// song_length
public long? SongLength { get; set; }
///
/// Timestamp in milliseconds where the song preview starts.
///
/// preview_start_time
public long? PreviewStartTime { get; set; }
///
/// Timestamp in milliseconds that the preview should stop at.
///
/// preview_end_time
public long? PreviewEndTime { get; set; }
///
/// Flavor text for this song, usually shown after picking the song or during loading.
///
/// loading_phrase
public string? LoadingPhrase { get; set; }
#endregion
#region Song/Chart Metadata (Game-Specific)
///
/// (FoFiX) Hex color to use in the song screen for the cassette.
///
/// cassettecolor
public string? CassetteColor { get; set; }
///
/// (FoFiX) Miscellaneous tags for the chart.
/// Only known valid value is `cover`.
///
/// tags
public string? Tags { get; set; }
///
/// (PS) Two timestamps in milliseconds for preview start and end time.
/// Example: `55000 85000`
///
/// preview
public long[]? Preview { get; set; }
///
/// (CH) Playlist that the song should show up in.
///
/// playlist
public string? Playlist { get; set; }
///
/// (CH) Sub-playlist that the song should show up in.
///
/// sub_playlist
public string? SubPlaylist { get; set; }
///
/// (CH) Indicates if this song is a modchart.
/// Meant for sorting purposes only.
///
/// modchart
public bool? Modchart { get; set; }
///
/// (CH) Indicates if the song has lyrics or not.
/// Meant for sorting purposes only.
///
/// lyrics
public bool? Lyrics { get; set; }
#endregion
#region Track Difficulties
///
/// Overall difficulty of the song.
///
/// diff_band
public long? DiffBand { get; set; }
///
/// Difficulty of the Lead Guitar track.
///
/// diff_guitar
public long? DiffGuitar { get; set; }
///
/// Difficulty of the 6-Fret Lead track.
///
/// diff_guitarghl
public long? DiffGuitarGHL { get; set; }
///
/// Difficulty of the Guitar Co-op track.
///
/// diff_guitar_coop
public long? DiffGuitarCoop { get; set; }
///
/// Difficulty of the 6-Fret Guitar Co-op track.
///
/// diff_guitar_coop_ghl
public long? DiffGuitarCoopGHL { get; set; }
///
/// Difficulty of the Pro Guitar track.
///
/// diff_guitar_real
public long? DiffGuitarReal { get; set; }
///
/// Difficulty of the Pro Guitar 22-fret track.
///
/// diff_guitar_real_22
public long? DiffGuitarReal22 { get; set; }
///
/// Difficulty of the Rhythm Guitar track.
///
/// diff_rhythm
public long? DiffRhythm { get; set; }
///
/// Difficulty of the 6-Fret Rhythm Guitar track.
///
/// diff_rhythm_ghl
public long? DiffRhythmGHL { get; set; }
///
/// Difficulty of the Bass Guitar track.
///
/// diff_bass
public long? DiffBass { get; set; }
///
/// Difficulty of the 6-Fret Bass track.
///
/// diff_bassghl
public long? DiffBassGHL { get; set; }
///
/// Difficulty of the Pro Bass track.
///
/// diff_bass_real
public long? DiffBassReal { get; set; }
///
/// Difficulty of the Pro Bass 22-fret track.
///
/// diff_bass_real_22
public long? DiffBassReal22 { get; set; }
///
/// Difficulty of the Drums track.
///
/// diff_drums
public long? DiffDrums { get; set; }
///
/// Difficulty of the Pro Drums track.
///
/// diff_drums_real
public long? DiffDrumsReal { get; set; }
///
/// Difficulty of the Drums Real track.
///
/// diff_drums_real_ps
public long? DiffDrumsRealPS { get; set; }
///
/// Difficulty of the Keys track.
///
/// diff_keys
public long? DiffKeys { get; set; }
///
/// Difficulty of the Pro Keys track.
///
/// diff_keys_real
public long? DiffKeysReal { get; set; }
///
/// Difficulty of the Keys Real track.
///
/// diff_keys_real_ps
public long? DiffKeysRealPS { get; set; }
///
/// Difficulty of the Vocals track.
///
/// diff_vocals
public long? DiffVocals { get; set; }
///
/// Difficulty of the Harmonies track.
///
/// diff_vocals_harm
public long? DiffVocalsHarm { get; set; }
///
/// Difficulty of the Dance track.
///
/// diff_dance
public long? DiffDance { get; set; }
#endregion
#region Chart Properties
///
/// Forces the Drums track to be Pro Drums.
///
/// pro_drums, pro_drum (FoFiX)
public bool? ProDrums { get; set; }
///
/// Forces the Drums track to be 5-lane.
///
/// five_lane_drums
public bool? FiveLaneDrums { get; set; }
///
/// Specifies a voice type for the singer (either "male" or "female").
///
/// vocal_gender
public string? VocalGender { get; set; }
///
/// Specifies a tuning for 17-fret Pro Guitar.
///
/// real_guitar_tuning
public string? RealGuitarTuning { get; set; }
///
/// Specifies a tuning for 22-fret Pro Guitar.
///
/// real_guitar_22_tuning
public string? RealGuitar22Tuning { get; set; }
///
/// Specifies a tuning for 17-fret Pro Bass.
///
/// real_bass_tuning
public string? RealBassTuning { get; set; }
///
/// Specifies a tuning for 22-fret Pro Bass.
///
/// real_bass_22_tuning
public string? RealBass22Tuning { get; set; }
///
/// Specifies the number of lanes for the right hand in Real Keys.
///
/// real_keys_lane_count_right
public long? RealKeysLaneCountRight { get; set; }
///
/// Specifies the number of lanes for the left hand in Real Keys.
///
/// real_keys_lane_count_left
public long? RealKeysLaneCountLeft { get; set; }
///
/// Delays the chart relative to the audio by the specified number of milliseconds.
/// Higher = later notes. Can be negative.
///
/// delay
[Obsolete("Only used in older versions")]
public long? Delay { get; set; }
///
/// Overrides the default sustain cutoff threshold with a specified value in ticks.
///
/// sustain_cutoff_threshold
[Obsolete("Only used in older versions")]
public long? SustainCutoffThreshold { get; set; }
///
/// Overrides the default HOPO threshold with a specified value in ticks.
///
/// hopo_frequency
[Obsolete("Only used in older versions")]
public long? HopoFrequency { get; set; }
///
/// Sets the HOPO threshold to be a 1/8th step.
///
/// eighthnote_hopo
[Obsolete("Only used in older versions")]
public bool? EighthNoteHopo { get; set; }
///
/// Overrides the .mid note number for Star Power on 5-Fret Guitar.
/// Valid values are 103 and 116.
///
/// multiplier_note, star_power_note (PS)
[Obsolete("Only used in older versions")]
public long? MultiplierNote { get; set; }
#endregion
#region Chart Properties (Game-Specific)
///
/// (PS) Sets 5 to 4 Lane Drums Fallback Note
///
/// drum_fallback_blue
public bool? DrumFallbackBlue { get; set; }
///
/// (FoFiX) Marks a song as a tutorial and hides it from Quickplay.
///
/// tutorial
public bool? Tutorial { get; set; }
///
/// (FoFiX) Marks a song as a boss battle.
///
/// boss_battle
public bool? BossBattle { get; set; }
///
/// (FoFiX) Overrides the natural HOPO threshold using numbers from 0 to 5.
///
/// hopofreq
[Obsolete("Only used in FoFiX")]
public long? HopoFreq { get; set; }
///
/// (FoFiX) Sets the "early hit window" size.
/// Valid values are "none", "half", or "full".
///
/// early_hit_window_size
public string? EarlyHitWindowSize { get; set; }
///
/// (CH) Sets whether or not end events in the chart will be respected.
///
/// end_events
public bool? EndEvents { get; set; }
///
/// (PS) Enables .mid SysEx events for guitar sliders/tap notes.
///
/// sysex_slider
public bool? SysExSlider { get; set; }
///
/// (PS) Enables .mid SysEx events for Real Drums hi-hat pedal control.
///
/// sysex_high_hat_ctrl
public bool? SysExHighHatCtrl { get; set; }
///
/// (PS) Enables .mid SysEx events for Real Drums rimshot hits.
///
/// sysex_rimshot
public bool? SysExRimshot { get; set; }
///
/// (PS) Enables .mid SysEx events for guitar open notes.
///
/// sysex_open_bass
public bool? SysExOpenBass { get; set; }
///
/// (PS) Enables .mid SysEx events for Pro Guitar/Bass slide directions.
///
/// sysex_pro_slide
public bool? SysExProSlide { get; set; }
///
/// (PS) Sound sample set index for guitar.
///
/// guitar_type
public long? GuitarType { get; set; }
///
/// (PS) Sound sample set index for bass.
///
/// bass_type
public long? BassType { get; set; }
///
/// (PS) Sound sample set index for drums.
///
/// kit_type
public long? KitType { get; set; }
///
/// (PS) Sound sample set index for keys.
///
/// keys_type
public long? KeysType { get; set; }
///
/// (PS) Sound sample set index for dance.
///
/// dance_type
public long? DanceType { get; set; }
#endregion
#region Images and Other Resources
///
/// Name of an icon image to display for this song.
/// Included in either the chart folder or the game the chart was made for, or sourced from this repository of icons.
///
/// icon
public string? Icon { get; set; }
///
/// Name for a background image file.
///
/// background
public string? Background { get; set; }
///
/// Name for a background video file.
///
/// video
public string? Video { get; set; }
///
/// Name for a background video file.
///
/// video_loop
public bool? VideoLoop { get; set; }
///
/// Timestamp in milliseconds where playback of an included video will start. Can be negative.
/// This tag controls the time relative to the video, not relative to the chart. Negative values will delay the video, positive values will make the video be at a further point in when the chart starts.
///
/// video_start_time
public long? VideoStartTime { get; set; }
///
/// Timestamp in milliseconds where playback of an included video will end. -1 means no time is specified.
/// This is assumed to also be relative to the video, not the chart.
///
/// video_end_time
public long? VideoEndTime { get; set; }
///
/// Name for a cover image file.
///
/// cover
public string? Cover { get; set; }
#endregion
#region Images and Other Resources (Game-Specific)
///
/// (PS) Name for banner A.
///
/// link_name_a
public string? LinkNameA { get; set; }
///
/// (PS) Name for banner B.
///
/// link_name_b
public string? LinkNameB { get; set; }
///
/// (PS) Link that clicking banner A will open.
///
/// banner_link_a
public string? BannerLinkA { get; set; }
///
/// (PS) Link that clicking banner B will open.
///
/// banner_link_b
public string? BannerLinkB { get; set; }
#endregion
#region Miscellaneous (Game-Specific)
///
/// (FoFiX) High score data.
///
/// scores
public string? Scores { get; set; }
///
/// (FoFiX) Additional score data.
///
/// scores_ext
public string? ScoresExt { get; set; }
///
/// (FoFiX) Play count.
///
/// count
public long? Count { get; set; }
///
/// (PS) Player's rating of the song
///
/// rating
public long? Rating { get; set; }
///
/// (FoFiX) Career ID for this song.
///
/// unlock_id
public string? UnlockId { get; set; }
///
/// (FoFiX) The career ID that must be completed to unlock this song.
///
/// unlock_require
public string? UnlockRequire { get; set; }
///
/// (FoFiX) Text to display if the song is locked.
///
/// unlock_text
public string? UnlockText { get; set; }
///
/// (FoFiX) Indicates if the song is unlocked.
///
/// unlock_completed
public long? UnlockCompleted { get; set; }
///
/// (Editor on Fire) Sets a velocity number for drums accent notes.
///
/// eof_midi_import_drum_accent_velocity
public long? EoFMidiImportDrumAccentVelocity { get; set; }
///
/// (Editor on Fire) Sets a velocity number for drums ghost notes.
///
/// eof_midi_import_drum_ghost_velocity
public long? EoFMidiImportDrumGhostVelocity { get; set; }
#endregion
}
}