Commit graph

205 commits

Author SHA1 Message Date
Paul Davis
1c603682b7 since Session::fail_roll() just calls ::no_roll() make that more explicit when there's actually no failure 2017-09-18 11:40:53 -04:00
Paul Davis
cb0d9f5607 remove InputConfigurationChange from session events, since it is a no-op in this development branch 2017-09-18 11:40:53 -04:00
Paul Davis
e24ca13394 remove all remaining vestiges of per-track varispeed from libardour 2017-09-18 11:40:53 -04:00
Paul Davis
53e6f13852 addd more DEBUG_TRACE for DiskIO; set DiskIOProcess::_need_butler more appropriately; other minor adjustments 2017-09-18 11:40:53 -04:00
Robin Gareus
dee990103a Consistent Automation evaluation:
Rule #89: The *owner* of each automation-control is responsible to
evaluate automation of automated automation-controls (and emit Changed()
signals to notify the GUI and slaved controls).

This can happen during run(), when the Processor evaluates automation
(eg. PluginInsert does that), but needs to regardless, every cycle.
Emit Changed signal for GainControl

This follow the same concept as PluginInsert: The Changed signal
is called on demand when evaluating automation.
2017-07-16 16:53:39 +02:00
Robin Gareus
cd30a29691 Fix session-event queue (multiple writer, single reader)
The reading is done in rt-process thread, but multiple UIs (surfaces,
GUI) can produce events to be queued.
2017-07-04 20:44:33 +02:00
Robin Gareus
8229124078 Fix vari-speed and non-locked slave modes
A transport-speed-change is no reason to skip processing.

Prior to this change cannot_process() silently skipped in the process
cycle of the speed-change (which may have been every process-cycle),
without moving the transport or doing any processing.
2017-04-30 01:22:25 +02:00
Robin Gareus
e959a762b5 Rework preroll-rec API:
* rename: indicate that recording happens after preroll, punch-in
* move API into libardour: rec+roll (no separate setup, seek, roll APIs)
2017-01-19 13:05:54 +01:00
Robin Gareus
efd10abdfb Implement record with preroll 2017-01-18 15:15:48 +01:00
Robin Gareus
a6e02c0d71 Implement Count-In (before recording), fixed BPM, up to 2 bars 2017-01-17 20:43:55 +01:00
Robin Gareus
2ed145cfd4 allow Lua session scripts to inject [immediate] RT-events 2017-01-02 17:03:33 +01:00
Paul Davis
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
Robin Gareus
f4553880f6 Implement Lua session-scripts 2016-02-23 15:41:21 +01:00
Robin Gareus
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Paul Davis
2b1a30ca96 only apply transport declicking if requested to do so (default is to do so) 2015-09-15 09:00:50 -04:00
Robin Gareus
ae38128f88 session: add signal to indicate batch updates
…to tell the UI to not redraw.
2015-04-30 17:58:33 +02:00
Robin Gareus
f410705c3a delegate signal emission to dedicated thread.
This works around abysmal performance (~.15ms) of
boost::function and boost::bind (in PBD::Signal).

The overall load is probably higher but the realtime
thread remains unaffected.
2015-04-29 00:35:35 +02:00
Robin Gareus
b7a711e385 click-less processor re-ordering. 2015-04-27 17:19:57 +02:00
Robin Gareus
6ac8588cd8 clickless meter-point changes 2015-04-26 06:00:08 +02:00
Robin Gareus
4e36760bac send LTC during process_with_events()
fixes #6277

This indicates a deeper problem though. Even removing a punch-range never
clears out the events. and  ession::process_with_events() does not use
process_without_events() until re-start.
2015-04-24 04:44:28 +02:00
Paul Davis
bdfe32c086 stop transport when process_routes fails, even when using the parallel graph execution model 2015-01-29 22:00:05 -05:00
Paul Davis
a0fcf2fc66 remove ugly and unnecessary debugging output 2014-12-10 13:37:03 -05:00
Paul Davis
1e0c1751a5 more DEBUG::Butler output, formatting corrections, and a warning on cerr if capture/playback buffers are too full/empty 2014-12-09 16:36:52 -05:00
David Robillard
e5d9fd1aac Fix potential use of uninitialized value. 2014-11-18 02:53:28 -05:00
Robin Gareus
6b3a8915f3 add abort() to non-reached code
This cleans up a lot of false-positives in static analysis
and also helps compilers to optimize code paths in general.
(tagging the fatal stingstream operator as ‘noreturn’ is
far less trivial)
2014-11-14 11:30:08 +01:00
Paul Davis
fa9780ba67 subtle changes to accomplish two goals (1) playhead should stop where the user pressed stopped (2) captured regions should end where the playhead ends 2014-10-10 13:22:50 -04:00
Paul Davis
69bfc841a2 use Config->get_skip_playback() when handling Skip events 2014-09-17 12:27:21 -04:00
Paul Davis
ebd7bc7447 add new Skip event to SessionEvents 2014-09-17 10:31:33 -04:00
Ben Loftis
a1c8e67e50 add a method to cancel a pending play_range. this is needed when we are modifying the range with keyboard commands. 2014-07-02 17:35:38 -05:00
Paul Davis
2cf411e4be merge (squash) with scenechange topic branch to provide MIDI-driven scene change markers 2014-04-28 19:58:24 -04:00
Paul Davis
3131ab8bbd new transport option, "loop-is-mode" which optionally changes the role of the "play loop" button.
If enabled, then the button simply changes the behaviour of the "play" button rather than actually starting playback. If disabled
transport behaviour should be unchanged from before.
2014-04-17 09:47:06 -04:00
Paul Davis
10933e2003 allow auditioning via the monitor section to work.
Ideally, we would feed the monitor section via an internal (aux) send/return, but this is an improvement over what we had before
2014-01-16 17:22:19 -05:00
Robin Gareus
d85ec4ee17 don't split process cycle at end
Keep in mind: While this is the correct thing to do,
it hides another another bug under the hood, related to
_global_port_buffer_offset in MidiPort::flush_buffers.
For debugging the latter issue, revert this.
2014-01-03 18:36:00 +01:00
Paul Davis
76ea055b85 don't run MIDI clock "tick" if session is silent (e.g. due to a locate) 2013-12-02 23:33:33 -05:00
Paul Davis
a5a75d5e0d fixes to get MTC (and probably MIDI clock) slaving working again
incoming MIDI data has to be parsed EVERY process cycle, not just when Slave::speed_and_position() is called.
The private MIDI::Parser owned by the MTC and MClck slaves was irrelevant, since the port has its own.
See comments in midi_port.h on the strangled inheritance heirarchy.
2013-08-13 12:53:28 -04:00
Paul Davis
1ab61b8564 major redesign of MIDI port heirarchy and management (part 2) 2013-08-07 22:22:11 -04:00
Paul Davis
ac34c5852b remove another instance of xmmintrin.h 2013-07-10 11:04:35 -04:00
Paul Davis
cd6cbba299 rename Route::is_hidden() to Route::is_auditioner() and Route::Hidden to Route::Auditioner. this has been the meaning of these terms for years now and it would be better to make it explicit 2013-04-06 16:04:02 -04:00
Robin Gareus
985e3dcc50 ignore "external timecode is sync locked" for non timecode slaves. 2013-04-05 06:50:54 +02:00
Paul Davis
4abbabdcf9 Squashed commit of the following:
commit fdbae82077db53add90df7448a06869dac89acc6
Author: Paul Davis <paul@linuxaudiosystems.com>
Date:   Wed Mar 27 21:45:28 2013 -0400

    mammoth changes in basic signal flow, total redesign of MIDI channel filtering and more.

commit 59343a8283698e02bc0f622313b29e98f449e4c8
Author: Paul Davis <paul@linuxaudiosystems.com>
Date:   Wed Mar 27 01:58:53 2013 -0400

    initial working version after changes to MIDI channel filtering. may affect metering input too. testing not yet finished

this commit merges many deep changes in ardour's internal architecture,
combined with a total redesign of how MIDI channel filtering works.

data in a track used to flow from JACK port buffers to diskstream's ringbuffers
and was then copied from the ringbuffers into a BufferSet for use during
Route::process_output_buffers(). The butler thread would handle the movement of
data between the ringbuffers and disk.

with this commit, data now flows from JACK port buffers into the BufferSet used
for Route processing, and is copied from the BufferSet into the diskstream's
ringbuffers (the butler thread continues to handle interactions with disk as
usual).

this change allowed a dramatic consolidation of code and simplification of most
aspects of Track/Route::roll() and Track/Route::no_roll(). in particular, see
Route::fill_buffers_with_input() which now concisely describes how we move data
from JACK port buffers into the BufferSet for all Route types (including Tracks).

this work was initially motivated by changing MIDI channel filtering so that we
can process capture and playback independently. there is now a very clean
pathway for this - see MidiTrack::roll() (NOTE: This needs implementing in the
no-roll case too - a TODO item).

the channel selector for MIDI tracks has been moved out of the track header and
is now accessible via the context menu. more work is likely here, to make it
(more) obvious to the user when filtering is going on.
2013-03-27 21:50:18 -04:00
Robin Gareus
ba602ea01a we ain't stop for nothin' when slaved to ext time source.
git-svn-id: svn://localhost/ardour2/branches/3.0@13985 d708f5d6-7413-0410-9779-e7cbd77b26cf
2013-01-24 12:52:41 +00:00
Robin Gareus
010870707e Revert "fix for problem when reverse playback hits 00:00:00:00 (may be incomplete)"
This reverts commit 13708 -- because it's the wrong approach to fix this.

git-svn-id: svn://localhost/ardour2/branches/3.0@13713 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-23 11:58:04 +00:00
Robin Gareus
1d7e9daea4 fix for problem when reverse playback hits 00:00:00:00 (may be incomplete)
should fix #5221

git-svn-id: svn://localhost/ardour2/branches/3.0@13708 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-21 22:47:38 +00:00
Paul Davis
c9c94ca1c2 merge robin gareus' libltc into ardour source tree for convenience
git-svn-id: svn://localhost/ardour2/branches/3.0@13665 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-14 16:18:47 +00:00
Robin Gareus
2bf3cf2f8c LTC generator checks itself if to send LTC or not.
git-svn-id: svn://localhost/ardour2/branches/3.0@13348 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-26 03:11:16 +00:00
Paul Davis
49b50d8e97 clean up consequences of using IO/Port/Buffer for LTC output, and in related work, move calls to Session::ltc_tx_send_time_code_for_cycle() into Session::no_roll() to cover most cases where we "do not roll"
git-svn-id: svn://localhost/ardour2/branches/3.0@13343 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-26 00:17:41 +00:00
Robin Gareus
93b13251fa fix backwards playback position calculation
git-svn-id: svn://localhost/ardour2/branches/3.0@13322 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-23 17:10:25 +00:00
Robin Gareus
ec94210a4d add LTC generator
git-svn-id: svn://localhost/ardour2/branches/3.0@13315 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-21 14:07:10 +00:00
Robin Gareus
7f8d2e32da LTC slave rewrite #2
git-svn-id: svn://localhost/ardour2/branches/3.0@13313 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-20 18:14:13 +00:00
Robin Gareus
b40b353264 prepare for non-seekahead [LTC] slave. fix state machine
locate() will call realtime_stop which will reset the slave-state.

git-svn-id: svn://localhost/ardour2/branches/3.0@13290 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-16 20:53:12 +00:00