ardour.git
4 years agoShuttle Surface: handle libusb_init() failure
Robin Gareus [Thu, 5 Sep 2019 23:37:00 +0000 (01:37 +0200)]
Shuttle Surface: handle libusb_init() failure

USB stack may not be available on some systems, e.g. unit-test VM.
When libusb_init(0) fails to create default context, further calls
into the libusb API will cause segfaults.

4 years agoLua Fluid Synth example needs FluidR3_GM.sf2, skip unit-test
Robin Gareus [Thu, 5 Sep 2019 23:31:43 +0000 (01:31 +0200)]
Lua Fluid Synth example needs FluidR3_GM.sf2, skip unit-test

4 years agoUnit-test: parameter ranges outside [0..1]
Robin Gareus [Thu, 5 Sep 2019 20:37:06 +0000 (22:37 +0200)]
Unit-test: parameter ranges outside [0..1]

More updates after 3d15499cdacacbafa32c8f

* set parameter-range for MIDI sequences
* set parameter-range for cubic spline

4 years agoUnit test all RegionEquivalence options
Robin Gareus [Thu, 5 Sep 2019 20:07:41 +0000 (22:07 +0200)]
Unit test all RegionEquivalence options

4 years agoUnit-test update: honor FadeInAutomation parameter-range
Robin Gareus [Thu, 5 Sep 2019 19:03:50 +0000 (21:03 +0200)]
Unit-test update: honor FadeInAutomation parameter-range

Since 3d15499cdacacbafa32c8f, libevoral enforces Parameter min/max
range. Ardour::ParameterDescriptor sets FadeInAutomation range to 0..2.
Hence all unit-test data needs to be in this range.

4 years agoExclude Lua Convovler from unit-test (fails because of missing IR)
Robin Gareus [Thu, 5 Sep 2019 18:17:57 +0000 (20:17 +0200)]
Exclude Lua Convovler from unit-test (fails because of missing IR)

4 years agoStrict Ctrl surface unit-test: check re-activate.
Robin Gareus [Thu, 5 Sep 2019 17:32:51 +0000 (19:32 +0200)]
Strict Ctrl surface unit-test: check re-activate.

4 years agoReduce stdout/stderr clutter, prefer DEBUG_TRACE
Robin Gareus [Thu, 5 Sep 2019 17:04:32 +0000 (19:04 +0200)]
Reduce stdout/stderr clutter, prefer DEBUG_TRACE

4 years agoPrevent duplicate Ctrl-protocol instances
Robin Gareus [Thu, 5 Sep 2019 16:59:26 +0000 (18:59 +0200)]
Prevent duplicate Ctrl-protocol instances

ControlProtocols are single instance.

Activating an already active protocol leads to crashes due to
various rasons (e.g. port already registered), re-used singleton
event_loop_name and request-buffers, duplicate free of
AbstractUI request buffers during deactivate,..

4 years agoIgnore <ExtendingDeviceNames> midnam during unit-test
Robin Gareus [Thu, 5 Sep 2019 15:45:58 +0000 (17:45 +0200)]
Ignore <ExtendingDeviceNames> midnam during unit-test

So far Ardour only supports midnam descriptions that specify a
<MasterDeviceNames> directly.

4 years agoFix paths to .midnam file
Robin Gareus [Thu, 5 Sep 2019 15:42:19 +0000 (17:42 +0200)]
Fix paths to .midnam file

4 years agoNew sessions are saved implicitly, remove explicit call
Robin Gareus [Thu, 5 Sep 2019 15:01:19 +0000 (17:01 +0200)]
New sessions are saved implicitly, remove explicit call

4 years agoSkip duplicate early session-save for new sessions
Robin Gareus [Thu, 5 Sep 2019 15:00:14 +0000 (17:00 +0200)]
Skip duplicate early session-save for new sessions

Identical code is called unconditionally at the end of
the Session c'tor via Session::session_loaded()

4 years agoReset write-source only when necessary
Robin Gareus [Thu, 5 Sep 2019 14:57:19 +0000 (16:57 +0200)]
Reset write-source only when necessary

When I/O port-counts do not change, plugin re-order happens
in sync in the process-thread. ::configure_io() is only called
to ensure that the current configuration is valid.

In case that the ChanCount does not change, the method must
be realtime-safe and not block.

DiskWriter::reset_write_sources() is not realtime-safe and
implicitly causes a session-save:

Write-sources are destroyed and re-created. This includes
a call to write_source->drop_references(), which triggers
ARDOUR::Session::remove_source(), which saves the session.

Furthermore adding/removing plugins will likewise call
::configure_io().

Previously any processor change on a track lead to
saving the session!

4 years agoReport Lua script that failed a unit-test
Robin Gareus [Thu, 5 Sep 2019 13:29:15 +0000 (15:29 +0200)]
Report Lua script that failed a unit-test

4 years agoFix thinko/typo bug introduced in e6c9bcfd07
Robin Gareus [Thu, 5 Sep 2019 12:56:39 +0000 (14:56 +0200)]
Fix thinko/typo bug introduced in e6c9bcfd07

4 years agoUpdate MClk unit-test - new transportmaster API
Robin Gareus [Thu, 5 Sep 2019 12:52:08 +0000 (14:52 +0200)]
Update MClk unit-test - new transportmaster API

4 years agoRemove unused header (superseded by libtemporal)
Robin Gareus [Thu, 5 Sep 2019 12:09:22 +0000 (14:09 +0200)]
Remove unused header (superseded by libtemporal)

4 years agoFix libevoal unit-test compilation
Robin Gareus [Thu, 5 Sep 2019 12:08:31 +0000 (14:08 +0200)]
Fix libevoal unit-test compilation

4 years agoUse Fixed-length when drawing percussive events
Robin Gareus [Wed, 4 Sep 2019 22:40:48 +0000 (00:40 +0200)]
Use Fixed-length when drawing percussive events

Previously adding percussive-hits created sustained notes
using the current grid as duration. This allowed to create
overlapping notes with the overlap not being visible.

Most hardware MIDI drumkits do send an immediate note-off event
after each hit (if they send note-offs at all).
Ardour now follows suit and does the same when using the draw/edit tool.

4 years agoAmend 69a3b0b46e, remove CCs not used by fluidsynth
Robin Gareus [Wed, 4 Sep 2019 20:56:31 +0000 (22:56 +0200)]
Amend 69a3b0b46e, remove CCs not used by fluidsynth

4 years agoAdd script to set automation states of multiple controls
Robin Gareus [Wed, 4 Sep 2019 14:34:45 +0000 (16:34 +0200)]
Add script to set automation states of multiple controls

4 years agoMove foldback strip to left of Master
Len Ovens [Wed, 4 Sep 2019 04:44:14 +0000 (21:44 -0700)]
Move foldback strip to left of Master

4 years agoChange back ground color for foldback strip
Len Ovens [Wed, 4 Sep 2019 04:16:42 +0000 (21:16 -0700)]
Change back ground color for foldback strip

4 years agoUpdate Fluidsynth to v2.0.6-git
Robin Gareus [Wed, 4 Sep 2019 02:22:24 +0000 (04:22 +0200)]
Update Fluidsynth to v2.0.6-git

4 years agoExpose CCs that fluidsynth uses by default in midnam
Robin Gareus [Wed, 4 Sep 2019 02:11:45 +0000 (04:11 +0200)]
Expose CCs that fluidsynth uses by default in midnam

4 years agoResize and color the foldback level knob
Len Ovens [Wed, 4 Sep 2019 00:12:51 +0000 (17:12 -0700)]
Resize and color the foldback level knob

4 years agoFix mute toggle actions when mute is automated
Robin Gareus [Tue, 3 Sep 2019 20:01:35 +0000 (22:01 +0200)]
Fix mute toggle actions when mute is automated

Track menu, as well as mixer-shortcut to set/unset mute
of selected tracks needs to send a start_touch() event, otherwise
the change is not effective.

4 years agoScroll Lua scripts, now that there can be many
Robin Gareus [Tue, 3 Sep 2019 12:26:01 +0000 (14:26 +0200)]
Scroll Lua scripts, now that there can be many

4 years agoFix -Wsign-compare
Robin Gareus [Tue, 3 Sep 2019 03:01:59 +0000 (05:01 +0200)]
Fix -Wsign-compare

4 years agoFix -Wnon-virtual-dtor
Robin Gareus [Tue, 3 Sep 2019 02:55:08 +0000 (04:55 +0200)]
Fix -Wnon-virtual-dtor

4 years agoNO-OP: remove trailing whitespace
Robin Gareus [Tue, 3 Sep 2019 02:52:01 +0000 (04:52 +0200)]
NO-OP: remove trailing whitespace

4 years agoIncrease available Lua action script slots
Robin Gareus [Tue, 3 Sep 2019 02:31:35 +0000 (04:31 +0200)]
Increase available Lua action script slots

* Reserve 32 dedicated editor actions for scripts
* Limit number of toolbar buttons
* Use dedicated binding-group for keyboard-shortcuts
* Tweak Preferences layout of toolbar pane

4 years agoProper error messages for Audio2MIDI script
Robin Gareus [Mon, 2 Sep 2019 19:20:26 +0000 (21:20 +0200)]
Proper error messages for Audio2MIDI script

4 years agoAnother windows build fix, declare LuaDialog::ProgressWindow
Robin Gareus [Mon, 2 Sep 2019 19:20:06 +0000 (21:20 +0200)]
Another windows build fix, declare LuaDialog::ProgressWindow

4 years agoFix windows build linking, declare bindings
Robin Gareus [Mon, 2 Sep 2019 13:45:48 +0000 (15:45 +0200)]
Fix windows build linking, declare bindings

4 years agoUpdate Lua scripts, class-name change
Robin Gareus [Mon, 2 Sep 2019 13:45:14 +0000 (15:45 +0200)]
Update Lua scripts, class-name change

4 years agoMove LuaProgressDialog into "LuaDialog" namespace
Robin Gareus [Mon, 2 Sep 2019 13:42:34 +0000 (15:42 +0200)]
Move LuaProgressDialog into "LuaDialog" namespace

Define class in header file
Match C++ and Lua binding namespaces (for documentation)

4 years agoPackage VAMP pYIN plugin
Robin Gareus [Mon, 2 Sep 2019 12:35:23 +0000 (14:35 +0200)]
Package VAMP pYIN plugin

4 years agoFix pyin build, needs VAMPSDK
Robin Gareus [Mon, 2 Sep 2019 03:44:00 +0000 (05:44 +0200)]
Fix pyin build, needs VAMPSDK

4 years agoUpdate Lua VAMP scripts to show a progress dialog
Robin Gareus [Mon, 2 Sep 2019 03:19:27 +0000 (05:19 +0200)]
Update Lua VAMP scripts to show a progress dialog

4 years agoAllow to cancel LuaAPI::Vamp::analyze
Robin Gareus [Mon, 2 Sep 2019 03:18:17 +0000 (05:18 +0200)]
Allow to cancel LuaAPI::Vamp::analyze

4 years agoAdd Lua progress dialog
Robin Gareus [Mon, 2 Sep 2019 03:17:55 +0000 (05:17 +0200)]
Add Lua progress dialog

4 years agoAdd pyin to VAMP_PATH
Robin Gareus [Mon, 2 Sep 2019 01:13:31 +0000 (03:13 +0200)]
Add pyin to VAMP_PATH

4 years agoAdd vamp-pyin authors to user-visible doc
Robin Gareus [Mon, 2 Sep 2019 01:13:13 +0000 (03:13 +0200)]
Add vamp-pyin authors to user-visible doc

4 years agoInclude vamp-pyin
Robin Gareus [Mon, 2 Sep 2019 01:12:22 +0000 (03:12 +0200)]
Include vamp-pyin

In preparation for captainMorgan's pitch analysis script.

4 years agoInitialize uninitialized variables
Robin Gareus [Sun, 1 Sep 2019 18:13:59 +0000 (20:13 +0200)]
Initialize uninitialized variables

If a session with a feedback loop is loaded, Graph::rechain()
is never called, and _n_terminal_nodes[] remains unset.

4 years agoUse preferred pa_context_new_with_proplist API
Robin Gareus [Sun, 1 Sep 2019 17:01:18 +0000 (19:01 +0200)]
Use preferred pa_context_new_with_proplist API

4 years agoColor schema for feedback-btn alternative active color
Robin Gareus [Sun, 1 Sep 2019 16:38:56 +0000 (18:38 +0200)]
Color schema for feedback-btn alternative active color

4 years agoProminent "Feedback" indicator blinking
Robin Gareus [Sun, 1 Sep 2019 16:37:49 +0000 (18:37 +0200)]
Prominent "Feedback" indicator blinking

Always use a color when blinking. This allows to see
"feedback" even in screenshots. Previously there was a 50%
to capture it in a still image.

4 years agoAllow to un-set custom Ardour-button colors
Robin Gareus [Sun, 1 Sep 2019 14:57:48 +0000 (16:57 +0200)]
Allow to un-set custom Ardour-button colors

4 years agoChanging active-state needs no color lookup
Robin Gareus [Sun, 1 Sep 2019 14:52:24 +0000 (16:52 +0200)]
Changing active-state needs no color lookup

Colors and patterns are cached, independent of active-state.
This didn't used to be the case in the distant ArdourButton past.

4 years agoFix mixer-side-bar show/hide actions
Robin Gareus [Fri, 30 Aug 2019 20:56:07 +0000 (22:56 +0200)]
Fix mixer-side-bar show/hide actions

Changes need to be propagated to the Stripable's PresentationInfo.
So far this was not done for batch-changes using the mixer's left
side-bar "Show all", "Hide all" actions. They remained local
to the mixer and were not persistent.

4 years agoMove StripSilenceDialog XML to dedicated function
Nikolaus Gullotta [Fri, 30 Aug 2019 19:44:50 +0000 (14:44 -0500)]
Move StripSilenceDialog XML to dedicated function

This moves the Session::add_extra_xml() call out of editor_ops.cc and
moves it to its own class method StripSilenceDialog::finished()

4 years agoAdd settings retention to StripSilenceDialog
Nikolaus Gullotta [Fri, 30 Aug 2019 17:40:28 +0000 (12:40 -0500)]
Add settings retention to StripSilenceDialog

StripSilenceDialog will now retain its threshold, minimum length, and
fade length values from run to run.

This is done via Session::add_extra_xml() and recalled during the
construction of StripSilenceDialog via Session::extra_xml()

4 years agoFix Lua-doc doxygen declaration extraction
Robin Gareus [Thu, 29 Aug 2019 16:00:04 +0000 (18:00 +0200)]
Fix Lua-doc doxygen declaration extraction

4 years agoNo-OP: move doxygen doc into header files
Robin Gareus [Thu, 29 Aug 2019 15:57:22 +0000 (17:57 +0200)]
No-OP: move doxygen doc into header files

4 years agoTweak Lua-doc processing:
Robin Gareus [Thu, 29 Aug 2019 03:42:46 +0000 (05:42 +0200)]
Tweak Lua-doc processing:

Separate PHP based post-processing, used for manual creation.
php-cli may not be available on build host.

4 years agoReplaced foldback select button with previous and next buttons
Len Ovens [Wed, 28 Aug 2019 23:23:46 +0000 (16:23 -0700)]
Replaced foldback select button with previous and next buttons

4 years agoproperly remove foldback strip so it can be created again
Len Ovens [Wed, 28 Aug 2019 20:22:24 +0000 (13:22 -0700)]
properly remove foldback strip so it can be created again

4 years agoMerge branch 'master' of git.ardour.org:ardour/ardour
Nikolaus Gullotta [Wed, 28 Aug 2019 19:19:43 +0000 (14:19 -0500)]
Merge branch 'master' of git.ardour.org:ardour/ardour

4 years agotime span column should actually sort by location start time
Nikolaus Gullotta [Wed, 28 Aug 2019 19:19:26 +0000 (14:19 -0500)]
time span column should actually sort by location start time

4 years agoRemoved unused includes
Len Ovens [Wed, 28 Aug 2019 18:20:10 +0000 (11:20 -0700)]
Removed unused includes

4 years agoEnsure monitor section is always leftmost in mixer window
Len Ovens [Wed, 28 Aug 2019 18:12:44 +0000 (11:12 -0700)]
Ensure monitor section is always leftmost in mixer window

4 years agoLua: allow to build SelectionLists
Robin Gareus [Wed, 28 Aug 2019 16:38:06 +0000 (18:38 +0200)]
Lua: allow to build SelectionLists

This partially reverts 4538bcc7 to allow Editor:set_selection()

4 years agoadd sortable length, span, and name columns to ExportTimespanSelectorMultiple and...
Nikolaus Gullotta [Wed, 28 Aug 2019 16:27:40 +0000 (11:27 -0500)]
add sortable length, span, and name columns to ExportTimespanSelectorMultiple and ExportTimespanSelectorSingle

4 years agoadd .vscode editor data to gitignore
Nikolaus Gullotta [Wed, 28 Aug 2019 15:07:41 +0000 (10:07 -0500)]
add .vscode editor data to gitignore

4 years agoremoved axis view from foldback strip
Len Ovens [Tue, 27 Aug 2019 17:15:39 +0000 (10:15 -0700)]
removed axis view from foldback strip

4 years agoUpdate icon render tool
Robin Gareus [Tue, 27 Aug 2019 16:00:56 +0000 (18:00 +0200)]
Update icon render tool

* add "grid" mode
* re-build libwidgets as needed
* add a convenient `make show` target

4 years agoCont'd icon tweaks
Robin Gareus [Tue, 27 Aug 2019 15:58:58 +0000 (17:58 +0200)]
Cont'd icon tweaks

* unify line-width calculation
* thin line-width, approximate thickness of
  glyph stroke width at same UI scale
* don't use outlines (except main tool buttons)
  This fixes issues of generic buttons with bright-theme
* pixel align some lines

4 years agoAdd/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Tue, 27 Aug 2019 14:08:12 +0000 (15:08 +0100)]
Add/remove source(s) in our MSVC project (gtk2_ardour)

4 years agoUpdate Plugin-Tag policy
Robin Gareus [Tue, 27 Aug 2019 11:43:09 +0000 (13:43 +0200)]
Update Plugin-Tag policy

* Don't store tags from plugin's own metadata
  Those are set during plugin-scan every time
* Save user-tags even if they're not new
* Reset tags to factory-file tag (if any)

Old user tag files (prior to this commit) are interpreted
as "factory-file". This will auto-correct after the
first save_tags().

4 years agoNO-OP: whitespace
Robin Gareus [Tue, 27 Aug 2019 11:22:53 +0000 (13:22 +0200)]
NO-OP: whitespace

4 years agoResetting a tag implies changing it
Robin Gareus [Tue, 27 Aug 2019 10:18:14 +0000 (12:18 +0200)]
Resetting a tag implies changing it

4 years agoUpdate "By Tags" menu when Plugin-tags change -- #7800
Robin Gareus [Tue, 27 Aug 2019 10:17:46 +0000 (12:17 +0200)]
Update "By Tags" menu when Plugin-tags change -- #7800

4 years agoUse latency-icon instead of text
Robin Gareus [Mon, 26 Aug 2019 23:41:38 +0000 (01:41 +0200)]
Use latency-icon instead of text

4 years agoFoldback bus should not appear in editor
Len Ovens [Tue, 27 Aug 2019 02:01:19 +0000 (19:01 -0700)]
Foldback bus should not appear in editor

4 years agoMonitor new signal to rebuild sendlist
Len Ovens [Tue, 27 Aug 2019 00:47:21 +0000 (17:47 -0700)]
Monitor new signal to rebuild sendlist
remove debug lines, remove last FB bus works

4 years agoAdd signal for foldback send add or remove
Len Ovens [Mon, 26 Aug 2019 19:52:21 +0000 (12:52 -0700)]
Add signal for foldback send add or remove

4 years agoAdd send controls to foldback GUI
Len Ovens [Thu, 22 Aug 2019 03:55:51 +0000 (20:55 -0700)]
Add send controls to foldback GUI

4 years agoFix processor box for no crash on click
Len Ovens [Fri, 22 Feb 2019 21:39:17 +0000 (13:39 -0800)]
Fix processor box for no crash on click

4 years agoStart adding processor box
Len Ovens [Fri, 25 Jan 2019 20:22:49 +0000 (12:22 -0800)]
Start adding processor box

4 years agofix last foldback commit.
Len Ovens [Sat, 19 Jan 2019 00:02:32 +0000 (16:02 -0800)]
fix last foldback commit.

4 years agoAdd strip GUI first try for foldback bus
Len Ovens [Fri, 18 Jan 2019 18:22:54 +0000 (10:22 -0800)]
Add strip GUI first try for foldback bus

4 years agoReduce girth of "plus" icon
Robin Gareus [Mon, 26 Aug 2019 22:00:29 +0000 (00:00 +0200)]
Reduce girth of "plus" icon

4 years agoTweak icon_strip_width icon lines to align to pixels
Robin Gareus [Mon, 26 Aug 2019 21:34:20 +0000 (23:34 +0200)]
Tweak icon_strip_width icon lines to align to pixels

4 years agoAdd sample-rate as float option parameter for LV2 plugins and UIs
Robin Gareus [Mon, 26 Aug 2019 21:30:21 +0000 (23:30 +0200)]
Add sample-rate as float option parameter for LV2 plugins and UIs

4 years agoFix LV2 option size
Robin Gareus [Mon, 26 Aug 2019 21:12:46 +0000 (23:12 +0200)]
Fix LV2 option size

4 years agoAdd some scaleable "Latency" icon
Robin Gareus [Mon, 26 Aug 2019 20:44:11 +0000 (22:44 +0200)]
Add some scaleable "Latency" icon

4 years agoPush UI theme to backend, LV2 plugin options
Robin Gareus [Mon, 26 Aug 2019 16:58:34 +0000 (18:58 +0200)]
Push UI theme to backend, LV2 plugin options

4 years agoLV2 options for UI theme
Robin Gareus [Mon, 26 Aug 2019 16:57:47 +0000 (18:57 +0200)]
LV2 options for UI theme

Inform plugins about host theme (fg, bg colors) and UI scale-factor.
The latter follows an implementation already present in Carla and DPF.
These extension use proposed official URLs.

4 years agoBorderless plugin UIs
Robin Gareus [Mon, 26 Aug 2019 14:28:03 +0000 (16:28 +0200)]
Borderless plugin UIs

This removes a border painted in the host's UI theme color around
any plugin UI.
This results in a much nicer look/feel for plugin-UIs that have their
own theme

4 years agoAllow Icon + Text on ArdourButton
Robin Gareus [Mon, 26 Aug 2019 14:04:22 +0000 (16:04 +0200)]
Allow Icon + Text on ArdourButton

Allow placing an icon left of some text in Ardour-button.
This also tweaks some spacing and alignment of Icons when
a LED toggle indicator is used.

4 years agoTweak icon line widths
Robin Gareus [Mon, 26 Aug 2019 14:01:19 +0000 (16:01 +0200)]
Tweak icon line widths

Scale line-width of all icons, some were left at 1px regardless
of scaling factor.

4 years agoAdd/fix some TimeAxisView Lua bindings
Robin Gareus [Sat, 24 Aug 2019 19:44:27 +0000 (21:44 +0200)]
Add/fix some TimeAxisView Lua bindings

4 years agoTweak deletion, emit CatchDeletion() only once
Robin Gareus [Sat, 24 Aug 2019 16:42:51 +0000 (18:42 +0200)]
Tweak deletion, emit CatchDeletion() only once

Parent class d'tor runs after derived class d'tor. By the time
~TimeAxisView() is called, the actual object has already been
deleted and dyanamic_cast<RouteTimeAxisView*> or
dynamic_cast<AutomationTimeAxisView*> will fail.

CatchDeletion() needs to be emitted from the actual d'tor of the object.

There are currently three non-virtual TAVs:
 * RouteTimeAxisView
 * AutomationTimeAxisView
 * VCATimeAxisView

The first two already directly emit CatchDeletion(), there's no need to
call it again from ~TimeAxisView().

4 years agoConsolidate code, skip editor/mixer update check
Robin Gareus [Sat, 24 Aug 2019 16:37:28 +0000 (18:37 +0200)]
Consolidate code, skip editor/mixer update check

4 years agoFix crash when selected automation-lane is removed
Robin Gareus [Sat, 24 Aug 2019 16:21:08 +0000 (18:21 +0200)]
Fix crash when selected automation-lane is removed

When a plugin is deleted, automation-lanes of the given plugin
are removed, but previously a pointed to the deleted lane remained
in the selection.

This caused crashes later when the track selection is used. e.g.
during sensitize_the_right_region_actions()

Note that ~TimeAxisView() also emits CatchDeletion (this);
however "this" fails to be dynamic_cast<AutomationTimeAxisView*>
because that d'tor has already been completed.

4 years agoNO-OP: comment
Robin Gareus [Sat, 24 Aug 2019 15:11:22 +0000 (17:11 +0200)]
NO-OP: comment

4 years agoMitigate issues of expensive plugin analysis -- #7795
Robin Gareus [Sat, 24 Aug 2019 15:11:10 +0000 (17:11 +0200)]
Mitigate issues of expensive plugin analysis -- #7795

Plugin analysis uses a GUI thread instance of a given plugin to
perform a IR analysis.

Some plugins can be rather CPU expensive to analyze.
e.g. a-hi/lo-filter when interpolating is recalculating biquad
coefficients every 64samples during the 8k IR analysis. This can take
a significant amount of time on older CPUs.

Furthermore live-signal collection happens in the rt-thread,
using cross-thread signals. Signal collection is  periodically initiated
from the same timeout signal as analysis.

Analysis is was done using default thread priority, which is higher
than the GUI redraw priority (PRIORITY_HIGH_IDLE).

So it was possible to contiguously initiate analysis, loading the CPU
and preventing redraws.