Audio initialization is now delayed until rendering begins.

Disabled reverb and headphone spatialization, as they are currently broken in IOS 6.0-6.1
This commit is contained in:
2013-02-02 23:58:08 -08:00
parent 1f82b62367
commit 76116f4cc3
4 changed files with 60 additions and 33 deletions

View File

@@ -34,6 +34,8 @@
E416AA9C1671375C000F6786 /* KRAnimationCurveManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */; }; E416AA9C1671375C000F6786 /* KRAnimationCurveManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */; };
E416AA9D1671375C000F6786 /* KRAnimationCurveManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */; }; E416AA9D1671375C000F6786 /* KRAnimationCurveManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */; };
E41843921678704000DBD6CF /* KRCollider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 104A335C1672D31B001C8BA6 /* KRCollider.cpp */; }; E41843921678704000DBD6CF /* KRCollider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 104A335C1672D31B001C8BA6 /* KRCollider.cpp */; };
E41B6BA816BE436100B510EB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41B6BA716BE436100B510EB /* CoreAudio.framework */; };
E41B6BAA16BE437800B510EB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41B6BA916BE437800B510EB /* CoreAudio.framework */; };
E428C2F21669610500A16EDF /* KRAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E428C2F11669610500A16EDF /* KRAnimationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; E428C2F21669610500A16EDF /* KRAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E428C2F11669610500A16EDF /* KRAnimationManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
E428C2F31669610500A16EDF /* KRAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E428C2F11669610500A16EDF /* KRAnimationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; E428C2F31669610500A16EDF /* KRAnimationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E428C2F11669610500A16EDF /* KRAnimationManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
E428C2F51669611600A16EDF /* KRAnimationManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E428C2F41669611600A16EDF /* KRAnimationManager.cpp */; }; E428C2F51669611600A16EDF /* KRAnimationManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E428C2F41669611600A16EDF /* KRAnimationManager.cpp */; };
@@ -372,6 +374,8 @@
E416AA9816713749000F6786 /* KRAnimationCurveManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRAnimationCurveManager.h; sourceTree = "<group>"; }; E416AA9816713749000F6786 /* KRAnimationCurveManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRAnimationCurveManager.h; sourceTree = "<group>"; };
E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KRAnimationCurveManager.cpp; sourceTree = "<group>"; }; E416AA9B1671375C000F6786 /* KRAnimationCurveManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KRAnimationCurveManager.cpp; sourceTree = "<group>"; };
E41AE1DD16B124CA00980428 /* font.tga */ = {isa = PBXFileReference; lastKnownFileType = file; path = font.tga; sourceTree = "<group>"; }; E41AE1DD16B124CA00980428 /* font.tga */ = {isa = PBXFileReference; lastKnownFileType = file; path = font.tga; sourceTree = "<group>"; };
E41B6BA716BE436100B510EB /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
E41B6BA916BE437800B510EB /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/CoreAudio.framework; sourceTree = DEVELOPER_DIR; };
E428C2F11669610500A16EDF /* KRAnimationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRAnimationManager.h; sourceTree = "<group>"; }; E428C2F11669610500A16EDF /* KRAnimationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRAnimationManager.h; sourceTree = "<group>"; };
E428C2F41669611600A16EDF /* KRAnimationManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KRAnimationManager.cpp; sourceTree = "<group>"; }; E428C2F41669611600A16EDF /* KRAnimationManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KRAnimationManager.cpp; sourceTree = "<group>"; };
E428C2F71669612500A16EDF /* KRAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRAnimation.h; sourceTree = "<group>"; }; E428C2F71669612500A16EDF /* KRAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KRAnimation.h; sourceTree = "<group>"; };
@@ -580,6 +584,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
E41B6BA816BE436100B510EB /* CoreAudio.framework in Frameworks */,
E4F027FA1698116000D4427D /* AudioToolbox.framework in Frameworks */, E4F027FA1698116000D4427D /* AudioToolbox.framework in Frameworks */,
E4F027D31697A01300D4427D /* OpenAL.framework in Frameworks */, E4F027D31697A01300D4427D /* OpenAL.framework in Frameworks */,
E4CA10F61638BCAF005D9400 /* Accelerate.framework in Frameworks */, E4CA10F61638BCAF005D9400 /* Accelerate.framework in Frameworks */,
@@ -592,6 +597,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
E41B6BAA16BE437800B510EB /* CoreAudio.framework in Frameworks */,
E4F027F71698115600D4427D /* AudioToolbox.framework in Frameworks */, E4F027F71698115600D4427D /* AudioToolbox.framework in Frameworks */,
E4F027D51697A02D00D4427D /* OpenAL.framework in Frameworks */, E4F027D51697A02D00D4427D /* OpenAL.framework in Frameworks */,
E4CA10F81638BCBB005D9400 /* Accelerate.framework in Frameworks */, E4CA10F81638BCBB005D9400 /* Accelerate.framework in Frameworks */,
@@ -993,6 +999,7 @@
E4BBBB931512A41500F43B5B /* Frameworks */ = { E4BBBB931512A41500F43B5B /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E41B6BA916BE437800B510EB /* CoreAudio.framework */,
10CC33A3168530A300BB9846 /* libPVRTexLib.a */, 10CC33A3168530A300BB9846 /* libPVRTexLib.a */,
E460292916682BD900261BB9 /* libfbxsdk-2013.3-static.a */, E460292916682BD900261BB9 /* libfbxsdk-2013.3-static.a */,
E4BBBB9A1512A48200F43B5B /* Foundation.framework */, E4BBBB9A1512A48200F43B5B /* Foundation.framework */,
@@ -1079,9 +1086,10 @@
E4C8E50D16B9B5F80031DDCB /* Frameworks */ = { E4C8E50D16B9B5F80031DDCB /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E4F027F91698116000D4427D /* AudioToolbox.framework */,
E41B6BA716BE436100B510EB /* CoreAudio.framework */,
E491016413C99B9E0098455B /* Foundation.framework */, E491016413C99B9E0098455B /* Foundation.framework */,
E4F027D21697A01300D4427D /* OpenAL.framework */, E4F027D21697A01300D4427D /* OpenAL.framework */,
E4F027F91698116000D4427D /* AudioToolbox.framework */,
E491019F13C99BF50098455B /* OpenGLES.framework */, E491019F13C99BF50098455B /* OpenGLES.framework */,
E4CA10F51638BCAE005D9400 /* Accelerate.framework */, E4CA10F51638BCAE005D9400 /* Accelerate.framework */,
); );

View File

@@ -38,20 +38,33 @@ ALvoid alcMacOSXRenderingQualityProc(const ALint value);
KRAudioManager::KRAudioManager(KRContext &context) : KRContextObject(context) KRAudioManager::KRAudioManager(KRContext &context) : KRContextObject(context)
{ {
m_alDevice = 0;
m_alContext = 0;
}
void KRAudioManager::initAudio()
{
if(m_alDevice == 0) {
// ----- Initialize OpenAL ----- // ----- Initialize OpenAL -----
ALDEBUG(m_alDevice = alcOpenDevice(NULL)); ALDEBUG(m_alDevice = alcOpenDevice(NULL));
ALDEBUG(m_alContext=alcCreateContext(m_alDevice,NULL)); ALDEBUG(m_alContext=alcCreateContext(m_alDevice,NULL));
ALDEBUG(alcMakeContextCurrent(m_alContext)); ALDEBUG(alcMakeContextCurrent(m_alContext));
// ----- Configure listener ----- // ----- Configure listener -----
ALDEBUG(alSpeedOfSound(1116.43701f)); // 1116.43701 feet per second
ALDEBUG(alDistanceModel(AL_EXPONENT_DISTANCE)); ALDEBUG(alDistanceModel(AL_EXPONENT_DISTANCE));
ALDEBUG(alSpeedOfSound(1116.43701f)); // 1116.43701 feet per second
#if TARGET_OS_IPHONE /*
// BROKEN IN IOS 6!!
#if TARGET_OS_IPHONE
ALDEBUG(alcMacOSXRenderingQualityProc(ALC_IPHONE_SPATIAL_RENDERING_QUALITY_HEADPHONES)); ALDEBUG(alcMacOSXRenderingQualityProc(ALC_IPHONE_SPATIAL_RENDERING_QUALITY_HEADPHONES));
#else #else
ALDEBUG(alcMacOSXRenderingQualityProc(ALC_MAC_OSX_SPATIAL_RENDERING_QUALITY_HIGH)); ALDEBUG(alcMacOSXRenderingQualityProc(ALC_MAC_OSX_SPATIAL_RENDERING_QUALITY_HIGH));
#endif #endif
*/
bool enable_reverb = false;
if(enable_reverb) {
UInt32 setting = 1; UInt32 setting = 1;
ALDEBUG(alcASASetListenerProc(ALC_ASA_REVERB_ON, &setting, sizeof(setting))); ALDEBUG(alcASASetListenerProc(ALC_ASA_REVERB_ON, &setting, sizeof(setting)));
ALfloat global_reverb_level = -5.0f; ALfloat global_reverb_level = -5.0f;
@@ -69,6 +82,8 @@ KRAudioManager::KRAudioManager(KRContext &context) : KRContextObject(context)
ALfloat global_reverb_eq_freq = 0.0f; ALfloat global_reverb_eq_freq = 0.0f;
ALDEBUG(alcASASetListenerProc(ALC_ASA_REVERB_EQ_FREQ, &global_reverb_eq_freq, sizeof(global_reverb_eq_freq))); ALDEBUG(alcASASetListenerProc(ALC_ASA_REVERB_EQ_FREQ, &global_reverb_eq_freq, sizeof(global_reverb_eq_freq)));
}
}
} }
KRAudioManager::~KRAudioManager() KRAudioManager::~KRAudioManager()
@@ -93,6 +108,7 @@ KRAudioManager::~KRAudioManager()
void KRAudioManager::makeCurrentContext() void KRAudioManager::makeCurrentContext()
{ {
initAudio();
ALDEBUG(alcMakeContextCurrent(m_alContext)); ALDEBUG(alcMakeContextCurrent(m_alContext));
} }
@@ -109,9 +125,10 @@ void KRAudioManager::setViewMatrix(const KRMat4 &viewMatrix)
vectorForward.normalize(); vectorForward.normalize();
makeCurrentContext(); makeCurrentContext();
player_position = KRVector3(1.0, 0.0, 0.0); // FINDME - HACK - TEST CODE // player_position = KRVector3(1.0, 0.0, 0.0); // FINDME - HACK - TEST CODE
ALDEBUG(alListener3f(AL_POSITION, player_position.x, player_position.y, player_position.z)); ALDEBUG(alListener3f(AL_POSITION, player_position.x, player_position.y, player_position.z));
ALfloat orientation[] = {vectorForward.x, vectorForward.y, vectorForward.z, vectorUp.x, vectorUp.y, vectorUp.z}; ALfloat orientation[] = {vectorForward.x, vectorForward.y, vectorForward.z, vectorUp.x, vectorUp.y, vectorUp.z};
// ALfloat orientation[] = {0.0, 1.0, 0.0, 0.0, 1.0, 0.0}; // FINDME - HACK - TEST CODE
ALDEBUG(alListenerfv(AL_ORIENTATION, orientation)); ALDEBUG(alListenerfv(AL_ORIENTATION, orientation));
} }

View File

@@ -69,6 +69,8 @@ private:
ALCcontext* m_alContext; ALCcontext* m_alContext;
ALCdevice* m_alDevice; ALCdevice* m_alDevice;
void initAudio();
}; };
#endif /* defined(KRAUDIO_MANAGER_H) */ #endif /* defined(KRAUDIO_MANAGER_H) */

View File

@@ -410,7 +410,7 @@ void KRAudioSource::updatePosition()
ALfloat obstruction = 0.0f; // type ALfloat -100.0 db (most obstruction) - 0.0 db (no obstruction, 0.0 default) ALfloat obstruction = 0.0f; // type ALfloat -100.0 db (most obstruction) - 0.0 db (no obstruction, 0.0 default)
KRVector3 worldPosition = getWorldTranslation(); KRVector3 worldPosition = getWorldTranslation();
worldPosition = KRVector3(0.0, 0.0, 0.0); // FINDME - HACK - TEST CODE // worldPosition = KRVector3(0.0, 0.5, 0.0); // FINDME - HACK - TEST CODE
ALDEBUG(alSource3f(m_sourceID, AL_POSITION, worldPosition.x, worldPosition.y, worldPosition.z)); ALDEBUG(alSource3f(m_sourceID, AL_POSITION, worldPosition.x, worldPosition.y, worldPosition.z));
ALDEBUG(alSourcef(m_sourceID, AL_GAIN, m_gain)); ALDEBUG(alSourcef(m_sourceID, AL_GAIN, m_gain));
ALDEBUG(alSourcef(m_sourceID, AL_MIN_GAIN, 0.0)); ALDEBUG(alSourcef(m_sourceID, AL_MIN_GAIN, 0.0));