Midi Set Tempo meta message

Is there any way that I can send a Midi Out Set Tempo meta message to a midi output block via scripting. The basic message format is:

0xFF 0x51 0x03 0x07 0xA1 0x20

The status byte 0xFF shows that this is a meta message. The second byte is the meta type 0x51 and signifies that this is a set tempo meta message. The third byte is 3, which means that there are three remaining bytes. (i…e 07,A1,20 = 120 bpm)

I’ve tried creating and send 2 off 3 byte messages - the first is recognised - but the second isn’t.

I’m trying to set the temo of a Roland hardware arranger module.

I’m sure its simple - but I just can’t see it - so any suggestions would be appreciated please.

Found this link:

Meta messages are not MIDI messages, and are never sent over MIDI.

So I think this is not possible from Gig Performer to send Midi META Data.

Do you have documentation for this arranger? It sounds like Roland did something naughty, i.e. ignore the MIDI specification

Is this definitely what your device requires, and not something like midi clock messages?

The device is something I bought about 10 years ago (wish I hadn’t) and it has never been very succesful as the midi spec is not as great as I was led to believe - which is how I intended to use it. To use it physically is like trying to operate it through the letter box. Its one of those challenges that you get in life where you keep going back to something and thats where I am at the moment.

The midi spec does allow you to send various system realtime messages to start and stop various operations (such as FAh, FBh, FCh etc) and these work. I came across this link which made me wonder whether I could also set its internal tempo using the midi message I asked about ( https://www.recordingblogs.com/wiki/midi-set-tempo-meta-message ). It was only intended to be a test to see if it might work - but I couldn’t fathom out how to get GP to do it which is why asked if it was possible.

Certainly it will (says it should) obey midi timing messages - and that might be the way forward if I want to pursue it.

Anyway - not to worry. It was worth asking - thanks for your help.

Right, but the first byte of all of those messages is greater than 0x7F. You can’t embed them inside other messages.

I suspect the issue here is that there are things you’re allowed to do in MIDI files that you can’t send as MIDI messages. 0xFF is one of those things you can do in a MIDI file, but you can’t send over a MIDI interface.

If you have the full documentation for the device there might be a sysex way to do the same thing, (But wouldn’t surprise me if there isn’t.)

That is correct. For example, in a META event, the third byte tells you how many more bytes there are in the event and so that is why it doesn’t matter what values are in the event. The events are intended to be analyzed by whatever is READING the file.

In real-time MIDI, the top bit of a byte is used to indicate a new kind of MIDI message is coming. It’s done this way because there’s a short cut if you are sending repeated messages of the same kind, i.e, three note on messages, you don’t need to send the initial status byte. This was done to reduce the time needed to send multiple events over a 31k serial line