Hey there,
Just thought I’d point out that it seems that the juce::MidiMessage class’ function implementations related to the MMC Goto-command are inaccurate.
The MMC Goto-command’s hours-byte actually also holds the type-info (i.e. frame rate), similarily as in MTC.
I noticed this parsing a MMC Goto/Locate command with isMidiMachineControlGoto() sent from Logic Pro X. The hours-field Logic was sending was 0, but I was receiving 8.
This was due to the function being implemented as:
hours = data[7] % 24;
rather than:
hours = (data[7] & 0x1f) % 24;
So the function could also extract the MidiMessage::SmpteTimecodeType field as does the MTC getFullFrameParameters() function - and would be better off having the same function signature. The SmpteTimecodeType could be extracted as in getFullFrameParameters() as follows:
timecodeType = (SmpteTimecodeType) (data[7] >> 5);
Therefore also the midiMachineControlGoto() message creation function could be more complete by allowing a SmpteTimecodeType-parameter and encoding it into the hours field.
Does that all make sense?
Best,
antwan