A Python library and framework for composing and playing music.
Project description
Pitchr
A python library and framework for composing music. Pitchr on PyPI
Targets most Linux environments.
Features
- Enables creation of music by composition of music objects (notes, chords, measures, and staffs)
- Unified interface for playing any music object (
note.play(),staff.play()) - Unified interface for showing any music object (
note.show(),staff.show())
- Spawns an image of the music object
- Unified interface for exporting any music object (
note.save('note.pdf'),staff.save('staff.pdf')) - Flexible manipulation of music
- easily access notes by indexing a measure by beat:
note0 = measure[0] - edit note attributes' pitch via methods
transpose,octave_up,augment
- Intelligently generates harmonies from your melodies
- Finalizes your composition as beautiful standard sheet music
- Enables interactive development in Jupyter Notebook
Installation
To install: pip3 install pitchr.
Other dependencies that must be installed (available via your package manager):
- python3-dev
- libasound2
- lilypond
Documentation
Documentation is hosted on Github Pages here
Getting Started
from pitchr import *
# Instantiate notes
n = Note(pitch='C4', duration=1.0)
# Play them
n.play()
# Write music
m = Measure([
Note('C', 1.0),
Note('D', 1.0),
Note('E', 1.0),
Note('D', 1.0),
])
# See what you've written
m.show()
# Export to PDF
m.save('MySong.pdf')
Helper UI
To access the helper UI, run from the command line: python3 helper.py
More Detailed Notes
Note() class
Init:
pitch("C#6")durationin beatsdynamic(piano, forte, crescendo)articulation(staccato, accent, fermata)
Note()
from pitchr import *
note1 = Note("C4", 1, "forte")
note1.mingus_note # 'C-4'
note1.duration # 1
note1.dynamic # "forte"
note1.augment() or note1.diminish()
Chords
note2. = Note("E4", 1)
chord1 = Chord([note1, note2])
chord1.determine() # "Major third"
Measure is a collection of Notes
measure1 = Measure([note1, note2])
measure1.contains(note1) # True
measure1.append(note3)
Staff is a collection of Measures
Init:
measuresclefvoicehttps://thedpws.github.io/pitcher/
staff1 = music.Staff(measure1, Clef.TREBLE, Voice.PIANO)
Part is a collection of Staffs
part1 = Part(staff1, tempo, time_signature, key_signature)
part1.add_staff(staff2)
part1.time_signature = 3/4
Score is a collection of Parts
score1 = Score("My Song", "Wonderful Subtitle", "Author Me", "me@email.com")
score1.get_author() # "Author Me"
score1.get_title() # "My Song"
score1.add_part(part1)
Harmony generation
from pitchr.harmony_maker import build_harmony
my_melody = Staff(my_measures)
my_harmony = build_harmony(my_melody)
my_harmony.play()
Running all Pitchr tests
./run_pitchr_tests.sh
Contributing
Setting up dependencies
- python3.8 is required for pitchr and python3 should link to python3.8 to run the tests
ln -s /usr/bin/python3.8 /usr/bin/python3- To create the virtual environment,
cdinto the project directory andpython3 -m venv env - To install dependencies to the virtual environment,
source env/bin/activate && pip3 install -r requirements.txt - Install these dependencies using your local package manager (ex.
sudo apt install python3-dev python3-venv libasound2 libasound2-dev lilypond):python3-devpython3-venvlibasound2libasound2-devlilypond
Working on the project
- Before working, activate the environment by
source env/bin/activate - Deactivate by
deactivate
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 pitchr-1.0.1.tar.gz.
File metadata
- Download URL: pitchr-1.0.1.tar.gz
- Upload date:
- Size: 29.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0f2af3b4586fdcc52cde10df4387f77003a8efb935c11fe3fafe6489b680bbc
|
|
| MD5 |
1c74290d922e87fabeb38e2f8c82b47c
|
|
| BLAKE2b-256 |
9760233f735d895043e093bdd30e7498bd98b3c39175a70f1e0d2d7479a0ee37
|
File details
Details for the file pitchr-1.0.1-py3-none-any.whl.
File metadata
- Download URL: pitchr-1.0.1-py3-none-any.whl
- Upload date:
- Size: 47.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de005423edaf819cba682a2bc06ecf8d9bd16293c4dfd02962ecd0d1c7aa02b6
|
|
| MD5 |
74311aa3cfb621f89d2077263fed56bc
|
|
| BLAKE2b-256 |
1e6e224cc44e7a808e8df26552680b0401e625610cc452931a4038468e464fc3
|