MMC with a Tascam DM-24

Hi there,

First off I’ll introduce myself briefly as someone who has been watching Ardour grow for some years now, but has only just got around to setting it up seriously.

I’ve ditched Cubase and now want to use Ardour on OSX for my audio tasks.

Everything is seeming to fit together quite nicely, except for being able to integrate the transport with my Tascam DM24. All MIDI connections seem fine, and the MTC clock shows up on the Tascam, nice.

However, when I attempt to use the transport on the desk, there is a message in Ardour’s console:

unimplemented MMC command: X

Where X is one of 40, 42 or 43, depending on what buttons I push.

Now for the big question… What can I do about this ? Any work-arounds or further info I can give to help ?

Cheers,
Doug.

@dougal2: you can start by mentioning a version, platform etc. etc. Then you can (a) start ardour from a terminal (b) goto the preferences window, MIDI tab, and turn on “Trace Input”. this will let us see what your DM24 is sending in full.

“mentioning a version, platform etc. etc”

Forgive me, I should know better…
Ardour 2.8.5 (6546)
OSX Intel 10.5.2
MOTU PCI-424 (+ 2x 2408)
MIDISPORT 4x4 USB MIDI interface
Jackdmp 1.9.5

If there’s anything else you need to know, please ask :slight_smile:

“start ardour from a terminal”

Hmm, this is strange. Starting from Finder Ardour works fine. I cannot start Ardour from the Terminal (at least, not by doing what seems natural):

studio:MacOS doug$ ./Ardour2.bin
Ardour/GTK 2.8.5
   (built using 6546 and GCC version 4.0.1 (Apple Computer, Inc. build 5367))
Copyright (C) 1999-2008 Paul Davis
Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel Baker

Ardour comes with ABSOLUTELY NO WARRANTY
not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
This is free software, and you are welcome to redistribute it 
under certain conditions; see the source for copying conditions.

(Ardour2.bin:789): Pango-CRITICAL **: No modules found:
No builtin or dynamically loaded modules were found.
PangoFc will not work correctly.
This probably means there was an error in the creation of:
  '/Users/paul/gtk/inst/etc/pango/pango.modules'
You should create this file by running:
  pango-querymodules > '/Users/paul/gtk/inst/etc/pango/pango.modules'

(Ardour2.bin:789): Pango-WARNING **: failed to find shape engine, expect ugly output. engine-type='PangoRenderATSUI', script='latin'

(Ardour2.bin:789): Pango-WARNING **: failed to find shape engine, expect ugly output. engine-type='PangoRenderATSUI', script='common'
loading user ui configuration file /Users/doug/.ardour2/ardour2_ui.conf
ardour: [WARNING]: Unable to find UI style file . Ardour will look strange
ardour: [INFO]: Removed open file count limit. Excellent!
loading user configuration file /Users/doug/.ardour2/ardour.rc
ardour: [INFO]: Apple VecLib H/W specific optimizations in use
detected AU: JACK-insert  (2 i/o configurations) - \x61\x75\x66\x78 - \x4A\x41\x53\x62 - \x45\x6C\x43\x61
detected AU: AUBandpass  (1 i/o configurations) - \x61\x75\x66\x78 - \x62\x70\x61\x73 - \x61\x70\x70\x6C
detected AU: AUDynamicsProcessor  (1 i/o configurations) - \x61\x75\x66\x78 - \x64\x63\x6D\x70 - \x61\x70\x70\x6C
detected AU: AUDelay  (1 i/o configurations) - \x61\x75\x66\x78 - \x64\x65\x6C\x79 - \x61\x70\x70\x6C
detected AU: AUDistortion  (1 i/o configurations) - \x61\x75\x66\x78 - \x64\x69\x73\x74 - \x61\x70\x70\x6C
detected AU: AUFilter  (1 i/o configurations) - \x61\x75\x66\x78 - \x66\x69\x6C\x74 - \x61\x70\x70\x6C
detected AU: AUGraphicEQ  (1 i/o configurations) - \x61\x75\x66\x78 - \x67\x72\x65\x71 - \x61\x70\x70\x6C
detected AU: AUHipass  (1 i/o configurations) - \x61\x75\x66\x78 - \x68\x70\x61\x73 - \x61\x70\x70\x6C
detected AU: AUHighShelfFilter  (1 i/o configurations) - \x61\x75\x66\x78 - \x68\x73\x68\x66 - \x61\x70\x70\x6C
detected AU: AUPeakLimiter  (1 i/o configurations) - \x61\x75\x66\x78 - \x6C\x6D\x74\x72 - \x61\x70\x70\x6C
detected AU: AULowpass  (1 i/o configurations) - \x61\x75\x66\x78 - \x6C\x70\x61\x73 - \x61\x70\x70\x6C
detected AU: AULowShelfFilter  (1 i/o configurations) - \x61\x75\x66\x78 - \x6C\x73\x68\x66 - \x61\x70\x70\x6C
detected AU: AUMultibandCompressor  (1 i/o configurations) - \x61\x75\x66\x78 - \x6D\x63\x6D\x70 - \x61\x70\x70\x6C
detected AU: AUMatrixReverb  (6 i/o configurations) - \x61\x75\x66\x78 - \x6D\x72\x65\x76 - \x61\x70\x70\x6C
detected AU: AUNetSend  (1 i/o configurations) - \x61\x75\x66\x78 - \x6E\x73\x6E\x64 - \x61\x70\x70\x6C
detected AU: AUParametricEQ  (1 i/o configurations) - \x61\x75\x66\x78 - \x70\x6D\x65\x71 - \x61\x70\x70\x6C
detected AU: AURogerBeep  (1 i/o configurations) - \x61\x75\x66\x78 - \x72\x6F\x67\x72 - \x61\x70\x70\x6C
detected AU: AUSampleDelay  (1 i/o configurations) - \x61\x75\x66\x78 - \x73\x64\x6C\x79 - \x61\x70\x70\x6C
detected AU: AUPitch  (1 i/o configurations) - \x61\x75\x66\x78 - \x74\x6D\x70\x74 - \x61\x70\x70\x6C
detected AU: AUAudioFilePlayer  (1 i/o configurations) - \x61\x75\x67\x6E - \x61\x66\x70\x6C - \x61\x70\x70\x6C
detected AU: AUNetReceive  (1 i/o configurations) - \x61\x75\x67\x6E - \x6E\x72\x63\x76 - \x61\x70\x70\x6C
detected AU: AUScheduledSoundPlayer  (1 i/o configurations) - \x61\x75\x67\x6E - \x73\x73\x70\x6C - \x61\x70\x70\x6C
detected AU: AUSpeechSynthesis  (1 i/o configurations) - \x61\x75\x67\x6E - \x74\x74\x73\x70 - \x61\x70\x70\x6C
ardour: [INFO]: looking for control protocols in /Users/doug/.ardour2/surfaces/:/usr/local/lib/ardour2/surfaces/
ardour: [FATAL]: cannot find icon image for fader_belt.png

However, with Ardour running (not from the Terminal) I can open the Log window and see messages:

[INFO]: Loading session /Volumes/STUDIO_DATA2/Projects/doug/ardour_test2 using snapshot ardour_test2 (1)
Loading history from '/Volumes/STUDIO_DATA2/Projects/doug/ardour_test2/ardour_test2.history'.
[ERROR]: MIDI::MachineControl: unimplemented MMC command 42
[ERROR]: MIDI::MachineControl: unimplemented MMC command 43
[ERROR]: MIDI::MachineControl: unimplemented MMC command 40
[ERROR]: MIDI::MachineControl: unimplemented MMC command 43
[ERROR]: MIDI::MachineControl: unimplemented MMC command 40
[ERROR]: MIDI::MachineControl: unimplemented MMC command 40

The first ERROR messages with codes 42,43,40,43 happened when I tried to enable MMC on the Tascam.
The other two code 40’s happened when I try to press a channel REC button on the Tascam.

brainwave - of course, I can open up the system Console on OSX…

06/02/2010 22:09:29 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (8) = [ f0 7f 0 6 42 1 1 f7 
06/02/2010 22:09:29 [0x0-0x64064].org.ardour.Ardour2[798]  ] 
06/02/2010 22:09:29 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (6) = [ f0  
06/02/2010 22:09:29 [0x0-0x64064].org.ardour.Ardour2[798] 7f 0 6 d f7 ] 
06/02/2010 22:09:29 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (9) = [ f0 7f 0 6 43 2 0 48 f7 ] 
06/02/2010 22:09:29 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (10) = [ f0 7f 0 6 40 3 4c 1 1 f7 ] 
06/02/2010 22:09:29 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (14) = [ f0 7f 0 6 43 7 0 4c 4d 
06/02/2010 22:09:29 [0x0-0x64064].org.ardour.Ardour2[798]  4e 4f 50 51 f7 ] 
06/02/2010 22:09:37 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (12) = [ f0 7f 0 6 40 5 4f 3 60  
06/02/2010 22:09:37 [0x0-0x64064].org.ardour.Ardour2[798] 0 0 f7 ] 
06/02/2010 22:09:48 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (12) = [ f0 7f 0 6 40 5 4f 3  

This corresponds to trying to enable MMC sync on the Tascam:

06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (8) = [ f0 7f 0 6 42 1 1 f7 
06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798]  ] 
06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (6) = [ f0 7f 0  
06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798] 6 d f7 ] 
06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (9) = [ f0 7f 0 6 43 2 
06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798]  0 48 f7 ] 
06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (10) = [ f0 7f 0 6 40 
06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798]  3 4c 1 1 f7 ] 
06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (14) = [ f0 7f 0  
06/02/2010 22:15:03 [0x0-0x64064].org.ardour.Ardour2[798] 6 43 7 0 4c 4d 4e 4f 50 51 f7 ] 

and this corresponds to a REC button push

06/02/2010 22:13:57 [0x0-0x64064].org.ardour.Ardour2[798] ardour input: System Exclusive (12) = [ f0 7f 0 6 40 5 4f 3 0  

I hope that is of some use.

Doing a bit more poking around;
The Tascam has a few MMC settings. Two are under the category “MMC Command Type”

  • PLAY : TRUE(02h) or DEFERRED (03h)
  • RecFn : TRUE(40h) or MASKED(41h)

By default RecFn was TRUE, however when switched to MASKED, the REC buttons indeed switch the channels in Ardour! (However, the REC button on the Tascam itself does not light up).

Changing the PLAY type does not make any difference.

EDIT: Also, upon upgrading to 2.8.7, nothing has changed - but I guess you’d know that :wink:

@dougal2

Paul got confused and thought you were running on Linux. On OS X you can start Ardour via finder, but first open up Console.app (Applications>Utilities>Console.app) and clear it out first. Then that output is what he is looking for.

Seablade

@seablade
indeed, this is how i extracted the sysex dumps, though they appear to not be formatted very well.

@dougal2: ok, that was indeed just the information i needed. i’m glad to see you got some forward progress, but … MMC commands 40, 42 or 43 correspond to:

40: Write
42: Read
43: Update

None of these are required by MMC Level 1 support, and Ardour does support 41 (MaskedWrite) which is the recommended way for MMC controllers to modify the state of the target device. Ardour only supports two specific targets for a masked write - the track mute and rec-enable controls - these are the only ones that anyone has found to be useful so far. Using MaskedWrite is much more efficient than Write, and my experience with other MMC controllers suggested that nobody used Write.

As for play, I didn’t understand what your DM24 sends when you press play. You had some trace output for “trying to enable MMC sync”, but I’m not clear if that means “I pressed the play button” or not. The output there shows no sign of MMC command 0x2 (Play) or 0x3 (Deferred Play) or 0x44 (Locate).

Hi Paul,

The Tascam is perhaps a little fickle with MMC setup - the entire transport section is disabled until it is happy that it is able to be part of a closed-loop MMC system. Hence, trying to get ARdour to respond to transport button presses in this state is futile.

So, by saying “trying to enable MMC sync”, I mean putting the Tascam into “TRA Target Link” mode, where in this case the TRA target would be the closed-loop MMC device on the Tascam (the Tascam also supports other sync devices, including protocols for various Tascam DATs and also being an MTC master).

I could settle for using either Ardour as the time master, or the Tascam - however with previous setups (including Cubase) a closed-loop system was prefereble since transport and time sync would be active on all devices at all times.

It would seem that the 40,42,43 commands are part of the loop-verification process which enables the Tascam to switch its transport section on ? Other software I’ve used seems to handle this, I don’t think it requires any device-specific knowledge ?

I’ll see if I can find and reproduce relevant parts of the manual which I think may explain a bit better than I can.

The DM24 user manual is here: http://pdf.textfiles.com/manuals/ELECTRONICS/AV/DM-24_manual.pdf

Pages 81 & 82 explain a little about passed MIDI messages and what the Tascam expects.

Particularly, this behaviour is what is currently preventing TRA enable:
“If the device is not active when an attempt is made to
assign the transport control here, a popup message
appears and the assignment is not made.”

@dougal: ardour does not participate in closed loop systems. this isn’t required by MMC Level 1, and it isn’t necessary to function. time sync is NOT related to MMC - MMC provides no mechanisms for it, its entirely dependent on MTC. you can do time sync without any MMC messages whatsoever, and you can do MMC control without any time sync. Ardour reflects this technical reality by not attempting to connect them in any logical way.

commands 40,42, and 43 are based on the model that MMC has in which the target device has a set of “registers” to be controlled by the master. the master writes new values to these registers, and can read them too.

however, the MMC spec notes that read/write of individual registers for rec-enable or mute is extremely inefficient and that the master should use maskedWrite (command 41) to modify these registers. since ardour has no other registers implemented that the master could access, it was my choice to only implement support for maskedWrite. the MMC spec is quite explicit that closed loop operation should not expected by a master, and so i also decide to not implement support for the read command.

i am quite puzzled - ardour has been used with quite a few other MMC controllers without closed loop and works fine. i would have sworn that we have one long time user with a DM24 who has also used its MMC control to run ardour as well.

i will take a look at the DM24 manual and see if i can understand what yamaha were thinking. unfortunately, i am here to explain my thinking; they don’t tend to reciprocate :frowning:

Hi Paul,

OK, understood.

Generally I have always understood MTC/MMC as part of the same thing, thanks for clarifying. Indeed the MTC part is operational.

I’ll have a further dig around in other modes of operation and see how much of an Ardour<–>DM24 transport control cooperation I can get running.

On the other hand, can I formally turn this thread into a feature request for closed-loop support? :wink:

Cheers,
Doug.

@dougal2: you file it in mantis … its an official feature request. otherwise, its just a forum thread :slight_smile:

done. http://tracker.ardour.org/view.php?id=3021

Thanks for your time, and excellent software that is Ardour :slight_smile:

I have success here with open-loop MMC control.

Thanks for the interesting discussion anyhow - I think I learned something :wink: