summaryrefslogtreecommitdiff
path: root/libs
AgeCommit message (Collapse)Author
2017-09-30Immediate-event/out-of-band injection update & tweak clearing buffersRobin Gareus
Immediate events are used for MIDI-Panic and to inject GUI generated events e.g. patch-changes, note-events from the track-header (scroomer-keyboard) and patch-change audition. Current behavior: - snapshot copy immediate events from ringbuffer into a buffer at the beginning of each the cycle. - Inject immediate events into input-buffer directly after reading the input - process "normally" - pass immediate event-buffer to disk-writer, so it can skip them (don't write immediate events to disk) - if the Route is not monitoring input: clear buffer before disk-reader and re-inject (original) immediate events after the disk-reader - immediate events process normally and are also sent to outputs.
2017-09-30MIDI debugging.Robin Gareus
2017-09-30Remove unused IO::process_input() APIRobin Gareus
This was only needed in order to run the meter on inputs when Ardour did no processing at all.
2017-09-30NO-OP, re-order code, put all *roll() methods next to each other.Robin Gareus
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 unused Route::_silentRobin Gareus
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-30Re-initialize MMC devices when the preference is enabledRobin Gareus
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-30Fix thinko in 8139becb -- route split cycleRobin Gareus
Individual Routes cannot split the process-cycle in no_roll(); roll() by themselves. Each of the calls will flush output buffers (and offset port-buffers). If a route feeds another route the inputs of the other route will only see partial data.
2017-09-30Disk-reader don't silence buffers when not rollingRobin Gareus
Doing so may clear out-of-band data which is injected into the data-stream.
2017-09-30Fix MIDI port offsets.Robin Gareus
AudioPort::get_audio_buffer() can offset the buffer simply by offsetting a pointer. This allows to get an offset buffer for a given port. For MIDI there's no such concept. A method writing to a MIDI buffer which is backed by a Port can at best offset it by the global port-buffer offset (static Port::port_offset), but not by the individual target port's offset.
2017-09-30Align punch in/out recording with latency-compensationRobin Gareus
2017-09-29amend ccedb2d44Robin Gareus
2017-09-29remove cruftRobin Gareus
2017-09-29remove *.orig files (accidentally added in cba53a202)Robin Gareus
2017-09-29Remove unused punch+preroll APIRobin Gareus
This API was not used, also superseded by record w/preroll.
2017-09-29Convert Diskstream/Playlist from A5 session formatRobin Gareus
2017-09-29remove cruftRobin Gareus
2017-09-29Add DiskIOProc & Latency related Lua bindings & scriptsRobin Gareus
2017-09-29Aux-Send Latency compensation, part 2 & code-consolidationRobin Gareus
2017-09-29Update Send: Include internal 'thru' delay-lineRobin Gareus
This allows to push latency upstream and delay the source in case the destination has a longer latency. Also add a signal to notify the Session in case this happens, intended to queue a latency-recompute.
2017-09-29Aux-Send Latency compensation, part 1: latent sourcesRobin Gareus
2017-09-29Update Timecode Generator/Slave alignmentRobin Gareus
2017-09-29Delayline: report if set_delay() actually changed the delayRobin Gareus
2017-09-29Delayline naming -- for debug purposesRobin Gareus
2017-09-29Properly aligned export (Stem + Session)Robin Gareus
Delay ports being exported by their playback latency.
2017-09-29Remove unused mechanismRobin Gareus
2017-09-29Update the Metronome, align to outputRobin 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-29Add API to query IO latenciesRobin Gareus
IO::connected_latency() is relevant once Ardour publishes individual per Port latency. IO::public_latency() is only for debug purposes.
2017-09-29Add Processor API for global session-transport alignmentRobin Gareus
These are only relevant for DiskIO Processors, however more use-cases may present themselves (e.g. LuaDSP)
2017-09-29Prepare removal of initial_delayRobin Gareus
2017-09-29clean up route header, NO-OP (except variable re-order)Robin Gareus
2017-09-29NO-OP: WhitespaceRobin Gareus
2017-09-29Remove code related to capture-offset.Robin Gareus
2017-09-29No more disk-reader roll-delayRobin Gareus
It was not working in sdio/6.0-pre anyway and with upcoming changes to latency compensation the concept of per disk[stream/reader] will go away.
2017-09-28Check in a few MSVC projects to accommodate the change from libtimecode to ↵John Emmas
libtemporal This is mostly to see if there'll be any problems when merging these changes into Mixbus. I'm guessing there'll be some conflicts in these projects (and a lot more to follow...)
2017-09-28Accommodate newly added/removed source(s) in our MSVC project (libwidgets)John Emmas
2017-09-28Accommodate newly added/removed source(s) in our MSVC project (libtemporal)John Emmas
2017-09-28Rename 'libs/temporal/MSVCtemporal/timecode.vcproj' to ↵John Emmas
'libs/temporal/MSVCtemporal/temporal.vcproj'
2017-09-28Rename 'libs/temporal/MSVCtimecode' to 'libs/temporal/MSVCtemporal'John Emmas
2017-09-28Propagate Latency to backend/system ports (Dummy backend)Robin Gareus
amend ab3889ff (which implements this for other backends)
2017-09-26Export needs to offset buffers when processing partial cycleRobin Gareus
2017-09-26Fix FixedDelayline, default configuration increased set max-delayRobin Gareus
2017-09-25change libtemporal to be versioned like all othersPaul Davis
2017-09-25additional changes to follow library name change from timecode -> temporalPaul Davis
2017-09-25Retire ClickBox + AutoSpinRobin Gareus
After over 17 years of honorable service to the Ardour Codebase. ClickBox and AutoSpin are retiring into the git nirvana. We're glad for the duty, decency, reliability, dignity, respect which these classes brought to Arodur and look back in gratitude on their years of service. PS. First one to say "cruft" will be fired.
2017-09-24Simplify the logic of on_scroll_eventJulien "_FrnchFrgg_" RIVAUD
2017-09-24Make ArdourFader's scroll handler obey to Alignment incrementsJulien "_FrnchFrgg_" RIVAUD
Currently, the scroll handler obeys to the page increment, but instead of using the step increment for more precise scroll, it uses an hardcoded one tenth of the page increment. Use the step increment instead since it has been filled with sensible values by ArdourFader's users.