summaryrefslogtreecommitdiff
path: root/libs/midi++2/mmc.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-11-23 17:34:11 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-11-23 17:34:11 +0000
commit47c88ff7d1556bc87cb83db60a6ab0a9172538c5 (patch)
tree65b96264d1917e1ee84cdb9f6ad02263d66dbb53 /libs/midi++2/mmc.cc
parent5cfeaf410212c5bc104050820d1fb255b7a471b9 (diff)
support for MMC track mute register, in addition to existing track record status register
git-svn-id: svn://localhost/ardour2/branches/3.0@6156 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/midi++2/mmc.cc')
-rw-r--r--libs/midi++2/mmc.cc29
1 files changed, 18 insertions, 11 deletions
diff --git a/libs/midi++2/mmc.cc b/libs/midi++2/mmc.cc
index c16b243a16..2e42bb59fc 100644
--- a/libs/midi++2/mmc.cc
+++ b/libs/midi++2/mmc.cc
@@ -464,7 +464,11 @@ MachineControl::do_masked_write (byte *msg, size_t len)
switch (msg[2]) {
case 0x4f: /* Track Record Ready Status */
- write_track_record_ready (&msg[3], len - 3);
+ write_track_status (&msg[3], len - 3, msg[2]);
+ break;
+
+ case 0x62: /* track mute */
+ write_track_status (&msg[3], len - 3, msg[2]);
break;
default:
@@ -478,8 +482,7 @@ MachineControl::do_masked_write (byte *msg, size_t len)
}
void
-MachineControl::write_track_record_ready (byte *msg, size_t /*len*/)
-
+MachineControl::write_track_status (byte *msg, size_t /*len*/, byte reg)
{
size_t n;
ssize_t base_track;
@@ -549,14 +552,18 @@ MachineControl::write_track_record_ready (byte *msg, size_t /*len*/)
bit set.
*/
- if (msg[2] & (1<<n)) {
- trackRecordStatus[base_track+n] = true;
- TrackRecordStatusChange (*this, base_track+n,
- true);
- } else {
- trackRecordStatus[base_track+n] = false;
- TrackRecordStatusChange (*this, base_track+n,
- false);
+ bool val = (msg[2] & (1<<n));
+
+ switch (reg) {
+ case 0x4f:
+ trackRecordStatus[base_track+n] = val;
+ TrackRecordStatusChange (*this, base_track+n, val);
+ break;
+
+ case 0x62:
+ trackMute[base_track+n] = val;
+ TrackMuteChange (*this, base_track+n, val);
+ break;
}
}