> For the complete documentation index, see [llms.txt](https://rhythm-engine.gitbook.io/rhythm-engine/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rhythm-engine.gitbook.io/rhythm-engine/docs/core/song.md).

# Song

ScriptableObject

Core class used by a lot of components in Rhythm Engine which holds the basic song data

<table data-full-width="true"><thead><tr><th width="306">Field</th><th>Description</th></tr></thead><tbody><tr><td>AudioClip Clip</td><td>The audio clip to use for this song</td></tr><tr><td>float FirstBeatOffset</td><td>This offset should be used to delay the visual aspects of your game. As an example in a mania game, you would use this to delay the note press time (and not to add an offset to the input time)</td></tr><tr><td>bool Looping</td><td>Automatically loop the song after it's over. Setting this will automatically set the Loop property of the AudioSource to true</td></tr><tr><td>float BaseBpm</td><td>The BPM of the song. Used to calculate beat timing</td></tr><tr><td>List&#x3C;BpmChange> BpmChanges</td><td>The BPM changes of the song. Used to calculate beat timing</td></tr><tr><td>float FirstBeatOffsetInSec</td><td>First beat offset in seconds</td></tr></tbody></table>
