Table of Contents

Advanced Sound Engine Integration

Sound Engine Initialization

Note.gif
Note: Before initializing the sound engine itself, the memory manager and streaming manager must be initialized. Please refer to the section Initialize the Different Modules of the Sound Engine for more information about global initialization.

Initializing the sound engine itself is done by calling the AK::SoundEngine::Init function. The default initialization shown in Initializing the Sound Engine is copied here for your convenience.

#include <AK/SoundEngine/Common/AkSoundEngine.h>                // Sound Engine

(...)

bool InitSoundEngine()
{
    (...)

    //
    // Initialize the sound engine
    // Using default initialization parameters
    //
    
    if ( AK::SoundEngine::Init( NULL, NULL ) != AK_Success )
    {
        assert( ! "Could not initialize the Sound Engine." );
        return false;
    }

    return true;
}

The AK::SoundEngine::Init function takes 2 parameters.

First parameter : AkInitSettings * in_pSettings

  • This structure contains platform-independent information to initialize the sound engine.

Second parameter : AkPlatformInitSettings * in_pPlatformSettings

  • This structure contains information specific to each platform to initialize the sound engine.
Caution.gif
Caution: Both parameters are considered optional, but we strongly recommend you customize these values to the needs of the game, because the default values often require high memory usage. Depending on the game type, memory settings should be adjusted carefully. Refer to the section Determining an Appropriate Size for Your Memory Pools for more information.

Customizing the Creation Parameters

The AkInitSettings and AkPlatformInitSettings structures must be initialized using the AK::SoundEngine::GetDefaultInitSettings and AK::SoundEngine::GetDefaultPlatformInitSettings functions.

Initializing the structure using these two functions fills the structures with the default parameters. This is useful because:

  • Once initialized, the parameters that need to be modified can easily be changed to fit the needs of the game.
  • Using default parameters ensures code backward compatibility, since later versions of the SDK may add more initialization parameters to the structures.

The following sample code demonstrates how to initialize the two main pools of the sound engine.

#include <AK/SoundEngine/Common/AkSoundEngine.h>                // Sound Engine

(...)

bool InitSoundEngine()
{
    (...)

    //
    // Create the Sound Engine
    // Using modified initialization parameters
    //
    
    AkInitSettings          initSettings;
    AkPlatformInitSettings  platformInitSettings;
    
    AK::SoundEngine::GetDefaultInitSettings( initSettings );
    AK::SoundEngine::GetDefaultPlatformInitSettings( platformInitSettings );
    
    initSettings.uDefaultPoolSize           = 4 * 1024 * 1024;  // 4 MB
    initSettings.uMaxNumPaths               = 16;
    
    platformInitSettings.uLEngineDefaultPoolSize    = 4 * 1024 * 1024;  // 4 MB
    
    if ( AK::SoundEngine::Init( &initSettings, &platformInitSettings ) != AK_Success )
    {
        return false;
    }

    return true;
}

For more information on choosing memory pool sizes, refer to Optimizing Memory Pools.