ardour
|
#include <slave.h>
Public Member Functions | |
LTC_Slave (Session &) | |
~LTC_Slave () | |
bool | speed_and_position (double &, framepos_t &) |
bool | locked () const |
bool | ok () const |
framecnt_t | resolution () const |
bool | requires_seekahead () const |
framecnt_t | seekahead_distance () const |
bool | give_slave_full_control_over_transport_speed () const |
Timecode::TimecodeFormat | apparent_timecode_format () const |
std::string | approximate_current_position () const |
std::string | approximate_current_delta () const |
Public Member Functions inherited from ARDOUR::TimecodeSlave | |
TimecodeSlave () | |
Public Member Functions inherited from ARDOUR::Slave | |
Slave () | |
virtual | ~Slave () |
virtual bool | starting () const |
virtual bool | is_always_synced () const |
Private Member Functions | |
void | parse_ltc (const pframes_t, const Sample *const, const framecnt_t) |
void | process_ltc (framepos_t const) |
void | init_engine_dll (framepos_t, int32_t) |
bool | detect_discontinuity (LTCFrameExt *, int, bool) |
bool | detect_ltc_fps (int, bool) |
bool | equal_ltc_frame_time (LTCFrame *a, LTCFrame *b) |
void | reset () |
void | resync_xrun () |
void | resync_latency () |
void | parse_timecode_offset () |
void | parameter_changed (std::string const &p) |
Private Attributes | |
Session & | session |
bool | did_reset_tc_format |
Timecode::TimecodeFormat | saved_tc_format |
LTCDecoder * | decoder |
double | frames_per_ltc_frame |
Timecode::Time | timecode |
LTCFrameExt | prev_frame |
bool | fps_detected |
framecnt_t | monotonic_cnt |
framecnt_t | last_timestamp |
framecnt_t | last_ltc_frame |
double | ltc_speed |
frameoffset_t | current_delta |
int | delayedlocked |
int | ltc_detect_fps_cnt |
int | ltc_detect_fps_max |
bool | printed_timecode_warning |
bool | sync_lock_broken |
Timecode::TimecodeFormat | ltc_timecode |
Timecode::TimecodeFormat | a3e_timecode |
PBD::ScopedConnectionList | port_connections |
PBD::ScopedConnection | config_connection |
LatencyRange | ltc_slave_latency |
int | transport_direction |
int | engine_dll_initstate |
double | t0 |
time at the beginning of the MTC quater frame More... | |
double | t1 |
calculated end of the MTC quater frame More... | |
double | e2 |
second order loop error More... | |
double | b |
double | c |
DLL filter coefficients. More... | |
Additional Inherited Members | |
Public Attributes inherited from ARDOUR::TimecodeSlave | |
framepos_t | timecode_offset |
bool | timecode_negative_offset |
LTC_Slave::LTC_Slave | ( | Session & | s | ) |
Definition at line 44 of file ltc_slave.cc.
LTC_Slave::~LTC_Slave | ( | ) |
Definition at line 73 of file ltc_slave.cc.
|
virtual |
Implements ARDOUR::TimecodeSlave.
Definition at line 568 of file ltc_slave.cc.
|
virtual |
Reimplemented from ARDOUR::Slave.
Definition at line 597 of file ltc_slave.cc.
|
virtual |
Implements ARDOUR::TimecodeSlave.
Definition at line 588 of file ltc_slave.cc.
|
private |
Definition at line 194 of file ltc_slave.cc.
|
private |
Definition at line 219 of file ltc_slave.cc.
|
private |
Definition at line 177 of file ltc_slave.cc.
|
inlinevirtual |
Reimplemented from ARDOUR::Slave.
|
private |
Definition at line 409 of file ltc_slave.cc.
|
virtual |
reports to ARDOUR whether the Slave is currently synced to its external time source.
Implements ARDOUR::Slave.
Definition at line 112 of file ltc_slave.cc.
|
virtual |
reports to ARDOUR whether the slave is in a sane state
Implements ARDOUR::Slave.
Definition at line 118 of file ltc_slave.cc.
|
private |
Definition at line 96 of file ltc_slave.cc.
|
private |
Definition at line 157 of file ltc_slave.cc.
|
private |
Definition at line 86 of file ltc_slave.cc.
|
private |
< audio-frame corresponding to LTC frame
Definition at line 301 of file ltc_slave.cc.
|
inlinevirtual |
Implements ARDOUR::Slave.
|
private |
Definition at line 145 of file ltc_slave.cc.
|
virtual |
Implements ARDOUR::Slave.
Definition at line 106 of file ltc_slave.cc.
|
private |
Definition at line 132 of file ltc_slave.cc.
|
private |
Definition at line 124 of file ltc_slave.cc.
|
inlinevirtual |
Reimplemented from ARDOUR::Slave.
|
virtual |
This is the most important function to implement: Each process cycle, Session::follow_slave will call this method. and after the method call they should
Session::follow_slave will then try to follow the given position using a delay locked loop (DLL), starting with the first given transport speed. If the values of speed and position contradict each other, ARDOUR will always follow the position and disregard the speed. Although, a correct speed is important so that ARDOUR can sync to the master time source quickly.
For background information on delay locked loops, see http://www.kokkinizita.net/papers/usingdll.pdf
The method has the following precondition:
After the method call the following postconditions should be met:
Implements ARDOUR::Slave.
Definition at line 426 of file ltc_slave.cc.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |