Jump to content
  • Advertisement
  • entries
  • comments
  • views

Noise and sound

Sign in to follow this  


In my various projects thus far, whenever I've implemented sound effects, I've always gone with simply whatever .WAV files I could google and/or generate on my own using my crude haxor foley artist skills and a microphone. Consequently, my sound effects have generally been very asstastic.

Quite awhile ago, I picked up the Game Programming Gems 3 book and in it there was an article, "The Stochastic Synthesis of Complex Sounds" by Phil Burke. It was an awesome read, and it opened my mind to the possibilities of sound synthesis as an answer to my problem of pathetic foley art kung-fu. The source code on the CD for that chapter is a little bit messy (uses a few macros, ugh, and public data members for the generator outputs, bleargh) but it does provide the source to a whole lot of units for filters, noise generators, etc... Which I can hack to my nefarious purposes.

A few months ago, as part of the continuing development on the Accidental Engine, I wrapped up the libnoise library for exposure to Lua. Now, I'm looking at doing the same thing to Burke's unit classes. I like the idea of chaining various units as libnoise does, and since Perlin noise and sound-noise are virtually identical, I assume the approach should work as well for the sound-noise units. It'll take a bit of restructuring, and I haven't yet gone through all the headers to see what I'm up against, but I should be able to set things up so that the sound generation works similarly to libnoise (and possibly merge the two code-bases into one library, since the crossover potential between them is so potentially extensive).

Ideally, I'd like to expose variants of Burke's unit generators to Lua script, to more easily allow experimentation. The book source includes sample generators for all sorts of cool sounds (rocket engines, falling rain, helicopter rotors, etc...) all generated 'on the fly' so to speak, rather than sampled via microphone. Neat as hell, if you ask me. It'd be nice to have a clean interface for creating unit generators and experimenting with chaining them together in an interpreted environment, to avoid the need for recompilation every time I change a filter setting or modify a parameter.

Anyway, that is what is going to occupy my brain for the remainder of this evening, and possibly several evenings to come (depending on how many wrinkles I have to iron out).

Although, I'm not sure if the golem project will utilize noise generated on the fly, or if I will simply load .WAVs of synthesized sounds. It all depends on the kind of performance I can squeeze out of the generation code.
Sign in to follow this  


Recommended Comments

Indeed it is. I've got the basic framework in the works (with the base class interface done), and I'm in the process of implementing the various generator classes as derived modules. Currently, I've got the White noise, Red Noise, Constant Value, Adder (adds two generators, my own addition to implement summing of noise sources and operators), and Slew Rate Limiter modules re-worked and exposed to the lua interface as modules. I've successfully re-created the rocket-engine generator that Burke implements as part of the chapter sample code, as chained-together modules in a style similar to how libnoise works. Nifty keen. [grin]

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!