• Click here for a list of all my projects.
  • Click here for Touchlib info. Source code here.
  • Click here for our multitouch community site.

Thursday, December 14, 2006

Genome, Collaborative music applications

Did a bit more work on Genome yesterday which hopefully means I've broken my spell of 'Programmers Block'. The problem is that genome is just a big application. Even though it's fairly cleanly written I still have trouble remembering where to look for things in it's 200+ source files. Some diagrams may be in order.. My next goal will be improving the GUI and making it a bit easier to use. Once I pretty things up, I'll post some pics.

I listened in on some interesting online discussions with Paniq, who is also working on a sequencer in the same vein as Buzz. Both of us would like to make a music program which encourages community via the sharing of song files. In the early days of computer based music, people could share songs rather easily, since each song contained all the patterns and audio samples necessary for the song. Sharing songs allows people to learn from each other, borrow things they like, remix other artists' work and also contribute to the community. These days we have plugin (.DLL) based instruments, some of which are commercial (not free). So we can no longer count on everyone having what it takes to play the song on their computer. Almost no one exchanges songs written in Cubase or Cakewalk. With Buzz, all the plugins are Free, however keeping up to date with the hundreds of plugins becomes a chore in itself. There are a couple solutions to this problem.

1. Plugins could be free or commercial. We would automate the process of purchasing / downloading the necessary components by having the program interface with a central website. This would allow a la carte purchasing/downloading of instruments, presets, etc all within the application. Think of it as i-tunes (or Steam) for music sequencers. This could also help with the software piracy situation since the server tracks your purchases. Free plugins could be automatically downloaded from the server if the song requires them or you could select them from a catalog. The application could check daily for new user-authored components and download them in the background.

2. Do away with traditional .DLL plugins. Plugins could be authored with a scripting language and included in the song. Paniq plans to use a system based on Faust which is a script language that is compiled into C++ code (which is then compiled again..). The method I plan to use is to allow users to build instruments similar to how the Nord Modular and Synthedit work - by visually connecting modules. It's true that this approach doesn't allow the fine control that you would get from scripting or coding an instrument - you can't write your own filters or oscillators, but I think it gets you 90% of the way there and it's more accessible to the average user. By offering a variety of modules you can make up for some of it's limitations. I already have source code written for everything from virtual analog oscillators, additive synthesis, FM and just about every type of effect. It will be very easy to turn this code into modules. Of course you won't be required to build your own instruments - Genome will ship with all the pre-requisites. This is just for the people who want to use it.


Scripting still has a place - it would be interesting to allow the creation of custom control surfaces which contain scripts. You could create surfaces that allow for algorithmic note generation, arpeggiation, unique note layouts, etc.. These surfaces could control multiple modules at the same time.

Labels:

0 Comments:

Post a Comment

<< Home