Age | Commit message (Collapse) | Author |
|
|
|
|
|
Don't rely on ev->locate_transport_disposition
|
|
|
|
|
|
|
|
loop ends)
|
|
|
|
|
|
Replacement to follow in subsequent commit
|
|
|
|
parenthesis)
|
|
|
|
This likely fixes https://github.com/sfztools/sfizz/issues/221
|
|
|
|
This amends a6ffc6213b92735034bd7dc39638e926bca219da.
apply the offset before the DLL.
|
|
tweak)
|
|
* use left-aligned sign symbol with "sample" unit.
When the delta value jitters in decimal places (e.g. MTC)
it's otherwise no possible to discern + vs -.
* Use white text by default (not green)
|
|
An engine restart sends dis-connect messages for the reverse
port-mapping (after making the connection):
Connect: system:midi_capture_41a56f90 -> ardour:MTC in
Connect: system:capture_1 -> ardour:LTC in
DisConnect: ardour:MTC in -> system:midi_capture_41a56f90
DisConnect: ardour:LTC in -> system:capture_1
This lead to TransportMaster being marked as inactive.
This is likely an issue that should be fixed elsewhere, but in
case of JACK, we likely do not have control over this.
|
|
Offset the detected timecode instead of the detection time.
The latter is used by the DLL and later also used to calculate
delta times which lead to a constant offset.
|
|
|
|
|
|
TransportMasterStart needs to be set when this cycle's delta
can reach _remaining_latency_preroll.
This allows to directly catch the master-position and start
rolling without initial vari-speed.
|
|
This mechanism adds infrastructure that can later also be used
for MTC and MIDIClock.
PS. The LTC Generator port's latency is queried after the port
is created, and later kept in sync via LatencyUpdated signal.
|
|
|
|
|
|
This uses a recently introduce Signal instead of the generic
GraphReordered, which was used in the past since it usually
happened after the latency was changed.
|
|
|
|
* Do not allow new send to change implicit solo (no propagation)
* Propagate changes to due aux-send removal upstream
to tracks or busses connected to the source route.
* Forward solo-isolate
|
|
So far internal-sends were explicitly special-cased, and implicit
solo-state only was only forwarded for direct up/down-stream
connections. ...and nobody can remember why :)
This restriction is removed, so far mainly with commenting-out
code, as experiment.
Internal sends are not only more convenient, but also required
in cases where direct connections result in ambiguous latency.
|
|
|
|
When rolling forward the LTC generator needs to send future
a timestamp, so that when it matches the current time when
the signal arrives at the output port.
(A6 aligns transport playhead to output)
|
|
|
|
For example, when opening a new one, there will momentarily be no session
|
|
|
|
Also remove redundant double call to Track::set_block_size(). This dates back to 2010
when there used be an additional traversal of the Diskstream RCU-managed list, before
they became owned by Tracks
|
|
|
|
|
|
In case of JACK all ports not owned by Ardour may be re-sampled,
and latency is added. External JACK ports need to be treated
like physical ports: I/O latency needs to be taken into account.
When not using JACK, all external ports are physical ports
so this is a NO-OP for other backends.
|
|
|
|
|
|
|
|
This is done in order to set the TransportGenerator flag
|
|
Generator ports (like TransportMaster slaves), should not be
re-sampled when vari-speeding. Instead the Timecode/Clock should
directly use the engine-speed.
For this to happen, they need to be special-cased: no re-sampler
latency, direct access to engine-buffers.
|
|
Since 4508d5bab this only happened after a fade-out.
Currently there is no fade when transport is stopped and monitor
mode changes MonitoringDisk <-> MonitoringInput.
DiskReader::DeclickAmp is only used for data from disk.
Fading live-input data passing through will likely need another
Amp.
|
|
PortManager::cycle_start() excludes these ports from being
resampled. They're directly handled by the TSM, outside of
the session.
|
|
|
|
|
|
This went away when we added RTMidiBuffer. Getting data from MIDI playlists is now
completed in one pass, without note trackers
|
|
We need a MidiStateTracker to determine notes whose end is not reached
during the call to ::write_one_track(), so that we can resolve them
in the output (SMF) source. This required some changes to the ::export_stuff()
API for tracks.
In addition, we now take the source "lock" just once during ::write_one_track()
rather than every time we write. This isn't an integral part of the
note tracking, but fell out along the way.
Finally, note that although we use a vector to handle MIDI "sources" here,
it is expected that there is only 1 MIDI source at present. Leave vectors in
place since it is possible that ::write_one_track() could be modified
in the future to change that.
|