summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/session.h
AgeCommit message (Collapse)Author
2020-02-27Add signals to indicate Punch/Loop constraintsRobin Gareus
This is in preparation for GUI sensitivity of Loop and Punch actions.
2020-02-27Prevent concurrent loop and punch recording (backend)Robin Gareus
This also prevents switching between punch-in/out record and looping without transport-stop.
2020-02-20change transport API, session API, transportFSM API to move reverse ↵Paul Davis
management and motion state (partially) into TFSM
2020-02-19remove "destination_sample" from API for Session::set_transport_speed()Paul Davis
This was a leftover from changes made for Tracks Live, related to the concept of an auto-return preference. We don't use this anywhere in Ardour or Mixbus, and the concept should eventually be removed entirely.
2020-02-18Replace missing .mid files with silenceRobin Gareus
This fixes a crash: missing playlist due to missing .mid, and retains regions for missing MIDI files. As opposed to missing Audio, we cannot use a SilentFileSource, because MIDI files are destructive. This also adds an API to query missing files that have been replaced with silence to report them to the user.
2020-01-30Allow StateProtector to save pending filesRobin Gareus
This is in preparation for saving state while the session is record-arm'ed. Most notably config changes and undo/redo. In case both normal and pending save happens, pending must be last and is required to recover from crashes during recording.
2020-01-26Fix the ability to set Session Start&End Range on a new, empty sessionBen Loftis
set_session_extents had a bug; it wasn't calling locations->add() on the newly created location. The correct implementation was in set_session_range_location, but this was only called from one place. This function was removed, and set_session_extents will be used in its place. set_session_extents will create a session location if one no longer exists, so there is no need for set_session_range_location.
2020-01-23add Session::locate_initiated()Paul Davis
This differs from ::locate_pending() by covering either phase of a locate - declick or refill
2020-01-23remove no-longer used PostTransportWork bits and renumber the restPaul Davis
2020-01-20fix API and use of Session::force_locate()Paul Davis
Because of the addition of LocateTransportDisposition, this call was unconditionally forcing a roll during startup
2020-01-18rename DoTheRightThing to RollIfAppropriatePaul Davis
2020-01-18Session::request_locate() takes a tri-valued second argument for ↵Paul Davis
"roll-after-locate" This allows callers to defer logic about auto-play/current rolling state and more to TransportFSM where it can be cnentralized and is less ambiguous
2020-01-03NOOP: line refoldingPaul Davis
2019-12-31remove MIDI Control input and output ports from session-level objectsPaul Davis
2019-12-29add Session::transport_stopped_or_stopping()Paul Davis
Session::TransportStateChanged notifies about transport stop before the stop is complete (i.e. at the start of the declick). Various other objects (notably control surfaces) connect to this signal and use it to modify their displayed state. We need a method that can tell them we are stopped (or stopping) even though we are not "fully" stopped yet. This is that method
2019-12-27add new Session method to return the worst_latency_preroll() value rounded ↵Paul Davis
up to the nearest buffer size
2019-12-27remove unused memberPaul Davis
Note: there is no global state for "the" transport master, since we have several at all times now
2019-12-25Use weak-ptr for source added/removed signals (1/2)Robin Gareus
This might fix a "SessionHandleRef exists across session deletion", when the shared_ptr was be pushed onto a x-thread pool, and not invalidated in time before the session was closed.
2019-12-25Prevent copy-construction of sources to be destroyed listRobin Gareus
destroy_sources () is only called from Session::remove_last_capture (). The list of sources to be destroyed is the local scope of that method and will hold a reference to the object. copy-construct the list and removing elements one by one from the copy is only unnecessary overhead.
2019-12-17Convert Disksteam & Playlists from old 2.x sessionsRobin Gareus
2019-12-16reinstate missing latency initialization codePaul Davis
Removed (mistakenly) during work on transportFSM
2019-12-10revert to single buffer for disk playback, and 5.x-style overwritePaul Davis
Also address issues with MIDI and also atomicity of _pending_overwrite
2019-12-05changes to use overwrite-buffers when loop is disabled or loop range changedPaul Davis
2019-11-22redesign of declicking and fades around loop boundariesPaul Davis
2019-11-15consolidate Session::locate() and Session::do_locate()Paul Davis
The first no longer needs to handle requests by passing them to JACK transport
2019-11-15eliminate hacky design for being able to deliver the correct time as JACK ↵Paul Davis
timebase master
2019-11-06fix unconditional note resolution during DiskReader::realtime_locate()Paul Davis
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-02remove unused parameter from Session::set_play_loop() APIPaul Davis
2019-11-02rename all Evoral source from .(hpp|cpp)$ to .(h|cc)Paul Davis
2019-11-02refactor SessionEvent and DiskIO so that we pass around ↵Paul Davis
boost::shared_ptr<Track> rather than Route (this the raw pointers used inside SessionEvent)
2019-11-01don't send TFSM event LocateDone after a locate-for-loop-endPaul Davis
See comment for explanation
2019-10-28provide a mechanism to decide if Session::update_latency_compensation() is ↵Paul Davis
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-26Fix latency compensation race-conditionRobin Gareus
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-18Expose virtual-keyboard port as async-portRobin Gareus
2019-10-18Add Virtual-Keyboard MIDI portRobin Gareus
2019-10-13Remove unused API declaration (removed in 789f08891b)Robin Gareus
2019-10-12remove Session::AudioMidiSetupRequired signal (no longer necessary)Paul Davis
2019-10-10make BusProfile argument to new Session constructor be const (and in ↵Paul Davis
associated call tree)
2019-09-30Fix remaining doxygen warnings (!)Robin Gareus
2019-09-30Fix a few hundred doxygen warnings..Robin Gareus
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-29Emit signal when session latency was updatedRobin Gareus
2019-09-25goodbye USE_TRACKS_CODE_FEATURES and is_tracks_buildPaul Davis
2019-09-22add direct access API for transportFSM and session transport speedPaul Davis
2019-09-22remove unused PostTransportDuration and enumeration-writing for ↵Paul Davis
Adjust(Playback|Capture)Buffering
2019-09-19replace boost::msm - based FSM for transport with one written in "plain C++"Paul Davis
Still need to use boost::intrusive to managed qeued/deferred containers
2019-09-17add finite state machine to control/manage transport statePaul Davis
2019-08-26Add signal for foldback send add or removeLen Ovens
2019-08-07Add method to graphviz plot the process-graphRobin Gareus
2019-08-03Update libardour GPL boilerplate and (C) from git logRobin Gareus
2019-08-01(Source List) Region Tags (libardour part)Ben Loftis
Rough-in: Region-Tags. More correct implementation of tags property (libardour). Region Tags (libardour part)