16 ms·
Coltrane: A music theory library with a command-line interface
- ofalkaed 4y agoI don't think I could call this theory but it is useful.
- deleted 4y ago[deleted]
- jameshart 4y agoIt is a tool for doing music theory things. If someone showed you a slide rule and said it was for ‘engineering’ would you say ‘well it doesn’t really do engineering’?
- ofalkaed 4y agoIt is a chord and scale library and does not show how those things relate or present them in a way conducive towards study of that. If you know how the information this app provides is related then you probably do not need the app for theory. Theory is not memorization of chords, scales and progressions; theory shows you how to construct those things so you do not need to memorize everything. A slide rule would be more analogous to a musical instrument. If you want an analogy between this app and engineering in the slide rule days, it would be closer to a pocket sized reference book of log tables and formulas.
- xhevahir 4y agoSo you're saying this thing doesn't teach theory. Fine. But I don't think it claims to do so.
- ofalkaed 4y agoI did not say that at all. This programs relation to theory is about the same as the relation between numbers and calc, while numbers are very important to calc you are not learning or using calc by using numbers, there is a hell of a lot more to it.
- seanyeh 4y agoI sort of see where you are coming from, but "music theory" is the standard accepted term for this general field of study, which includes the fundamentals (notes and chords and more). source: used to teach music theory at the university level
- ofalkaed 4y agoThe accepted term for this would be method, learning by doing which is the opposite of theory but generally provides part of the foundation for learning theory. Learning by method is the way the vast majority learn to play and write music and really is all most people need or want. Theory is not of much use for most musicians, a concept of key (intuitive or literal) and what works with a key is all they need. How instead of why. Perhaps this is being pedantic but these sorts of distinctions are fairly important, understanding what you do and do not know will make you more effective at learning and help you identify what is of use for you to learn. As someone who taught this stuff you should know that the ones who are most difficult to teach are the ones who think they already know.
- FigurativeVoid 4y agoI have been looking for something like this for a while! Super cool. And in ruby. The language of my heart.
- madwebness 4y agoThis shouldn't be free, I'd pay $500 for such a thing. UPDATE: Why? Because it's got all the features without the abuse of the various websites and apps spread out and containing just some of those features. Let alone captchas and Cloudflare and ads.
- oh_sigh 4y agoYou could always donate $500 to him. And if he won't take it, you could pay a freelancer $500 and task them with tackling some of the open issues that are present in the tracker.
- madwebness 4y agoI don't particularly believe in donations, but I think there's a better way. I will certainly be reaching out to the author.
- latexr 4y ago> And if he won't take it, you could pay a freelancer $500 and task them with tackling some of the open issues that are present in the tracker. Might be relevant: https://github.com/pedrozath/coltrane/issues/57 https://github.com/pedrozath/coltrane/issues/57
- LegitShady 4y agowhat would you use it for?
- feanaro 4y agoExperimentation and visualization when practicing an instrument, composing, improvising.
- gpvos 4y agoBut still, what is the problem with it being free?
- kettunen 4y agoThis is very cool! Sometime ago I ended up starting a similar project in Common Lisp, but then life happened and it has stayed as WIP for quite a while already... Maybe now I don't need stress about finishing it since this seems quite handy!
- gusmd 4y agoThis is awesome! I've been using https://jguitar.com/ https://jguitar.com/ for quite some time, specially the scales portion of it. I'll give this a try!
- Mizza 4y agoLooks awesome, love the tab view. If there other hackers who make music here, I wrote this: https://github.com/Miserlou/chords2midi 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.
- scns 4y agoAwesome! Please do a Show HN when the plugin is done.
- ck45 4y agoThis looks really awesome! Do you know https://www.mellowood.ca/mma/ https://www.mellowood.ca/mma/ and if yes, do you mind doing a short feature comparison? Edit: I just checked if it's worth submitting, but it has already been submitted: https://news.ycombinator.com/item?id=30903980 https://news.ycombinator.com/item?id=30903980
- Mizza 4y agoWow, never seen that before. This seems more like a whole plaintext musical language, like mma is to midi what markdown is to HTML. Mine is just a way for somebody in a hurry to get the MIDI chords they want without putting all of the notes in manually.
- grubby 4y agolol they didn’t have pytest in 1765?
- Mossly 4y ago"Gradus ad Parnassum" by Johann Joseph Fux, right? Read it a couple of years ago after learning basic music theory, as I was still struggling to write consonant voices. I probably wasn't the first person to think that contrapunctual rules might lend themselves to algorithmic implementation - so it's very cool to see you've done just that in your project!
- thanatropism 4y agoI don't understand what this has to do with "music theory", but the comment section seems to find it useful. Qapla'!
- tincholio 4y agoRepeating a recent comment on another music-related link. I've recently come across the Humdrum [0] toolkit, which does a bunch of related stuff, in very interesting ways. Coltrane looks awesome! I'll have to delve into this :D [0] https://www.humdrum.org/ https://www.humdrum.org/
- originalcopying 4y agoI'm on a (possibly multi-)lifetime quest to understand this better. all of what this music library does comes out of the concept of the music keyboard, which is (in my head) the same as the 12-note "meta"-scale which is a system that enables 12 different version of 7 note scales. in this view, a scale does not begin in any specific note; this perspective of "scale" goes beyond the typical music theory view. understanding 'scales' like this implies that the major and minor 'scales' are the same 'scale'. I should choose another vocabulary term for this quasi-scale idea (semiscale?)
- cka 4y agoIn your third paragraph, I think you're talking about modes: https://en.m.wikipedia.org/wiki/Mode_(music) https://en.m.wikipedia.org/wiki/Mode_(music)
- rdlw 4y agoIf you are talking about a set of seven notes, that is not a scale. C and Am have the same notes, but a different tonic, but they are different scales, so a scale is defined by the notes it contains and the mapping of scale degrees to those notes. What you are describing, seven notes that do not 'start' anywhere, is the set of all scales that are enharmonic with a given scale, meaning they have all the same notes. These scales are said to be relative to each other: Am is the relative minor of C. I think what you're trying to get at is that when you don't consider any note to be the tonic, and play freely in a set of seven notes, you can play more expressively. If you change the tonic without changing the notes in the scale, you are now playing in a different mode. For example, if you started in C, playing the notes CDEFGAB, you are playing in C Ionian (much more frequently just called C Major). If you change the tonic to A, the scale is now ABCDEFG, or A Aeonian (much more frequently just called A minor). Now if you change the tonic to D, the scale is DEFGABC, or D Dorian.
- originalcopying 4y agoyea, but for some reason I don't think I could explain very well (which is a problem), I am trying to somehow consider all those 7 notes (and their 7 modes) as the same 'scale'. As I said, I need to find another term to refer to this way to consider the intervalic structure as if it were one thing. Essentially I'm trying to grab a 'scale' and combine it with all it's conjugate words (or circular shifts) [1,2] and I don't know what to call this thing but I'm interested in it. Why? because of how I choose to understand the origin of the 7 note major scale: you take any note (the base tone) and multiply the frequency by 3. this creates a fifth (plus one octave). I'll keep in mind that 'the octave' is defined by multiplying the frequency by 2. then, fit the fifth (base tone * 3) into only one octave (3/2). And repeat 'recursively'. This is the famous circle of fifths, but we all knew that. Finally, after twelve repetitions we're back on the same note, but an octave above. (but why? why stop at twelve? I'm still working through this answer, but it has something to do with convergence maybe? or just the fact that after 12 notes we have now landed within two notes which we 'found' already???) With this in mind, we have two different ways to sort all notes. Sequentially within a single octave, like on the piano or a guitar. Or in the way which we generated them out repeating 3/2. If we only did 7 notes (instead of 12) we would get these two ways to sort: ABCDEFG;ABCDEFG; ABC...there are 8 octaves in a piano CGDAEB... F# C# .... C I just cannot yet get over the fact that this is not a conjugate (not a circular shift) but a full on permutation, a shuffling of the notes. By this point, it should be apparent that the labels we use for the notes are but a minor detail. I'm trying to abstract all this away from the ultimately arbitrary names of the notes. ...I can keep going. this is just part of the setup. when this starts to get interesting is when I go on to consider the rhythmic aspect of music using similar symbolic tools; but in a subtly different way. As I said upthread, I've been thinking about this stuff for a while now, and it adds up. All this because I still do not understand (to my own satisfaction) what's going on with the 12 note system, up to which extent and how does it do? what I (almost but not quite) understand to happen with 7 notes and major/minor/other modes scales. [1] https://en.wikipedia.org/wiki/Free_monoid#Conjugate_words https://en.wikipedia.org/wiki/Free_monoid#Conjugate_words [2] https://en.wikipedia.org/wiki/Circular_shift https://en.wikipedia.org/wiki/Circular_shift
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- flipcoder 4y agoMy text-based music sequencer supports some music theory concepts and also has a shell: https://github.com/flipcoder/textbeat https://github.com/flipcoder/textbeat
- marai2 4y agoDoes anyone have recommendations for music theory from complete basics? Like I don't even know what a pitch is, what a tone is? Any recommendations would be much appreciated - books, videos, tutorials?
- ck45 4y agohttps://www.youtube.com/@GracieTerzian https://www.youtube.com/@GracieTerzian is a really good teacher.
- petercooper 4y agoYes, Rick Beato. He covers all sorts of stuff to different extents. Like music theory in ten minutes: https://www.youtube.com/watch?v=mWpXy57-mvc https://www.youtube.com/watch?v=mWpXy57-mvc .. but he has hundreds of videos on keys, modes, analyzing popular music, the works. If you really know nothing you might enjoy this attempt at explaining harmony at five different levels from a child to Herbie Hancock: https://www.youtube.com/watch?v=eRkgK4jfi6M https://www.youtube.com/watch?v=eRkgK4jfi6M
- lst68 4y agoRick Beato also has a book and interactive courses that are on sale at the moment: https://rickbeato.com/ https://rickbeato.com/ (I have bought the bundle, but I haven't had time to check it out yet.) An other useful channel I can recommend is https://www.youtube.com/@DavidBennettPiano https://www.youtube.com/@DavidBennettPiano
- gramie 4y agoDon't feel rushed, Rick's content is always on sale. I don't have first-hand knowledge, but have read some criticisms that the "Beato Book" is not always coherent or well organized. That said, I believe he has recently made substantial revisions, and added a lot of on-line content. Probably not the worst way to spend ~$100!
- ofalkaed 4y agoA teacher is by far the best way to go, failing that The Complete Musician is the best book/source I have seen for self study. The problem with self study is that the basics of harmony/triads seems very simple and people plow through it and think they understand than get completely stuck. Everything is built on harmony and if you do not understand it you will not progress. If you go with self study remember that if you are stuck it means you did not understand what came before, go back and figure out what you missed, which is where a teacher is very handy since they will have a much better idea about what you missed than you do.
- college_physics 4y agoIts a very cool project but as I have seen some other cool efforts as well, I feel that the domain of "open source computer-assisted music theory tools" is quite fragmented and people must reinvent wheels. I wonder if we could imagine some sort of community project that abstracts certain music related objects (scales, chords) and representations and allows e.g. CLI or web-based rendering using possibly different stacks, interfacing with musicxml, lilypond etc. Something like the "Grammar of Graphics" but for Music Theory
- follower 4y ago> 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/518babe7a71442001c76ebd4dcbb423372de17fe/node_modules/tonal-dictionary/data/chords.json https://github.com/Cycling74/node-music-theory/blob/518babe7... * https://github.com/Cycling74/node-music-theory/blob/518babe7a71442001c76ebd4dcbb423372de17fe/node_modules/tonal-dictionary/data/scales.json 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/518babe7a71442001c76ebd4dcbb423372de17fe/node_modules/tonal-distance/README.md 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/518babe7a71442001c76ebd4dcbb423372de17fe/node_modules/tonal-scale/index.js#L95-L116 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. Edit #1: > and representations. In relation to the aspect of representation, my recent explorations introduced me to the following projects which might also be of interest to you or others: * MNX - "representing music notation as machine-readable data" (intended as improvement of MusicXML): https://w3c.github.io/mnx/docs/ https://w3c.github.io/mnx/docs/ * Standard Music Font Layout (SMuFL): https://w3c.github.io/smufl/latest/index.html https://w3c.github.io/smufl/latest/index.html * Verovio - "music notation engraving library": https://www.verovio.org/ https://www.verovio.org/ FWIW my experience with SMuFL & its reference font(s) "Bravura" and "Bravura Text" (https://github.com/steinbergmedia/bravura/releases https://github.com/steinbergmedia/bravura/releases) was...mixed. Primarily because the emphasis (& use/testing) really does seem to be on the use of "Bravura" within notation software rather than "Bravura Text" which is intended for use in e.g. text editors. But, for example, it is "Bravura Text" that (seems to) offer the inviting niceties of easy Unicode-based combining of head + stem + flag and/or vertical placement of notes on a stave. Until, for example, you want to use one of the "note name" heads and discover that (a) they don't work with the stem/flag combining characters; and, (b) they're 7-10% larger in size than the default note heads. Or, you find that the "latest" v1.380 "release" actually seems to be missing the entire ligature table that makes the vertical positioning feature work and you actually need to use the unlinked two year-old v1.392 "pre-release" instead. (And that seemingly all the other "Text" variants of "SMuFL-compatible" fonts don't actually include any of the niceties that make it appealing.) Err, excuse the rant, the wound might still be a little bit raw. :) Anyway, hope some of this might be useful. Edit #2: Meant to add that, in my case[0] at least, I think it would have been better to initially make use of the standard Unicode Music Symbols block (https://en.wikipedia.org/wiki/Musical_Symbols_(Unicode_block) https://en.wikipedia.org/wiki/Musical_Symbols_(Unicode_block...) via Noto Sans (https://fonts.google.com/noto/specimen/Noto+Music https://fonts.google.com/noto/specimen/Noto+Music) rather than deal with a SMuFL-compatible font. [0] A 7-day game jam entry created with Godot 4: https://rancidbacon.itch.io/stave-off https://rancidbacon.itch.io/stave-off
- tmountain 4y agoAs a journeyman jazz guitarist and music theory enthusiast, I can’t wait to check this out!
- soperj 4y agoI love this, I just wish I could change the tuning of the guitar, since I mostly play not in standard tuning.
- ksherlock 4y agoI know jazz guitarists have double jointed, mangled hands but most of those generated guitar chords fingerings are, well, let's just say not traditional.
- huimang 4y agoI must be the only one here who downloaded it to try it out, because none of the commands work. See issue#56, I just get "abnormal end". It also hasn't been updated since 2021. The chords for guitar also are weird. It doesn't seem to be using traditional shapes, but is looking for available notes within a fret range. Which leads to difficult, basically unusable fingerings. The other functions would be very useful to have, if it worked. Maybe one day I'll write a similar CLI tool.
- cyberbanjo 4y ago$ bundler $ ./bin/coltrane ? Welcome to Coltrane 4.1.1 (You chose: notes) ? Which notes? > C E D F G A ? How to display? (You chose: Guitar) -> coltrane notes notes:C-E-D-F-G-A representation:Guitar [[ omitted ]] ? What to do now? (Choose with ↑ ↓ ⏎, filter with 'f') > 1. Different notes 2. Different representation 3. Go back
- mastazi 4y agoI don't really remember much about Ruby and I'm having a hard time $ bundler [... many packages listed ...] Using coltrane 4.1.1 [... some more packages ...] $ ./bin/coltrane zsh: no such file or directory: ./bin/coltrane $ gem which coltrane /opt/homebrew/lib/ruby/gems/3.2.0/gems/coltrane-4.1.1/lib/coltrane.rb $ /opt/homebrew/lib/ruby/gems/3.2.0/gems/coltrane-4.1.1/bin/coltrane Could not find [... many packages ...] Run `bundle install` to install missing gems. but I have just ran `bundler` above... help?
- trane_project 4y agoYeah. I really wanted to try it but I couldn't get the commands to work. All the issues seem related to another gem written by the same author, which has not been updated since around the same time. Not knowing ruby, I can't really invest too much time trying it to work. :<
- pedrozath 4y ago> because none of the commands work The Readme had some outdated information. Explained better on the issue https://github.com/pedrozath/coltrane/issues/56 https://github.com/pedrozath/coltrane/issues/56 > The chords for guitar also are weird. It doesn't seem to be using traditional shapes, but is looking for available notes within a fret range. Which leads to difficult, basically unusable fingerings. That's a design choice on this library. I tried to rely the least as possible on lookup tables, dictionaries, etc, leaving things to be discovered algorithmically instead. It is a difficult challenge, but for example if someone decides to use an entirely different tuning, the software will provide. The software might also find chords that you have never thought about. What has to be improved here is the sorting mechanism for guitar chords. > The other functions would be very useful to have, if it worked Just try running `coltrane` and test it interactively.
- lmpdev 4y agoIs there a way to automate piano voicings with this? Most good (especially jazz) pianists can easily find a simple (nice) sounding sequence of voicings for chords - is there an analytical/algorithmic solution for this?
- trane_project 4y agoCuriously 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/ 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.
- jrm4 4y agoInteresting. I wrote a silly little bash script that more or less did this, and then eventually realized I could do better for now by just printing out a bunch of blanks (keyboard) and making physical ones.
- trane_project 4y agoIt's just too much work. Just doing it in one key is a lot, and you have to do that twelve times (fifteen if you want to be thorough and include all the enharmonic keys). So I am glad someone seems to have done it all already in a command line tool that hopefully I can automate.
- jrm4 4y agoHa, I realized the way to make it "not" too much work is to only do them as I "need" them. E.g. Find song, do I have all those chords? No? Time to make a new one.
- bhrgunatha 4y ago> 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. My favourite practise tool is slightly more complex than flashcards (but could still be implemented as flashcards). It's better for playing but still works for rote memorisation. Randomly filled rectangular grids. They are incredible adaptable and very amenable to generating with scripts or small programs. e.g. notes of the A major scale: Shuffle the notes and make them into a grid (here is a 7x7 sample shifting each row 2 places - although any shift of 1 - 6 places would work.) C# G# A B F# E D E D C# G# A B F# B F# E D C# G# A G# A B F# E D C# D C# G# A B F# E F# E D C# G# A B A B F# E D C# G# Play the rows from left to right along each row. Then right to left. Plat the columns from top to bottom. Or reverse it. Snake along the rows top to bottom from left to right, then back right to left. Play the grid in a spiral. Clockwise, then the opposite way. Play diagonal slices rising or falling. Concentrate on the first notes in each row/column - play the mode starting from that note. Make it a cloze exercise by removing columns (or rows or just random notes) C# - A B - E - E - C# G# - B - B - E D - G# - G# - B F# - D - D - G# A - F# - F# - D C# - A - A - F# E - C# - The adaptability is really limited only by your imagination: e.g. Chords: Bm D Fdim C Dm G Am Fdim C Dm G Am Bm D G Am Bm D Fdim C Dm Name the notes, play them (frets 1-5 then frets 5-10), play the triads, inversions, arpeggios... Or the same idea but using roman numerals/nashville numbers and play them in different keys: iii V viio IV vi I ii
- bmitc 4y agoHow are those graphics output to the terminal? Is that a special terminal or a library helping with that?
- pedrozath 4y agoThey're just characters. There are characters in terminal fonts introduced decades ago that allow you to draw different shapes, such as ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ⬤ ┍━┯━┯━┯━┯━┑ ┍━┯━┯━┯━┯━┑ ┍━┯━┯━┯━┯━┑ ┍━┯━┯━┯━┯━┑ 3 │ ⬤│ │ │ │ 8 │ │ │ │ ⬤│ 3 │ ⬤│ │ │ ⬤1 │ │ │ │ ⬤│ ┝━┿━┿━┿━┿━┥ ┝━┿━┿━┿━┿━┥ ┝━┿━┿━┿━┿━┥ ┝━┿━┿━┿━┿━┥ 4 │ │ │ │ │ │ 9 │ │ │ │ │ │ 4 │ │ │ │ │ │ 2 │ │ ⬤│ │ │ ┝━┿━┿━┿━┿━┥ ┝━┿━┿━┿━┿━┥ ┝━┿━┿━┿━┿━┥ ┝━┿━┿━┿━┿━┥ 5 │ │ ⬤│ ⬤│ 10 │ ⬤⬤│ │ │ 5 │ │ ⬤│ ⬤│ 3 ⬤⬤│ │ │ │ ┝━┿━┿━┿━┿━┥ ┝━┿━┿━┿━┿━┥ ┝━┿━┿━┿━┿━┥ ┝━┿━┿━┿━┿━┥ 6 │ │ │ │ │ │ 11 │ │ │ │ │ │ 6 │ │ │ │ │ │ 4 │ │ │ │ │ │ ┕━┷━┷━┷━┷━┙ ┕━┷━┷━┷━┷━┙ ┕━┷━┷━┷━┷━┙ ┕━┷━┷━┷━┷━┙ It doesn't align perfectly here, but on terminal it does.
- bmitc 4y agoI thought that might be the case, but the alignment looked too good to me.
- pedrozath 4y agoHey there everyone. My name is Pedro and I'm the creator of the mentioned project. First of all, I'm really grateful for all the feedback, positive and negative, about my project. When I started this 6 years ago, I was teaching myself harmony. Writing a Ruby Gem was a way of making sense of all that and at the same time making what I consider "music calculations". A lot has happened since then. I've realized that while a Ruby gem might be cool for some applications, I really wanted to have something more visual and more inviting. Like an app. I have completed my (belayed) college degree on Graphic Design with my final project being this app's design. It's all ready. Now it's just a matter of finally implementing it. So I've been working, since around 3 years, on a multiplatform app. Possibly also a VST plugin version for DAWs. Thank you all for the interest on the Gem/CLI project however. It's not abandoned. Since many of you expressed interest on it, I'll take a look at the problems you reported. Certainly a way to install via homebrew would help I believe. It's 4 AM over here now so I better cut it here but will comeback later and maybe answer some of the individual messages.
- follower 4y agoRegarding 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-library 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.com/@pedrozath/so-i-wrote-a-library-to-help-me-compose-music-ddb4ae7c8227 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 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 https://rancidbacon.itch.io/the-conductor (For reasons far too convoluted to go into now.)
- shopaholicdiva 4y ago[dead]
- littlemiss 4y ago[dead]
- workofgood5 4y ago[dead]
- lusttforlife 4y ago[dead]
- inkandpaper 4y ago[dead]
- xoxogossip 4y ago[dead]
- luckylucy40 4y ago[dead]
- wanderlust02 4y ago[dead]
- vogueandvibes1 4y ago[dead]