ChordPro is the second editor tab. Instead of a chord line above the words, the chords go inline, in square brackets, right where they fall in the lyric. It is an open, portable plain-text format.
This page covers what the editor renders. For the full background on ChordPro, including its history, converting from other apps, and how transposition works, see the blog post ChordPro explained. For the chords-above-words style, see Chords over Lyrics.
Inline chords
Each chord sits above the character right after its bracket, so put the bracket exactly where the chord changes:
You type
[G]Strumming on my [C]guitar tonight [Em]Singing songs beneath the [Am]light
Renders as
GStrumming on my Cguitar tonightEmSinging songs beneath the AmlightWhat counts as a chord is the same everywhere in Fretlist: a root note (A to G), optionally sharp or flat, with quality, extension, and an optional slash bass, like Am, C7, F#m7, Cmaj7, G/B.
Section headers
Mark a section with a comment directive:
You type
{c: Verse}
[G]Strumming on my [C]guitar tonightRenders as
VerseGStrumming on my Cguitar tonight{comment: ...} is the long form of {c: ...}. Environment directives work too: {start_of_chorus} (or {soc}), {start_of_verse: Verse 2}, and {chorus} to mark a chorus repeat.
Notes that aren't chords
Mark a non-chord cue with an asterisk right after the bracket. It renders above the lyric in italic and never transposes:
You type
I found a [G]love [*Stop]for me
Renders as
I found a Glove Stopfor meIt is the same note that Chords over Lyrics writes as (Stop), and switching tabs converts between the two. Fretlist also accepts bare brackets like [Mute] or [(stop)] as notes.
Chord diagrams
Define shapes with {define:} and they render as fingering diagrams:
You type
{define: C base-fret 1 frets x 3 2 0 1 0}
{define: G base-fret 1 frets 3 2 0 0 0 3}
{define: Am base-fret 1 frets x 0 2 2 1 0}Renders as
ChordsSee Getting the most out of Frets for the full diagram system.
Tabs
Wrap tab in {start_of_tab} and {end_of_tab}. Fretlist also auto-detects tab lines, so the wrapper is optional:
You type
{start_of_tab}
e|--------------0--|
B|----------0-1----|
G|------0-2--------|
D|--2-3------------|
A|-----------------|
E|-----------------|
{end_of_tab}Renders as
eBGDAE||||||---------------2-----------3----------0-----------2----------0-----------1----------0-----------------||||||Chord grids
Chart bars without lyrics in a {start_of_grid} environment. Real barlines divide the bars and a dot is a beat with no new chord:
You type
{start_of_grid}
| C . . . | F . . . | Am7 . . . | Dm . . . |
{end_of_grid}Renders as
CFAm7DmSee Chord grids for split bars, repeats, first and second endings, and strum patterns.
What the editor skips
A line starting with a single # is a hidden comment, and metadata or layout directives ({title}, {artist}, {key}, {capo}, custom {x_...}) are not drawn in the chord-sheet body. In this example only the two lyric lines render:
You type
# reminder: capo 2 live
{title: Perfect}
[G]Everything in brackets [C]renders
{x_layout: ignored}
[Em]but the directives [D]do notRenders as
GEverything in brackets CrendersEmbut the directives Ddo notSet the song's key, capo, and other details in their own fields, not in the song text.
Directive support at a glance
Here is where the major ChordPro directives stand in Fretlist. When something is not drawn, it is kept in the file rather than dropped, so nothing is lost on export.
| Directive | What it does | Fretlist |
|---|---|---|
| Song metadata | ||
{title} {artist} {composer} | Title and credits | Yes |
{subtitle} | Subtitle (read as an artist fallback) | Yes |
{key} {capo} | Key and capo position | Yes |
{tempo} {time} {tuning} | Tempo, time signature, tuning | Yes |
| Sections and notes | ||
{start_of_verse} {start_of_chorus} {start_of_bridge} | Song sections | Yes |
{chorus} | Reprint the last chorus | Yes |
{comment} {comment_box} {comment_italic} {highlight} | Section labels and notes | Yes |
{new_page} | Page break for print and export | Yes |
| Chords, grids, and tab | ||
[C] inline chords | Chords in the lyric | Yes |
{define} {chord} | Custom chord diagrams (guitar and ukulele) | Yes |
{instrument} | Instrument for the diagrams that follow | Yes |
{transpose} | Shift the chords by N semitones | Yes |
{start_of_grid} | Bar-and-chord grid | Yes |
{start_of_tab} | Tab block | Yes |
| Styling and layout | ||
{textfont} {textsize} {textcolour} | Text font, size, color | Own style |
{chordfont} {chordsize} {chordcolour} | Chord font, size, color | Own style |
{columns} {column_break} | Fixed multi-column page layout | Own style |
{grid} {no_grid} {diagrams} | Show-or-hide display toggles | Own style |
| Embedded media | ||
{image} | Embedded image | Preserved |
{start_of_abc} {start_of_ly} | ABC and LilyPond music notation | Dropped on import |
Yes renders or applies. Own style means Fretlist ignores the directive and uses its own consistent look. Preserved means it is not drawn, but kept in the file so it survives export. Dropped on import means the block is removed when a file is imported, the one place a file currently loses content.
The preview, and switching formats
The preview renders the finished sheet live. Switch to the Chords over Lyrics tab to see the same song in the chords-above-words style, then switch back for ChordPro. A few ChordPro directives have no Chords-over-Lyrics equivalent, so Fretlist warns you before you edit in that view.