static void xmms_replaygain_config_changed (xmms_object_t *obj, xmmsv_t *_val, gpointer udata) { const gchar *name; xmms_xform_t *xform = udata; xmms_replaygain_data_t *data; gboolean dirty = FALSE; const char *value; data = xmms_xform_private_data_get (xform); g_return_if_fail (data); name = xmms_config_property_get_name ((xmms_config_property_t *) obj); value = xmms_config_property_get_string ((xmms_config_property_t *) obj); if (!g_ascii_strcasecmp (name, "replaygain.mode")) { data->mode = parse_mode (value); dirty = TRUE; } else if (!g_ascii_strcasecmp (name, "replaygain.use_anticlip")) { data->use_anticlip = !!atoi (value); dirty = TRUE; } else if (!g_ascii_strcasecmp (name, "replaygain.preamp")) { data->preamp = pow (10.0, atof (value) / 20.0); dirty = TRUE; } else if (!g_ascii_strcasecmp (name, "replaygain.enabled")) { data->enabled = !!atoi (value); } if (dirty) { compute_gain (xform, data); } }
static void xmms_normalize_config_changed (xmms_object_t *obj, xmmsv_t *_value, gpointer udata) { xmms_normalize_data_t *data = udata; const gchar *name; gint value; name = xmms_config_property_get_name ((xmms_config_property_t *) obj); value = xmms_config_property_get_int ((xmms_config_property_t *) obj); if (!g_ascii_strcasecmp (name, "normalize.use_anticlip")) { data->use_anticlip = !!value; } else if (!g_ascii_strcasecmp (name, "normalize.target")) { data->target = value; } else if (!g_ascii_strcasecmp (name, "normalize.max_gain")) { data->max_gain = value; } else if (!g_ascii_strcasecmp (name, "normalize.smooth")) { data->smooth = value; } else if (!g_ascii_strcasecmp (name, "normalize.buckets")) { data->buckets = value; } /* reconfigure needed */ data->dirty = TRUE; }
static void xmms_eq_gain_changed (xmms_object_t *object, xmmsv_t *_data, gpointer userdata) { xmms_config_property_t *val; xmms_equalizer_data_t *priv; const gchar *name; gint i; gfloat gain; g_return_if_fail (object); g_return_if_fail (userdata); val = (xmms_config_property_t *) object; priv = userdata; name = xmms_config_property_get_name (val); XMMS_DBG ("gain value changed! %s => %f", name, xmms_config_property_get_float (val)); gain = xmms_config_property_get_float (val); if (gain < -20.0 || gain > 20.0) { gchar buf[20]; gain = CLAMP (gain, -20.0, 20.0); g_snprintf (buf, sizeof (buf), "%g", gain); xmms_config_property_set_data (val, buf); } /* we are passed the full config key, not just the last token, * which makes this code kinda ugly. * fix when bug 97 has been resolved */ name = strrchr (name, '.') + 1; if (!strcmp (name, "preamp")) { /* scale the -20.0 - 20.0 value to correct one */ for (i=0; i<EQ_CHANNELS; i++) { set_preamp (i, xmms_eq_gain_scale (gain, TRUE)); } } else { gint band = -1; if (!strncmp (name, "gain", 4) && !priv->use_legacy) { band = atoi (name + 4); } else if (!strncmp (name, "legacy", 6) && priv->use_legacy) { band = atoi (name + 6); } if (band >= 0) { /* scale the -20.0 - 20.0 value to correct one */ for (i=0; i<EQ_CHANNELS; i++) { set_gain (band, i, xmms_eq_gain_scale (gain, FALSE)); } } } }
static void xmms_vocoder_config_changed (xmms_object_t *object, xmmsv_t *_data, gpointer userdata) { xmms_config_property_t *val; xmms_vocoder_data_t *data; const gchar *name; gint value; g_return_if_fail (object); g_return_if_fail (userdata); val = (xmms_config_property_t *) object; data = (xmms_vocoder_data_t *) userdata; name = xmms_config_property_get_name (val); value = xmms_config_property_get_int (val); XMMS_DBG ("config value changed! %s => %d", name, value); /* we are passed the full config key, not just the last token, * which makes this code kinda ugly. * fix when bug 97 has been resolved */ name = strrchr (name, '.') + 1; if (!strcmp (name, "enabled")) { data->enabled = !!value; } else if (!strcmp (name, "speed")) { data->speed = (gfloat) value / 100.0; pvocoder_set_scale (data->pvoc, data->speed * data->pitch); } else if (!strcmp (name, "pitch") && value != 0) { data->pitch = 100.0 / (gfloat) value; data->resdata.src_ratio = data->pitch; pvocoder_set_scale (data->pvoc, data->speed * data->pitch); } else if (!strcmp (name, "attack_detection") && value != 0) { data->attack_detection = value; pvocoder_set_attack_detection (data->pvoc, value); } }
static void xmms_eq_config_changed (xmms_object_t * object, xmmsv_t *_data, gpointer userdata) { xmms_config_property_t *val; xmms_equalizer_data_t *priv; const gchar *name; gint value, i, j; g_return_if_fail (object); g_return_if_fail (userdata); val = (xmms_config_property_t *) object; priv = (xmms_equalizer_data_t *) userdata; name = xmms_config_property_get_name (val); value = xmms_config_property_get_int (val); XMMS_DBG ("config value changed! %s => %d", name, value); /* we are passed the full config key, not just the last token, * which makes this code kinda ugly. * fix when bug 97 has been resolved */ name = strrchr (name, '.') + 1; if (!strcmp (name, "enabled")) { priv->enabled = !!value; } else if (!strcmp (name, "extra_filtering")) { priv->extra_filtering = value; } else if (!strcmp (name, "use_legacy")) { gfloat gain; priv->use_legacy = value; if (priv->use_legacy) { for (i=0; i<EQ_BANDS_LEGACY; i++) { gain = xmms_config_property_get_float (priv->legacy[i]); for (j=0; j<EQ_CHANNELS; j++) { set_gain (j, i, xmms_eq_gain_scale (gain, FALSE)); } } } else { for (i=0; i<priv->bands; i++) { gain = xmms_config_property_get_float (priv->gain[i]); for (j=0; j<EQ_CHANNELS; j++) { set_gain (j, i, xmms_eq_gain_scale (gain, FALSE)); } } } } else if (!strcmp (name, "bands")) { if (value != 10 && value != 15 && value != 25 && value != 31) { gchar buf[20]; /* Illegal new value so we restore the old value */ g_snprintf (buf, sizeof (buf), "%d", priv->bands); xmms_config_property_set_data (val, buf); } else { priv->bands = value; for (i=0; i<EQ_MAX_BANDS; i++) { xmms_config_property_set_data (priv->gain[i], "0.0"); if (!priv->use_legacy) { for (j=0; j<EQ_CHANNELS; j++) { set_gain (j, i, xmms_eq_gain_scale (0.0, FALSE)); } } } } } }
static void xmms_modplug_config_changed (xmms_object_t *obj, xmmsv_t *_value, gpointer udata) { xmms_modplug_data_t *data = udata; xmms_config_property_t *prop = (xmms_config_property_t *) obj; const gchar *name; const gchar *value; gint intvalue; name = xmms_config_property_get_name (prop); if (!g_ascii_strcasecmp (name, "modplug.resample")) { value = xmms_config_property_get_string (prop); if (!g_ascii_strcasecmp (value, "fir")) { data->settings.mResamplingMode = MODPLUG_RESAMPLE_FIR; } else if (!g_ascii_strcasecmp (value, "spline")) { data->settings.mResamplingMode = MODPLUG_RESAMPLE_SPLINE; } else if (!g_ascii_strcasecmp (value, "linear")) { data->settings.mResamplingMode = MODPLUG_RESAMPLE_LINEAR; } else { data->settings.mResamplingMode = MODPLUG_RESAMPLE_NEAREST; } } else { intvalue = xmms_config_property_get_int (prop); if (!g_ascii_strcasecmp (name, "modplug.freq")) { data->settings.mFrequency = intvalue; } else if (!g_ascii_strcasecmp (name, "modplug.reverb_depth")) { data->settings.mReverbDepth = intvalue; } else if (!g_ascii_strcasecmp (name, "modplug.reverb_delay")) { data->settings.mReverbDelay = intvalue; } else if (!g_ascii_strcasecmp (name, "modplug.bass_amount")) { data->settings.mBassAmount = intvalue; } else if (!g_ascii_strcasecmp (name, "modplug.bass_range")) { data->settings.mBassRange = intvalue; } else if (!g_ascii_strcasecmp (name, "modplug.surround_depth")) { data->settings.mSurroundDepth = intvalue; } else if (!g_ascii_strcasecmp (name, "modplug.surround_delay")) { data->settings.mSurroundDelay = intvalue; } else if (!g_ascii_strcasecmp (name, "modplug.loop")) { data->settings.mLoopCount = intvalue; } else if (!g_ascii_strcasecmp (name, "modplug.enable_oversampling")) { if (intvalue) { data->settings.mFlags |= MODPLUG_ENABLE_OVERSAMPLING; } else { data->settings.mFlags &= ~MODPLUG_ENABLE_OVERSAMPLING; } } else if (!g_ascii_strcasecmp (name, "modplug.enable_noise_reduction")) { if (intvalue) { data->settings.mFlags |= MODPLUG_ENABLE_NOISE_REDUCTION; } else { data->settings.mFlags &= ~MODPLUG_ENABLE_NOISE_REDUCTION; } } else if (!g_ascii_strcasecmp (name, "modplug.enable_reverb")) { if (intvalue) { data->settings.mFlags |= MODPLUG_ENABLE_REVERB; } else { data->settings.mFlags &= ~MODPLUG_ENABLE_REVERB; } } else if (!g_ascii_strcasecmp (name, "modplug.enable_megabass")) { if (intvalue) { data->settings.mFlags |= MODPLUG_ENABLE_MEGABASS; } else { data->settings.mFlags &= ~MODPLUG_ENABLE_MEGABASS; } } else if (!g_ascii_strcasecmp (name, "modplug.enable_surround")) { if (intvalue) { data->settings.mFlags |= MODPLUG_ENABLE_SURROUND; } else { data->settings.mFlags &= ~MODPLUG_ENABLE_SURROUND; } } } ModPlug_SetSettings (&data->settings); }