summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2013-12-18 06:19:21 +0700
committerHans Baier <hansfbaier@googlemail.com>2013-12-18 06:19:21 +0700
commitd826de83aedb357d9436fe75e6f3dccd0bb93456 (patch)
tree37014b552147c0da83fbc2326c86e8c5a6a5d80c /libs
parent12349aa3d8c18cbd633278e9703203c1380aa85b (diff)
midi clock slave: make bandwidth variable according to period size
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/slave.h14
-rw-r--r--libs/ardour/midi_clock_slave.cc5
-rw-r--r--libs/ardour/slave.cc6
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
{