#include "ardour/graph.h"
#include "ardour/port.h"
#include "ardour/process_thread.h"
+#include "ardour/scene_changer.h"
#include "ardour/session.h"
#include "ardour/slave.h"
#include "ardour/ticker.h"
#include "ardour/types.h"
-#include "midi++/manager.h"
#include "midi++/mmc.h"
#include "i18n.h"
-#include <xmmintrin.h>
-
using namespace ARDOUR;
using namespace PBD;
using namespace std;
*/
try {
- if (!_engine.freewheeling() && Config->get_send_midi_clock() && transport_speed() == 1.0f && midi_clock->has_midi_port()) {
- midi_clock->tick (transport_at_start);
+ if (!_silent && !_engine.freewheeling() && Config->get_send_midi_clock() && (transport_speed() == 1.0f || transport_speed() == 0.0f) && midi_clock->has_midi_port()) {
+ midi_clock->tick (transport_at_start, nframes);
}
+
+ _scene_changer->run (transport_at_start, transport_at_start + nframes);
+
} catch (...) {
/* don't bother with a message */
}
PT_TIMING_CHECK (10);
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
- if ((*i)->is_hidden()) {
+ if ((*i)->is_auditioner()) {
continue;
}
int ret;
- if ((*i)->is_hidden()) {
+ if ((*i)->is_auditioner()) {
continue;
}
int ret;
- if ((*i)->is_hidden()) {
+ if ((*i)->is_auditioner()) {
continue;
}
* and prepare for rolling)
*/
if (_send_timecode_update) {
- send_full_time_code (_transport_frame);
+ send_full_time_code (_transport_frame, nframes);
}
if (!process_can_proceed()) {
check_declick_out ();
}
- _engine.split_cycle (this_nframes);
+ if (nframes > 0) {
+ _engine.split_cycle (this_nframes);
+ }
/* now handle this event and all others scheduled for the same time */
boost::shared_ptr<RouteList> r = routes.reader ();
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
- if (!(*i)->is_hidden()) {
+ if (!(*i)->is_auditioner()) {
(*i)->silence (nframes);
}
}
/* if using a monitor section, run it because otherwise we don't hear anything */
- if (auditioner->needs_monitor()) {
+ if (_monitor_out && auditioner->needs_monitor()) {
_monitor_out->monitor_run (_transport_frame, _transport_frame + nframes, nframes, false);
}
switch (ev->type) {
case SessionEvent::SetLoop:
- set_play_loop (ev->yes_or_no);
+ set_play_loop (ev->yes_or_no, ev->speed);
break;
case SessionEvent::AutoLoop: