Package to handle musical chords
Project description
PyChord

Overview
PyChord is a Python library to handle musical chords.
Installation
PyChord supports Python 3.8 and above.
$ pip install pychord
Basic Usage
Create a Chord
>>> from pychord import Chord
>>> c = Chord("Am7")
>>> c
<Chord: Am7>
>>> c.info()
"""
Am7
root=A
quality=m7
appended=[]
on=None
"""
Transpose a Chord
>>> c = Chord("Am7/G")
>>> c.transpose(3)
>>> c
<Chord: Cm7/Bb>
Get component notes
>>> c = Chord("Am7")
>>> c.components()
['A', 'C', 'E', 'G']
>>> c.components_with_pitch(root_pitch=3)
['A3', 'C4', 'E4', 'G4']
Compare Chords
>>> Chord("C") == Chord("D")
False
>>> Chord("C#") == Chord("Db")
True
>>> c = Chord("C")
>>> c.transpose(2)
>>> c == Chord("D")
True
Find Chords from notes
>>> from pychord import find_chords_from_notes
>>> find_chords_from_notes(["C", "E", "G"])
[ <Chord: C>]
>>> find_chords_from_notes(["F#", "A", "C", "D"])
[ <Chord: D7/F#>]
>>> find_chords_from_notes(["F", "G", "C"])
[ <Chord: Fsus2>, <Chord: Csus4/F>]
Create and handle chord progressions
>>> from pychord import ChordProgression
>>> cp = ChordProgression(["C", "G/B", "Am"])
>>> cp
<ChordProgression: C | G/B | Am>
>>> cp.append("Em/G")
>>> cp
<ChordProgression: C | G/B | Am | Em/G>
>>> cp.transpose(+3)
>>> cp
<ChordProgression: Eb | Bb/D | Cm | Gm/Bb>
>>> cp[1]
<Chord: Bb/D>
Advanced Usage
Create a Chord from note index in a scale
>>> Chord.from_note_index(note=1, quality="", scale="Cmaj")
<Chord: C> # I of C major
>>> Chord.from_note_index(note=3, quality="m7", scale="Fmaj")
<Chord: Am7> # IIIm7 of F major
>>> Chord.from_note_index(note=5, quality="7", scale="Amin")
<Chord: E7> # V7 of A minor
Overwrite the default Quality components with yours
>>> from pychord import Chord, QualityManager
>>> Chord("C11").components()
['C', 'G', 'Bb', 'D', 'F']
>>> quality_manager = QualityManager()
>>> quality_manager.set_quality("11", (0, 4, 7, 10, 14, 17))
>>> Chord("C11").components()
['C', 'E', 'G', 'Bb', 'D', 'F']
Inversions
Chord inversions are created with a forward slash and a number indicating the order. This can optionally be combined with an additional forward slash to change the bass note:
>>> Chord("C/1").components() # First inversion of C
['E', 'G', 'C']
>>> Chord("C/2").components() # Second inversion of C
['G', 'C', 'E']
>>> Chord("Cm7/3/F").components() # Third inversion of Cm7 with an added F bass
['F', 'Bb', 'C', 'Eb', 'G']
Examples
- pychord-midi.py - Create a MIDI file using PyChord and pretty_midi.
Links
Author
License
- MIT License
The logo is made from Freepik.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pychord-1.3.2.tar.gz.
File metadata
- Download URL: pychord-1.3.2.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04dbdfe5b868eb2af6b0c7d3d04ce9e23f9c90751fd34b2d878365b2ce5314b5
|
|
| MD5 |
60149406205bf368a238ef2126565e3e
|
|
| BLAKE2b-256 |
0c579b42e829d034d19dcba6b40f52d2884eaf036a2df05cdd09c6f49a203dcc
|
File details
Details for the file pychord-1.3.2-py3-none-any.whl.
File metadata
- Download URL: pychord-1.3.2-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a45abb15aa407339a903f389108297deaf0b3935f54070cb115b966addd18719
|
|
| MD5 |
24f03c6e0ef50a2784481d5a070aa610
|
|
| BLAKE2b-256 |
3c0c0bcf8a79b677cf7a2b7ab7dfbcf8db4a256fcf7b21ccbe31d6d0e0b292ea
|