Robin Gareus [Fri, 29 Sep 2017 02:44:00 +0000 (04:44 +0200)]
Update the Metronome, align to output
Robin Gareus [Thu, 28 Sep 2017 04:31:12 +0000 (06:31 +0200)]
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.
Robin Gareus [Thu, 28 Sep 2017 04:08:30 +0000 (06:08 +0200)]
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.
Robin Gareus [Thu, 28 Sep 2017 04:04:58 +0000 (06:04 +0200)]
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)
Robin Gareus [Thu, 28 Sep 2017 03:57:57 +0000 (05:57 +0200)]
Prepare removal of initial_delay
Robin Gareus [Thu, 28 Sep 2017 03:54:42 +0000 (05:54 +0200)]
clean up route header, NO-OP (except variable re-order)
Robin Gareus [Wed, 20 Sep 2017 21:12:03 +0000 (23:12 +0200)]
NO-OP: Whitespace
Robin Gareus [Thu, 28 Sep 2017 02:42:13 +0000 (04:42 +0200)]
Remove code related to capture-offset.
Robin Gareus [Sat, 23 Sep 2017 22:54:26 +0000 (00:54 +0200)]
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.
John Emmas [Thu, 28 Sep 2017 11:23:53 +0000 (12:23 +0100)]
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...)
John Emmas [Thu, 28 Sep 2017 11:19:34 +0000 (12:19 +0100)]
Accommodate newly added/removed source(s) in our MSVC project (libwidgets)
John Emmas [Thu, 28 Sep 2017 11:19:10 +0000 (12:19 +0100)]
Accommodate newly added/removed source(s) in our MSVC project (libtemporal)
John Emmas [Thu, 28 Sep 2017 09:21:54 +0000 (10:21 +0100)]
Rename 'libs/temporal/MSVCtemporal/timecode.vcproj' to 'libs/temporal/MSVCtemporal/temporal.vcproj'
John Emmas [Thu, 28 Sep 2017 09:18:53 +0000 (10:18 +0100)]
Rename 'libs/temporal/MSVCtimecode' to 'libs/temporal/MSVCtemporal'
Robin Gareus [Thu, 28 Sep 2017 11:14:11 +0000 (13:14 +0200)]
Propagate Latency to backend/system ports (Dummy backend)
amend
ab3889ff (which implements this for other backends)
Robin Gareus [Wed, 27 Sep 2017 18:03:08 +0000 (20:03 +0200)]
Update session-utils Readme
Robin Gareus [Wed, 27 Sep 2017 16:50:24 +0000 (18:50 +0200)]
Minor refinement of new session util
Robin Gareus [Wed, 27 Sep 2017 16:22:49 +0000 (18:22 +0200)]
Add session-util to create a new empty session
Robin Gareus [Wed, 27 Sep 2017 03:03:10 +0000 (05:03 +0200)]
More s/frame/sample/ -- Lua Scripts
Sadly this breaks existing loaded scripts. C'est la vie.
Robin Gareus [Tue, 26 Sep 2017 18:49:50 +0000 (20:49 +0200)]
Another Lua example script
* Track template
* MIDI track creation
* Adding plugins and setting parameters
* Dialogs
Robin Gareus [Tue, 26 Sep 2017 15:39:42 +0000 (17:39 +0200)]
Export needs to offset buffers when processing partial cycle
Robin Gareus [Tue, 26 Sep 2017 15:39:00 +0000 (17:39 +0200)]
Fix FixedDelayline, default configuration increased set max-delay
Paul Davis [Mon, 25 Sep 2017 16:13:46 +0000 (12:13 -0400)]
change libtemporal to be versioned like all others
Paul Davis [Mon, 25 Sep 2017 15:12:32 +0000 (11:12 -0400)]
additional changes to follow library name change from timecode -> temporal
Robin Gareus [Mon, 25 Sep 2017 03:21:53 +0000 (05:21 +0200)]
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.
Robin Gareus [Mon, 25 Sep 2017 03:22:05 +0000 (05:22 +0200)]
Remove unused ClickBox
Julien "_FrnchFrgg_" RIVAUD [Sun, 24 Sep 2017 19:37:19 +0000 (21:37 +0200)]
Simplify the logic of on_scroll_event
Julien "_FrnchFrgg_" RIVAUD [Sun, 24 Sep 2017 19:20:20 +0000 (21:20 +0200)]
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.
Robin Gareus [Sun, 24 Sep 2017 19:10:31 +0000 (21:10 +0200)]
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.
Paul Davis [Sun, 24 Sep 2017 20:13:07 +0000 (16:13 -0400)]
fix ardev and friends to use new libtemporal
Paul Davis [Sun, 24 Sep 2017 16:57:27 +0000 (12:57 -0400)]
fix header order and space alignment
Paul Davis [Sun, 24 Sep 2017 16:03:54 +0000 (12:03 -0400)]
convert codebase to use Temporal for various time types
Paul Davis [Sun, 24 Sep 2017 16:03:13 +0000 (12:03 -0400)]
new header file for audio-based time types
Paul Davis [Sun, 24 Sep 2017 14:48:00 +0000 (10:48 -0400)]
part two of initial libtemporal creation
Paul Davis [Sun, 24 Sep 2017 14:47:28 +0000 (10:47 -0400)]
change libtimecode to libtemporal, add Evoral::Beats, positional types and superclock headers
Paul Davis [Wed, 20 Sep 2017 19:46:34 +0000 (15:46 -0400)]
add (back) nutemp makefile
Robin Gareus [Sat, 23 Sep 2017 17:40:55 +0000 (19:40 +0200)]
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.
Robin Gareus [Sat, 23 Sep 2017 17:39:36 +0000 (19:39 +0200)]
Add API set bar-controller spinbox digits
..and reduce default to 4 digits.
Robin Gareus [Sat, 23 Sep 2017 16:59:39 +0000 (18:59 +0200)]
prefer floor() over round(), this avoids "-0"
GUI interface values are always in the range 0..1 so there's no abiguity
with trunc()
Robin Gareus [Sat, 23 Sep 2017 00:31:52 +0000 (02:31 +0200)]
NO-OP: whitespace
Robin Gareus [Sat, 23 Sep 2017 00:31:00 +0000 (02:31 +0200)]
Fix changing playlist (Track is responsible for signal emission)
Robin Gareus [Fri, 22 Sep 2017 23:57:25 +0000 (01:57 +0200)]
Fix crash in playlist selector for removed tracks.
Removing a Track does not delete its playlists and one can keep
Playlists after Cleanup. Don't crash if a the track that the playlist
originally belonged to does no longer exist.
Robin Gareus [Fri, 22 Sep 2017 23:06:10 +0000 (01:06 +0200)]
amend
ab3889ff: portaudio backend uses a vector for connections
Robin Gareus [Fri, 22 Sep 2017 22:18:18 +0000 (00:18 +0200)]
Consolidate check for internal/non-removable processors
Robin Gareus [Fri, 22 Sep 2017 13:28:00 +0000 (15:28 +0200)]
Propagate Latency to backend/system ports
Set accumulated capture-latency for physical-outputs
and accumulated playback-latency for physical-inputs
after Ardour is done setting all non-physical port latencies.
This will be needed for latency-compensation of the complete graph.
Robin Gareus [Fri, 22 Sep 2017 22:11:21 +0000 (00:11 +0200)]
Fix order of [initial] latency-computation
Session::post_playback_latency() sets the actual route latency,
so that playback latency notifications need to come after capture-
latency (backends follow the same rule: capture first).
NB. Session::initialize_latencies() was already using the correct order
Robin Gareus [Fri, 22 Sep 2017 02:15:56 +0000 (04:15 +0200)]
NO-OP: whitespace
Robin Gareus [Fri, 22 Sep 2017 15:16:04 +0000 (17:16 +0200)]
Fix issue with Template manager deleting templates on no-rename
If old-name equals new-name, g_rename () will fail and cleanup
will delete new-path (which is equal to old-path)
Robin Gareus [Fri, 22 Sep 2017 01:47:38 +0000 (03:47 +0200)]
Enforce disk-reader to be after the disk-writer
If disk-monitoring is disabled: disk-reader position is not relevant.
If Rec-arm is off: disk-writer position is not relevant.
But...
Play -> [plugins] -> Record
is basically a bounce and best done using the bounce operation.
(faster than realtime).
Input + Play -> Record -> Output
Ardour would need to align playback with the Input to be recorded
and at the same time align it with output, so that a player can play
along on the same track. That's not possible without a time-machine (or
a 2nd play processor).
While it can work in theory under some special circumstances, allowing
the disk-reader before the disk-writer is really just confusing,
error prone and valid uses cases are better handled by dedicated
operations.
Robin Gareus [Thu, 21 Sep 2017 23:52:48 +0000 (01:52 +0200)]
NO-OP: whitespace
Robin Gareus [Thu, 21 Sep 2017 23:52:37 +0000 (01:52 +0200)]
AlignmentChoise is a Track Property
The DiskWriter uses AlignStyle which is set dynamically
by the Track and may depend on I/O connections.
Robin Gareus [Thu, 21 Sep 2017 18:02:11 +0000 (20:02 +0200)]
Don't recurse into MacVST bundle-folders during plugin-scan
Robin Gareus [Thu, 21 Sep 2017 17:38:13 +0000 (19:38 +0200)]
fix clang compilation (include header ordering)
"i18n.h" needs to be included last, after types have been defined or
clang bails out:
"call to function 'operator<<' is not visible in the template definition"
Robin Gareus [Thu, 21 Sep 2017 15:35:52 +0000 (17:35 +0200)]
Fix crash when unloading a partially loaded session.
Robin Gareus [Thu, 21 Sep 2017 00:00:05 +0000 (02:00 +0200)]
s/created with/modified with/
Once a session has been saved by a more recent version or a different
variant, the session file is tied to that version/variant.
The created-with version is only for debug purposes and internal use.
Julien "_FrnchFrgg_" RIVAUD [Wed, 20 Sep 2017 15:59:13 +0000 (17:59 +0200)]
Don't try to limit the UI width if no screen is found
Robin Gareus [Wed, 20 Sep 2017 12:15:27 +0000 (14:15 +0200)]
Clean up and fix win x-compile script
Robin Gareus [Wed, 20 Sep 2017 12:06:04 +0000 (14:06 +0200)]
Fix buildstack revision report
Julien "_FrnchFrgg_" RIVAUD [Wed, 20 Sep 2017 06:56:44 +0000 (08:56 +0200)]
Bail out early if a screen isn't found
Paul Davis [Wed, 20 Sep 2017 01:39:46 +0000 (21:39 -0400)]
fix boolean logic for roll_delay vs. disk_samples_to_consume
Paul Davis [Wed, 20 Sep 2017 01:38:34 +0000 (21:38 -0400)]
do not advance DiskReader's idea of playback_sample while waiting for _roll_delay to expire
Paul Davis [Wed, 20 Sep 2017 01:38:15 +0000 (21:38 -0400)]
clearer catastrophic error message, rather than assert()
Robin Gareus [Tue, 19 Sep 2017 23:29:46 +0000 (01:29 +0200)]
Add Lua script to print signal latencies
Paul Davis [Tue, 19 Sep 2017 22:53:27 +0000 (18:53 -0400)]
attempt to fix roll delay logic by moving it into DiskReader (the only place it matters)
Paul Davis [Tue, 19 Sep 2017 22:38:40 +0000 (18:38 -0400)]
fix GTK+ warnings when trying to determine maximum screen size without a Gdk::Window
Robin Gareus [Tue, 19 Sep 2017 21:08:05 +0000 (23:08 +0200)]
Explicit key-event forwarding for MacVST
Robin Gareus [Tue, 19 Sep 2017 18:26:26 +0000 (20:26 +0200)]
Fix buildstack report
Robin Gareus [Tue, 19 Sep 2017 16:41:51 +0000 (18:41 +0200)]
A frame can also be a rectangle [NSView frame]
Robin Gareus [Tue, 19 Sep 2017 16:40:29 +0000 (18:40 +0200)]
Revert some more frame/sample API issues
Paul Davis [Tue, 19 Sep 2017 14:09:37 +0000 (10:09 -0400)]
Revert "remove unusued roll_delay member of DiskReader"
This reverts commit
92c2e06eb72950f91ca943a5219e2caeaeecda9f.
Paul Davis [Tue, 19 Sep 2017 14:03:40 +0000 (10:03 -0400)]
fix unintentionally edited color/theme name from f2s edit
Paul Davis [Tue, 19 Sep 2017 13:45:30 +0000 (09:45 -0400)]
remove unusued roll_delay member of DiskReader
Robin Gareus [Tue, 19 Sep 2017 15:03:28 +0000 (17:03 +0200)]
Fix nightly typos'n'thinkos: initial-delay calculation
R. Mattes [Tue, 19 Sep 2017 12:22:46 +0000 (14:22 +0200)]
Fixed typo
Paul Davis [Tue, 19 Sep 2017 12:00:46 +0000 (08:00 -0400)]
correct version in pre-release warning
John Emmas [Tue, 19 Sep 2017 11:22:06 +0000 (12:22 +0100)]
Accommodate newly added/removed source(s) in our MSVC project (libardour)
Robin Gareus [Tue, 19 Sep 2017 03:36:57 +0000 (05:36 +0200)]
More s/frame/sample/ - fixes unit-test compilation
"frame" in #include file-names was replaced, this actually renames
the files to follow suit.
Robin Gareus [Tue, 19 Sep 2017 03:20:05 +0000 (05:20 +0200)]
More Coreaudio SDK fixes, after
30b087ab3
Robin Gareus [Tue, 19 Sep 2017 02:54:42 +0000 (04:54 +0200)]
Amend
c8a9b28d3 and
40aebce. Fix gain automation edge-cases:
* drop Trim/Fader automation for bypassed processor
* Trim/Fader automation for Busses is always active when rolling
Robin Gareus [Tue, 19 Sep 2017 02:46:02 +0000 (04:46 +0200)]
partially revert
30b087ab3, CoreAudio SDK uses "Frames"
Paul Davis [Tue, 19 Sep 2017 02:21:27 +0000 (22:21 -0400)]
remove getter for Amp::_apply_automation_gain; reset member to false after use, and true after ::setup_automation_gain
runs successfully
Paul Davis [Tue, 19 Sep 2017 01:27:55 +0000 (21:27 -0400)]
consolidate roll methods into Route::roll()
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
Robin Gareus [Tue, 19 Sep 2017 00:10:38 +0000 (02:10 +0200)]
Various updates and fixes for Latency Compensation
* centralize signal_latency_at_***_position to processors
* update initial-delay/roll-delay when processor order changes
* consolidate signal-latency calculation: use the same method
for processor-changes and session's post_playback_latency.
* include relative output-delay in roll-delay
* fix capture processor position & optimize stem-export latency
(roll-delay fixes pending Route:roll() update)
Paul Davis [Mon, 18 Sep 2017 18:59:06 +0000 (14:59 -0400)]
remove debug output
Paul Davis [Mon, 18 Sep 2017 18:45:56 +0000 (14:45 -0400)]
manually fix up various cases where Gtk:Frame foo_frame had been changed to foo_sample
Robin Gareus [Mon, 18 Sep 2017 18:41:43 +0000 (20:41 +0200)]
amend prev. commit
Robin Gareus [Mon, 18 Sep 2017 18:30:40 +0000 (20:30 +0200)]
Tweak default config
* disable MMC by default
* auto-detect audition-synth at first run (prefer gmsynth if available)
Robin Gareus [Mon, 18 Sep 2017 17:38:54 +0000 (19:38 +0200)]
Enoify v6.x
Paul Davis [Mon, 18 Sep 2017 17:38:44 +0000 (13:38 -0400)]
Disk IO "pre-fader" means pre-trim, not post-trim
Len Ovens [Mon, 18 Sep 2017 17:27:25 +0000 (10:27 -0700)]
Menu Action list omit leading /
Paul Davis [Mon, 18 Sep 2017 17:24:04 +0000 (13:24 -0400)]
NO-OP: reindent
Paul Davis [Mon, 18 Sep 2017 17:19:12 +0000 (13:19 -0400)]
manually fix up comments in libs/timecode/src/time.cc that got edited by f2s
Paul Davis [Mon, 18 Sep 2017 16:39:17 +0000 (12:39 -0400)]
globally change all use of "frame" to refer to audio into "sample".
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
Paul Davis [Mon, 18 Sep 2017 15:53:47 +0000 (11:53 -0400)]
fix issue with initialization of a BBT_Time variable.
Paul Davis [Mon, 18 Sep 2017 14:36:57 +0000 (10:36 -0400)]
change iteratory indirection syntax, remove debug output
Paul Davis [Fri, 15 Sep 2017 03:07:07 +0000 (23:07 -0400)]
added TempoMap::Changed signal
Paul Davis [Fri, 15 Sep 2017 02:50:08 +0000 (22:50 -0400)]
add back-pointer to TempoMap from points, and push dirty=true into map
Paul Davis [Fri, 15 Sep 2017 01:57:41 +0000 (21:57 -0400)]
more changes to broken-out tempo code
fetching grid and bar-centric grid now works, removed debug output, cleaned up ::rebuild
to do the right thing, fixed up some ::foo_at_bar() method implementations
Paul Davis [Thu, 14 Sep 2017 16:19:52 +0000 (12:19 -0400)]
continuing miscellaneous work on broken-out tempo code
Paul Davis [Wed, 13 Sep 2017 23:34:54 +0000 (19:34 -0400)]
add a _locked variant for TempoMap::dump()