From ed32236889153c7ac8eef4b2b7d273319ffbee8e Mon Sep 17 00:00:00 2001 From: FearlessTobi Date: Tue, 31 Mar 2020 02:23:37 +0200 Subject: [PATCH] android: Add realtime audio setting --- .../features/settings/ui/SettingsFragmentPresenter.java | 4 +++- .../citra_emu/features/settings/utils/SettingsFile.java | 1 + src/android/app/src/main/jni/config.cpp | 2 ++ src/android/app/src/main/jni/default_ini.h | 5 +++++ src/android/app/src/main/res/values/strings.xml | 2 ++ 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.java b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.java index aac6eaa12..5c96d31da 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.java @@ -221,7 +221,7 @@ public final class SettingsFragmentPresenter { sl.add(new SliderSetting(SettingsFile.KEY_RESOLUTION_FACTOR, Settings.SECTION_RENDERER, R.string.internal_resolution, R.string.internal_resolution_description, 1, 4, "x", 1, resolutionFactor)); sl.add(new CheckBoxSetting(SettingsFile.KEY_USE_VSYNC, Settings.SECTION_RENDERER, R.string.vsync, R.string.vsync_description, true, vsyncEnable)); sl.add(new CheckBoxSetting(SettingsFile.KEY_FILTER_MODE, Settings.SECTION_RENDERER, R.string.linear_filtering, R.string.linear_filtering_description, true, filterMode)); - sl.add(new StringSingleChoiceSetting(SettingsFile.KEY_TEXTURE_FILTER_NAME, Settings.SECTION_RENDERER, R.string.texture_filter_name, R.string.texture_filter_description, textureFilterNames, textureFilterNames,"none", textureFilterName)); + sl.add(new StringSingleChoiceSetting(SettingsFile.KEY_TEXTURE_FILTER_NAME, Settings.SECTION_RENDERER, R.string.texture_filter_name, R.string.texture_filter_description, textureFilterNames, textureFilterNames, "none", textureFilterName)); } private void addAudioSettings(ArrayList sl) { @@ -229,8 +229,10 @@ public final class SettingsFragmentPresenter { SettingSection audioSection = mSettings.getSection(Settings.SECTION_AUDIO); Setting audioStretch = audioSection.getSetting(SettingsFile.KEY_ENABLE_AUDIO_STRETCHING); + Setting realtimeAudio = audioSection.getSetting(SettingsFile.KEY_ENABLE_REALTIME_AUDIO); sl.add(new CheckBoxSetting(SettingsFile.KEY_ENABLE_AUDIO_STRETCHING, Settings.SECTION_AUDIO, R.string.audio_stretch, R.string.audio_stretch_description, false, audioStretch)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_ENABLE_REALTIME_AUDIO, Settings.SECTION_AUDIO, R.string.realtime_audio, R.string.realtime_audio_description, true, realtimeAudio)); } private void addDebugSettings(ArrayList sl) { diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.java b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.java index f896bc250..6e4803f17 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.java @@ -53,6 +53,7 @@ public final class SettingsFile { public static final String KEY_AUDIO_OUTPUT_ENGINE = "output_engine"; public static final String KEY_ENABLE_AUDIO_STRETCHING = "enable_audio_stretching"; + public static final String KEY_ENABLE_REALTIME_AUDIO = "enable_realtime_audio"; public static final String KEY_VOLUME = "volume"; public static final String KEY_USE_VIRTUAL_SD = "use_virtual_sd"; diff --git a/src/android/app/src/main/jni/config.cpp b/src/android/app/src/main/jni/config.cpp index 65390171d..1547c90ad 100644 --- a/src/android/app/src/main/jni/config.cpp +++ b/src/android/app/src/main/jni/config.cpp @@ -168,6 +168,8 @@ void Config::ReadValues() { sdl2_config->GetString("Audio", "mic_input_device", "Default"); Settings::values.mic_input_type = static_cast(sdl2_config->GetInteger("Audio", "mic_input_type", 0)); + Settings::values.enable_realtime_audio = + sdl2_config->GetBoolean("Audio", "enable_realtime_audio", true); // Data Storage Settings::values.use_virtual_sd = diff --git a/src/android/app/src/main/jni/default_ini.h b/src/android/app/src/main/jni/default_ini.h index 2bac96886..e333921e1 100644 --- a/src/android/app/src/main/jni/default_ini.h +++ b/src/android/app/src/main/jni/default_ini.h @@ -197,6 +197,11 @@ output_engine = # 0: No, 1 (default): Yes enable_audio_stretching = +# Whether or not to enable the real-time audio processing. +# This effect adjusts audio speed to match real-time speed and helps prevent audio stutter. +# 0: No, 1 (default): Yes +enable_realtime_audio = + # Which audio device to use. # auto (default): Auto-select output_device = diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 26126cf2a..619dcb3a0 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -73,6 +73,8 @@ Enable audio stretching Stretches audio to reduce stuttering. When enabled, increases audio latency and slightly reduces performance. + Enable real-time audio + Desynchronizes the audio from the current framerate. When enabled, the audio should always be running at fullspeed, even if the game is not. Clear