Chili Sound Pack

From Chilipedia
Jump to: navigation, search

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 of std::wstrings which are the names of .wav files to be loaded. The second parameter is a bool, and if passed in as true, it allows the loading of .wav files to soft-fail (failure to load the file will cause a silent Sound object to be used instead). The third parameter is a float 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 a try ... catch block, in the body of the catch I assign a default-constructed Sound object, but this is unnecessary (if the constructor throws, the object will be put into a default-constructed, i.e. empty sound, state).
  • Never EVER create a Sound (or a SoundEffect) object in the global scope. If you do so, the SoundSystem 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:

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.