Our great sponsors
-
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.
-
textbeat
ð¹ plaintext music sequencer and midi shell, with vim playback and the powers of music theory ð¥
-
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.
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.)
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.
My text-based music sequencer has some music theory support and it also has a REPL:
https://github.com/flipcoder/textbeat
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.
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.)
> 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.