conchord
Typst package to easily write lyrics with chords and generate colorful fretboard diagrams
conchord: chords and tabs inside Typst
A Typst package for writing lyrics with chords and generating fretboard diagrams, backed by a WASM music theory engine that can find chords for any tuning and instrument.
What it generates
Conchord is a Typst package for writing lyrics with chords and generating colorful fretboard diagrams. Its engine can explore all the possible chord variants for any special tuning of a special string instrument, such as ukulele, bass guitar, or mandolin. The instruments are a hint that this is not a standard guitar only tool.
The engine does the work
A small music theory engine is embedded through WASM to interpret chord names and generate every possible chord tablature. The README stresses that Conchord predefines nothing and can come up with chords for any tuning and instrument, which is what sets it apart from packages built around standard guitar. Diagrams are generated automatically for the tuning in use.
Exploring or defining chords
Users can explore chords to find the best way to play a song, or define their own chords and skip the engine. A compact special tab language writes tabs quickly, with some limitations. Anything in the songs can be transposed, and changing the tuning or instrument updates the chord library instantly.
How a chord becomes a tabstring
Behind the scenes, a smart chord calls a get-chord function with a syntax that returns a chord tabstring like x03320. get-chord in turn calls get-chords, which asks WASM to create all possible tabstrings. Some chords render in red because they are not true chords but very close, for instance when the perfect fifth is missing, and the smart chord uses that red missing fifth as the default generator.
The tab notation
The tab representation is simple: x is a closed string, 0 is an open string, other numbers are frets, and frets larger than 9 are separated by commas. By default the generator requires the lowest bass note to be the root, and for custom chords the user does not need to think about layout or pass every parameter.
Community notes