summaryrefslogtreecommitdiff
path: root/libs/ardour/track.cc
AgeCommit message (Collapse)Author
2018-09-18new transport slave/master implementation, libs/ editionPaul Davis
2018-07-09Prepare API for per disk-reader de-clickRobin Gareus
2018-07-09move rt-stop to routeRobin Gareus
currently this is only used to resolve midi events for plugins (this is conceptually not correct, note offs should be resolved by the disk-reader only), but it calls into all processors now (incl disk-reader if present), which is handy (e.g. flush delaylins)
2018-07-09Remove global declick APIRobin Gareus
De-click will be per disk-reader, latency compensated and buffer-size independent. Cue-monitoring should not be affected by de-click.
2017-10-31Move Loop Location to ProcessorsRobin Gareus
The processors will becomes responsible to know about loop-positions and map latency-compensated start_sample, end_sample into the loop-range as needed.
2017-10-26remove unnecessary callsPaul Davis
2017-10-04Clean up State API:Robin Gareus
* Processor implement get_state(), classes derived from Processor implement protected ::state() -- as documented in processor.h * likewise for Route, Track: make ::state() a protected interface * removal of "full_state", use explicit "template_save" * use RAII/Unwind to skip saving automation-state
2017-10-02tracks no longer need to be notified about speed changesPaul Davis
2017-10-01set owner or disk-i/o processorsRobin Gareus
This fixes a race-condition. These plugins may be run w/o being re-configured which sets the ownershi. currently debug msgs use owner()->name()
2017-10-01Fix recording MIDIRobin Gareus
- Fix API call to add region(midi_region) -- set count to "1" - Forward DataRecorded() signal - remove botched merge/rebase" a4a87f56 accidentally brought back code from old-destructive API which was removed in af103cf3 and 08c13007 There is no per track NonLayered record mode anymore, it's session global. - set can_record correctly to not accidentally clear last capture sources for cont'd recording (toggle track's rec-arm)
2017-09-30First part of consolidating ::roll(), ::no_roll()Robin Gareus
This moves common code (get and fill buffers) into ::passthru() and renames ::passthru() to ::run_route(). passthru_silence() is no longer used (it was only needed A5 style Track::no_roll_unlocked for no-roll + disk-monitoring)
2017-09-30Remove Input-meter special-caseRobin Gareus
Now that disk is no longer topper-most but a processor, the special case is no longer needed.
2017-09-30Towards fixing no_roll()Robin Gareus
Currently ::roll() may actually be a ::no_roll() under some circumstances. This can also happen during count-in: transport_stopped () == transport_rolling() and during latency-preroll: Global session-transport speed != 0, some tracks already roll, read data from disk and feed latent plugins. but other non-latent tracks or busses don't roll and still have to behave like the switch from no_roll() to roll() has not yet happened. This changes the game WRT to monitoring as well, previously, Route:roll() called Route::no_roll_unlocked () for conditions outlined above. Now Track::no_roll_unlocked is called and in some cases wrongly clears the buffers before the signal hits the disk-writer. (more work is needed related to 61f8e53b) On the upside this also fixes an issue with MidiTrack::no_roll not keeping a lock while pushing data into the step-edit-ringbuffer. This is also a step towards consolidating all entry points: ::roll(), ::no_roll(), ::silent_roll() in the Route class.
2017-09-29Convert Diskstream/Playlist from A5 session formatRobin Gareus
2017-09-29Remove unused mechanismRobin Gareus
2017-09-29Ongoing work on latency compensationRobin Gareus
The general goal is to align transport-sample to be the audible frame and use that as "anchor" for all processing. transport_sample cannot become negative (00:00:00:00 is the first audible frame). Internally transport pre-rolls (read-ahead) before the transport starts to move. This allows inputs and disk to prefill the pipeline. When starting to roll, the session counts down a global "remaning preroll" counter, which is the worst-latency from in-to-out. Each route in turn will start processing at its own output-latency. Route::process_output_buffers() - which does the actual processing incl disk i/o - begins by offsetting the "current sample" by the route's process-latency and decrements the offset for each latent processor. At the end of the function the output will be aligned and match transport-sample - downstream-playback-latency (if any). PS. This commit is a first step only: transport looping & vari-speed have not yet been implemented/updated.
2017-09-29Remove code related to capture-offset.Robin Gareus
2017-09-23Fix changing playlist (Track is responsible for signal emission)Robin Gareus
2017-09-22NO-OP: whitespaceRobin Gareus
2017-09-22AlignmentChoise is a Track PropertyRobin Gareus
The DiskWriter uses AlignStyle which is set dynamically by the Track and may depend on I/O connections.
2017-09-19attempt to fix roll delay logic by moving it into DiskReader (the only place ↵Paul Davis
it matters)
2017-09-18remove getter for Amp::_apply_automation_gain; reset member to false after ↵Paul Davis
use, and true after ::setup_automation_gain runs successfully
2017-09-18consolidate roll methods into Route::roll()Paul Davis
We want Track to shrink, and logic consolidation is always good. Route already knew about disk_reader and disk_writer, now it knows about _monitoring_control too
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-09-18Non-layered MIDI recordingPaul Davis
hand-adapted version of d977cc323852c from master This does not merge MIDI data, but trims MIDI regions at rec-stop like non-layered audio-recording does.
2017-09-18remove all code related to "silent roll" concept. some debug output addedPaul Davis
2017-09-18move disk_{writer,reader} into Route to allow for simple, sensible ↵Paul Davis
implementation of DiskIOPoint
2017-09-18don't (re)create disk reader/writer if they already existPaul Davis
2017-09-18change callers of changed Track::use_new_playlist() API and its implementationPaul Davis
2017-09-18remove Track::hidden(); replace with Stripable::is_private_route()Paul Davis
2017-09-18emit required signalPaul Davis
2017-09-18mechanism to allow Track (or other Route-derived type) to add its own ↵Paul Davis
processors at the right time
2017-09-18tweaks to disk io point mechanismsPaul Davis
2017-09-18initial (incomplete) framework for DiskIOPoint manipulationPaul Davis
2017-09-18update disk writer input latency at transport stopPaul Davis
2017-09-18the return of MIDI recording, plus refactor to move post-capture playlist ↵Paul Davis
manipulations into Track
2017-09-18drop references to disk reader and writer objects in Track destructorPaul Davis
2017-09-18NO-OP: commentPaul Davis
2017-09-18cue monitoring for audio (libardour aspects)Paul Davis
2017-09-18NO-OP: remove placeholder commentPaul Davis
2017-09-18NO-OP explanatory commentPaul Davis
2017-09-18alignment choice now owned by Track, as a proxy for DiskWriterPaul Davis
DiskWriter is a processor and as such has no Input object. This means that the "Automatic" setting must be handled by the Track, which does have an Input object to check for port connections to physical or non-physical sources
2017-09-18manual fixes for various XML API changes in master, required after rebase on ↵Paul Davis
master
2017-09-18remove all remaining vestiges of per-track varispeed from libardourPaul Davis
2017-09-18get diskreader working, and remove per-track varispeed API and mechanismPaul Davis
2017-09-18addd more DEBUG_TRACE for DiskIO; set DiskIOProcess::_need_butler more ↵Paul Davis
appropriately; other minor adjustments
2017-09-18nothing to do anymore at the Track level when input config changesPaul Davis
2017-09-18reinstate input monitoring functionPaul Davis
2017-09-18fully remove diskstream codePaul Davis
2017-09-18random changes required to get an audio track created and transport functionalPaul Davis