Dokumentation        Tutorials        Framework-Header

OpenAL Audio Framework Import-Header-Datei

Um das Audio Framework nutzen zu können, müssen Sie lediglich die Headerdatei OpenAL_Audio_Framework_Imports.h sowie die OpenAl_Audio_Framework.lib-Datei in Ihr Projekt mit einbinden und darüber hinaus alle dll-Dateien aus dem AudioFrameworkImports-Vereichnis in das Bin-Verzeichnis (bzw. in das Verzeichnis mit den ausführbaren Dateien) Ihrer Anwendung kopieren.


//-------------------------------------------------------------------------
// OpenAL_Audio_Framework_Imports.h --- Schnittstelle zwischen der
// Audio-Framework-Bibliothek und der Anwendung
// Copyright (c) 2011 by Alexander Rudolph spieleprogrammierung.net
//
// [...]
//-------------------------------------------------------------------------


#ifndef _OPENAL_AUDIO_FRAMEWORK_IMPORTS_H_
#define _OPENAL_AUDIO_FRAMEWORK_IMPORTS_H_

#include "AudioFrameworkImports/DirectXBasedMath.h"

#pragma warning(disable:4251)

#ifdef _MSC_VER
#define AUDIO3D_API __declspec(dllimport)
#else
#define
AUDIO3D_API
#endif

#define
Num_Reverb_Effects 113

AUDIO3D_API float g_EffectVolume;
AUDIO3D_API float g_MusicVolume;
AUDIO3D_API float g_VoiceVolume;

AUDIO3D_API float g_Max3DSoundDistanceSq;
AUDIO3D_API float g_Max3DSoundDistance;
AUDIO3D_API float g_MaxImmediate3DSoundDistanceSq;
AUDIO3D_API float g_MaxImmediate3DSoundDistance;

AUDIO3D_API long g_IDofInitialUsedReverbEffect;
AUDIO3D_API long g_NumSoundEffectsUsed;
AUDIO3D_API long g_IDofInitialUsedReverbEffect;

AUDIO3D_API void Load_SoundSettings_And_Init_Audio(char* pFile);
AUDIO3D_API void Shutdown_Audio(void);

AUDIO3D_API void Enable_ReverbEffects(void);
AUDIO3D_API void Disable_ReverbEffects(void);

AUDIO3D_API void Set_ReverbEffect(long ReverbDescID, long EffectID,
                                  long EffectSlotID);

// Sound Effects:

AUDIO3D_API void Set_MaxNumberOfSoundEffects(long NumSoundEffectsMax);

AUDIO3D_API void Add_New_SoundEffect(long soundEffectID,
                                     char* pSoundEffectFile,
                                     long numSourcesMax, float maxDistance,
                                     float gain, float rolloff,
                                     BOOL playLoop);

AUDIO3D_API void Unload_SoundEffect(long soundEffectID);
AUDIO3D_API void Load_SoundEffectList(char* pFile, char* pSoundDirectory);
AUDIO3D_API void Delete_SoundEffectList(void);

// pListenerOrientation := Camera Orientation
// Return Values: Sound Source ID

AUDIO3D_API long Play_SoundEffect(D3DXMATRIXA16* pListenerOrientation,
                                  long SoundEffectID,
                                  D3DXVECTOR3* pSourcePosition,
                                  D3DXVECTOR3* pSourceVelocity,
                                  bool useReverbEffect=false);

AUDIO3D_API long Play_SoundEffect_Immediately(
                               D3DXMATRIXA16*
pListenerOrientation,
                                              long SoundEffectID,
                                              D3DXVECTOR3* pSourcePosition,
                                              D3DXVECTOR3* pSourceVelocity,
                                              bool useReverbEffect=false);

AUDIO3D_API void Play_SoundEffect_Immediately(
                               D3DXMATRIXA16*
pListenerOrientation,
                                              long SoundEffectID,
                                              long SourceID,
                                              D3DXVECTOR3* pSourcePosition,
                                              D3DXVECTOR3* pSourceVelocity,
                                              bool useReverbEffect=false);

AUDIO3D_API long Play_SoundEffect(long SoundEffectID,
                                  bool useReverbEffect=false);

AUDIO3D_API long Play_SoundEffect(long SoundEffectID,
                                  D3DXVECTOR3* pSourcePosition,
                                  D3DXVECTOR3* pSourceVelocity,
                                  bool useReverbEffect=false);

AUDIO3D_API long Play_SoundEffect_Immediately(long SoundEffectID,
                                              bool useReverbEffect=false);

AUDIO3D_API long Play_SoundEffect_Immediately(long SoundEffectID,
                                              D3DXVECTOR3* pSourcePosition,
                                              D3DXVECTOR3* pSourceVelocity,
                                              bool useReverbEffect=false);

AUDIO3D_API void Play_SoundEffect_Immediately(long SoundEffectID,
                                              long SourceID,
                                              bool useReverbEffect=false);

AUDIO3D_API void Play_SoundEffect_Immediately(long SoundEffectID,
                                              long SourceID,
                                              D3DXVECTOR3* pSourcePosition,
                                              D3DXVECTOR3* pSourceVelocity,
                                              bool useReverbEffect=false);


AUDIO3D_API void Stop_SoundEffect_Immediately(long SoundEffectID,
                                              long SourceID);

AUDIO3D_API void Set_SoundEffect_ReverbEffectSlotID(long EffectSlotID,
                                                    long SoundEffectID,
                                                    long SourceID);

AUDIO3D_API void Set_SoundEffect_Pitch(float Value, long SoundEffectID,
                                       long SourceID);

AUDIO3D_API void Reset_SoundEffect_Pitch(long SoundEffectID,
                                         long SourceID);

// Listener Space := Camera Space
AUDIO3D_API void Set_SoundEffect_SoundDirection(
                                   D3DXVECTOR3*
pListenerSpaceDirection,
                                                float Cone_Inner_Angle,
                                                float Cone_Outer_Angle,
                                                float Cone_Outer_Gain,
                                                long SoundEffectID,
                                                long SourceID);

AUDIO3D_API void Set_SoundEffect_SoundDirection(
                                 D3DXMATRIXA16*
pListenerOrientation,
                                   D3DXVECTOR3* pWorldSpaceDirection,
                                                float Cone_Inner_Angle,
                                                float Cone_Outer_Angle,
                                                float Cone_Outer_Gain,
                                                long SoundEffectID,
                                                long SourceID);


AUDIO3D_API void Reset_SoundEffect_SoundDirection(long SoundEffectID,
                                                  long SourceID);

AUDIO3D_API void Set_SoundEffect_Volume(float Value, long SoundEffectID,
                                        long SourceID);

AUDIO3D_API void Reset_SoundEffect_Volume(long SoundEffectID,
                                          long SourceID);

AUDIO3D_API void Update_SoundEffect_Position(
                              D3DXMATRIXA16*
pListenerOrientation,
                                             long SoundEffectID,
                                             long SourceID,
                                             D3DXVECTOR3* pSourcePosition);

AUDIO3D_API void Update_SoundEffect_Velocity(
                              D3DXMATRIXA16*
pListenerOrientation,
                                             long SoundEffectID,
                                             long SourceID,
                                             D3DXVECTOR3* pSourceVelocity);


// Setter functions for various 3D Sound Parameter used when calling
// PlaySoundEffect(), PlaySoundEffect_Immediately(), Play3DSoundEffect() or
// Play3DSoundEffect_Immediately():
AUDIO3D_API void Set_SoundEffect_ReverbEffectSlotID(long EffectSlotID);
AUDIO3D_API void Set_SoundEffect_Pitch(float Value);
AUDIO3D_API void Reset_SoundEffect_Pitch(void);

AUDIO3D_API void Set_SoundEffect_SoundDirection(
                                   D3DXVECTOR3*
pListenerSpaceDirection,
                                                float Cone_Inner_Angle,
                                                float Cone_Outer_Angle,
                                                float Cone_Outer_Gain);

AUDIO3D_API void Set_SoundEffect_SoundDirection(
                                 D3DXMATRIXA16*
pListenerOrientation,
                                   D3DXVECTOR3* pWorldSpaceDirection,
                                                float Cone_Inner_Angle,
                                                float Cone_Outer_Angle,
                                                float Cone_Outer_Gain);


AUDIO3D_API void Reset_SoundEffect_SoundDirection(void);

AUDIO3D_API void Set_SoundEffect_Volume(float Value);
AUDIO3D_API void Reset_SoundEffect_Volume(void);

// Music, Voice Samples:
AUDIO3D_API void Set_MusicStream_Volume(float Value, long StreamID);
AUDIO3D_API void Set_VoiceStream_Volume(float Value, long StreamID);

AUDIO3D_API void Reset_MusicStream_Volume(long StreamID);
AUDIO3D_API void Reset_VoiceStream_Volume(long StreamID);

AUDIO3D_API void Set_MusicStream_Pitch(float Value, long StreamID);
AUDIO3D_API void Set_VoiceStream_Pitch(float Value, long StreamID);

AUDIO3D_API void Reset_MusicStream_Pitch(long StreamID);
AUDIO3D_API void Reset_VoiceStream_Pitch(long StreamID);

AUDIO3D_API void Reset_MusicStream_SoundDirection(long StreamID);
AUDIO3D_API void Reset_VoiceStream_SoundDirection(long StreamID);

AUDIO3D_API void Set_MusicStream_SoundDirection(
                                   D3DXVECTOR3*
pListenerSpaceDirection,
                                                float Cone_Inner_Angle,
                                                float Cone_Outer_Angle,
                                                float Cone_Outer_Gain,
                                                long StreamID);

AUDIO3D_API void Set_VoiceStream_SoundDirection(
                                   D3DXVECTOR3*
pListenerSpaceDirection,
                                                float Cone_Inner_Angle,
                                                float Cone_Outer_Angle,
                                                float Cone_Outer_Gain,
                                                long StreamID);

AUDIO3D_API void Set_MusicStream_SoundDirection(
                                 D3DXMATRIXA16*
pListenerOrientation,
                                   D3DXVECTOR3* pWorldSpaceDirection,
                                                float Cone_Inner_Angle,
                                                float Cone_Outer_Angle,
                                                float Cone_Outer_Gain,
                                                long StreamID);

AUDIO3D_API void Set_VoiceStream_SoundDirection(
                                 D3DXMATRIXA16*
pListenerOrientation,
                                   D3DXVECTOR3* pWorldSpaceDirection,
                                                float Cone_Inner_Angle,
                                                float Cone_Outer_Angle,
                                                float Cone_Outer_Gain,
                                                long StreamID);


AUDIO3D_API void Update_MusicStream_Position(
                              D3DXMATRIXA16*
pListenerOrientation,
                              D3DXVECTOR3* pSourcePosition, long StreamID);

AUDIO3D_API void Update_MusicStream_Velocity(
                              D3DXMATRIXA16*
pListenerOrientation,
                              D3DXVECTOR3* pSourceVelocity, long StreamID);

AUDIO3D_API void Update_VoiceStream_Position(
                              D3DXMATRIXA16*
pListenerOrientation,
                              D3DXVECTOR3* pSourcePosition, long StreamID);

AUDIO3D_API void Update_VoiceStream_Velocity(
                              D3DXMATRIXA16*
pListenerOrientation,
                              D3DXVECTOR3* pSourceVelocity, long StreamID);


AUDIO3D_API void Update_MusicStream_Position(D3DXVECTOR3* pSourcePosition,
                                             long StreamID);

AUDIO3D_API void Update_MusicStream_Velocity(D3DXVECTOR3* pSourceVelocity,
                                             long StreamID);

AUDIO3D_API void Update_VoiceStream_Position(D3DXVECTOR3* pSourcePosition,
                                             long StreamID);

AUDIO3D_API void Update_VoiceStream_Velocity(D3DXVECTOR3* pSourceVelocity,
                                             long StreamID);


AUDIO3D_API void Reset_MusicStream_Position(long StreamID);
AUDIO3D_API void Reset_MusicStream_Velocity(long StreamID);

AUDIO3D_API void Reset_VoiceStream_Position(long StreamID);
AUDIO3D_API void Reset_VoiceStream_Velocity(long StreamID);

AUDIO3D_API void Set_MusicStream_MaxSoundDistance(float Value, long StreamID);
AUDIO3D_API void Set_VoiceStream_MaxSoundDistance(float Value, long StreamID);

AUDIO3D_API void Enable_MusicStream_ReverbEffect(long StreamID);
AUDIO3D_API void Enable_VoiceStream_ReverbEffect(long StreamID);

AUDIO3D_API void Disable_MusicStream_ReverbEffect(long StreamID);
AUDIO3D_API void Disable_VoiceStream_ReverbEffect(long StreamID);

AUDIO3D_API void Set_MusicStream_ReverbEffectSlotID(long EffectSlotID, long StreamID);
AUDIO3D_API void Set_VoiceStream_ReverbEffectSlotID(long EffectSlotID, long StreamID);


struct AUDIO3D_API CStreamDesc
{
    char Name[200];
};

class AUDIO3D_API CMusicTracks
{
public:

    long         NumMusicTracks;
    long         actualMusicTrackNr[4];
    CStreamDesc* Stream;

    long PlaybackThreadProcessorID;

    HANDLE       PlaybackThreadHandle[4];
    unsigned int PlaybackThreadID[4];
    bool         PlaybackThreadRunning[4];
    bool         PlaybackThreadStarted[4];

    CMusicTracks();
    ~CMusicTracks();

    void Add_MusicTrack(char* pFileName);
    void Delete_MusicTracks(void);
    void Load_TrackList(char* pMusicTrackList, char* pDirectory);
    void Set_PlaybackThreadProcessorID(long ProcessorID = -1);
    void Start_RandomMusicTrack(long StreamID = 0);
    void Start_FirstMusicTrack(long StreamID = 0);
    void Start_MusicTrack(long TrackID, long StreamID = 0);
    void Update(long StreamID = 0, bool RandomTrackSelection = false);
    void Stop_Playback(long StreamID = 0);
};

class AUDIO3D_API CVoiceSamples
{
public:

    long         NumVoiceSamples;
    long         actualVoiceSampleNr[4];
    CStreamDesc* Stream;

    long PlaybackThreadProcessorID;

    HANDLE       PlaybackThreadHandle[4];
    unsigned int PlaybackThreadID[4];
    bool         PlaybackThreadRunning[4];
    bool         PlaybackThreadStarted[4];

    CVoiceSamples();
    ~CVoiceSamples();

    void Add_VoiceSample(char* pFileName);
    void Delete_VoiceSamples(void);
    void Load_SampleList(char* pVoiceSampleList, char* pDirectory);
    void Set_PlaybackThreadProcessorID(long ProcessorID = -1);
    bool Start_Sample(long SampleID, long StreamID = 0);
    void Start_SampleImmediately(long SampleID, long StreamID = 0);
    void Stop_Playback(long StreamID);
};


enum ReverbEffectDesc
{
REVERB_EFFECT_GENERIC,
REVERB_EFFECT_PADDEDCELL,
REVERB_EFFECT_ROOM,
REVERB_EFFECT_BATHROOM,
REVERB_EFFECT_LIVINGROOM,
REVERB_EFFECT_STONEROOM,
REVERB_EFFECT_AUDITORIUM,
REVERB_EFFECT_CONCERTHALL,
REVERB_EFFECT_CAVE,
REVERB_EFFECT_ARENA,
REVERB_EFFECT_HANGAR,
REVERB_EFFECT_CARPETTEDHALLWAY,
REVERB_EFFECT_HALLWAY,
REVERB_EFFECT_STONECORRIDOR,
REVERB_EFFECT_ALLEY,
REVERB_EFFECT_FOREST,
REVERB_EFFECT_CITY,
REVERB_EFFECT_MOUNTAINS,
REVERB_EFFECT_QUARRY,
REVERB_EFFECT_PLAIN,
REVERB_EFFECT_PARKINGLOT,
REVERB_EFFECT_SEWERPIPE,
REVERB_EFFECT_UNDERWATER,
REVERB_EFFECT_DRUGGED,
REVERB_EFFECT_DIZZY,
REVERB_EFFECT_PSYCHOTIC,
REVERB_EFFECT_CASTLE_SMALLROOM,
REVERB_EFFECT_CASTLE_SHORTPASSAGE,
REVERB_EFFECT_CASTLE_MEDIUMROOM,
REVERB_EFFECT_CASTLE_LONGPASSAGE,
REVERB_EFFECT_CASTLE_LARGEROOM,
REVERB_EFFECT_CASTLE_HALL,
REVERB_EFFECT_CASTLE_CUPBOARD,
REVERB_EFFECT_CASTLE_COURTYARD,
REVERB_EFFECT_CASTLE_ALCOVE,
REVERB_EFFECT_FACTORY_ALCOVE,
REVERB_EFFECT_FACTORY_SHORTPASSAGE,
REVERB_EFFECT_FACTORY_MEDIUMROOM,
REVERB_EFFECT_FACTORY_LONGPASSAGE,
REVERB_EFFECT_FACTORY_LARGEROOM,
REVERB_EFFECT_FACTORY_HALL,
REVERB_EFFECT_FACTORY_CUPBOARD,
REVERB_EFFECT_FACTORY_COURTYARD,
REVERB_EFFECT_FACTORY_SMALLROOM,
REVERB_EFFECT_ICEPALACE_ALCOVE,
REVERB_EFFECT_ICEPALACE_SHORTPASSAGE,
REVERB_EFFECT_ICEPALACE_MEDIUMROOM,
REVERB_EFFECT_ICEPALACE_LONGPASSAGE,
REVERB_EFFECT_ICEPALACE_LARGEROOM,
REVERB_EFFECT_ICEPALACE_HALL,
REVERB_EFFECT_ICEPALACE_CUPBOARD,
REVERB_EFFECT_ICEPALACE_COURTYARD,
REVERB_EFFECT_ICEPALACE_SMALLROOM,
REVERB_EFFECT_SPACESTATION_ALCOVE,
REVERB_EFFECT_SPACESTATION_MEDIUMROOM,
REVERB_EFFECT_SPACESTATION_SHORTPASSAGE,
REVERB_EFFECT_SPACESTATION_LONGPASSAGE,
REVERB_EFFECT_SPACESTATION_LARGEROOM,
REVERB_EFFECT_SPACESTATION_HALL,
REVERB_EFFECT_SPACESTATION_CUPBOARD,
REVERB_EFFECT_SPACESTATION_SMALLROOM,
REVERB_EFFECT_WOODEN_ALCOVE,
REVERB_EFFECT_WOODEN_SHORTPASSAGE,
REVERB_EFFECT_WOODEN_MEDIUMROOM,
REVERB_EFFECT_WOODEN_LONGPASSAGE,
REVERB_EFFECT_WOODEN_LARGEROOM,
REVERB_EFFECT_WOODEN_HALL,
REVERB_EFFECT_WOODEN_CUPBOARD,
REVERB_EFFECT_WOODEN_SMALLROOM,
REVERB_EFFECT_WOODEN_COURTYARD,
REVERB_EFFECT_SPORT_EMPTYSTADIUM,
REVERB_EFFECT_SPORT_SQUASHCOURT,
REVERB_EFFECT_SPORT_SMALLSWIMMINGPOOL,
REVERB_EFFECT_SPORT_LARGESWIMMINGPOOL,
REVERB_EFFECT_SPORT_GYMNASIUM,
REVERB_EFFECT_SPORT_FULLSTADIUM,
REVERB_EFFECT_SPORT_STADIUMTANNOY,
REVERB_EFFECT_PREFAB_WORKSHOP,
REVERB_EFFECT_PREFAB_SCHOOLROOM,
REVERB_EFFECT_PREFAB_PRACTISEROOM,
REVERB_EFFECT_PREFAB_OUTHOUSE,
REVERB_EFFECT_PREFAB_CARAVAN,
REVERB_EFFECT_DOME_TOMB,
REVERB_EFFECT_PIPE_SMALL,
REVERB_EFFECT_DOME_SAINTPAULS,
REVERB_EFFECT_PIPE_LONGTHIN,
REVERB_EFFECT_PIPE_LARGE,
REVERB_EFFECT_PIPE_RESONANT,
REVERB_EFFECT_OUTDOORS_BACKYARD,
REVERB_EFFECT_OUTDOORS_ROLLINGPLAINS,
REVERB_EFFECT_OUTDOORS_DEEPCANYON,
REVERB_EFFECT_OUTDOORS_CREEK,
REVERB_EFFECT_OUTDOORS_VALLEY,
REVERB_EFFECT_MOOD_HEAVEN,
REVERB_EFFECT_MOOD_HELL,
REVERB_EFFECT_MOOD_MEMORY,
REVERB_EFFECT_DRIVING_COMMENTATOR,
REVERB_EFFECT_DRIVING_PITGARAGE,
REVERB_EFFECT_DRIVING_INCAR_RACER,
REVERB_EFFECT_DRIVING_INCAR_SPORTS,
REVERB_EFFECT_DRIVING_INCAR_LUXURY,
REVERB_EFFECT_DRIVING_FULLGRANDSTAND,
REVERB_EFFECT_DRIVING_EMPTYGRANDSTAND,
REVERB_EFFECT_DRIVING_TUNNEL,
REVERB_EFFECT_CITY_STREETS,
REVERB_EFFECT_CITY_SUBWAY,
REVERB_EFFECT_CITY_MUSEUM,
REVERB_EFFECT_CITY_LIBRARY,
REVERB_EFFECT_CITY_UNDERPASS,
REVERB_EFFECT_CITY_ABANDONED,
REVERB_EFFECT_DUSTYROOM,
REVERB_EFFECT_CHAPEL,
REVERB_EFFECT_SMALLWATERROOM
};

#endif