Paul Davis [Thu, 17 Oct 2019 05:07:29 +0000 (23:07 -0600)]
change MidiPlaylist::dump() into ::render(); change type of initial argument
Paul Davis [Wed, 16 Oct 2019 14:18:53 +0000 (08:18 -0600)]
fix initialization order
Paul Davis [Wed, 16 Oct 2019 14:18:43 +0000 (08:18 -0600)]
add extra info to output of RTMidiBuffer::dump()
Paul Davis [Wed, 16 Oct 2019 14:12:04 +0000 (08:12 -0600)]
correct size computation for RTMidiBuffer, and reduce expansion amount
Paul Davis [Wed, 16 Oct 2019 14:04:23 +0000 (08:04 -0600)]
remove unused member variable
Paul Davis [Wed, 16 Oct 2019 03:34:03 +0000 (21:34 -0600)]
reimplement RTMidiBuffer using a highly optimized data structure
Reduces load time of Glass MIDI piece with 48k note events by about 35%. Improves data
locality. Omits size for all 3 byte or less MIDI events, uses implicit size. No limit
on size of sysex.
Relies on the fact that the data structure is always filled linearly in time, and
never modified.
Paul Davis [Tue, 15 Oct 2019 22:57:23 +0000 (16:57 -0600)]
add a MidiStateTracker to DiskReader and use to handle transport stop note resolving
Paul Davis [Tue, 15 Oct 2019 03:28:43 +0000 (21:28 -0600)]
trivial cleanups
Paul Davis [Tue, 15 Oct 2019 01:00:32 +0000 (19:00 -0600)]
introduce new all-in-RAM MIDI datastructure and use it for MIDI playback
Ben Loftis [Sat, 2 Nov 2019 19:57:44 +0000 (14:57 -0500)]
Remove complicated panner theme logic.
Robin Gareus [Sat, 2 Nov 2019 17:47:59 +0000 (18:47 +0100)]
Fan-out multi-channel instruments to tracks (not busses)
Robin Gareus [Sat, 2 Nov 2019 15:33:14 +0000 (16:33 +0100)]
Enable fan-out by default
When adding a new multi-channel instrument, assume the
user wants to pan the outputs independently.
Paul Davis [Sat, 2 Nov 2019 03:14:40 +0000 (21:14 -0600)]
fix the way Session::auto_loop_changed() works to put back various things removed since 5.x
Paul Davis [Sat, 2 Nov 2019 03:13:39 +0000 (21:13 -0600)]
if a complete refill is called for, DiskReader cannot internal seek
Robin Gareus [Sat, 2 Nov 2019 01:43:56 +0000 (02:43 +0100)]
Make virtual-keyboard messages translatable -- #7834
Paul Davis [Fri, 1 Nov 2019 21:57:50 +0000 (15:57 -0600)]
last piece of seamless-loop removal
Paul Davis [Fri, 1 Nov 2019 21:56:06 +0000 (15:56 -0600)]
don't send TFSM event LocateDone after a locate-for-loop-end
See comment for explanation
Paul Davis [Fri, 1 Nov 2019 21:48:16 +0000 (15:48 -0600)]
fix logic error with contents of session dialog shown after "Close"
Paul Davis [Fri, 1 Nov 2019 20:04:16 +0000 (14:04 -0600)]
remove seamless looping as an option (it's now the only kind of looping we support)
Paul Davis [Fri, 1 Nov 2019 19:25:18 +0000 (13:25 -0600)]
cut down on DEBUG::Transport noise
Paul Davis [Fri, 1 Nov 2019 19:24:37 +0000 (13:24 -0600)]
if looping, squish DiskReader::playback_sample into loop range
Paul Davis [Fri, 1 Nov 2019 19:24:05 +0000 (13:24 -0600)]
transportFSM: when locating due to end-of-loop, skip declick and do not transition states
Robin Gareus [Fri, 1 Nov 2019 19:43:41 +0000 (20:43 +0100)]
Disable direct master-send on fan-out
Ben Loftis [Fri, 1 Nov 2019 15:35:53 +0000 (10:35 -0500)]
Fix thinko in aux-fader color.
Robin Gareus [Fri, 1 Nov 2019 14:49:46 +0000 (15:49 +0100)]
Handle Lua DSP script load failure (unknown plugin)
This handles a very specific edge-case: A script that was
successfully parsed before, fails load on session state restore.
Robin Gareus [Fri, 1 Nov 2019 14:39:44 +0000 (15:39 +0100)]
Fix XML-writer edge-case (empty content)
Robin Gareus [Fri, 1 Nov 2019 04:40:30 +0000 (05:40 +0100)]
Fix MIDI Timestretch
* skip notes outside of region-range (source-start, region-length)
* handle tempo-ramps properly, apply map to stretch-fraction
* fix region properties after stretching
(position needs to be re-set first, to set a midi-region's
quarter-note position, which is used by the length calc)
Robin Gareus [Thu, 31 Oct 2019 22:57:46 +0000 (23:57 +0100)]
Consolidate more automation-mode texts
Robin Gareus [Thu, 31 Oct 2019 17:47:08 +0000 (18:47 +0100)]
Fix copy/paste mess in
ab298f035ae
Robin Gareus [Thu, 31 Oct 2019 15:33:56 +0000 (16:33 +0100)]
Remove unused string translation
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.
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 13:38:26 +0000 (14:38 +0100)]
Highlight the currently selected item in ArdourDropdown & co
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 13:21:57 +0000 (14:21 +0100)]
Workaround a GTKMenu bug in ArdourDropdown & co.
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 10:34:36 +0000 (11:34 +0100)]
Work around an initialization bug of GTK menus
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.
Julien "_FrnchFrgg_" RIVAUD [Thu, 31 Oct 2019 09:27:16 +0000 (10:27 +0100)]
Align vertical centers of widget and active menuitem
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.
Robin Gareus [Wed, 30 Oct 2019 23:22:26 +0000 (00:22 +0100)]
NO-OP: whitespace
Robin Gareus [Wed, 30 Oct 2019 23:22:12 +0000 (00:22 +0100)]
Declare helper function static (don't export)
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)
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.
Robin Gareus [Wed, 30 Oct 2019 22:45:27 +0000 (23:45 +0100)]
NO-OP: whitespace/comments
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.
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
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
Paul Davis [Tue, 29 Oct 2019 22:19:54 +0000 (16:19 -0600)]
missing part of working looping
Paul Davis [Tue, 29 Oct 2019 22:16:20 +0000 (16:16 -0600)]
get looping to work again
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.
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.
Robin Gareus [Tue, 29 Oct 2019 04:36:24 +0000 (05:36 +0100)]
Update Lua to upstream 5.3.5
Paul Davis [Mon, 28 Oct 2019 23:34:38 +0000 (17:34 -0600)]
improve debug output
Paul Davis [Mon, 28 Oct 2019 23:34:23 +0000 (17:34 -0600)]
fix thinko
Paul Davis [Mon, 28 Oct 2019 23:24:21 +0000 (17:24 -0600)]
limit waveview render threads to 8
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
Paul Davis [Mon, 28 Oct 2019 23:21:46 +0000 (17:21 -0600)]
fix mistakenly-placed semi-colon
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