Table of Contents
- How to Run
FourVoices is an automatic music generator for four-part writing (Soprano, alto, tenor, bass).
For a description of the capabilities of FourVoices, including instructions on how to use it, please read the FourVoices Wiki.
This software is particularly useful for music theory students, eg for four-part writing homework assignments.
- Automatic generation of correct four-part harmonizations
- Specify lines for each singer, eg provide the soprano line, and have the FourVoices fill in the rest of the voices.
- Chord modifiers: major/minor, seventh chords, diminished.
- User interface, as well as a command-line interface
- Audio playback
- Export vocal parts to PDF (Coming soon...)
FourVoices is an open source project: GNU GPL (ver3) license.
FourVoices is on GitHub: https://github.com/erickim555/FourVoices
Tested on Windows 7, Ubuntu (12.04).
- Python 2.6.4/2.7.2: Python
- python-tk (Unix: sudo apt-get install python-tk)
First, clone the FourVoices repo into your desired location, ie:
cd some/location git clone https://github.com/erickim555/FourVoices.git .
Then, install the reqiured dependencies. I recommend using a virtualenv to help make dependency management cleaner:
# install Tkinter (Python UI library) sudo apt-get install python-tk # install virtualenv (if you don't already have it) pip install virtualenv # create virtualenv at FourVoices/venv/ cd FourVoices virtualenv venv # enter virtual environment source venv/bin/activate # install Python dependencies pip install -r requirements.txt
Now you're ready to run FourVoices!
4. How to Run
If you're in Windows, double-click the
If you're in Unix, simply do:
There is also a command-line interface (CLI) available in the
cd core/ python solver.py PROBLEM
PROBLEM is the path to a harmonic problem - see
for an explanation on the file format.
core/tests/ contains example harmonic problems.
You can reach erickim555 either by messaging me via GitHub:
Or by e-mailing me at:
FourVoices was originally written by Eric Kim in Winter 2009 while he was an undergraduate at the University of California, Berkeley. An avid musician and composer, Eric was inspired to merge his love for music with his passion for computer science after taking an Artificial Intelligence course (cs188). Recognizing that the rules of four-part writing can be easily expressed as a constraint satisfaction problem, Eric spent the winter break hacking together a four-part generator featuring a user interface.
FourVoice is powered by a Constraint Satisfaction Problem library written by Gustavo Niemeyer: Python Constraint