MIDI sync with controller

I am trying to a assign 5 buttons for 5 song variations. It works correctly however I can not find a solution to get feedback from GP which Variation is set. Therefore all 5 leds are off. I would like to have the button illuminated when the assigned variation is chosen. It should work also in case if I switch the variation in the computer and not i
On the X-Touch

I am looking forward for any good solution!
BR
Frank

Are you talking about Rackspace Variations or Song Parts?

For Song Parts you can define messages to be sent out to a specific Midi Out Plugin:

This all is documented here:
https://gigperformer.com/docs/Userguide36/songspartssetlists.html

I know about this possibility but it is too complicated. If I switch to the srlected variayion it is not enougt to send a message tonone button. I have to send 4 off messages and 1 one message. Better dolution will be if I could use the 5 variation selectors on the display as normal button like in rack space, each one could be assignable to a midi event and could be synced. In that case all 5 buttons will be synced all the time.

OK, but what do you call “song variations” ?

Intro, Verse, …
Usualy I am using separate racspace for each song part.

OK, but this does’nt make things more clear to me. What is a “song variation” for you ?

In song mode the upper 5 buttons between prev and next song buttons. They can be assigned to midi events int the options but can not be synced as standard buttons.

The easiest way I can think of to do what you want to do is to put the appropriate MIDI data in that Song Part Properties dialog box that pianopaul referenced a couple messages ago.

If you have five LED’s on your controller that you want to track your current song variation, then you’d put five individual MIDI messages in that “Advanced: extra midi messages to send out” box. You would have to do that for every song part.

In Songpart 1 you’d send a Note ON message for your first button LED and then 4 Note OFF messages for the other four. In Songpart 2 you’d make the Note ON message for button two, and the other four would be Note OFF. Repeat for every song part.

If you have a lot of songs and a lot of parts, that could get a bit cumbersome.

I believe it can also be done with Rackspace scripts, which would be more complicated to write (particularly if you haven’t done any programming) but easier to copy and paste into all your rackspaces if you have a lot of them.

@Vindes
When Rackspaces/Variations are reused in different songs and song parts, then it is not so
easy to check what correct messages should be sent.
I think the option to send extra messages in the song part definition is better and should work fine.

I was thinking a rackspace script along the lines of:

On NoteEvent (msg) Matching [8..15] from XTouch   // adjust range for preferred button row

part = GetNoteNumber(msg) - 8  // also adjust for preferred button row
For button = 0; button < 5; button = button + 1 Do
   if button == part then
       midi message to light the button
   Else
       midi message to unlight the button
   End
SetSongPart(part)
End

I think that should catch the button presses to change song parts and light the buttons accordingly. You’d let this control songpart switching, rather than assigning midi events to the song parts.

The problem is I don’t know of any way to catch all of the songpart changes if the user clicks with the mouse. You could add something similar with “On Variation()” and “On Activate()” callbacks, but that will miss songpart changes when neither the rackspace nor variation change, so you could end up with the button LEDs out of sync with the actual song part. [Those calls would substitute ‘part = GetCurrentSongPart()’ rather than calculating based on the button pushed, and wouldn’t have to make the SetSongPart() call at the end.]

I am lost :wink:
One can send CC messages to select Song Parts, this can be done in the preferences.
And in each Song Part a series of messages can be sent when the Song Part is activated.
This way a controller sends a CC message and the desired Song Part is selected.
When the User selects a Song Part via mouse the given Messages are sent out to the controller.
One has to take care that no MIDI Loop occurs, but that normally is done by the Hardware Controller.

So why is a script needed?

I wasn’t implying it was needed. I was saying that scripting may be another option, understanding that different people sometimes have different preferences for meeting their desires.

I’ve never tried the song part properties thing, but I suspect you have to copy and paste in those midi messages for every part of every song. Let’s suppose you have 200 songs with 4 parts each, that’s a lot of copying and pasting. If you decide you want to move your “song part select” from the x-touch’s “mute” button row to its “solo” button row, then that’s a whole lot of editing to do.

If those 200 songs only use five different rackspaces, then using a script might save you a lot of effort and be less prone to copy/paste mistakes.

I agree, an implemented synch mechanism would be the best solution.

I have an X-Touch Mini, and with that you would need to have your buttons set to CC (latching) rather than Note messages in order to get this to work (as far as I know in my use of it).

I have been able to successfully use the Song Part Properties to send midi messages to light/clear the corresponding buttons on the X-Touch Mini for the 5 song parts I have mapped. This works great no matter if you change the song parts in GP or from the controller.

I think if you do this step after you have everything in your songs finalised it’s not too much work to set up.

If it’s in Mackie mode it’s going to send and respond to Note On messages (0x90). It will send 127 (0x7f) when the button is pushed and 0 when it is released. I haven’t tried it, but I would expect that to work for songpart assignments if you use the “Momentary” option when assigning it.

Your midi commands back to the Xtouch should be pretty much the same as what you did above, except 0x90 (Note On) instead of 0xBA. On a full X-Touch the “Rec” row of buttons starts at note 0x00, Solo at 0x08, Mute at 0x10, and Select at 0x18. I’m not sure how the mini maps those.

My BCF-2000 (predecessor to the Xtouch series) has two button rows, like the mini, and puts the Mute (0x10) on top and Select (0x18) on bottom. If you hold one of the “Shift” keys it switches the button rows to Solo (top) and Rec (bottom).

Many ways to skin the cat.