summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/session.h
AgeCommit message (Collapse)Author
2020-05-19Don't save the session when creating bussesRobin Gareus
Most calls to new_audio_route() used save = false, only directly creating busses saved the session. Probably for historical reasons.
2020-05-19NO-OP: replace `save_state("")` with `save_state()`Robin Gareus
2020-05-13update DiskReader loop delick objects when loop changesPaul Davis
2020-05-13reinstate Session::loop_changing to avoid problems when locating to start of ↵Paul Davis
loop for loop play
2020-05-12remove Session::loop_changingPaul Davis
Since we now (correctly) do not locate for loop changes, this member is unnecessary
2020-05-09LTC Generator: prefer LatencyUpdated signalRobin Gareus
2020-05-07add new template methods for "foreach {route,track}" and use themPaul Davis
Also remove redundant double call to Track::set_block_size(). This dates back to 2010 when there used be an additional traversal of the Diskstream RCU-managed list, before they became owned by Tracks
2020-05-07Remove unused variableRobin Gareus
2020-05-07Send LTC timecode from engine contextRobin Gareus
2020-05-07Change LTC Generator from IO to PortRobin Gareus
This is done in order to set the TransportGenerator flag
2020-04-27Skip delayline updates if no change is requiredRobin Gareus
2020-04-26Remove duplicate i/o latency calculationRobin Gareus
Port and connection changes always imply a latency_callback from the engine. Worst I/O latency is updated directly in Session::update_latency() which is called from AudioEngine::latency_callback. Explicit subscriptions to route->output()->changed() is not needed to update the worst I/O latency. Only set_block_size() needs to to update the I/O latency when the buffer-size changes.
2020-04-24make Session::should_ignore_transport_request() non-constPaul Davis
2020-04-18RAII collect processor-change signals6.0-rc1Robin Gareus
2020-04-07API change: LatencyUpdated(), indicate playback/captureRobin Gareus
2020-04-03Allow to disable input auto-connect when creating tracksRobin Gareus
Auto-connect is handled in a background thread, so newly created tracks are not immediately connected. This causes a race-condition when fan-out directly disconnects and re-connects ports after track/bus creation.
2020-04-02Don't issue VersionMismatch when creating a new sessionJohannes Mueller
When we create a new session and are using a template from an old version of Ardour, we should not issue the VersionMismatch dialog and not make a copy of the session file for the old version. We need to extend the signature of Session::load_state() to tell it if we are creating a session from a template. Session::_is_new cannot be used for it because it has a the semantics if to auto connect the the master bus.
2020-03-25if user chooses not to delete a scratch session, removed the file that ↵Paul Davis
identifies it as unnamed This way they will not be asked again if they reload and then quit the session
2020-03-24when saving an unnamed session, rename itPaul Davis
Note that this is done at the GUI level, might need to double check if there are other paths into a "save" that should be covered. Control surfaces use the action, but Lua comes to mind
2020-03-24a better approach to the name of the "unnamed" indicator file; remove file ↵Paul Davis
after successful save
2020-03-24introduce the idea of an "unnamed" sessionPaul Davis
2020-03-23add in timing for disk buffer reload after locate, to replace hard-coded ↵Paul Davis
0.05 seconds per track Leave debug output in place for now to get some numbers from any testers
2020-03-20redesign chasing the transport masterPaul Davis
Substantive comments associated with code in Session::plan_master_strategy. Known not to work for reverse TC. Also, the JACK related code has not yet been tested
2020-03-17provide mechanism to report on destructive tracks presence in a sessionPaul Davis
2020-03-17NOOP: indent/whitespacePaul Davis
2020-03-17remove destructive/tape mode tracksPaul Davis
2020-03-13add new API to TransportMasterManager to manage use of ↵Paul Davis
DiskReader::{inc,dec}_no_disk_output()
2020-03-06Do not de-click during freewheel exportRobin Gareus
2020-03-06Separate pre-roll cycle calculationRobin Gareus
This is also needed when exporting.
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