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.
Comments

noaktree
Sounds fucking neeto keen dude.

September 20, 2005 10:48 PM

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]
September 20, 2005 11:31 PM
Advertisement
Latest Entries
Mechanics of Flow in Gold Rush.
7039 views
Gold Rush
5515 views
DungeonBot3000: Inventory and Items Display
5823 views
DungeonBot3000: Postmortem
5742 views
DungeonBot3000: Boss Fight Scripting
5132 views
DungeonBot3000: Friggin Laser Beams
5717 views
DungeonBot3000: Video
4853 views
DungeonBot3000: Stats, Combat, and Items
6926 views
DungeonBot3000
5058 views
Diablo:Immortal
13982 views
Advertisement
Advertisement