14 ms·
I don’t want to minimize any of the work being put into this, which is clearly not a trivial amount, and is actually quite interesting and useful for learning p
by r-w 8y ago
I don’t want to minimize any of the work being put into this, which is clearly not a trivial amount, and is actually quite interesting and useful for learning purposes. That being said, I have some blunt criticism to offer that I hope provides some context as to what kind of tooling is useful in this space:
I’m not sure I would prefer this over a different (probably visual) tool that facilitates, e.g., ensuring that a given set of notes fits into a measure, or checking which notes are played simultaneously. It also frustratingly does not take advantage of any of Clojure’s functional affordances, such as the ability to transform data programmatically, and does introduce global state, harkening back to C’s misplaced notion of “macros”. Not much here seems Clojure-specific other than the sometimes confusing dynamic behavior, such as implicit list interpolation, and JS interop. All that said, I hope this becomes more than just a Lisp-based clone of an existing format with mature tooling: http://lilypond.org/text-input.html http://lilypond.org/text-input.html
- gw 8y agoYou actually have full access to ClojureScript functions, including all data transformation functions. I just didn't make use of them in any of the posted midis. Also i have no idea what global state you are talking about.
- gw 8y agoHere is an example that uses functions: https://midibin.com/midi/11 https://midibin.com/midi/11