basic use of new backend MIDI options
This commit is contained in:
parent
1bd04f8bf3
commit
645e9caeee
@ -77,7 +77,6 @@ EngineControl::EngineControl ()
|
|||||||
, lm_table (5, 2)
|
, lm_table (5, 2)
|
||||||
, have_lm_results (false)
|
, have_lm_results (false)
|
||||||
, midi_refresh_button (_("Refresh list"))
|
, midi_refresh_button (_("Refresh list"))
|
||||||
, aj_button (_("Start MIDI ALSA/JACK bridge"))
|
|
||||||
, ignore_changes (0)
|
, ignore_changes (0)
|
||||||
, _desired_sample_rate (0)
|
, _desired_sample_rate (0)
|
||||||
, no_push (true)
|
, no_push (true)
|
||||||
@ -207,7 +206,7 @@ EngineControl::EngineControl ()
|
|||||||
/* pack it all up */
|
/* pack it all up */
|
||||||
|
|
||||||
notebook.pages().push_back (TabElem (basic_vbox, _("Audio")));
|
notebook.pages().push_back (TabElem (basic_vbox, _("Audio")));
|
||||||
notebook.pages().push_back (TabElem (midi_vbox, _("MIDI")));
|
// notebook.pages().push_back (TabElem (midi_vbox, _("MIDI")));
|
||||||
notebook.pages().push_back (TabElem (lm_vbox, _("Latency")));
|
notebook.pages().push_back (TabElem (lm_vbox, _("Latency")));
|
||||||
notebook.set_border_width (12);
|
notebook.set_border_width (12);
|
||||||
|
|
||||||
@ -413,6 +412,10 @@ EngineControl::build_full_control_notebook ()
|
|||||||
basic_packer.attach (*label, 2, 3, row, row+1, xopt, (AttachOptions) 0);
|
basic_packer.attach (*label, 2, 3, row, row+1, xopt, (AttachOptions) 0);
|
||||||
++row;
|
++row;
|
||||||
|
|
||||||
|
label = manage (left_aligned_label (_("MIDI I/O using")));
|
||||||
|
basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0);
|
||||||
|
basic_packer.attach (midi_option_combo, 1, 2, row, row + 1, xopt, (AttachOptions) 0);
|
||||||
|
row++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -510,7 +513,6 @@ EngineControl::setup_midi_tab_for_backend ()
|
|||||||
void
|
void
|
||||||
EngineControl::setup_midi_tab_for_jack ()
|
EngineControl::setup_midi_tab_for_jack ()
|
||||||
{
|
{
|
||||||
midi_vbox.pack_start (aj_button, false, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -612,7 +614,22 @@ EngineControl::backend_changed ()
|
|||||||
*/
|
*/
|
||||||
list_devices ();
|
list_devices ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vector<string> midi_options = backend->enumerate_midi_options();
|
||||||
|
|
||||||
|
if (midi_options.size() == 1) {
|
||||||
|
/* only contains the "none" option */
|
||||||
|
midi_option_combo.set_sensitive (false);
|
||||||
|
} else {
|
||||||
|
if (_have_control) {
|
||||||
|
set_popdown_strings (midi_option_combo, midi_options);
|
||||||
|
midi_option_combo.set_active_text (midi_options.front());
|
||||||
|
midi_option_combo.set_sensitive (true);
|
||||||
|
} else {
|
||||||
|
midi_option_combo.set_sensitive (false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
maybe_display_saved_state ();
|
maybe_display_saved_state ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -970,6 +987,10 @@ EngineControl::maybe_display_saved_state ()
|
|||||||
show_buffer_duration ();
|
show_buffer_duration ();
|
||||||
input_latency.set_value (state->input_latency);
|
input_latency.set_value (state->input_latency);
|
||||||
output_latency.set_value (state->output_latency);
|
output_latency.set_value (state->output_latency);
|
||||||
|
|
||||||
|
if (!state->midi_option.empty()) {
|
||||||
|
midi_option_combo.set_active_text (state->midi_option);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -996,6 +1017,7 @@ EngineControl::get_state ()
|
|||||||
node->add_property ("input-channels", (*i).input_channels);
|
node->add_property ("input-channels", (*i).input_channels);
|
||||||
node->add_property ("output-channels", (*i).output_channels);
|
node->add_property ("output-channels", (*i).output_channels);
|
||||||
node->add_property ("active", (*i).active ? "yes" : "no");
|
node->add_property ("active", (*i).active ? "yes" : "no");
|
||||||
|
node->add_property ("midi-option", (*i).midi_option);
|
||||||
|
|
||||||
state_nodes->add_child_nocopy (*node);
|
state_nodes->add_child_nocopy (*node);
|
||||||
}
|
}
|
||||||
@ -1092,6 +1114,11 @@ EngineControl::set_state (const XMLNode& root)
|
|||||||
}
|
}
|
||||||
state.active = string_is_affirmative (prop->value ());
|
state.active = string_is_affirmative (prop->value ());
|
||||||
|
|
||||||
|
if ((prop = grandchild->property ("midi-option")) == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
state.midi_option = prop->value ();
|
||||||
|
|
||||||
states.push_back (state);
|
states.push_back (state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1109,6 +1136,7 @@ EngineControl::set_state (const XMLNode& root)
|
|||||||
buffer_size_combo.set_active_text (bufsize_as_string ((*i).buffer_size));
|
buffer_size_combo.set_active_text (bufsize_as_string ((*i).buffer_size));
|
||||||
input_latency.set_value ((*i).input_latency);
|
input_latency.set_value ((*i).input_latency);
|
||||||
output_latency.set_value ((*i).output_latency);
|
output_latency.set_value ((*i).output_latency);
|
||||||
|
midi_option_combo.set_active_text ((*i).midi_option);
|
||||||
ignore_changes--;
|
ignore_changes--;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1139,6 +1167,7 @@ EngineControl::push_state_to_backend (bool start)
|
|||||||
bool change_bufsize = false;
|
bool change_bufsize = false;
|
||||||
bool change_latency = false;
|
bool change_latency = false;
|
||||||
bool change_channels = false;
|
bool change_channels = false;
|
||||||
|
bool change_midi = false;
|
||||||
|
|
||||||
uint32_t ochan = get_output_channels ();
|
uint32_t ochan = get_output_channels ();
|
||||||
uint32_t ichan = get_input_channels ();
|
uint32_t ichan = get_input_channels ();
|
||||||
@ -1321,6 +1350,8 @@ EngineControl::push_state_to_backend (bool start)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
backend->set_midi_option (midi_option_combo.get_active_text());
|
||||||
|
|
||||||
if (start || (was_running && restart_required)) {
|
if (start || (was_running && restart_required)) {
|
||||||
if (ARDOUR_UI::instance()->reconnect_to_engine()) {
|
if (ARDOUR_UI::instance()->reconnect_to_engine()) {
|
||||||
|
@ -62,6 +62,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
|
|||||||
Gtk::ComboBoxText driver_combo;
|
Gtk::ComboBoxText driver_combo;
|
||||||
Gtk::ComboBoxText device_combo;
|
Gtk::ComboBoxText device_combo;
|
||||||
Gtk::ComboBoxText sample_rate_combo;
|
Gtk::ComboBoxText sample_rate_combo;
|
||||||
|
Gtk::ComboBoxText midi_option_combo;
|
||||||
Gtk::ComboBoxText buffer_size_combo;
|
Gtk::ComboBoxText buffer_size_combo;
|
||||||
Gtk::Label buffer_size_duration_label;
|
Gtk::Label buffer_size_duration_label;
|
||||||
Gtk::Adjustment input_latency_adjustment;
|
Gtk::Adjustment input_latency_adjustment;
|
||||||
@ -149,6 +150,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
|
|||||||
uint32_t input_channels;
|
uint32_t input_channels;
|
||||||
uint32_t output_channels;
|
uint32_t output_channels;
|
||||||
bool active;
|
bool active;
|
||||||
|
std::string midi_option;
|
||||||
|
|
||||||
State()
|
State()
|
||||||
: input_latency (0)
|
: input_latency (0)
|
||||||
|
Loading…
Reference in New Issue
Block a user