Monday, 15 February 2016

Making the Star Wars Droid Translator Helmets: Droid Sounds Are Hard

When it came time to figure out a way to have my Star Wars Droid Translator Helmets speak "Droid" language, I didn't realize what a big job it was going to be.

The good news is that I've done the hard parts so you can reap the rewards!  Click read more to learn and download.

This is a followup to my original post about the details behind designing and building the Star Wars Droid Translator helmets.

Droid Sounds Are Hard

I mentioned in the official project writeup that Brett Burt (sound designer for Star Wars) has said that making R2D2's voice was one of the hardest things he had done.  I understand why, and so will you if you don't already know.

When I started the project, I thought I would just get by with some 'fake' Droid sounds - I'll generate some beep and boop tones and notes, probably a Markov Chain to guide some notes to others so that the "random" notes sound good and make acoustic sense.  I was very wrong.  I played with dual tones and sliding tones and junk but it was obviously hopeless.  Beeps and Boops sound like nothing more than, well, beeps and boops.  They sound nothing at all like a language, not even a fake one.

This is because "Droid" like in the Star Wars movies is far more than just beeps and boops. If you listen carefully to R2-D2 or BB-8 for example, you'll hear that the sounds they make are chock full of more than just beeps and boops!  It's even more than just one sound at a time - there are multiple different types of sound at once, sliding and changing tones, all sorts of things.  It ends up incredibly melodious and emotional.

After failing to make my own programmatically-generated Droid language sounds, I searched the Internet to see if anyone else had solved the problem.  They had not.  Nothing even close.

The Solution

I went with the next best thing: creating a sample set of sounds that could be played in any order, for any length of time, and would always sound good no matter when I stopped playback (as long as I always let a sample finish playing - not cut off in the middle of it.)

This meant a lot of small samples.  They needed to be diverse and varied, they needed to sound good in any order with no annoying and repetitive bits, and they needed to be able to be played back-to-back completely seamlessly (meaning you can't hear where one sample ends and the next begins - it just plays as one long sound.)

This was a lot of work, and nothing particularly interesting about it.  Just a lot of audio editing work, testing, re-testing, and trial and error.  Some audio editing was in there as well.  R2D2translator.com was invaluable.

In the end I made two sample sets - one for each of two Droid "Voices" that I needed.




Making a Second "Voice"

For my project I needed two Droid voices.  You can't use the same basic sample set for both Droids - even if you use different samples it all sounds like the same Droid talking.  I did some audio editing to make a second sample set sound different enough that it was a different Droid.

I thought pitch shifting the samples (like making your own voice sound like a rabbit or Darth Vader) would do the trick but it didn't work for me.  I ended up using a function called "Censor -> Gibberish" in the program Goldwave.  It worked well enough do to the trick - but if I even need a THIRD Droid voice I'll need another solution!

Hardware and How To Use

If you want to use the sample sets I made to make a device that speaks Droid as simply as possible, here is what you need:

  • Get Adafruit's Audio FX Sound Board + 2x2W Amp - WAV/OGG Trigger -16MB (2MB version will work too)
  • Follow their directions on getting it working - you will need trigger inputs 0-4 only.
  • Download one of my WAV file sample sets: QT-314 or RT-K5 (those are the names of my Droid Helmets in the project I did these for.)
  • Upload the WAV files to the audio board (they will be named things like T01RAND3.WAV and so on).  Remove any samples already on the board first.
  • When you're ready to play, connect one of the trigger inputs 0-4 on the audio board to GND.  As long as that trigger pin is LOW, the board will play sounds from that trigger's sample set.  So trigger 0 has different sounds than trigger 1, etc.
  • When you want to stop talking, disconnect the trigger.  The board will finish playing the current sample, then stop.
There are five sample sets (Triggers 0 through 4) for each Droid voice.

RT-K5 sounds fast, bright, and chirpy - very much like R2D2.  QT-314 sounds lower and slower.

Downloads and Resources