Skip to main content

Language syntax

Title

Meant to be the name of the song. Single asterisk on the start of a line.

Markup
* Anesthetize
Render
note

Title is not the same as song name in the songs list.

Subtitle

Meant to be the author of the song. Double asterisk on the start of a line.

Markup
** Porcupine Tree
Render
note

The renderer will always use the last title and subtitle in the file.

Block of lyrics

The song is divided into blocks. One block can be verse, chorus, etc. You can give labels to blocks. Trailing colon marks the delimiter - it is consumed and everything before it becomes the rendered label. Add an extra colon to keep a literal colon in the label: 1.: renders 1., 1:: renders 1:, 1::: renders 1::.

New block is created after an empty line.

Markup
Block without a label.

1.: First verse with a label.

R:: Block with a 'R:' as a label.

This is a new block because of a new line.
Render

Sub-label

Only the first line of a block can name the block. A label written on any later line names that one line instead - a sub-label. It is rendered italic where the block's own label is bold, and the line's content follows right after it.

Markup
Intro:
Kl. + Bas: [Am F G Am (2×)]
Housle: [Am F G Am (4×)]
Render
note

A sub-label does not indent the rest of the song the way a block label does - it sits in the line, so however long it is, no other line moves.

Chords

Chords are defined by square brackets. You can have multiple chords at once divided by space or comma.

Chords are inserted in the lyrics, but will be rendered above the exact place you put them in.

A line with no lyrics has nothing to render the chords above, so they are rendered in the line itself, at the size of the lyrics - the row of chords a bridge or an intro is made of.

Markup
2.: And did they get you to [C]trade your heroes for[D] ghosts,
 Hot ashes for [Am]trees, hot air for[G] cool breeze,
 cold comfort for ch[D]ange,
 And did you ex[C]change walk on part in the [Am]war
 for lead role in [G]cage?

[Em G Em G Em A Em A G]

3.: [C]How I wish, how I wish [D]you were here.
We're just [Am]two lost souls swimming in fish bowl,
[G]year after year,
[D]Running over the same old ground. What [C]have we found?
The same old [Am]fears. Wish you were [G]here!
Render

Inline chords

Doubled brackets put a chord in the line instead of above it, so it can be read as part of the text. Everything else about it is the same: it is transposed, coloured and sized like any other chord.

Markup
Play the [[C]] and then back to [[G]].

Kl. + Bas: [[Am F G Am (2×)]]
Render
note

On a line with no lyrics both spellings render the same, so [Am F G] and [[Am F G]] are interchangeable there. The doubled brackets are what you need on a line that has lyrics.

Escape

A backslash renders a markup character literally. The main use is the colon, so a line like Narrator\: stays a lyric instead of becoming a label. It also works for * and for [.

Markdown

There is some Markdown support available to enable marking lyrics. For example to split the main voice and choir / everybody.

Markup
This text is **bold**

This text is _italic_

** Title and subtitle is not parsed, just text
Render

An asterisk only marks anything when something on the same line closes it. A * that closes nothing is simply printed, so Refrain (2*) needs no escaping, and a marker you have not finished typing yet leaves the rest of the line alone. Two stray asterisks on one line do find each other, though - that is what \* is for.