User Tools

Site Tools


chordpro

ChordPro Directives

OzBCoz uses the ChordPro format for storing and rendering songs. This page describes the directives supported.

ChordPro files are plain text. Directives are written in curly braces {} and song lyrics are written as normal text with chord names in square brackets [] placed immediately before the syllable they should be played on.

Basic Song Layout

{title: My Song Title}
{artist: The Artist}
{key: G}

{start_of_verse}
[G] Words of the [D] verse go [Em] here
[C] Second line of the [G] verse
{end_of_verse}

{start_of_chorus}
[G] Chorus [D] words go [G] here
{end_of_chorus}

Header Directives

Directive Short form Description
{title: Song Title} {t: Song Title} Song title β€” appears as the main heading
{subtitle: text} {st: text} Subtitle β€” appears below the title
{artist: Name} Performing artist
{composer: Name} Goes in as writer - Note below
{writer: Name} Goes in as writer - Note Below
{lyricist: Name} Goes in as writer - Note Below
{key: C} Key of the song (shown in the header)
{capo: 2} Capo position (displayed in the header)
{time: 4/4} Time signature (displayed in the header)
{tempo: 120} Tempo in BPM (displayed in the header)
{columns: number} {col:num} Split the song into number columns (also see {column_break} / {colb}). If you don't use {colb} it will try to split the columns evenly, or you can use {colb} to split where you want

Note: If you use {writer: and/or {composer: and/or {lyricist: then the last one used will show in writer

Section Directives

Directive Short form Description
{start_of_verse} / {end_of_verse} {sov} / {eov} Marks a verse section
{start_of_chorus} / {end_of_chorus} {soc} / {eoc} Marks a chorus section
{start_of_bridge} / {end_of_bridge} none - conflict with {sob} bold Marks a bridge section
{start_of_tab} / {end_of_tab} {sot} / {eot} Marks a tab section (displayed in monospace)
{start_of_grid} / {end_of_grid} {sog} / {eog} Marks a chord grid section
{highlight: text} places text with a red bar in front to highlight the text
{comment: text} {c: text} Displays a comment line in a distinct style - can force new lines using [NL] or [nl]
{comment_italic: text} {ci: text} Displays a comment in italic style - not supported yet - shows the same as c:
{comment_box: text} none Displays a comment in a box - can force new lines using [NL] or [nl]

Wrap each section in start/end tags to give it a label:

{start_of_verse: Verse 1}
β€”lyricsβ€”
{end_of_verse}

{start_of_chorus: Chorus}
β€”lyricsβ€”
{end_of_chorus}

{start_of_bridge: Bridge}
… lyrics …
{end_of_bridge}

The label after the colon (e.g. β€œVerse 1”) is optional β€” leave it out if you don`t want a heading. You can use any label text you like.

Short forms: {sov: Verse 1} / {eov}, {soc: Chorus} / {eoc}

Extensions - see separate list below

{sos: Instrumental} or {sos: colour} or {sos} Start of solo/instrumental section. Highlights the section in the specified colour. Just use any standard colour e.g. red or green or blue etc. Default is blue.
{eos} End of solo/instrumental section, adds a blank line after

For instrumental passages, use {sos} (start of solo) and {eos} (end of solo). The text inside is shown in blue and underlined, and a blank line is added at the end of the block.

{sos}
[Am][G][F][E7] (play twice)
{eos}

You can specify a different colour if you prefer:

{sos: red}
[Am][G][F][E7] (play twice)
{eos}

Chord Directives

Directive Description
{define: Chordname base-fret N frets x x x x x x} Defines a custom chord diagram. base-fret sets the starting fret. frets lists the finger position on each string (0 = open, x or -1 = muted).

Example define:

{define: G7 base-fret 1 frets 0 2 1 2 0 3}

Finger numbers can be added with the fingers keyword:

{define: C base-fret 1 frets x 3 2 0 1 0 fingers x 3 2 0 1 0}

You can add an OzBCoz extension barre <num> which places a barre on fret <num> But you can't have any string marked as 0 or x where the barre is!!!!!

Formatting Directives

Directive Short form Description Is it Extension
{nc} At front of any line stops the blanks following from not being removed - allows indenting of text Extension
{column_break} {colb} / {cb} Set a column break at this point
{textback:colour} text '' | {tb:colour}Β | Set background colour for text (often yellow)| Extension | | ''{textback:#hexcode} tex t {tb:#hexcode} with the hexcode highlight Extension
{textback} {tb} with no colour resets background highlight Extension
{textfont:fontname} '' | ''{tf:font} Sets following font - see Expansion later
{textsize} {ts} With no number resets text size
{textcolour:colour} text '' | {tc:colour}Β | Set colour for text | | | ''{textcolour:#hexcode} tex t {tc:#hexcode} with the hexcode highlight
{textcolour} {tc} With no number resets text size
{chordsize:number} '' | ''{cs:number} Sets following chord size
{chordfont:fontname} '' | ''{cf:font} Sets chords to following font - see Expansion later
{chordsize} {cs} With no number resets chordsize
{chordcolour:colour} text '' | {cc:colour}Β | Set colour for text | | | ''{chordcolour:#hexcode} text {cc:#hexcode} with the hexcode colour
{chordcolour} {cc} With no number resets chord colour
'' Others '' See OzBCoz Extensions below Extension

OzBCoz Extensions

These directives are specific to OzBCoz and are not part of the standard ChordPro spec.

Directive Description
{sos: Instrumental} or {sos: colour} or {sos} Start of solo/instrumental section. Highlights the section in the specified colour. Just use any standard colour e.g. red or green or blue etc. Default is blue.
{eos} End of solo/instrumental section, adds a blank line after
{sob} / {eob} set wrapped text to bold
{soi} / {eoi} set wrapped text to italic
{nc} Allows indenting of text - see above in Formatting
{textback} / {tb} sets a highlight background to text - see above in Formatting
Deprecated - use the {tb:colour} instead
{soh} / {eoh} yellow background to all in between
{sohr} / {eoh} tomato background to all in between
{sohb} / {eoh} cyan background to all in between
{sohg} / {eoh} yellowgreen background to all in between
{sohp} / {eoh} pink background to all in between
{sohy} / {eoh} lightgrey background to all in between
{soho} / {eoh} orange background to all in between

The barre n in the define statement is an OzBCoz extension as well

Chord Name Conventions

Standard chords are written in square brackets: [G], [Am], [D7], [Bm7b5]

Special notation:

  • [NC] β€” No chord (sing without strumming) LSO CAN BE [N.C.]
  • [G]* β€” Single strong strum
  • [G]↓ β€” Single downstrum
  • [G]↑ β€” Single upstrum
  • [D7-alt], [B7-2] β€” Alternative voicings of a chord
  • [NL] or [nl] - Only used in Comments, Highlight or Comment Boxes to force new line

Useful Tips

  • You can fit up to 12 chord diagrams up β€œTOP” at the S setting in a PDF and the song page. Word docs, at the moment, can fit up to 10 diagrams - but can specify an option to fit chords to the line.
  • If you use columns they are next only, PDF shows as 2 columns

Multi-page columns β€” use {colb} carefully, or reduce font size.

  • Chord names are placed immediately before the syllable they are played on with one space between the bracket and the word (can be no spaces but on OzBCoz we favour 1 space).
  • Lines with only chords and no lyrics are valid β€” useful for introductions. They will add an additionnal blank line after the chord only line
  • Empty lines create visual spacing between sections.
  • The # character at the start of a line is treated as a comment and is not displayed.
  • You can mix standard and custom chords freely β€” custom chords defined with {define} replace the system diagram for that chord name in that song only.

Example Song

{title: Twinkle Twinkle}
{artist: Traditional}
{key: C}

{sov}
[C] Twinkle twinkle [F] little [C] star
[F] How I [C] wonder [G] what you [C] are
[C] Up a-[F]bove the [C] world so [G] high
[C] Like a [F] diamond [C] in the [G] sky
{eov}

Current Directives NOT Supported

  • {image:} - considering this for future enhancement
  • {sortitle:) , {sortartist}
  • {copyright:}, {year}, {album}
  • {duration:}
  • {tag}
  • {meta}
  • {chord:}, {verse}
  • chorusfont, chorussize, choruscolour - Set in Settings
  • footerfont, footersize, footercolour
  • gridfont, gridsize, gridcolour
  • tabfont, tabsize, tabcolour
  • labelfont, labelsize, labelcolour
  • tocfont, tocsize, toccolour
  • titlefont, titlesize, titlecolour - Titlesize is set in Settings
  • Conditional directives

Fonts available

Font compatibility guidance for the {tf:}/{textfont:} and {cf:}/{chordfont:} directives)

Whatever text follows {tf:}/{textfont:} and {cf:}/{chordfont:} gets passed straight through as a literal font name β€” CSS font-family on the web page and PDF and Docx.

In Word it renders correctly only if that exact font is actually available wherever it's being viewed; otherwise falls back silently (generic sans-serif on web/PDF, Word's own substitution logic in Word).

The song page and the PDF creation both load the same 5 Google Fonts (Playfair Display, DM Sans, DM Mono, Atkinson Hyperlegible, Comic Neue) β€” these render identically regardless of platform/device, since the browser downloads the actual font file from Google rather than relying on anything locally installed.

Word/DOCX is NOT covered by the above β€” Create Docx only writes a font name into the document, never embeds the font file itself. So even these 5 Google Fonts only render correctly in Word if the person opening the file happens to have them installed locally β€” same β€œtry it and see” risk as any other font name, no special guarantee.

Standard pre-installed fonts by platform

Windows 10/11

Arial, Arial Black, Calibri, Cambria, Candara, Comic Sans MS, Consolas, Constantia, Corbel, Courier New, Georgia, Impact, Lucida Console, Lucida Sans Unicode, Segoe UI, Tahoma, Times New Roman, Trebuchet MS, Verdana

MacOS

American Typewriter, Arial, Avenir/Avenir Next, Baskerville, Comic Sans MS, Copperplate, Courier New, Futura, Geneva, Georgia, Gill Sans, Helvetica/Helvetica Neue, Menlo, Monaco, Optima, Palatino, Times New Roman, Trebuchet MS, Verdana

iOS

overlaps macOS but not identical β€” American Typewriter, Arial, Avenir/Avenir Next, Baskerville, Chalkboard SE, Comic Sans MS, Copperplate, Courier New, Futura, Georgia, Gill Sans, Helvetica/Helvetica Neue, Marker Felt, Noteworthy, Optima, Palatino, Papyrus, Times New Roman, Trebuchet MS, Verdana, Zapfino

Android

Genuinely different from the other three β€” default is Roboto, plus Noto Sans/Noto Serif for broadscript/emoji coverage. Does NOT reliably ship the classic desktop set (Arial, Times New Roman, Georgia etc.) as true distinct fonts β€” browsers may silently substitute a Roboto/Noto variant instead of actually rendering the named font. Treat anything outside Roboto/Noto as unreliable on Android specifically β€” worth being explicit about this asymmetry in the help content, since it's the platform most likely to produce a surprising result.

chordpro.txt Β· Last modified: by jimc

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki