How to send a MIDI "Program Change" from Suite 2

Sunlite Suite 2 is a complete re-design of Suite 1. Please discus any issues here

Moderators: simonB, nick, dylan, RichterMC, florent, Ben

mortenh
Posts: 2
Joined: Sun Aug 27, 2017 2:32 pm

How to send a MIDI "Program Change" from Suite 2

Post by mortenh »

Context
For a touring band, I developed 35 EasyShows (one for each of 35 songs) and a MIDI integration. The band’s drummer controls the lighting during each night’s show. The drummer hears a MIDI click track from his electronic drum pads (Yamaha Multi-12). The Multi-12 unit sends the MIDI Clock tempo for each song to a tablet PC with Suite 2 (placed next to the drummer). In the Suite2 Master page, a set of buttons named after each song is sequenced to match the set list. The drummer selects the next song using drum pads on the Multi-12 to activate Suite2 console buttons: (Select next/previous master page button, Activate selected button to start the right EasyShow, Close EasyShow). In the EasyShow for each song, multiple scenes control moving heads in sync with the MIDI Clock.

My task
The band’s setlist changes during the concert (so the next song might be far away from the "next Master page button"). The drummer needs to pick the next song by selecting the button with the song’s name in the Master page (on the tablet's touch screen). To keep the Multi-12 in sync with this song choice, Suite2 must then send the correct MIDI "Program Change" to the Multi-12. The Multi-12 will in return switch to the right song with the right tempo and click track, start transmitting the right tempo to Suite2, and start the corresponding EasyShow.

Attempts so far
While monitoring the MIDI Out window, I managed to get a console button to send most of the right data. (The required data to select for example song 35 is: Command=0, Channel=10, Status=12-Program Change, Level=35). Issue: I can’t find a way to specify the Level for a Program Change command, not even when experimenting with editing the file “MidiCommand.xml”. It is the Level that selects the program number.

Question
How can make a set of buttons/scenes/EasyShows or other elements in Suite 2 send a MIDI Program Change command with a Level? (Each will send a different Level to pick a different drumpad program).

Thanks!
Morten
nick
Maxi Forumor
Posts: 284
Joined: Fri Feb 12, 2016 2:37 pm

Re: How to send a MIDI "Program Change" from Suite 2

Post by nick »

Hi Morten,

Thank you for your question and my apologies for the delay.

>How can I create a set of buttons/scenes/EasyShows or other elements in Suite 2 for
> each song so that each sends a MIDI Program change command with a different Level
> value?

Let's focus on sending Program Change midi commands from Sunlite Suite 2.

I include an example show (.shw) using scenes to send program change commands.

1) Use scene buttons
2) Right click scene button and link to Console button using 'Button activation'
3) Right click on Console button
4) Go to Live tab
5) Double click Button activation in Command list.
6) Set 'Outside active level' to Disable, then OK. (This stops it sending program 0 commands)
7) Click 'Console setup' tab.
8) Under Midi data, set Status to '12 - Program Change' and channel 10 (or whichever you want)
9) Still on Console setup tab, under Button set Velocity to the program number you want. i.e. Velocity 1 = program 1.
10) Repeat for other buttons, changing the velocity setting for each.
11) Click the scene buttons on the master page to activate the programs. (i.e. don't use the console buttons)

If you are unsure about anything please check the attached showfile to see the settings.

There is a problem/bug when you change between scenes, it will send the previous program change midi command and then the new command. I am not sure how the Yamaha DTX will handle this but it is worth trying it.

Does your Yamaha DTX respond correctly?

Kind Regards,

Nick.
Attachments
Midi Program Change.shw
(16.26 KiB) Downloaded 345 times
Nicolaudie Tech Support
mortenh
Posts: 2
Joined: Sun Aug 27, 2017 2:32 pm

Re: How to send a MIDI "Program Change" from Suite 2

Post by mortenh »

Thanks for your reply.

Your instructions and show file produce the same results as I found myself.
I suspect that we have found a bug: When you specify a Velocity value, Suite2 sends the value as a Command when it should send it as a Level value.
Explanation:

Here is the correct MIDI (recorded by changing program on the MIDI device to program 1):
MIDI DATA MONITOR, MIDI INPUT TAB:
Command: 0 - Program #0
Channel: 10
Status: 12 - Program Change
Level: 1

Here is my implementation following your instructions (attempting to switch to program 1):
MIDI DATA MONITOR, MIDI OUT TAB:
Command: 1 - Program #1
Channel: 10
Status: 12 - Program Change
Level: 0

Here is your example show (attempting to switch to program 1):
MIDI DATA MONITOR, MIDI OUT TAB:
Command: 1 - Program #1
Channel: 10
Status: 12 - Program Change
Level: 0

So I repeat my question :-). How do I get a Velocity value to actually send a Level value (not a Command)?
Or how do I get some other specified parameter value to send as a Level value?

Thanks!
Morten
nick
Maxi Forumor
Posts: 284
Joined: Fri Feb 12, 2016 2:37 pm

Re: How to send a MIDI "Program Change" from Suite 2

Post by nick »

Hi Morten,

I looked at the specification of the Midi Program Change command and I am sorry but it does not seem possible to send a Level as it only uses 2 bytes.
Program Change is a two byte command unlike most others which are three bytes in length.
Byte 1) the code for Program Change and the MIDI channel.
Byte 2) the program number, as follows.

"BnH" = where the "B" is the value for Program Change, the "n" is the MIDI channel number from 0 to 15, "H" tells us that it's hexadecimal.
"1100nnnn" = the same in binary.

"0ppppppp" = Program Change, where "ppppppp" = the program number (0-127).

Read more: http://midi-tutor.proboards.com/thread/ ... z4sNUurS7e
Kind Regards,

Nick.
Nicolaudie Tech Support
Locked