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
Paul Davis [Mon, 28 Oct 2019 22:53:00 +0000 (16:53 -0600)]
better comments
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
Paul Davis [Mon, 28 Oct 2019 22:07:38 +0000 (16:07 -0600)]
add DEBUG_TRACE for all (?) backend callbacks
Paul Davis [Mon, 28 Oct 2019 21:55:01 +0000 (15:55 -0600)]
sort debug bits in libardour alphabetically
Paul Davis [Mon, 28 Oct 2019 21:54:18 +0000 (15:54 -0600)]
add new debug bit for backend callbacks
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.
Paul Davis [Mon, 28 Oct 2019 19:36:38 +0000 (13:36 -0600)]
add explanatory comment
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
John Emmas [Mon, 28 Oct 2019 16:40:03 +0000 (16:40 +0000)]
Add/remove source(s) in our MSVC project (gtk2_ardour)
Rui Nuno Capela [Mon, 28 Oct 2019 16:31:03 +0000 (17:31 +0100)]
Fixup prev commit (LV2 X11 UI) -- #7837
Robin Gareus [Mon, 28 Oct 2019 16:23:33 +0000 (17:23 +0100)]
Improve
1477bca76, ensure suil supports x11-in-gtk2
Robin Gareus [Mon, 28 Oct 2019 15:14:30 +0000 (16:14 +0100)]
Skip X11 LV2UI check on Windows and MacOS
Robin Gareus [Mon, 28 Oct 2019 15:12:58 +0000 (16:12 +0100)]
NO-OP: whitespace and comments
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
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
Paul Davis [Sun, 27 Oct 2019 17:17:49 +0000 (11:17 -0600)]
make transport work after rewind/ffwd are used
Robin Gareus [Sun, 27 Oct 2019 12:54:47 +0000 (13:54 +0100)]
Virtual-keyboard: allow octave switches while hand-pedaling
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
Robin Gareus [Sat, 26 Oct 2019 21:49:57 +0000 (23:49 +0200)]
Add support for single-octave "asdfg.." key-bindings
Robin Gareus [Fri, 25 Oct 2019 23:12:05 +0000 (01:12 +0200)]
Show PluginScanDialog only if needed (cancel VST scan)
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().
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
Paul Davis [Fri, 25 Oct 2019 21:48:22 +0000 (15:48 -0600)]
remove unintended leading space
Robin Gareus [Fri, 25 Oct 2019 19:54:16 +0000 (21:54 +0200)]
Virtual-keyboard: fix text-entry in config widgets
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
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.
Robin Gareus [Fri, 25 Oct 2019 16:05:28 +0000 (18:05 +0200)]
Continue C++ification of PianoKeyboard
Robin Gareus [Fri, 25 Oct 2019 15:57:56 +0000 (17:57 +0200)]
Add gtk-pianokeyoard author to about
Robin Gareus [Fri, 25 Oct 2019 12:35:38 +0000 (14:35 +0200)]
NO-OP: whitespace
Paul Davis [Fri, 25 Oct 2019 18:21:16 +0000 (12:21 -0600)]
better english
Paul Davis [Fri, 25 Oct 2019 18:20:10 +0000 (12:20 -0600)]
make comment about discovering plugins in the main thread more accurate
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
Paul Davis [Fri, 25 Oct 2019 17:54:25 +0000 (11:54 -0600)]
add another DEBUG_TRACE line
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
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
Paul Davis [Fri, 25 Oct 2019 03:13:08 +0000 (21:13 -0600)]
clean up use of startupFSM
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
Paul Davis [Fri, 25 Oct 2019 03:12:05 +0000 (21:12 -0600)]
remove now-unused member variable
Paul Davis [Fri, 25 Oct 2019 03:11:16 +0000 (21:11 -0600)]
startupFSM is now responsible for attaching GUI to AudioEngine
Paul Davis [Fri, 25 Oct 2019 03:09:43 +0000 (21:09 -0600)]
add new source file
Paul Davis [Fri, 25 Oct 2019 03:09:20 +0000 (21:09 -0600)]
use PluginScanDialog to initiate plugin manager refresh
Paul Davis [Fri, 25 Oct 2019 03:08:24 +0000 (21:08 -0600)]
refactor plugin scan dialog into its own object
Paul Davis [Fri, 25 Oct 2019 03:07:36 +0000 (21:07 -0600)]
add startupFSM enums to enumwriter
Paul Davis [Fri, 25 Oct 2019 03:07:25 +0000 (21:07 -0600)]
add new DEBUG bit for GuiStartup
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
Paul Davis [Fri, 25 Oct 2019 02:52:46 +0000 (20:52 -0600)]
remove debug output
Paul Davis [Thu, 24 Oct 2019 23:36:25 +0000 (17:36 -0600)]
NOOP: newline removal; space injection
Paul Davis [Thu, 24 Oct 2019 23:11:16 +0000 (17:11 -0600)]
don't inadvertently create a Splash when a dialog is shown
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
Paul Davis [Mon, 21 Oct 2019 04:39:31 +0000 (22:39 -0600)]
do not scan (discover) (new) plugins when running without a GUI
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
Robin Gareus [Thu, 24 Oct 2019 17:43:46 +0000 (19:43 +0200)]
Rough-in gtk-pianokeyboard C -> C++
Robin Gareus [Thu, 24 Oct 2019 17:46:59 +0000 (19:46 +0200)]
Require all terms of space-separated plugin search filter string
Robin Gareus [Thu, 24 Oct 2019 03:13:56 +0000 (05:13 +0200)]
Return key-focus to piano-keyboard
Robin Gareus [Thu, 24 Oct 2019 03:13:13 +0000 (05:13 +0200)]
Prepare key-binding display
Robin Gareus [Wed, 23 Oct 2019 21:59:59 +0000 (23:59 +0200)]
Fix prev commit, g_setenv() params
Robin Gareus [Wed, 23 Oct 2019 20:55:10 +0000 (22:55 +0200)]
Update MacOS installer to directly run Ardour w/o script wrapper
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.
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.
Ben Loftis [Tue, 22 Oct 2019 19:39:38 +0000 (14:39 -0500)]
New implementation for single-fader mackie devices (reverts b96d8e)
Robin Gareus [Mon, 21 Oct 2019 17:31:25 +0000 (19:31 +0200)]
Virtual-keyboard: add option to transpose
Robin Gareus [Mon, 21 Oct 2019 14:06:29 +0000 (16:06 +0200)]
NO-OP: whitespace
Robin Gareus [Mon, 21 Oct 2019 13:52:16 +0000 (15:52 +0200)]
NO-OP: whitespace
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
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
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, ...)
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)
Robin Gareus [Sun, 20 Oct 2019 19:22:38 +0000 (21:22 +0200)]
Virtual-Keyboard: Fix use of scrollwheel on dropdowns
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().
Robin Gareus [Sun, 20 Oct 2019 18:53:40 +0000 (20:53 +0200)]
Virtual-Keyboard: save/restore state
Robin Gareus [Sun, 20 Oct 2019 16:29:23 +0000 (18:29 +0200)]
Virtual-keyboard: add a pitch-bender
Robin Gareus [Sun, 20 Oct 2019 00:43:39 +0000 (02:43 +0200)]
Virtual-keyboard: add CCs, bank/patch selector
Robin Gareus [Sat, 19 Oct 2019 13:42:35 +0000 (15:42 +0200)]
Increase black key length
John Emmas [Sat, 19 Oct 2019 15:05:42 +0000 (16:05 +0100)]
Add/remove source(s) in our MSVC project (gtk2_ardour)
David Robillard [Fri, 18 Oct 2019 23:42:56 +0000 (01:42 +0200)]
Use conf.fatal for fatal configuration errors
David Robillard [Fri, 18 Oct 2019 23:37:30 +0000 (01:37 +0200)]
Fix Python3 incompatible syntax
David Robillard [Fri, 18 Oct 2019 23:33:51 +0000 (01:33 +0200)]
Fix typo
Robin Gareus [Sat, 19 Oct 2019 00:15:13 +0000 (02:15 +0200)]
Robin Gareus [Fri, 18 Oct 2019 21:40:40 +0000 (23:40 +0200)]
Special case "Virtual Keyboard" to be available as external input
Robin Gareus [Fri, 18 Oct 2019 21:40:23 +0000 (23:40 +0200)]
Allow to translate "Virtual Keyboard"
reserved_io_names[] already uses a translatable string for this.
Robin Gareus [Fri, 18 Oct 2019 15:26:25 +0000 (17:26 +0200)]
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
Robin Gareus [Fri, 18 Oct 2019 13:22:33 +0000 (15:22 +0200)]
Remove redundant port-owner check
Ports owned by Ardour are already filtered out by
PortManager::get_known_midi_ports() ->
PortManager::fill_midi_port_info_locked()
This change is in preparation for allowing to expose Ardour's
"Virtual MIDI Keyboard" keyboard (which is owned by Ardour).
Robin Gareus [Fri, 18 Oct 2019 13:17:54 +0000 (15:17 +0200)]
Use AsyncMIDIPort API
Robin Gareus [Fri, 18 Oct 2019 13:16:43 +0000 (15:16 +0200)]
Expose virtual-keyboard port as async-port
Paul Davis [Fri, 18 Oct 2019 06:07:31 +0000 (00:07 -0600)]
fix two thinkos with startup sequence
1) audio/MIDI setup was being shown unnecessarily
2) could crash if entire startup sequence passed without any dialogs being necessary
Robin Gareus [Fri, 18 Oct 2019 01:50:52 +0000 (03:50 +0200)]
Super basic Virtual-Keyboard UI
Robin Gareus [Fri, 18 Oct 2019 01:42:41 +0000 (03:42 +0200)]
Add Virtual-Keyboard MIDI port
Robin Gareus [Fri, 18 Oct 2019 01:40:52 +0000 (03:40 +0200)]
NO-OP: indent, tabs/whitespace fixes
Robin Gareus [Thu, 17 Oct 2019 23:41:18 +0000 (01:41 +0200)]
Fix a rare EventList race-condition/crash
The GUI thread may modify fade-in/out while the butler-thread
reads audio.
e.g. select a Range and click delete.
---
Thread 0:: Dispatch queue: com.apple.main-thread
0 libsystem_pthread.dylib 0x00007fffd45924fc pthread_mutex_lock + 0
1 libglib-2.0.0.dylib 0x00000001085a9d2a g_mutex_lock + 26
2 libevoral.dylib 0x0000000107fd0a49 PBD::Signal0<void, PBD::OptionalLastValue<void> >::operator()() + 57
3 libevoral.dylib 0x0000000107fd486d Evoral::ControlList::clear() + 253
4 libardour.dylib 0x00000001072ef9a5 ARDOUR::AudioRegion::set_fade_out(ARDOUR::FadeShape, long long) + 309
5 libardour.dylib 0x00000001072f19ea ARDOUR::AudioRegion::recompute_at_end() + 122
6 libpbd.dylib 0x00000001082993ff PBD::Stateful::resume_property_changes() + 191
7 libardour.dylib 0x00000001076476af ARDOUR::Playlist::cut(long long, long long, bool) + 575
8 libardour.dylib 0x0000000107646b5b ARDOUR::Playlist::cut_copy(boost::shared_ptr<ARDOUR::Playlist> (ARDOUR::Playlist::*)(long long, long long, bool), std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 187
9 libardour.dylib 0x0000000107647461 ARDOUR::Playlist::cut(std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 33
10 Ardour.bin 0x00000001065f0fa0 RouteTimeAxisView::cut_copy_clear(Selection&, Editing::CutCopyOp) + 592
11 Ardour.bin 0x0000000106118a94 Editor::cut_copy_ranges(Editing::CutCopyOp) + 164
12 Ardour.bin 0x0000000106116053 Editor::cut_copy(Editing::CutCopyOp) + 1587
Thread 20 Crashed:
0 libardour.dylib 0x00000001072f4b19 ARDOUR::AudioRegion::body_range() const + 89
1 libardour.dylib 0x00000001072bd318 ARDOUR::AudioPlaylist::read(float*, float*, float*, long long, long long, unsigned int) + 1176
2 libardour.dylib 0x00000001072ac236 ARDOUR::AudioDiskstream::read(float*, float*, float*, long long&, long long, int, bool) + 854
3 libardour.dylib 0x00000001072abbb8 ARDOUR::AudioDiskstream::overwrite_existing_buffers() + 392
4 libardour.dylib 0x00000001077ef36a ARDOUR::Session::non_realtime_overwrite(int, bool&) + 186
5 libardour.dylib 0x00000001077ed7f0 ARDOUR::Session::butler_transport_work() + 1696
6 libardour.dylib 0x0000000107323425 ARDOUR::Butler::thread_work() + 149
7 libardour.dylib 0x000000010732334f ARDOUR::Butler::_thread_work(void*) + 95
Robin Gareus [Thu, 17 Oct 2019 23:37:56 +0000 (01:37 +0200)]
Add API to safely query timestamp of first/last control event
Direct calls to back()->when or front()->when are not safe
when the list is concurrently modified, or empty.
Robin Gareus [Tue, 15 Oct 2019 21:17:48 +0000 (23:17 +0200)]
Fix export w/o session-range (typo in
468731c14b9b)
Robin Gareus [Tue, 15 Oct 2019 20:47:57 +0000 (22:47 +0200)]
NO-OP: whitespace
Robin Gareus [Tue, 15 Oct 2019 20:45:28 +0000 (22:45 +0200)]
Fix crash for range-export and cleanup code
ExportTimespanSelectorMultiple has one extra column at the start:
"selected". There are a total of 6 columns (0..5).
However ExportTimespanSelectorSingle lacks that column.
Selection is not needed and there are only 5 columns.
This lead to a copy/paste off-by one issue for
set_sort_column() w/ range_view.get_column(5) == NULL
when exporting ranges with a single range
Robin Gareus [Tue, 15 Oct 2019 14:02:47 +0000 (16:02 +0200)]
Improve multi-channel instrument listing
Robin Gareus [Tue, 15 Oct 2019 13:30:33 +0000 (15:30 +0200)]
Remve unused header includes
Robin Gareus [Tue, 15 Oct 2019 13:29:18 +0000 (15:29 +0200)]
Use less-or-equal for configurable I/O chancount
Robin Gareus [Tue, 15 Oct 2019 13:24:50 +0000 (15:24 +0200)]
Fix typos in AU channel-count calc
Robin Gareus [Tue, 15 Oct 2019 12:52:40 +0000 (14:52 +0200)]
Show max # of output for re-configurable I/O plugins
Robin Gareus [Tue, 15 Oct 2019 12:47:11 +0000 (14:47 +0200)]
API to count max multi-channel plugin outputs