Commit graph

15211 commits

Author SHA1 Message Date
Robin Gareus
98bcfb1485
Save VST paths after successful scan
Ardour only saves Config when the session is saved.
When changing the VST Path and starting a plugin-scan the newly
discovered plugins would otherwise not be avalable unless
the session is explicitly saved after a scan.
2019-11-22 20:06:43 +01:00
Robin Gareus
c2d44c0f05
Add support for LV2/KX transient-ID option 2019-11-22 20:01:32 +01:00
Robin Gareus
512c27d277
Fix buffer-overflow when vari-speeding
Session::process() can call split-cycle which offset the
buffer pointers. When vari-speeding at speed > 1.0, the
engine also splits the cycle every n_samples, to not exceed
the configured buffersize. This needs to take prior buffer
offsets into account.
2019-11-21 23:37:31 +01:00
Robin Gareus
d4ecfc7d85
Use new boost::optional API
get_value_or() has been deprecated since boost 1.56
2019-11-21 17:48:56 +01:00
Robin Gareus
53b1d17c60
Fix multi-channel de-click
_declick_amp gain needs to be reset for each channel before
the test (_declick_amp.gain() != target_gain) if de-clicking
is needed.
2019-11-21 02:54:19 +01:00
Robin Gareus
7fec401b8d
Fix declick offset position for multi-channel tracks 2019-11-19 16:20:28 +01:00
Paul Davis
4534af0a4c DiskReader::_declick_offs should only advance once per ::run() call 2019-11-18 21:45:39 -07:00
Paul Davis
9b92084ed6 DiskReader::_declick_amp needs to repeat the same work for each audio channel handled 2019-11-18 21:45:39 -07:00
Paul Davis
530a4393dc fix transport FSM to stop first and declick later 2019-11-18 21:45:39 -07:00
Paul Davis
5048b86d5d small changes to make declick out triggered by just stopping 2019-11-18 21:45:39 -07:00
Paul Davis
c07db6d655 unset _reversed whenever RTMidiBuffer gets ::clear()'ed 2019-11-18 15:38:18 -07:00
Paul Davis
75cb57194e add missing NULL check 2019-11-18 13:07:40 -07:00
Robin Gareus
e52fd47049
Latency compensation is independent of transport-logic
This also fixes a concurrency issue when when non-realtime-stop
and graph-reorder or other rt-latency changes coincide.
2019-11-18 20:22:08 +01:00
Paul Davis
a8d62ce056 use reverse-reading of MIDI data in DiskReader 2019-11-18 12:01:43 -07:00
Paul Davis
725a6fc67f support backwards reading of MIDI from RTMidiBuffer 2019-11-18 12:01:43 -07:00
Paul Davis
80cab52a06 fix typo/thinko in logic to decide if MIDI buffers in DiskWriter require the butler (to write to disk) 2019-11-18 12:01:43 -07:00
Robin Gareus
3cf888498a
Fix automation lookup when rolling backwards 2019-11-18 15:55:32 +01:00
Robin Gareus
3b2b946d4e
NO-OP: simplify code
find_next_ac_event, needs to find the next event *after* (but not
at) start.

std::upper_bound returns an iterator pointing to the first element
in the range [first, last) that is greater than value.
This is equivalent to using std::lower_bound an iterating until
finding the first element greater than.
2019-11-18 15:55:17 +01:00
Robin Gareus
f49d11d5e3
Automation event lookup when rolling backwards
When rolling backwards we need to be able to find
the *next* event before "start".
2019-11-18 15:55:13 +01:00
Paul Davis
8e8249b595 remove debug output 2019-11-15 20:42:15 -07:00
Paul Davis
bd509bba49 fix questionable and not entirely intended change that was a part of dad47e445c 2019-11-15 20:40:23 -07:00
Paul Davis
1c7e446cb4 better transport master behavior when working with sample-clock-synced transport masters 2019-11-15 16:06:04 -07:00
Paul Davis
d64cf7a762 improve behavior when synced to JACK transport
Heuristic and actions when a locate is needed are different for
JACK transport than TC
2019-11-15 16:06:04 -07:00
Paul Davis
098bce1ece improve initial coordinate with JACK transport state 2019-11-15 16:06:04 -07:00
Paul Davis
3d74af6c1f better debugging message 2019-11-15 16:06:04 -07:00
Paul Davis
a7613eb191 consolidate setting of "get roll after locate" in TFSM 2019-11-15 16:06:04 -07:00
Paul Davis
4c688fe7f9 NO-OP: move brace 2019-11-15 16:06:04 -07:00
Paul Davis
8f71b6430b when synced to JACK transport, transport requests go there first. 2019-11-15 16:06:04 -07:00
Paul Davis
df4a30b1a0 fix behavior of Session::maybe_stop() when synced to JACK Transport 2019-11-15 16:06:04 -07:00
Paul Davis
ba4e7015de make comment more accurate 2019-11-15 16:06:04 -07:00
Paul Davis
5c9e7b8234 consolidate Session::locate() and Session::do_locate()
The first no longer needs to handle requests by passing them to
JACK transport
2019-11-15 16:06:04 -07:00
Paul Davis
7199b657ba no need for MidiClockTransportMaster::starting() method 2019-11-15 16:06:04 -07:00
Paul Davis
4637c49838 improve behavior of JACK transport sync callback.
Do not call transport actions directly, just report back to JACK
on transport status.
2019-11-15 16:06:04 -07:00
Paul Davis
0b52ea7a9c add a bit of debugging to JACK transport code 2019-11-15 16:06:04 -07:00
Paul Davis
302fe227b8 fix resampling ratio when stopped (corner case - not typically called) 2019-11-15 16:06:04 -07:00
Paul Davis
ec2ba35997 move DiskReader::inc_no_disk_output() into .cc to allow for easier debugging 2019-11-15 16:04:58 -07:00
Paul Davis
16c571c9b6 fix crash with -D slave caused by too-early use of a transport master's _port member 2019-11-15 16:04:58 -07:00
Paul Davis
8a847dbf34 fix oddly damaged code (vs. 5.x) for EngineSlave core methods (JACK transport) 2019-11-15 16:04:58 -07:00
Paul Davis
c69227fd8d eliminate hacky design for being able to deliver the correct time as JACK timebase master 2019-11-15 16:04:58 -07:00
Paul Davis
2f87b111e5 fix up the creation & state restore of the TransportMasterManager 2019-11-15 16:04:58 -07:00
Robin Gareus
3c446a5275
Fix cycle-end position when not rolling
When stopped start_sample == end_sample.
This fixes accidental automation lookup,
as well as plugin time/position information.
2019-11-14 21:50:00 +01:00
Robin Gareus
32cfed6253
Relax LV2 time-info re-transmission condition
Allow beat (quarter-note count) to drift by 1/100 beat before re-sync.
This prevents excessive re-transmissions
2019-11-14 21:37:14 +01:00
Robin Gareus
6481437f0a
LV2 extension for host's time-scale vari-speed
Ardour 6 internally always runs at speed 1.0 (or -1.0, or stopped 0.0).
There is no vari-speed that scale "BPM" or "n_sample" time progression
per cycle.

Instead Ardour 6 vari-speed mechanism transparently re-samples I/O.
So process-time is scaled only relative to wall-clock time.

From a plugin's POV this is similar to "freewheeling": The plugin
processes data as if the host plays at speed 1.0. While the host
plays this data at a different rate.

Some plugins may like to be informed about the host's actual
playback rate.

Currently this is mainly for the benefit of github.com/x42/repitch.lv2.git
2019-11-14 21:15:30 +01:00
Robin Gareus
3e99856f76
Initialize uninitialized variables
This also ensures that musical-time information is initially
transmitted to a plugin.
2019-11-14 20:03:22 +01:00
Robin Gareus
d171bbf337
Allow vari-speed slowdown down to 2% 2019-11-14 19:39:48 +01:00
Robin Gareus
4c9da04584
Amend previous commit - latch toggles only while rolling 2019-11-13 22:15:46 +01:00
Robin Gareus
dbd327e692
Automation watch toggle buttons and enforce latch 2019-11-13 22:02:07 +01:00
Robin Gareus
74f8db2def
Remove boolean automation special case
Previously setting a boolean-control to "write" and roll did not
create an automation-point.

The state was not correctly captured.
The boolean-control needed to be toggled explicitly to create
an automation point.
2019-11-13 17:21:51 +01:00
Robin Gareus
ff301419b3
Fix automation-write when locating
When locating while writing automation, begin a new write-pass,
and add a guard point at the locate target position.

NB set_in_write_pass takes 3 arguments: (write_enable, add_point, when)
the last two default to false, 0.
2019-11-13 16:57:28 +01:00
Robin Gareus
7d90ad4023
Fix bool-automation anchor
Typo sneaked in from ff2f93497...cc7de475f2
2019-11-13 16:53:46 +01:00