summaryrefslogtreecommitdiff
path: root/gtk2_ardour/step_entry.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-08-11 18:21:37 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-08-11 18:21:37 +0000
commit5182f0770cca50cbb7c8fe419b2e64af02525553 (patch)
treed83afeadcc8ab51bcdae2cb993f2f8a60100e9c2 /gtk2_ardour/step_entry.cc
parentfd3219bf29415006d6680fc5cf2dac97c35972bc (diff)
add a first hack at a step edit cursor (to be changed); add program+bank stubs (non-functional for the foreseeable future); fix up step edit changes propagating across all MIDI tracks; make program change "flags" change height along with track
git-svn-id: svn://localhost/ardour2/branches/3.0@7598 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/step_entry.cc')
-rw-r--r--gtk2_ardour/step_entry.cc46
1 files changed, 42 insertions, 4 deletions
diff --git a/gtk2_ardour/step_entry.cc b/gtk2_ardour/step_entry.cc
index c9e8bf7e58..fa5a3aac85 100644
--- a/gtk2_ardour/step_entry.cc
+++ b/gtk2_ardour/step_entry.cc
@@ -73,6 +73,12 @@ StepEntry::StepEntry (MidiTimeAxisView& mtv)
, length_divisor_spinner (length_divisor_adjustment)
, velocity_adjustment (64.0, 0.0, 127.0, 1.0, 4.0)
, velocity_spinner (velocity_adjustment)
+ , bank_adjustment (0, 0.0, 127.0, 1.0, 4.0)
+ , bank_spinner (bank_adjustment)
+ , bank_button (_("+"))
+ , program_adjustment (0, 0.0, 127.0, 1.0, 4.0)
+ , program_spinner (program_adjustment)
+ , program_button (_("+"))
, _piano (0)
, piano (0)
, _mtv (&mtv)
@@ -287,11 +293,11 @@ StepEntry::StepEntry (MidiTimeAxisView& mtv)
w->show();
chord_button.add (*w);
- rest_box.pack_start (rest_button, false, false);
- rest_box.pack_start (grid_rest_button, false, false);
+ rest_box.pack_start (rest_button, true, false);
+ rest_box.pack_start (grid_rest_button, true, false);
- resync_box.pack_start (beat_resync_button, false, false);
- resync_box.pack_start (bar_resync_button, false, false);
+ resync_box.pack_start (beat_resync_button, true, false);
+ resync_box.pack_start (bar_resync_button, true, false);
ARDOUR_UI::instance()->set_tip (&chord_button, _("Stack inserted notes to form a chord"), "");
ARDOUR_UI::instance()->set_tip (&sustain_button, _("Extend selected notes by note length"), "");
@@ -300,6 +306,8 @@ StepEntry::StepEntry (MidiTimeAxisView& mtv)
ARDOUR_UI::instance()->set_tip (&grid_rest_button, _("Insert a grid-unit's rest"), "");
ARDOUR_UI::instance()->set_tip (&beat_resync_button, _("Insert a rest until the next beat"), "");
ARDOUR_UI::instance()->set_tip (&bar_resync_button, _("Insert a rest until the next bar"), "");
+ ARDOUR_UI::instance()->set_tip (&bank_button, _("Insert a bank change message"), "");
+ ARDOUR_UI::instance()->set_tip (&program_button, _("Insert a program change message"), "");
upper_box.set_spacing (6);
upper_box.pack_start (chord_button, false, false);
@@ -341,6 +349,22 @@ StepEntry::StepEntry (MidiTimeAxisView& mtv)
v->pack_start (octave_spinner, false, false);
upper_box.pack_start (*v, false, false);
+ v = manage (new VBox);
+ l = manage (new Label (_("Bank")));
+ v->set_spacing (6);
+ v->pack_start (*l, false, false);
+ v->pack_start (bank_spinner, false, false);
+ v->pack_start (bank_button, false, false);
+ upper_box.pack_start (*v, false, false);
+
+ v = manage (new VBox);
+ l = manage (new Label (_("Program")));
+ v->set_spacing (6);
+ v->pack_start (*l, false, false);
+ v->pack_start (program_spinner, false, false);
+ v->pack_start (program_button, false, false);
+ upper_box.pack_start (*v, false, false);
+
velocity_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &StepEntry::velocity_value_change));
length_divisor_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &StepEntry::length_value_change));
@@ -352,6 +376,8 @@ StepEntry::StepEntry (MidiTimeAxisView& mtv)
g_signal_connect(G_OBJECT(_piano), "note-off", G_CALLBACK(_note_off_event_handler), this);
g_signal_connect(G_OBJECT(_piano), "rest", G_CALLBACK(_rest_event_handler), this);
+ program_button.signal_clicked().connect (sigc::mem_fun (*this, &StepEntry::program_click));
+ bank_button.signal_clicked().connect (sigc::mem_fun (*this, &StepEntry::bank_click));
rest_button.signal_clicked().connect (sigc::mem_fun (*this, &StepEntry::rest_click));
grid_rest_button.signal_clicked().connect (sigc::mem_fun (*this, &StepEntry::grid_rest_click));
chord_button.signal_toggled().connect (sigc::mem_fun (*this, &StepEntry::chord_toggled));
@@ -567,6 +593,18 @@ StepEntry::load_bindings ()
}
void
+StepEntry::program_click ()
+{
+ _mtv->step_add_program_change (note_channel(), (int8_t) floor (program_adjustment.get_value()));
+}
+
+void
+StepEntry::bank_click ()
+{
+ _mtv->step_add_bank_change (note_channel(), (int8_t) floor (bank_adjustment.get_value()));
+}
+
+void
StepEntry::insert_rest ()
{
_mtv->step_edit_rest (note_length());