All Projects → kennethreitz → pytheory

kennethreitz / pytheory

Licence: other
Music Theory for Humans.

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to pytheory

fretboarder
🎸 A web app to visualize scales, chords and arpeggios on all kinds of fretboards.
Stars: ✭ 34 (-97.5%)
Mutual labels:  music-theory, scales
SymPyBotics
[UNMAINTAINED] Symbolic Framework for Modeling and Identification of Robot Dynamics
Stars: ✭ 137 (-89.91%)
Mutual labels:  sympy
pitchplots
Plotting library for note distributions in different representations of tonal space
Stars: ✭ 17 (-98.75%)
Mutual labels:  music-theory
chords
Text-based chord progression editor
Stars: ✭ 25 (-98.16%)
Mutual labels:  music-theory
Prelude
A web app for practicing musical sight reading skills
Stars: ✭ 24 (-98.23%)
Mutual labels:  music-theory
musyn
Write music together, in real time.
Stars: ✭ 20 (-98.53%)
Mutual labels:  music-theory
LabMidi
Midi IN and OUT. Standard midi file parser and player. Midi Softsynth implementation.
Stars: ✭ 38 (-97.2%)
Mutual labels:  music-theory
CC33Z
Curso de Ciência da Computação
Stars: ✭ 50 (-96.32%)
Mutual labels:  sympy
ziffers
Numbered musical notation for composing algorithmic and generative melodies
Stars: ✭ 53 (-96.1%)
Mutual labels:  music-theory
Miles
Swift Playground that creates jazz improvisations (WWDC 2018)
Stars: ✭ 31 (-97.72%)
Mutual labels:  music-theory
scalemap
a string format and API for musical scales in C, C++, and JavaScript
Stars: ✭ 16 (-98.82%)
Mutual labels:  music-theory
arpeggio
A chord naming app for guitar written in React.
Stars: ✭ 49 (-96.39%)
Mutual labels:  music-theory
pyodesys
∫ Straightforward numerical integration of systems of ordinary differential equations
Stars: ✭ 85 (-93.74%)
Mutual labels:  sympy
chord-master
A web application for building chord progression
Stars: ✭ 34 (-97.5%)
Mutual labels:  music-theory
octave-compass
A tool for exploring musical scales and chords
Stars: ✭ 21 (-98.45%)
Mutual labels:  music-theory
NegativeHarmonizer
A python tool to invert the tonality (a.k.a negative harmony) of midi notation
Stars: ✭ 23 (-98.31%)
Mutual labels:  music-theory
jupyter boilerplate
Adds a customizable menu item to Jupyter (IPython) notebooks to insert boilerplate snippets of code
Stars: ✭ 69 (-94.92%)
Mutual labels:  sympy
Note-Art
🎸 Music Theory in Code.
Stars: ✭ 25 (-98.16%)
Mutual labels:  music-theory
react-orchestra
A declarative toolbox to build interactive musical instruments on web and mobile.
Stars: ✭ 72 (-94.7%)
Mutual labels:  music-theory
Modulo7
A semantic and technical analysis of musical scores based on Information Retrieval Principles
Stars: ✭ 15 (-98.9%)
Mutual labels:  music-theory

PyTheory: Music Theory for Humans

This (work in progress) library attempts to make exploring music theory approachable to humans.

logo

True Scale -> Pitch Evaluation

>>> from pytheory import TonedScale

>>> 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

Audibly play a note (or chord)

>>> from pytheory import play
play(c_minor[0], t=1_000)

Chord Fingerings for Custom Tunings

>>> from pytheory import Tone, Fretboard, CHARTS

>>> tones = (
...     Tone.from_string("F2"),
...     Tone.from_string("C3"),
...     Tone.from_string("G3"),
...     Tone.from_string("D4"),
...     Tone.from_string("A5"),
...     Tone.from_string("E5")
... )

>>> fretboard = Fretboard(tones=tones)
>>>
>>> c_chord = CHARTS['western']["C"]

>>> print(c_chord.fingering(fretboard=fretboard))
(0, 0, 0, 3, 3, 3)

It can also generate charts for all known chords for any instrument (accuracy to be determined!).

🍰

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].