Python toolkit for working with chord progressions
Project description
jchord - toolkit for working with chord progressions
What’s this then?
jchord is a Python package which provides tools for working with chord progressions. jchord:
has object representations for notes, chords, and progressions (in the Western 12-tone system)
knows about naming conventions for chords, and can convert back and forth between objects and names
can be used as a converter between strings, text files, XLSX files, PDFs and MIDI files (see “converter script” below)
Get it
Basic installation:
pip install jchord
Installation with dependencies for reading and writing MIDI/XLSX/PDF files:
pip install jchord[midi,xlsx,pdf]
Convert between formats
If you just want the converter functionality, invoke jchord on the command line:
usage: jchord [-h] [--midi MIDI] [--pdf PDF] file_in file_out Converts between different representations of the same format positional arguments: file_in Input progression as string, .txt, .xlsx or .midi file_out Output file as .txt, .xlsx, .midi or .pdf optional arguments: -h, --help show this help message and exit --midi MIDI comma separated list of arguments for midi, e.g. tempo=8,beats_per_chord=2 --pdf PDF comma separated list of arguments for pdf, e.g. chords_per_row=8,fontsize=30
Example:
jchord "Cm A E7 F#m7" example.mid --midi tempo=80,beats_per_chord=1
As a library
Here is an example that parses a chord progression written as a string, transposes it upwards by 2 semitones, converts it back to a string and then creates a midi file from it.:
from jchord import ChordProgression, MidiConversionSettings prog = ChordProgression.from_string("C -- Fm7 -- C -- G7 -- C -- E7 Am F Bm7b5 E7 Am9 F Bo C69 --") prog = prog.transpose(+2) print(prog.to_string()) prog.to_midi(MidiConversionSettings(filename="example.midi", tempo=100, beats_per_chord=2, instrument=4))
Output:
D -- Gm7 -- D -- A7 -- D -- F#7 Bm G C#m7b5 F#7 Bm9 G C#o D69 --
For more examples, see the documentation.
Documentation
Documentation lives here: jonathangjertsen.github.io/jchord/
Contributing
To contribute, open an issue or create a Pull Request in the Github repo.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file jchord-3.1.1.tar.gz
.
File metadata
- Download URL: jchord-3.1.1.tar.gz
- Upload date:
- Size: 31.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1d78a4ecc4c95033d02537a793e91f00a444423306d06ad2152c4de38aaece4 |
|
MD5 | 8915e801ed034caf65154e43657c36cc |
|
BLAKE2b-256 | 9c6ff212b97bd1f375009f06b0f4afd679a72cffb6f22f3068c12230818805ea |
File details
Details for the file jchord-3.1.1-py3-none-any.whl
.
File metadata
- Download URL: jchord-3.1.1-py3-none-any.whl
- Upload date:
- Size: 28.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6bddf6928e1965624b832c0c131d80c5761bc55b5123fbab72ae90c82855b315 |
|
MD5 | e533fac24933fe6092a13d2863bc87c0 |
|
BLAKE2b-256 | 1c7a4662527ccd98f0db0280b4f9c3c669a4cda6f802edf22ee64521b6e4e96a |