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
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
94cce9e06e
Fix changing playlist (Track is responsible for signal emission)
2017-09-23 02:31:00 +02:00
e39a8b90d9
amend ab3889ff
: portaudio backend uses a vector for connections
2017-09-23 01:06:10 +02:00
13cf4da011
Consolidate check for internal/non-removable processors
2017-09-23 00:34:01 +02:00
ab3889fff8
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.
2017-09-23 00:34:01 +02:00
25f45022db
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
2017-09-23 00:34:01 +02:00
c681e9d4d7
NO-OP: whitespace
2017-09-23 00:34:01 +02:00
aac8040e95
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.
2017-09-22 03:47:38 +02:00
431b2f15c6
NO-OP: whitespace
2017-09-22 01:52:48 +02:00
7a51d8f768
AlignmentChoise is a Track Property
...
The DiskWriter uses AlignStyle which is set dynamically
by the Track and may depend on I/O connections.
2017-09-22 01:52:37 +02:00
506a29e2d3
Don't recurse into MacVST bundle-folders during plugin-scan
2017-09-21 20:02:11 +02:00
4e5423b348
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"
2017-09-21 19:38:13 +02:00
87f5cd30d1
Fix crash when unloading a partially loaded session.
2017-09-21 17:35:52 +02:00
0fd861d8de
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.
2017-09-21 02:01:12 +02:00
7d559de3d0
fix boolean logic for roll_delay vs. disk_samples_to_consume
2017-09-19 21:39:46 -04:00
0a4b9ffba5
do not advance DiskReader's idea of playback_sample while waiting for _roll_delay to expire
2017-09-19 21:38:59 -04:00
bda2e9738f
clearer catastrophic error message, rather than assert()
2017-09-19 21:38:59 -04:00
48d11000e5
attempt to fix roll delay logic by moving it into DiskReader (the only place it matters)
2017-09-19 18:53:27 -04:00
59ccf91eea
Revert some more frame/sample API issues
2017-09-19 18:40:29 +02:00
ebf6856579
Revert "remove unusued roll_delay member of DiskReader"
...
This reverts commit 92c2e06eb72950f91ca943a5219e2caeaeecda9f.
2017-09-19 11:15:22 -04:00
e44ae422eb
remove unusued roll_delay member of DiskReader
2017-09-19 11:15:22 -04:00
21aa2f529f
Fix nightly typos'n'thinkos: initial-delay calculation
2017-09-19 17:03:28 +02:00
R. Mattes
f7e35024b6
Fixed typo
2017-09-19 08:34:04 -04:00
2c31867c8a
Accommodate newly added/removed source(s) in our MSVC project (libardour)
2017-09-19 12:22:06 +01:00
16f9f58057
More s/frame/sample/ - fixes unit-test compilation
...
"frame" in #include file-names was replaced, this actually renames
the files to follow suit.
2017-09-19 05:37:58 +02:00
666aa5a557
More Coreaudio SDK fixes, after 30b087ab3
2017-09-19 05:20:05 +02:00
29e553ab86
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
2017-09-19 04:54:42 +02:00
1ec471c961
partially revert 30b087ab3
, CoreAudio SDK uses "Frames"
2017-09-19 04:47:10 +02:00
c8a9b28d3b
remove getter for Amp::_apply_automation_gain; reset member to false after use, and true after ::setup_automation_gain
...
runs successfully
2017-09-18 22:21:27 -04:00
40aebce699
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
2017-09-18 21:28:02 -04:00
10b76ae631
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)
2017-09-19 02:11:22 +02:00
013088ca5f
remove debug output
2017-09-18 14:59:11 -04:00
d381714510
amend prev. commit
2017-09-18 20:41:43 +02:00
d36e909ad4
Tweak default config
...
* disable MMC by default
* auto-detect audition-synth at first run (prefer gmsynth if available)
2017-09-18 20:30:40 +02:00
0a53b13de5
Disk IO "pre-fader" means pre-trim, not post-trim
2017-09-18 13:41:28 -04:00
c755a6c12c
NO-OP: reindent
2017-09-18 13:24:04 -04:00
7a477fb9d6
manually fix up comments in libs/timecode/src/time.cc that got edited by f2s
2017-09-18 13:19:12 -04:00
30b087ab3d
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
2017-09-18 12:39:17 -04:00
cb956e3e48
fix issue with initialization of a BBT_Time variable.
2017-09-18 11:53:47 -04:00
cba53a2023
add _locked() variants to new tempo experiment
2017-09-18 11:40:54 -04:00
6f553ce988
changes required to operate with the Evoral::Beats ticktime commit
2017-09-18 11:40:53 -04:00
5ef0135283
remove Evoral types.cpp since it is no longer required
2017-09-18 11:40:53 -04:00
89f105892c
new header file for superclock stuff
2017-09-18 11:40:53 -04:00
176cdecd03
extend/fix/improve operator overloads and methods for Timecode::BBT_Time
2017-09-18 11:40:53 -04:00
9ea43bd5ad
extend/fix/improve operator overloads and methods for Evoral::Beats
2017-09-18 11:40:53 -04:00
f4f0e70320
NOOP: formatting
2017-09-18 11:40:53 -04:00
3f50ace767
::find_next_event() does not need to be a pure virtual in ControlSet (it can originate in AutomatableSequence)
2017-09-18 11:40:53 -04:00
789b98e6f2
remove locate debugging output
2017-09-18 11:40:53 -04:00
ac8dc40035
fix for loading older sessions, where the rest for "is-track" was "has-diskstream", rather than "has-playlist"
2017-09-18 11:40:53 -04:00
de7963941d
Don't build ni-maschine support by default
...
While the pads work, overall integration is still not present, mainly
because the device does not lend itself for editing & mixing in a
DAW environment.
2017-09-18 11:40:53 -04:00
a71171786f
Maschine2 UI: basic widgets
2017-09-18 11:40:53 -04:00
0a6d1ab06e
Skeleton for NI Maschine2 Surface
2017-09-18 11:40:53 -04:00
eeeb8563c2
sort of no-op ... remove debug output ... just basically put it in git so that i can fetch it on another machine
2017-09-18 11:40:53 -04:00
f8de3e0c6e
reinstate "restart seek" behaviour but use a new Session::_seek_counter member variable for this
2017-09-18 11:40:53 -04:00
828b95b526
no more locate-restart based on mismatch transport_frame and locate target
2017-09-18 11:40:53 -04:00
8033fd9912
remove tests for locate_pending() before deciding whether to increment transport position
2017-09-18 11:40:53 -04:00
9836cd3943
more verbose debug output for slave debugging
2017-09-18 11:40:53 -04:00
7149d72625
verbose debug output for slave debugging
2017-09-18 11:40:53 -04:00
b5e1877297
attempt fix for LTC slave when locating
2017-09-18 11:40:53 -04:00
b61146365f
delete slave during Session::destroy
2017-09-18 11:40:53 -04:00
d3404f3684
fix logic error that prevent input monitoring during slave wait states
2017-09-18 11:40:53 -04:00
2212403431
don't attempt MIDI playback if there are no MIDI buffers provided for processing
2017-09-18 11:40:53 -04:00
b115a04bab
additional DEBUG_TRACE output for slave/diskreader
2017-09-18 11:40:53 -04:00
5c0ce7311a
reset DiskReader "no disk output" flag in a couple of exceptional cases
2017-09-18 11:40:53 -04:00
9d423bb12c
remove debug output
2017-09-18 11:40:53 -04:00
650953ed14
Non-layered MIDI recording
...
hand-adapted version of d977cc3238
from master
This does not merge MIDI data, but trims MIDI regions at rec-stop like
non-layered audio-recording does.
2017-09-18 11:40:53 -04:00
2a192dbbd6
remove debug output
2017-09-18 11:40:53 -04:00
38e9487564
when calculating average slave/master delta, use absolute value.
...
We're interested in average distance between slave/master, the direction is irrelevant and
using sign as direction causes the computed average to be absurd
2017-09-18 11:40:53 -04:00
e9dd575ca5
remove all code related to "silent roll" concept. some debug output added
2017-09-18 11:40:53 -04:00
24df2b5594
NO-OP: mark various state property names as explicitly non-translated
2017-09-18 11:40:53 -04:00
13d44c4d76
move disk_{writer,reader} into Route to allow for simple, sensible implementation of DiskIOPoint
2017-09-18 11:40:53 -04:00
9d355f1390
don't (re)create disk reader/writer if they already exist
2017-09-18 11:40:53 -04:00
6038ef44f9
auditioner always runs at normal speed, independent of transport speed
2017-09-18 11:40:53 -04:00
fb430a7738
add to LUA API (new Stripable API)
2017-09-18 11:40:53 -04:00
9da08b5f19
use const
2017-09-18 11:40:53 -04:00
2c0b35fbb1
remove unused + commented line
2017-09-18 11:40:53 -04:00
29d2754c9a
subtle change to _need_butler logic to ensure correct result in mixed-type contexts
2017-09-18 11:40:53 -04:00
59be854f79
reinstate use of a MidiTrack's MIDI filter when reading from disk
2017-09-18 11:40:53 -04:00
8f4d432d73
channel config changes during ::configure_io() must be scoped to ensure they are complete before signals are sent
2017-09-18 11:40:53 -04:00
ece52d3278
move _file_frame from DiskIOProcessor into DiskReader (only place where it is needed); split into by-type array to deal with different rate of audio & MIDI i/o
2017-09-18 11:40:53 -04:00
4dc5be0936
MidiTrack needs to set it's "need butler" status
2017-09-18 11:40:53 -04:00
8b8ce09e9f
use a more useful and accurate heuristic to get ::input_streams() for the auditioner
2017-09-18 11:40:53 -04:00
7a0b53f75e
clear regions from "other" playlist type in auditioner when starting a new audition
2017-09-18 11:40:53 -04:00
6c14f96ddc
auditioner does not care about the state of its diskwriter processor
2017-09-18 11:40:53 -04:00
aaac1e489b
change callers of changed Track::use_new_playlist() API and its implementation
2017-09-18 11:40:53 -04:00
a7431e21db
remove Auditioner::prepare_playlist() - not used
2017-09-18 11:40:53 -04:00
6bc95465d6
add Track::use_default_new_playlist()
2017-09-18 11:40:53 -04:00
1f53c861b8
remove Track::hidden(); replace with Stripable::is_private_route()
2017-09-18 11:40:53 -04:00
838655bd39
emit required signal
2017-09-18 11:40:53 -04:00
4bfc5ddf71
mechanism to allow Track (or other Route-derived type) to add its own processors at the right time
2017-09-18 11:40:53 -04:00
e5ea6d81d8
add enum registration for DiskIOPoint
2017-09-18 11:40:53 -04:00
9885f04fe6
tweaks to disk io point mechanisms
2017-09-18 11:40:53 -04:00
dc4f730ac9
initial (incomplete) framework for DiskIOPoint manipulation
2017-09-18 11:40:53 -04:00
03e99e9866
fix longstanding compiler warning
2017-09-18 11:40:53 -04:00
c431b527ec
new enums for disk i/o positioning
2017-09-18 11:40:53 -04:00
66c5fe41ee
framework for silent-roll-while-slave-syncing
2017-09-18 11:40:53 -04:00
144f95c305
do not queue multiple Locate or LocateRoll events
2017-09-18 11:40:53 -04:00
3d183dc462
debug instrumentation for locate time
2017-09-18 11:40:53 -04:00
e6576e2934
probable fix for out-of-sync issue across tracks after locate
2017-09-18 11:40:53 -04:00
646d6bec7e
when DiskReader checks to see if a locate is in progress, it must be atomic with respect to all DiskReaders
2017-09-18 11:40:53 -04:00
fb9dd1a411
DiskWriter needs to drop source refs in its destructor.
...
SerializedRCUManager can't do this by itself
2017-09-18 11:40:53 -04:00
f76c05851f
change visible name of disk i/o processors
2017-09-18 11:40:53 -04:00
871428576c
do not change Session::_transport_frame is a locate is pending
2017-09-18 11:40:53 -04:00
6fb212a6f6
restart non-RT locate if a new request has been processed by RT context since we started
2017-09-18 11:40:53 -04:00
58ea3d3d8c
adjust debug trace output message
2017-09-18 11:40:53 -04:00
bdf3067a59
comment out debug trace output
2017-09-18 11:40:53 -04:00
5ec3e036ff
comment out debug trace output
2017-09-18 11:40:53 -04:00
8101d9884f
don't bother to re-seek/locate/refill buffers when disk IO processor config changes unless it actually changed
2017-09-18 11:40:53 -04:00
b0c6273f90
add new debug trace output
2017-09-18 11:40:53 -04:00
3dd6144ff5
comment out debug trace output
2017-09-18 11:40:53 -04:00
9edfe24399
fix logic bug in deciding if there is outstanding disk i/o work in butler
2017-09-18 11:40:53 -04:00
0c51230b9f
comment out debug trace output
2017-09-18 11:40:53 -04:00
9df314d6d5
add new debug trace output
2017-09-18 11:40:53 -04:00
04c43ffd7e
NOOP: remove line split for conditional
2017-09-18 11:40:53 -04:00
d9b456163c
change debug trace output
2017-09-18 11:40:53 -04:00
3be9659637
do not advance pointer; avoids illegal over-read during mix_buffers_no_gain()
2017-09-18 11:40:53 -04:00
30c6096d20
locating no longer interrupts process()
2017-09-18 11:40:53 -04:00
1c603682b7
since Session::fail_roll() just calls ::no_roll() make that more explicit when there's actually no failure
2017-09-18 11:40:53 -04:00
feaabcb6c9
missing file from previous commit
2017-09-18 11:40:53 -04:00
cb0d9f5607
remove InputConfigurationChange from session events, since it is a no-op in this development branch
2017-09-18 11:40:53 -04:00
274726084d
fix up error in manual rebase correction
2017-09-18 11:40:53 -04:00
c6bd033523
update disk writer input latency at transport stop
2017-09-18 11:40:53 -04:00
79abf3dfa6
set + store signal chain latency for all processors; DiskWriter sets its capture_offset appropriately
2017-09-18 11:40:53 -04:00
d4280997fb
the return of MIDI recording, plus refactor to move post-capture playlist manipulations into Track
2017-09-18 11:40:53 -04:00
5ac7d733c2
more DEBUG::Destruction messages
2017-09-18 11:40:53 -04:00
d0faa8e0d6
drop references to disk reader and writer objects in Track destructor
2017-09-18 11:40:53 -04:00
1b058a6ab9
force auditioner to emit GoingAway at the right time, so that its disk reader/writer objects drop their reference
2017-09-18 11:40:53 -04:00
302d15d2c0
drop route shared_ptr when Route::GoingAway is emitted
2017-09-18 11:40:53 -04:00
6827dfe832
fix inadvertent run of Interpolation object when transport speed is zero, leading to a single sample being written when nothing should be.
...
Also, rename "outgoing" as "disk_signal" to be more clear.
2017-09-18 11:40:53 -04:00
341a6f3c00
fix uninitialized variables causing DiskWriters to think they were in some incorrect state(s)
2017-09-18 11:40:53 -04:00
645f68276b
rename a method to be more clear; remove an unused method from DiskReader
2017-09-18 11:40:53 -04:00
8c04457be1
cue monitoring for MIDI
2017-09-18 11:40:53 -04:00
26b13ed5f1
get sdio branch working with MIDI tracks
2017-09-18 11:40:53 -04:00
480b6b81cd
NO-OP: comment
2017-09-18 11:40:53 -04:00
982d173b57
cue monitoring for audio (libardour aspects)
2017-09-18 11:40:53 -04:00
eb24353cad
move channel-count setting for DiskReader so that it actually reflects the correct numbers
2017-09-18 11:40:53 -04:00
51865535b1
fix various naming issues with Disk{Reader,Writer}
2017-09-18 11:40:53 -04:00
0aa5abe6aa
uncomment existing machinery to deal with playlist modifications
2017-09-18 11:40:53 -04:00
3f243303a6
NO-OP: remove placeholder comment
2017-09-18 11:40:53 -04:00
5a52925695
NO-OP explanatory comment
2017-09-18 11:40:53 -04:00
b0d7d6f9fd
NO-OP explanatory comment
2017-09-18 11:40:53 -04:00
94bf944acd
alignment choice now owned by Track, as a proxy for DiskWriter
...
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-18 11:40:53 -04:00
d5ccc7ba98
NO-OP: whitespace inside #if 0
2017-09-18 11:40:53 -04:00
6c29bc1f55
fix iterator initialization
2017-09-18 11:40:53 -04:00
bf973f76e0
set up DiskWriter sources at an appropriate time
2017-09-18 11:40:53 -04:00
690c02c31a
don't crash when recording due to null midi_write_source
2017-09-18 11:40:53 -04:00