* I dont know whether this works, but I'll commit it anyway
git-svn-id: svn://localhost/ardour2/branches/3.0@3665 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
ce38b9cfc5
commit
0d077ee676
@ -114,6 +114,7 @@ class MIDIClock_Slave : public Slave, public sigc::trackable {
|
|||||||
|
|
||||||
bool locked() const;
|
bool locked() const;
|
||||||
bool ok() const;
|
bool ok() const;
|
||||||
|
bool starting() const { return _starting; }
|
||||||
|
|
||||||
nframes_t resolution() const;
|
nframes_t resolution() const;
|
||||||
bool requires_seekahead () const { return true; }
|
bool requires_seekahead () const { return true; }
|
||||||
@ -139,6 +140,7 @@ class MIDIClock_Slave : public Slave, public sigc::trackable {
|
|||||||
void stop (MIDI::Parser& parser);
|
void stop (MIDI::Parser& parser);
|
||||||
void update_midi_clock (MIDI::Parser& parser);
|
void update_midi_clock (MIDI::Parser& parser);
|
||||||
void read_current (SafeTime *) const;
|
void read_current (SafeTime *) const;
|
||||||
|
bool _starting;
|
||||||
bool _started;
|
bool _started;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ MIDIClock_Slave::update_midi_clock (Parser& parser)
|
|||||||
const Tempo& current_tempo = session.tempo_map().tempo_at(now);
|
const Tempo& current_tempo = session.tempo_map().tempo_at(now);
|
||||||
const Meter& current_meter = session.tempo_map().meter_at(now);
|
const Meter& current_meter = session.tempo_map().meter_at(now);
|
||||||
double frames_per_beat =
|
double frames_per_beat =
|
||||||
current_tempo.frames_per_beat(session.nominal_frame_rate(),
|
current_tempo.frames_per_beat(session.frame_rate(),
|
||||||
current_meter);
|
current_meter);
|
||||||
|
|
||||||
double quarter_notes_per_beat = 4.0 / current_tempo.note_type();
|
double quarter_notes_per_beat = 4.0 / current_tempo.note_type();
|
||||||
@ -121,7 +121,9 @@ MIDIClock_Slave::start (Parser& parser)
|
|||||||
{
|
{
|
||||||
std::cerr << "MIDIClock_Slave got start message" << endl;
|
std::cerr << "MIDIClock_Slave got start message" << endl;
|
||||||
|
|
||||||
midi_clock_speed = 1.0f;
|
session.request_transport_speed (1.0);
|
||||||
|
midi_clock_speed = 1.0;
|
||||||
|
_starting = true;
|
||||||
_started = true;
|
_started = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,14 +132,12 @@ MIDIClock_Slave::stop (Parser& parser)
|
|||||||
{
|
{
|
||||||
std::cerr << "MIDIClock_Slave got stop message" << endl;
|
std::cerr << "MIDIClock_Slave got stop message" << endl;
|
||||||
|
|
||||||
|
session.request_transport_speed (0);
|
||||||
midi_clock_speed = 0.0f;
|
midi_clock_speed = 0.0f;
|
||||||
midi_clock_frame = 0;
|
midi_clock_frame = 0;
|
||||||
|
_starting = false;
|
||||||
_started = false;
|
_started = false;
|
||||||
|
reset();
|
||||||
current.guard1++;
|
|
||||||
current.position = midi_clock_frame;
|
|
||||||
current.timestamp = 0;
|
|
||||||
current.guard2++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -199,7 +199,12 @@ MIDIClock_Slave::speed_and_position (float& speed, nframes_t& pos)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_starting) {
|
||||||
|
speed_now = 1.0;
|
||||||
|
_starting = false;
|
||||||
|
} else {
|
||||||
speed_now = (float) ((last.position - first_midi_clock_frame) / (double) (now - first_midi_clock_time));
|
speed_now = (float) ((last.position - first_midi_clock_frame) / (double) (now - first_midi_clock_time));
|
||||||
|
}
|
||||||
|
|
||||||
cerr << "speed_and_position: speed_now: " << speed_now ;
|
cerr << "speed_and_position: speed_now: " << speed_now ;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user