Tag Archives: announce

Collaboration – The Lady of Thorn Keep

One of my on-going writing projects is a collaboration with artist and friend Stephanie Stone.  Together we’re bringing together the world of Thorn Keep, a fantasy setting where clans of anthropomorphic humans suffer through nominally fantasy setting kinds of things… war, politics, betrayal, etc.

The overall world was Steph’s invention.  She came to me with an initial plot and a few key characters.  It was my job to flesh things out and breath some life into the skeletal beginnings of the concept.  Once I’ve written and edited a section of story, Steph will then produce an artistic rendering from that segment.  The image you see to the right is the first such example.  You can keep up with the story either through the artist’s Deviant Art account, or through my pages here.   The original piece produced is then auctioned off over at FurBuy.

I will also keep a running storyboard here as a page off the blog.  We’ve just put out our second installment… Stay tuned for more updates.

Exit Structured Audio, Enter Home Grown

In a previous blog post, I had explored using MPEG4 Structured Audio to produce the sounds that my robots will make in future animation.  A few weeks later, I find that the learning curve for the tools is a bit too steep for my liking… so I decided to start from scratch… and write my own.

Yeah, I understand that people of far greater sound knowledge and experience put a LOT of effort into Structured Audio, but that doesn’t help me now.  Maybe this tool that I’m building (which doesn’t quite have a name yet) will iterate toward the stuff I’m giving up… but I’m sure I’ll learn quite a bit about audio programming along the way.

As it turns out, most of the tool chain that I had previously built still works! I’m just replacing sfront with something that I’ve written… and if you’re curious what a program looks like which generates .wav files? here it is!


use strict;

my $filename = shift @ARGV;
die "You must specify an output file." unless $filename;

my %aliases = (
   C4 => 261.626,
   D4 => 293.665,
   E4 => 329.628,
   F4 => 349.228,
   G4 => 391.995,
   A4 => 440.000,
   B4 => 493.883,
   C5 => 523.251

my @song = qw(B4 A4 G4 A4 B4 B4 B4 A4 A4 A4 B4
              D4 D4 B4 A4 G4 A4 B4 B4 B4 B4 A4 A4 B4 A4 G4);
my $duration = (scalar @song) * 0.5 + 0.5;
my $volume = 8000;

my @notes;
push @notes, $aliases{$_} for @song;

my $channels = 1;
my $samplerate = 44100;
my $bitspersample = 16;
my $byterate = $channels * $samplerate * $bitspersample / 8;
my $blockalign = $channels * $bitspersample / 8;
my $samples = $samplerate * $duration;
my $dataChunkSize = $samples * $bitspersample / 8;
my $chunkSize = 36 + $dataChunkSize;

my @values;
for (my $i = 0; $i < $samples; $i++) {
   my $note = int($i / $samplerate * 2);
   my $freq = $notes[$note];
   my $x = $i * $freq / $samplerate * 3.14159 * 2;
   push @values, int($volume * sin($x));

open(FILE, "> $filename") || die "could not open $filename";
print FILE pack('NVN', 0x52494646, $chunkSize, 0x57415645);
print FILE pack('NVvvVVvv', 0x666d7420, 16, 1, $channels, $samplerate,
     $byterate, $blockalign, $bitspersample);
print FILE pack('NV', 0x64617461, $dataChunkSize);
for my $sample (@values) {
    print FILE pack('v', $sample);


Yup. That’s the whole thing.  No libraries. No weird complexity.

I decided to write the thing in perl for the practice.  I use an awful lot of perl at work, so as this project grows, it’ll force me to learn the proper perl patterns.

If you’re curious what that program produces? Here’s the converted MP3:

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Project: Mars

Project: Mars is the more generic name for a podcast concept that I came up with which is loosely modeled on This American Life.  Essentially, what I would like to do is explore the every day life of the lower to middle class person living in a city on Mars.   To do this successfully, I feel as though I need to start with a realistic setting.  For that reason, I plan on modeling out an entire martian city of 2.9 million people.  The city was originally a colony designed to house about 10,000 settlers, but over time had grown beyond the capacity of its original colony plan.  What compromises did the settlers make to allow for added population?  How do you plan cities on Mars? What are the civil engineering challenges?  These are all questions that I hope to find answers to as I explore the topic.

Of course, none of this has started yet… what you see here is a very humble beginning… and I decided to start with this image of Mars at sunset.

Project MarsWhat I imagine a sunset on Mars to look like from orbit. Sorry about the lens flare.

It’s been a while since I create an image exclusively in the GIMP.  There’s something satisfying about taking a bunch of 2D tools on a 2D canvas and ending up with something 3D.   The image to the left extensively uses the Plasma Cloud render filter, Lens Distortion Filter, some creative use of layer modes (additive, multiply, screen, etc), and of course the Lens Flare.

A change in focus

So I gave Drupal a try but found that I had no patience for actually writing HTML or messing with the hundreds of little plugins… blah. How things have changed… so.. hello WordPress!

A couple weeks ago, I had decided to enter the Exile Villify video contest. I started down the road of modeling out the various elements that I wanted in the video … but a combination of lazyness and Rock Band 3 got in the way.

I did learn an awful lot about the subdivision surfaces in blender, though… so I can’t say that it was a complete waste of time…  I found that the objects in this scene, though they look primitive, are actually pretty complex… The turret in particular, with its rounded shape yet sharp edges.  I definitely had to get competent in cinching edges and marking seems.

Since acknowledging that I won’t make the deadline for the music video, I’ve decided to morph the entry in my In-Flight Projects page to a more general non-Aperture Science branded set of robots making music.  It’ll be a good excuse for me to mess with the Structured Audio bits of MPEG4.