Showing posts with label progress report. Show all posts
Showing posts with label progress report. Show all posts

Sunday, March 1, 2009

Progress Report #7

A Quick Off-Topic Note
I spent the passed week in Boston visiting MIT (for those who aren't sure what that is, it's the Massachusetts Institute of Technology, widely known as the best engineering/mathematics university in the world, check it out at mit.edu). It was everything I expected and more...I'm simply in love with it. I met with many people there, including a professor of computer science and contributor to the field of cryptography working closely with the National Security Agency, a physics graduate student helping design a massive laser to detect and prove the existence of gravitational waves as postulated by Einstein's General Theory of Relativity, a famous composer and opera writer, and a programmer responsible for an innovative music composition tool. What a week. Now the only problem: 10% admissions rate. Ouch. Wish me luck.

Reflection
I actually did a lot this week. I took my laptop with me to Boston and worked on the program every night. I finished a progression module that works based on the interval observations I posted in my blog a few days ago. It turned out quite nicely, and I'm continuing to refine it.

By far the most productive thing I did this week, however, was meet with Tod Machover (or here), a well-known composer, opera writer, digital composition innovator, and just about everything else you can imagine. After getting over my initial feeling of awe when I met him, I managed to talk with him for a good while and told him about my project. He was genuinely interested and gave me some suggestions but overall seemed to think I was heading down a very promising path. He also introduced me to Peter Torpey, one of the programmers that helped make the Hyperscore software a reality. Peter also took a great interest in my project after I explained it in a fair amount of detail to him. He told me to keep in touch and let him know how the project goes. So I may have found some BETA-testers for my project! (That's a technical term for the people that test a software before it gets released) Peter also told me that a modularized structure (like the one I currently have built in my program) is definitely the way to go. He also said creative interfaces are important for making things intuitive to the public.

Goals
  1. Render a music sample
    Obviously this is a recurring goal for me. I have yet to achieve it, just because I don't want the first music sample to be embarrassingly bad. I know it won't be great, but I want it to at least sound somewhat like music. I think I'm getting pretty darn close to achieving this goal.

  2. Read more of Music, the Brain, and Ecstasy
    This is an important part of my research. I'm doing heavy note taking and annotating on this book.

  3. Organize everything into Noodlenotes
    In order to prepare for my research portfolio, I'll need to organize what I have into NoodeNotes. I should also start printing screen captures of the program's interface so that I can visually prove some of the work I've been doing. Ideally I could even have a sound clip as part of my portfolio.

  4. Expand the progression data structure
    This is a pretty specific goal. Right now the progression data structure stores everything in terms of which notes will play and how long they will play. I should at least separate the chord from the bass note so that I can have interesting splits between bass and treble.

  5. Add capabilities for post-processing
    I need to make the program capable of running post-processing modules after it finishes running generative modules. An example of a plugin that would fall under this category would be one that applies a swing groove to the piece, or perhaps various playing styles. This is done after the actual notes of the piece have been generated.

Sunday, February 15, 2009

Progress Report #6

Advisor
On Friday I met with Mr. Taranto, ran my ideas by him and filled him in on everything I was planning to do. He seemed very interested and impressed by the scope of the project. He said he'd gladly be my advisor. So I guess that's pretty much that as far as advisors are concerned! With my programming abilities and his musical expertise, I think we'll make a killer team.

Goals/Deadlines
Since I've not had good luck with setting abstract goals in the past, I'm going to set more manageable, concrete ones this week that I know I can achieve. In particular, I'd like to really get cranking on all the books I've ordered pertaining to my thesis, so that I can absorb knowledge to use in the creation of my program.
  1. Read through page 200 in Music, the Brain, and Ecstasy
  2. Read through page 50 in Sweet Anticipation: Music and the Psychology of Expectation
  3. Again, try to have something audible for the class to listen to for the next status seminar.

Goals 1 and 2 should be met by next Monday, if not earlier. Goal 3 should be met by the next status seminar.

So basically my week is going to involve a LOT of reading and absorbing information. I think they're reasonable goals that will help me move towards a greater understanding of music that will ultimately manifest itself in my programming.

Thursday, February 5, 2009

Progress Report #5

Purpose Statement

In a broad exploration of algorithmic composition, I will study the creative aspects of music composition. In doing so, I will attempt to learn more about the human creative process and methods for simulating such creativity. I will demonstrate my findings and show my own creative ability by building a working computer program to generate new, original compositions. I will conclude the demonstration by producing a collection of unique and original music for each and every other seminar member in the form of a CD.

Reflection

My inquiry here is no doubt a vast one. My love of composing, performing, and listening to music coupled with my fascination with computer programming has led me to a deep study of the art of computer-generated music. Formally known as algorithmic composition, the field of computer music demands a high degree of knowledge in all of the aforementioned skills; for this reason, the field continues to progress rather slowly even in an age of technological explosion. In order to algorithmically create music, one must not only attempt to uncover the mechanisms behind the human creative process, but also study the patterns that lie within and constitute enjoyable music as well as pack all of this abstract knowledge into the precise bounds of code and user interfaces.

I find the project of creating my own algorithmic composition program appealing for a number of reasons. As I mentioned above, it involves all of the subjects in which I have a great interest: music, computers, and even math. Since the field has had relatively few breakthroughs and an equally scarce number of working programs that implement algorithmic composition, I imagine that if I put a lot of effort into my work, I can make a serious contribution to the field. I can literally count on one hand the number of decent, working algorithmic composition programs available on the internet. Very few fields boast such a lack of implementation.

The work will be difficult. My ability to endure through the challenges that I will face in trying to emulate the creativity of a true human being will no doubt prove my worth as an honors student, provided I manage to endure said challenges. I also think that my work will show my passion for the subjects involved in this project. I'm excited, nervous, happy, and ready to work, all at the same time.

Sources

Resource Link Lists

Algorithmic.net
The largest bank of resources I have found so far, algorithmic.net contains a huge list of algorithmic composition projects as well as all sorts of literature on the subject.
IBM developerWorks spaces: Music Programming and Algorithmic Composition
Another huge repository of all sorts of resources related to algorithmic composition and general computer programming with relation to music.
The Voice of Al-Kwarismi
A very extensive list of links related to algorithmic composition, music theory, and mathematics in relation to music. Unfortunately the site appears to be extremely old and few of the links have survived the years.
Algorithmic Composition Tools

Bloom
Bloom is a mobile application developed for the iPhone that implements algorithmic composition to compose original ambient tracks with or without user input. Brian Eno, the founder of ambient music, co-developed this project.
cgMusic
A freely-available and unpublicized software, cgMusic is the gem of all algorithmic composition tools that I have found so far. Maciej Biedrzycki created this flexible architecture that uses a scripting engine and expert systems to generate coherent music. A very impressive demonstration of algorithmic composition.
noatikl
A fairly extensive algorithmic composition tool aimed at creating ambient music. Good implementation and interface, though restricted in terms of genre.
Soundtrek Jammer Pro
Though more of an assisted-composition tool rather than a full-out algorithmic composition software, Jammer still qualifies to some extent as random composition. The sound demos are pretty impressive and it looks like a well-made program with a nice interface. I could probably learn a lot if I could get my hands on this program.
Algorithmic Composition Methodology and General Information

Algorithmic Composition
A great overview of the history and methods of algorithmic composition as well as a broad definition.
Algorithmic Composition as a Model of Creativity
Bruce Jacob describes the workings behind his variation system for algorithmic composition. Interestingly, his method involves splitting the work into two distinct parts: the 'composer' module and the 'ear' module. The first generates music, the second evaluates the quality of the generated music and filters it until a piece of adequate quality is found. This sounds like a promising method.
A Brief History of Algorithmic Composition
The title of this one leaves little to be explained. Very concise and well-summarized history of algorithmic composition.
Composing with Genetic Algorithms
Bruce Jacob explains in further detail the method of genetic algorithms, part of the variation algorithmic composition system mentioned above.
The Geometry of Music
Discusses and interesting analysis method developed by Dmitri Tymoczko in which chord progressions are mapped to various mathematical spaces. Provides a look into the math of chord progressions and could be useful for the progression module in my algorithmic composition program.

Sunday, February 1, 2009

Progress Report #4

This week, although I worked hard on my program each day, I did not preview any sources. At least I'm honest, right? I had decided that the week would be dedicated to the programming/creative aspect of my thesis. Next week I will shift my focus back to research. I think alternating this way will help me, since I can research methods one week and then spend the next week trying to implement them. So, in short, no sources this week, but expect many next week.

Reflecting on the Week
In my last report, I set three goals, two of which I have partially met this week. First, I said I would like to finish the Variating Drummer plugin. I should have known that 'finish' is simply too strong of a word to ever use in setting goals. Nonetheless, I 'finished' giving the plugin some basic functionality this week. In other words, it now works on a very basic level. I doubt that any single component will truly be 'finished' until the end. But it now works, so I consider that goal fulfilled.

My second goal was to develop a method for generating melody. In this goal I failed. I did not even attempt to develop such a method this week. It's a very, very difficult problem to tackle, and to be honest, I'm still not entirely sure how I'll approach it. Eventually I'm going to have to face the problem, but I think for now I should stick to the basics rather than try tackling something this difficult.

Finally, I said I wished to have a basic trance song outputted by the program by the end of the week. In theory I met the goal, but it wasn't really what I had in mind. There's still not much creativity in the output, so it hardly counts as a song...all the elements are very simple. Nonetheless, I think it still counts.

Overall, I think things are going well. My only concern is losing my creative steam. Right now I'm pushing full force ahead...but it's very easy to get sucked into the routine of grinding out lines of code without really thinking about the innovation it takes to 'synthesize' creativity. I need to be inspired in order to make an inspiring program. That means I just need to keep my creative juices flowing.

Goals for This Week
I'm going to try to be more specific and more realistic about my goals this week. Hopefully I'll be able to meet them all.

  • Research a New Method
  • It's about time I researched a new method of algorithmic composition. This week I will aim to find and extensively research a new method which I will implement next week if all goes well.
  • Finish the VDrummer Variation Algorithm Editor
  • I was too vague last week when I said complete the Variating Drummer plugin. This week I'll focus on trying to get the variation algorithm editor working since it's the last piece of the plugin that's not working yet. Variation algorithms basically provide the instructions for making drum style random and interesting; they comprise the heart of the VDrummer (Variating Drummer) system.
  • Make a Sound Demo
  • Last week I said I would try to make a basic trance song. Since I wasn't really impressed with my attempts to do so, I'm going to be more general this time. For the next status seminar (that is, in a week, not this coming one) I would like to have something to show for my work. Whether it's just a short clip of the VDrummer groovin' or a fully fleshed-out song demo, I want something tangible.

Sunday, January 25, 2009

Progress Report #3

This week, since I worked mostly on the coding aspect of my thesis, cranking out over half a thousand fresh lines of code in the music generating program, I encountered very few sources. Nonetheless, they helped.

  • Ishkur's Guide to Electronic Music
  • I was very excited to find this site...it's the most detailed map of electronic subgenres I've ever encountered! Not to mention that it has descriptions and multiple samples for each subgenre! Watch out though, Ishkur seems to have somewhat of a foul mouth. Still, his information is invaluable.
  • Mr. Hubbard
  • I had a brief chat this week with Mr. Hubbard about my program. This mainly occurred thanks to Matthew Saltz' insistence on me doing so. Since he was pressed for time, I just sat down and showed him a brief overview of the program. He said he thought it had great marketing potential and that there were a lot of places I could go with the idea. I'll be waiting for my next chance to talk to him about algorithmic composition in general.
Purpose Statement
In a broad exploration of algorithmic composition, I will study the creative aspect of music and methods for emulating human creativity. In the end, I will demonstrate my findings and own creative ability by building a working computer program to generate new, original compositions.

Research Questions
I'm still happy with the research questions from last week, I don't think any revisions are appropriate yet. They are guiding me towards the right persuits.

Reflecting on The Week
As I stated above, almost all of this past week was dedicated to raw coding. I started several new plugins including a Trance Progression module, a Trance Bass module, and a Trance Strings module. I'm developing them simultaneously to try to get a basic trance song underway. I'm still feeling great about my topic. I know it's going to be messy. It's going to be a lot more work than I expected and probably more than I expect even now. It's going to be massive. In the beginning I thought I'd have a very workable program by the time I hit ten thousand lines of code. Now I'm thinking at least fifty thousand before I start seeing nice results. Ten thousand seems like child's play. And you don't have to be a programmer to appreciate the magnitude of fifty thousand lines. Open up notepad and see how far you get hitting enter as fast as you can. Now imagine actually typing substantial, logical computer operations on each line. Ouch.

Still, I'm ready to work. I love music. I love computers. I'm clearly on the right track. I'm a firm believer that anything and everything can be accomplished when broken into small, tractable pieces. I sure hope I'm right!

Goals for This Week
(Sorry if these are too technical...there's really no way around that!)
  • Finish the Variating Drum plugin
  • I've been working on a simple drum plugin for mGen that works by taking basic drum patterns and applying random variation algorithms to the patterns to create dynamic drum beats.

  • Develop a Melody Method
  • While I haven't workeda huge amount on any part of mGen yet, melody is the only area that I literally have not touched. And considering that it's arguably the most important part of any song, I need to start thinking about methods for generating melody.

  • Generate a VERY Basic Trance Song
  • Shoot for the stars, hit the moon, right? This goal is probably very unrealistic, even with the lovely qualifiers in the goal statement. But if I could get mGen to crank out anything even faintly resembling trance by the end of this week, I think that would more or less solidify everything. I would not longer be running on faith that my six thousand lines of code thus far are going to magically come together and make sweet music. I need to hear the proof!

On with the battle!

Friday, January 16, 2009

Progress Report #2

At this point, I'm pretty much locked into a creative thesis dealing with algorithmic composition.

So far I've had no trouble finding sources on the topic. I am keeping a list of all the sources I have found at the bottom of the blog. Here's the current list:
Inquiry Statement
I would like to know more about what elements make up good music and how a computer can be taught to understand and recreate all the aspects required for a good composition.

Research Questions
  • What basic components should I break composition into to alleviate the task of random generation?
  • Which methods of algorithmic composition should I focus on?
  • What should my end goal be? Is it a realistic goal to create a full composition toolkit in a single year?
  • What practical use, if any, would such a toolkit have?
  • Would people oppose the idea of random music generate with arguments such as "it takes the soul out of music"?
Reflection
I have spent most of this week researching methods of algorithmic composition and working on programming the composition toolkit. I have found lots of helpful resources and I feel that I am ready to dive right in to pioneering the methods of composition. I'm feeling confident that I'm going to really love my topic when I start getting into the gritty details and the real work. At the moment I feel that my thesis is going to be weighted more towards the creative side than the research side. I'm already well acquainted with most of the methods of composition, and I'm really much more interested in developing my own and putting them to use than reading about theoretical nonsense that hasn't even been implemented. Less words, more action!

Where is it going?
As of right now, I have very ambitious goals for my thesis. By the time it is completed, I would like to have created my own original program capable of producing completely original compositions with a high amount of variety.

Sunday, January 11, 2009

Progress Report #1

Well, if I claimed that I hadn't already been thinking intensively about my thesis topic prior to second semester, I'd be lying 100%. Don't get me wrong, I certainly don't have my heart set on anything (at least not completely...), but I do have several topics that I'm passionate about. And by several, I mean one: music. Luckily, music branches off in so many different directions that one topic in this sense translates to an infinite number of potential thesis topics.

In particular, I'm interested in the creative aspect of music. The following questions got me thinking: why do people enjoy different kinds of music? More specifically, what makes music 'good,' and can this quality be defined in objective terms, or is it completely dependent upon the listener? These are very broad questions and seem like they would be rather difficult to approach in the sense of a formal thesis. For this reason, I've taken interest in a more focused topic that seems to encompass all of these questions at the same time: randomly generated music - formally known as algorithmic composition.

The idea behind algorithmic composition is to get computers to compose original, creative, and pleasing pieces of music using one or many techniques that combine music theory with computer sciences. Considering my deep interest in both of these subjects, I feel that this would be a great topic that I would really like to delve in to. My research question would be something along the lines of can computers be used to create original, create, and above all good-sounding music?

Ultimately, if I continue to pursue this topic, I would like to do a creative paper in which I outline various methods for attempting to fullfill the aforementioned question, as well as construct a computer program to do so. Imagine a program in which you simply selected a desired genre and certain other song specficiations, hit a button, waited half a minute, and then sat back and listened to a completely original piece of music with your desired specifications. Or even better - forget the shuffle button on iTunes...just hit a "random all" button on the program and watch it automatically create an entire CD worth of new music and burn it to a CD. Wouldn't that make those long car trips go by a LOT faster? I sure think so.

Best of all, if such a program were created, it would truly be one-of-a-kind. There are several algorithmic composition tools available on the web, but so far I have found none that truly impress me in terms of musical quality. Here is a link to my favorite one so far, entitled "cgMusic." Scroll down and check out the sample "dance_s90es.mp3". It's my favorite and, in my opinion, that's pretty darn good for computer music. Still, I think there's a lot of room for improvement.

A quick side note before anyone starts pointing fingers - this is NOT a rip-off of Matthew Saltz' thesis! Matthew has created an excel-based spreadsheet program that statistically analyzes music progressions and uses these statistics to generate new, random progressions that sound good. His thesis focuses on a very specific part of the overarching field of algorithmic composition, that is, the progression of a song. Click here if you don't know what that means and you want to find out. He uses first-order Markov chains, a mathematical method of algorithmic composition, to generate new progressions. I, on the other hand, want to pioneer a more general but all-encompassing method of algorithmic composition, bringing all the more specific pieces together to create comprehensive generator that creates progressions as well as melody, harmony, bass, drums as well as mastering effects. So no, I am not trying to copy anyone!

There are a lot of techniques for generating random music. Some are very simple and some are insanely complex. For example, one technique known as fractal composition involves the mapping of various mathematical fractal equations to pitches in order to generate a song (that may interest you, Robin?) - see fractalcomposer to try it out yourself with an online program that lets you make your own simple fractal songs. One of my personal favorites is known as a genetic algorithm, which involves the 'breeding' of pitch generators that have 'DNA.' When a user selects his or her favorite generators from one generation, the DNA combines and the next generation gets that much closer to something that sounds like good music; this process essentially models evolution and works based on the 'natural selection' of the user.


Speaking of evolution, even though I've already written far too much, I will say that I am also very interested in evolution and natural selection. Personally I think Darwin's theories have far too many flaws to be reconciled. What's worse, I feel that contemporary molecular biologists ignore many of the gaping holes in the theory. Worse still, much of the scientific community is now using evolution as an atheist front, attempting to squeeze religion out of all public systems, as is apparent in many of the recent court cases and the overall tone of every Scientific American article written on the subject. I'd like to explore some of the shortfalls of these theories.

Consider my apologies extended to anyone who actually took the time to trudge through that superfluous jungle of thoughts. I'm finished for now!