Ask HN: Music Processing Pipeline?

6 points by sea6ear ↗ HN
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.

7 comments

[ 3.2 ms ] story [ 29.6 ms ] thread
This 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/).

Keep us updated if you make anything cool in this space.

'Functional music composition' is chapter 20 in the book 'The Haskell School of Expression: Learning Functional Programming Through Multimedia' by Paul Hudak.
Thanks, I think I have that book, I'll try to find it in my stacks and take a look at that chapter.
Have 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://chuck.cs.princeton.edu/

This looks very similar to what I was thinking about. I'll take a look at this.