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
Paul Davis
b79d47b1b5
fix crash caused by storing clock modes while loading a session
...
The store would delete any existing node of the same name,
which was the node being used to set the mode in the first
place.
2019-11-08 12:40:26 -07: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
Paul Davis
eda27cc3de
move all responsibility for autostart into StartupFSM and out of engine dialog
2019-11-06 17:35:30 -07:00
Paul Davis
88c4158c03
remove unused API
2019-11-06 17:05:07 -07:00
Paul Davis
f13c8f3d07
implement intended auto-start logic for startupFSM
2019-11-06 16:51:03 -07:00
Paul Davis
d7b6d6e2c4
if user uses Ctrl/Cmd-w to close a dialog during startup, treat that as a request to exit
2019-11-06 16:32:46 -07:00
Paul Davis
6f4e838a58
add a signal to Gtkmm2ext::Keyboard to allow (possible) handling of close-current-dialog
2019-11-06 16:25:30 -07:00
Paul Davis
febaa1ff2d
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 16:00:31 -07:00
Robin Gareus
9694f89966
Use strict-i/o on master-bus by default
...
This precludes issues with multi-out-plugins adding an excessive
number of ports and changing master-panning.
2019-11-06 20:05:50 +01:00
Len Ovens
7dd7488872
Session should not be accessed when not there.
2019-11-06 08:30:11 -08:00
Paul Davis
f61f938503
remove debug message
2019-11-06 09:28:23 -07:00
Paul Davis
24252b92c6
move at-exit messages about pool utilization to DEBUG_TRACE
2019-11-06 09:27:49 -07:00
Paul Davis
d5cfc898e4
resolved notes need to use cycle-relative time
2019-11-06 09:07:12 -07:00
Paul Davis
cd7fc3711a
be sure to move effective_start while loop-reading MIDI
2019-11-06 09:03:55 -07:00
Paul Davis
cc741bdea5
fix DiskReader::get_midi_playback() when looping
...
Although at the Session level we never run "through" the loop end,
latency compensation means that that start/end sample values passed to
Processor::run() may cross the loop end. Fix how we handle this so
that we do not read data from after the end of the loop
2019-11-06 08:58:09 -07:00
Paul Davis
0bb34edec0
improve comment about warning message
2019-11-06 08:56:50 -07:00
Paul Davis
7d67789a3f
fix a bad transition in the transportFSM.
2019-11-04 14:35:18 -07:00
Paul Davis
62c4e88a9d
avoid use of Port::port_offset() everywhere except Port::flush_buffers() and Port::get_buffer()
...
Split cycles are run as if they are an entire self-contained cycle, starting at zero and running for "nframes".
We adjust the timing and position of data only when retrieving and writing it to Port buffers.
2019-11-04 12:57:19 -07:00
Paul Davis
47672fceec
rename method argument to better reflect its intended role
2019-11-04 12:52:34 -07:00
Paul Davis
fd198c373c
when resolving notes for a locate, use zero as the timestamp, not the current Port::port_offset()
...
All _immediate_events data gets written to the output buffer at the end of the current (split) cycle anyway, so the
timestamp is irrelevant (as long as it is zero, and will therefore be read by ::snapshot_out_of_band_data()
2019-11-03 11:02:10 -07:00
Robin Gareus
5ec9e0fa5e
Virtual-keyboard: momentary pedal (no toggle)
2019-11-03 17:50:25 +01:00
Paul Davis
4a99efe588
another notable cleanup/simplification of DiskReader's MIDI handling
...
Note that we resolve notes from the tracker directly into the output buffer. This happens
after an edit causes a buffer overwrite
2019-11-03 09:20:50 -07:00
Paul Davis
a7487bd040
comment fix
2019-11-03 09:20:00 -07:00
Paul Davis
90983d21d3
immediate events time reference for zero is the start of the run() cycle, not absolute sample time
2019-11-03 07:58:35 -07:00
Robin Gareus
2fde6a5777
Correctly flush MIDI buffers on cycle-split
2019-11-03 15:19:37 +01:00
Robin Gareus
98224a264e
Clarify MIDI-port event-timestamp debug-message
2019-11-03 15:19:37 +01:00
Robin Gareus
e371e8a51a
Fix timecode generation after split-cycles
2019-11-03 15:19:37 +01:00
John Emmas
b412ca7215
Add/remove source(s) in our MSVC project (libardour)
2019-11-03 13:46:30 +00:00
John Emmas
c7bdc38c95
Accommodate some recently moved/renamed folders and source files (libevoral)
2019-11-03 13:46:29 +00:00
Robin Gareus
01f65f557f
Fix build -- 'printf' was not declared in this scope
2019-11-03 14:15:11 +01:00
Robin Gareus
ba8e5aea56
Fix compiler warning
2019-11-03 04:14:52 +01:00
Paul Davis
f9131d24d3
for now, show how long MIDI rendering takes
2019-11-02 19:38:01 -06:00
Paul Davis
9a6350b9c9
use playback filter when rendering MIDI; respond to changes in filter by re-rendering
2019-11-02 19:38:01 -06:00
Robin Gareus
ee67d2d749
Auto-connect input should not disconnect other ports
...
This fixes an issue with existing MIDI routing between MIDI tracks
and/or busses. Automatic MIDI connections should only dis/re-connect
ports that are explicitly configured in Preferences > MIDI Ports
and leave all other connections alone.
2019-11-03 00:28:53 +01:00
Robin Gareus
db08810164
Virtual-keyboard: "Tab" to sustain (still undocumented)
2019-11-02 23:56:40 +01:00
Paul Davis
7b25a89944
part 1 of replicating semantics of ARDOUR_UI::toggle_roll() in BasicUI::toggle_roll()
...
This can be done better, even without sharing code
2019-11-02 16:32:18 -06:00
Paul Davis
3e443bc237
improve operation of ARDOUR_UI::toggle_roll() for loop mode (particularly when loop-is-mode)
2019-11-02 16:32:18 -06:00
Paul Davis
5025b939c6
comment update
2019-11-02 16:32:18 -06:00
Paul Davis
003fed93bf
use new API to make locate happen
2019-11-02 16:32:18 -06:00
Paul Davis
abf5f2bae0
don't locate when enabling loop if loop-is-mode
2019-11-02 16:32:18 -06:00