From cd17decd5a35c9b506bf8433ae56dda00f65ad61 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Fri, 9 Jul 2021 22:48:19 -0400 Subject: xduoox3ii: Add "Super Slow" filter roll-off I'm not happy with the proliferation of filter-roll-off options but I don't have a less ugly solution. Change-Id: I740fca006fa0c3443a467acfea55b6574d48346b --- apps/lang/english.lang | 17 +++++++++++++++++ apps/settings_list.c | 3 +++ firmware/drivers/audio/xduoolinux_codec.c | 3 ++- firmware/export/xduoolinux_codec.h | 5 ++++- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/apps/lang/english.lang b/apps/lang/english.lang index f268434f60..667d1239ca 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -12170,6 +12170,23 @@ filter_roll_off: "Short Slow" + + id: LANG_FILTER_SUPER_SLOW + desc: in sound settings + user: core + + *: none + filter_roll_off: "Super Slow" + + + *: none + filter_roll_off: "Super Slow" + + + *: none + filter_roll_off: "Super Slow" + + id: LANG_FILTER_SHORT desc: in sound settings diff --git a/apps/settings_list.c b/apps/settings_list.c index 1cdbc4115d..5464416b21 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -858,6 +858,9 @@ const struct settings_list settings[] = { #elif defined(AUDIOHW_HAVE_SHORT2_ROLL_OFF) "roll_off", "sharp,slow,short sharp,short slow", sound_set_filter_roll_off, 4, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW), ID2P(LANG_FILTER_SHORT_SHARP), ID2P(LANG_FILTER_SHORT_SLOW)), +#elif defined(AUDIOHW_HAVE_SS_ROLL_OFF) + "roll_off", "sharp,slow,short sharp,short slow,super slow", sound_set_filter_roll_off, + 5, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW), ID2P(LANG_FILTER_SHORT_SHARP), ID2P(LANG_FILTER_SHORT_SLOW), ID2P(LANG_FILTER_SUPER_SLOW)), #elif defined(AUDIOHW_HAVE_SHORT_ROLL_OFF) "roll_off", "sharp,slow,short,bypass", sound_set_filter_roll_off, 4, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW), ID2P(LANG_FILTER_SHORT), ID2P(LANG_FILTER_BYPASS)), diff --git a/firmware/drivers/audio/xduoolinux_codec.c b/firmware/drivers/audio/xduoolinux_codec.c index 749d551739..3a25f6f7cf 100644 --- a/firmware/drivers/audio/xduoolinux_codec.c +++ b/firmware/drivers/audio/xduoolinux_codec.c @@ -238,7 +238,8 @@ void audiohw_set_filter_roll_off(int value) /* 0 = Sharp; 1 = Slow; 2 = Short Sharp - 3 = Short Slow */ + 3 = Short Slow + 4 = Super Slow */ #if defined(XDUOO_X3II) long int value_hw = value; alsa_controls_set_ints("AK4490 Digital Filter", 1, &value_hw); diff --git a/firmware/export/xduoolinux_codec.h b/firmware/export/xduoolinux_codec.h index 301a341f15..a5bdab0661 100644 --- a/firmware/export/xduoolinux_codec.h +++ b/firmware/export/xduoolinux_codec.h @@ -3,7 +3,6 @@ #define AUDIOHW_CAPS (LINEOUT_CAP | FILTER_ROLL_OFF_CAP) AUDIOHW_SETTING(VOLUME, "dB", 1, 5, -102*10, 0, -30*10) -AUDIOHW_SETTING(FILTER_ROLL_OFF, "", 0, 1, 0, 4, 0) #endif // We want this, but the codec takes over a second to unmute! @@ -12,10 +11,14 @@ AUDIOHW_SETTING(FILTER_ROLL_OFF, "", 0, 1, 0, 4, 0) #if defined(XDUOO_X3II) /* The AK4490 glitches when switching sample rates */ #define AUDIOHW_MUTE_ON_SRATE_CHANGE +AUDIOHW_SETTING(FILTER_ROLL_OFF, "", 0, 1, 0, 5, 0) +#define AUDIOHW_HAVE_SS_ROLL_OFF #endif #if defined(XDUOO_X20) //#define AUDIOHW_NEEDS_INITIAL_UNMUTE +AUDIOHW_SETTING(FILTER_ROLL_OFF, "", 0, 1, 0, 4, 0) +#define AUDIOHW_HAVE_SHORT2_ROLL_OFF #endif void audiohw_mute(int mute); -- cgit v1.2.3