Back some time in 1998, a friend I used to work with named Jeff Robbin
approached me about a project he and Bill Kincaid were working on, which
was called DAS at the time (not sure what that stood for, probably Digital Audio
Something-or-other), but would
eventually become SoundJam (and then SoundJam MP),
and would then eventually
become iTunes (once Apple bought it).
At the time, in my usual
myopia, I thought "who the hell would want a Mac version of
WinAmp?!?", silly me... I had just had
my first kid, and was winding down my work on the
Java Runtime and
JITc , and was
transitioning over to the OS group,
so I was pretty busy, and
my job was secure and cushy, and I didn't feel like taking any risks. I
was not interested, but told him that I'd be happy to play with the app
once they had it working.
Their development continued, and they added disc burning to the app. At
some point, Jeff and I were chatting about his disc burning feature, and
he said he needed some way to inform the user that the burn was done.
DAS being a sound-making app, he wanted a sound to alert the user,
something simple. Since I'm a hobbiest musician, and had a recording
setup, I told him I'd tinker around and see if I could some up with
something.
At the time (this was mid-1999), my computer was a Mac PowerPC tower
(Blue and White PowerMac G3).
Although a guitar player, I was dabbling in MIDI,
primarily for drums and pads. I
was big-time into the various extensions of General MIDI,
as I wanted something
fairly standard, and had settled on Yamaha's XG extensions,
as they seemed the most
rational and versatile, and I had bought a Yamaha MU90R
on advice from a friend (Tom O'Brien). I had then purchased this PCI
card for the tower called a Yamaha SW1000XG,
which had a 64-voice XG chipset, essentially making it a souped-up
Yamaha MU90R, but could transfer all the audio directly to the computer
via PCI, staying completely in the digital realm. Nifty! For audio
recording/capture, I was running SoundEdit 16
from (then) Macromedia, as well as Digital Performer
from MOTU, and some ASIO drivers
for the SW1000XG. I was also using this wacky freeware sequencer app
called MIDIGraphy, written by a
Japanese guy who used the handle Tontata, again recommended by Tom; it
was just a straight-forward SMF file player with some limited editing
capabilities. This was back in the OMS days
(Opcode MIDI System, Open MIDI System;
insert obligatory comments about the evils of Gibson buying Opcode and
putting them out of business...), and there were OMS drivers for the
SW1000XG.
I was looking for something "simple" that would grab the user's
attention. I thought a simple sequence of notes, played with a
clean-sounding instrument, would cut through the clutter of noise in a
home or office. So I had two tasks: pick an instrument, and pick a
sequence of notes. Simple, right? Yeah, says you; everyone's an
armchair musician...
I was really into the sound of marimbas
and kalimbas at the time, so I
thought I'd try both of those. I also went through bank (after bank) of sounds
built into the SW1000XG, auditioning instrument sounds, and found three
other instrument sounds that I liked:
a harp, a
koto (Japanese zither), and
a pizzicato string sound
(that's the sound a violinist makes when plucking the
string, rather than bowing it).
For the notes, I wanted a 3-note sequence, or perhaps 4 notes. I was
going for simple, and didn't have much time to devote to being creative,
so no fancy timing here, just sequenced notes. I wanted a happy feel,
so notes from the major scale, focussing on I, III, IV, V, and
VIII (the octave).
Now a normal person would have just started playing around on the
keyboard. But I'm not normal, and decidedly not a keyboardist... So I
went all "left brain" on this one (I'm normally used to avoiding that
side of the brain when playing guitar or recording), and decided to write a program
to generate the various permutations of the notes.
If memory serves (and this part is a bit fuzzy, and I don't have the
program or notes anymore), I used
Macintosh Common Lisp
(being a language junky and devoted to lisp-like dialects...) to write a
quick-n-dirty Lisp
program to permute the various combinations of notes from various sets I picked: I,
III, V; I, IV, VIII; I, V, VIII; and I, III, V, VIII. The output of
this program was a (Lisp-style)
list of lists of numbers,
e.g. for III, V, VIII it was something like ((3 5 8) (3 8 5) (5 3 8) (5
8 3) (8 3 5) (8 5 3)), or some such. I then had another Lisp function
that would print these out sequentially, in a more usable form, like
so:
3 5 8
3 8 5
5 3 8
5 8 3
8 3 5
8 5 3
I was geeking out, I admit it. So sue me...
So now I had my note sequences, but I had to get it into a form that was
suitable for the sequencer to actually play it. I toyed around with
various mechanisms for converting a textual representation of notes to
MIDI, but eventually I ended up using (if memory serves)
a perl MIDI module
called MIDI-Perl.
I pasted my list of notes in, used some regular expression
transformations, probably with BBEdit,
to convert those to a perl array
of arrays (ala ([3, 5, 8], [3, 8, 5], ...)). I used a loop to iterate
over the arrays, using MIDI-Perl to write the notes out at fixed
eighth-note timing, with the remainder of the measure between each
sequence. The result was an .smf/.mid file
(Standard MIDI File)
that I could then open up in MIDIGraphy.
Once I had it playing in MIDIGraphy, I played around with tempo a bit,
and rejected some of the permuted sequences that just didn't sound good
at all. I then pasted it out four times, and put bank change events in,
so that the result would be a continuous playback of the sequences for
the five different instruments I had settled upon (Koto, Pizzicato
strings, Marimba, Harp and Kalimba). After listening to the various
instruments playing the various sequences, I eliminated some that didn't
sound great, just deleting those ranged from the sequence. After doing
this for a bit, I had a sequence that I thought comprised the best
survey of instruments and note-sequences.
I then fired up SoundEdit 16, and set it to record from the SW1000XG's
internal interface. I hit play in MIDIGraphy, and let it all roll.
When it was done, I hit stop in SoundEdit 16, and saved the result. I
then carved up the full-length recording into individual sections, one
for each sequence and instrument, with names like: 358-kalimba,
358-pizzicato, 418-kalimba, 418-marimba, 481-kalimba, etc. This was
tedious, and I probably could have geeked out some more and automated it
somehow, but it's not like it took very long in all. I ended up
eliminating the Koto, as I was not happy with the sound, so I ended up
with 4 instruments and several note sequences, saved
as AIFF files.
Here is the complete list:
After listening to them all one final time, I liked the marimba sounds
the best, and preferred the ascending sounds. I settled on
158-marimba.aiff as my favourite.
I then converted them to .snd
(SND, a Mac sound file format
using 'snd ' resources) files, and
shipped them off to Jeff. I told him my recommendation, and after
listening to some, he agreed, so he thanked me, and said he would be
using it. Next time I got a drop of the app from him, it was using that
sound for the disc burn completion sound. I thought that was pretty
cool. All in all, I probably spent a couple hours on it, time I was
more than happy to give to a friend who was developing a music
app.
SoundJam MP was released, sold reasonably well, but not anything
spectacular. Some months later, and I hear from Jeff saying that Apple
bought it (to later become iTunes), and Jeff, Bill and
Dave Heller (also working on it) were
hired along with it. Good for him! When Apple finally released it (in
2001), it still had the disc burning sound, which, again, I thought was
pretty cool!
A couple years later, the installer team decided that they would use
this same "completion" sound in the installer, for the sound that
happens when an install completes.
Fast forward quite a few years, and the
iPhone comes out. I was not involved in
development of the iPhone, nor iOS,
although I was unsuccessfully
courted by the iPod software
guy (Tony Fadell) right when I was considering the move to work on audio
software (I went to the Pro Apps group at Apple instead). So imagine my
surprise when the iPhone ships, and the default text message tone is...
"158-marimba", now going by the clever (and not actually accurate, from
a music theory perspective) name "Tri-Tone". Time goes by, and this
sound becomes iconic, showing up in TV shows and movies, and becoming
international short-hand for "you have a text message"...
Wow! Who'd
have thought?
Here are some of the other sounds that could have been selected instead: