Project Portal: Update 4

Another big step of my Project Portal mod is complete. Yesterday, I finished replacing all of the delightfully depressing dialogue of the Aperture Science standard-issue floor turret.

I hadn’t planned on replacing any dialogue when I started this mod. I was really only interested in designing SFX. I don’t know what it was, but one day it just clicked. “Stosh, you must turn your girlfriend into a Portal turret”, a voice said in my head. So I set out to do exactly that.

For recording, I wanted to try a technique similar to the way Ellen McLain voiced GLaDOS. First, I took all of the lines and ran them through a text-to-speech app. I then took those lines and (to use technical terms) autotuned the crap out of them. This resulted in some really neat reference dialogue for the talent to go off of.

The first thing we tried in the recording session was voicing some lines exactly as the reference dialogue sounded. While these takes sounded pretty cool, they obviously lacked any emotional inflection, which I didn’t like. So next, we tried a hybrid of the reference dialogue and how a real person might say the line. I was really happy with the way that turned out, but for fun, we tried ditching the reference dialog altogether to try the lines however she felt like doing them. It was these takes that I was really impressed with. In fact, most of the lines I chose to use were from that final set. You can listen to a couple of the dry and processed recordings, as well as the original game files below.

[soundcloud url=”″]

I kind of had mixed emotions after realizing most of the takes I used didn’t sound much like the reference lines I created beforehand. In the end, was it worth the trouble? I say yes. I think the process of mimicking the reference really helped to get a unique style of voice going. Without the effort, I don’t think the lines would’ve turned out as nice as they did.

Other Project Portal Updates

I’ve finished quite a few more sound effects since the last update:

  • All portal enter/exit components
  • All energy ball components
  • All other floor turret components
  • Energy platform loop
  • A few randomly triggered ambience bed components
  • Fluorescent hums
  • All Elevator/Buttons/GLaDOS beeps and dings
  • Character free-fall “whooshing”
  • Character landing impacts

I feel like I’m learning new things every step of this process. For instance, Valve (and I’m sure plenty of other developers) were smart and efficient enough to create a fluorescent hum by looping a file only 735 samples (0.016 s) in length! It seems so obvious to me now, but I’m not ashamed to admit it was a little bit of a revelation for me at the time.

Another lesson learned: Cue Points. This was a less graceful lesson. I won’t go into details, but it took me way too long to figure out. Certain sound objects in the game (especially those that loop) require embedded points in the files to tell the engine where the start and/or end of a sound is. I didn’t really understand the point of these at first. I figured, hey if my .wav file loops perfectly, why do I need to explain where it starts and ends? After a little bit of digging around I began to realize cue points bring a lot more flexibility from a single sound file. They can tell the game to trigger or loop only a specific portion of the file rather than all at once. Once I wrapped my head around that, it was easy to realize the potential creative and efficient implications of cue points.

Last but not least, a lesson half learned. I had a bit of a scare when I tried to implement the floor turret dialogue files I had spent so much time on. To put it simply: they wouldn’t work. The game repeatedly triggered the original files no matter what I tried. I checked the usual suspects. I made sure the new files had the correct file path/name/sample rate/bit depth/etc. No strange metadata (or cue points!) to be found in the originals. After some research online, I found a number of people had the same problem. For some reason, the turret dialog seemed to be locked to the original files. Eventually it clicked in my head to rename the new files and rewrite the turret soundscript to match the new names instead. This way, the game would be forced to at least attempt to play the new files. And what do you know? It worked like a charm!

So, I put that here for the chance someone else might be in a similar position with their Valve custom sounds. If anyone is, and needs help rewriting the script, I’d be glad to give a more detailed explanation of my process. Just get in touch!

View all Project Portal Posts

Leave a Reply

Your email address will not be published. Required fields are marked *