Robin Gareus [Tue, 26 Feb 2019 02:07:49 +0000 (03:07 +0100)]
TimeFx-Filter: do not create a region when operation is canceled
Robin Gareus [Tue, 26 Feb 2019 02:01:53 +0000 (03:01 +0100)]
Re-work TimeFX cancel/abort
When processing multiple regions, apply results at the end, so that
when the action is canceled, no changes are applied.
Furthermore, do not commit an undo-command if time-stretch is a no-op.
Robin Gareus [Tue, 26 Feb 2019 01:16:59 +0000 (02:16 +0100)]
Fix TimeFX threading (detached thread must not be joined)
Robin Gareus [Tue, 26 Feb 2019 00:57:02 +0000 (01:57 +0100)]
Fix never-ending timestretch
This is relevant when time-stretch is canceled. In that case
stretcher.process() is never called with final=true, and hence
stretcher.available() will always return a value >=0.
Robin Gareus [Sat, 23 Feb 2019 16:58:05 +0000 (17:58 +0100)]
Update Fluidsynth to v2.0.4
see https://github.com/FluidSynth/fluidsynth/releases/tag/v2.0.4
Paul Davis [Fri, 22 Feb 2019 21:52:08 +0000 (14:52 -0700)]
remove PostTransportWorkCurveReallocate (no longer used)
Robin Gareus [Fri, 22 Feb 2019 21:33:01 +0000 (22:33 +0100)]
Sort route-templates by name
Robin Gareus [Thu, 21 Feb 2019 15:11:32 +0000 (16:11 +0100)]
Remove unused API, unused variable
Robin Gareus [Thu, 21 Feb 2019 15:10:45 +0000 (16:10 +0100)]
Avoid dynamic-cast, prefer virtual inheritance for performance reasons
Robin Gareus [Thu, 21 Feb 2019 00:34:58 +0000 (01:34 +0100)]
Add API to check for ongoing de-click
Robin Gareus [Wed, 20 Feb 2019 23:24:56 +0000 (00:24 +0100)]
Remove more cruft (unused rf-scale)
Robin Gareus [Wed, 20 Feb 2019 18:23:37 +0000 (19:23 +0100)]
Remove cruft (unused PostTransportInputChange)
Robin Gareus [Wed, 20 Feb 2019 16:23:45 +0000 (17:23 +0100)]
Tweak Plugin List script: output formatting and name
Robin Gareus [Wed, 20 Feb 2019 16:22:36 +0000 (17:22 +0100)]
ALlow Markup for LuaDialog.Message
Robin Gareus [Wed, 20 Feb 2019 15:47:51 +0000 (16:47 +0100)]
Script to list and count plugins used in this session
Robin Gareus [Wed, 20 Feb 2019 15:26:51 +0000 (16:26 +0100)]
Add unified API to select plugins to show on control-surfaces
e.g. Mixbus channelstrip should be hidden, also mixbus' built-in
effects are exposed as well-known controls
Alby M [Tue, 19 Feb 2019 04:06:08 +0000 (22:06 -0600)]
Made any -> none mappings remove events
Alby M [Mon, 18 Feb 2019 18:29:02 +0000 (12:29 -0600)]
Simplified translation table, fixed edge cases
Alby M [Mon, 18 Feb 2019 16:44:49 +0000 (10:44 -0600)]
Minor updates from code review
"Off" option, improved note name handling, name change, code formatting
Alby M [Mon, 18 Feb 2019 06:19:51 +0000 (00:19 -0600)]
Added MIDI Remap Lua DSP plugin
John Emmas [Mon, 18 Feb 2019 10:12:57 +0000 (10:12 +0000)]
Add/remove source(s) in our MSVC project (libardour)
Robin Gareus [Mon, 18 Feb 2019 01:18:13 +0000 (02:18 +0100)]
Remain silent while a disk-buffer is overwritten
This catches a case where a user-operation results in a complete
buffer re-fill during playback (e.g. split or move regions while playing)
Robin Gareus [Sun, 17 Feb 2019 02:15:18 +0000 (03:15 +0100)]
Update Latency UI, subscribe to changes
Robin Gareus [Sun, 17 Feb 2019 01:22:03 +0000 (02:22 +0100)]
Emit signal when plugin latency changes
Robin Gareus [Sun, 17 Feb 2019 00:51:29 +0000 (01:51 +0100)]
Clean up Latency API (Processor vs Plugin)
Plugins are only a source of Latency (Plugin delay).
The API to query, signal and override Latency is managed
by PluginInsert.
Robin Gareus [Sat, 16 Feb 2019 22:36:59 +0000 (23:36 +0100)]
Tweak meterbridge track reordering -- amend
d03574987
Paul Davis [Sat, 16 Feb 2019 20:12:45 +0000 (13:12 -0700)]
remove references to "Editor_menus" which is an action that no longer exists
Paul Davis [Sat, 16 Feb 2019 20:06:08 +0000 (13:06 -0700)]
additional logic to avoid showing top-level menu actions in the key shortcut editor
Paul Davis [Sat, 16 Feb 2019 20:05:41 +0000 (13:05 -0700)]
rename Main_menu action to Main menu
So that if it ever does show up in a list, it looks nice
Paul Davis [Sat, 16 Feb 2019 20:04:16 +0000 (13:04 -0700)]
fix mistaken action paths used in MonitorSection
(after recent changes to make some actions "global")
Paul Davis [Sat, 16 Feb 2019 08:14:26 +0000 (01:14 -0700)]
monitor section "global actions" are only global, no MS-specific versions
Paul Davis [Sat, 16 Feb 2019 08:13:56 +0000 (01:13 -0700)]
get ordering correct of global binding set creation and action registration (part2)
Paul Davis [Sat, 16 Feb 2019 08:13:21 +0000 (01:13 -0700)]
MonitorSection should only define global actions for mono/dim/cut (all channels)
If it defines local versions, we can end up with two (different) bindings for the same action, one
in global scope, one when MonitorSection has key focus. Bad.
Paul Davis [Sat, 16 Feb 2019 08:12:07 +0000 (01:12 -0700)]
get ordering correct of global binding set creation and action registration
Robin Gareus [Sat, 16 Feb 2019 00:10:31 +0000 (01:10 +0100)]
Tentative Latency GUI update
Robin Gareus [Fri, 15 Feb 2019 23:59:11 +0000 (00:59 +0100)]
Fix some signed/unsigned warnings
Robin Gareus [Fri, 15 Feb 2019 23:31:15 +0000 (00:31 +0100)]
NO-OP: whitespace
Robin Gareus [Fri, 15 Feb 2019 23:13:30 +0000 (00:13 +0100)]
Prepare to allow to disable latency-compensation
Previously "zero custom/user latency" meant "default plugin latency".
This is now saved in a separate boolean allowing a user to reduce a
processor's latency to zero.
This also prepares for a global switch to use zero latency throughout
the whole session.
Paul Davis [Fri, 15 Feb 2019 23:36:06 +0000 (16:36 -0700)]
better and more correct bindings for monitor section
Robin Gareus [Fri, 15 Feb 2019 20:37:19 +0000 (21:37 +0100)]
Fix crash when touching stale Automation Points
Undo/Redo allows to change a region's envelope without the envelope-list
changing (AutomationList::StateChanged is not emitted).
This also catches other operations where region-length can change while
the Envelope is visible. -- Normally when using the range or object tool
to modify a Region, the Envelope is not visible.
Without this change it was possible that the GUI shows automation
points that don't have a corresponding libardour representation:
e.g. select range, change tool to "draw", press "s" (split), undo,
click on any region-gain point.
Robin Gareus [Fri, 15 Feb 2019 17:27:22 +0000 (18:27 +0100)]
Simply debugging port-registration failures
Robin Gareus [Wed, 13 Feb 2019 23:04:29 +0000 (00:04 +0100)]
Optimize DSP-load calculation, pre-calculate fall-off once
Robin Gareus [Wed, 13 Feb 2019 19:24:00 +0000 (20:24 +0100)]
Fix meterbridge to follow track/bus re-ordering
Ben Loftis [Wed, 13 Feb 2019 03:23:01 +0000 (21:23 -0600)]
Fix for automation-line edits using the Range+Draw tool, when no line is already present.
Ben Loftis [Sat, 2 Feb 2019 15:26:03 +0000 (09:26 -0600)]
midi-audition-synth-uri is deprecated (libardour part).
Ben Loftis [Sat, 2 Feb 2019 15:25:37 +0000 (09:25 -0600)]
midi-audition-synth-uri is deprecated (gtk2 part).
Ben Loftis [Fri, 1 Feb 2019 16:57:33 +0000 (10:57 -0600)]
Hard-code GMsynth as the fallback, and allow UI to select the audition synth on-the-fly.
Ben Loftis [Fri, 1 Feb 2019 16:17:48 +0000 (10:17 -0600)]
Allow the selected Instrument to be used as the auditioner synth.
Ben Loftis [Tue, 12 Feb 2019 17:30:31 +0000 (11:30 -0600)]
Summary View should use the playhead color from config.
Ben Loftis [Tue, 12 Feb 2019 17:15:34 +0000 (11:15 -0600)]
Session-range behavior (gtk2 part)
* Both the session-start and session-end point should follow the is-free option
* Rename the end-is-free option to session-range-is-free, to reflect that change
* This fixes the problem: recording before the start marker would move the Start,
even if the user had already fixed the End marker.
Ben Loftis [Wed, 6 Feb 2019 15:54:13 +0000 (09:54 -0600)]
Session-range behavior (libardour part)
Ben Loftis [Tue, 12 Feb 2019 16:29:03 +0000 (10:29 -0600)]
Selection-after-split behavior (gtk2 part)
* When splitting in MouseObject, entered_region should get priority over selected regions.
This fixes the unexpected case where you try to split an unselected a region, but
a) nothing happens OR
b) some other region (maybe off-screen) is split
* Range mode now has its own option for splits, which can be:
Clear: the selection is cleared.
Preserve: the selection is left as-is. (default)
Force: all the regions that resulted from the split are selected (forcing a tool change).
* Un-hid the additional config options to select only the regions BEFORE or AFTER a split.
* Note: splits made with Cut Tool should be unaffected by these changes.
Ben Loftis [Thu, 7 Feb 2019 19:29:59 +0000 (13:29 -0600)]
Selection-after-split behavior ( libardour part )
Robin Gareus [Sat, 9 Feb 2019 02:33:32 +0000 (03:33 +0100)]
Fix llabs() ambiguity
some older systems (e.g. OSX/PPC) fail to compile with
error: call of overloaded 'llabs(long long int)' is ambiguous
candidates are:
long long int llabs(long long int)
long long int __gnu_cxx::llabs(long long int)
Robin Gareus [Fri, 8 Feb 2019 23:38:36 +0000 (00:38 +0100)]
Fix MIDI-bypass for inplace plugins -- #7722
Robin Gareus [Fri, 8 Feb 2019 18:10:35 +0000 (19:10 +0100)]
Properly initialize atomic variable
Robin Gareus [Fri, 8 Feb 2019 16:42:14 +0000 (17:42 +0100)]
Fix some disk-buffer threading issues
Make _pending_overwrite atomic (butler + process thread).
This also addresses a potential seek before override race.
Seeking will fill the buffers and by the time overwrite_existing_buffers()
is called from there is no space to overwrite anymore.
Robin Gareus [Fri, 8 Feb 2019 16:35:05 +0000 (17:35 +0100)]
NO-OP: clarify internal API, prepare for overwrite queue
John Emmas [Fri, 8 Feb 2019 10:17:57 +0000 (10:17 +0000)]
Accommodate newly introduced source(s) in our MSVC project (libpbd)
Robin Gareus [Thu, 7 Feb 2019 20:32:20 +0000 (21:32 +0100)]
Remove disk-reader local MIDI vari-speed
Vari-speed is now handled by the engine, on port-level
Robin Gareus [Thu, 7 Feb 2019 14:27:35 +0000 (15:27 +0100)]
Prefer AudioBuffer reference over raw buffer
This allows for consistent libardour API usage, in particular Amp.
Robin Gareus [Thu, 7 Feb 2019 14:00:37 +0000 (15:00 +0100)]
Prepare dedicated Disk-reader de-click gain-stage
This allows to specify a shorter fade-duration than default
Amp::apply_gain(), also allows to unroll and vectorize the loop
Robin Gareus [Thu, 7 Feb 2019 00:30:43 +0000 (01:30 +0100)]
Allow reading future data without read-commit
This is in preparation for de-click, fade-out. A disk-reader
can keep going, reading buffered data (if any) without changing the
read-index.
Paul Davis [Wed, 6 Feb 2019 22:04:33 +0000 (15:04 -0700)]
do not use green for "OK" deltas in transport master dialog and drop delta character
Paul Davis [Wed, 6 Feb 2019 20:53:42 +0000 (13:53 -0700)]
use correct value for silent sample count delivered to LTC decoder
Paul Davis [Wed, 6 Feb 2019 20:53:17 +0000 (13:53 -0700)]
do not attempt to update transport master rows if audioengine is not running
Robin Gareus [Wed, 6 Feb 2019 19:26:44 +0000 (20:26 +0100)]
Fix rolling backwards
When speed is -1, start_sample >= end_sample and _transport_sample
needs to be decremented.
Session::process_with_events() did this correctly, this change makes
Session::process_without_events() behave identically.
Robin Gareus [Wed, 6 Feb 2019 19:22:22 +0000 (20:22 +0100)]
Implement backwards micro-locates
Robin Gareus [Wed, 6 Feb 2019 18:01:42 +0000 (19:01 +0100)]
Prepare Disk-reader for bi-directional micro-locates
Robin Gareus [Wed, 6 Feb 2019 18:00:15 +0000 (19:00 +0100)]
Prepare buffer for seeking
Keep track of safe reservation:
Data has been read (or was skipped) previously can be read again
up to the allocated "reservation" (which is never overwritten).
Robin Gareus [Wed, 6 Feb 2019 15:59:41 +0000 (16:59 +0100)]
Optimize buffer zero-filling
Robin Gareus [Tue, 5 Feb 2019 19:51:33 +0000 (20:51 +0100)]
Towards a new disk-reader ringbuffer
This is mainly a NO-OP, introducing a new PlaybackBuffer type
and preparing for its use.
At this point in time, the buffer is just a power-of-two sized
ringbuffer and the disk-reader's read-logic is still unchanged.
Eventually the read and write sample position that are currently
private to the disk-reader can be migrated to be owned by the buffer.
Also Diskreader::read() positions can be matched to read-position ..
+/- buffer reservation and de-click can read w/o committing the read.
Paul Davis [Mon, 4 Feb 2019 18:24:23 +0000 (11:24 -0700)]
use ::reset() not ::update()
Paul Davis [Mon, 4 Feb 2019 18:23:56 +0000 (11:23 -0700)]
reset "current" in LTC transport master when necessary
Paul Davis [Mon, 4 Feb 2019 18:23:35 +0000 (11:23 -0700)]
correctly initialize LTC transport master port latency (reversed boolean error)
Paul Davis [Mon, 4 Feb 2019 18:22:25 +0000 (11:22 -0700)]
NOOP: whitespace in function call
Paul Davis [Mon, 4 Feb 2019 18:22:04 +0000 (11:22 -0700)]
fully initialize all LTC transport master members
at least the ones that can be done via initialization statements
Paul Davis [Mon, 4 Feb 2019 18:21:07 +0000 (11:21 -0700)]
remove debug output
Paul Davis [Mon, 4 Feb 2019 18:20:49 +0000 (11:20 -0700)]
add DEBUG::Destruction output for Port
Paul Davis [Mon, 4 Feb 2019 18:20:32 +0000 (11:20 -0700)]
extend debug output statement
Paul Davis [Mon, 4 Feb 2019 18:20:19 +0000 (11:20 -0700)]
add new DEBUG_TRACE output for transport masters
Paul Davis [Mon, 4 Feb 2019 18:19:56 +0000 (11:19 -0700)]
remove commented code
Paul Davis [Sun, 27 Jan 2019 21:02:03 +0000 (14:02 -0700)]
force execution of ARDOUR::init_post_engine() before any handlers of AudioEngine::Running()
Paul Davis [Sun, 27 Jan 2019 21:01:05 +0000 (14:01 -0700)]
do not reset ControlProtocol state for every engine restart, it is not necessary
Paul Davis [Fri, 25 Jan 2019 18:09:31 +0000 (11:09 -0700)]
remove debug output
Paul Davis [Fri, 25 Jan 2019 05:05:56 +0000 (22:05 -0700)]
minor refactorization of how the transport master widget is rebuilt
Paul Davis [Fri, 25 Jan 2019 05:05:20 +0000 (22:05 -0700)]
new approach to handling Transport Masters when engine is restarted
Trust that ::reset() works for all transport masters, and call it when engine is stopped. This way
the transport masters are ready to be called again as soon as the engine restarts.
Robin Gareus [Wed, 23 Jan 2019 15:05:21 +0000 (16:05 +0100)]
Kill the last remaining buses
In Ardour's world, the plural of a "Bus[Bar]" is "Busses".
(some day we may or may not search/replace 'em all to "buses")
Robin Gareus [Wed, 23 Jan 2019 11:59:17 +0000 (12:59 +0100)]
NO-OP: whitespace
Robin Gareus [Wed, 23 Jan 2019 11:44:10 +0000 (12:44 +0100)]
system-exec read: allow 1 byte for null termination -- #7715
Robin Gareus [Tue, 22 Jan 2019 20:54:22 +0000 (21:54 +0100)]
LV2: Immediately respond after processing scheduled work in sync exec mode
This allows for sample-accuracy when the work is triggered by sequenced
events in offline rendering mode.
Robin Gareus [Mon, 21 Jan 2019 13:36:59 +0000 (14:36 +0100)]
NO-OP: whitespace
Robin Gareus [Mon, 21 Jan 2019 13:34:19 +0000 (14:34 +0100)]
NO-OP: remove unused code
Robin Gareus [Mon, 21 Jan 2019 13:33:08 +0000 (14:33 +0100)]
ISO-C++ compat, see
cd70c6bda5b,
91ed9840d
Robin Gareus [Sat, 19 Jan 2019 11:04:45 +0000 (12:04 +0100)]
Use correct playlist when loading Ardour5 session
Ardour5 identifies playlists by playlist-name, not by diskstream name.
Robin Gareus [Sat, 19 Jan 2019 09:24:25 +0000 (10:24 +0100)]
Optimize exponential interpolation.
Len Ovens [Tue, 27 Nov 2018 21:13:19 +0000 (13:13 -0800)]
OSC: remove unused variable
Len Ovens [Thu, 15 Nov 2018 22:11:05 +0000 (14:11 -0800)]
Hmm, balanced panner didn't seem to make it in
Len Ovens [Tue, 13 Nov 2018 23:15:18 +0000 (15:15 -0800)]
foldback sends should have unlinked balanced panner
Or 1+2 for mono sends.
Len Ovens [Tue, 13 Nov 2018 21:43:23 +0000 (13:43 -0800)]
OSC: shorten foldbackbus names