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
Robin Gareus
de02201056
Add API to query if a given MIDNAM is plugin-provided
2019-11-12 06:28:02 +01:00
Robin Gareus
4a5c9c759b
Only retain control-port connections
...
When MIDI input follows selection, ports that provide music-data
should be disconnected, even if they *also* provide control-data
2019-11-11 23:37:11 +01:00
Christopher Arndt
8fe978a8e5
Log warning if host does not support midnam/bankpatch extensions
...
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
2019-11-10 00:49:18 +01:00
Christopher Arndt
d6ed5c2080
Fix segfault: don't try to use midnam:update extension if host doesn't support it
...
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
2019-11-10 00:47:57 +01:00
Robin Gareus
b157e1a09a
Remove invalid error message
...
This clause is in NO_VFORK, vfork_exec_wrapper is irrelevant there
2019-11-09 06:30:46 +01:00
Robin Gareus
a8a699133e
Fix child-process communication (video monitor in particular)
...
103ef2ba08 introduced an API to write raw data (const void*)
to a child process, along with the previous API to
write (std::string const&)
VideoMonitor uses write_to_stdin("fixed text"), and g++
interprets this to use the (const void*) API instead
of the std::string, which breaks communication.
2019-11-09 06:28:55 +01:00
Robin Gareus
9b0ffbfb94
Fix Metronome: use loop-range only when looping
2019-11-08 22:49:46 +01:00
Robin Gareus
5daa0fca7c
Fix tempo-grid calculation: prevent duplicate events, enforce range
2019-11-08 22:49:23 +01:00
Robin Gareus
240e3e8dc0
Fix uninitialized value
...
ARDOUR::LV2Plugin::init -> lilv_state_restore () -> set_port_value ()
compares new against current value
2019-11-08 21:01:28 +01:00
Robin Gareus
bd90499532
Ignore latency of inactive routes
2019-11-08 17:50:26 +01:00
Robin Gareus
41ad43fa5f
Remove unused signal
2019-11-08 17:50:23 +01:00
Robin Gareus
181bc74ae2
Click: pre-allocate memory for grid-point lookup
2019-11-08 17:50:19 +01:00
Robin Gareus
804f9c9bde
Fix metronome when looping
2019-11-08 17:50:16 +01:00
Robin Gareus
08fdb98262
Fix loop/pre-roll
...
Pre-roll to fill buffers only needs to be done once when starting
to play or when locating.
Seamless looping just continues. Every processor takes the loop
position into account locally.
2019-11-08 17:50:13 +01:00
Paul Davis
f37758ffb7
remove stacktrace
2019-11-06 23:55:46 -07:00
Paul Davis
dad47e445c
remove debug output
2019-11-06 23:54:47 -07:00
Paul Davis
f04ee50375
do not transition "back" to Rolling by calling start_transport() if a locate was for loop-end
...
We never stopped the transport, so there's no reason to start it again. Doing so causes alignment problems
because all tracks have their ::run() ranges reinitialized
2019-11-06 23:54:34 -07:00
Paul Davis
625b8297ea
fix unconditional note resolution during DiskReader::realtime_locate()
...
When looping, we do not want to resolve notes at the end of the loop via ::realtime_locate() -
::get_midi_playback() has already taken care of this. But when not looping, we need this. So,
add an argument to tell all interested parties whether the locate is for a loop end or not
2019-11-06 22:12:40 -07:00