SongSheet Pro’s ChordPro Format Support

Introduction

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:

{t: Amazing Grace}
{st: John Newton}
{key: D}
{c: 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:

Screen Shot 2017-02-04 at 9.23.48 am.png

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. And of course, each app can have its own custom tags that none of the other apps understand.

Internally, SongSheet Pro uses its own variation on ChordPro for the storage of files. Because of this, despite its weaknesses, ChordPro is usually the best format with which to exchange data between SongSheet Pro and other like-minded applications.

Importing ChordPro files into SongSheet Pro

SongSheet Pro recognises the following tags/directives: (Note that in many instances, SongSheet Pro supports multiple tags that do exactly the same thing; this is designed to cater for some of the variations in output from various other apps)

Song name/title

{t: Song Title}
{title: Song Title}

Author/artist/composer

{subtitle: Artist Name}
{st: Artist Name}
{artist: Artist Name}
{author: Artist Name}

Song key

{key: C}
{k: C}

Capo

{capo: 3}
{ca: 3}

Tempo

{tempo: 123}
{bpm: 123}
{metronome: 123}

Time signature

{time: 4/4}

Duration

Duration is used in SongSheet Pro to control autoscrolling speed. The time is specified in seconds, as a decimal number e.g. 210 = 3 minutes, 30 seconds.
{duration: 210}

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).
{c: Verse 1}
{comment: Verse 1}
{name: Verse 1}
Note that some apps use c / comment for stanza names; others for song annotations. For now, SongSheet Pro treats them all as if they are stanza names.

Chorus

Many apps use a special tag to bracket a chorus. You can, of course, just use {name: Chorus} instead (this is how SongSheet Pro does it internally).

Marking the start of a chorus

{start_of_chorus}
{soc}

Marking the end of a chorus

These tags are ignored by SongSheet Pro, which determines the end of a stanza using either a completely blank line, or the beginning of the next stanza.
{end_of_chorus}
{eoc}

Keywords

This tag is kind of supported, but the results of scanning the content of this tag are stored in the song’s “notes” field rather than being used as searchable keywords.
{keywords: some,keywords,here}

Unsupported ChordPro tags

The following tags are scanned, but are (currently) ignored by SongSheet Pro.

Tab

SongSheet Pro doesn't yet have tab support, so related tags are ignored.
{start_of_tab} and {sot}
{end_of_tab} and {eot}

App-specific tags

OnSong

{flow: <flow-content>}
SongSheet Pro's "arrangement" feature is conceptually similar to OnSong's "flow" feature, but the differences mean that there is no reliable way to translate from a "flow" to an "arrangement", and so this tag is unsupported.

Exporting ChordPro from SongSheet Pro

SongSheet Pro can produce ChordPro-formatted content for use in other apps. Currently the implementation is a bit tedious, but I have plans on improving this in future releases.

Right now the only way to get at the ChordPro output is to:

  1. Display the song
  2. Tap the share button
  3. Select Copy to Clipboard
  4. Switch to an app that allows you to create and save a text file
  5. Create a new file, and paste the contents of the clipboard
  6. Save the file, typically with a .chordpro or .chopro extension

(Other apps may use other filename extensions. For example, DSBsoft's Song Sheet 5 for Windows uses the extension .dbt.)

Note that right now not all of the song's metadata is exported to this ChordPro format, only the following information: Song title, artist, key, chord list and stanzas.

An example of ChordPro output from SongSheet Pro is:

{title: Amazing Grace}
{subtitle: John Newton}
{key: D}
{chords: D G A7}
{name: 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.
{name: Verse 2}
'Twas grace that taught my heart to fear,
And grace my fears relieved;
How precious did that grace appear
The hour I first believed!
{name: Verse 3}
Through many dangers, toils, and snares,
I have already come;
'Tis grace hath brought me safe thus far,
And grace will lead me home.
{name: Verse 4}
The Lord has promised good to me,
His word my hope secures;
He will my shield and portion be
As long as life endures.
{name: Verse 5}
When we've been there ten thousand years,
Bright shining as the sun,
We've no less days to sing God's praise,
Than when we first begun.