Пример #1
0
/**
 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);
}
Пример #2
0
        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());
    }
}
Пример #4
0
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;
}
Пример #5
0
bool BaseSoundMgr::setMasterVolumePercent(byte percent) {
	_volumeMasterPercent = percent;
	setMasterVolume((int)ceil(percent * 255.0 / 100.0));
	return STATUS_OK;
}
Пример #6
0
  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();
  }