Odd MMC interaction with Nuendo

Bear with me on this…

In our theater we use Nuendo as our playback system. However, it is regularly sent commands from a separate computer running Qlab. One such command is a ‘locate’ command using Midi Machine Code. The locate command is sent in hex - so that a locate command looks like:

7F 01 06 44 06 01 00 00 00 1C 00

From left to right:

  • I believe the first 3 bytes are device ID
  • 44 is the ‘locate’ command
  • 06 is the data byte count (always 6 bytes)
  • 01 is a subcommand ‘Target’
  • the last 5 bytes are the hex values for hours, minutes, seconds, frames, subframes

So…our command of:

7F 01 06 44 06 01 00 00 00 1C 00

is designed to locate Nuendo to 00hrs 00mins 00secs 28frames 00subframes

And it does this just fine.

EXCEPT - At the beginning of the day when the Nuendo project is loaded for the first time, when it receives any locate command for the first time, we get this message:

“A new frame rate has been detected. Do you want to switch to 24 fps?”

Our project is running at 30 fps.

We can select ‘ignore’ or ‘OK.’

We select ignore and we never see the warning again as long as that project is open. Everything works perfectly. However, when we close that project and open another project that is not at 24 fps we get the warning again.

We cannot figure out why Nuendo thinks it is getting a 24 fps signal from the ‘locate’ command.

If I have a Nuendo project in 24 fps it does not give the warning.

Does anyone know what is going on?

Thanks!

Darren “Don’t Hate The Locate” Ingram

Try to include the frame rate in the hour byte:

hr = Hours and type: 0 tt hhhhh
tt = time type (bit format):
00 = 24 frame
01 = 25 frame
10 = 30 drop frame
11 = 30 frame
hhhhh = hours (0-23, encoded as 00-17hex)

This is from the MSC spec but I guess that the same thing applies to MMC.

1 Like

So…your command of:
7F 01 06 44 06 01 00 00 00 1C 00
is designed to locate Nuendo to 00hrs 00mins 00secs 28frames 00subframes with 24 fps.

…while the command
7F 01 06 44 06 01 40 00 00 1C 00
is designed to locate Nuendo to 00hrs 00mins 00secs 28frames 00subframes with 30 fps.

1 Like

SOLVED!!!

Thanks so much for the direction! Adjusting the frame rate by using the ‘hour’ byte was what was needed!

We did, however, run into a good bit of confusion about how all of that worked. But after some digging into it we realized the following:

  • The expected value in the hour byte is across a 0-127 range.
  • There are 4 frame rates represented in this range: 24fps, 25fps, 29.97fps and 30fps
  • The 0-127 range is divided into 4 blocks of 32.
  • 24fps is in the first block (0-31), 25fps in the second block (32-63), 29.97fps in the third block (64-95) and 30fps in the fourth block (96-127)
  • The first value in each block is hour zero. Once it reaches hour 24 the timeline locates back at zero and starts again. So in the first block the value of 23 will locate to hour 23. The value of 24 will locate to zero and the value of 25 will be hour one, etc.
  • This means the value of 32 (the first value of the second block of 32) will be hour one of the 25fps set. 64 is hour zero of the 29.97set, and 96 is hour zero of the 30fps set.
  • In the ‘hour’ byte, you specify the value of the hour and framerate you are after - then convert it to hex. I’ll try to upload a PDF of a table that shows all these values.

Thanks so much for your help in this! SOLVED!!!

Darren “Hexed No More” Ingram

Decimal to Hex for MMC key (002).pdf (110.2 KB)

1 Like