Skip to content

duncanmalashock/elm-music-theory

Repository files navigation

elm-music-theory

A toolkit for musical ideas

This package allows you to work with concepts in tonal music like pitches, intervals, chords, keys, and scales. You can use it to analyze music, generate musical structures, and solve musical problems like harmonization and counterpoint.

It is built with these goals in mind:

  1. Model musical concepts and their interactions accurately and coherently.
  2. Use ideas and processes that are familiar to practicing musicians.
  3. Apply broadly across musical idioms.

Examples

Source code for these examples can be found in the /examples directory of this repo:

  • "Lead Sheet" (View live example) - Convert a chord progression into Roman numeral analysis, and transpose it into any key.
  • "Chord Voicings" (View live example) - Choose a chord and a method for voicing it. See it notated, and hear the result.

Learning resources

New to music theory? I can recommend these resources:

Free, online

Books

Contributing

Interested in contributing to this project? Please take a look at the contributing guidelines for this repo for ways to do so.

Special thanks

Thanks to Leif Battermann (@battermann) for collaborating with me on early versions of some of the designs that are central to this package.

Thanks to my friend and colleague Matthew Griffith (@mdgriffith) for his advice and encouragement. This package was designed better (and released sooner) because of him.