Tuesday, September 10, 2013

Pop Music Machine

The problem is: How can we invent an algorithm to generate great pop music melody? This problem seems to be a generation problem, but in fact it imply a conditional factor which is "great", so it is actually two problems: a generation problem and an evaluation problem.

Is the evaluation problem a simple "accept/reject" problem? Seems not. Pop music melody seems hard to be divided as good or bad. They are usually divided into several levels: very bad, bad, OK, good, very good, extremely good, etc. But since our requirement is to generate "great" music melody, the evaluation algorithm can be decided to only accept the melody at the top level and reject all the rest. Then it becomes an "accept/reject" problem. The next problem is what to accept? That is, what defines great pop music melody in terms of computer language? Can this standard of "acceptable" be evolved and updated over time? This is a big problem we're going to dig deep into in this article.

Once we have the evaluation algorithm, the generation part is obvious. Actually we can randomly generate musical sequence and feed them to the evaluation module. But is this the only approach? If it is, all we have to solve is only the evaluation problem. But can we do it smarter, to make the system generate an acceptable melody within much less time? To put it to the extreme, can we generate different acceptable melody every time? This is also what we're going to talk about in this article.

to be continued...