Chili Sound Pack
The Chili Sound Pack is an optional pack of code and .dlls you can add to Chili Framework projects to enable the use of sound effects.
Tutorial
Here is a link to a video explaining how to integrate the sound module into a framework solution and how to use the Sound
and SoundEffect
classes. Check the downloads section below for the necessary stuff to follow along. (Note that newer versions of the framework already have the sound stuff included by default.)
Extra Notes / Errata
- In the tutorial video, the constructor for
SoundEffect
is not fully explained. There are 3 parameters. The first parameter is, as shown in the video, a list ofstd::wstring
s which are the names of .wav files to be loaded. The second parameter is abool
, and if passed in as true, it allows the loading of .wav files to soft-fail (failure to load the file will cause a silentSound
object to be used instead). The third parameter is afloat
which is the standard deviation used to generate the pitch shift for each playback. Larger values create more dramatic swings in pitch.
- In the portion where I demonstrate soft-fail loading of a
Sound
with atry
...catch
block, in the body of thecatch
I assign a default-constructedSound
object, but this is unnecessary (if the constructorthrow
s, the object will be put into a default-constructed, i.e. empty sound, state).
- Never EVER create a
Sound
(or aSoundEffect
) object in the global scope. If you do so, theSoundSystem
object will end up getting destroyed before the Sound object, and then you're FUCKED. I warned you.
Downloads
Here is the sound module zip file with the code and .dll files for the sound module.
To follow the tutorial on the sound module, you will need the following zip files as well:
- The test solution zip
- The test sound files zip
Inner Workings of the Module
The inner workings of the XAudio2 code are explained in the H.U.G.S. series. The code discussed there is somewhat different than the code in the sound pack, but the fundamentals are the same. If you want the details, see the video links below. Note that these tutorials assume a relatively strong command of the C++ language.