Skip to main content

Some helpful stuff for displaying song chords (or just the bare chords) for string instruments.

Installation

Just run pip install chordist or pipx install chordist.

CLI

When installed, the CLI command chordist will be made available.

$ chordist
usage: chordist [-h] [--instrument {guitar,banjo}] [--file FILE] [--chords-inline] [--collect-chords] [--even-x-distance] [--maxlen MAXLEN] [--variations] [--ascii] [--transpose TRANSPOSE]

options:
  -h, --help            show this help message and exit
  --instrument {guitar,banjo}, -i {guitar,banjo}
                        Default: guitar
  --file FILE, -f FILE  Text file with songs; if absent, all chords for the instrument will be printed
  --chords-inline       Input file uses the 'inlined chords' notation
  --collect-chords      When printing multiple songs, output all chords at the bottom instead of individually for each song
  --even-x-distance     Draw chords on equal distances horizontally
  --maxlen MAXLEN       Maximum output row length (default: 50)
  --variations          Print all available variations of each chord
  --ascii               Print chords in their simplified, ASCII only forms
  --transpose TRANSPOSE
                        Transpose all chords in the input file by this number of half notes

On the input text file

A sequence of 2 or more empty rows will be interpreted as a boundary between two songs.

If a song is prefixed by a line enclosed in ** (two asteriskes), the string within will be used for the song title.

Chords in the input file may be written in an inline fashion, like this:

**Roll in my sweet baby's arms**

[G]Roll in my sweet baby's arms
Roll in my sweet baby's [D7]arms
Gonna [G]lay around the shack
'Til the [C]mail train comes back
And [D7]roll in my sweet baby's [G]arms

... or above the lyrics, like this:

**Roll in my sweet baby's arms**

G
Roll in my sweet baby's arms
                        D7
Roll in my sweet baby's arms
      G
Gonna lay around the shack
         C
'Til the mail train comes back
    D7                      G
And roll in my sweet baby's arms

Use the --chords-inline parameter for the former notation. Note that the notation needs to be consistent throughout the file.

Chords may be written in the fancy, correct way ("A♭⁷", "C♯m⁷") or the simplified/ASCII way ("Ab7", "C#m7").

Defining chords

A chord can be defined like so:

from chordist.banjo import BanjoChord

em = BanjoChord.create("Em", (2, 1, 2), (2, 4, 3))
g = BanjoChord.create("G")

... where the arguments to BanjoChord.create() are the chord name followed by a tuple in the format (fret number, string number, [finger number]) for each pressed string. String numbers are counted from the top/left, which I am sure somebody will take issue with (feel free to change this in your own fork in that case). The finger number can be omitted, in which case a * will be used. It can also be a string, for example x for muted strings.

Bugs/caveats

Not yet able to render the high G string on a 5-string banjo in any useful way.

Metadata

Release files for chordist 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chordist 0.4.0
File Size Uploaded
chordist-0.4.0.tar.gz 26.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for chordist 0.4.0
File Interpreter ABI Platform
chordist-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 54.8 kB

Release files / chordist-0.4.0.tar.gz

Download URL chordist-0.4.0.tar.gz
Size 26.6 kB
Tags Source
SHA-256 checksum
How to use checksums
7aa5687d1ba7808aeca1c4778ef90275524d1c8be88837f1008c7cc83c6b640b
BLAKE2b-256 checksum
How to use checksums
355f45cf937d542a73ba14af12b69aa211ec851cb658d400d1e70394b633d44c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / chordist-0.4.0-py3-none-any.whl

Download URL chordist-0.4.0-py3-none-any.whl
Size 28.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e99983cb127c5e27919cc7c9f418ebff0d9a0b0b94442782ab64974ea3102d19
BLAKE2b-256 checksum
How to use checksums
79173cd29e426efdae555b1d4d9a9e6b44b25c839bbb098d3b3398bfc30b1390
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page