Skip to main content

No project description provided

Project description

Concordia: Music Generation Using An SMT-based Harmony Solver

img-verification

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

img-verification

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

concordia-harmony-1.0.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

concordia_harmony-1.0.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

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

Hashes for concordia-harmony-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a8828ddac887879f0951242ac6431ed317c157cd038772662d4f0357e6f35408
MD5 35b3ca8245c998931e442debffb27bdf
BLAKE2b-256 001b75413c82aaf956a50fb7d584ac372b626b8a6dbaaad5a217b2bc45c4fbaa

See more details on using hashes here.

File details

Details for the file concordia_harmony-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for concordia_harmony-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eea27b66537b6b1df2ea4b86228939f5ab72965282976d08b271405bb14f9042
MD5 86cef942321b283fb1406147abcce49e
BLAKE2b-256 bdea1c82880a808d5cb660d61d256b9f552168c9d1741b9d547ae3d1ca6f9f9a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page