Commit Graph

29820 Commits

Author SHA1 Message Date
Robin Gareus
045200ba35 Update Patch Selector Colors
Custom text color is no longer available, so remove it.
Also prefer a semantic description "unnamed", not a visual cue.
2020-04-19 16:54:07 +02:00
Robin Gareus
037248a7d6 Support MIDNAM with Performances in PatchSelector #7536
Some modern keyboards spread out patches over various banks,
and group them using explicit "PatchMIDICommands".
A given PatchBank does not have a common MIDI Bank.

Previously those PatchBanks were not listed in the MIDI Patch
Selector, which is based on MIDI Bank + Program grid.

The current view is some sort of compromise, retaining a
per MIDI-bank view, but allowing Monatages/performance mappings.

The Patch Change *dialog*, or dropdown is more useful for those
sparse modern mappings.
2020-04-19 16:32:33 +02:00
Robin Gareus
c32fef2660 WebSockets: hotfix crash when a session has VCAs
This eventually needs a better solution, special casing VCAs
on the top-level.
2020-04-19 15:44:39 +02:00
Robin Gareus
674554d978 Solo isolate foldback busses - #8020 2020-04-19 03:40:35 +02:00
Robin Gareus
8edc94edea Update a-Amplifier, use Ardour::Amp
This fixes an issue with a-Amp interpolating the parameter in dB,
resulting in a double-exponential fade when the parameter changes.

Now fade is linear in dB, also using Ardour' Amp processor is more
efficient, since interpolation happens in C++.
2020-04-19 00:49:43 +02:00
Robin Gareus
9875a95829 RAII collect processor-change signals 2020-04-18 23:54:24 +02:00
Robin Gareus
b7c7c02680 Optimize realtime listen-position change 2020-04-18 23:19:58 +02:00
Robin Gareus
a90b0daadd Support for lock-free AFL/PFL changes
Session::listen_position_changed() calls Route::listen_position_changed()
for every route in the session. Each call tool the process-lock
in turn.
2020-04-18 22:11:49 +02:00
Robin Gareus
606d6de4b1 Consistent Lua script error and print() output 2/2 2020-04-18 18:16:12 +02:00
Robin Gareus
a2f07f66a5 Consistent Lua script error and print() output 1/2 2020-04-18 18:16:12 +02:00
Julien '_FrnchFrgg_' RIVAUD
a4cfdd338d First part of translation review 2020-04-18 11:26:10 +02:00
Julien '_FrnchFrgg_' RIVAUD
5766cf24aa Update French po files from code 2020-04-18 11:22:07 +02:00
Robin Gareus
5c5f0c8282 Allow to hide inline-controls using shift+right click 2020-04-18 01:04:45 +02:00
Robin Gareus
929754f48c Prefer PBD::Unwinder to temporarily change a variable 2020-04-17 22:49:45 +02:00
Paul Davis
f2f9798df1 shift-tab generates shift-iso_left_tab so fix MIDI editing bindings 2020-04-17 13:14:34 -06:00
Paul Davis
d745f5c53d fix name of MIDI editing action 2020-04-17 13:14:34 -06:00
Paul Davis
2ee80b4eb7 expand everything for a key editor tab is there is only 1 child node 2020-04-17 13:14:34 -06:00
Robin Gareus
bc9b490e90 Fix canvas scroll-event zoom-focus
Unconditionally use the mouse-cursor as zoom-focus when holding
<ctrl> while scrolling on the canvas.
This is consistent with using ctrl + scroll in the ruler area.
2020-04-17 20:51:47 +02:00
Paul Davis
0b67abca1d change default (non-modified) transpose kbd action to use 1 semitone 2020-04-17 12:40:28 -06:00
Paul Davis
fa8858b3e8 NOOP: newline removal 2020-04-17 12:40:28 -06:00
Paul Davis
fea7834e78 do not reset import status to cancel for every path imported before starting; fixes failure of cancel to stop import 2020-04-17 12:40:28 -06:00
Luciano Iam
28dd253231 WebSockets: make the mixer-demo look good on small screens 2020-04-17 20:15:11 +02:00
Luciano Iam
1a6997e0c8 WebSockets: change mixer-demo color palette to look closer to Ardour's default skin 2020-04-17 20:15:10 +02:00
Luciano Iam
137042f80c WebSockets: rename _lws_mnt_index to _lws_mnt_root
This mount point not only serves the index but everything that is under
/ , including the built-in surfaces directory
2020-04-17 20:15:10 +02:00
Luciano Iam
36a27b8a90 WebSockets: prevent crashes by validating inbound message addr and val sizes 2020-04-17 20:15:10 +02:00
Luciano Iam
50ba8dea96 WebSockets: improve JS client and demo
add methods to callback.js
automatically reconnect js client on disconnection
mixer-demo do not recreate UI on reconnection
NO-OP: indentation in message.js
make client JS reconnection optional
fix mixer-demo scrolling
minor JS client refactor
improve mixer-demo readability
2020-04-17 20:15:10 +02:00
Luciano Iam
612c71aa25 WebSockets: allow serving SVG files using libwebsockets < 3 2020-04-17 20:15:10 +02:00
Luciano Iam
2ba8dab95e WebSockets: update JS client and demo
avoid hardcoded node name strings in mixer-demo
improve mixer-demo design
split ardour.js client into control and metadata mixins
rename JS client class Ardour to ArdourClient
JS client improve mixin implementation
JS client improve manifest parser
NO-OP whitespace and comments
NO-OP update websurface manifest versions
add Ardour icon in mixer-demo
improve mixer-demo scrolling on touch screens
2020-04-17 20:15:10 +02:00
Paul Davis
b9674115b7 when re-entering the track canvas in internal edit mode, ensure that kbd focus is set 2020-04-17 11:34:34 -06:00
Paul Davis
ba585e440d fix actions names & description for note transport to reflect semitone not tone 2020-04-17 10:47:01 -06:00
Paul Davis
0b7d0ebfd6 remove debug output 2020-04-17 10:47:01 -06:00
Robin Gareus
7ae4e0f7ba Allow to override zoom-focus to mouse
When Prefs > Editor > Zoom to mouse position... is disabled.
Ctrl + Scroll now allows to override the current zoom-focus,
and zoom in/out at the mouse-cursor position.
2020-04-17 16:16:23 +02:00
Paul Davis
ca9e54100a more sane design for MidiRegionView::nudge_notes()
Use nudge clock if snap/grid is disabled; use grid (and grid/4 if "fine" adjustment is chosen)
2020-04-16 21:39:38 -06:00
Paul Davis
70e27e0bf2 fix Beats::operator-() 2020-04-16 21:38:33 -06:00
Paul Davis
e4e035c6e2 remove debug output 2020-04-16 17:48:12 -06:00
Paul Davis
696f891554 fix names and add descriptions of MIDI actions 2020-04-16 17:48:12 -06:00
Paul Davis
3b1549e36d fix some MIDI keybindings 2020-04-16 17:48:12 -06:00
Paul Davis
3de9d5d09b fix namespaces for MIDI note bindings 2020-04-16 17:48:12 -06:00
Paul Davis
65f7a6a938 changes to deal with region/note selection when changing into/out of internal edit mode
Also, activate MIDI editing actions so that they are effective in internal edit mode
2020-04-16 17:48:12 -06:00
Paul Davis
921e3e75b5 bindings for MIDI editing operations 2020-04-16 17:48:12 -06:00
Paul Davis
3391fa0f51 NOOP: use braces as per style guide 2020-04-16 17:48:12 -06:00
Paul Davis
cc32d42388 use new API to get selected MIDI regions and clear current note selection in a MIDI region 2020-04-16 17:48:12 -06:00
Paul Davis
8545250936 MidiRegionView no longer handles any keypresses or alters editor "note selection"
1. Alt is still handled to change drag behavior
2. Selection doesn't store notes unless they are part of the cut buffer, which means we should not
be altering the note selection in the editor's selection object most of the time.
2020-04-16 17:48:12 -06:00
Paul Davis
eca7888047 NOOP: newline removal 2020-04-16 17:48:12 -06:00
Paul Davis
0bea4f2374 fix up action names for MIDI editing 2020-04-16 17:48:12 -06:00
Paul Davis
ba424352a2 change Selection object to be more clear about the status of MidiRegionViews and notes
1) Notes are only present in a Selection object if it is being used as a cut buffer. They are never stored
there as part of "normal selection" - that is delegated/left to MidiRegionViews that own the notes.

2) MidiRegionViews are stored in the Selection as "just" RegionViews, so provide a convenience
method to access them. This doesn't actually change much, since even the old MidiRegions object
was actually just a RegionSelection i.e. RegionViews.
2020-04-16 17:48:12 -06:00
Paul Davis
abe275c3e0 add a bunch of argument-free methods to MidiRegionView for use as actions 2020-04-16 17:48:12 -06:00
Paul Davis
c03c3332e8 change algorithm for activation/propagation of key events to allow multiple bindings
We now check from the focus widget (if any) for any widget heirarchy bindings, and try to use them.
Next use the "top level" bindings passed in (top level is quoted because they may be owned by a tab,
rather than a window).
Finally, if the event is still not handled, try the global bindings

This model more closely matches what I think a reasonable programmer with experience of other
GUI toolkits would expect, and allows us to have multiple bindings present (though not
simultaneously used) in a given window
2020-04-16 17:48:12 -06:00
Paul Davis
ffd9aa2fc9 if the action associated with a binding is insensitive, do not activate it, and return false from Bindings::activate()
This allows "stacking" of bindings by desensitizing the actions associated with a "lower" level
of bindings at certain times (e.g. MIDI editing bindings thare are sensitized in the appropriate
editing modes
2020-04-16 17:48:12 -06:00
Robin Gareus
cc74c7b7ad Fix two more typos 2020-04-17 00:02:38 +02:00