/** Sets volume of sessionId. If sessionId=-1, sets Master Volume */ bool setSessionVolume(const int sessionId, const float volume){ int sessionCount = getSessionID(); if (sessionId == -1) return setMasterVolume(volume); if (sessionId >= sessionCount || sessionId < 0) { //printf("session: %d / %d\n", sessionId, sessionCount); errorMessage = ERRMSG_UNDEFINEDSESSIONID; return false; } CComPtr<IAudioSessionControl> pSessionControl; CComPtr<ISimpleAudioVolume> pSAV; // Get SessionControl if (FAILED(pAudioSessionEnumerator->GetSession(sessionId, &pSessionControl))){ errorMessage = ERRMSG_SESSIONCONTROL_INIT_FAILED; return false; } // Ask for SimpleAudioVolume if (FAILED(pSessionControl->QueryInterface(__uuidof(ISimpleAudioVolume), (VOID**)&pSAV))){ errorMessage = ERRMSG_AUDIOVOLUME_INIT_FAILED; return false; } //LPWSTR name; //pSessionControl->GetDisplayName(&name); //_tprintf(name); // adjust session volume errorMessage = ERRMSG_OK; return S_OK == pSAV->SetMasterVolume(volume, NULL); }
void SettingsMenu::doSave() { auto settings = Game::getInstance()->settings(); settings->setCombatDifficulty(((UI::MultistateImageButton*)getUI("combat_difficulty"))->state()); settings->setGameDifficulty(((UI::MultistateImageButton*)getUI("game_difficulty"))->state()); settings->setViolenceLevel(((UI::MultistateImageButton*)getUI("violence_level"))->state()); settings->setTargetHighlight(((UI::MultistateImageButton*)getUI("target_highlight"))->state()); settings->setCombatLooks(((UI::MultistateImageButton*)getUI("combat_looks"))->state()); settings->setCombatMessages(((UI::MultistateImageButton*)getUI("combat_messages"))->state()); settings->setCombatTaunts(((UI::MultistateImageButton*)getUI("combat_taunts"))->state()); settings->setLanguageFilter(((UI::MultistateImageButton*)getUI("language_filter"))->state()); settings->setRunning(((UI::MultistateImageButton*)getUI("running"))->state()); settings->setSubtitles(((UI::MultistateImageButton*)getUI("subtitles"))->state()); settings->setItemHighlight(((UI::MultistateImageButton*)getUI("item_highlight"))->state()); settings->setMasterVolume(((UI::Slider*)getUI("master_volume"))->value()); settings->setMusicVolume(((UI::Slider*)getUI("music_volume"))->value()); settings->setVoiceVolume(((UI::Slider*)getUI("voice_volume"))->value()); settings->setSfxVolume(((UI::Slider*)getUI("sfx_volume"))->value()); settings->setTextDelay(((UI::Slider*)getUI("text_delay"))->value()); settings->setCombatSpeed(((UI::Slider*)getUI("combat_speed"))->value()); settings->setBrightness(((UI::Slider*)getUI("brightness"))->value()); settings->setMouseSensitivity(((UI::Slider*)getUI("mouse_sensitivity"))->value()); settings->setPlayerSpeedup(((UI::ImageButton*)getUI("player_speedup"))->checked()); settings->save(); Game::getInstance()->popState(); }
void KMixVolumeConfigurationPlugin::set(int settingId, QVariant value) { if(settingId == MasterVolume) { setMasterVolume(value.toInt()); } }
reg_t SoundCommandParser::kDoSoundMasterVolume(EngineState *s, int argc, reg_t *argv) { s->r_acc = make_reg(0, _music->soundGetMasterVolume()); if (argc > 0) { debugC(kDebugLevelSound, "kDoSound(masterVolume): %d", argv[0].toSint16()); int vol = CLIP<int16>(argv[0].toSint16(), 0, MUSIC_MASTERVOLUME_MAX); if (!g_sci->_guestAdditions->kDoSoundMasterVolumeHook(vol)) { setMasterVolume(vol); } } return s->r_acc; }
bool BaseSoundMgr::setMasterVolumePercent(byte percent) { _volumeMasterPercent = percent; setMasterVolume((int)ceil(percent * 255.0 / 100.0)); return STATUS_OK; }
void FMODAudio::initialize() { FMOD_RESULT hr; mEngine->getConsole()->printf( Console::srcSound, L"Initializing FMOD Ex %x.%x.%x", HIWORD( FMOD_VERSION ), HIBYTE( LOWORD( FMOD_VERSION ) ), LOBYTE( LOWORD( FMOD_VERSION ) ) ); refreshDrivers(); refreshOutputTypes(); refreshSpeakerModes(); // Set output type setOutputType( stringToOutputType( g_CVar_fm_outputmode.getString() ) ); // Set output device setDriver( g_CVar_fm_device.getInt() ); // Get driver caps hr = mSystem->getDriverCaps( NULL, &mInfo.caps, &mInfo.rate, &mInfo.speakerMode ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "Failed to get driver caps" ); // Print a warning and raise the DSP buffer if someone is poor enough to run on emulation if ( mInfo.caps & FMOD_CAPS_HARDWARE_EMULATED ) { mEngine->getConsole()->printf( Console::srcSound, L"No hardware audio acceleration detected! Using software emulation!" ); mSystem->setDSPBufferSize( 1024, 10 ); } // Set speaker mode setSpeakerMode( stringToSpeakerMode( g_CVar_fm_speakermode.getString() ) ); // Prepare flags FMOD_INITFLAGS fmodFlags = FMOD_INIT_NORMAL | FMOD_INIT_3D_RIGHTHANDED | FMOD_INIT_OCCLUSION_LOWPASS | FMOD_INIT_HRTF_LOWPASS | FMOD_INIT_GEOMETRY_USECLOSEST; FMOD_EVENT_INITFLAGS eventFlags = FMOD_EVENT_INIT_NORMAL; // Initialize the system int channels = g_CVar_fm_maxchannels.getInt(); hr = mEventSystem->init( channels, fmodFlags, nullptr, eventFlags ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "Failed to initialize FMOD EventSystem" ); // Fetch realized values hr = mSystem->getSpeakerMode( &mInfo.speakerMode ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "getSpeakerMode failed" ); mSystem->getOutput( &mInfo.outputType ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "getOutput failed" ); mSystem->getDriver( &mInfo.driver ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "getDriver failed" ); if ( mSettings.outputType != 0 ) for ( size_t i = 0; i < mOutputTypes.size(); i++ ) if ( ((FMODOutputType*)mOutputTypes[i])->fmodValue == mInfo.outputType ) { mSettings.outputType = (int)i; break; } if ( mSettings.driver != 0 ) for ( size_t i = 0; i < mDrivers.size(); i++ ) if ( ((FMODDriver*)mDrivers[i])->fmodValue == mInfo.driver ) { mSettings.driver = (int)i; break; } if ( mSettings.speakerMode != 0 ) for ( size_t i = 0; i < mSpeakerModes.size(); i++ ) if ( ((FMODSpeakerMode*)mSpeakerModes[i])->fmodValue == mInfo.speakerMode ) { mSettings.speakerMode = (int)i; break; } // Log to console for good measure mEngine->getConsole()->printf( Console::srcSound, L"Speaker mode: %s", speakerModeToDisplayString( mInfo.speakerMode ).c_str() ); mEngine->getConsole()->printf( Console::srcSound, L"Output type: %s", outputTypeToDisplayString( mInfo.outputType ).c_str() ); // Setup channel groups hr = mSystem->getMasterChannelGroup( &mMasterGroup ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "Failed to get master channel group" ); hr = mSystem->createChannelGroup( "music", &mMusicGroup ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "Failed to create music channel group" ); hr = mMasterGroup->addGroup( mMusicGroup ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "Failed to assign music channel group" ); hr = mSystem->createChannelGroup( "effect", &mEffectGroup ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "Failed to create effect channel group" ); hr = mMasterGroup->addGroup( mEffectGroup ); if ( FMOD_FAILED( hr ) ) ENGINE_EXCEPT_FMOD( hr, "Failed to assign effect channel group" ); // Set initial volumes setMasterVolume( g_CVar_fm_volume.getFloat() ); setMusicVolume( g_CVar_fm_bgvolume.getFloat() ); setEffectVolume( g_CVar_fm_fxvolume.getFloat() ); mMusic = new FMODMusic( this ); Locator::provideMusic( mMusic ); mEngine->operationContinueAudio(); }