}
void
-Session::set_mmc_device_id (uint32_t device_id)
+Session::set_mmc_receive_device_id (uint32_t device_id)
{
if (mmc) {
- mmc->set_device_id (device_id);
+ mmc->set_receive_device_id (device_id);
+ }
+}
+
+void
+Session::set_mmc_send_device_id (uint32_t device_id)
+{
+ if (mmc) {
+ mmc->set_send_device_id (device_id);
+ /* reset MMC buffer */
+ mmc_buffer[2] = mmc->send_device_id();
}
}
int
Session::set_mmc_port (string port_tag)
{
- MIDI::byte old_device_id = 0;
+ MIDI::byte old_recv_device_id = 0;
+ MIDI::byte old_send_device_id = 0;
bool reset_id = false;
if (port_tag.length() == 0) {
_mmc_port = port;
if (mmc) {
- old_device_id = mmc->device_id();
+ old_recv_device_id = mmc->receive_device_id();
+ old_recv_device_id = mmc->send_device_id();
reset_id = true;
delete mmc;
}
MMC_ResponseSignature);
if (reset_id) {
- mmc->set_device_id (old_device_id);
+ set_mmc_receive_device_id (old_recv_device_id);
+ set_mmc_send_device_id (old_send_device_id);
}
mmc->Play.connect
mmc_buffer[0] = 0xf0; // SysEx
mmc_buffer[1] = 0x7f; // Real Time SysEx ID for MMC
- mmc_buffer[2] = 0x7f; // "broadcast" device ID
+ mmc_buffer[2] = (mmc ? mmc->send_device_id() : 0x7f);
mmc_buffer[3] = 0x6; // MCC
/* Set up the qtr frame message */
return;
}
- cerr << "send " << (full ? "full" : "qtr") << " MTC message, _frames_per_smpte_frame = "
- << _frames_per_smpte_frame << endl;
-
MIDIRequest* request = new MIDIRequest;
if (full) {