#include "pbd/error.h"
#include "pbd/pthread_utils.h"
#include "pbd/timersub.h"
+#include "pbd/stacktrace.h"
#include "timecode/time.h"
#include "ardour/midi_port.h"
#include "ardour/midi_track.h"
#include "ardour/midi_ui.h"
+#include "ardour/profile.h"
#include "ardour/session.h"
#include "ardour/slave.h"
#include "ardour/ticker.h"
void
Session::mmc_record_strobe (MIDI::MachineControl &/*mmc*/)
{
+ if (Profile->get_trx()) {
+
+ /* In Tracks Live, there is no concept of punch, so we just
+ treat RecordStrobe like RecordPause. This violates the MMC
+ specification.
+ */
+
+ if (Config->get_mmc_control()) {
+ maybe_enable_record();
+ }
+ return;
+ }
+
if (!Config->get_mmc_control() || (_step_editors > 0)) {
return;
}
// Send message at offset 0, sent time is for the start of this cycle
MidiBuffer& mb (_midi_ports->mtc_output_port()->get_midi_buffer (nframes));
- mb.push_back (0, sizeof (msg), msg);
+ mb.push_back (Port::port_offset(), sizeof (msg), msg);
_pframes_since_last_mtc = 0;
return 0;
OUTBOUND MMC STUFF
**********************************************************************/
+void
+Session::send_immediate_mmc (MachineControlCommand c)
+{
+ if (AudioEngine::instance()->in_process_thread()) {
+ _mmc->send (c, Port::port_offset());
+ } else {
+ _mmc->send (c, 0);
+ }
+
+}
bool
Session::mmc_step_timeout ()
int
Session::start_midi_thread ()
{
+ if (midi_control_ui) { return 0; }
midi_control_ui = new MidiControlUI (*this);
midi_control_ui->run ();
return 0;