Melody project: the great reprogramming – update 6

It’s week 3 of the great reprogramming of my upcoming melody generator! While I could continue tweaking the main algorithms endlessly, I’m at the point now where I feel I need to branch off into three directions:

1. I need to get the program to output MIDI files automatically so I don’t have to keep interpreting text files.

2. I need to get the program to write in different time signatures, different bar lengths, etc.

3. I need to figure out how exactly I’m gonna get this program on the Android.

My main goal for now is #1… being able to output MIDIs, I can then have the program write 100 melodies or so in a row, and then go through the results and pick out the melodies I like, and perhaps orchestrate them into a little piece or something…

Yet even more computer generated melodies…

Here are yet more computer generated melodies from my in-development automatic melody generator. I have made a lot of changes to the algorithm since I posted the last set of examples, but I’m not sure how much you can actually hear. Still more work to be done… anyway, here are 12 more melodies…

Computer generated melodies

Enjoy!

I’ll probably spend another week on the main algorithms, then I’ll start trying to add more diverse capabilities, like different time and key signatures.

More computer generated melodies! Woohoo!

Even though I’ve still got plenty of work to do on my automatic melody generator, it’s at the point now where I’m finding it quite addicting. Here are a bunch of melodies it came up with today (I think there are 12 altogether, each stated twice):

Computer generated melodies

Again, I don’t think the melodies sound super fantastic by themselves, but there are definitely some surprisingly good phrases, in my opinion.

Some notes:

1 – Again, it’s still limited to 8-bar melodies in 4/4 time in C major that begin and end on the I chord and can only use the basic triads. I still have algorithmic changes to make before I start expanding its abilities in this area. (For the audio above, I transposed it up a step to D major; sounded just a bit better to me.)

2 – The program is “creating” its own “melodic knowledge” and, as you might hear, the biggest problem this creates is that it likes to write large melodic leaps every now and then, which can sound funky. It didn’t do this before because it based its melodies on observations, and large melodic leaps like that would never (or rarely) be observed. So I’m going to have to hardwire an interval limit into the algorithm, perhaps letting the user set it.

3 – In the last two melodies, I gave the program the ability to use to 16th notes. You don’t hear them in the other melodies because the program wasn’t allowed to use them, but it’s an easy ability to give the program. Triplets, on the other hand, will be tricky… I guess I’ll have to figure out those at some point. Meh… that can come much later…

4 – The program outputs a text file with note values and accompanying chords; it doesn’t actually output the sound you hear in the MP3 … I had to manually enter the info into Overture 4 and use Garritan Personal Orchestra to create the actual sounds.

Melody project: the great reprogramming – update 5

As I stated yesterday, I’m now working on getting my program to create its own melodic knowledge rather than depend on melodic patterns found in pre-existing melodies. This turns out to be harder than I thought it would be — or at least more time consuming. I’m sure it’s possible, it will just take more programming. So I’m continuing to work on that. If I can’t get it done by the end of the week, I’ll give up on it for a while. In the end, perhaps I’ll use a combo of both methods.

Uh… yeah, that’s pretty much it for today.

Melody project: the great reprogramming – update 4

It’s week 2 of melody generator programming fun! Over the weekend, I was preparing to add more knowledge to my program’s melodic knowledge database, but then I thought: Wait a sec. If the knowledge in the knowledge database comes from patterns found in other melodies, why not create a knowledge database from the patterns found in that database? That way we’d only need a small database, and we can have the program create random melodic knowledge from it. Does that make sense? I have no idea if it will work or not, but I’ll give it a try, so that’s what I’ll be working on today: a melodic knowledge generator. I’ll try to have more musical examples by tonight or tomorrow night (or… later).

Thank you for reading update #4. I will keep the blog informed of any and all progress made on this revolutionary product.

In other news, I wrote some melodies over the weekend and started to hear a piece in my head, so I finally bought Garritan World Instruments, which I hope to use soon. I should be saving my money, but when you’re high on your own melodies playing through your mind, you sometimes just can’t help it. And Garritan products are at least priced awesomely for the amount of stuff you get.

Some computer generated melodies…

Here are five melodies my computer program wrote today, all in one MP3 file:

Examples of computer generated melodies

A few things to note:

1. The program is still working within limitations of only being able to compose in C major, only being able to use the basic triads, only being able to compose 8-bar melodies in 4/4 time. I will, of course, work to remove those limitations, but there is still more work to do on the algorithm first.

2. As you can hear, some of the melodies don’t sound that great. I think they technically work (they don’t sound like random atonal garbage), but they’re not quite memorable. I really like the first one though, and the second and third one have some interesting parts. Anyway, my goal with the program isn’t to get it to output something beautiful every single time; the point is to give the user melodic ideas. As the algorithm is now working pretty fast, the user should be able to have the program generate 100 or so melodies at a time, then he can browse through the results and find whatever strikes his fancy.

3. The five melodies in that MP3 are based on melodic knowledge the program learned from just two melodies. So if they sound kinda similar now and then, that’s why. But still, it amazes me how much musical variety can emerge from such a small set of knowledge. I look forward to building the program’s knowledge database; I can’t wait to see what sort of stuff it might produce with knowledge from several hundred melodies or so.

Melody project: the great reprogramming – update 3

I haven’t gotten much done today because I slept all day because I was up late reading because I have library books that are due soon because they are on hold and I can’t renew them and I want to finish them or at least get as far as I can in them before I have to return them because that’s just the way it is, OK?

Anyway, regarding the melody project… I have created a small set of symbolic knowledge with which to experiment with. I am now continuing to work on reprogramming and restructuring the main melody composition algorithm to make use of the knowledge in its new form. That’s pretty much it. An in-depth look at my meaning of this is strictly confidential.

Thank you for reading update #3. I will keep the blog informed of any and all progress made on this revolutionary product.

Melody project: the great reprogramming – update 2

Yesterday I successfully designed, programmed, and tested a melodic information symbology, making melodic information easier to input. This should also save the program time and memory, as it will only have to decode the string of symbols if and when it needs them, and when it no longer needs them it can delete them again. The only caveat is that the symbol strings themselves are always held in memory. I’ll leave it like that for now; if I have memory problems in the future, this issue may need more attention.

My goals now are to use this symbology to create a set of knowledge for the program’s knowledge base for further algorithmic reprogramming, restructuring, and testing. An in-depth look at my meaning of this is strictly confidential.

Thank you for reading update #2. I will keep the blog informed of any and all progress made on this revolutionary product.

Melody project: the great reprogramming – update 1

I’m working on reprogramming my melody generator from scratch in an attempt to make it more organized and more efficient. A higher degree of modulation should also make the programming of future feature additions easier. My overall goals are as follows:

1 – Reprogram the algorithm and get it output easier-to-interpret text
2 – Get the program to output MIDI files
3 – Begin adding other features

For now, work continues on goal #1. I’m trying to program a symbology, so that the program can store a bunch of melodic information in the form of encoded strings. It can then decode these strings when and if it needs to. This is in an attempt to save both time and memory, and to make adding future features much easier for the programmer. An in-depth look at my meaning of this is strictly confidential.

Thank you for reading update #1. I will keep the blog informed of any and all progress made on this revolutionary product.

Animation Mentor class 3 almost over… what next?

My final week of Animation Mentor Semester 3 is wrapping up! I turned in my last assignment on Sunday; here’s what it looked like through the four weeks I worked on it:

There are still some problems with it, but I think I’m getting better. That’s 3 semesters down and 3 to go! I’m halfway done!

As I’ve stated before, I’m taking a leave of absence for 12 weeks instead of jumping right into semester 4. I’m going to be working as hard as I can on my automatic melody generator, so I’ll keep this blog updated with my progress on that. My current goal is to create it as an Android app. Other platforms may follow, depending on its success or lack thereof.

I also started a new project: I’m creating a Grand Theory of Human Intelligence (or GTOHI), not only detailing the basic principles of what intelligence is and how it works, but trying to simulate the results of human intelligence with basic artificiall intelligence programs. This project might fall flat on its face, but I have some ideas that I think are definitely worth exploring. There’s a lot of research to do, so I probably won’t have a product based on my findings until I’m 70 or 80 years old… or dead.