Exemplo n.º 1
0
settings_t *
settings_dup     (settings_t * other)
{
    settings_t * settings;
    plugin_desc_t * desc;
    unsigned long channel;

    settings = g_malloc (sizeof (settings_t));

    settings->sample_rate     = other->sample_rate;
    settings->desc            = other->desc;
    settings->copies          = settings_get_copies (other);
    settings->channels        = settings_get_channels (other);
    settings->wet_dry_enabled = settings_get_wet_dry_enabled (other);
    settings->wet_dry_locked  = settings_get_wet_dry_locked (other);
    settings->lock_all        = settings_get_lock_all (other);
    settings->enabled         = settings_get_enabled (other);
    settings->locks           = NULL;
    settings->control_values  = NULL;

    desc = other->desc;

    if (desc->control_port_count > 0)
    {
        guint copy;
        unsigned long control;

        settings->locks = g_malloc (sizeof (gboolean) * desc->control_port_count);
        for (control = 0; control < desc->control_port_count; control++)
            settings_set_lock (settings, control, settings_get_lock (other, control));

        settings->control_values = g_malloc (sizeof (LADSPA_Data *) * settings->copies);
        for (copy = 0; copy < settings->copies; copy++)
        {
            settings->control_values[copy] = g_malloc (sizeof (LADSPA_Data) * desc->control_port_count);

            for (control = 0; control < desc->control_port_count; control++)
            {
                settings->control_values[copy][control] = settings_get_control_value (other, copy, control);
            }
        }
    }

    settings->wet_dry_values = g_malloc (sizeof (LADSPA_Data) * settings->channels);
    for (channel = 0; channel < settings->channels; channel++)
        settings->wet_dry_values[channel] = settings_get_wet_dry_value (other, channel);

    return settings;
}
Exemplo n.º 2
0
void
jack_rack_add_plugin (jack_rack_t * jack_rack, plugin_t * plugin)
{
  saved_plugin_t * saved_plugin = NULL;
  GSList * list;
  unsigned long control, channel;
  LADSPA_Data value;
  guint copy;
  
  /* see if there's any saved settings that match the plugin id */
  for (list = jack_rack->saved_plugins; list; list = g_slist_next (list))
    {
      saved_plugin = list->data;
      
      if (saved_plugin->settings->desc->id == plugin->desc->id)
        {
          /* process the settings! */
          jack_rack->saved_plugins = g_slist_remove (jack_rack->saved_plugins, saved_plugin);
          break;
        }
      saved_plugin = NULL;
    }

   if ( !saved_plugin )
	return;

  /* initialize plugin parameters */
  plugin->enabled = settings_get_enabled (saved_plugin->settings);
  plugin->wet_dry_enabled = settings_get_wet_dry_enabled (saved_plugin->settings);
	
  for (control = 0; control < saved_plugin->settings->desc->control_port_count; control++)
    for (copy = 0; copy < plugin->copies; copy++)
      {
        value = settings_get_control_value (saved_plugin->settings, copy, control);
        plugin->holders[copy].control_memory[control] = value;
//mlt_log_debug( NULL, "setting control value %s (%d) = %f\n", saved_plugin->settings->desc->port_names[control], copy, value);
//        lff_write (plugin->holders[copy].ui_control_fifos + control, &value);
      }
  if (plugin->wet_dry_enabled)
    for (channel = 0; channel < jack_rack->channels; channel++)
      {
        value = settings_get_wet_dry_value (saved_plugin->settings, channel);
        plugin->wet_dry_values[channel] = value;
//mlt_log_debug( NULL, "setting wet/dry value %d = %f\n", channel, value);
//        lff_write (plugin->wet_dry_fifos + channel, &value);
      }
}