A Python library for symbolic music analysis, focusing on chord voicings and tensions.
Project description
PyVoicing
A Python library for symbolic music analysis, focusing on chord voicings and tensions, providing intuitive Python classes for working with pitches, chromas, intervals, and voicings.
- Pythonic syntax
- Lightweight, no dependency
PyVoicing is currently in Alpha stage. API and type hints are subject to change.
Installation
pip install pyvoicing
Usage
from pyvoicing import Pitch, Chroma, Interval, Voicing
# shorthands
from pyvoicing import P, C, I, V
# or simply
from pyvoicing import *
# Pitch
middle_c = Pitch('C', 4)
middle_c.value # 60
~middle_c # 60, shorthand
middle_c.octave # 4
middle_c.offset # 0
middle_c.name # 'C'
middle_c.chroma # Chroma("C")
g = Pitch('G') # default octave=4
b = P('B') # shorthand P for Pitch
e = P('E5') # octave as part of the string
a = e >> 'P4' # transpose up a perfect 4th
a <<= 12 # transpose down an octave
# Voicing
Cmaj7 = Voicing([middle_c, g, b, e], root='C')
Cmaj7 # Voicing('C4 G4 B4 E5', 'C')
~Cmaj7 # ['1', '5', 'maj7', 'maj3']
C69 = Cmaj7 + a - 'B4' + 'D5'
~C69 # ['1', '5', '6', '9', 'maj3']
C69 >> 3 # Voicing('Eb4 Bb4 C5 F5 G5', 'Eb')
Bm7b5 = V('B D5 F5 A5', 'B') # shorthand
~Bm7b5 # ['1', 'min3', 'b5', 'min7']
Bm7b5.root = 'G'
~Bm7b5 # ['maj3', '5', 'dom7', '9']
G9 = V(Bm7b5)
C9 = G9 // 'C'
C9 # Voicing('E4 G4 Bb4 D5', 'C')
C913 = V(C9)
C913[1] >>= 'M2'
C913 # Voicing('E4 A4 Bb4 D5', 'C')
~C913 # ['maj3', '13', 'dom7', '9']
C913.drop2 # Voicing('Bb3 E4 A4 D5', 'C')
~C913.drop2 # ['dom7', 'maj3', '13', '9']
License
PyVoicing is licensed under the MIT License.
Contributing
Feature suggestions and bug reports are welcome!
Changelog
See CHANGELOG.md for version history and release notes.
Project details
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 pyvoicing-0.1.3.tar.gz.
File metadata
- Download URL: pyvoicing-0.1.3.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70402518128f4c723cfefb8041dcaab1912503f106a435149822e182e94d6558
|
|
| MD5 |
ad21bd7610d07d25d47032dacae276ee
|
|
| BLAKE2b-256 |
9eea7b21844c1ed994b94f4ecbb160a45b7cbec503da15e69d71d772e0f190dc
|
File details
Details for the file pyvoicing-0.1.3-py3-none-any.whl.
File metadata
- Download URL: pyvoicing-0.1.3-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0c8d7ecbe9ea15ba82105f348ede33c21d147865fcddba0044316617cef827d
|
|
| MD5 |
e597e47de4b81ad6962177fc3406dc6b
|
|
| BLAKE2b-256 |
a61772926c9fb42f8b38b719b9b7d0668b616de1cb9a41f8c5f58ee5fcba5830
|