projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Speed up AFL/PFL changes for large sessions
[ardour.git]
/
gtk2_ardour
/
gtk_pianokeyboard.c
diff --git
a/gtk2_ardour/gtk_pianokeyboard.c
b/gtk2_ardour/gtk_pianokeyboard.c
index 8d91626a2b338455806753e70c32f2aee7eef600..2be8cdf2b663abd6f7dac9fc83d79384248623ad 100644
(file)
--- a/
gtk2_ardour/gtk_pianokeyboard.c
+++ b/
gtk2_ardour/gtk_pianokeyboard.c
@@
-155,6
+155,13
@@
press_key(PianoKeyboard *pk, int key)
else
pk->notes[key].sustained = 0;
else
pk->notes[key].sustained = 0;
+ if (pk->monophonic && pk->last_key != key) {
+ pk->notes[pk->last_key].pressed = 0;
+ pk->notes[pk->last_key].sustained = 0;
+ queue_note_draw(pk, pk->last_key);
+ }
+ pk->last_key = key;
+
pk->notes[key].pressed = 1;
g_signal_emit_by_name(GTK_WIDGET(pk), "note-on", key);
pk->notes[key].pressed = 1;
g_signal_emit_by_name(GTK_WIDGET(pk), "note-on", key);
@@
-677,7
+684,11
@@
piano_keyboard_new(void)
pk->enable_keyboard_cue = 0;
pk->octave = 4;
pk->note_being_pressed_using_mouse = -1;
pk->enable_keyboard_cue = 0;
pk->octave = 4;
pk->note_being_pressed_using_mouse = -1;
- memset((void *)pk->notes, 0, sizeof(struct Note) * NNOTES);
+ pk->last_key = 0;
+ pk->monophonic = FALSE;
+
+ memset((void *)pk->notes, 0, sizeof(struct PKNote) * NNOTES);
+
pk->key_bindings = g_hash_table_new(g_str_hash, g_str_equal);
bind_keys_qwerty(pk);
pk->key_bindings = g_hash_table_new(g_str_hash, g_str_equal);
bind_keys_qwerty(pk);
@@
-690,6
+701,12
@@
piano_keyboard_set_keyboard_cue(PianoKeyboard *pk, int enabled)
pk->enable_keyboard_cue = enabled;
}
pk->enable_keyboard_cue = enabled;
}
+void
+piano_keyboard_set_monophonic(PianoKeyboard *pk, gboolean monophonic)
+{
+ pk->monophonic = monophonic;
+}
+
void
piano_keyboard_sustain_press(PianoKeyboard *pk)
{
void
piano_keyboard_sustain_press(PianoKeyboard *pk)
{