Coltrane: A music theory library with a command-line interface

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • Coltrane

    🎹🎞A music theory library with a command-line interface

  • Regarding the "Music Theory library" aspect, note that the CLI tool demonstrates use of the underlying Ruby library which has documentation here:

    * https://github.com/pedrozath/coltrane/wiki/Core-music-theory...

    Additionally, the author wrote a post about the motivation for creating the library but it's a little difficult to find via the (now broken) link in the README, so here is a direct link to the archived page on the Wayback Machine:

    * https://web.archive.org/web/20170714063625/https://medium.co...

    If anyone is interested in a similar music theory library for Javascript[0] I've had some success with this:

    * Tonal / Tonal.js https://github.com/tonaljs/tonal

    [0] Or, in a pinch, even with a Godot 4 web export as I did for my (very incomplete) "AI and Games" Game Jam entry: https://rancidbacon.itch.io/the-conductor (For reasons far too convoluted to go into now.)

  • chords2midi

    Create MIDI files from numerical chord progressions!

  • Looks awesome, love the tab view.

    If there other hackers who make music here, I wrote this:

    https://github.com/Miserlou/chords2midi

    for writing chord progressions on the command line. I use it for building progressions which I drag into my DAW. It has voice leading, which required me translating an algorithm from 18th century German musical textbook into Python. I don't speak German and there were no unit tests in the 1700s so I'm only fairly certain that it works properly.

    I will make a plugin version once ableton supports CLAP.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • textbeat

    🎹 plaintext music sequencer and midi shell, with vim playback and the powers of music theory 🥁

  • My text-based music sequencer has some music theory support and it also has a REPL:

    https://github.com/flipcoder/textbeat

  • glicol

    Graph-oriented live coding language and music/audio DSP library written in Rust

  • trane

    An automated practice system for learning complex skills

  • Curiously enough, I have been working on a project named after the same person (John Coltrane) as a way to help me practice music: https://github.com/trane-project/trane/

    I have been meaning to generate flashcards to teach you the notes of scales and chords so that I can have instant recall. It gets really annoying to not know them when improvising or composing. I have some basic courses, but I found the process a bit tedious, so I have been working on other courses and features instead.

    I am going to try to use this utility to help me generate the flashcards instead of writing my own logic. Hopefully it works well as it would save me a lot of time.

  • tonal

    A functional music theory library for Javascript

  • Regarding the "Music Theory library" aspect, note that the CLI tool demonstrates use of the underlying Ruby library which has documentation here:

    * https://github.com/pedrozath/coltrane/wiki/Core-music-theory...

    Additionally, the author wrote a post about the motivation for creating the library but it's a little difficult to find via the (now broken) link in the README, so here is a direct link to the archived page on the Wayback Machine:

    * https://web.archive.org/web/20170714063625/https://medium.co...

    If anyone is interested in a similar music theory library for Javascript[0] I've had some success with this:

    * Tonal / Tonal.js https://github.com/tonaljs/tonal

    [0] Or, in a pinch, even with a Godot 4 web export as I did for my (very incomplete) "AI and Games" Game Jam entry: https://rancidbacon.itch.io/the-conductor (For reasons far too convoluted to go into now.)

  • node-music-theory

    Node For Max Music experiments

  • > abstracts certain music related objects (scales, chords)

    I've been thinking about that again recently & attempting to resist both creating such an abstraction and re-inventing the wheel. :)

    The first format that came to mind for its cross-language potential was essentially "Music Theory expressed in JSON format".

    Yesterday I did another search for what current options there might be and after a very circuitous path ended up on an old version of the Tonal Javascript library I've already been using. :D

    Specifically:

    * https://github.com/Cycling74/node-music-theory/blob/518babe7...

    * https://github.com/Cycling74/node-music-theory/blob/518babe7...

    But the next abstraction level of associated "operations" (as documented by e.g. https://github.com/Cycling74/node-music-theory/blob/518babe7...) are still expressed in Javascript.

    My impression is that there are a few tensions that complicate the creation of a "universal" cross-language/tool solution:

    * Static vs dynamic storage/representation. e.g. Do you statically store the set of notes in a scale or store the intervals & the operation(s) needed to generate the result dynamically? e.g. https://github.com/Cycling74/node-music-theory/blob/518babe7...

    * Reuse vs reinvention (time taken): When starting out it seems the amount of Music Theory most people want to use & have encoded is quite small. So initially the time required to "re-invent the wheel" is quite small vs time required to find & use a common shared abstraction.

    * Reuse vs reinvention (knowledge gained): I know, for me, part of the motivation related to re-inventing the wheel is I also want to learn aspects Music Theory so I can understand/apply the knowledge in potentially non-programmatic contexts also.

    I do think there is value in having the knowledge encoded in some manner so it's at least available for re-use for those who want it.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts