top | item 6116347

The Haskell School of Music (2012) [pdf]

125 points| lelf | 12 years ago |cs.yale.edu | reply

26 comments

order
[+] thetwiceler|12 years ago|reply
This is by Paul Hudak, one of the creators of Haskell. I took one of his classes that corresponds with this book. This is how I was introduced to Haskell.

Now I'm hooked on Haskell! The book is a truly excellent introduction to Haskell, and I suggest that anyone who is interested read it. The book goes into some interesting topics, including proofs by computation and induction, UIs and functional reactive programming, and arrows. And it elegantly explains some of the advantages of functional programming and the Haskell language.

Just note that this book is a work in progress; he is always updating and modifying the book as he teaches the corresponding classes.

[+] gtani|12 years ago|reply
somewhat related: this paper describes the haskell innards of Chordify, a web service that annotates chord structures of songs from videos or sound clips

http://ismir2012.ismir.net/event/papers/lbd2.pdf

http://chordify.net/pages/official-launch-of-chordify/

______________

The reason i picked up the book: I was thinking whether it was possible to annotate just intonation from equal temperament, but I think that's a limitation of MIDI that it can't do that. Also, eagerly awaiting §11.4, "Soundness and Completeness of Music Algebras".

[+] tessierashpool|12 years ago|reply
I recently attended an academic workshop on algorithmic music in Common Lisp and wrote some relevant code in Clojure while there. A lot of people there had strong music theory backgrounds and were very interested in both alternate tunings and the "set theory" approach to pitch sets.

The good news is that with Overtone (the Clojure interface to SuperCollider) you can specify individual pitches rather than MIDI note numbers. People at this workshop who wanted to work with pitch sets or unusual tunings had to resort to controlling the pitch bend programmatically, which, while it certainly works, involves a lot more effort and results in less elegant code.

[+] zura|12 years ago|reply
I shared same excitements as other folks here, but soon after I started reading, I discovered that it is very daunting unless you already know the music theory. This is not explicitly mentioned in the foreword. Actually, I was hoping to learn music theory with this book, along with deepening and refreshing my Haskell knowledge.
[+] agumonkey|12 years ago|reply
I didn't read the haskell paper yet, but one talk about music and programming that I enjoyed a lot is 'functional composition' by chris ford, using clojure. http://www.youtube.com/watch?v=Mfsnlbd-4xQ

It simply groups and layers simple waves until he can describe a full theme. In case you didn't saw it and have 30 minutes of free time.

[+] rdouble|12 years ago|reply
It's a very nerdified take on music theory which is only popular with "computer music" researchers at universities. It would be a poor way to learn music theory in the way that musicians think about it.
[+] tessierashpool|12 years ago|reply
blatant self-promotion: I'm considering writing a book like this, as a product for sale, but using examples in Ruby, CoffeeScript, and Clojure (using Overtone, which is fantastic).

background: I just quite recently went to a two-week workshop on this topic at the University of Santa Cruz:

http://arts.ucsc.edu/programs/wacm

We were taught in Common Lisp but I did my projects in Clojure. The professors showed some amazing stuff, including very sophisticated harmonizers and counterpoint generators (e.g. Gradus Ad Parnassum in code, for those of you with a music theory background). I had the most hacker knowledge of anyone there, I think; most everyone else had a strong background in music but little or nothing in terms of code.

I also built a video series on making music with CoffeeScript and JavaScript, in 2012, and a very effective breakbeat improviser in Ruby, way back in 2008. I'm not 100% satisfied with the video series, but you can see it at singrobots.com if you're curious, and I did a presentation on the breakbeat improviser which was very well-received:

http://www.infoq.com/presentations/archaeopteryx-bowkett

Kind of ancient history, though, so this next thing is more up to date. You can see a kind of rave-o-matic bassline improviser in Clojure, which is to say Clojure/Overtone code which cooks up original syncopated basslines, on GitHub:

https://github.com/gilesbowkett/markov-bass-lines

That's one of the things I wrote at this workshop. If you're interested in this stuff I HIGHLY recommend attending next year (if they continue to run it!). I might go back for a second round myself. It was a phenomenal experience.

Anyway, to finish up that blatant self-promotion bit, if you're interested in a book like this, which you'd have to pay for, but which would give you examples in Clojure, Ruby, and JavaScript (and/or CoffeeScript) instead of Haskell, my email is [email protected].

[+] goldfeld|12 years ago|reply
As mentioned elsewhere in this thread, you seem to be expected to know a deal of music theory for this book. Are you considering a similar approach? If you explained music theory from the ground up using Clojure with Overtone, that'd be my dream book. Have you considered leanpub?
[+] rasur|12 years ago|reply
This looks an interesting way of learning Haskell, in a domain that is of personal interest. Thank you for posting, I look forwards to reading it.
[+] noloqy|12 years ago|reply
Same here. I'm going to read this book and hope to learn more about functional programming and the Haskell language, while (hopefully) not being bothered with the kind of trivial examples that you commonly encounter in tutorials.
[+] Schiphol|12 years ago|reply
Can anyone share a non-scribd link?
[+] lelf|12 years ago|reply
It's there. Don't click on [scribd]