4 ms·
Ask HN: Music Processing Pipeline?
I had the thought today that music effects processing has a model similar to a functional programming or a unix pipeline. (inputs passed through filters or transforms).
Does anyone know of a library that would allow one to compose music in this paradigm?
What I'm thinking of is something that would let you define a sequence that represents the notes, and then send them through/apply effects to that sequence before they are output.
example:
given a forward pipe operator |> in Haskell or Ocaml/F#: f |> x = x f (similar to a Unix | in operation)
where notes are represented somehow textually as a sequence (maybe letter and number for octave?)
something like:
[4a, 4b, 4c, 3g#, 3d, 4a, 4f] |> high_pass_filter |> phaser |> output
I have no idea if this exists, but think it might be an interesting way to compose music. If anyone knows of library/application/language that works something like this, I'd be interested to hear.
- retroafroman 16y agoThis is an interesting concept. I've never thought of using Unix pipes style text syntax for musical effects. I know that some of the visual music programming environments work in a similar fashion, where effects are defined and then linked together in chains (see Supercollider or PureData, both open source). Perhaps some of the livecoding musical langauges work similarly, I haven't dived in to see how the syntax on them functions (like Impromptu http://impromptu.moso.com.au/ http://impromptu.moso.com.au/). Keep us updated if you make anything cool in this space.
- jonjacky 16y ago'Functional music composition' is chapter 20 in the book 'The Haskell School of Expression: Learning Functional Programming Through Multimedia' by Paul Hudak.
- sea6ear 16y agoThanks, I think I have that book, I'll try to find it in my stacks and take a look at that chapter.
- altrus 16y agoHave you read about ChucK? It's a real time language for synthesis, composition, and audio programming. The name of the program comes from their 'chuck' operator, which works similarly to what you've described. If you look at the wikipedia page, it looks exactly like what you are proposing - I was looking to use it myself for a different project involving music analysis. http://en.wikipedia.org/wiki/ChucK#Code_example http://en.wikipedia.org/wiki/ChucK#Code_example http://chuck.cs.princeton.edu/ http://chuck.cs.princeton.edu/
- sea6ear 16y agoThis looks very similar to what I was thinking about. I'll take a look at this.
- zck 16y agoYou might want to check out the custom DSLs made by livecoders. There's an old Wired article about them (http://www.wired.com/science/discoveries/news/2006/07/71248 http://www.wired.com/science/discoveries/news/2006/07/71248), and this is a livecoding wiki: http://toplap.org/index.php/Main_Page http://toplap.org/index.php/Main_Page . I can't find it now, but I recall seeing a really in-depth Lisp language for livecoding. There are screencasts you can check out.
- Loginid 16y agoCsound works similarly to this http://en.wikipedia.org/wiki/Csound http://en.wikipedia.org/wiki/Csound