Paul Davis
a51dcaaa21
implement Ardour-only version of playhead priority, which is basically auto-return to last roll location or nothing
2015-06-29 14:18:16 -04:00
Paul Davis
0f9cac978e
(re)implement Yevgeny's LTC branch changes in the context of ardour-merge-from-tracks (just the libs/* section)
2015-06-29 14:18:15 -04:00
Paul Davis
a624573ee6
add additional check for playhead priority target when testing loop range, to match Tracks' logic
2015-06-29 14:18:14 -04:00
Paul Davis
3a65005a75
remove Tracks runtime conditional, incorrectly added during manual merging
2015-06-29 14:18:13 -04:00
Paul Davis
ab2e23db9a
follow various events related to playhead priority (loop changes, parameter changes); remove debug output
2015-06-29 14:18:13 -04:00
Paul Davis
016beaab9b
give different Tracks + Ardour/Mixbus playhead priority functionality, and add missing set_track_loop() call for playhead priority
2015-06-29 14:18:13 -04:00
Paul Davis
ba981a14c4
initial version of playback priority design. No GUI control over options yet
...
Conflicts:
libs/ardour/ardour/session.h
libs/ardour/ardour/types.h
libs/ardour/enums.cc
libs/ardour/session_transport.cc
system_config
2015-06-29 14:18:13 -04:00
Paul Davis
ca09a4a355
more tweaks for varifill model, and avoid filling playback buffers during session loading
...
Conflicts:
libs/ardour/diskstream.cc
libs/ardour/session.cc
libs/ardour/session_state.cc
Conflicts:
libs/ardour/session.cc
2015-06-29 14:18:12 -04:00
Paul Davis
1caf54ee7f
add initial support for vari-fill
...
When refilling playback buffer, try to fill it completely, or at least
using the next-lowest power-of-2 as the amount to read. When locating,
where we use do_refill_with_alloc(), only partially fill the buffer.
Work not yet finished, but possibly promising.
2015-06-29 14:18:12 -04:00
Paul Davis
9ef4888e91
fix logic of previous commit for transport-stop during locate
2015-06-29 14:18:12 -04:00
Paul Davis
4abea520df
Do not disable record (performing transport stop) during locate request when MTC source is activated
...
This is required for the case when we leave Tracks ready for record and then activate MTC source.
2015-06-29 14:18:12 -04:00
Paul Davis
16dccfcb8a
Add some libardour support for indicating MTC active status.
...
The general design here is wrong, because it should be more general and cover all possible sync sources.
But it does work, it is used in Tracks, and my attempt to do it correctly revealed the problem to be
an EXTREMELY difficult design issue (as in: two weeks of work on it did not really solve the
fundamental issues with slave design).
So, here it is for now, c/o Grygorii
2015-06-29 14:18:12 -04:00
GZharun
87f1c66ba1
[Summary] Fixed race condition: "should_do_transport_work" must not be dropped to 0 outside, it's illegal. It may cause "should_do_transport_work" go below 0 and make butler to round for a very-very long time (hang and possible lock of other threads) before stop() call returns.
...
_butler->stop () is synchronous, so its safe to wait in this call for butler to finish it's work.
[Reviewed by] PDavis
2015-06-29 14:18:12 -04:00
Robin Gareus
cd63d97f65
add xrun counter API to session
2015-04-29 03:09:17 +02:00
Robin Gareus
36ee1681fe
special case [optimize] RT processor reorder.
...
realtime processor re-ordering does not require
a route resort nor latency compensation update.
(which were done as callback in same thread)
2015-04-27 17:19:57 +02:00
Robin Gareus
3547540f98
throttle TransportStateChange signal emissions
2015-03-10 10:49:52 +01:00
Paul Davis
aea700fbc4
fix transport issues when loop-is-mode is off.
...
Session::unset_play_loop() needed to be a no-op if play loop was
already false, and this was exacerbated now that it potentially
schedules butler transport work.
2015-02-19 10:33:33 -05:00
Paul Davis
58137b8326
try to restore original semantics for scheduling butler transport work in Session::locate()
2015-02-17 11:21:41 -05:00
GZharun
5a8270373a
[Summary] Fixed loop processing in cases when loop is moved/resized
...
[Reviewed by] REQUIRED REVIEW FROM PAUL DAVIS
2015-02-17 10:37:35 -05:00
Paul Davis
b3e7c88988
fixes for desirable playback when using seamless looping.
...
Try to make sure that we appropriately reset and refill track
buffers whenever we enter/leave loop playback,and whenever
we locate. In addition, if we start playing somewhere other
than the loop range while loop is enabled, then the first
time we hit the loop end, set up the track buffers.
Conflicts:
libs/ardour/session_transport.cc
2015-02-16 19:35:37 -05:00
Paul Davis
7a99bc5373
fix seamless looping after a locate out of the loop.
...
Something, somewhere has to tell tracks to refill their buffers with
the special loop-data-only magic
2015-02-13 18:42:41 -05:00
Paul Davis
aa5cf04ca6
correctly set track loop status when locating away from loop range (and later, when coming back to the loop)
...
Conflicts:
libs/ardour/ardour/session.h
libs/ardour/session.cc
libs/ardour/session_transport.cc
2015-02-13 17:23:50 -05:00
Paul Davis
1fb83d698c
make butler thread merely ask for session state save, not actually do the save itself.
...
This prevents the possibility of cross-thread calls in the GUI when it adds its state
to the session via extra XML
2015-01-24 19:27:28 -05:00
Paul Davis
679356c5ee
fix delivery of MMC events under split process cycle conditions
2014-10-22 17:07:11 -04:00
Paul Davis
aa0effb4cb
ignore negative value locates and MMC locate commands
2014-10-22 17:07:11 -04: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
Colin Fletcher
c3a5cd487a
Return playhead to last start position when aborting capture
2014-09-13 15:27:30 +01:00
Ben Loftis
043b76569d
fix the naming and behavior of always-play-range to match the button, which is follow-edits. when you select a range, the playhead should jump to the start of the range and begin to play the selection. BUT (unlike previous implementation) if the user wants to relocate the playhead, then that should be allowed. The user should always remain in charge of the playhead location. NOTE: your previous config setting will be invalidated. You must re-save a session to overwrite with the new config variable
2014-07-03 12:56:33 -05: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
Robin Gareus
789cf92a23
bump take-name after every recording
2014-06-26 19:16:20 +02:00
Paul Davis
27cff1dc01
tell the SceneChanger to emit any relevant scene changes after a locate
2014-05-02 18:43:37 -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
960a47330a
switch from JACK_Slave to Engine_Slave
2013-09-19 17:34:23 -04:00
Paul Davis
1c49138e00
move MidiPortManager from AudioEngine to Session
...
This makes the responsibilities and ownership of non-Route related MIDI ports
more clear, and removes a few wierd bits of code. It also ensures that open/close/open
on the same session will retain connections for those MIDI ports
2013-09-05 13:22:34 -04:00
Paul Davis
4b9289e17e
don't waste time with sending MTC or MMC after stop if we're disconnected from the engine.
...
Also, add note about threading oddities with send_mmc_locate() being called from ::non_realtime_stop() which gets
called from a *realtime* context.
2013-08-09 18:06:08 -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
616f2a0370
fix conflicts after merge with master
2013-08-05 14:22:32 -04:00
Michael Fisher
18490878b4
WIP - Experimenting with an alternative clock generating algo
...
- Transport debug output (tracing where transport_frame
is updated
2013-08-02 08:59:32 -05:00
Paul Davis
682ebad62b
full compilation and linking (coding not finished, will not run)
2013-08-01 14:43:12 -04:00
Paul Davis
20b1a7d9d8
most of libardour now actually compiles
2013-07-25 12:36:54 -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
Paul Davis
3d5f247263
remove debug output
...
git-svn-id: svn://localhost/ardour2/branches/3.0@13850 d708f5d6-7413-0410-9779-e7cbd77b26cf
2013-01-16 02:31:14 +00:00
Paul Davis
244f07b2a4
when stopping transport, revert _default_transport_speed to 1.0 if current speed is reversed (should fix #5264 )
...
git-svn-id: svn://localhost/ardour2/branches/3.0@13848 d708f5d6-7413-0410-9779-e7cbd77b26cf
2013-01-16 01:57:40 +00:00
Robin Gareus
a167dc9cec
fix vari-speed stuck at zero and playing backwards.
...
git-svn-id: svn://localhost/ardour2/branches/3.0@13747 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-30 21:50:05 +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
625ee55df0
don't do a pending save if slave is syncing.
...
13:00 < rgareus> When a slave does initial sync, it sets speed=0, pos=XXX (required by session_process.cc state-machine to init)
13:01 < rgareus> This triggers a locate(roll=false) which in turn triggers a realtime_stop() which in turn triggers a non_realtime_stop().
[..]
13:06 < rgareus> las: the problem I have with non_realtime_stop() is that it does save a pending state IFF get_record_enabled() is true.
13:06 < rgareus> The save can take ages (seconds), which will void the initial sync of the slave.
13:07 < rgareus> The slave enters a live-lock: sync, save, re-sync, save...
13:07 < las> rgareus: understood
13:07 < rgareus> las: I propose to workaround this: only save pending state if there is no slave or the slave is not locked.
13:07 < las> rgareus: another reason why recording + slave == bad idea :(
13:07 < las> rgareus: but yes, that sounds fine to me
13:07 < rgareus> AFICT this is not harmful. It only affects pre-record settings.
13:07 < rgareus> 'did_record' is used to save a full state after each recording.
git-svn-id: svn://localhost/ardour2/branches/3.0@13288 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-16 20:53:08 +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
Robin Gareus
bce3184ff5
skeleton framework for LTC-slave
...
git-svn-id: svn://localhost/ardour2/branches/3.0@13256 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-10-12 09:45:22 +00:00