ardour.git
5 years agoOSC: added context based previous/next select
Len Ovens [Mon, 16 Apr 2018 16:51:59 +0000 (09:51 -0700)]
OSC: added context based previous/next select

5 years agoOSC: select should not show expand if invalid
Len Ovens [Wed, 11 Apr 2018 17:48:24 +0000 (10:48 -0700)]
OSC: select should not show expand if invalid

5 years agoOSC expand off should check current sellect
Len Ovens [Wed, 11 Apr 2018 16:35:51 +0000 (09:35 -0700)]
OSC expand off should check current sellect

5 years agoOSC: Allow expand to be global
Len Ovens [Wed, 11 Apr 2018 16:24:21 +0000 (09:24 -0700)]
OSC: Allow expand to be global

5 years agoOSC do not recalc select if still valid
Len Ovens [Sat, 7 Apr 2018 17:42:11 +0000 (10:42 -0700)]
OSC do not recalc select if still valid

5 years agocontext menus should have accelerators
Paul Davis [Thu, 14 Jun 2018 21:29:58 +0000 (17:29 -0400)]
context menus should have accelerators

5 years agoHide designated LV2 freewheeling port.
Robin Gareus [Sat, 9 Jun 2018 12:40:46 +0000 (14:40 +0200)]
Hide designated LV2 freewheeling port.

5 years agoAllow snapping to the start of the video timeline. (should work, but needs testing...
Ben Loftis [Fri, 8 Jun 2018 21:12:35 +0000 (16:12 -0500)]
Allow snapping to the start of the video timeline.  (should work, but needs testing on a machine with harvid).

5 years agoRemove duplicate class-keys (amend d95df9164)
Robin Gareus [Wed, 6 Jun 2018 13:07:08 +0000 (15:07 +0200)]
Remove duplicate class-keys (amend d95df9164)

5 years agoremove aeffectx.h; use vestige.h
Paul Davis [Mon, 4 Jun 2018 21:38:32 +0000 (17:38 -0400)]
remove aeffectx.h; use vestige.h

5 years agoNO-OP: Modify a #include (purely for consistency)
John Emmas [Mon, 4 Jun 2018 09:43:19 +0000 (10:43 +0100)]
NO-OP: Modify a #include (purely for consistency)

6 years agono error logging for CURL HTTP requests; future callers can request it if necessary
Paul Davis [Sat, 2 Jun 2018 17:24:17 +0000 (13:24 -0400)]
no error logging for CURL HTTP requests; future callers can request it if necessary

6 years agoforgot else in selected-tracks check.
Nikolaus Gullotta [Fri, 1 Jun 2018 16:25:46 +0000 (11:25 -0500)]
forgot else in selected-tracks check.

6 years agomoving singen and noisegen from mixbus repo to ardour + change singen display and...
Nikolaus Gullotta [Fri, 6 Apr 2018 17:54:41 +0000 (12:54 -0500)]
moving singen and noisegen from mixbus repo to ardour + change singen display and add noisegen display

6 years agoadd Gtk::ColorButton widget to LuaDialog and add ability to change multiple route...
Nikolaus Gullotta [Tue, 3 Apr 2018 20:38:54 +0000 (15:38 -0500)]
add Gtk::ColorButton widget to LuaDialog and add ability to change multiple route colors at a time

6 years agoCheck-in of set_meter_point() utility/example
Nikolaus Gullotta [Fri, 1 Jun 2018 14:51:52 +0000 (09:51 -0500)]
Check-in of set_meter_point() utility/example

6 years agoExample snippet to list plugins (and their presets)
Robin Gareus [Thu, 31 May 2018 14:01:52 +0000 (16:01 +0200)]
Example snippet to list plugins (and their presets)

6 years agoAdd Lua API to list all available plugins
Robin Gareus [Thu, 31 May 2018 14:01:35 +0000 (16:01 +0200)]
Add Lua API to list all available plugins

6 years agono actual error messages when curl requests fail
Paul Davis [Thu, 24 May 2018 03:08:13 +0000 (23:08 -0400)]
no actual error messages when curl requests fail

6 years agoMove a couple of #undef's
John Emmas [Sat, 19 May 2018 08:28:30 +0000 (09:28 +0100)]
Move a couple of #undef's

'pbd/timing.h' now includes a call to 'std::numeric_limits<>::max()'

6 years agoDisplay profile-data in generic plugin-UI.
Robin Gareus [Thu, 17 May 2018 20:14:08 +0000 (22:14 +0200)]
Display profile-data in generic plugin-UI.

6 years agoCollect plugin runtime profile statistics.
Robin Gareus [Thu, 17 May 2018 20:09:33 +0000 (22:09 +0200)]
Collect plugin runtime profile statistics.

6 years agoAdd a time-profiler with statistics
Robin Gareus [Thu, 17 May 2018 20:00:27 +0000 (22:00 +0200)]
Add a time-profiler with statistics

6 years agoPlayhead to Grid: handle case where PH is rolling, and we are prevented from skipping...
Ben Loftis [Thu, 17 May 2018 20:00:50 +0000 (15:00 -0500)]
Playhead to Grid: handle case where PH is rolling, and we are prevented from skipping backwards sensibly.

6 years agoQuantize Dialog: Use same grid names as the main grid. (1/16 Note instead of Beats/4)
Ben Loftis [Tue, 15 May 2018 14:52:40 +0000 (09:52 -0500)]
Quantize Dialog: Use same grid names as the main grid. (1/16 Note instead of Beats/4)

6 years agoQuantize Dialog: Fix quantize-to-main-grid selection. Was checking against incorrect...
Ben Loftis [Tue, 15 May 2018 14:36:50 +0000 (09:36 -0500)]
Quantize Dialog: Fix quantize-to-main-grid selection.  Was checking against incorrect menu entry string.

6 years agoMake the peak indication in the graph of a-expander green ...
Johannes Mueller [Mon, 7 Aug 2017 12:58:59 +0000 (14:58 +0200)]
Make the peak indication in the graph of a-expander green ...

... so that it has a different color than the expander curve

6 years agoLimit gain reduction of a-expander to 160 dB in order to ...
Johannes Mueller [Mon, 7 Aug 2017 12:02:33 +0000 (14:02 +0200)]
Limit gain reduction of a-expander to 160 dB in order to ...

improve release behavior.

This slows down the release after events like single snare hits as, the gain
reduction only releases to 160 dB rather than to inf.

6 years agoVisualize peak input in a-expander
Johannes Mueller [Mon, 7 Aug 2017 12:02:21 +0000 (14:02 +0200)]
Visualize peak input in a-expander

6 years agoAdd output control port to a-exp for input level
Johannes Mueller [Fri, 4 Aug 2017 15:10:42 +0000 (17:10 +0200)]
Add output control port to a-exp for input level

6 years agoIndicate input level in a-exp's inline display rather than output
Johannes Mueller [Fri, 4 Aug 2017 13:52:44 +0000 (15:52 +0200)]
Indicate input level in a-exp's inline display rather than output

6 years agoIncrease the range of a-exp's ratio to make it usable like a gate
Johannes Mueller [Thu, 3 Aug 2017 19:22:09 +0000 (21:22 +0200)]
Increase the range of a-exp's ratio to make it usable like a gate

6 years agoMake a-expander react probably on being disabled and enabled.
Johannes Mueller [Thu, 3 Aug 2017 19:14:56 +0000 (21:14 +0200)]
Make a-expander react probably on being disabled and enabled.

6 years agoNew visualization of the compressor state in graph view
Johannes Mueller [Thu, 3 Aug 2017 15:10:59 +0000 (17:10 +0200)]
New visualization of the compressor state in graph view

To properly visualize attack and release we calculate the input level out of
the gain reduction the output level threshold and ratio.

if (output_level >= threshold) { // no expansion
        input_level = output_level
} else {
        input_level = (gain_reduction - threshold * (1-ratio)) / ratio
}

6 years agoFixed wrong initialization.
Johannes Mueller [Thu, 3 Aug 2017 11:45:58 +0000 (13:45 +0200)]
Fixed wrong initialization.

6 years agoAdjust default parameters of a-expander
Johannes Mueller [Thu, 3 Aug 2017 11:18:42 +0000 (13:18 +0200)]
Adjust default parameters of a-expander

6 years agoChanged attack and release behavior
Johannes Mueller [Thu, 3 Aug 2017 09:39:55 +0000 (11:39 +0200)]
Changed attack and release behavior

6 years agoFirst draft of a-expander
Johannes Mueller [Wed, 2 Aug 2017 20:26:08 +0000 (22:26 +0200)]
First draft of a-expander

6 years agoPlugin Ordering: PluginStatusChanged signal went missing. This fixes breakage in...
Ben Loftis [Tue, 8 May 2018 21:12:15 +0000 (16:12 -0500)]
Plugin Ordering:  PluginStatusChanged signal went missing.  This fixes breakage in drag+drop and live status-updates from the Plugin Manager window.

6 years agoRemove debug printout.
Ben Loftis [Tue, 8 May 2018 18:27:01 +0000 (13:27 -0500)]
Remove debug printout.

6 years agoPlugin Order: Use the new plugin_manager function to save plugin order.
Ben Loftis [Tue, 8 May 2018 18:25:54 +0000 (13:25 -0500)]
Plugin Order:  Use the new plugin_manager function to save plugin order.

6 years agoPlugin Order: remove from instant.xml and save to: plugin_metadata/plugin_order
Ben Loftis [Tue, 8 May 2018 18:00:27 +0000 (13:00 -0500)]
Plugin Order:  remove from instant.xml and save to:  plugin_metadata/plugin_order

6 years agoMake note of Gesture messages in VST; for later.
Ben Loftis [Mon, 7 May 2018 17:51:39 +0000 (12:51 -0500)]
Make note of Gesture messages in VST; for later.

6 years agoplayhead_X_to_grid: Handle the case of GridTypeNone
Ben Loftis [Tue, 8 May 2018 14:03:20 +0000 (09:03 -0500)]
playhead_X_to_grid:  Handle the case of GridTypeNone

6 years agoArrow keys (playhead_x_to_grid()) should move the view along with it. This is more...
Ben Loftis [Tue, 8 May 2018 13:42:57 +0000 (08:42 -0500)]
Arrow keys  (playhead_x_to_grid()) should move the view along with it.  This is more consistent with jog-wheel operation, which has proven to work nicely.

6 years agoReplace the check for SnapPref, which went missing. Some functions (like playhead_to...
Ben Loftis [Wed, 2 May 2018 21:37:14 +0000 (16:37 -0500)]
Replace the check for SnapPref, which went missing.  Some functions (like playhead_to_next_grid) can request GridOnly.

6 years agofix more cut-n-paste coding errors
Paul Davis [Fri, 4 May 2018 22:36:53 +0000 (18:36 -0400)]
fix more cut-n-paste coding errors

6 years agoadd well known controls to list accessible via a MIDI binding map (or OSC?)
Paul Davis [Fri, 4 May 2018 13:40:28 +0000 (09:40 -0400)]
add well known controls to list accessible via a MIDI binding map (or OSC?)

6 years agointernally, ControllableDescriptors (used by MIDI binding maps) should use enums...
Paul Davis [Fri, 4 May 2018 12:24:07 +0000 (08:24 -0400)]
internally, ControllableDescriptors (used by MIDI binding maps) should use enums for automation types, rather than something custom

6 years agoavoid compiler warning (timestamp is unsigned and is thus always >= 0
Paul Davis [Fri, 4 May 2018 12:23:29 +0000 (08:23 -0400)]
avoid compiler warning (timestamp is unsigned and is thus always >= 0

6 years agoavoid compiler warning on at least some linux versions
Paul Davis [Fri, 4 May 2018 12:23:01 +0000 (08:23 -0400)]
avoid compiler warning on at least some linux versions

6 years agoAdd option to disable plotting collected signal in analysis.
Robin Gareus [Mon, 30 Apr 2018 20:24:35 +0000 (22:24 +0200)]
Add option to disable plotting collected signal in analysis.

6 years agoNO-OP: a ToDo comment for discussion
Robin Gareus [Mon, 30 Apr 2018 14:04:22 +0000 (16:04 +0200)]
NO-OP: a ToDo comment for discussion

6 years agoFix issue with AU plugin-analysis
Robin Gareus [Thu, 26 Apr 2018 21:41:15 +0000 (23:41 +0200)]
Fix issue with AU plugin-analysis

Copy c'tor needs to initialize "audio_input_cnt".

6 years agoUse URIs to identify plugin-presets
Robin Gareus [Tue, 24 Apr 2018 16:15:07 +0000 (18:15 +0200)]
Use URIs to identify plugin-presets

This fixes duplicate AU presets when adding a new preset.
Presets are kept in a std::map<URI,...> adding a new presets uses
the file-URI as ID. Loaded presets needs to have the same URI.

6 years agoptformat: Update to upstream c0305a2
Damien Zammit [Sun, 22 Apr 2018 02:49:43 +0000 (12:49 +1000)]
ptformat: Update to upstream c0305a2

6 years agoUse https for harrison channelstrip (windows-builds)
Robin Gareus [Fri, 20 Apr 2018 16:22:20 +0000 (18:22 +0200)]
Use https for harrison channelstrip (windows-builds)

6 years agoamend e1f94bbb4a (32/64bit int64 compat)
Robin Gareus [Thu, 19 Apr 2018 16:32:33 +0000 (18:32 +0200)]
amend e1f94bbb4a (32/64bit int64 compat)

6 years agoFix 32bit builds
Robin Gareus [Thu, 19 Apr 2018 13:36:01 +0000 (15:36 +0200)]
Fix 32bit builds

Unsigned long is 32bit on 32bit systems, besides sampleoffset and start
variables are signed int64_t.

resulting in a compiler error:
integer constant is too large for 'unsigned long' type.

6 years agoFix plugin analysis for some VST and AU Plugins.
Robin Gareus [Fri, 13 Apr 2018 21:19:13 +0000 (23:19 +0200)]
Fix plugin analysis for some VST and AU Plugins.

set_block_size() implies plugin deactivate(), activate() calls
to re-initialize AU and VST plugins. So plugins will reset the
internal state and not immediately respond correctly.
Some plugins zero the output or ramp up internally, leading the analyzer
to show invalid or random/uncorrelated information.

This avoid periodic calls to de/activate()

6 years agoOnly update tooltips if there is an actual change -- #7268
Robin Gareus [Thu, 12 Apr 2018 00:34:19 +0000 (02:34 +0200)]
Only update tooltips if there is an actual change -- #7268

Changing a tooltip resets the timeout. In one particular case,
while rolling, AudioClock::set() is calling set_tooltip() at a rate
faster than the tooltip timeout and prevents tooltip from showing at all
(even if there is no actual change to the tooltip text).
Alas, there is no trivial fix for this UI side and there may be other
such cases. A central check is more than practical.

6 years agoptformat: Update to upstream 762f0db
Damien Zammit [Sun, 8 Apr 2018 10:19:14 +0000 (20:19 +1000)]
ptformat: Update to upstream 762f0db

6 years agopt import: Add commented out code for inserting silent missing sources
Damien Zammit [Sun, 8 Apr 2018 05:28:31 +0000 (15:28 +1000)]
pt import: Add commented out code for inserting silent missing sources

- Disabled due to ptformat not knowing the length of sources
- Added MIDI region/track summary information to dialog

6 years agoptformat: Update to upstream d5a73a0
Damien Zammit [Sun, 8 Apr 2018 05:27:21 +0000 (15:27 +1000)]
ptformat: Update to upstream d5a73a0

6 years agoFix crash when testing unsupported MIDI file
Robin Gareus [Sun, 8 Apr 2018 00:05:16 +0000 (02:05 +0200)]
Fix crash when testing unsupported MIDI file

smf_delete() does not handle NULL, and segfaults instead.

This only crashes with optimized builds.
libsmf will call g_critical() earlier and in that case debug-builds
call UI::handle_fatal() and ask the user to "click to exit".

6 years agoOSC make strippable null on drop references
Len Ovens [Sat, 7 Apr 2018 16:11:45 +0000 (09:11 -0700)]
OSC make strippable null on drop references

6 years agoUse precalulated value rather than recalculating
Len Ovens [Wed, 21 Mar 2018 22:31:23 +0000 (15:31 -0700)]
Use precalulated value rather than recalculating

6 years agoOSC: Setting strip types should clear temporary custom modes
Len Ovens [Wed, 21 Mar 2018 21:50:27 +0000 (14:50 -0700)]
OSC: Setting strip types should clear temporary custom modes

6 years agoFix VstParameterProperties (bug from ac03e4a93)
Robin Gareus [Fri, 6 Apr 2018 22:16:57 +0000 (00:16 +0200)]
Fix VstParameterProperties (bug from ac03e4a93)

This fixes VST parameter prop.flags (toggle, integer-step).
VestigeMaxLabelLen is used in various places in libardour, most notably
with effGetParamName.

6 years agoImplement VST UI touch (begin/end Edit)
Robin Gareus [Mon, 2 Apr 2018 20:33:11 +0000 (22:33 +0200)]
Implement VST UI touch (begin/end Edit)

6 years agolots of changes including: ability to store and recall more than one mixer state...
Nikolaus Gullotta [Thu, 29 Mar 2018 15:21:09 +0000 (10:21 -0500)]
lots of changes including: ability to store and recall more than one mixer state, ability to work on selected tracks only, plus bugfixes and removal of redundant checks

6 years agoFix a French translation
Julien "_FrnchFrgg_" RIVAUD [Fri, 30 Mar 2018 18:52:48 +0000 (20:52 +0200)]
Fix a French translation

It conveyed the idea of continuous silencing as long as the transport
is in a stopped state. Make it correctly mean a one-shot reset when the
transport is being stopped.

6 years agoCoreAudio/MIDI: add locks for port-registration
Robin Gareus [Thu, 29 Mar 2018 16:15:20 +0000 (18:15 +0200)]
CoreAudio/MIDI: add locks for port-registration

CoreMIDI ports are dynamic. When dis/connecting a device CoreAudio's
AudioHardware-PropertyListener triggers a callback which can
add/remove ports.

This can not happen concurrently with processing, but it may happen
concurrently with a user creating tracks using Ardour's UI
and/or session-load/setup.

6 years agofix undo/redo for duplicate-regions in ripple mode
Paul Davis [Wed, 28 Mar 2018 18:24:15 +0000 (14:24 -0400)]
fix undo/redo for duplicate-regions in ripple mode

Also fix duplicate of multiple regions in the same track, and change "gap" variable
name to "span" for greater clarity

6 years agoNO-OP: prefer binary OR to set midi-status byte
Robin Gareus [Tue, 27 Mar 2018 22:32:32 +0000 (00:32 +0200)]
NO-OP: prefer binary OR to set midi-status byte

6 years agoSparse update for granular controls on sliders
Robin Gareus [Tue, 27 Mar 2018 22:13:30 +0000 (00:13 +0200)]
Sparse update for granular controls on sliders

Don't call ::set_value() if the actual value has not changed.
e.g. MIDI-CC or integer controls. Moving the Bar-controller was able to
create events even though the actual value remained unchanged.

This check has to be done UI-side, since the underlying API is also used
for state-restore and automation. e.g.
"old value" (user-set) may be default "0", "new value" may also be "0" but
libardour still needs to send an event (a synth's internal state may not
default to "0")

6 years agoduplicate (regions) should honor ripple edit mode
Paul Davis [Tue, 27 Mar 2018 14:17:33 +0000 (10:17 -0400)]
duplicate (regions) should honor ripple edit mode

6 years agoRemove debug message and trailing whitespace
Robin Gareus [Tue, 27 Mar 2018 13:30:34 +0000 (15:30 +0200)]
Remove debug message and trailing whitespace

6 years agofaderport: make ::invoke() tell us whether or not something was actually invoked...
Paul Davis [Mon, 26 Mar 2018 22:26:39 +0000 (18:26 -0400)]
faderport: make ::invoke() tell us whether or not something was actually invoked for a button event

Only put the button into "consumed" if it actually invoked something.
This helps to get reverse-polarity footswitches to work as expected

6 years agofix binding to long-press for User button on FaderPort
Paul Davis [Mon, 26 Mar 2018 17:56:50 +0000 (13:56 -0400)]
fix binding to long-press for User button on FaderPort

6 years agoFix MIDI-port info in plugin-manager
Robin Gareus [Sat, 24 Mar 2018 19:05:17 +0000 (20:05 +0100)]
Fix MIDI-port info in plugin-manager

6 years agoassert(rv) removed, fixed redundant checking, and fixed proc ordering issue caused...
Nikolaus Gullotta [Fri, 23 Mar 2018 14:00:51 +0000 (09:00 -0500)]
assert(rv) removed, fixed redundant checking, and fixed proc ordering issue caused by commit c7f7347

6 years agobetter group support + mute and solo recall
Nikolaus Gullotta [Wed, 21 Mar 2018 16:52:21 +0000 (11:52 -0500)]
better group support + mute and solo recall

6 years agoMSVC won't allow us to cast directly from float to an enum. We need to kludge it...
John Emmas [Thu, 22 Mar 2018 10:54:21 +0000 (10:54 +0000)]
MSVC won't allow us to cast directly from float to an enum. We need to kludge it by first casting to an integer type

(is it safe to be casting from float to enum anyway??)

6 years agoOSC: Change custom mode to enum
Len Ovens [Tue, 20 Mar 2018 21:37:08 +0000 (14:37 -0700)]
OSC: Change custom mode to enum

6 years agomore stability fixes
Nikolaus Gullotta [Tue, 20 Mar 2018 20:41:20 +0000 (15:41 -0500)]
more stability fixes

6 years agofixed processor ordering crash in ardour and added group support (kinda)
Nikolaus Gullotta [Tue, 20 Mar 2018 18:01:48 +0000 (13:01 -0500)]
fixed processor ordering crash in ardour and added group support (kinda)

6 years agoFix call to labs.
Robin Gareus [Tue, 20 Mar 2018 18:16:37 +0000 (19:16 +0100)]
Fix call to labs.

..or as clang puts it:
"error: no member named 'labs' in namespace 'std'; did you mean
 simply 'labs'?"

6 years agoFix crash when re-assigning groups to a disjunct set.
Robin Gareus [Tue, 20 Mar 2018 17:07:55 +0000 (18:07 +0100)]
Fix crash when re-assigning groups to a disjunct set.

Drag a group-tab's right-edge horizontally to the right to remove all
current routes from the groups before adding new routes to the group.

The group becomes temporarily empty, and
Session::route_removed_from_route_group() removes the group (before new
routes can be added).

6 years agoOSC: a strip controlling a send should deactivate other controls
Len Ovens [Tue, 20 Mar 2018 15:41:06 +0000 (08:41 -0700)]
OSC: a strip controlling a send should deactivate other controls

6 years agoOSC: Add feedback for bus_only mode and automation and pan
Len Ovens [Sun, 18 Mar 2018 06:10:16 +0000 (23:10 -0700)]
OSC: Add feedback for bus_only mode and automation and pan

6 years agoOSC: select should have latch too.
Len Ovens [Sun, 18 Mar 2018 06:07:44 +0000 (23:07 -0700)]
OSC: select should have latch too.

6 years agoOSC: Add bus only mode for gain controls
Len Ovens [Sat, 17 Mar 2018 18:00:59 +0000 (11:00 -0700)]
OSC: Add bus only mode for gain controls

6 years agoFixed issue in plugin id invalidator caused by commit d5d5c0c
Nikolaus Gullotta [Mon, 19 Mar 2018 18:30:19 +0000 (13:30 -0500)]
Fixed issue in plugin id invalidator caused by commit d5d5c0c

6 years agocleanup, fix in-on-change issue.
Nikolaus Gullotta [Mon, 19 Mar 2018 17:24:46 +0000 (12:24 -0500)]
cleanup, fix in-on-change issue.

6 years agoLua is not an acronym
Robin Gareus [Mon, 19 Mar 2018 17:18:35 +0000 (18:18 +0100)]
Lua is not an acronym

6 years agoSpeed up plugin-selector refill.
Robin Gareus [Mon, 19 Mar 2018 17:13:37 +0000 (18:13 +0100)]
Speed up plugin-selector refill.

* Detach model from treeview and disable sorting during refill.
* Prevent multiple re-fills due to sensitivity updates of ComboBoxes:
  gtk_widget_set_sensitive() -> CairoWidget::on_state_changed ()
  -> CairoWidget::set_visual_state () ->  StateChanged Signal

6 years agoFix "Shortcut" special-case in the script-selector.
Robin Gareus [Mon, 19 Mar 2018 14:43:07 +0000 (15:43 +0100)]
Fix "Shortcut" special-case in the script-selector.

The Script-selector is used in various places, not just for
Action-scripts.

Also add a "--" prefix for the separator to avoid name conflicts with
actual script names.

6 years agoLua: Lock bindings into memory for rt-scripts
Robin Gareus [Mon, 19 Mar 2018 01:26:24 +0000 (02:26 +0100)]
Lua: Lock bindings into memory for rt-scripts

Empirically this decreases gc-spike duration (worst-case) by a factor of
two and speeds up the average gc-run by a factor of over 4 (depending
on the amount of memory used by the plugin).

6 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.