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-0.1.5.tar.gz (5.2 kB view hashes)

Uploaded Source

Built Distribution

concordia_harmony-0.1.5-py3-none-any.whl (6.2 kB view hashes)

Uploaded Python 3

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