Fast forward to today. Symmetric multiprocessing, social media, and multi-touch devices have added several new dimensions to the game. It's not unheard of for people to perform an impromptu DJ set or musical performance using their laptop, tablet, or smartphone. As with all other forms of intellectual property, self marketing and distribution of music is now easier than ever. Except for a computer, you no longer need expensive hardware to make music. Let's look at a few software projects that might put the current state of computer music in perspective. VST plugins are great. Better than great, in fact, they're AWESOME. The modular combinations of instruments and effects allows literally infinite possibilities for creating and manipulating sound. KVRAudio is an excellent resource for modular music making. Their database lists at the time of writing 2500+ free plugins counting VST, DirectX, AU, RTAS, and LADSPA/LV2/DSSI. Gersic.com's database lists almost that many free plugins. These are just two of many sites that catalog audio software. Until about 2005, VST plugins were traditionally created in C++, the language of Steinberg's VST SDK, or sometimes Delphi (Object Pascal). Now thanks to some outside the box thinking, the programming languages one can use to create plugins for this industry standard format are numerous.
VST.NET - Marc Jacobi's laudable effort to allow plugins to be written in any .NET language. He also created a related project MIDI.NET which brings MIDI IO to the .NET platform. Keep in mind the Mono Project which makes .NET software cross platform.
JVSTWrapper - Daniel Martin's brilliant project to make it possible to create cross-platform VST plugins that run on the Java Virtual Machine. Daniel's wrapper has inspired:
- ClojureVST - Write plugins in the Clojure dialect of Lisp.
- Opaz-PlugDK - Write plugins in any combination of JRuby, Mirah, and Java. The generated plugins are automatically prepared for use on Windows, Mac, and Linux.
JVSTHost - A Java-based cross-platform VST host written by Martin Roth and Matthew Yee-King aims to work with as many plugins as possible, including those created with JVSTWrapper (and Opaz and ClojureVST).
Frinika - A cross-platform digital audio workstation containing sequencer, MIDI support, software synthesizers, audio recorder, and piano roll/tracker-style/notation editing. Written in Java, this program is unique in that it allows the user to edit a track in a piano roll interface, a tracker interface, or traditional music notation.
Ari Russo has created a number of Ruby-based tools for sound and MIDI, including domain specific languages for Open Sound Control and MIDI.
This is just a sample of open source projects that you can start using right now to compose music. Whether you use Windows, Mac, or Linux, all of the software listed here is supported by your OS. These projects range from compiled to interpreted and dynamic languages, and the possibilities are only limited by your imagination.