diff options
author | Hans Baier <hansfbaier@googlemail.com> | 2008-10-25 08:28:10 +0000 |
---|---|---|
committer | Hans Baier <hansfbaier@googlemail.com> | 2008-10-25 08:28:10 +0000 |
commit | fd824717a73676e2da3ff05eaba3dd4214239863 (patch) | |
tree | fb057077f6659d68f775e007cd17bafa7e4efde2 /libs/ardour/midi_clock_slave.cc | |
parent | 33d02c79023f0763321ffc31024ead0f11999f29 (diff) |
* fixed jitter problems for midi clock and removed superfluous UI elements
git-svn-id: svn://localhost/ardour2/branches/3.0@4008 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_clock_slave.cc')
-rw-r--r-- | libs/ardour/midi_clock_slave.cc | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/libs/ardour/midi_clock_slave.cc b/libs/ardour/midi_clock_slave.cc index 42ce24c438..aee640e16e 100644 --- a/libs/ardour/midi_clock_slave.cc +++ b/libs/ardour/midi_clock_slave.cc @@ -26,12 +26,14 @@ #include <pbd/pthread_utils.h> #include <midi++/port.h> +#include <midi++/jack.h> #include <ardour/slave.h> #include <ardour/session.h> #include <ardour/audioengine.h> #include <ardour/cycles.h> #include <ardour/tempo.h> + #include "i18n.h" using namespace ARDOUR; @@ -73,9 +75,9 @@ MIDIClock_Slave::rebind (MIDI::Port& p) } void -MIDIClock_Slave::update_midi_clock (Parser& parser) +MIDIClock_Slave::update_midi_clock (Parser& parser, nframes_t timestamp) { - nframes_t now = session.engine().frame_time(); + nframes_t now = timestamp; SafeTime last; read_current (&last); @@ -109,8 +111,14 @@ MIDIClock_Slave::update_midi_clock (Parser& parser) average += accumulator[i]; average /= accumulator_size; + JACK_MidiPort *jack_port = dynamic_cast<JACK_MidiPort *>(port); + pthread_t process_thread_id = 0; + if(jack_port) { + process_thread_id = jack_port->get_process_thread(); + } - std::cerr << "got MIDI Clock message at time " << now + std::cerr << "Thread " << pthread_name() << " with id " << pthread_self() << " process Thread ID: " << process_thread_id + << " got MIDI Clock message at time " << now << " real delta: " << midi_clock_frame << " reference: " << one_ppqn_in_frames << " accu index: " << accumulator_index @@ -127,7 +135,7 @@ MIDIClock_Slave::update_midi_clock (Parser& parser) } void -MIDIClock_Slave::start (Parser& parser) +MIDIClock_Slave::start (Parser& parser, nframes_t timestamp) { nframes_t now = session.engine().frame_time(); @@ -154,7 +162,7 @@ MIDIClock_Slave::start (Parser& parser) } void -MIDIClock_Slave::stop (Parser& parser) +MIDIClock_Slave::stop (Parser& parser, nframes_t timestamp) { std::cerr << "MIDIClock_Slave got stop message" << endl; @@ -225,7 +233,7 @@ MIDIClock_Slave::speed_and_position (float& speed, nframes_t& pos) pos = last.position; session.request_locate (pos, false); session.request_transport_speed (0); - this->stop(*port->input()); + this->stop(*port->input(), now); reset(); return false; } @@ -238,7 +246,8 @@ MIDIClock_Slave::speed_and_position (float& speed, nframes_t& pos) speed = midi_clock_speed; - cerr << " final speed: " << speed << " elapsed: " << elapsed << " elapsed (scaled) " << elapsed * speed << " position: " << pos << endl; + cerr << " final speed: " << speed << " elapsed: " << elapsed << " elapsed (scaled) " << elapsed * speed << " position: " << pos + << " Thread ID: " << pthread_self() << endl; return true; } |