Len Ovens [Tue, 13 Nov 2018 05:40:29 +0000 (21:40 -0800)]
Changed send/deliver role "Personal" to "Foldback" so bus type can match
Len Ovens [Thu, 8 Nov 2018 02:21:40 +0000 (18:21 -0800)]
OSC: New personal monitor buses no longer need to be hidden
Len Ovens [Thu, 8 Nov 2018 02:09:50 +0000 (18:09 -0800)]
OSC: logic thinko fix
Robin Gareus [Mon, 12 Nov 2018 01:30:46 +0000 (02:30 +0100)]
Fix load/save Lua Editor scripts
* callbacks are unregistered during session-deletion, skip saving them
during session destruction.
* prevent duplicate state restore, re-load script with the session, not
window instance.
Robin Gareus [Mon, 12 Nov 2018 01:06:23 +0000 (02:06 +0100)]
Fix saving Lua Callbacks when un/register succeeds
This fix an issue introduce in
9971e718
Robin Gareus [Mon, 12 Nov 2018 00:58:12 +0000 (01:58 +0100)]
amend
02f92300, skip backup snapshot when recording
Robin Gareus [Sun, 11 Nov 2018 20:28:15 +0000 (21:28 +0100)]
Add Lua script to benchmark region-split operation
Robin Gareus [Sun, 11 Nov 2018 20:26:50 +0000 (21:26 +0100)]
Add callback script to periodically save a backup snapshot
Jan Lentfer [Thu, 8 Nov 2018 17:01:08 +0000 (18:01 +0100)]
LCXL: some final fixes
Robin Gareus [Sun, 11 Nov 2018 18:51:56 +0000 (19:51 +0100)]
Another engine dialog edge-case fix to set the samplerate
Honor the sesssion's sample-rate when showing the dialog with the engine
stopped. This can happen when then engine dies or hide/show the dialog
after manually stopping the engine.
Robin Gareus [Sun, 11 Nov 2018 17:50:01 +0000 (18:50 +0100)]
Fix sample-rate override when changing backends or devices
This indirectly honors session_loaded() and prevents that restoring
engine-state can change the sample-rate dropdown when a session is loaded.
Robin Gareus [Sun, 11 Nov 2018 02:38:34 +0000 (03:38 +0100)]
Fix playhead smoothing when auditioning.
Don't use timer to keep moving the playhead when auditioning.
This fixes playhead jiggling during audition.
Len Ovens [Wed, 7 Nov 2018 23:35:33 +0000 (15:35 -0800)]
OSC: specify which stiripable type we want
Len Ovens [Wed, 7 Nov 2018 21:05:05 +0000 (13:05 -0800)]
Change get_routes to get_routelist where appropriate.
Len Ovens [Wed, 7 Nov 2018 21:02:49 +0000 (13:02 -0800)]
get_stripables and get_routelist are now presentationinfo aware
Robin Gareus [Wed, 7 Nov 2018 22:37:10 +0000 (23:37 +0100)]
Consolidate VST Plugin Info
This unifies common PluginManager VST code to construct *VSTPluginInfo
and also provides a dedicated is_instrument() method for VST plugins.
Robin Gareus [Wed, 7 Nov 2018 22:05:54 +0000 (23:05 +0100)]
Force VST category to be "Instrument" for instruments.
This way it is picked up by the default PluginInfo::is_instrument()
method.
Robin Gareus [Wed, 7 Nov 2018 20:37:59 +0000 (21:37 +0100)]
Honor effFlagsIsSynth and always assume those VSTs are instruments
This will incorrectly list some vocders or reaktor and the likes of
plugins with audio + midi input as Instruments IFF they also announce
effFlagsIsSynth flag.
NB. this is a first step only. we still need to override PluginInfo
Robin Gareus [Wed, 7 Nov 2018 18:53:23 +0000 (19:53 +0100)]
GUI options to select FLAC as media format
Robin Gareus [Wed, 7 Nov 2018 18:21:39 +0000 (19:21 +0100)]
Add support for recording to .flac
Robin Gareus [Wed, 7 Nov 2018 18:21:10 +0000 (19:21 +0100)]
NO-OP: whitespace
Robin Gareus [Wed, 7 Nov 2018 18:13:03 +0000 (19:13 +0100)]
Close files at rec-stop (re-open as needed)
This is in preparation to allow recording .flac files which are either
read or write not cannot be in read/write mode
Robin Gareus [Tue, 6 Nov 2018 21:43:36 +0000 (22:43 +0100)]
Skip updating options for hidden file-dialog
This may also fix an edge-case issue where changing track selection
combined with invalid file selection may trigger a bad_file_message.
Robin Gareus [Mon, 5 Nov 2018 19:15:01 +0000 (20:15 +0100)]
DSP-Load Window: subscribe to newly added routes
This fixes an issue when adding plugins with the route (e.g MIDI)
or showing the window before adding a route in the first place.
Robin Gareus [Sun, 4 Nov 2018 17:46:21 +0000 (18:46 +0100)]
Save Lua UI scripts separately
Previously EditorAction and ExitorHook scripts were saved with
instant.xml. The were saved with each session and in the config
dir (for new sessions). This allowed inconsistent UI setups, especially
when loading old sessions that had no or different scripts.
Now Editor scripts (actions and hooks) are saved in a dedicated file,
session-independently. This goes along with ui_config in general
e.g. action-table-columns
The scripts are not saved with ui_config file for two reasons:
ui_config settings related to built-in ui_config_vars.h,
and in the future there may be further indirection like "ui-rc-file".
Note: previously loaded editor scripts are lost with this change.
Johannes Mueller [Sun, 4 Nov 2018 14:02:35 +0000 (15:02 +0100)]
NO-OP: whitespace
Robin Gareus [Sun, 4 Nov 2018 14:37:46 +0000 (15:37 +0100)]
Remove C++11'ism
While gnu-gcc had `std::map:at const` as non-standard extension
it is n/a for older gcc on OSX.
Surprisingly this const& p() const; performs a tad better as well, likely
due to different exception handling.
Perhaps it is also worth investigating boost::flat_map<> as replacement
for std::map<>, here. Our common case is just a single entry, so using
a std::vector emulated mapping might help.
Robin Gareus [Sun, 4 Nov 2018 03:10:07 +0000 (04:10 +0100)]
Fix AudioUnit, missing const in
cbef72b8a13
Robin Gareus [Sun, 4 Nov 2018 02:25:36 +0000 (03:25 +0100)]
Prefer const references for Pin/Channel maps
Another micro-optmization shaving off some ten microseconds for every
plugin. Also copying maps isn't RT-safe.
This may however cause issue if const map references can change
while a plugin is running.
Robin Gareus [Sun, 4 Nov 2018 01:21:53 +0000 (02:21 +0100)]
Plugin pin-mapping micro-optimization
Prefer std::map::at() over std::map::operator[] to allow const maps.
For debug builds, there should probably some try{} catch{} along with this.
Robin Gareus [Sun, 4 Nov 2018 01:15:28 +0000 (02:15 +0100)]
Optimize Plugin connect & run API, use const maps
Robin Gareus [Sat, 3 Nov 2018 20:55:07 +0000 (21:55 +0100)]
Optimize Parameter Control Loop
For plugins with 10000 Control Inputs, dynamic_pointer_cast<> overhead
is significant, here ~2msec (~0.2usec per cast, optimized build, i7-5600U,
2.60GHz)
Paul Davis [Sat, 3 Nov 2018 01:50:14 +0000 (21:50 -0400)]
rename TransportMasterManager::init() to ::set_default_configuration() to make its purpose more clear
Paul Davis [Sat, 3 Nov 2018 01:36:53 +0000 (21:36 -0400)]
fix crash during first-run configuration of the application, caused by using an incomplete TransportMasterManager
Len Ovens [Fri, 2 Nov 2018 00:42:42 +0000 (17:42 -0700)]
Allow strips to add or remove personal sends
in processor box context menu
Len Ovens [Thu, 1 Nov 2018 21:18:50 +0000 (14:18 -0700)]
A listen route has no aux sends
Robin Gareus [Thu, 1 Nov 2018 22:20:50 +0000 (23:20 +0100)]
Work around tooltips in treeviews selection issue #7678
When tooltips are disabled, but a tooltip column is set for a treeview,
the treeview selection behaves inconsistently. It requires a 3rd click
after expanding any child-rows to select a child.
Johannes Mueller [Thu, 1 Nov 2018 19:30:06 +0000 (20:30 +0100)]
Create sidechain ports when created from template (#
0007680)
When a route with a sidechain is created from a template or by route
duplication the number of ports of the sidechain are set according to the
XMLNode defining the sidechain. Then the names are set according to the name of
the newly created route.
Thus all the pin connections defined in the template are replicated in the
newly created route.
Len Ovens [Thu, 1 Nov 2018 20:13:06 +0000 (13:13 -0700)]
Allow ListenBus to be added by GUI
Robin Gareus [Thu, 1 Nov 2018 18:14:25 +0000 (19:14 +0100)]
Prefer key-event dispatch over emulated events for VST plugins.
Robin Gareus [Thu, 1 Nov 2018 18:12:43 +0000 (19:12 +0100)]
Add API to dispatch keyboard events to VST Plugins
Len Ovens [Thu, 1 Nov 2018 18:31:05 +0000 (11:31 -0700)]
Correct new track/bus/VCA dialog text
Johannes Mueller [Sun, 28 Oct 2018 16:22:32 +0000 (17:22 +0100)]
Consider size of port matrix column labels for size of row labels
The column labels are drawn in an angle towards the edge where the row labels
are. Therefore, if the column labels are much longer than the row labels it can
happen that they go beyond the left edge. In that case we have to add an extra
width to the row labels.
Johannes Mueller [Sat, 27 Oct 2018 19:36:21 +0000 (21:36 +0200)]
Update names of sidechains.
When a PluginInsert is created it does not have an owner right away. That's why
a we need to set the sidechains name once the owner is known, in order to
include owner's name into the name.
Furthermore we need to follow renames of the owner.
Johannes Mueller [Sat, 27 Oct 2018 01:28:52 +0000 (03:28 +0200)]
Put the sidechain ports into a dedicated tab in PortMatrix
Robin Gareus [Thu, 1 Nov 2018 14:27:08 +0000 (15:27 +0100)]
Skip VST version check to detect MIDI inputs
Some plugins return 0 from effGetVstVersion and are hence not detected
as instruments. e.g. VeeSeeVSTRack (VCV). This may also explain why MIDI
port of some other VSTs are not exposed.
Most VST2.4 return 2400, so checking [effGetVstVersion] >=2 (and not 2000)
was incorrect to begin with.
Robin Gareus [Thu, 1 Nov 2018 00:27:30 +0000 (01:27 +0100)]
Fix key-forwarding to linuxVST UIs
Tested with VeeSeeVST
Robin Gareus [Wed, 31 Oct 2018 22:43:39 +0000 (23:43 +0100)]
Allow to limit strip-inline controls (GUI optimization)
Robin Gareus [Wed, 31 Oct 2018 22:34:41 +0000 (23:34 +0100)]
Preference Dropdown to limit Automatable Parameters
Robin Gareus [Wed, 31 Oct 2018 22:32:16 +0000 (23:32 +0100)]
Add option to limit automatable control parmaters
VCVRack VST currently exposes 9999 automatable-control parmaters.
This slows down various GUI dropdown lists and dialogs.
(even worse: those parameters are not mapped to anything by default).
This change allows to limit automatable parameters to a reasonable number,
without loosing state of already automated parameters in existing sessions.
Robin Gareus [Wed, 31 Oct 2018 22:25:50 +0000 (23:25 +0100)]
Remove duplicate call
Automatable::add_control() already does insert a given parameter
to the _can_automate_list list if it's automatable.
Robin Gareus [Wed, 31 Oct 2018 22:22:23 +0000 (23:22 +0100)]
NO-OP: whitespace
Len Ovens [Tue, 30 Oct 2018 19:13:46 +0000 (12:13 -0700)]
OSC: Allow non-cue surfaces to create personal send and ListenBus
Len Ovens [Mon, 22 Oct 2018 19:36:59 +0000 (12:36 -0700)]
Add ListenBus to stripable types
Robin Gareus [Tue, 30 Oct 2018 15:09:22 +0000 (16:09 +0100)]
New Route dialog: add fallback default selection
This fixes an issue with Mixbus. If the default "Create Audio Tracks.."
template/script is not available. Nothing is selected.
Selecting a type/template is required to update various other dialog
fields. eg. "Name" field.
Previously: Create VCA. OK+Close. Re-open dialog. Now the
implicit default was "Audio Track" but the Name-field still showed "VCA".
Robin Gareus [Mon, 29 Oct 2018 20:52:47 +0000 (21:52 +0100)]
Safe-guard non-rt-safe sidechain operations
This is required by
7d8b93ad for showing error when actively recording.
It also prevents other UIs (OSC, Lua,..) to change re-configuring
sidechain ports/plugins while recording.
Robin Gareus [Mon, 29 Oct 2018 20:50:08 +0000 (21:50 +0100)]
Consolidate PinDialog Session/recording checks
- _session cannot be NULL while the dialog is visible.
This removes extra `if (_session)` tests.
- Operations now no longer fail silently, but show error messages.
Johannes Mueller [Sun, 28 Oct 2018 20:29:52 +0000 (21:29 +0100)]
Set session of PluginPinWidget created after ::set_session()
PluginPinWidgets initially receive their Session pointer by
PluginPinDialog::set_session(). When a RouteProcessorChange occurs all
PluginPinWidgets are recreated. Those newly created instances need a pointer to
the session.
Robin Gareus [Sun, 28 Oct 2018 20:03:43 +0000 (21:03 +0100)]
Processor-box control context menu update
Robin Gareus [Sun, 28 Oct 2018 19:37:20 +0000 (20:37 +0100)]
Don't show hidden controls inline in the mixer-strip
Robin Gareus [Sun, 28 Oct 2018 19:34:21 +0000 (20:34 +0100)]
Only allow LV2 touch events for control inputs
This fixes a crash when a plugin sends a touch events for non-control ports.
Robin Gareus [Sat, 27 Oct 2018 08:33:58 +0000 (10:33 +0200)]
Fix incorrect VST callback fall-though (effective NOOP)
Robin Gareus [Sat, 27 Oct 2018 08:33:07 +0000 (10:33 +0200)]
Fix another compiler warning
Robin Gareus [Fri, 26 Oct 2018 12:53:11 +0000 (14:53 +0200)]
Wimplicit-fallthrough fixes for tools/utils
Robin Gareus [Fri, 26 Oct 2018 12:31:14 +0000 (14:31 +0200)]
Wimplicit-fallthrough fixes for gtk-ardour
Robin Gareus [Fri, 26 Oct 2018 12:30:26 +0000 (14:30 +0200)]
Fix some Wimplicit-fallthrough
A "fall through" comment is most portable way to indicate
"no break, fallthru" cases.
* __attribute__ ((fallthrough)) // is not portable
* [[fallthrough]]; // is C++17
Robin Gareus [Fri, 26 Oct 2018 12:25:55 +0000 (14:25 +0200)]
Fix some compiler warnings (exception catches)
Robin Gareus [Fri, 26 Oct 2018 11:40:03 +0000 (13:40 +0200)]
Glib throws a const FileError exception
Robin Gareus [Fri, 26 Oct 2018 11:38:28 +0000 (13:38 +0200)]
Fix Lua bindings (music-time, mapping)
Robin Gareus [Thu, 25 Oct 2018 02:25:15 +0000 (04:25 +0200)]
Plugin analysis numerics
Show vertical marker-line (freq) and precise numeric data of the
transfer function (dB, deg).
Robin Gareus [Thu, 25 Oct 2018 00:00:08 +0000 (02:00 +0200)]
Fix race-condition/deadlock, plugin-copy while rolling
lili93's session (#ardour) triggered this w/jackd 512fpp:
Drag/Drop copy a latent plugin from one track to another while rolling.
The GUI-thread as well as the auto-connect thread concurrently call
jack_recompute_total_latencies(). The auto-connect thread holds
a process lock while doing so. The GUI does not use any mutexes.
This randomly deadlocks in libjack.
backtrace: https://pastebin.com/6m3KGhWS
Robin Gareus [Tue, 23 Oct 2018 22:15:44 +0000 (00:15 +0200)]
Fix typo in binding, amend
9bbbc7fbe
John Emmas [Tue, 23 Oct 2018 08:55:31 +0000 (09:55 +0100)]
Add some missing link libs to MSVC zita-convolver
Robin Gareus [Mon, 22 Oct 2018 13:46:39 +0000 (15:46 +0200)]
Fix an edge-case in Dummy backend's random generator
INT_MAX == 2^31 is not a valid random seed for this LCG.
Robin Gareus [Mon, 22 Oct 2018 13:43:46 +0000 (15:43 +0200)]
Sort VST factory presets
This is more of a workaround than a fix. Simply by forcing the
URI to be sortable (VST-user presets are sorted at the end).
This eventually needs a deeper cleanup and API consolidation
PluginInfo::get_presets(bool) returns an ordered std::vector.
However this API is only used in a few cases where the plugin is
not instantiated. PluginInfo::get_presets(bool).
The problem is Plugin::get_presets(). The method returns
information that was previously cached by Plugin::find_presets() in
std::map<URI, ...>
John Emmas [Mon, 22 Oct 2018 07:56:22 +0000 (08:56 +0100)]
Remaining changes needed to build zita-convolver with MSVC
John Emmas [Mon, 22 Oct 2018 07:53:20 +0000 (08:53 +0100)]
Add MSVC support for building the 'zita-convolver' library (which is now needed by libardour)
John Emmas [Mon, 22 Oct 2018 07:46:59 +0000 (08:46 +0100)]
Accommodate newly introduced source(s) in our MSVC project (fluidsynth)
Robin Gareus [Sun, 21 Oct 2018 18:45:25 +0000 (20:45 +0200)]
Potential fix for lost VST MIDI events
Ardour's VST MIDI buffer API does not yet implement offsets and limits.
When a cycle is split, the same midi-buffer is used for all sub-divisions
leading to duplicate, offset, events.
Robin Gareus [Sun, 21 Oct 2018 15:02:14 +0000 (17:02 +0200)]
MSVC compatibility for zita-convolver
Christopher Arndt [Sat, 20 Oct 2018 22:56:38 +0000 (00:56 +0200)]
Avoid use of 'std::to_string
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
Christopher Arndt [Sat, 20 Oct 2018 21:48:21 +0000 (23:48 +0200)]
Add plugin version and parameter count to VST user presets
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
Len Ovens [Fri, 19 Oct 2018 23:58:39 +0000 (16:58 -0700)]
Personal monitor now saves and restores
Robin Gareus [Fri, 19 Oct 2018 17:13:36 +0000 (19:13 +0200)]
Example convolution plugin (Lua script, hardcoded IR)
Robin Gareus [Thu, 18 Oct 2018 23:08:04 +0000 (01:08 +0200)]
Lua bindings for convolution DSP
Robin Gareus [Thu, 11 Oct 2018 13:29:10 +0000 (15:29 +0200)]
Implement basic libardour convolution DSP
Robin Gareus [Thu, 11 Oct 2018 15:25:26 +0000 (17:25 +0200)]
zita-convolver windows/mingw build fix
- semaphore is available,
- pthread_t is not a pointer type (but here it's not used anyway)
Robin Gareus [Wed, 10 Oct 2018 22:52:37 +0000 (00:52 +0200)]
NO-OP: clang-format whitespace
Robin Gareus [Wed, 10 Oct 2018 22:43:06 +0000 (00:43 +0200)]
zita-convolver: add namespace & visibility, remove global externs
Robin Gareus [Wed, 10 Oct 2018 22:35:53 +0000 (00:35 +0200)]
Add upstream libzita-convolver 4.0.3
Robin Gareus [Fri, 19 Oct 2018 16:10:19 +0000 (18:10 +0200)]
Allow Lua DSP processors to report latency
Len Ovens [Fri, 19 Oct 2018 15:49:30 +0000 (08:49 -0700)]
Add personal monitor sends
Robin Gareus [Thu, 18 Oct 2018 13:07:45 +0000 (15:07 +0200)]
Fix copy/edit in
e047b01aa256
Robin Gareus [Thu, 18 Oct 2018 02:15:47 +0000 (04:15 +0200)]
Fix scalar initialization of shared_ptr<>.
Robin Gareus [Thu, 18 Oct 2018 02:09:14 +0000 (04:09 +0200)]
Fluidsynth 2.0 uses anonymous unions (added in c11, or gnu99)
Andreas Müller [Thu, 11 Oct 2018 22:56:59 +0000 (00:56 +0200)]
Follow fluidsynth's API changes introduced with 2.0.0
Updated patch from Andreas Müller <schnitzeltony@gmail.com>
Robin Gareus [Wed, 17 Oct 2018 22:41:02 +0000 (00:41 +0200)]
Update Fluidsynth to 2.0.1
Len Ovens [Wed, 17 Oct 2018 23:25:49 +0000 (16:25 -0700)]
Noop: fix white space
Len Ovens [Wed, 17 Oct 2018 22:58:08 +0000 (15:58 -0700)]
Option to hide send if aux is hidden
Andreas Müller [Wed, 17 Oct 2018 20:10:41 +0000 (22:10 +0200)]
Prevent excessive meter redraws for inactive meters at zero II
Same as
be826f363522dbca96c8263d404c57c4fe9ff0e2
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>