ardour.git
4 years agochange MidiPlaylist::dump() into ::render(); change type of initial argument
Paul Davis [Thu, 17 Oct 2019 05:07:29 +0000 (23:07 -0600)]
change MidiPlaylist::dump() into ::render(); change type of initial argument

4 years agofix initialization order
Paul Davis [Wed, 16 Oct 2019 14:18:53 +0000 (08:18 -0600)]
fix initialization order

4 years agoadd extra info to output of RTMidiBuffer::dump()
Paul Davis [Wed, 16 Oct 2019 14:18:43 +0000 (08:18 -0600)]
add extra info to output of RTMidiBuffer::dump()

4 years agocorrect size computation for RTMidiBuffer, and reduce expansion amount
Paul Davis [Wed, 16 Oct 2019 14:12:04 +0000 (08:12 -0600)]
correct size computation for RTMidiBuffer, and reduce expansion amount

4 years agoremove unused member variable
Paul Davis [Wed, 16 Oct 2019 14:04:23 +0000 (08:04 -0600)]
remove unused member variable

4 years agoreimplement RTMidiBuffer using a highly optimized data structure
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.

4 years agoadd a MidiStateTracker to DiskReader and use to handle transport stop note resolving
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

4 years agotrivial cleanups
Paul Davis [Tue, 15 Oct 2019 03:28:43 +0000 (21:28 -0600)]
trivial cleanups

4 years agointroduce new all-in-RAM MIDI datastructure and use it for MIDI playback
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

4 years agoRemove complicated panner theme logic.
Ben Loftis [Sat, 2 Nov 2019 19:57:44 +0000 (14:57 -0500)]
Remove complicated panner theme logic.

4 years agoFan-out multi-channel instruments to tracks (not busses)
Robin Gareus [Sat, 2 Nov 2019 17:47:59 +0000 (18:47 +0100)]
Fan-out multi-channel instruments to tracks (not busses)

4 years agoEnable fan-out by default
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.

4 years agofix the way Session::auto_loop_changed() works to put back various things removed...
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

4 years agoif a complete refill is called for, DiskReader cannot internal seek
Paul Davis [Sat, 2 Nov 2019 03:13:39 +0000 (21:13 -0600)]
if a complete refill is called for, DiskReader cannot internal seek

4 years agoMake virtual-keyboard messages translatable -- #7834
Robin Gareus [Sat, 2 Nov 2019 01:43:56 +0000 (02:43 +0100)]
Make virtual-keyboard messages translatable -- #7834

4 years agolast piece of seamless-loop removal
Paul Davis [Fri, 1 Nov 2019 21:57:50 +0000 (15:57 -0600)]
last piece of seamless-loop removal

4 years agodon't send TFSM event LocateDone after a locate-for-loop-end
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

4 years agofix logic error with contents of session dialog shown after "Close"
Paul Davis [Fri, 1 Nov 2019 21:48:16 +0000 (15:48 -0600)]
fix logic error with contents of session dialog shown after "Close"

4 years agoremove seamless looping as an option (it's now the only kind of looping we support)
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)

4 years agocut down on DEBUG::Transport noise
Paul Davis [Fri, 1 Nov 2019 19:25:18 +0000 (13:25 -0600)]
cut down on DEBUG::Transport noise

4 years agoif looping, squish DiskReader::playback_sample into loop range
Paul Davis [Fri, 1 Nov 2019 19:24:37 +0000 (13:24 -0600)]
if looping, squish DiskReader::playback_sample into loop range

4 years agotransportFSM: when locating due to end-of-loop, skip declick and do not transition...
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

4 years agoDisable direct master-send on fan-out
Robin Gareus [Fri, 1 Nov 2019 19:43:41 +0000 (20:43 +0100)]
Disable direct master-send on fan-out

4 years agoFix thinko in aux-fader color.
Ben Loftis [Fri, 1 Nov 2019 15:35:53 +0000 (10:35 -0500)]
Fix thinko in aux-fader color.

4 years agoHandle Lua DSP script load failure (unknown plugin)
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.

4 years agoFix XML-writer edge-case (empty content)
Robin Gareus [Fri, 1 Nov 2019 14:39:44 +0000 (15:39 +0100)]
Fix XML-writer edge-case (empty content)

4 years agoFix MIDI Timestretch
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)

4 years agoConsolidate more automation-mode texts
Robin Gareus [Thu, 31 Oct 2019 22:57:46 +0000 (23:57 +0100)]
Consolidate more automation-mode texts

4 years agoFix copy/paste mess in ab298f035ae
Robin Gareus [Thu, 31 Oct 2019 17:47:08 +0000 (18:47 +0100)]
Fix copy/paste mess in ab298f035ae

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