Commit Graph

50 Commits

Author SHA1 Message Date
darless
9f4a0b444e
Fix #9421: F7 tied to velocity 96 but it was not present in the velocity menu 2023-08-01 22:19:24 +02:00
3c2112abf5 widgets & GUI: Start/StopGesture signals should pass on GDK event state 2023-07-26 13:11:52 -06:00
322e7c328e
Vkeybd: Bind F5 to F8 keys to velocity 2023-06-10 15:03:09 +02:00
b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
a27f1e8cf9
Vkbd: fix stuck notes when playing fast
The virtual keyboard sends all events with the same timestamp.
When playing fast (mouse-sweep) note-on and note-off will have
the same timestamp.

Since dbd8089fb8, a393f75694 concurrent MIDI are sorted with note-off
first. This correctly handles events when played from the timeline:
 note-on .. note-off|note-on ... note-off

But in case of a MIDI keyboard a note-off event must be send after
the note-on.
2022-04-20 21:45:12 +02:00
Mads Kiilerich
7f649efd42
gtkmm: use set_can_focus() instead of deprecated Gtk::Widget::set_flags(CAN_FOCUS) 2022-04-08 21:11:06 +02:00
ca22ba77e1 Constification: make Stateful::get_state() const, with all other required const-ness added (GUI) 2022-04-06 21:56:59 -06:00
Olivier Humbert
704048940e
Fix typographical errors 2020-09-15 20:32:52 +02:00
fcfaa0ac49
Fix a potential endless recursion from c2b25b453e
ArdourDropdown::set_active() -> StateChanged -> .. -> set_active()
2020-04-22 16:20:54 +02:00
1eb98316a3
Rename KeyboardLayout to PianoKeyBindings
This is to prevent polluting the global namespace with a
symbol name that is likely to cause conflicts.
2020-04-07 18:40:04 +02:00
d4d57c844f
Styleguide #12 avoid get_ for accessors 2020-04-07 18:30:34 +02:00
Nil Geisweiller
104d37e5a2
Move keyboard layout in its own class 2020-04-07 18:26:45 +02:00
Nil Geisweiller
4001ed7515 Initialize keyboard layout based on user preference
Otherwise the Simple QWERTY layout is loaded in the Virtual MIDI Keyboard
regardless of what is set in

Preferences->MIDI->Virtual Keyboard->Virtual Keyboard Layout
2020-03-28 20:36:39 +02:00
b942eecc9c
Vkeybd: force release notes on panic
If key(s) are still being pressed, a key-repeat will re-trigger
the most recently pressed note (depending on keyboard settings).
2019-12-26 12:17:20 +01:00
24b46d1f75
Vkeybd: improve velocity dropdown usability
Limit velocity dropdown to a subset of most used values, but
allow to select any value using mouse-wheel
2019-12-25 13:15:32 +01:00
bc776eac97
Vkeybd: use ArdourWidgets for all GUI elements
Remove Gtk widgets and improve look&feel consistency.
2019-12-24 18:15:09 +01:00
ecdbd1df92
Vkeybd: numeric only spinboxes for octave and velocity
based on a patch by Alex Mitchell
2019-12-19 23:02:19 +01:00
d0668721d5
Vkeybd simplification
* remove Y-axis dependent velocity (difference between
  black/white keys made this not very usable
* remove Bank/Patch selector (there are already three other
  Bank/Patch UIs
* move keyboard-layout selection into Preferences > MIDI
2019-12-19 18:57:40 +01:00
01291f3e0f
Vkeybd: re-layout, prepare config & patch pane removal 2019-12-19 18:45:49 +01:00
89ca6e151a
Vkeybd: add a mod-wheel 2019-12-19 18:45:49 +01:00
9c6d9324bd
VKeybd: exponential pitch-wheel/bend interpolation 2019-12-17 16:47:46 +01:00
9ddc4fcce9
Vkeybd: fix octave up/down direction, speed up pitch-bend 2019-12-16 15:42:42 +01:00
322e6e08c4
Vkeybd: grab all key-events and use timer instead of key-repeat
This fixes an issue with arrow-keys (up/down, left/right). Those
were previously only handled when the Virtual Keyboard window itself
had focus.

Also key-repeat for pitch-bend is now ignored and a dedicated timer
is used to queue events. This fixes an issue with the first repeat
taking longer than successive ones, and makes this feature independent
of any desktop user settings.
2019-12-16 15:02:39 +01:00
2add730263
Vkeybd: Experiment with key-repeat for pitch-bend 2019-12-16 02:30:42 +01:00
e1c0f99ef2
VKeybd: add Up/Down as alternative Pitch-bend shortcuts 2019-12-15 17:30:25 +01:00
f969d4fc31
Vkeybd: Add tooltip to pitchbend control 2019-12-15 14:06:00 +01:00
a31fde491a
VKeybd: Pitchebend sprung mode and keyboard-shortcuts
This unconditionally returns the pitch-bend wheel when used
by mouse-drag/drop.  Mouse-wheel retains the "wheel" mode.

<F1>-<F4> key-bindings have been added to jump to discrete values
2019-12-15 14:06:00 +01:00
cc9f941488
VKeybd: shrink height when hiding config pane 2019-12-13 16:04:34 +01:00
5324587a80
Vkeybd: default to single-row QWERTY binding 2019-12-12 23:59:38 +01:00
db08810164
Virtual-keyboard: "Tab" to sustain (still undocumented) 2019-11-02 23:56:40 +01:00
b68a7fdf96
Make virtual-keyboard messages translatable -- #7834 2019-11-02 02:44:27 +01:00
b53431a089
Virtual-keyboard: consolidate options
Remove use options for annotations, force them "always on",
and request space to draw them.

Add option to pick single-line octave bindings
2019-10-27 00:06:14 +02:00
35788fbaaa
Virtual-keyboard: prefer dropdown for channel & transpose
This addresses issue with text-entry and input focus
2019-10-25 23:53:23 +02:00
7bb67d0402
Virtual-keyboard: fix text-entry in config widgets 2019-10-25 21:54:16 +02:00
12d4d6daa7
Virtual-keyboard: never-ending details
- Fix key-bindings (first propagate to piano, ignore global bindings)
- Allow to switch octaves with left/right arrow key
- Tweak font-sizes used for annotations
2019-10-25 21:24:25 +02:00
c0c1fd8b60
Rename PianoKeyboard class, avoid ambiguities
A C++ class "PianoKeyboard" in the global namespace may cause
issues with some plugins that export and use an identically
named symbol.
2019-10-25 21:24:25 +02:00
7672b1cb43
NO-OP: whitespace 2019-10-25 21:24:25 +02:00
3f2f517291
Rough-in gtk-pianokeyboard C -> C++ 2019-10-24 19:59:22 +02:00
aaae93cae3
Return key-focus to piano-keyboard 2019-10-24 05:13:56 +02:00
f3e6f60242
Virtual-keyboard: add option to transpose 2019-10-21 19:31:25 +02:00
226cac95e7
NO-OP: whitespace 2019-10-21 16:08:28 +02:00
3daf16dc3a
Virtual-keyboard: cont'd initial development:
* Reset default note range to 0..127 for step-entry and other users
* Allow to print label "C-<n>" on keyboard
* Fix 6 octave note range
* Save/load user settings in virtual-keyboard window
2019-10-21 16:07:12 +02:00
b523583bb4
Virtual-Keyboard significant overhaul:
* fix key-range off-by-one 0..127
* allow to shift octave
* allow to configure note range
* highlight grand-piano range and keyboard-shortcut range
* proper piano layout (black key offsets)
* add support for DVORAK keyboard layout

(still incomplete: settings are not yet saved/restored,
_piano_key_velocity should become a HSliderController, ...)
2019-10-21 05:42:05 +02:00
92173ca118
Virtual-Keyboard: Fix use of scrollwheel on dropdowns 2019-10-20 21:22:38 +02:00
20daca9290
Virtual-Keyboard: save/restore state 2019-10-20 20:53:40 +02:00
9c00d6216a
Virtual-keyboard: add a pitch-bender 2019-10-20 18:29:23 +02:00
e63c2133e5
Virtual-keyboard: add CCs, bank/patch selector 2019-10-20 02:44:16 +02:00
19e4f47b4b
Cont'd work on Virtual-keyboard
* allow gtk_pianokeyboard to respond to y-axis click position
  and include MIDI velocity with note-on signal
* add configuration settings to virual-keyboard
  min/max velocity, keyboard-layout
* add a CC7 controller knob
2019-10-18 22:56:46 +02:00
f0d2327af0
Use AsyncMIDIPort API 2019-10-18 22:56:46 +02:00
ebb89ba805
Super basic Virtual-Keyboard UI 2019-10-18 03:50:52 +02:00