ChordPro support
ChordPro is a plain-text based standard that can be edited in any text editor on any platform. Lyrics are written as normal text, chords are inline with the lyrics, surrounded by square brackets([
and ]
), and meta data is specified using “tags” surrounded by {
and }
characters.
As a simple example, a song file might look like this:
{title: Amazing Grace}
{artist: John Newton}
{key: D}
{start_of_verse: Verse 1}
A[D]mazing grace! (how [G]sweet the [D]sound)
That [D]saved a wretch like [A7]me!
I [D]once was lost, but [G]now am [D]found,
Was [D]blind, but [A7]now I [D]see.
When displayed, the above file may appear like this:
The format is used by many lyric and chord apps. Unfortunately, while the central elements of the format are usually treated the same across many apps, there can be quite substantial differences in how some of the tags are interpreted and used, especially with older programs. And of course, each app can have its own custom tags that none of the other apps understand.
SongSheet does its best to support the currently published ChordPro standard as documented at https://www.chordpro.org/chordpro/index.html.
You can export all of your songs to this format, and import any song that is in this format, too.
Additionally, because many older apps do not yet support the newest version of the standard, SongSheet will do its best to interpret any non-standard tags used by the programs. If you find a ChordPro file that SongSheet can’t properly parse, please let me know!
SongSheet also supports exporting to a reduced set of ChordPro tags that most other programs should be able to support. This is document in the ChordPro v4.6 specification
ChordPro Quick Start
Please refer to the complete ChordPro Format Specification. Here is a brief outline of the main tags you will typically use:
Song name/title
{title: Song Title}
Alternatives supported when importing:
{t: Song Title}
Subtitle (Artist)
This populates the artist metadata field in SongSheet.
{subtitle: Artist Name}
Alternatives supported when importing:
{st: Artist Name}
{su: Artist Name}
{artist: Artist Name}
{author: Artist Name}
Composer
{composer: Composer Name}
Lyricist
{lyricist: Lyricist Name}
Arranger
{arranger: Arranger Name}
Copyright Information
{copyright: 1999 Some Organization, Inc.}
Year
{year: 1999}
Song key
{key: C}
Alternatives:
{k: C}
Capo
{capo: 3}
Alternatives:
{ca: 3}
{meta: capo 3}
Tempo
Tempo is measured as number of beats per second, and must be a numeric (integer) value:
{tempo: 123}
Alternatives:
{bpm: 123}
{metronome: 123}
Time signature
{time: 4/4}
Duration
Duration is used in SongSheet Pro to control the autoscrolling speed. The time is specified in one of two formats, either as mm:ss for minutes and seconds (e.g. 4:00), or as a decimal number e.g. 240 (representing 240 seconds, or 4 minutes).
{duration: 3:30}
Alternatives:
{duration: 210}
Genre
Note: This is actually a non-standard ChordPro tag supported by SongSheet. When exporting, it will use the alternative form below, in order to conform to the ChordPro specification.
{genre: Blues}
Alternatives:
{meta: genre Blues}
CCLI Song Number
Note: This is actually a non-standard ChordPro tag supported by SongSheet. When exporting, it will use the alternative form below, in order to conform to the ChordPro specification.
{ccli: 123456}
Alternatives:
{meta: ccli 123456}
Song chords
Used in the header section of the song file (before the first stanza) to specify all the chords that are used within the song. If creating your own file by hand, this is completely optional, as SongSheet Pro will work this out for you, and display all the song’s chords on the chord palette keyboard accessory.
{chords: C, D, E}
Stanza name
Used before the first line of a stanza, to give it a name (e.g. Chorus, Verse 1, Bridge, etc).
{start_of_verse: Verse 1}
Alternatives:
{name: Verse 1}
Note that some apps use c
/ comment
for stanza names; others for song annotations. If SongSheet sees a comment tag as the first line of an otherwise un-named stanza, it will assume that it represents the stanza’s name:
{c: Verse 1}
{comment: Verse 1}
Chorus
To mark the start of a chorus:
{start_of_chorus}
Alternatively:
{soc}
{chorus}
To mark the end of a chorus (optional; SongSheet will close a stanza when there is a blank line between lyric lines):
{end_of_chorus}
Alternatively:
{eoc}
Tablature
To mark the start of a tablature section:
{start_of_tab}
Alternatively:
{sot}
To mark the end of a tablature section (optional; SongSheet will recognise the end of tablature when there is a blank line):
{end_of_tab}
Alternatively:
{eot}
Unsupported tags
SongSheet doesn’t support all the features of ChordPro, especially around formatting directives. SongSheet has its own typesetting and theme system, so it doesn’t support any of the tags around defining fonts, colours, page breaks, column breaks, or images.
Also, since SongSheet doesn’t (yet) support chord diagrams, it doesn’t support chord grids or the tags that define chord diagrams/fingering.
Finally, all the various “comment” directive variations are treated as a single comment type.
Exporting ChordPro from SongSheet Pro
SongSheet Pro can produce ChordPro-formatted content for use in other apps.
There are multiple ways of getting ChordPro output when you are at the song display screen. You can see the options when you tap the Share button at the top-right of the song display.
Send a song as ChordPro
- From the Share menu, select Send Song
- Choose your format, either ChordPro v4.6 (older apps may not recognise the newer tag formats) or ChordPro v5.0.
- Choose to send via AirDrop, Mail, Messages, etc.
Export to ChordPro
- From the Share menu, select Export Song
- Choose your format, either ChordPro v4.6 (older apps may not recognise the newer tag formats) or ChordPro v5.0.
- Choose the app to open the ChordPro file in, or save it to Files
Copy to Clipboard
- From the Share menu, select Copy to Clipboard
- Switch to an app that allows you to create and save a text file
- Create a new file, and paste the contents of the clipboard
- Save the file, typically with a .chordpro or .chopro extension