Whirr2006-07-28
I made stuff! (long) Screenshots at bottom of page.

It's a little odd. Just the other day, in this post, I said that I was being completely unproductive and playing video games all the time. It just occurred to me that, really, nothing could be further from the truth. It's just that what I've been doing (writing a ton of software) feels like playing video games. In the past month and a half I've mostly completed* four fairly large projects.


Most recently, I wanted to write a Flash-based program to help me study the violin. I have a real problem with sight reading--if I am given a sheet of music I can read the notes (slowly, one at a time) but not fast enough to play them in a recognizable fashion. I've always been a quick learner, though, so before too long I can memorize the notes--whether I want to or not. This means that when I try to sight-read small phrases of music I notice that after a while (around the time that it starts to sound like music) I'm no longer looking at the page. And, of course, longer phrases just don't happen.

So my simple solution was to write a little program that would generate phrases of music randomly, and by random I mean "Pick a note between 1(C) and 11 (B). Repeat.". If I felt that I was starting to memorize them, I could just hit a button and get a new phrase. Simple. Too simple, as it turned out.

Because wouldn't it be cooler if I could get an audio hint? Like, what if I utilized Alexis Isaac's (superb) FlashMIDI plug-in, so that if I got really stuck with a random phrase I could hear what it sounded like? And, hey, that would mean that I could also practice note length--I can't play 16th's at all, everything slower is possible, but difficult. But with audio feedback, I could really try them out.

And then, when I mentioned it to my partner, Katya said:

"well, you could try using some simple music theory to constrain it: for example, picking a standard chord progression (I-IV-II-V-I for example)"
And, really, that's a much better idea than just a bunch of totally random notes. But the bass line for any chord progression is very static (too easy to memorize)... which is where I read this page... and (if I understood it right) realized that I could use the so-called "circle of fifths" to generate chord progressions randomly. Aha, now we're cooking with bacon!

The Katya pointed out that one needn't stick to the bass line, that chords have (at least) a couple of othe notes in 'em, too, so it could randomly select one of them to use. At this point it had either become just as random as it was at first or else it had become Jazz. I'm not skilled enough to tell which.

Maybe it was random, but it did seem to make phrases that I kind of liked... shouldn't I be able to tweak them? Like, grab a C# and drag it up to D? Or maybe I could click on the note to open a sub-menu, in which I could raise it by a perfect third, a fifth, or a semi-tone... or lower it by a semi-tone, or change the length of the note!

It officially became ridiculous when I started adding support for ABC notation. At this point you can export to ABC, but soon you'll be able to import as well. Er... to help me sight-read.


Before that, I decided that, even though no one in the community was really all that excited about the idea necessarily, maybe I should write a web-app to keep track of who had paid money for rent, food, &c. Naturally such an app would have to be done with a fully customizable database backend, so that it would support an unlimited number of community members, each of whom can pay different amount for each item... And of course the whole thing should be done not only with DHTML but using AJAX as well. Obviously.

So each community member has a number of beads over in their drawer, and the admin (Larry, in this case) can drag over the ones the represent "Food" or "Rent" and put them in the community pot.

Fortunately, the other community members liked it, but now that means that I have to add in all the admin stuff (which is a little boring after so much AJAX).


Then there was the other Flash sound app. I've been working as a sound up at Victory Gardens Theatre, which has given me a good chance to observe their set up. I'm the resident sound designer (and op) at Triton College, and I need all the help I can get.

When I got to Triton, there was a CD player for preshow music. Then the op would turn it down, and someone would walk out in front of the audience and tell them to turn off their cell phones. There was a new mini-disc player to sound effects and such.

I've been improving the system in the past two years. For the last show, I ran all of the audio from my (ancient) laptop, using Goldwave, which is just an audio editting program--"Stop", and "Play". (And "Record", if I wanted to erase everything and ruin the show.) At VG, though, at the start of the show they play 30 seconds or so of atmospheric music, which fades out when the op hits the button as the lights come up.

Now, for our next season at Triton we have a dedicated audio computer! (Not sure how fast it is, mind you...) So I did my best to copy the audio software that Victory Gardens uses. It reads in an XML cue sheet and loads a list of tracks. Each track can fade in, fade out, automatically advance to the next track, &c. So the op (that's me) can prepare the XML file during rehearsal, and during the run of the show just hit the space bar when necessary. The only thing I'm worried about is processor power--it runs fine on my PC at home, but the computer at Triton is an unknown quantity.


Finally there's the game of Lexicon that I started at the end of June. Nothing as fancy here, but I like the site design passing well, and it uses cookies in an intelligent way. We're actually playing a game right now and it's really going well!


Whew! I have been busy... but it's all so much fun (and, arguably, so little use in the outside world) that in my head I treat it like playing video games. Someday I will get a job where I get to do this stuff all day long. That will be phenomenal!

This stuff isn't as tangible as the sewing projects that Kate enjoys, but I think it's good work nonetheless. I'm actually really proud of what I've done.

Screenshots
(Click to enlarge)










*"Old programmers never die, they just lose interest in the current project."
Comments