mirror of
https://github.com/CTCaer/RetroArch.git
synced 2025-03-01 08:06:04 +00:00
Add audio mixer volume setting
This commit is contained in:
parent
8f5f3d15f3
commit
cdd7fbeb52
33
command.c
33
command.c
@ -933,6 +933,33 @@ static void command_event_set_volume(float gain)
|
||||
audio_set_float(AUDIO_ACTION_VOLUME_GAIN, new_volume);
|
||||
}
|
||||
|
||||
/**
|
||||
* event_set_mixer_volume:
|
||||
* @gain : amount of gain to be applied to current volume level.
|
||||
*
|
||||
* Adjusts the current audio volume level.
|
||||
*
|
||||
**/
|
||||
static void command_event_set_mixer_volume(float gain)
|
||||
{
|
||||
char msg[128];
|
||||
settings_t *settings = config_get_ptr();
|
||||
float new_volume = settings->floats.audio_mixer_volume + gain;
|
||||
|
||||
new_volume = MAX(new_volume, -80.0f);
|
||||
new_volume = MIN(new_volume, 12.0f);
|
||||
|
||||
configuration_set_float(settings, settings->floats.audio_mixer_volume, new_volume);
|
||||
|
||||
snprintf(msg, sizeof(msg), "%s: %.1f dB",
|
||||
msg_hash_to_str(MSG_AUDIO_VOLUME),
|
||||
new_volume);
|
||||
runloop_msg_queue_push(msg, 1, 180, true);
|
||||
RARCH_LOG("%s\n", msg);
|
||||
|
||||
audio_set_float(AUDIO_ACTION_VOLUME_GAIN, new_volume);
|
||||
}
|
||||
|
||||
/**
|
||||
* command_event_init_controllers:
|
||||
*
|
||||
@ -2512,6 +2539,12 @@ bool command_event(enum event_command cmd, void *data)
|
||||
case CMD_EVENT_VOLUME_DOWN:
|
||||
command_event_set_volume(-0.5f);
|
||||
break;
|
||||
case CMD_EVENT_MIXER_VOLUME_UP:
|
||||
command_event_set_mixer_volume(0.5f);
|
||||
break;
|
||||
case CMD_EVENT_MIXER_VOLUME_DOWN:
|
||||
command_event_set_mixer_volume(-0.5f);
|
||||
break;
|
||||
case CMD_EVENT_SET_FRAME_LIMIT:
|
||||
rarch_ctl(RARCH_CTL_SET_FRAME_LIMIT, NULL);
|
||||
break;
|
||||
|
@ -215,6 +215,8 @@ enum event_command
|
||||
CMD_EVENT_PERFCNT_REPORT_FRONTEND_LOG,
|
||||
CMD_EVENT_VOLUME_UP,
|
||||
CMD_EVENT_VOLUME_DOWN,
|
||||
CMD_EVENT_MIXER_VOLUME_UP,
|
||||
CMD_EVENT_MIXER_VOLUME_DOWN,
|
||||
CMD_EVENT_DISABLE_OVERRIDES,
|
||||
CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET
|
||||
};
|
||||
|
@ -414,6 +414,9 @@ static const float max_timing_skew = 0.05;
|
||||
/* Default audio volume in dB. (0.0 dB == unity gain). */
|
||||
static const float audio_volume = 0.0;
|
||||
|
||||
/* Default audio volume of the audio mixer in dB. (0.0 dB == unity gain). */
|
||||
static const float audio_mixer_volume = 0.0;
|
||||
|
||||
#ifdef HAVE_WASAPI
|
||||
/* WASAPI defaults */
|
||||
static const bool wasapi_exclusive_mode = true;
|
||||
|
@ -1270,6 +1270,7 @@ static struct config_float_setting *populate_settings_float(settings_t *settings
|
||||
SETTING_FLOAT("audio_rate_control_delta", audio_get_float_ptr(AUDIO_ACTION_RATE_CONTROL_DELTA), true, rate_control_delta, false);
|
||||
SETTING_FLOAT("audio_max_timing_skew", &settings->floats.audio_max_timing_skew, true, max_timing_skew, false);
|
||||
SETTING_FLOAT("audio_volume", &settings->floats.audio_volume, true, audio_volume, false);
|
||||
SETTING_FLOAT("audio_mixer_volume", &settings->floats.audio_mixer_volume, true, audio_mixer_volume, false);
|
||||
#ifdef HAVE_OVERLAY
|
||||
SETTING_FLOAT("input_overlay_opacity", &settings->floats.input_overlay_opacity, true, 0.7f, false);
|
||||
SETTING_FLOAT("input_overlay_scale", &settings->floats.input_overlay_scale, true, 1.0f, false);
|
||||
@ -1532,6 +1533,7 @@ static void config_set_defaults(void)
|
||||
settings->uints.audio_latency = g_defaults.settings.out_latency;
|
||||
|
||||
audio_set_float(AUDIO_ACTION_VOLUME_GAIN, settings->floats.audio_volume);
|
||||
audio_set_float(AUDIO_ACTION_MIXER_VOLUME_GAIN, settings->floats.audio_mixer_volume);
|
||||
|
||||
settings->rewind_buffer_size = rewind_buffer_size;
|
||||
|
||||
@ -2441,6 +2443,7 @@ static bool config_load_file(const char *path, bool set_defaults,
|
||||
settings->uints.video_swap_interval = MIN(settings->uints.video_swap_interval, 4);
|
||||
|
||||
audio_set_float(AUDIO_ACTION_VOLUME_GAIN, settings->floats.audio_volume);
|
||||
audio_set_float(AUDIO_ACTION_MIXER_VOLUME_GAIN, settings->floats.audio_mixer_volume);
|
||||
|
||||
if (string_is_empty(settings->paths.path_content_history))
|
||||
{
|
||||
|
@ -231,6 +231,7 @@ typedef struct settings
|
||||
|
||||
float audio_max_timing_skew;
|
||||
float audio_volume; /* dB scale. */
|
||||
float audio_mixer_volume; /* dB scale. */
|
||||
|
||||
float input_overlay_opacity;
|
||||
float input_overlay_scale;
|
||||
|
@ -1233,3 +1233,5 @@ MSG_HASH(MENU_ENUM_LABEL_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"audio_add_to_mixer_and_collection")
|
||||
MSG_HASH(MENU_ENUM_LABEL_FILTER_BY_CURRENT_CORE,
|
||||
"filter_by_current_Core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME,
|
||||
"audio_mixer_volume")
|
||||
|
@ -3017,3 +3017,15 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_ADD_TO_MIXER_AND_COLLECTION,
|
||||
"Add to mixer")
|
||||
MSG_HASH(MENU_ENUM_LABEL_VALUE_FILTER_BY_CURRENT_CORE,
|
||||
"Filter by current core")
|
||||
MSG_HASH(
|
||||
MSG_AUDIO_MIXER_VOLUME,
|
||||
"Global audio mixer volume"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_AUDIO_MIXER_VOLUME,
|
||||
"Global audio mixer volume (in dB). 0 dB is normal volume, and no gain is applied."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME,
|
||||
"Audio Mixer Volume Level (dB)"
|
||||
)
|
||||
|
@ -105,6 +105,7 @@ default_sublabel_macro(action_bind_sublabel_input_poll_type_behavior, MENU_
|
||||
default_sublabel_macro(action_bind_sublabel_input_all_users_control_menu, MENU_ENUM_SUBLABEL_INPUT_ALL_USERS_CONTROL_MENU)
|
||||
default_sublabel_macro(action_bind_sublabel_input_bind_timeout, MENU_ENUM_SUBLABEL_INPUT_BIND_TIMEOUT)
|
||||
default_sublabel_macro(action_bind_sublabel_audio_volume, MENU_ENUM_SUBLABEL_AUDIO_VOLUME)
|
||||
default_sublabel_macro(action_bind_sublabel_audio_mixer_volume, MENU_ENUM_SUBLABEL_AUDIO_MIXER_VOLUME)
|
||||
default_sublabel_macro(action_bind_sublabel_audio_sync, MENU_ENUM_SUBLABEL_AUDIO_SYNC)
|
||||
default_sublabel_macro(action_bind_sublabel_axis_threshold, MENU_ENUM_SUBLABEL_INPUT_AXIS_THRESHOLD)
|
||||
default_sublabel_macro(action_bind_sublabel_input_turbo_period, MENU_ENUM_SUBLABEL_INPUT_TURBO_PERIOD)
|
||||
@ -1037,6 +1038,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_AUDIO_VOLUME:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_volume);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_mixer_volume);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_INPUT_ALL_USERS_CONTROL_MENU:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_all_users_control_menu);
|
||||
break;
|
||||
|
@ -5647,6 +5647,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_AUDIO_VOLUME,
|
||||
PARSE_ONLY_FLOAT, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME,
|
||||
PARSE_ONLY_FLOAT, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_SYSTEM_BGM_ENABLE,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
@ -1688,6 +1688,9 @@ void general_write_handler(void *data)
|
||||
case MENU_ENUM_LABEL_AUDIO_VOLUME:
|
||||
audio_set_float(AUDIO_ACTION_VOLUME_GAIN, *setting->value.target.fraction);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME:
|
||||
audio_set_float(AUDIO_ACTION_MIXER_VOLUME_GAIN, *setting->value.target.fraction);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_AUDIO_LATENCY:
|
||||
case MENU_ENUM_LABEL_AUDIO_DEVICE:
|
||||
case MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE:
|
||||
@ -3816,6 +3819,20 @@ static bool setting_append_list(
|
||||
general_read_handler);
|
||||
menu_settings_list_current_add_range(list, list_info, -80, 12, 1.0, true, true);
|
||||
|
||||
CONFIG_FLOAT(
|
||||
list, list_info,
|
||||
&settings->floats.audio_mixer_volume,
|
||||
MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME,
|
||||
MENU_ENUM_LABEL_VALUE_AUDIO_MIXER_VOLUME,
|
||||
audio_mixer_volume,
|
||||
"%.1f",
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
menu_settings_list_current_add_range(list, list_info, -80, 12, 1.0, true, true);
|
||||
|
||||
#ifdef __CELLOS_LV2__
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
|
@ -170,6 +170,7 @@ enum msg_hash_enums
|
||||
MSG_NETPLAY_CHANGED_NICK,
|
||||
MSG_AUTODETECT,
|
||||
MSG_AUDIO_VOLUME,
|
||||
MSG_AUDIO_MIXER_VOLUME,
|
||||
MSG_LIBRETRO_FRONTEND,
|
||||
MSG_CAPABILITIES,
|
||||
MSG_DEVICE_CONFIGURED_IN_PORT,
|
||||
@ -974,6 +975,7 @@ enum msg_hash_enums
|
||||
MENU_LABEL(AUDIO_MUTE),
|
||||
MENU_LABEL(AUDIO_SYNC),
|
||||
MENU_LABEL(AUDIO_VOLUME),
|
||||
MENU_LABEL(AUDIO_MIXER_VOLUME),
|
||||
MENU_LABEL(AUDIO_RATE_CONTROL_DELTA),
|
||||
MENU_LABEL(AUDIO_LATENCY),
|
||||
MENU_LABEL(AUDIO_WASAPI_EXCLUSIVE_MODE),
|
||||
|
@ -325,6 +325,10 @@
|
||||
# Gain can be controlled in runtime with input_volume_up/input_volume_down.
|
||||
# audio_volume = 0.0
|
||||
|
||||
# Audio mixer volume. Volume is expressed in dB.
|
||||
# 0 dB is normal volume. No gain will be applied.
|
||||
# audio_mixer_volume = 0.0
|
||||
|
||||
#### Overlay
|
||||
|
||||
# Defines a directory where overlays are kept for easy access.
|
||||
|
Loading…
x
Reference in New Issue
Block a user