
Improvisation: Automating Music Composition and Melody Generation - anubiann00b
https://github.com/ArmenAg/Improvisation
======
armenag
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.

~~~
robbrown451
It would be great to hear some of the compositions. Did I miss where there
were posted?

------
blueintegral
This reminds me of work by David Cope called Emily Howell:
[http://artsites.ucsc.edu/faculty/cope/Emily-
howell.htm](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.

~~~
tessierashpool
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](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/markov-bass-lines)

[https://github.com/gilesbowkett/clojure-
circles](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.

------
paublyrne
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.

------
PabloOsinaga
any examples of music composed?

~~~
geofffox
Yes, I'd really like to hear what it does.

~~~
armenag
I haven't really saved any music. But you should try the code out for
yourself! Pretty impressive for a computer!

~~~
not_kurt_godel
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.

------
sroerick
Does anyone know anything comparable to this that isn't Virtual Studio / runs
on linux?

~~~
armenag
OP here. You could try using mono to run it on Linux. [http://www.mono-
project.com/](http://www.mono-project.com/)

