I'm not affiliated with that project, just find it fun. It's in Ruby btw, I'm not a Rubyist but when it comes to Vagrant and Sonic Pi that's the full extent of my Ruby usage.
You know, Sam Aaron, the guy who made Sonic Pi, actually started out making his music in Clojure before focusing on Sonic Pi. He's behind the pretty awesome Overtone library: https://github.com/overtone/overtone
David Cope used lisp for his 'Experiments in Musical Intelligence'. Lisp is very suited to this problem, and it's through his books that I first 'got' lisp (at the time, I was trying to do something similar in Java). Anyone interested in algorithmic composition should absolutely check out his work.
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
You 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.
13 comments
[ 3.8 ms ] story [ 37.8 ms ] threadAlso somewhat relevant though not in Lisp for anyone interested in programming music check out Sonic Pi:
https://sonic-pi.net/
I'm not affiliated with that project, just find it fun. It's in Ruby btw, I'm not a Rubyist but when it comes to Vagrant and Sonic Pi that's the full extent of my Ruby usage.
http://www.computerhistory.org/atchm/algorithmic-music-david...
http://artsites.ucsc.edu/faculty/cope/cmmc.html
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
It's essentially a synthesizer in a REPL + a multitude of other capabilities (sequencing, sampling, MIDI)