diff -ur jack-rack-1.4.7-orig/src/midi_control.c jack-rack-1.4.7/src/midi_control.c --- jack-rack-1.4.7-orig/src/midi_control.c 2007-11-18 13:13:49.000000000 +0000 +++ jack-rack-1.4.7/src/midi_control.c 2009-11-13 21:57:43.000000000 +0000 @@ -126,6 +126,9 @@ midi_ctrl->min = 0.0; midi_ctrl->max = 1.0; + midi_ctrl->real_min = midi_ctrl->min; + midi_ctrl->real_max = midi_ctrl->max; + return midi_ctrl; } @@ -141,6 +144,9 @@ midi_ctrl->min = 0.0; midi_ctrl->max = 1.0; + midi_ctrl->real_min = midi_ctrl->min; + midi_ctrl->real_max = midi_ctrl->max; + return midi_ctrl; } diff -ur jack-rack-1.4.7-orig/src/plugin_slot.c jack-rack-1.4.7/src/plugin_slot.c --- jack-rack-1.4.7-orig/src/plugin_slot.c 2007-11-18 13:13:49.000000000 +0000 +++ jack-rack-1.4.7/src/plugin_slot.c 2009-11-13 22:03:20.000000000 +0000 @@ -514,6 +514,7 @@ midi_control_set_midi_param (new_midi_ctrl, midi_ctrl->midi_param); midi_control_set_min_value (new_midi_ctrl, midi_ctrl->min); midi_control_set_max_value (new_midi_ctrl, midi_ctrl->max); + midi_control_set_locked (new_midi_ctrl, midi_ctrl->locked); plugin_slot_add_midi_control (plugin_slot, new_midi_ctrl); @@ -558,6 +559,7 @@ } + plugin_slot_remove_midi_controls (plugin_slot); /* kill all the control stuff */ if (plugin_slot->control_table) diff -ur jack-rack-1.4.7-orig/src/process.c jack-rack-1.4.7/src/process.c --- jack-rack-1.4.7-orig/src/process.c 2007-11-18 13:13:49.000000000 +0000 +++ jack-rack-1.4.7/src/process.c 2009-11-14 09:55:57.000000000 +0000 @@ -425,6 +425,10 @@ if (quitting) return 1; + + /* no ports have been registered yet */ + if (procinfo->port_count == 0) + return 0; process_control_port_messages (procinfo); @@ -629,10 +633,6 @@ return NULL; } - err = process_info_set_port_count (procinfo, ui, rack_channels); - if (err) - return NULL; - sample_rate = jack_get_sample_rate (procinfo->jack_client); buffer_size = jack_get_sample_rate (procinfo->jack_client); @@ -644,6 +644,10 @@ jack_activate (procinfo->jack_client); + err = process_info_set_port_count (procinfo, ui, rack_channels); + if (err) + return NULL; + #ifdef HAVE_LASH /* sort out LASH stuff */ lash_jack_client_name (global_lash_client, jack_client_name);