13
0
Commit Graph

25731 Commits

Author SHA1 Message Date
27b02b672a remove cruft 2017-09-29 06:32:10 +02:00
1339d42c78 Add DiskIOProc & Latency related Lua bindings & scripts 2017-09-29 05:03:48 +02:00
2b20f30d81 Aux-Send Latency compensation, part 2 & code-consolidation 2017-09-29 05:03:48 +02:00
9f9e948d84 Update Send: Include internal 'thru' delay-line
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-29 05:03:48 +02:00
ddd4e3cf1d Aux-Send Latency compensation, part 1: latent sources 2017-09-29 05:03:48 +02:00
f974cd5401 Update Timecode Generator/Slave alignment 2017-09-29 05:03:48 +02:00
eb6df8939d Delayline: report if set_delay() actually changed the delay 2017-09-29 05:03:48 +02:00
5a2ea4d0e2 Delayline naming -- for debug purposes 2017-09-29 05:03:48 +02:00
24ec0b974d Properly aligned export (Stem + Session)
Delay ports being exported by their playback latency.
2017-09-29 05:03:48 +02:00
a6cc58d757 Remove unused mechanism 2017-09-29 05:03:48 +02:00
519576c31f Update the Metronome, align to output 2017-09-29 05:03:48 +02:00
8139becb18 Ongoing work on latency compensation
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-29 05:03:48 +02:00
8ff3b5ecf6 Add API to query IO latencies
IO::connected_latency() is relevant once Ardour publishes individual
per Port latency.

IO::public_latency() is only for debug purposes.
2017-09-29 05:03:48 +02:00
491523d6b7 Add Processor API for global session-transport alignment
These are only relevant for DiskIO Processors, however more
use-cases may present themselves (e.g. LuaDSP)
2017-09-29 05:03:48 +02:00
69b9ad6bcc Prepare removal of initial_delay 2017-09-29 05:03:48 +02:00
3d1e1d7213 clean up route header, NO-OP (except variable re-order) 2017-09-29 05:03:48 +02:00
abb7cb90e7 NO-OP: Whitespace 2017-09-29 05:03:48 +02:00
2fa1f1b0b3 Remove code related to capture-offset. 2017-09-29 05:03:48 +02:00
d98f87d542 No more disk-reader roll-delay
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-29 05:03:48 +02:00
bcdb3aec3a Check in a few MSVC projects to accommodate the change from libtimecode to 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-28 12:27:56 +01:00
7f327905a0 Accommodate newly added/removed source(s) in our MSVC project (libwidgets) 2017-09-28 12:27:55 +01:00
b2032938b1 Accommodate newly added/removed source(s) in our MSVC project (libtemporal) 2017-09-28 12:27:54 +01:00
657ba64ad2 Rename 'libs/temporal/MSVCtemporal/timecode.vcproj' to 'libs/temporal/MSVCtemporal/temporal.vcproj' 2017-09-28 12:27:54 +01:00
2750f7f485 Rename 'libs/temporal/MSVCtimecode' to 'libs/temporal/MSVCtemporal' 2017-09-28 12:27:53 +01:00
7e2c002ef6 Propagate Latency to backend/system ports (Dummy backend)
amend ab3889ff (which implements this for other backends)
2017-09-28 13:14:11 +02:00
8916784352 Update session-utils Readme 2017-09-27 20:03:08 +02:00
e96fd26f3f Minor refinement of new session util 2017-09-27 18:50:24 +02:00
476952f2b6 Add session-util to create a new empty session 2017-09-27 18:22:49 +02:00
eb928b05e9 More s/frame/sample/ -- Lua Scripts
Sadly this breaks existing loaded scripts. C'est la vie.
2017-09-27 05:03:10 +02:00
53fb2f6235 Another Lua example script
* Track template
* MIDI track creation
* Adding plugins and setting parameters
* Dialogs
2017-09-26 20:49:50 +02:00
b137a2982f Export needs to offset buffers when processing partial cycle 2017-09-26 17:52:43 +02:00
a80c8e1bb7 Fix FixedDelayline, default configuration increased set max-delay 2017-09-26 17:52:35 +02:00
61be0990fa change libtemporal to be versioned like all others 2017-09-25 12:13:54 -04:00
dcb55c508e additional changes to follow library name change from timecode -> temporal 2017-09-25 12:13:54 -04:00
f27ff4c8b8 Retire ClickBox + AutoSpin
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-25 15:45:27 +02:00
fe964ccfdf Remove unused ClickBox 2017-09-25 15:45:23 +02:00
74c986534b Simplify the logic of on_scroll_event 2017-09-24 22:58:59 +02:00
564fcb2132 Make ArdourFader's scroll handler obey to Alignment increments
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.
2017-09-24 22:58:59 +02:00
a982a7cc67 Fix computation of AutomationController steps
smallstep (resp. largestep) is intended to be the interface delta
corresponding to a desc.smallstep (resp. largestep) in internal scale,
and is computed by incrementing from desc.lower.

But ac->internal_to_interface(desc.lower) isn't necessarily zero. In
fact it currently is 0.5 / (M - m + 1) for integer parameters where M is
the maximum and m is the minimum possible value since it is the center
of the [0,1/(M-m+1)] interval.

Since the lower bound of the delta isn't always zero, don't ignore it
when computing the actual increment.
2017-09-24 22:58:59 +02:00
0910df0cc7 fix ardev and friends to use new libtemporal 2017-09-24 16:13:07 -04:00
b9c6ffac21 fix header order and space alignment 2017-09-24 12:57:27 -04:00
7db12f6b12 convert codebase to use Temporal for various time types 2017-09-24 12:03:54 -04:00
9283bee867 new header file for audio-based time types 2017-09-24 12:03:13 -04:00
48d402c960 part two of initial libtemporal creation 2017-09-24 10:48:00 -04:00
b62c305f20 change libtimecode to libtemporal, add Evoral::Beats, positional types and superclock headers 2017-09-24 10:47:28 -04:00
8890494ba3 add (back) nutemp makefile 2017-09-24 09:03:52 -04:00
d931f4f69d The beginning of the end for ClickBox
This fixes various issues with integer controls (some values are not
reachable due to incorrect rounding in AutoSpin) and also pulls
in the various benefits of BarController:
  * mouse-drags
  * numeric entry
  * alternative entry modes (piano-keyboard, tempo-based values)

If this style remains, ClickBox & AutoSpin should be removed from
the codebase.
2017-09-23 19:42:04 +02:00
39fb5762b0 Add API set bar-controller spinbox digits
..and reduce default to 4 digits.
2017-09-23 19:39:36 +02:00
a9c8a25fc4 prefer floor() over round(), this avoids "-0"
GUI interface values are always in the range 0..1 so there's no abiguity
with trunc()
2017-09-23 18:59:39 +02:00
d50c738203 NO-OP: whitespace 2017-09-23 02:31:52 +02:00