Send sysex to external MIDI

If it is a hex byte. You can intermix hex with decimal bytes. For example, I find it very convenient to use a hex byte for the status and then decimal values for everything else, e.g.

x90 60 64

Send a note on message for note 60 with velocity 64

We are having a “soft release” pf GP v3.0.45 today. This means that you can download this version now even though it is not officially released. We just want to make sure we don’t break anything else before releasing so please download it, install it and try it. See if the sysex stuff now works and let us know.

Here are the links.

OSX: https://dl.devmate.com/com.deskew.gigperformer3mac/3.0.45/1548874414/GigPerformer3forMac-3.0.45.dmg

WIN: https://dl.devmate.com/com.deskew.gigperformer3win/3.0.45/1548874685/GigPerformer3forWindows-3.0.45.exe

2 Likes

So we can only send SysEx in setlist/song view, am i correct? it can’t be done in the performance view alone?

I think you can easily send a SysEx message in a rackspace using the GP Script function.

https://www.gigperformer.com/downloads/GPScript/SystemFunctionList.html#SendSysexExternal

You can call this OnActivate of a rackspace or when variation changes or on any other event really.

Yeah, that’s awesome. Just tried with my Yamaha MoXF and it works fine.

MoXF%20SysEx
This makes the MoXF switch from Voice to Song mode.

The same (and more) can be done with GP Script like in this script I wrote earlier:

var
    MoXF : MidiOutBlock
    SongModeButton : Widget
    SysEx : SysexManager
    
function SelectMode(mode : string)
var
    selectModeMessage : SysexMessage
    modeNumber : integer
    
    selectModeMessage = # F0 43 10 7F 1C 00 0A 00 01 00 F7
    SM_CreateSysex(SysEx, selectModeMessage)    
    
    select
        mode == "voice" do
            modeNumber = 0
            
        mode == "song" do
            modeNumber = 3
            
        mode == "master" do
            modeNumber = 4
    end
    
    SM_ChangeValue(SysEx, 9, modeNumber)
    SM_SendMidiOut(SysEx, MoXF)
end

function ChangePart(partNumber : integer)
var mixingPartSelectMessage : SysexMessage

    mixingPartSelectMessage = # F0 43 10 7F 1C 00 64 03 00 02 F7 
    
    SM_CreateSysex(SysEx, mixingPartSelectMessage)
    SM_ChangeValue(SysEx, 9, partNumber)
    SM_SendMidiOut(SysEx, MoXF)   
end

on WidgetValueChanged(newValue : double) from SongModeButton
    SelectMode("song")
    //ChangePart(7)
end

So to change your patch in the Motif ES 6 master mode you should be able to use:

var changeProgramMessage : SysexMessage
    SysEx : SysexManager

changeProgramMessage = # F0 43 10 7F 00 0A 00 00 05 F7 
SM_CreateSysex(SysEx, changeProgramMessage)
SM_SendMidiOut(SysEx, MotifES)

What do you mean by performance view? We have connections view, front panel view, and song view - the last is essentially where one should be for doing actual shows and of course you can use sysex there.

I guess he means the “non song” views (Connection View or Front View) because Rackspaces don’t have a SysEx option in their properties (which makes perfect sense imo).

It may make sense to add a similar mechanism (that advanced MIDI section of song parts) to the MidiOut block itself. Wouldn’t be difficult but not obvious that it’s necessary.
Thoughts?

Perfectly puts a Korg Kronos into Setlist Mode…
image

3 Likes

That could be useful in line with the Program Change / Bank Select option. Of course that’s more convinient than doing it with GP Script (although less flexible). I would use it if a Rackspace always depends on some external synth state that requires a SysEx message. Then I would prefer to do it on Rackspace level than in the song part.

A question that comes to my mind: Should a SysEx message be sent out before or after the program change? Both might be needed in some cases. For example I send a SysEx message to my MoXF which activates Voice mode. Then I send the program change to change the patch. I’ve just tested this with GP 3 and the MoXF doesn’t react to the program change (set in the Midi Out Block). Not sure if it’s the wrong order or the timing (maybe it needs some milliseconds in between)… (and could not find a quick way to monitor it)

Are we limited to only one external string to be sent to one MIDI Out block?

Nope, you can send multiple messages to the same block, just separate them with commas. Then, you can use a semicolon and define a new block to where subsequent messages should go.

Suppose you have blocks A, B and C

You could write (and the numbers/letters below stand for midi message bytes here just because I’m doing this on an iPad)

A: 1 2 3, 4 5 6 7; B: x y z, a b c, d, e f; C: k j k

This would send 2 messages to block A, 4 messages to block B and one message to block C

Also, this works for MidiIn blocks too😉

1 Like

Amazing!!! Xactly what I pictured.

@dhj
A: 1 2 3, 4 5 6 7; B: x y z, a b c, d, e f; C: k j k

4 messages to block B ?

I saw that :grinning:
And “just separate them with columns”, should be “just separate them with commas.”

He was obviously fast typing on an iPad.
But awesome news that you can communicate with multiple MIDI Out Blocks with one Song part.

Yeah, iPads suck for this kind of thing - I corrected my entries. This mechanism is pretty handy, particularly since you can use it for MidiIn blocks as well. So you could also do things like having parts that would just send notes to synths or your sampler, perhaps to trigger effects.

1 Like

I think it does make sense, to have it right there available in the MIDI OUT/IN blocks; if its not too much hard work…

Yess!! Give us that option Please!

1 Like

Ha! Even more powerful.

PS: It was too late in the evening when I wrote my last posting. I did not realize that you can insert ANY midi message and not only SysEx strings. So program changes and SysEx message of course can be inserted in any order.

I know this thread is for sysex, but I cannot get this to work for me to send a simple CC message.

  1. I created a MIDI output block in my rackspace. (tried both no connections or connected to MIDI input)
  2. I gave the MIDI output block the unique name “bug” and saved the gig.
  3. I switched to setlist view, selected the song associated with the rackspace.
  4. I select and double click on a song part associated with the correct backspace.
  5. In the Advanced MIDI message field, I typed “bug: xBO 69 1” and click Apply.
  6. I receive the following error message "Block: ‘bug’ does not exist in backspace: ‘rackspace name’

I can see the MIDI output block with the correct name on the rack space connections page. When I hover the mouse, it reports what appears to be the correct device name, reports that the block is a MIDI OUT Processor and lists the format type as “Internal.” I have tried this several times with different block names, rack spaces, songs and song parts. Always get the same message.

Why isn’t this working?