No project description provided
Project description
Concordia: Music Generation Using An SMT-based Harmony Solver
Overview
Suppose you are composing some music. You have a beautiful melody, but you don’t know what chord progression to use. We propose Concordia, an SMT-Based harmony-solving framework that helps composers and songwriters brainstorm musical ideas and test them out right away. Given some constraints ahead of time (e.g. baseline, melody, which chord to use), Concordia will generate a harmony that satisfies the constraints. In the following sections, we will discuss the implementation of the harmony solver in more detail. This project made the following contributions:
- Describe how musical elements can be expressed as variables that an SMT-solver can understand.
- Provide an extensible framework for constructing constraints around musical constructs.
- Provide An open-source and easy-to-install implementation of the harmony solver, available on here on Github and as a package on PyPI. An quick demo can be found in
example.ipynb
.
Supported Constraints
Constraint | Description |
---|---|
Note specification | Use specific notes at a certain point in the harmony. |
Chord specification | Use a specific chord/chord type at a certain position in the progression. |
Chord set | Only use chords specified to compose the harmony. |
Voice range | Soprano cannot sing a really low note; some instruments can only play a small range of notes. |
Voice leading | You might want to restrict the max interval of a jump in the melody. |
Chord progression | Some chords typically do not proceed to some other chords. |
Idiomatic uses | Some music events happen with others (e.g. cadences, voice exchange). |
Architecture
Changes
To push an update to PyPI, first update the version number in pyproject.toml
, then push to GitHub.
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
File details
Details for the file concordia-harmony-1.0.0.tar.gz
.
File metadata
- Download URL: concordia-harmony-1.0.0.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8828ddac887879f0951242ac6431ed317c157cd038772662d4f0357e6f35408 |
|
MD5 | 35b3ca8245c998931e442debffb27bdf |
|
BLAKE2b-256 | 001b75413c82aaf956a50fb7d584ac372b626b8a6dbaaad5a217b2bc45c4fbaa |
File details
Details for the file concordia_harmony-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: concordia_harmony-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eea27b66537b6b1df2ea4b86228939f5ab72965282976d08b271405bb14f9042 |
|
MD5 | 86cef942321b283fb1406147abcce49e |
|
BLAKE2b-256 | bdea1c82880a808d5cb660d61d256b9f552168c9d1741b9d547ae3d1ca6f9f9a |