d0dcca1093
Fix Pan automation when using "Touch"
...
Pan->touching was left uninitialized, and usually non-zero.
So pan automation was assumed to be currently touched,
and hence never interpolated.
2019-12-08 23:52:48 +01:00
John Emmas
09d34abaa9
MSVC project changes needed to support the new 'mp3 import' stuff
2019-12-08 15:04:02 +00:00
John Emmas
e510a8555d
Minor changes needed to make the 'mp3 import' sources build with MSVC
...
(MSVC project changes to follow...)
2019-12-08 15:01:59 +00:00
7253f304e2
Add support for LV2 state:freePath feature
...
This fixes a memory-leak issue for Windows builds.
see also https://github.com/drobilla/lilv/issues/14
2019-12-08 15:22:00 +01:00
dca3f7dd97
NO-OP: whitespace
2019-12-08 15:20:53 +01:00
dec355e83d
fix behavior when pressing l to loop (not in loop-is-mode) and the required stop-during locate cancels looping
2019-12-07 10:30:38 -07:00
238cc8ed5f
functional double buffering when using DiskReader::overwrite_existing_buffers
2019-12-07 10:30:38 -07:00
1008ac20ff
a few parameter changes, and flesh out code to switch rbufs in DiskReader
2019-12-07 10:30:38 -07:00
8d05f6d4b7
initial conversion to double buffering inside DiskReader
...
Second buffer is not used (or allocated) yet.
2019-12-07 10:30:38 -07:00
386f69ae32
Fix 64bit OSX/MacOS builds
2019-12-07 15:46:20 +01:00
642bfc4c9a
Do not allow to embed ogg/vorbis files, require import
2019-12-07 15:38:55 +01:00
c7c40f6f3d
Remove #ifdef'ed format-specific error-log messages
...
With inclusion of Mp3FileSource, this would get tricky.
On MacOS, the SndFileSource's sf_error_str message is never displayed,
anyway, also calling methods all handle failed-constructor.
So error-log is less important.
2019-12-07 15:38:53 +01:00
9040fd4670
Flatten nested try/catch clauses
...
This also consistently throws a failed_constructor() when instantiating
a CoreAudioSource fails, regardless of the actual exception
2019-12-07 15:38:48 +01:00
78337c9a7e
Remove unused API, reduce sndfile/coreaudio specialization
2019-12-07 11:32:07 +01:00
052f3a6836
Speed up seeking in mp3s
2019-12-06 23:13:20 +01:00
9aa887fa65
Fix issues with VBR mp3s, detect duration by decoding
2019-12-06 21:53:03 +01:00
0700cb8165
Clear TransportAbort flag after stop
...
This fixes an issue with unresponsive transport controls after
an abort (e.g. post-export).
2019-12-06 21:28:48 +01:00
a664a50ab7
Fix Windows build
2019-12-06 20:22:00 +01:00
d73734af78
Mark .mp2 and .mp3 as valid file-extensions
2019-12-06 18:30:53 +01:00
d0b6c437ce
Implement mp3 import, using minimp3
2019-12-06 18:18:54 +01:00
bef74c267e
Add "seekable" SoundFile info (in prep for mp3 import)
2019-12-06 18:18:18 +01:00
227de8c1b0
Flatten nested try/catch clauses
...
This also consistently throws a failed_constructor() when instantiating
SoundFile fails, regardless of the actual exception
2019-12-06 18:16:10 +01:00
6d99e1b162
VKeybd: Set default MIDI port flags
2019-12-05 23:40:29 +01:00
9eac4936dc
remove mistakenly left in session event enum
2019-12-05 13:13:16 -07:00
8b4e714006
changes to use overwrite-buffers when loop is disabled or loop range changed
2019-12-05 13:13:16 -07:00
551702b9e9
Fix for-loop condition (comma has no effect)
2019-12-05 18:23:49 +01:00
7d94e1e1f9
Fix well-known control LPF/HPF order.
2019-12-05 16:43:20 +01:00
fa6a21f94e
Ardour 6.0 Alpha - Enterprise Edition
...
Its 5 year mission
To explore strange new sounds
To seek out new bugs and new users
To boldly go where no Ardour session has gone before
2019-12-04 23:07:42 +01:00
d8c63568a5
Clear AudioEngine Error at app start
2019-12-04 19:02:16 +01:00
1f73668756
New approach for Lua bindings to avoid LuaBridge_API in GUI code
...
Declare DoubleArray in GUI context so that runtime uses the symbol
from the .exe (not the .dll).
This is mainly for the benefit of MSVC, that does not allow to use
LuaBridge_API in .exe
2019-12-03 17:55:37 +01:00
d3ca91a0b4
Libardour part of 1caef18
(Windows Lua bindings)
2019-12-03 02:29:37 +01:00
e3544db3aa
Amend previous commit, fluidsynth tables
2019-12-03 00:23:54 +01:00
d425f6dcb5
Update to fluidsynth-2.1
...
see https://github.com/FluidSynth/fluidsynth/releases/tag/v2.1.0
- new, less "ringing" reverb engine
- new, stereophonic chorus engine
- improved integrity checking of SoundFont modulators
...
2019-12-03 00:01:10 +01:00
5e1a73a28c
Add Lua typecast from C++ vector to C-Array
...
This is useful for MIDI bytes amongst other things
2019-12-01 21:32:10 +01:00
Stefan Westerfeld
be1012d64e
Fix thread-safety issue in a-fluidsynth.
...
This fix ensures that the a-fluidsynth "synth" object is not used in two
threads at the same time during midi event handling (run() in RT thread vs.
load_sf2() in worker thread), which could result in crashes.
2019-11-26 17:09:11 +01:00
c10df23a0f
fix crash when using Region > Loop
2019-11-24 11:33:25 -07:00
9a8ca01cb0
remove debug output
2019-11-23 15:54:34 -07:00
f561cc6dc2
remove debug output
2019-11-23 15:54:21 -07:00
e75182b418
tweak comment text
2019-11-23 15:54:09 -07:00
205bfb9416
2nd part of fix for autoloop event removal when loop bounds are changed while looping
2019-11-23 15:53:54 -07:00
bcd47ebffb
remove debug message about LOCATE WITHOUT DECLICK. This behavior is normal and legal when looping
2019-11-23 15:52:49 -07:00
d39f19f559
fix incorrect removal of autoloop event when loop bounds are changed while looping
2019-11-23 15:52:05 -07:00
dbf06eb2cf
fix locate-while-rolling
2019-11-23 15:51:30 -07:00
8972f69e68
fix startup crash if no loop range is defined
2019-11-23 13:37:00 -07:00
d04c9b3244
more tweaks to correctly (or more correctly) reload disk reader buffers when loop fade choice changes
2019-11-23 00:09:46 -07:00
1a2665e25f
redesign of declicking and fades around loop boundaries
2019-11-22 23:41:56 -07:00
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
c2d44c0f05
Add support for LV2/KX transient-ID option
2019-11-22 20:01:32 +01:00
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
d4ecfc7d85
Use new boost::optional API
...
get_value_or() has been deprecated since boost 1.56
2019-11-21 17:48:56 +01:00
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
7fec401b8d
Fix declick offset position for multi-channel tracks
2019-11-19 16:20:28 +01:00
4534af0a4c
DiskReader::_declick_offs should only advance once per ::run() call
2019-11-18 21:45:39 -07:00
9b92084ed6
DiskReader::_declick_amp needs to repeat the same work for each audio channel handled
2019-11-18 21:45:39 -07:00
530a4393dc
fix transport FSM to stop first and declick later
2019-11-18 21:45:39 -07:00
5048b86d5d
small changes to make declick out triggered by just stopping
2019-11-18 21:45:39 -07:00
c07db6d655
unset _reversed whenever RTMidiBuffer gets ::clear()'ed
2019-11-18 15:38:18 -07:00
75cb57194e
add missing NULL check
2019-11-18 13:07:40 -07:00
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
a8d62ce056
use reverse-reading of MIDI data in DiskReader
2019-11-18 12:01:43 -07:00
725a6fc67f
support backwards reading of MIDI from RTMidiBuffer
2019-11-18 12:01:43 -07:00
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
3cf888498a
Fix automation lookup when rolling backwards
2019-11-18 15:55:32 +01:00
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
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
8e8249b595
remove debug output
2019-11-15 20:42:15 -07:00
bd509bba49
fix questionable and not entirely intended change that was a part of dad47e445c
2019-11-15 20:40:23 -07:00
1c7e446cb4
better transport master behavior when working with sample-clock-synced transport masters
2019-11-15 16:06:04 -07:00
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
098bce1ece
improve initial coordinate with JACK transport state
2019-11-15 16:06:04 -07:00
3d74af6c1f
better debugging message
2019-11-15 16:06:04 -07:00
a7613eb191
consolidate setting of "get roll after locate" in TFSM
2019-11-15 16:06:04 -07:00
4c688fe7f9
NO-OP: move brace
2019-11-15 16:06:04 -07:00
8f71b6430b
when synced to JACK transport, transport requests go there first.
2019-11-15 16:06:04 -07:00
df4a30b1a0
fix behavior of Session::maybe_stop() when synced to JACK Transport
2019-11-15 16:06:04 -07:00
ba4e7015de
make comment more accurate
2019-11-15 16:06:04 -07:00
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
7199b657ba
no need for MidiClockTransportMaster::starting() method
2019-11-15 16:06:04 -07:00
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
0b52ea7a9c
add a bit of debugging to JACK transport code
2019-11-15 16:06:04 -07:00
302fe227b8
fix resampling ratio when stopped (corner case - not typically called)
2019-11-15 16:06:04 -07:00
ec2ba35997
move DiskReader::inc_no_disk_output() into .cc to allow for easier debugging
2019-11-15 16:04:58 -07:00
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
8a847dbf34
fix oddly damaged code (vs. 5.x) for EngineSlave core methods (JACK transport)
2019-11-15 16:04:58 -07:00
c69227fd8d
eliminate hacky design for being able to deliver the correct time as JACK timebase master
2019-11-15 16:04:58 -07:00
2f87b111e5
fix up the creation & state restore of the TransportMasterManager
2019-11-15 16:04:58 -07:00
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
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
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
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
d171bbf337
Allow vari-speed slowdown down to 2%
2019-11-14 19:39:48 +01:00
4c9da04584
Amend previous commit - latch toggles only while rolling
2019-11-13 22:15:46 +01:00
dbd327e692
Automation watch toggle buttons and enforce latch
2019-11-13 22:02:07 +01:00
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
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
7d90ad4023
Fix bool-automation anchor
...
Typo sneaked in from ff2f93497...cc7de475f2
2019-11-13 16:53:46 +01:00
de02201056
Add API to query if a given MIDNAM is plugin-provided
2019-11-12 06:28:02 +01:00
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
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
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
9b0ffbfb94
Fix Metronome: use loop-range only when looping
2019-11-08 22:49:46 +01:00
5daa0fca7c
Fix tempo-grid calculation: prevent duplicate events, enforce range
2019-11-08 22:49:23 +01:00
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
bd90499532
Ignore latency of inactive routes
2019-11-08 17:50:26 +01:00
41ad43fa5f
Remove unused signal
2019-11-08 17:50:23 +01:00
181bc74ae2
Click: pre-allocate memory for grid-point lookup
2019-11-08 17:50:19 +01:00
804f9c9bde
Fix metronome when looping
2019-11-08 17:50:16 +01:00
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
f37758ffb7
remove stacktrace
2019-11-06 23:55:46 -07:00
dad47e445c
remove debug output
2019-11-06 23:54:47 -07:00
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
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
6f4e838a58
add a signal to Gtkmm2ext::Keyboard to allow (possible) handling of close-current-dialog
2019-11-06 16:25:30 -07:00
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
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
f61f938503
remove debug message
2019-11-06 09:28:23 -07:00
24252b92c6
move at-exit messages about pool utilization to DEBUG_TRACE
2019-11-06 09:27:49 -07:00
d5cfc898e4
resolved notes need to use cycle-relative time
2019-11-06 09:07:12 -07:00
cd7fc3711a
be sure to move effective_start while loop-reading MIDI
2019-11-06 09:03:55 -07:00
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
0bb34edec0
improve comment about warning message
2019-11-06 08:56:50 -07:00
7d67789a3f
fix a bad transition in the transportFSM.
2019-11-04 14:35:18 -07:00
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
47672fceec
rename method argument to better reflect its intended role
2019-11-04 12:52:34 -07:00
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
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
a7487bd040
comment fix
2019-11-03 09:20:00 -07:00
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
2fde6a5777
Correctly flush MIDI buffers on cycle-split
2019-11-03 15:19:37 +01:00
98224a264e
Clarify MIDI-port event-timestamp debug-message
2019-11-03 15:19:37 +01:00
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
01f65f557f
Fix build -- 'printf' was not declared in this scope
2019-11-03 14:15:11 +01:00
ba8e5aea56
Fix compiler warning
2019-11-03 04:14:52 +01:00
f9131d24d3
for now, show how long MIDI rendering takes
2019-11-02 19:38:01 -06:00
9a6350b9c9
use playback filter when rendering MIDI; respond to changes in filter by re-rendering
2019-11-02 19:38:01 -06:00
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
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
5025b939c6
comment update
2019-11-02 16:32:18 -06:00
003fed93bf
use new API to make locate happen
2019-11-02 16:32:18 -06:00
abf5f2bae0
don't locate when enabling loop if loop-is-mode
2019-11-02 16:32:18 -06:00
eee8eb1005
allow explicit "with-roll" argument to a locate to override Session::should_roll_after_locate()
2019-11-02 16:32:18 -06:00
5241cdcf03
remove unused parameter from Session::set_play_loop() API
2019-11-02 16:32:18 -06:00
31fea25005
lovely simplification of DiskReader::get_midi_playback()
...
This is made possible by knowing that it is never called upon to read across
loop boundaries. The session splits the process cycle for the end of the loop
2019-11-02 16:32:18 -06:00
cd2618246a
make it more likely that debug messages are printed without x-thread interruption
2019-11-02 16:32:18 -06:00
5e13770e1f
NOOP: newline removed
2019-11-02 16:32:18 -06:00
81b38c110a
remove unused (empty) API
2019-11-02 16:32:18 -06:00
3ec845b1ef
remove unused API
2019-11-02 16:32:18 -06:00
4d5fd1af4b
add another conditional to decide if we should merge disk MIDI data into input MIDI data
2019-11-02 16:32:18 -06:00
1a2820a886
remove commented line
2019-11-02 16:32:18 -06:00
1bbbbd62fd
helpful variable rename
2019-11-02 16:32:18 -06:00
e8a12a1a29
clarify clarifying comment
2019-11-02 16:32:18 -06:00
6e0c5483b2
remove MidiPlaylist::read() API
2019-11-02 16:32:18 -06:00
7dfae40e3b
comment out actual action in MidiPlaylistSource::read()
...
See comment and remember that we do not MidiPlaylistSource at this time.
2019-11-02 16:32:18 -06:00
17ba6d319f
use a different MidiBuffer API to move data from RT MidiBuffer into MidiBuffer during ::read()
2019-11-02 16:32:18 -06:00
eaae38ba84
move evoral/src/* to evoral/
2019-11-02 16:32:18 -06:00
a855119bdd
rename all Evoral source from .(hpp|cpp)$ to .(h|cc)
2019-11-02 16:32:18 -06:00
63b909211d
NO-OP: whitespace
2019-11-02 16:32:18 -06:00
bc706064c6
use a note tracker to resolve notes cut off during render by the end of the region
2019-11-02 16:32:18 -06:00
5d40ab22fd
remove a mistakenly left-in declaration
2019-11-02 16:32:18 -06:00
b83ef09947
various adjustments so that a MidiPlaylist gets re-rendered whenever it changes.
...
This may still be missing a few changes (i.e. they do not cause re-rendering)
2019-11-02 16:32:18 -06:00
6128d1759c
do not initiate transport stop during loading when setting capture/playback buffer sizes
2019-11-02 16:32:18 -06:00
a08012214f
add a new "contents" pseudo-property to Region
...
The type of this property doesn't matter - it only exists so that we can
signal a change to the (MIDI) contents of a Region via PropertyChanged
2019-11-02 16:32:18 -06:00
f21dd03a0f
NOOP: whitespace change
2019-11-02 16:32:18 -06:00
ff7e952942
fix thinko when dealing with non-MIDI tracks
2019-11-02 16:32:18 -06:00
c0a1aec516
start removal of NoteFixer code
...
Plan is to always read MIDI directly from rendered version. MidiPlaylistSource needs
attention before MidiPlaylist::read() can be removed
2019-11-02 16:32:18 -06:00
addebc3240
move ownership of an RT MIDI buffer from DiskIO to MidiPlaylist
2019-11-02 16:32:18 -06:00
5c0fd05c52
fix reallocation/copy sizes for direct index and blob pool
2019-11-02 16:32:18 -06:00
604fc35e16
clear RTMidiBuffer before re-rendering into it
2019-11-02 16:32:18 -06:00
0573e7cdf0
alter where note resolution happens when a re-rendering is scheduled for a MIDI track
2019-11-02 16:32:18 -06:00
2cf9ad8f8c
refactor SessionEvent and DiskIO so that we pass around boost::shared_ptr<Track> rather than Route
...
(this the raw pointers used inside SessionEvent)
2019-11-02 16:32:18 -06:00
5b92ef4353
remove unnecessary fwd decl
2019-11-02 16:32:18 -06:00
5cd9c86d58
add RAII-style write protection while rendering MIDI playlist into RTMidiBuffer
2019-11-02 16:32:18 -06:00
c55e23e7aa
change MidiPlaylist::dump() into ::render(); change type of initial argument
2019-11-02 16:32:18 -06:00
3f8fbf22e6
fix initialization order
2019-11-02 16:32:18 -06:00
73e9560eef
add extra info to output of RTMidiBuffer::dump()
2019-11-02 16:32:18 -06:00
b017f20141
correct size computation for RTMidiBuffer, and reduce expansion amount
2019-11-02 16:32:18 -06:00
08ab8fc58a
remove unused member variable
2019-11-02 16:32:18 -06:00
088e4bca5a
reimplement RTMidiBuffer using a highly optimized data structure
...
Reduces load time of Glass MIDI piece with 48k note events by about 35%. Improves data
locality. Omits size for all 3 byte or less MIDI events, uses implicit size. No limit
on size of sysex.
Relies on the fact that the data structure is always filled linearly in time, and
never modified.
2019-11-02 16:32:18 -06:00
e87e0ec028
add a MidiStateTracker to DiskReader and use to handle transport stop note resolving
2019-11-02 16:32:18 -06:00
67beff22ce
trivial cleanups
2019-11-02 16:32:18 -06:00
22da779322
introduce new all-in-RAM MIDI datastructure and use it for MIDI playback
2019-11-02 16:32:18 -06:00
e0493814ec
fix the way Session::auto_loop_changed() works to put back various things removed since 5.x
2019-11-01 21:25:20 -06:00
e4caef2c72
if a complete refill is called for, DiskReader cannot internal seek
2019-11-01 21:25:20 -06:00
6c37ab411c
last piece of seamless-loop removal
2019-11-01 15:57:50 -06:00
833927a4ea
don't send TFSM event LocateDone after a locate-for-loop-end
...
See comment for explanation
2019-11-01 15:56:06 -06:00
a072228de5
remove seamless looping as an option (it's now the only kind of looping we support)
2019-11-01 14:04:28 -06:00
fb2f1aa8e1
cut down on DEBUG::Transport noise
2019-11-01 14:04:28 -06:00
0f6ad823de
if looping, squish DiskReader::playback_sample into loop range
2019-11-01 14:04:28 -06:00
d30f2180bf
transportFSM: when locating due to end-of-loop, skip declick and do not transition states
2019-11-01 14:04:28 -06:00
a5140f4558
Handle Lua DSP script load failure (unknown plugin)
...
This handles a very specific edge-case: A script that was
successfully parsed before, fails load on session state restore.
2019-11-01 15:54:36 +01:00
7852047dca
Fix XML-writer edge-case (empty content)
2019-11-01 15:39:44 +01:00
eca27d8218
Fix MIDI Timestretch
...
* skip notes outside of region-range (source-start, region-length)
* handle tempo-ramps properly, apply map to stretch-fraction
* fix region properties after stretching
(position needs to be re-set first, to set a midi-region's
quarter-note position, which is used by the length calc)
2019-11-01 05:40:30 +01:00
3cae11936f
Highlight the currently selected item in ArdourDropdown & co
2019-10-31 14:38:26 +01:00
016db85fa1
Workaround a GTKMenu bug in ArdourDropdown & co.
2019-10-31 14:21:57 +01:00
07458155a2
Work around an initialization bug of GTK menus
2019-10-31 11:34:36 +01:00
eaba4fa593
Update |offset| instead of changing the formula
...
So that the test to see if it fits also takes the new offset into
account.
2019-10-31 10:42:37 +01:00
fb9203998b
Align vertical centers of widget and active menuitem
2019-10-31 10:29:43 +01:00
7d48b20652
Fix a thinko in x position of menu popups
...
This has lasted without being noticed because menus that big are not
common.
2019-10-31 10:29:43 +01:00
5e4d641488
NO-OP: whitespace
2019-10-31 00:22:26 +01:00
98db30efb1
Declare helper function static (don't export)
2019-10-31 00:22:12 +01:00
3a16b89219
Try harder to put the active item under the mouse (ArdourDropdown)
2019-10-30 23:56:36 +01:00
27a3b93152
Update latency-compensation when re-ordering processors
...
When re-ordering processors, the route's own latency does not
change (at first).
But it might if sends or plugins with side-chains a involved.
2019-10-30 23:51:53 +01:00
e2f5ce6f61
NO-OP: whitespace/comments
2019-10-30 23:45:27 +01:00
0711c87bfa
missing part of working looping
2019-10-29 16:20:04 -06:00
2b2b003d50
get looping to work again
2019-10-29 16:20:04 -06:00
c368c26519
fix handling of deferred events in transportFSM
...
tfsm events live on intrusive lists, with only 1 hook, which means they
can only be on one list at a time, and cannot be deleted while part of
the list. This wasn't being addressed properly when deferring (and
undeferring) events.
2019-10-29 16:20:04 -06:00
78cf0e5235
Customize Lua GC, add object-memory-lock API.
...
Add custom API to prevent Lua Objects from being garbage collected.
This is intended to for Ardour LuaBridge bindings (~1MB Objects:
tables, functions and userdata).
The bindings are persistent and the gc can skip them in mark & sweep
phases. This is a significant performance improvement for garbage
collection.
Note. The next version of Lua (5.4) will come with a generational-gc
rather than an incremental, so extending the API at this point in time
is acceptable.
2019-10-29 05:45:43 +01:00
130211a4bd
Update Lua to upstream 5.3.5
2019-10-29 05:36:24 +01:00
814272bbac
improve debug output
2019-10-28 17:34:38 -06:00
594f344cca
fix thinko
2019-10-28 17:34:23 -06:00
e2bb59a3e3
limit waveview render threads to 8
2019-10-28 17:24:21 -06:00
7d3c2a4fee
provide a mechanism to decide if Session::update_latency_compensation() is being called as part of a callback from the backend.
...
If it is, do not call AudioEngine::update_latencies() to avoid JACK1-style deadlock
2019-10-28 17:23:54 -06:00
706a9ab59f
fix mistakenly-placed semi-colon
2019-10-28 17:21:46 -06:00
b97e2d5013
to avoid deadlock in JACK1 scenarios, do not invoke AudioEngine::update_latencies() from update_latency_compensation() if called from a process thread
2019-10-28 16:55:29 -06:00
6b654039fb
better comments
2019-10-28 16:53:00 -06:00
43eb64d23b
add new debug bit (DebugTimestamps) that adds timestamps to all debug messages
2019-10-28 16:52:18 -06:00
4073e7573d
add DEBUG_TRACE for all (?) backend callbacks
2019-10-28 16:07:38 -06:00
5704f1ca9e
sort debug bits in libardour alphabetically
2019-10-28 15:55:01 -06:00
b4addf5297
add new debug bit for backend callbacks
2019-10-28 15:54:18 -06:00
fe56c5931c
do not hold a lock when calling AudioEngine::update_latencies() from Session::update_latency_compensation().
...
Only when using JACK1 is ::update_latencies() a synchronous call (ending up in Session::update_latency() which tries to take the
same lock). But the semantics of ::update_latencies() are sufficiently ill-defined that entering that call with a lock held
seems like a bad idea, so we release the lock unconditionally here.
2019-10-28 13:40:18 -06:00
8befc818eb
add explanatory comment
2019-10-28 13:40:18 -06:00
7f1134e550
move reset (deletion) of click_io and ltc_output objects until after we are disconnected from the engine
...
We use those objects unconditionally and without caching inside process(), which could be invoked by the engine during their
deletion
2019-10-28 13:40:18 -06:00
Rui Nuno Capela
bd46b2df8e
Fixup prev commit (LV2 X11 UI) -- #7837
2019-10-28 17:31:03 +01:00
e4601e54e9
Improve 1477bca76
, ensure suil supports x11-in-gtk2
2019-10-28 17:24:54 +01:00
1477bca76e
Skip X11 LV2UI check on Windows and MacOS
2019-10-28 16:14:30 +01:00
86337810fe
NO-OP: whitespace and comments
2019-10-28 16:14:24 +01:00
Rui Nuno Capela
760a7fda81
Prefer X11 Plugin UIs
...
Let LV2 Plugin UI support (via SUIL) prefer and select a X11 UI whenever
multiple UI type options are provided by LV2 plugins (eg. Vee-One's do
present several but their native Qt5UI should never be raised by Ardour,
on any chance:)).
Signed-off-by: Rui Nuno Capela <rncbc@rncbc.or
2019-10-28 16:00:48 +01:00
1d20feef83
make transport work after rewind/ffwd are used
2019-10-27 11:17:49 -06:00
c398576e4a
Fix latency compensation race-condition
...
Remove need for explicit `initialize_latencies` call that used
to be called from GUI-thread post_engine_init(), as well as
Session::engine_running().
Further reduce calls, `graph_reordered` implies a latency-update
and fix ordering issue. update_latency_compensation() must be called
*after* resort_routes().
2019-10-26 01:06:04 +02:00
64af49f6c3
non-GUI startup should only use plugin cache and not discover new ones
2019-10-24 21:32:46 -06:00
362956dd7c
do not scan (discover) (new) plugins when running without a GUI
2019-10-24 21:32:46 -06:00
58e8fb7aab
alter ARDOUR::init() API to specify whether a GUI is in control or not
2019-10-24 21:32:46 -06:00
7060ba4c1d
Fix strict-i/o override on session-load (amend 31847f88ef)
...
Plugins may override strict-i/o, and in order to know do this
the plugin needs to be instantiate first.
2019-10-23 01:36:33 +02:00
496e6f2a4c
New implementation for single-fader mackie devices (reverts b96d8e)
2019-10-22 14:39:38 -05:00
08a9368adf
Allow calling Dropdown::set_active from a signal handler
...
This breaks a potential recursion when set_active() is called
from activate_item(). See also 88fc22610
2019-10-21 14:58:59 +02:00
b96d8e7ffa
Add support for single-fader MCU devices: XTouch One and RuCo. (needs testing)
2019-10-20 22:24:32 -05:00
88fc226107
Add API to set select item from ArdourDropdown
...
This fixes an issue with scroll-wheel control which uses `get_active()`.
It work around an issue with gtkmm:
const MenuItem* get_active () const
void set_active (guint index)
and MenuList::activate_item() not emitting activate_item().
2019-10-20 21:21:57 +02:00
699a47cc65
Fix typo in bc363f1258
2019-10-19 02:15:13 +02:00
bc363f1258
Special case "Virtual Keyboard" to be available as external input
2019-10-18 23:40:40 +02:00
c4d7870c68
Allow to translate "Virtual Keyboard"
...
reserved_io_names[] already uses a translatable string for this.
2019-10-18 23:40:23 +02:00
eade673771
Expose virtual-keyboard port as async-port
2019-10-18 22:56:46 +02:00
f961fd4687
Add Virtual-Keyboard MIDI port
2019-10-18 03:42:41 +02:00
f4ebb5995d
NO-OP: indent, tabs/whitespace fixes
2019-10-18 03:41:45 +02:00
b4cbee724e
Fix a rare EventList race-condition/crash
...
The GUI thread may modify fade-in/out while the butler-thread
reads audio.
e.g. select a Range and click delete.
---
Thread 0:: Dispatch queue: com.apple.main-thread
0 libsystem_pthread.dylib 0x00007fffd45924fc pthread_mutex_lock + 0
1 libglib-2.0.0.dylib 0x00000001085a9d2a g_mutex_lock + 26
2 libevoral.dylib 0x0000000107fd0a49 PBD::Signal0<void, PBD::OptionalLastValue<void> >::operator()() + 57
3 libevoral.dylib 0x0000000107fd486d Evoral::ControlList::clear() + 253
4 libardour.dylib 0x00000001072ef9a5 ARDOUR::AudioRegion::set_fade_out(ARDOUR::FadeShape, long long) + 309
5 libardour.dylib 0x00000001072f19ea ARDOUR::AudioRegion::recompute_at_end() + 122
6 libpbd.dylib 0x00000001082993ff PBD::Stateful::resume_property_changes() + 191
7 libardour.dylib 0x00000001076476af ARDOUR::Playlist::cut(long long, long long, bool) + 575
8 libardour.dylib 0x0000000107646b5b ARDOUR::Playlist::cut_copy(boost::shared_ptr<ARDOUR::Playlist> (ARDOUR::Playlist::*)(long long, long long, bool), std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 187
9 libardour.dylib 0x0000000107647461 ARDOUR::Playlist::cut(std::__1::list<ARDOUR::AudioRange, std::__1::allocator<ARDOUR::AudioRange> >&, bool) + 33
10 Ardour.bin 0x00000001065f0fa0 RouteTimeAxisView::cut_copy_clear(Selection&, Editing::CutCopyOp) + 592
11 Ardour.bin 0x0000000106118a94 Editor::cut_copy_ranges(Editing::CutCopyOp) + 164
12 Ardour.bin 0x0000000106116053 Editor::cut_copy(Editing::CutCopyOp) + 1587
Thread 20 Crashed:
0 libardour.dylib 0x00000001072f4b19 ARDOUR::AudioRegion::body_range() const + 89
1 libardour.dylib 0x00000001072bd318 ARDOUR::AudioPlaylist::read(float*, float*, float*, long long, long long, unsigned int) + 1176
2 libardour.dylib 0x00000001072ac236 ARDOUR::AudioDiskstream::read(float*, float*, float*, long long&, long long, int, bool) + 854
3 libardour.dylib 0x00000001072abbb8 ARDOUR::AudioDiskstream::overwrite_existing_buffers() + 392
4 libardour.dylib 0x00000001077ef36a ARDOUR::Session::non_realtime_overwrite(int, bool&) + 186
5 libardour.dylib 0x00000001077ed7f0 ARDOUR::Session::butler_transport_work() + 1696
6 libardour.dylib 0x0000000107323425 ARDOUR::Butler::thread_work() + 149
7 libardour.dylib 0x000000010732334f ARDOUR::Butler::_thread_work(void*) + 95
2019-10-18 01:41:18 +02:00
88f9aaff7d
Add API to safely query timestamp of first/last control event
...
Direct calls to back()->when or front()->when are not safe
when the list is concurrently modified, or empty.
2019-10-18 01:37:56 +02:00
3ff1541825
Fix export w/o session-range (typo in 468731c14b
)
2019-10-15 23:17:48 +02:00
9fa7e919a7
Improve multi-channel instrument listing
2019-10-15 16:02:47 +02:00
32a97d242e
Fix typos in AU channel-count calc
2019-10-15 15:24:50 +02:00
bcd1391bf7
API to count max multi-channel plugin outputs
2019-10-15 14:48:32 +02:00
0b377fc393
Detect plugin-name ambiguities
2019-10-15 14:04:26 +02:00
7e5120e7c9
NO-OP: indent, comments and consistency
2019-10-15 12:26:14 +02:00
7fb259ece2
Fix fan-out channel-assignment
2019-10-13 23:12:38 +02:00
52eea55988
Remove unused API declaration (removed in 789f08891b
)
2019-10-13 04:12:02 +02:00
bfb998ca0a
remove Session::AudioMidiSetupRequired signal (no longer necessary)
2019-10-12 12:45:13 -06:00
789f08891b
remove responsibility for starting AudioEngine from Session
2019-10-11 10:25:32 -06:00
3294f193fd
make error message very slightly more indicative of what might be happening when audioengine backend fails to start
2019-10-10 16:52:00 -06:00
af82a06517
make BusProfile argument to new Session constructor be const (and in associated call tree)
2019-10-10 16:52:00 -06:00
dd29e9b0e9
remove unnecessary template methods (replicated in libs/gtkmm2ext/doi.h
2019-10-10 16:52:00 -06:00
2c33d31bbb
NO-OP: whitespace
2019-10-10 23:59:05 +02:00
42df310c6f
Add "List/Browse" vector icon
2019-10-10 23:58:49 +02:00
95676a5f66
add constructor
2019-10-07 20:50:08 -06:00
c663a2d8ef
Invert Pan-Azimuth (up means left)
...
It's a well established convention that pan y-axis automation,
or vertical uses (top) +1 for left.
This special cases rotary knobs (and horizontal sliders) to retain
a clockwise movement (or movement to the right) for panning to the
right.
2019-10-07 05:07:55 +02:00
f470d3e856
remove all use of NO_PLUGIN_STATE #ifdef
...
We determined several years that we should never ever do this,
and changed the basis for the free/demo copy because of that.
2019-10-02 18:04:40 -06:00
bc3b658349
Prefer portable (MSVC?) getenv (amend 5ea54be
)
2019-10-02 23:14:58 +02:00
5ea54beff1
Allow ARDOUR_AVG_DSP_LOAD for non-debug builds
2019-10-02 22:55:55 +02:00
27f6754f1a
Amend 903c3ec5a
API rename
2019-10-02 21:28:13 +02:00
a7cb2055ec
Plugin type lookup does not change PI
2019-10-02 19:35:03 +02:00
539b61f127
Remove unused API (and some MIXBUS specifics)
2019-10-02 19:29:52 +02:00
e99fe62137
Optimize default case: no delay
2019-10-02 01:54:08 +02:00
ec2628f2ca
Fix thinko in cd5f70e69a
(delayline buffer resize)
...
The delay-time itself can change arbitrarily, but the buffer-size
never shrinks.
If the buffersize grows it means that the new delay is longer than
the current one (or at least as large as any pending, not yet
active delay).
This is important for the mechanism that adjusts the read-pointer
to the new buffer-size.
2019-10-01 13:42:34 +02:00
07905f0776
Update Fluidsynth to v2.0.7
2019-09-30 23:12:32 +02:00
ecc2597870
Fix remaining doxygen warnings (!)
2019-09-30 21:03:29 +02:00
bfec73b8c3
NO-OP: whitespace, indent
2019-09-30 21:03:20 +02:00
feb5d1261e
Fix use of doxygen documented parameters in running text
2019-09-30 06:30:11 +02:00
ee54b13d6d
Fix some more doxygen warnings
2019-09-30 05:33:44 +02:00
6c83b6f47d
NO-OP: whitespace (use tab to indent)
2019-09-30 04:52:20 +02:00
959a37144b
Fix a few hundred doxygen warnings..
...
There are still over a hundred left, but this addresses many already.
In particular @param references to undocumented parameters.
Most notably in audio_backend.h
2019-09-30 04:45:59 +02:00
0daee87803
Ardour::IO is not latent by itself
2019-09-29 18:25:14 +02:00
f417bc07d0
Fix port-insert default latency
2019-09-29 18:25:14 +02:00
cd5f70e69a
Fix issues when delay-buffers are re-allocated
...
Previously buffers were dropped, and data was not copied to
newly allocated buffers. As side-effect the read-offset was not
adjusted either.
The distance between read and write-pointer needs to be maintained
(delay does not change). This needs to be accounted for, when the
buffer increases while read->write wraps around the old (smaller)
buffer. Previously this triggered an assert (in line 180)
2019-09-29 17:00:27 +02:00
1c680f116a
Emit signal when session latency was updated
2019-09-29 01:27:35 +02:00
16066786e3
Add Lua bindings related to latency compensation
2019-09-29 01:26:54 +02:00
430dae6250
Add Signal to indicate global delay compensation status
2019-09-29 01:26:52 +02:00
e1378e7be5
Handle case where an audio-port is added to a MIDI only delayline
2019-09-27 14:50:40 +02:00
903c3ec5a0
rename BufferSet::get* to BufferSet::get_available*
...
This tries to make it clear what the BufferSet limit semantics really are
2019-09-26 18:39:56 -06:00
f5f452bf9c
Don't try to process MIDI input in a DiskWriter if it has no _midi_buf
...
... which implies it has no MIDI input port(s) either.
This fixes behaviour caused by BufferSet::get...() returning a valid MidiBuffer because it was
based on using the _available count within the BufferSet, even though the _count value
indicated there was no buffer available (to match the I/O configuration of the Route).
2019-09-26 18:39:56 -06:00
55e03e5c68
Try auto-start engine by default
...
Ardour auto-connects to JACK already if jackd is running. Let
other users benefit from a similar experience.
2019-09-26 20:15:09 +02:00
5395a557d2
Another try at C++11/boost spinlock initialization
2019-09-26 02:48:17 +02:00
468731c14b
goodbye Profile->...trx
2019-09-25 13:02:31 -06:00
5ec5bc4523
goodbye USE_TRACKS_CODE_FEATURES and is_tracks_build
2019-09-25 12:16:13 -06:00
86187514d9
Some reasonable default config changes
2019-09-25 15:27:02 +02:00
99b3bde7f6
Print LADSPA ID with debug message
2019-09-25 15:16:34 +02:00
d10c4c651c
Consolidate and extend "well-known" controls:
...
* Add new common strip controls (inspired from Mixbus)
* Remove duplicate documentation, document virtual API only.
* "azimuth" not "azi"
2019-09-25 14:02:45 +02:00
09acad190b
Faderport: use well-known-controls API
2019-09-25 14:02:45 +02:00
0eebc8b894
Prepare for plugin-control groups
...
This is in preparation to allow groups of "well known" controls,
the parameter ID of which is not known a-priori.
2019-09-24 19:50:54 +02:00
c1abc6e1f1
Add/remove source(s) in our MSVC project (libardour)
2019-09-24 10:19:38 +01:00
e0069fe0f5
various changes to transportFSM, mostly to try to keep track of whether to roll-after-locate (more) accurately
2019-09-22 12:23:54 -06:00
21ba7fb844
change the way we clear post transport work as the butler and post-butler methods get things done
...
This avoids the blanket "set_post_transport_work (PostTransportWork(0));" that never really looked right
2019-09-22 12:23:54 -06:00
2a221ae21b
improve debug output
2019-09-22 12:23:54 -06:00
0b033a320d
move all bundle-related session methods into their own file
2019-09-22 12:23:54 -06:00
86b23c0f19
add direct access API for transportFSM and session transport speed
2019-09-22 12:23:54 -06:00
9f8b8d192b
remove unused PostTransportDuration and enumeration-writing for Adjust(Playback|Capture)Buffering
2019-09-22 12:23:54 -06:00
228fbd3192
correct problem with some locates that would keep rolling after they are finished
2019-09-22 12:23:54 -06:00
d7c91b5322
split session-bundled-related methods to their own file
2019-09-22 12:23:54 -06:00
ba9e6ab869
add const and tweak variable name
2019-09-22 12:23:54 -06:00
0869f63866
transport master deletion is no longer in parallel with process()
2019-09-22 12:23:54 -06:00
057ce33563
use internal seek to implement DiskReader::seek() when possible.
...
This still needs a check that the amount of readable data left in the buffe is adequate.
2019-09-22 12:23:54 -06:00
99c072660b
NO-OP: whitespace
2019-09-22 04:58:32 +02:00
0e68d3f742
Optimize Audio-buffer summing
...
* skip silent buffers
* use vectorized copy
* prefer memset for zero-gain
2019-09-22 04:54:28 +02:00
a1c48e0a80
Remove unused method
2019-09-22 04:52:26 +02:00
3ae46256c8
Properly initialize BusSendEnable min/max
2019-09-22 04:15:36 +02:00
7dc52e009f
NO-OP: cleanup code
2019-09-22 04:15:01 +02:00
e8822e76d6
Add abstract API for latency compensated sends
...
This is in preparation for MixbusSends that are not derived from
Delivery : IOProcessor.
2019-09-20 21:27:16 +02:00
361727716f
do not abort in the event that we cannot internal-seek to align with the playhead.
...
There are no good options here, but treating it like a regular underrun seems as good as anything
2019-09-20 13:02:46 -06:00
bddde1337e
better initial value
2019-09-20 12:36:23 -06:00
7383fbbe48
remove debug output
2019-09-20 12:26:49 -06:00
b374eb7658
fix crash when doing rapid (ongoing-locate-interrupting) locates
2019-09-20 12:26:49 -06:00
84f8e23027
move TransportFSM::enqueue() into .cc file
2019-09-20 12:26:49 -06:00
b04788407a
at transport stop, reset FSM's idea of the last locate target (also removes const from method)
2019-09-20 12:26:49 -06:00
3f9d79e7ab
Handle an unused edge-case
...
In practice PanControllable::owner cannot be NULL, but in theory it
could be (and might be for Mixbus6 internal panning).
2019-09-20 19:41:06 +02:00
467795f467
Fix Latency Measurement without device re-start
...
This handles a case when the engine was started normally
(not for latency measurement), and measurement is performed later.
This resulted in a duplicate backend start
2019-09-20 19:41:05 +02:00
4d2ccdd905
const-ify TransportFSM
2019-09-20 09:44:15 -06:00
30a1cffcdc
rename TransportFSM::FSMEvent to TransportFSM::Event (c/o the Department of Redundancy Department)
2019-09-20 09:38:17 -06:00
6b12264d40
add an important comment about transportFSM being single-thread and synchronous
2019-09-20 09:38:17 -06:00
b075c67e51
use boost::intrusive to manage FSM events (this is all RT code)
2019-09-20 09:38:17 -06:00
ea8ec74565
expand comment
2019-09-20 09:38:17 -06:00
61afcb8e2b
replace boost::msm - based FSM for transport with one written in "plain C++"
...
Still need to use boost::intrusive to managed qeued/deferred containers
2019-09-19 22:34:18 -06:00
e698a1b2fa
Fix LV2 state:loadDefaultState
...
lilv_state_restore() needs to be called unconditionally (regardless
if a plugin actually has a state-interface) to set port and properties.
It has to be called after ports are enumerated and supported
properties are loaded.
2019-09-18 18:42:34 +02:00
401ace0c67
don't bother following playhead priority during session loading
2019-09-18 10:08:42 -06:00
beafb5b572
deepen stack trace when checking non-RT RT calls
2019-09-18 10:08:42 -06:00
e0d5c1426c
NO-OP: fix some Wimplicit-fallthrough
...
gcc can recognize various regexps in comments. Since C++17 provides
[[fallthrough]], using /* fallthrough */ consistently seems
appropriate until we switch to C++17.
see also https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
2019-09-18 17:37:54 +02:00
37194ec805
Introduce the BOOST_MPL stuff (though it all seems a bit flaky with MSVC...)
2019-09-18 15:08:26 +01:00
cb3afb6981
Remove a (no longer needed) source file from our MSVC project (evoral)
2019-09-18 15:05:16 +01:00
00a8e7c9e0
Add/remove source(s) in our MSVC project (libardour)
2019-09-18 15:03:51 +01:00
b2ff2b86fa
Fix OSX builds: undef Apples's odd nil macro
2019-09-18 06:23:40 +02:00
52021bc3ca
Consistent use of abort() /* NOTREACHED */
...
This fixes some static analysis warnings:
PBD::fatal transmitter needs to be connected to a function
that aborts. This is usually the case with GUI
2019-09-18 05:57:26 +02:00
60bce78c7e
Fix Wdeprecated, dynamic exception
...
Dynamic exception specifications are deprecated in C++11,
and were removed in C++17.
2019-09-18 04:43:09 +02:00
bf806cde66
Remove old unused source file
2019-09-18 04:37:12 +02:00
1b20e1ef1d
Re-order includes
...
* external, system-wide first <>
* next "pbd/*"
...
2019-09-18 04:15:02 +02:00
7f3f201833
Remove "i18n.h" include from header - fix builds
...
i18n alsways needs to be included last. This fixes an ambiguity of "_"
boost/function_types/detail/class_transform.hpp:23:26:
error: ‘boost::mpl::placeholders::_’ has not been declared
using mpl::placeholders::_;
2019-09-18 04:15:02 +02:00
ad8f21763e
deepen stacktrace to show where non-process calls to supposedly process-stack-only methods are called
2019-09-17 19:16:53 -06:00
bd229936ec
add finite state machine to control/manage transport state
2019-09-17 18:26:03 -06:00
fc3e7623e7
correct mistakenly left-in debugging condition that removed parallelism for PortManager::cycle_start()
2019-09-17 18:20:51 -06:00
b648b3a4b4
minor tweaks to use initialization rather than assignment
2019-09-17 18:04:03 -06:00
192a8b7ec0
remove unused local variable
2019-09-17 18:00:37 -06:00
f52781b46b
fix thinko when testing for internal seek with negative distance
2019-09-17 17:59:23 -06:00