void Soloud::stop(int aVoiceHandle) { int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { return; } if (mLockMutexFunc) mLockMutexFunc(mMutex); stopVoice(ch); if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); }
void Soloud::seek(int aVoiceHandle, float aSeconds) { if (mLockMutexFunc) mLockMutexFunc(mMutex); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); return; } mVoice[ch]->seek(aSeconds, mScratch, mScratchSize); if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); }
float Soloud::getOverallVolume(handle aVoiceHandle) { lockAudioMutex(); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { unlockAudioMutex(); return 0; } float v = mVoice[ch]->mOverallVolume; unlockAudioMutex(); return v; }
bool Soloud::getProtectVoice(handle aVoiceHandle) { lockAudioMutex(); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { unlockAudioMutex(); return 0; } int v = !!(mVoice[ch]->mFlags & AudioSourceInstance::PROTECTED); unlockAudioMutex(); return v != 0; }
unsigned int Soloud::getLoopCount(handle aVoiceHandle) { lockAudioMutex(); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { unlockAudioMutex(); return 0; } int v = mVoice[ch]->mLoopCount; unlockAudioMutex(); return v; }
float Soloud::getRelativePlaySpeed(handle aVoiceHandle) { lockAudioMutex(); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { unlockAudioMutex(); return 1; } float v = mVoice[ch]->mSetRelativePlaySpeed; unlockAudioMutex(); return v; }
float Soloud::getSamplerate(handle aVoiceHandle) { lockAudioMutex(); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { unlockAudioMutex(); return 0; } float v = mVoice[ch]->mBaseSamplerate; unlockAudioMutex(); return v; }
float Soloud::getPan(handle aVoiceHandle) { lockAudioMutex(); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { unlockAudioMutex(); return 0; } float v = mVoice[ch]->mPan; unlockAudioMutex(); return v; }
time Soloud::getStreamTime(handle aVoiceHandle) { lockAudioMutex(); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { unlockAudioMutex(); return 0; } double v = mVoice[ch]->mStreamTime; unlockAudioMutex(); return v; }
float Soloud::getInfo(handle aVoiceHandle, unsigned int mInfoKey) { lockAudioMutex(); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { unlockAudioMutex(); return 0; } float v = mVoice[ch]->getInfo(mInfoKey); unlockAudioMutex(); return v; }
bool Soloud::getLooping(handle aVoiceHandle) { lockAudioMutex(); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { unlockAudioMutex(); return 0; } bool v = (mVoice[ch]->mFlags & AudioSourceInstance::LOOPING) != 0; unlockAudioMutex(); return v; }
bool Soloud::isValidVoiceHandle(handle aVoiceHandle) { // voice groups are not valid voice handles if ((aVoiceHandle & 0xfffff000) == 0xfffff000) return 0; lockAudioMutex(); if (getVoiceFromHandle(aVoiceHandle) != -1) { unlockAudioMutex(); return 1; } unlockAudioMutex(); return 0; }
void Soloud::schedulePause(int aVoiceHandle, float aTime) { if (aTime <= 0) { setPause(aVoiceHandle, 1); return; } if (mLockMutexFunc) mLockMutexFunc(mMutex); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); return; } mVoice[ch]->mPauseScheduler.set(1, 0, aTime, mVoice[ch]->mStreamTime); if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); }
void Soloud::scheduleStop(handle aVoiceHandle, time aTime) { if (aTime <= 0) { stop(aVoiceHandle); return; } if (mLockMutexFunc) mLockMutexFunc(mMutex); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); return; } mVoice[ch]->mStopScheduler.set(1, 0, aTime, mVoice[ch]->mStreamTime); if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); }
void Soloud::oscillateRelativePlaySpeed(handle aVoiceHandle, float aFrom, float aTo, time aTime) { if (aTime <= 0 || aTo == aFrom) { setRelativePlaySpeed(aVoiceHandle, aTo); return; } if (mLockMutexFunc) mLockMutexFunc(mMutex); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); return; } mVoice[ch]->mRelativePlaySpeedFader.setLFO(aFrom, aTo, aTime, mVoice[ch]->mStreamTime); if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); }
void Soloud::fadeRelativePlaySpeed(int aVoiceHandle, float aTo, float aTime) { float from = getRelativePlaySpeed(aVoiceHandle); if (aTime <= 0 || aTo == from) { setRelativePlaySpeed(aVoiceHandle, aTo); return; } if (mLockMutexFunc) mLockMutexFunc(mMutex); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); return; } mVoice[ch]->mRelativePlaySpeedFader.set(from, aTo, aTime, mVoice[ch]->mStreamTime); if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); }
void Soloud::oscillatePan(int aVoiceHandle, float aFrom, float aTo, float aTime) { if (aTime <= 0 || aTo == aFrom) { setPan(aVoiceHandle, aTo); return; } if (mLockMutexFunc) mLockMutexFunc(mMutex); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); return; } mVoice[ch]->mPanFader.setLFO(aFrom, aTo, aTime, mVoice[ch]->mStreamTime); if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); }
void Soloud::fadePan(handle aVoiceHandle, float aTo, time aTime) { float from = getPan(aVoiceHandle); if (aTime <= 0 || aTo == from) { setPan(aVoiceHandle, aTo); return; } if (mLockMutexFunc) mLockMutexFunc(mMutex); int ch = getVoiceFromHandle(aVoiceHandle); if (ch == -1) { if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); return; } mVoice[ch]->mPanFader.set(from, aTo, aTime, mVoice[ch]->mStreamTime); if (mUnlockMutexFunc) mUnlockMutexFunc(mMutex); }