Dauntless

As you might have noticed, if you listen to much of my orchestral music, I really like writing epic, syncopated scores with great big horn melodies (and little flute ones) that float above rapid, percussive strings and brass. Well, here’s another example of that. :)

This piece is a rondo in D minor. Let me know what you think!

Download

Camping: June 2009

Well, Ariel and I have just returned from a weekend away at Dwellingup, camping. How was it? First and foremost, it was cold. Bitterly cold. Notwithstanding the sub-arctic conditions, however, it was absolutely fantastic.

The Murray River is beautiful, and we were camped no more than fifty metres away from it. We camped in the “Stringers” area of the Lane Poole Reserve, and managed to wrangle probably the best camping site in the entire park — secluded, equipped with a fire pit, and quiet.

As you can see from the photos below, our two primary concerns were a) exploring the banks of the river, and b) fire. When it’s so cold at noon that you can see your breath, a fire is a wonderful thing.

 

(Click on an image for a larger view)

Songpack #1

[Download archive]

I’ve uploaded an archive of my music for easier download. This archive currently contains eighteen tracks, eight of which are no longer available anywhere else! The tracks included in this pack are:

I may well create other ’songpacks’ for download, so keep checking back. There’ll always be a couple of exclusive tracks in each pack, so it’ll be worth your while. I hope. :)

Download all eighteen tracks now!

Clockwork

This track is rather unusual for me; it doesn’t really fall into any of my usual styles. I personally find it quite relaxing, especially when I listen to it with headphones. Perhaps it’s a bit too relaxing: my wife had to go and have a nap after she heard the complete piece. :)

Let me know what you think about it — any and all opinions are, as always, more than welcome.

Download

Avoid Javascript’s ‘with’ keyword

Javascript is a fantastic language — in fact, it’s become the language that I do most of my programming in nowadays. It’s flexible, fast, and powerful. Unfortunately, though, it suffers from a few flaws, which, although not critical, can be frustrating. One of the potentially most confusing features is the with keyword, which promises a lot, but can really just make life difficult.

The with keyword might appear to be harmless enough: it allows you to avoid typing long references; instead of

ah.woom.ba.weh.lyric = 'In the jungle';

we can type

with (ah.woom.ba.weh) {
  lyric = 'In the jungle';
}

But what happens if we happen to have a global variable named lyric? In the example below, which lyric should be modified?

lyric = 'In the jungle';
with (ah.woom.ba.weh) {
  lyric = 'The mighty jungle';
}

The simplest way to deal with this issue is to use a variable:

var a = ah.woom.ba.weh;
a.lyric = 'The mighty jungle';

Now there is no ambiguity.

Based on a post by Douglas Crockford at the YUI Blog.

Just to say

I would die a thousand times,
cross the deserts, tear the skies;
oh I would do it all

I would do it all for you
just to say that I love you,
that I love you.

Download

Comments transferred from Trax In Space and Modplug Central.

Twelve Nineteen

This one’s actually been sitting on my computer for a month or so now — I just haven’t been able to render it to wave, because my system just wasn’t fast enough. Today, though, I got a new motherboard, CPU, and RAM, and everything just purrs along, barely touching the processor. Very Happy

Anyway, about the music itself. This piece is basically me having fun with Kontakt — each of the eight instruments has fairly complex insert effect chains, a couple of send effects, and a couple of modulated group inserts, too. Smile Basically, lots of effects, for some nice sound degradation.

Because I’m still not a fan of OpenMPT’s automation handling, I managed to find a nice little workaround, that I used on a couple of instruments: I modulate various effects using the MIDI volume. This means that working with the modulation is much more immediate, and it also means that I can modulate a couple of different effects simultaneously completely independently.

The piece is, hopefully, quite fun to listen to — it was definitely fun to write. Let me know what you think!


Comments transferred from Trax In Space and Modplug Central.

The amazing Regret Index

Ryan North, of Dinosaur Comics fame, has crafted an awesome little webapp: The Regret Index. Essentially, you vote on whether or not you regret certain things. You can even add your own regrets or search for regrets.

Most of them aren’t particularly serious, and a lot of them are kinda fun. It’s worth having a browse through the archive of regrets, looking at the votes, and reading the comments people have left. Some of my favourite ‘regrets’ on the site include

  • Eating a kitten just to prove you’re evil
  • Supergluing your foot to the bathroom floor
  • Constantly fearing regret
  • Starting to think all these questions are addressing you specifically

Check it out — it’s well worth a look.

Internet Explorer DOMDocument & XPath

I discovered a couple of interesting things about Internet Explorer’s MSXML2.DOMDocument object. It turns out that there are essentially two “production-quality” versions of it available: 3.0 and 6.0. Version 6.0 is much the better version, but it’s quite new, and not available on all systems. This means that in IE7 and IE8, instantiating a new MSXML2.DOMDocument object gives you version 3.0.

Now most of the time, this isn’t a problem. Today, though, I was constructing an XPath expression that used the substring() function; something like this:

//Element[substring(Child, 1, 3)='abc']

This will pull all Elements with a Child element whose value’s first three characters are “abc”. Not particularly complex. It turns out, though, that version 3.0 or the DOMDocument doesn’t actually use XPath as its default language: it uses a bastardised version of XPath called “XSLPatterns”, which just so happens to not support the substring() function at all.

So how do we deal with this situation? One way is to always instantiate version 6.0 of the DOMDocument:

xd = new ActiveXObject('msxml2.DOMDocument.6.0')

The problem with this approach is that, like I mentioned earlier, you can’t always be guaranteed that your users will have version 6.0 installed (even though it’s a free download). The safer way to deal with this problem is to switch the expression language to XPath in your 3.0 object:

xd = new ActiveXObject('msxml2.DOMDocument');
xd.setProperty("SelectionLanguage", "XPath");

The advantage of this approach is that you’re not specifying a version, so when MS eventually changes the default to 7.0 (or whatever), your code will work without a problem.

For more information on this, check out  this blog post from Microsoft’s XML team, which goes into a little bit more detail.

Quiet Rituals

Completed: Thursday, April 16, 2009 (Download)

Finally, after quite a while, I’ve got a new track out. :) It’s been sitting on my computer for a couple of weeks now, and there are still a few things in it that I would like to iron out, but my inability to get the time to do so means that it’s just been bugging me. So now I’ve decided to just put it up as is.

Anyway, the track itself is quite a simple piece: I did, in fact, try to make it simple. It’s somewhat influenced by Ravel’s Bolero and the Newsboys’ The Orphan, in that it is constantly building by both adding and removing layers. It’s also, perhaps, influenced a bit by some of Coldplay’s stuff: I was listening to Viva La Vida and Prospekt’s March recently, and I was interested to note that in lots of those tracks there’s the same ‘kick on every beat’-type thing going on.

Let me know what you think.