Skip to content

p3zo/chord-progressions

Repository files navigation

Chord Progressions

PyPI Latest Release

A library for working with chord progressions.

Installation

pip install chord-progressions

Usage

See documentation at https://p3zo.github.io/chord-progressions.

Development

Configuration for local development with Docker is provided. Run make build to build the container, make shell to get a shell inside of it for ad-hoc usage, and make test to run all unit tests inside the container. See the Makefile for all available actions.

To upgrade the version and trigger a new release, use bump-my-version bump minor chord_progressions/__init__.py.

The documentation uses Material for MkDocs to build a static site from Markdown files. Use mkdocs serve to start a live preview server of the site that automatically rebuilds upon saving. Build the site with mkdocs build and deploy with mkdocs gh-deploy.

TODO

Analysis

  • [feature] get key for progression
  • [feature] get functional names for chords given key
  • [feature] extend interval class vectors to "polychord content" vectors

I/O

  • [performance] extract.midi_harman.segment_and_label() is slow for many consecutive segments. test that a maximum of six segment evaluations occur per note

Misc

  • [feature] Generalize noteNumberToFrequency to use any periodic tuning ( see https://github.com/soul-lang/SOUL/pull/26/files)
  • [feature] implement is_partial_circular_match, chord_contained_in_type, and get_possible_types_of_chord
  • [maintainability] mk pitch_class refer to "C" and call 0 pitch_class_ix
  • [maintainability] pass midi note numbers everywhere as "notes" and include note names as "noteNames"
  • [maintainability] test the merging of chord types
  • [maintainability] github action to build & deploy docs