Commit Graph

199 Commits

Author SHA1 Message Date
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
Paul Davis
eaaca760c9 tweaks to be ready for more information timecode display in Timecode clock mode
git-svn-id: svn://localhost/ardour2/branches/3.0@13264 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-12 22:04:21 +00:00
Paul Davis
71b7326576 move timecode-is-clock-synced option to global configuration parameters, not per session
git-svn-id: svn://localhost/ardour2/branches/3.0@13235 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-10 22:56:21 +00:00
Robin Gareus
29825092ae ignore slave/engine time-delta when recording.
git-svn-id: svn://localhost/ardour2/branches/3.0@13227 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-10 14:03:18 +00:00
Paul Davis
3cd8138a41 convert from Glib:: to Glib::Threads for all thread-related API
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25 17:48:55 +00:00
Paul Davis
c0f7f044f3 introduce the idea of a "default transport speed", used whenever Session::start_transport() is called. Only the shuttle controller alters it, and even that only alters it in wheel mode, which means that stopping the transport does not rever the default speed back to zero. To get back to zero either switch the shuttle controller back to sprung mode, or change the speed back to zero (fixes #451 ... yes, really, a 3 digit bug fixed!)
git-svn-id: svn://localhost/ardour2/branches/3.0@12819 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-22 14:45:44 +00:00
Paul Davis
8c10320497 fix reset of transport speed when seamless looping; add a few comments and tidy-ups to related transport code
git-svn-id: svn://localhost/ardour2/branches/3.0@12818 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-22 14:27:51 +00:00