pytheory
is a Python library that simplifies working with music theory concepts. It provides a simple and intuitive interface for representing musical elements such as notes, scales, chords, and intervals, making it easier to work with music theory in Python.
PyTheory represents the intersection of Kenneth's programming expertise and his passion for music composition. By bringing computational thinking to music theory, it enables algorithmic exploration of harmonic relationships that traditional notation makes cumbersome.
Features
- Note Representation: PyTheory allows you to represent musical notes using the standard Western notation (
A
,Bb
,C#
, etc.), enabling you to work with notes in different formats. - Scale Generation: The library provides functions for generating scales based on different modes, such as major, minor, pentatonic, and blues scales, allowing you to explore different musical scales.
- Chord Construction: PyTheory supports constructing chords from notes, intervals, or scale degrees, making it easy to create and analyze chords in different keys.
- Interval Calculation: The library allows you to calculate intervals between notes, enabling you to determine the distance between two pitches in a musical context.
This project is highly experimental, and is more of a thought exercise than a practical library. It aims to explore how music theory concepts can be represented and manipulated using Python, and to provide a foundation for further research and development in this area.
Installation
You can install pytheory
using pip:
$ pip install pytheory
Usage
Create a Note
object:
>>> import pytheory
>>> c_minor = TonedScale(tonic='C4')['minor']
>>> c_minor
<Scale I=C4 II=D4 III=Eb4 IV=F4 V=G4 VI=Ab4 VII=Bb5 VIII=C5>
>>> c_minor[0].pitch()
523.251130601197
>>> c_minor["I"].pitch(symbolic=True)
440*2**(1/4)
>>> c_minor["tonic"].pitch(temperament='pythagorean', symbolic=True)
14080/27
I'm not sure if this is useful, but it's fun to play with, and it has enhanced my understanding of music theory— especially the symbolic
parameter.
The symbolic parameter demonstrates PyTheory's unique approach to music computation—rather than just calculating numeric frequencies, it can express pitch relationships as mathematical expressions, revealing the underlying mathematical beauty of musical harmony.