diff options
author | kotontrion <[email protected]> | 2024-10-09 09:52:40 +0200 |
---|---|---|
committer | kotontrion <[email protected]> | 2024-10-09 09:52:40 +0200 |
commit | 7f7d05362dae3f2262560b9e7303ae8eb9a2ad78 (patch) | |
tree | 38d3c2f45dc86fcbe188808077950d3b1669041a | |
parent | 10a06596c33a4e64a9aa7321680fdfcff8c05173 (diff) |
cava: add more properties
-rw-r--r-- | lib/cava/astal-cava.h | 8 | ||||
-rw-r--r-- | lib/cava/cava.c | 103 |
2 files changed, 97 insertions, 14 deletions
diff --git a/lib/cava/astal-cava.h b/lib/cava/astal-cava.h index 9c2b8ca..f2bc464 100644 --- a/lib/cava/astal-cava.h +++ b/lib/cava/astal-cava.h @@ -12,6 +12,14 @@ G_DECLARE_FINAL_TYPE(AstalCavaCava, astal_cava_cava, ASTAL_CAVA, CAVA, GObject) AstalCavaCava* astal_cava_cava_get_default(); GArray* astal_cava_cava_get_values(AstalCavaCava* self); +gint astal_cava_cava_get_bars(AstalCavaCava* self); +gboolean astal_cava_cava_get_autosens(AstalCavaCava* self); +gboolean astal_cava_cava_get_stereo(AstalCavaCava* self); +gboolean astal_cava_cava_get_monstercat(AstalCavaCava* self); +gdouble astal_cava_cava_get_sensitivity(AstalCavaCava* self); +gdouble astal_cava_cava_get_noise_reduction(AstalCavaCava* self); +gint astal_cava_cava_get_framerate(AstalCavaCava* self); + G_END_DECLS diff --git a/lib/cava/cava.c b/lib/cava/cava.c index a2f7aa3..2298229 100644 --- a/lib/cava/cava.c +++ b/lib/cava/cava.c @@ -3,6 +3,7 @@ #include "cava/config.h" #include "glib-object.h" #include "glib.h" +#include "glibconfig.h" #include <gio/gio.h> #include <cava/common.h> @@ -13,6 +14,12 @@ struct _AstalCavaCava { GObject parent_instance; gint bars; + gboolean autosens; + gdouble sens; + gboolean stereo; + gboolean monstercat; + gdouble noise_reduction; + gint framerate; GArray* values; }; @@ -34,6 +41,12 @@ G_DEFINE_TYPE_WITH_PRIVATE(AstalCavaCava, astal_cava_cava, G_TYPE_OBJECT) typedef enum { ASTAL_CAVA_CAVA_PROP_VALUES = 1, ASTAL_CAVA_CAVA_PROP_BARS, + ASTAL_CAVA_CAVA_PROP_AUTOSENS, + ASTAL_CAVA_CAVA_PROP_SENS, + ASTAL_CAVA_CAVA_PROP_STEREO, + ASTAL_CAVA_CAVA_PROP_MONSTERCAT, + ASTAL_CAVA_CAVA_PROP_NOISE, + ASTAL_CAVA_CAVA_PROP_FRAMERATE, ASTAL_CAVA_CAVA_N_PROPERTIES } AstalCavaProperties; @@ -41,6 +54,8 @@ static GParamSpec* astal_cava_cava_properties[ASTAL_CAVA_CAVA_N_PROPERTIES] = { NULL, }; + + /** * astal_cava_cava_get_values * @self: the AstalCavaCava object @@ -50,6 +65,14 @@ static GParamSpec* astal_cava_cava_properties[ASTAL_CAVA_CAVA_N_PROPERTIES] = { */ GArray* astal_cava_cava_get_values(AstalCavaCava* self) { return self->values; } +gint astal_cava_cava_get_bars(AstalCavaCava* self) { return self->bars; } +gboolean astal_cava_cava_get_autosens(AstalCavaCava* self) { return self->autosens; } +gboolean astal_cava_cava_get_stereo(AstalCavaCava* self) { return self->stereo; } +gboolean astal_cava_cava_get_monstercat(AstalCavaCava* self) { return self->monstercat; } +gdouble astal_cava_cava_get_sensitivity(AstalCavaCava* self) { return self->sens; } +gdouble astal_cava_cava_get_noise_reduction(AstalCavaCava* self) { return self->noise_reduction; } +gint astal_cava_cava_get_framerate(AstalCavaCava* self) { return self->framerate; } + static void astal_cava_cava_set_property(GObject* object, guint property_id, const GValue* value, GParamSpec* pspec) { AstalCavaCava* self = ASTAL_CAVA_CAVA(object); @@ -58,6 +81,24 @@ static void astal_cava_cava_set_property(GObject* object, guint property_id, con case ASTAL_CAVA_CAVA_PROP_BARS: self->bars = g_value_get_int(value); break; + case ASTAL_CAVA_CAVA_PROP_AUTOSENS: + self->autosens = g_value_get_boolean(value); + break; + case ASTAL_CAVA_CAVA_PROP_SENS: + self->sens = g_value_get_double(value); + break; + case ASTAL_CAVA_CAVA_PROP_NOISE: + self->noise_reduction = g_value_get_double(value); + break; + case ASTAL_CAVA_CAVA_PROP_STEREO: + self->stereo = g_value_get_boolean(value); + break; + case ASTAL_CAVA_CAVA_PROP_MONSTERCAT: + self->monstercat = g_value_get_boolean(value); + break; + case ASTAL_CAVA_CAVA_PROP_FRAMERATE: + self->framerate = g_value_get_int(value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; @@ -75,6 +116,24 @@ static void astal_cava_cava_get_property(GObject* object, guint property_id, GVa case ASTAL_CAVA_CAVA_PROP_VALUES: g_value_set_pointer(value, self->values); break; + case ASTAL_CAVA_CAVA_PROP_AUTOSENS: + g_value_set_boolean(value, self->autosens); + break; + case ASTAL_CAVA_CAVA_PROP_SENS: + g_value_set_double(value, self->sens); + break; + case ASTAL_CAVA_CAVA_PROP_NOISE: + g_value_set_double(value, self->noise_reduction); + break; + case ASTAL_CAVA_CAVA_PROP_STEREO: + g_value_set_boolean(value, self->stereo); + break; + case ASTAL_CAVA_CAVA_PROP_MONSTERCAT: + g_value_set_boolean(value, self->monstercat); + break; + case ASTAL_CAVA_CAVA_PROP_FRAMERATE: + g_value_set_int(value, self->framerate); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; @@ -109,31 +168,33 @@ static void astal_cava_cava_constructed(GObject* object) { .data_format = strdup("binary"), .fixedbars = self->bars, - - //TODO: make more of those configurable + .autosens = self->autosens, + .sens = self->sens, + .stereo = self->stereo, + .channels = self->stereo + 1, + .monstercat = self->monstercat, + .noise_reduction = self->noise_reduction, + .framerate = self->framerate, + + //TODO: make these configurable .audio_source = strdup("auto"), .input = INPUT_PIPEWIRE, - .monstercat = 0, - .sens = 1, - .noise_reduction = 0.77, + //maybe make some of them configurable .lower_cut_off = 50, .upper_cut_off = 10000, .mono_opt = AVERAGE, - .stereo = 0, - .framerate = 60, - .autosens = 1, - .channels = 2, .waves = 0, .userEQ = NULL, .userEQ_keys = 0, .userEQ_enabled = 0, .samplerate = 44100, .samplebits = 16, - .autoconnect = 2, .waveform = 0, //not needed in this lib + .autoconnect = 2, + .reverse = 0, .sleep_timer = 0, .show_idle_bar_heads = 1, .continuous_rendering = 0, @@ -145,7 +206,6 @@ static void astal_cava_cava_constructed(GObject* object) { .draw_and_quit = 0, .zero_test = 0, .non_zero_test = 0, - .reverse = 0, .sync_updates = 0, .disable_blanking = 0, .bar_height = 32, @@ -196,9 +256,7 @@ static void astal_cava_cava_constructed(GObject* object) { priv->timer_id = g_timeout_add(1000 / priv->cfg.framerate, G_SOURCE_FUNC(exec_cava), self); } -static void astal_cava_cava_init(AstalCavaCava* self) { - AstalCavaCavaPrivate* priv = astal_cava_cava_get_instance_private(self); -} +static void astal_cava_cava_init(AstalCavaCava* self) { } /** * astal_cava_cava_get_default @@ -252,6 +310,23 @@ static void astal_cava_cava_class_init(AstalCavaCavaClass* class) { astal_cava_cava_properties[ASTAL_CAVA_CAVA_PROP_BARS] = g_param_spec_int("bars", "bars", "number of bars per channel", 1, G_MAXINT, 20, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + astal_cava_cava_properties[ASTAL_CAVA_CAVA_PROP_AUTOSENS] = + g_param_spec_boolean("autosens", "autosens", "dynamically adjust sensitivity", TRUE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + astal_cava_cava_properties[ASTAL_CAVA_CAVA_PROP_SENS] = + g_param_spec_double("sensitivity", "sensitivity", "sensitivity", 0, G_MAXDOUBLE, 1, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + astal_cava_cava_properties[ASTAL_CAVA_CAVA_PROP_STEREO] = + g_param_spec_boolean("stereo", "stereo", "stereo", FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + astal_cava_cava_properties[ASTAL_CAVA_CAVA_PROP_MONSTERCAT] = + g_param_spec_boolean("monstercat", "monstercat", "monstercat smoothing", FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + astal_cava_cava_properties[ASTAL_CAVA_CAVA_PROP_NOISE] = + g_param_spec_double("noise_reduction", "noise_reduction", "noise reduction", 0, G_MAXDOUBLE, 0.77, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + astal_cava_cava_properties[ASTAL_CAVA_CAVA_PROP_FRAMERATE] = + g_param_spec_int("framerate", "framerate", "framerate", 1, G_MAXINT, 60, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties(object_class, ASTAL_CAVA_CAVA_N_PROPERTIES, astal_cava_cava_properties); } |