13
0
Commit Graph

27316 Commits

Author SHA1 Message Date
796ac29cf2
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.
2019-02-08 19:33:23 +01:00
b5587e5e43
NO-OP: clarify internal API, prepare for overwrite queue 2019-02-08 19:33:19 +01:00
a6e7abb7fa Accommodate newly introduced source(s) in our MSVC project (libpbd) 2019-02-08 10:17:57 +00:00
bea9f5adc3
Remove disk-reader local MIDI vari-speed
Vari-speed is now handled by the engine, on port-level
2019-02-07 21:32:20 +01:00
8dda9f4ca8
Prefer AudioBuffer reference over raw buffer
This allows for consistent libardour API usage, in particular Amp.
2019-02-07 15:28:30 +01:00
18af4dd55a
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
2019-02-07 15:28:25 +01:00
3c96ba1de6
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.
2019-02-07 01:31:15 +01:00
243412d930 do not use green for "OK" deltas in transport master dialog and drop delta character 2019-02-06 15:04:33 -07:00
68897a742f use correct value for silent sample count delivered to LTC decoder 2019-02-06 13:54:05 -07:00
896091d256 do not attempt to update transport master rows if audioengine is not running 2019-02-06 13:54:05 -07:00
5e1484bf18
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.
2019-02-06 20:26:44 +01:00
1845dff4c8
Implement backwards micro-locates 2019-02-06 20:22:22 +01:00
dcd612f8a7
Prepare Disk-reader for bi-directional micro-locates 2019-02-06 19:22:46 +01:00
6975b5ca54
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).
2019-02-06 19:00:15 +01:00
b3fda6236a
Optimize buffer zero-filling 2019-02-06 17:02:20 +01:00
007c4ffdc0
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.
2019-02-05 23:29:31 +01:00
3cc3074dc7 use ::reset() not ::update() 2019-02-04 11:24:23 -07:00
90e5220fa6 reset "current" in LTC transport master when necessary 2019-02-04 11:23:56 -07:00
5b12cc9bad correctly initialize LTC transport master port latency (reversed boolean error) 2019-02-04 11:23:35 -07:00
6f81552011 NOOP: whitespace in function call 2019-02-04 11:22:25 -07:00
a18250905c fully initialize all LTC transport master members
at least the ones that can be done via initialization statements
2019-02-04 11:22:04 -07:00
3a43c6375d remove debug output 2019-02-04 11:21:07 -07:00
dae7ea5382 add DEBUG::Destruction output for Port 2019-02-04 11:20:49 -07:00
8edd03e68b extend debug output statement 2019-02-04 11:20:32 -07:00
55e2542193 add new DEBUG_TRACE output for transport masters 2019-02-04 11:20:19 -07:00
ae1bd6bbd0 remove commented code 2019-02-04 11:19:56 -07:00
64ed049567 force execution of ARDOUR::init_post_engine() before any handlers of AudioEngine::Running() 2019-01-27 14:02:03 -07:00
e7b34d7f18 do not reset ControlProtocol state for every engine restart, it is not necessary 2019-01-27 14:01:05 -07:00
59b709be2b remove debug output 2019-01-25 11:09:31 -07:00
89d54b8790 minor refactorization of how the transport master widget is rebuilt 2019-01-25 09:23:08 -07:00
1be3301342 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.
2019-01-25 09:23:08 -07:00
c01ab83e1f
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")
2019-01-23 16:05:21 +01:00
28f211c5d2
NO-OP: whitespace 2019-01-23 12:59:17 +01:00
87602e7fb3
system-exec read: allow 1 byte for null termination -- #7715 2019-01-23 12:44:10 +01:00
145d7f8d0a
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.
2019-01-22 21:54:22 +01:00
586792fcc9
NO-OP: whitespace 2019-01-21 14:36:59 +01:00
657e976a80
NO-OP: remove unused code 2019-01-21 14:34:19 +01:00
d97364736c
ISO-C++ compat, see cd70c6bda5, 91ed9840d 2019-01-21 14:33:08 +01:00
d5241c6194
Use correct playlist when loading Ardour5 session
Ardour5 identifies playlists by playlist-name, not by diskstream name.
2019-01-19 12:08:54 +01:00
bf728520ca
Optimize exponential interpolation. 2019-01-19 12:08:54 +01:00
616ee4e43b OSC: remove unused variable 2019-01-18 10:24:13 -08:00
da347c3b37 Hmm, balanced panner didn't seem to make it in 2019-01-18 10:24:13 -08:00
80df6b84b0 foldback sends should have unlinked balanced panner
Or 1+2 for mono sends.
2019-01-18 10:24:13 -08:00
c7787690f6 OSC: shorten foldbackbus names 2019-01-18 10:24:13 -08:00
5d967b64b1
Clarify auto-connect preference 2019-01-17 18:12:51 +01:00
755babeb59 remove unnecessary call to init_post_engine() (now called from libardour) 2019-01-17 09:18:53 -06:00
c60d8cf747 (libs) call ARDOUR::init_post_engine() from within libardour rather than requiring "users" of the library to arrange for it 2019-01-16 15:29:38 -06:00
4c064081af (libs) call ARDOUR::init_post_engine() from within libardour rather than requiring "users" of the library to arrange for it 2019-01-16 15:29:38 -06:00
cd70c6bda5
Fix ambiguity introduced in 91ed9840d
(bool) false == 0 == (const char*) NULL

error: ISO C++ says that these are ambiguous, even though the worst
conversion for the first is better than the worst conversion for the second:

actions.h:92: note: candidate 1: Glib::RefPtr<Gtk::Action> ActionManager::get_action(const char*, const char*, bool)
actions.h:91: note: candidate 2: Glib::RefPtr<Gtk::Action> ActionManager::get_action(const std::string&, bool)
2019-01-16 01:17:52 +01:00
8b71967be9
ALSA: add locks to safely add/remove MIDI devices
Theoretically this could be lock-free by using a queue of device
ports to be added/remove in sync in the process-callback, but
realistically adding/removing devices doesn't have to be rt-safe.
2019-01-14 22:33:31 +01:00