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 % 24;
hours = (data & 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 >> 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?