Hacker News new | ask | show | jobs
Improvisation: Automating Music Composition and Melody Generation (github.com)
38 points by anubiann00b 4273 days ago
5 comments

Owner Here: First of all Id like to apologize for the lack of UI (not really big on UI) but if this becomes popular enough Ill look into doing it. To run existing UI you will need some midi files to play around with. First set the FinalUIBase as the startup project. Run the application. Load up (or create a neural network). Next create the statistical model and the fine tune your genetic parameters and run the search. Once the search is complete the ListBox on the right should fill up with items. Press on the items to hear the melodies composed (higher on the list = higher rated by neural network). Would love to hear some feedback! and feel free to email me any questions.
It would be great to hear some of the compositions. Did I miss where there were posted?
This reminds me of work by David Cope called Emily Howell: http://artsites.ucsc.edu/faculty/cope/Emily-howell.htm

There is no source code that I could find on that project, so I'm looking forward to checking Improvisation's code out and reading the paper.

David Cope runs a workshop every summer at UC Santa Cruz, where he and several colleagues teach about algorithmic composition.

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

I went to this last summer, and it was pretty awesome. I did stuff in Clojure using Overtone; everyone else used a dialect of Common Lisp to generate MIDI files. I took off on this Overtone tangent because I had prior programming experience and a lot of curiousity about Clojure; most of the other people there were musicians, not programmers.

btw, these musicians were writing fairly sophisticated software in Lisp within two weeks of first being introduced to programming at all. :-)

You can see my own code from that experience here:

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

https://github.com/gilesbowkett/clojure-circles

Caveat: my Clojure's a bit rough, and not properly idiomatic.

Another, very unfortunate caveat: there was an extremely inappropriate remark from Dr. Cope which, in my opinion, alienated a pair of Indian programmers, the only people there with any programming experience at all, other than myself. After Dr. Cope made this remark, both of them were gone the next day.

Also, I have to say, Emily Howell is mostly a probabilistic beat-slicer which works against sheet music. Like almost all artificial intelligence, as far as I can tell, she is much more artificial than intelligent. Her previous incarnation, iirc, only sliced up Bach measures into new measures, although this had the interesting side effect of re-creating several measures of Mozart, who apparently was a huge Bach fan.

Oh also - I'm pretty sure Cope put a ton of source code in one of his books. You can find them on Amazon and use "search inside" to find out which books have code. Be prepared for a little heavy lifting, though, if you're not familiar with Lisp.

It is not immediately clear to me how to run the programme, unfortunately. I'm not experience with Visual Studio, so perhaps I am missing something obvious.
any examples of music composed?
Yes, I'd really like to hear what it does.
I haven't really saved any music. But you should try the code out for yourself! Pretty impressive for a computer!
It takes at most 5 minutes for you to make some sort of recording and share it. Why would I spend potentially hours gathering MIDI files and setting up a development environment without at least a small sample of what to expect?

Edit: better yet, just set it up as a web service.

I urge you to consider uploading some music. Your project will then reach several orders of magnitude more people.

If you want to keep yourself honest (and not be accused of picking out the best ones), generate some (e.g. 10) without listening to them, and upload them directly.

would be interesting to integrate it in a running app. the more quick the runner the higher the music tempo and vice versa.
Does anyone know anything comparable to this that isn't Virtual Studio / runs on linux?
OP here. You could try using mono to run it on Linux. http://www.mono-project.com/