Table of Contents
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.
