tonal
node-music-theory
tonal | node-music-theory | |
---|---|---|
11 | 1 | |
3,709 | 12 | |
25.9% | - | |
7.3 | 10.0 | |
16 days ago | about 6 years ago | |
TypeScript | Max | |
- | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
tonal
-
Tonal.js: Functional music theory lib
They're using objects, including arrays [1], so I think they would have been more precise to say that they're using objects and arrays as simple data structures rather than using OO features like inheritance and mutation.
[1] https://github.com/tonaljs/tonal/blob/main/packages/chord/in...
-
What is this scale called?
It's not on this list, but it's a cool list to check out either way
-
What is your must have npm package on any given project?
I'm working on a music project and both tonejs and tonal are incredible projects.
-
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.)
-
Scales - Practise all of them, or just a few each day?
There are many hundreds of scale types, here's a list of many of them and that's just a single key. Let's say there's 200 scales times 12 for each key, that's 2400 times up and down the piano. There are actually much more than 200 scales though!
-
I want to use this module in my code but can't figure out how.
I found a module that is perfect for what I'm trying to create, (a simple piano that you can select keys on to find out which chord it gives), and am trying to use https://github.com/tonaljs/tonal .
-
Anyone know of a music theory library for C#?
Agree with the representation, you can really bury yourself in complexity if you're not careful. Have you taken a look at any of the JS libraries like tonal or MusicTheoryJS?
- Max 4 Live, or standalone Max 8?
-
Humble beginnings of my first open source npm package: The Music Builder
Here's how tonal.js does it: https://github.com/tonaljs/tonal/tree/master/packages
-
Do you want to learn music theory?
For the music theory stuff I'm using TonalJS along with my own extensions
node-music-theory
-
Coltrane: A music theory library with a command-line interface
> 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.
What are some alternatives?
remeda - A utility library for JavaScript and TypeScript.
chords2midi - Create MIDI files from numerical chord progressions!
html-midi-player - ð¹ Play and display MIDI files on the web
textbeat - ð¹ plaintext music sequencer and midi shell, with vim playback and the powers of music theory ð¥
octave-compass - A tool for exploring musical scales and chords
glicol - Graph-oriented live coding language and music/audio DSP library written in Rust
musescore-theory-plugins - A collection of MuseScore plugins that check species counterpoint, 4-part chorales, intervals, and chords and can automatically create interval and chord ID worksheets.
Coltrane - ð¹ðžA music theory library with a command-line interface
minimoon - Cross platform music player.
trane - An automated practice system for mastering complex skills
iter-ops-extras - Custom operators for iter-ops
ableton-js - Control Ableton Live with Node.js