From d826de83aedb357d9436fe75e6f3dccd0bb93456 Mon Sep 17 00:00:00 2001 From: Hans Baier Date: Wed, 18 Dec 2013 06:19:21 +0700 Subject: midi clock slave: make bandwidth variable according to period size --- libs/ardour/ardour/slave.h | 14 ++++++++------ libs/ardour/midi_clock_slave.cc | 5 ++++- libs/ardour/slave.cc | 6 ++++++ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h index ca3f618af1..d736a0948a 100644 --- a/libs/ardour/ardour/slave.h +++ b/libs/ardour/ardour/slave.h @@ -185,6 +185,7 @@ class ISlaveSessionProxy { virtual ~ISlaveSessionProxy() {} virtual TempoMap& tempo_map() const { return *((TempoMap *) 0); } virtual framecnt_t frame_rate() const { return 0; } + virtual pframes_t frames_per_cycle() const { return 0; } virtual framepos_t audible_frame () const { return 0; } virtual framepos_t transport_frame () const { return 0; } virtual pframes_t frames_since_cycle_start () const { return 0; } @@ -204,12 +205,13 @@ class SlaveSessionProxy : public ISlaveSessionProxy { public: SlaveSessionProxy(Session &s) : session(s) {} - TempoMap& tempo_map() const; - framecnt_t frame_rate() const; - framepos_t audible_frame () const; - framepos_t transport_frame () const; - pframes_t frames_since_cycle_start () const; - framepos_t frame_time () const; + TempoMap& tempo_map() const; + framecnt_t frame_rate() const; + pframes_t frames_per_cycle() const; + framepos_t audible_frame () const; + framepos_t transport_frame () const; + pframes_t frames_since_cycle_start () const; + framepos_t frame_time () const; void request_locate (framepos_t frame, bool with_roll = false); void request_transport_speed (double speed); diff --git a/libs/ardour/midi_clock_slave.cc b/libs/ardour/midi_clock_slave.cc index 7eaeeb9e07..9b7905432f 100644 --- a/libs/ardour/midi_clock_slave.cc +++ b/libs/ardour/midi_clock_slave.cc @@ -173,7 +173,7 @@ MIDIClock_Slave::update_midi_clock (Parser& /*parser*/, framepos_t timestamp) error, timestamp - last_timestamp, one_ppqn_in_frames, - (t1 -t0) * session->frame_rate(), + (t1 - t0) * session->frame_rate(), t0 * session->frame_rate(), t1 * session->frame_rate(), session->frame_rate(), @@ -200,6 +200,9 @@ MIDIClock_Slave::start (Parser& /*parser*/, framepos_t timestamp) void MIDIClock_Slave::reset () { + bandwidth = (256.0 / session->frames_per_cycle()) * 10.0 / 60.0; + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("MidiClock_Slave reset(): calculated filter bandwidth is %1 for period size %2", bandwidth, session->frames_per_cycle())); + should_be_position = session->transport_frame(); last_timestamp = 0; diff --git a/libs/ardour/slave.cc b/libs/ardour/slave.cc index e8c63b43c1..2aed535133 100644 --- a/libs/ardour/slave.cc +++ b/libs/ardour/slave.cc @@ -35,6 +35,12 @@ SlaveSessionProxy::frame_rate() const return session.frame_rate(); } +pframes_t +SlaveSessionProxy::frames_per_cycle() const +{ + return session.engine().samples_per_cycle(); +} + framepos_t SlaveSessionProxy::audible_frame() const { -- cgit v1.2.3