summaryrefslogtreecommitdiff
path: root/gtk2_ardour/patch_change_widget.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/patch_change_widget.cc')
-rw-r--r--gtk2_ardour/patch_change_widget.cc32
1 files changed, 12 insertions, 20 deletions
diff --git a/gtk2_ardour/patch_change_widget.cc b/gtk2_ardour/patch_change_widget.cc
index 0e5ad911ab..51cae03f7e 100644
--- a/gtk2_ardour/patch_change_widget.cc
+++ b/gtk2_ardour/patch_change_widget.cc
@@ -57,8 +57,6 @@ PatchChangeWidget::PatchChangeWidget (boost::shared_ptr<ARDOUR::Route> r)
, _audition_end_spin (*manage (new Adjustment (60, 0, 127, 1, 16)))
, _audition_velocity (*manage (new Adjustment (100, 1, 127, 1, 16)))
, _audition_note_on (false)
- , _piano ((PianoKeyboard*)piano_keyboard_new())
- , _pianomm (Glib::wrap((GtkWidget*)_piano))
{
Box* box;
box = manage (new HBox ());
@@ -114,11 +112,12 @@ PatchChangeWidget::PatchChangeWidget (boost::shared_ptr<ARDOUR::Route> r)
_channel_select.AddMenuElem (MenuElemNoMnemonic (buf, sigc::bind (sigc::mem_fun (*this, &PatchChangeWidget::select_channel), chn)));
}
- piano_keyboard_set_monophonic (_piano, TRUE);
- g_signal_connect (G_OBJECT (_piano), "note-on", G_CALLBACK (PatchChangeWidget::_note_on_event_handler), this);
- g_signal_connect (G_OBJECT (_piano), "note-off", G_CALLBACK (PatchChangeWidget::_note_off_event_handler), this);
- _pianomm->set_flags(Gtk::CAN_FOCUS);
- pack_start (*_pianomm, false, false);
+ _piano.set_monophonic (true);
+ _piano.NoteOn.connect (sigc::mem_fun (*this, &PatchChangeWidget::_note_on_event_handler));
+ _piano.NoteOff.connect (sigc::mem_fun (*this, &PatchChangeWidget::note_off_event_handler));
+
+ _piano.set_flags(Gtk::CAN_FOCUS);
+ pack_start (_piano, false, false);
_audition_start_spin.set_sensitive (false);
_audition_end_spin.set_sensitive (false);
@@ -145,7 +144,6 @@ PatchChangeWidget::PatchChangeWidget (boost::shared_ptr<ARDOUR::Route> r)
PatchChangeWidget::~PatchChangeWidget ()
{
cancel_audition ();
- delete _pianomm;
}
void
@@ -434,7 +432,7 @@ PatchChangeWidget::cancel_audition ()
if (_audition_note_on) {
note_off_event_handler (_audition_note_num);
- piano_keyboard_set_note_off (_piano, _audition_note_num);
+ _piano.set_note_off (_audition_note_num);
}
}
@@ -467,25 +465,19 @@ PatchChangeWidget::audition_next ()
{
if (_audition_note_on) {
note_off_event_handler (_audition_note_num);
- piano_keyboard_set_note_off (_piano, _audition_note_num);
+ _piano.set_note_off (_audition_note_num);
return ++_audition_note_num <= _audition_end_spin.get_value_as_int() && _audition_enable.get_active ();
} else {
note_on_event_handler (_audition_note_num, true);
- piano_keyboard_set_note_on (_piano, _audition_note_num);
+ _piano.set_note_on (_audition_note_num);
return true;
}
}
void
-PatchChangeWidget::_note_on_event_handler(GtkWidget*, int note, int, gpointer arg)
-{
- ((PatchChangeWidget*)arg)->note_on_event_handler(note, false);
-}
-
-void
-PatchChangeWidget::_note_off_event_handler(GtkWidget*, int note, gpointer arg)
+PatchChangeWidget::_note_on_event_handler (int note, int)
{
- ((PatchChangeWidget*)arg)->note_off_event_handler(note);
+ note_on_event_handler(note, false);
}
void
@@ -493,7 +485,7 @@ PatchChangeWidget::note_on_event_handler (int note, bool for_audition)
{
if (!for_audition) {
cancel_audition ();
- _pianomm->grab_focus ();
+ _piano.grab_focus ();
}
uint8_t event[3];
event[0] = (MIDI_CMD_NOTE_ON | _channel);