ardour.git
4 years agoRemove unused string translation
Robin Gareus [Thu, 31 Oct 2019 15:33:56 +0000 (16:33 +0100)]
Remove unused string translation

4 years agoConsolidate automation and meter-point strings
Robin Gareus [Thu, 31 Oct 2019 14:55:46 +0000 (15:55 +0100)]
Consolidate automation and meter-point strings

This also properly selects texts in dropdown-menus on the mixer-strip,
panner and plugin-controls, gain-meters.

4 years agoHighlight the currently selected item in ArdourDropdown & co
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 13:38:26 +0000 (14:38 +0100)]
Highlight the currently selected item in ArdourDropdown & co

4 years agoWorkaround a GTKMenu bug in ArdourDropdown & co.
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 13:21:57 +0000 (14:21 +0100)]
Workaround a GTKMenu bug in ArdourDropdown & co.

4 years agoWork around an initialization bug of GTK menus
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 10:34:36 +0000 (11:34 +0100)]
Work around an initialization bug of GTK menus

4 years agoUpdate |offset| instead of changing the formula
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 09:42:37 +0000 (10:42 +0100)]
Update |offset| instead of changing the formula

So that the test to see if it fits also takes the new offset into
account.

4 years agoAlign vertical centers of widget and active menuitem
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 09:27:16 +0000 (10:27 +0100)]
Align vertical centers of widget and active menuitem

4 years agoFix a thinko in x position of menu popups
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 09:26:06 +0000 (10:26 +0100)]
Fix a thinko in x position of menu popups

This has lasted without being noticed because menus that big are not
common.

4 years agoNO-OP: whitespace
Robin Gareus [Wed, 30 Oct 2019 23:22:26 +0000 (00:22 +0100)]
NO-OP: whitespace

4 years agoDeclare helper function static (don't export)
Robin Gareus [Wed, 30 Oct 2019 23:22:12 +0000 (00:22 +0100)]
Declare helper function static (don't export)

4 years agoTry harder to put the active item under the mouse (ArdourDropdown)
Julien "_FrnchFrgg_" RIVAUD [Wed, 30 Oct 2019 22:53:49 +0000 (23:53 +0100)]
Try harder to put the active item under the mouse (ArdourDropdown)

4 years agoUpdate latency-compensation when re-ordering processors
Robin Gareus [Wed, 30 Oct 2019 22:51:53 +0000 (23:51 +0100)]
Update latency-compensation when re-ordering processors

When re-ordering processors, the route's own latency does not
change (at first).
But it might if sends or plugins with side-chains a involved.

4 years agoNO-OP: whitespace/comments
Robin Gareus [Wed, 30 Oct 2019 22:45:27 +0000 (23:45 +0100)]
NO-OP: whitespace/comments

4 years agoSuggest multi-out of instruments by default
Robin Gareus [Wed, 30 Oct 2019 14:35:23 +0000 (15:35 +0100)]
Suggest multi-out of instruments by default

When a user picks a N-channel instrument with strict i/o.
Offer N-channel (with optional fan-out) as default.

4 years agofix vanished audio/MIDI setup window after "Start" is clicked anytime other than...
Paul Davis [Wed, 30 Oct 2019 00:20:55 +0000 (18:20 -0600)]
fix vanished audio/MIDI setup window after "Start" is clicked anytime other than during startup

4 years agofix appearance of SessionDialog presented after Session > New
Paul Davis [Wed, 30 Oct 2019 00:09:55 +0000 (18:09 -0600)]
fix appearance of SessionDialog presented after Session > New

Needed to be told "require_new" to make sure the correct display is shown

4 years agomissing part of working looping
Paul Davis [Tue, 29 Oct 2019 22:19:54 +0000 (16:19 -0600)]
missing part of working looping

4 years agoget looping to work again
Paul Davis [Tue, 29 Oct 2019 22:16:20 +0000 (16:16 -0600)]
get looping to work again

4 years agofix handling of deferred events in transportFSM
Paul Davis [Tue, 29 Oct 2019 22:15:38 +0000 (16:15 -0600)]
fix handling of deferred events in transportFSM

tfsm events live on intrusive lists, with only 1 hook, which means they
can only be on one list at a time, and cannot be deleted while part of
the list. This wasn't being addressed properly when deferring (and
undeferring) events.

4 years agoCustomize Lua GC, add object-memory-lock API.
Robin Gareus [Mon, 19 Mar 2018 00:33:13 +0000 (01:33 +0100)]
Customize Lua GC, add object-memory-lock API.

Add custom API to prevent Lua Objects from being garbage collected.
This is intended to for Ardour LuaBridge bindings (~1MB Objects:
tables, functions and userdata).
The bindings are persistent and the gc can skip them in mark & sweep
phases. This is a significant performance improvement for garbage
collection.

Note. The next version of Lua (5.4) will come with a generational-gc
rather than an incremental, so extending the API at this point in time
is acceptable.

4 years agoUpdate Lua to upstream 5.3.5
Robin Gareus [Tue, 29 Oct 2019 04:36:24 +0000 (05:36 +0100)]
Update Lua to upstream 5.3.5

4 years agoimprove debug output
Paul Davis [Mon, 28 Oct 2019 23:34:38 +0000 (17:34 -0600)]
improve debug output

4 years agofix thinko
Paul Davis [Mon, 28 Oct 2019 23:34:23 +0000 (17:34 -0600)]
fix thinko

4 years agolimit waveview render threads to 8
Paul Davis [Mon, 28 Oct 2019 23:24:21 +0000 (17:24 -0600)]
limit waveview render threads to 8

4 years agoprovide a mechanism to decide if Session::update_latency_compensation() is being...
Paul Davis [Mon, 28 Oct 2019 23:23:54 +0000 (17:23 -0600)]
provide a mechanism to decide if Session::update_latency_compensation() is being called as part of a callback from the backend.

If it is, do not call AudioEngine::update_latencies() to avoid JACK1-style deadlock

4 years agofix mistakenly-placed semi-colon
Paul Davis [Mon, 28 Oct 2019 23:21:46 +0000 (17:21 -0600)]
fix mistakenly-placed semi-colon

4 years agoto avoid deadlock in JACK1 scenarios, do not invoke AudioEngine::update_latencies...
Paul Davis [Mon, 28 Oct 2019 22:55:29 +0000 (16:55 -0600)]
to avoid deadlock in JACK1 scenarios, do not invoke AudioEngine::update_latencies() from update_latency_compensation() if called from a process thread

4 years agobetter comments
Paul Davis [Mon, 28 Oct 2019 22:53:00 +0000 (16:53 -0600)]
better comments

4 years agoadd new debug bit (DebugTimestamps) that adds timestamps to all debug messages
Paul Davis [Mon, 28 Oct 2019 22:52:18 +0000 (16:52 -0600)]
add new debug bit (DebugTimestamps) that adds timestamps to all debug messages

4 years agoadd DEBUG_TRACE for all (?) backend callbacks
Paul Davis [Mon, 28 Oct 2019 22:07:38 +0000 (16:07 -0600)]
add DEBUG_TRACE for all (?) backend callbacks

4 years agosort debug bits in libardour alphabetically
Paul Davis [Mon, 28 Oct 2019 21:55:01 +0000 (15:55 -0600)]
sort debug bits in libardour alphabetically

4 years agoadd new debug bit for backend callbacks
Paul Davis [Mon, 28 Oct 2019 21:54:18 +0000 (15:54 -0600)]
add new debug bit for backend callbacks

4 years agodo not hold a lock when calling AudioEngine::update_latencies() from Session::update_...
Paul Davis [Mon, 28 Oct 2019 19:39:59 +0000 (13:39 -0600)]
do not hold a lock when calling AudioEngine::update_latencies() from Session::update_latency_compensation().

Only when using JACK1 is ::update_latencies() a synchronous call (ending up in Session::update_latency() which tries to take the
same lock). But the semantics of ::update_latencies() are sufficiently ill-defined that entering that call with a lock held
seems like a bad idea, so we release the lock unconditionally here.

4 years agoadd explanatory comment
Paul Davis [Mon, 28 Oct 2019 19:36:38 +0000 (13:36 -0600)]
add explanatory comment

4 years agomove reset (deletion) of click_io and ltc_output objects until after we are disconnec...
Paul Davis [Mon, 28 Oct 2019 17:15:07 +0000 (11:15 -0600)]
move reset (deletion) of click_io and ltc_output objects until after we are disconnected from the engine

We use those objects unconditionally and without caching inside process(), which could be invoked by the engine during their
deletion

4 years agoAdd/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Mon, 28 Oct 2019 16:40:03 +0000 (16:40 +0000)]
Add/remove source(s) in our MSVC project (gtk2_ardour)

4 years agoFixup prev commit (LV2 X11 UI) -- #7837
Rui Nuno Capela [Mon, 28 Oct 2019 16:31:03 +0000 (17:31 +0100)]
Fixup prev commit (LV2 X11 UI) -- #7837

4 years agoImprove 1477bca76, ensure suil supports x11-in-gtk2
Robin Gareus [Mon, 28 Oct 2019 16:23:33 +0000 (17:23 +0100)]
Improve 1477bca76, ensure suil supports x11-in-gtk2

4 years agoSkip X11 LV2UI check on Windows and MacOS
Robin Gareus [Mon, 28 Oct 2019 15:14:30 +0000 (16:14 +0100)]
Skip X11 LV2UI check on Windows and MacOS

4 years agoNO-OP: whitespace and comments
Robin Gareus [Mon, 28 Oct 2019 15:12:58 +0000 (16:12 +0100)]
NO-OP: whitespace and comments

4 years agoPrefer X11 Plugin UIs
Rui Nuno Capela [Mon, 28 Oct 2019 15:00:48 +0000 (16:00 +0100)]
Prefer X11 Plugin UIs

Let LV2 Plugin UI support (via SUIL) prefer and select a X11 UI whenever
multiple UI type options are provided by LV2 plugins (eg. Vee-One's do
present several but their native Qt5UI should never be raised by Ardour,
on any chance:)).

Signed-off-by: Rui Nuno Capela <rncbc@rncbc.or
4 years agoFix use of std::map<> in const methods
Robin Gareus [Mon, 28 Oct 2019 14:36:27 +0000 (15:36 +0100)]
Fix use of std::map<> in const methods

Prefer iterators, instead of C++11 `at() const`.
This should also fix MSVC error C2663

4 years agomake transport work after rewind/ffwd are used
Paul Davis [Sun, 27 Oct 2019 17:17:49 +0000 (11:17 -0600)]
make transport work after rewind/ffwd are used

4 years agoVirtual-keyboard: allow octave switches while hand-pedaling
Robin Gareus [Sun, 27 Oct 2019 12:54:47 +0000 (13:54 +0100)]
Virtual-keyboard: allow octave switches while hand-pedaling

4 years agoVirtual-keyboard: consolidate options
Robin Gareus [Sat, 26 Oct 2019 22:05:22 +0000 (00:05 +0200)]
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

4 years agoAdd support for single-octave "asdfg.." key-bindings
Robin Gareus [Sat, 26 Oct 2019 21:49:57 +0000 (23:49 +0200)]
Add support for single-octave "asdfg.." key-bindings

4 years agoShow PluginScanDialog only if needed (cancel VST scan)
Robin Gareus [Fri, 25 Oct 2019 23:12:05 +0000 (01:12 +0200)]
Show PluginScanDialog only if needed (cancel VST scan)

4 years agoFix latency compensation race-condition
Robin Gareus [Fri, 25 Oct 2019 23:06:04 +0000 (01:06 +0200)]
Fix latency compensation race-condition

Remove need for explicit `initialize_latencies` call that used
to be called from GUI-thread post_engine_init(), as well as
Session::engine_running().

Further reduce calls, `graph_reordered` implies a latency-update
and fix ordering issue. update_latency_compensation() must be called
*after* resort_routes().

4 years agoVirtual-keyboard: prefer dropdown for channel & transpose
Robin Gareus [Fri, 25 Oct 2019 21:52:53 +0000 (23:52 +0200)]
Virtual-keyboard: prefer dropdown for channel & transpose

This addresses issue with text-entry and input focus

4 years agoremove unintended leading space
Paul Davis [Fri, 25 Oct 2019 21:48:22 +0000 (15:48 -0600)]
remove unintended leading space

4 years agoVirtual-keyboard: fix text-entry in config widgets
Robin Gareus [Fri, 25 Oct 2019 19:54:16 +0000 (21:54 +0200)]
Virtual-keyboard: fix text-entry in config widgets

4 years agoVirtual-keyboard: never-ending details
Robin Gareus [Fri, 25 Oct 2019 19:23:27 +0000 (21:23 +0200)]
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

4 years agoRename PianoKeyboard class, avoid ambiguities
Robin Gareus [Fri, 25 Oct 2019 16:01:08 +0000 (18:01 +0200)]
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.

4 years agoContinue C++ification of PianoKeyboard
Robin Gareus [Fri, 25 Oct 2019 16:05:28 +0000 (18:05 +0200)]
Continue C++ification of PianoKeyboard

4 years agoAdd gtk-pianokeyoard author to about
Robin Gareus [Fri, 25 Oct 2019 15:57:56 +0000 (17:57 +0200)]
Add gtk-pianokeyoard author to about

4 years agoNO-OP: whitespace
Robin Gareus [Fri, 25 Oct 2019 12:35:38 +0000 (14:35 +0200)]
NO-OP: whitespace

4 years agobetter english
Paul Davis [Fri, 25 Oct 2019 18:21:16 +0000 (12:21 -0600)]
better english

4 years agomake comment about discovering plugins in the main thread more accurate
Paul Davis [Fri, 25 Oct 2019 18:20:10 +0000 (12:20 -0600)]
make comment about discovering plugins in the main thread more accurate

4 years agomake logic for creation of startup plugin scan a little clearer
Paul Davis [Fri, 25 Oct 2019 17:55:10 +0000 (11:55 -0600)]
make logic for creation of startup plugin scan a little clearer

Also, do not actually show dialog unless it's a new user or the user explicitly
asks for VST scan at startup

4 years agoadd another DEBUG_TRACE line
Paul Davis [Fri, 25 Oct 2019 17:54:25 +0000 (11:54 -0600)]
add another DEBUG_TRACE line

4 years agofix deletion/pointer error
Paul Davis [Fri, 25 Oct 2019 13:51:54 +0000 (07:51 -0600)]
fix deletion/pointer error

Not sure why the now deleted hack was ever necessary for the compiler

4 years agosomewhat substantial changes to StartupFSM to try to get relationships betweem variou...
Paul Davis [Fri, 25 Oct 2019 03:14:00 +0000 (21:14 -0600)]
somewhat substantial changes to StartupFSM to try to get relationships betweem various dialogs, plugin scanning and splash screen correct

Added extensive comments to try to explain the nightmare of plugin discovery

4 years agoclean up use of startupFSM
Paul Davis [Fri, 25 Oct 2019 03:13:08 +0000 (21:13 -0600)]
clean up use of startupFSM

4 years agomake ARDOUR_UI::gui_idle_handler() public and remove API that became part of PluginSc...
Paul Davis [Fri, 25 Oct 2019 03:12:37 +0000 (21:12 -0600)]
make ARDOUR_UI::gui_idle_handler() public and remove API that became part of PluginScanDialog

4 years agoremove now-unused member variable
Paul Davis [Fri, 25 Oct 2019 03:12:05 +0000 (21:12 -0600)]
remove now-unused member variable

4 years agostartupFSM is now responsible for attaching GUI to AudioEngine
Paul Davis [Fri, 25 Oct 2019 03:11:16 +0000 (21:11 -0600)]
startupFSM is now responsible for attaching GUI to AudioEngine

4 years agoadd new source file
Paul Davis [Fri, 25 Oct 2019 03:09:43 +0000 (21:09 -0600)]
add new source file

4 years agouse PluginScanDialog to initiate plugin manager refresh
Paul Davis [Fri, 25 Oct 2019 03:09:20 +0000 (21:09 -0600)]
use PluginScanDialog to initiate plugin manager refresh

4 years agorefactor plugin scan dialog into its own object
Paul Davis [Fri, 25 Oct 2019 03:08:24 +0000 (21:08 -0600)]
refactor plugin scan dialog into its own object

4 years agoadd startupFSM enums to enumwriter
Paul Davis [Fri, 25 Oct 2019 03:07:36 +0000 (21:07 -0600)]
add startupFSM enums to enumwriter

4 years agoadd new DEBUG bit for GuiStartup
Paul Davis [Fri, 25 Oct 2019 03:07:25 +0000 (21:07 -0600)]
add new DEBUG bit for GuiStartup

4 years agonon-GUI startup should only use plugin cache and not discover new ones
Paul Davis [Fri, 25 Oct 2019 03:06:20 +0000 (21:06 -0600)]
non-GUI startup should only use plugin cache and not discover new ones

4 years agoremove debug output
Paul Davis [Fri, 25 Oct 2019 02:52:46 +0000 (20:52 -0600)]
remove debug output

4 years agoNOOP: newline removal; space injection
Paul Davis [Thu, 24 Oct 2019 23:36:25 +0000 (17:36 -0600)]
NOOP: newline removal; space injection

4 years agodon't inadvertently create a Splash when a dialog is shown
Paul Davis [Thu, 24 Oct 2019 23:11:16 +0000 (17:11 -0600)]
don't inadvertently create a Splash when a dialog is shown

4 years agochange rationale for deciding whether the "discover plugins" button appears in the...
Paul Davis [Thu, 24 Oct 2019 20:56:58 +0000 (14:56 -0600)]
change rationale for deciding whether the "discover plugins" button appears in the new user wizard

4 years agodo not scan (discover) (new) plugins when running without a GUI
Paul Davis [Mon, 21 Oct 2019 04:39:31 +0000 (22:39 -0600)]
do not scan (discover) (new) plugins when running without a GUI

4 years agoalter ARDOUR::init() API to specify whether a GUI is in control or not
Paul Davis [Mon, 21 Oct 2019 04:39:09 +0000 (22:39 -0600)]
alter ARDOUR::init() API to specify whether a GUI is in control or not

4 years agoRough-in gtk-pianokeyboard C -> C++
Robin Gareus [Thu, 24 Oct 2019 17:43:46 +0000 (19:43 +0200)]
Rough-in gtk-pianokeyboard C -> C++

4 years agoRequire all terms of space-separated plugin search filter string
Robin Gareus [Thu, 24 Oct 2019 17:46:59 +0000 (19:46 +0200)]
Require all terms of space-separated plugin search filter string

4 years agoReturn key-focus to piano-keyboard
Robin Gareus [Thu, 24 Oct 2019 03:13:56 +0000 (05:13 +0200)]
Return key-focus to piano-keyboard

4 years agoPrepare key-binding display
Robin Gareus [Thu, 24 Oct 2019 03:13:13 +0000 (05:13 +0200)]
Prepare key-binding display

4 years agoFix prev commit, g_setenv() params
Robin Gareus [Wed, 23 Oct 2019 21:59:59 +0000 (23:59 +0200)]
Fix prev commit, g_setenv() params

4 years agoUpdate MacOS installer to directly run Ardour w/o script wrapper
Robin Gareus [Wed, 23 Oct 2019 20:55:10 +0000 (22:55 +0200)]
Update MacOS installer to directly run Ardour w/o script wrapper

4 years agoAllow to run Ardour without start-script on MacOS
Robin Gareus [Wed, 23 Oct 2019 20:54:19 +0000 (22:54 +0200)]
Allow to run Ardour without start-script on MacOS

This might break JACK, since the previous environment
is no longer re-set before calling JackConnection::open(), then
again, no Ardour does not un/set any critical env variables on MacOS.

4 years agoFix strict-i/o override on session-load (amend 31847f88ef)
Robin Gareus [Tue, 22 Oct 2019 23:21:42 +0000 (01:21 +0200)]
Fix strict-i/o override on session-load (amend 31847f88ef)

Plugins may override strict-i/o, and in order to know do this
the plugin needs to be instantiate first.

4 years agoNew implementation for single-fader mackie devices (reverts b96d8e)
Ben Loftis [Tue, 22 Oct 2019 19:39:38 +0000 (14:39 -0500)]
New implementation for single-fader mackie devices (reverts b96d8e)

4 years agoVirtual-keyboard: add option to transpose
Robin Gareus [Mon, 21 Oct 2019 17:31:25 +0000 (19:31 +0200)]
Virtual-keyboard: add option to transpose

4 years agoNO-OP: whitespace
Robin Gareus [Mon, 21 Oct 2019 14:06:29 +0000 (16:06 +0200)]
NO-OP: whitespace

4 years agoNO-OP: whitespace
Robin Gareus [Mon, 21 Oct 2019 13:52:16 +0000 (15:52 +0200)]
NO-OP: whitespace

4 years agoVirtual-keyboard: cont'd initial development:
Robin Gareus [Mon, 21 Oct 2019 13:27:42 +0000 (15:27 +0200)]
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

4 years agoAllow calling Dropdown::set_active from a signal handler
Robin Gareus [Mon, 21 Oct 2019 12:58:59 +0000 (14:58 +0200)]
Allow calling Dropdown::set_active from a signal handler

This breaks a potential recursion when set_active() is called
from activate_item(). See also 88fc22610

4 years agoVirtual-Keyboard significant overhaul:
Robin Gareus [Mon, 21 Oct 2019 03:41:34 +0000 (05:41 +0200)]
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, ...)

4 years agoAdd support for single-fader MCU devices: XTouch One and RuCo. (needs testing)
Ben Loftis [Mon, 21 Oct 2019 03:24:17 +0000 (22:24 -0500)]
Add support for single-fader MCU devices:  XTouch One and RuCo. (needs testing)

4 years agoVirtual-Keyboard: Fix use of scrollwheel on dropdowns
Robin Gareus [Sun, 20 Oct 2019 19:22:38 +0000 (21:22 +0200)]
Virtual-Keyboard: Fix use of scrollwheel on dropdowns

4 years agoAdd API to set select item from ArdourDropdown
Robin Gareus [Sun, 20 Oct 2019 19:21:57 +0000 (21:21 +0200)]
Add API to set select item from ArdourDropdown

This fixes an issue with scroll-wheel control which uses `get_active()`.
It work around an issue with gtkmm:

 const MenuItem* get_active () const
 void set_active (guint index)

and MenuList::activate_item() not emitting activate_item().

4 years agoVirtual-Keyboard: save/restore state
Robin Gareus [Sun, 20 Oct 2019 18:53:40 +0000 (20:53 +0200)]
Virtual-Keyboard: save/restore state

4 years agoVirtual-keyboard: add a pitch-bender
Robin Gareus [Sun, 20 Oct 2019 16:29:23 +0000 (18:29 +0200)]
Virtual-keyboard: add a pitch-bender

4 years agoVirtual-keyboard: add CCs, bank/patch selector
Robin Gareus [Sun, 20 Oct 2019 00:43:39 +0000 (02:43 +0200)]
Virtual-keyboard: add CCs, bank/patch selector

4 years agoIncrease black key length
Robin Gareus [Sat, 19 Oct 2019 13:42:35 +0000 (15:42 +0200)]
Increase black key length