Patch changes on external MIDI devices

Hi, as we have a rainy day I completed some GP script exercises to implement one of my most wanted missing features in GP when dealing with external MIDI devices: showing patch names of the external device…

Of course ‘we all know’ about the ‘Set PC From Patch Name’ function in the MIDI out wiring blocks. I also use this in some of my rackspaces - when the are quite fix.

To get this running I did a small Python script extracting the patch names of my Kurzweil Forte SE backups and creating an INS-file. But that’s a different story…

However, I wanted the same functionality already in my rackspaces. As there’s no access (or at least: I did not find one) to the list of the MIDI out, I expanded my python script to create a simple one-line csv-file and made some first tests with the ParseCSVString(<line : String>) function. However I figured out, that this is limited to 256 array entries - not enough. So I had to do it the long way, and pick the patch names out of the file by myself :zipper_mouth_face:

Attached you’ll find a simple rackspace with 3 knobs for MSB, LSB, PC which ‘create’ a Patch-number which is used to lookup the patch name out of my file and show both in two text labels.

A full MIDI Bank select and PC messages are only sent after changing the PC knob.

It’s not a perfect script, there’s not much about error catching etc. but for me it works :sunglasses: The script expects a simple one line csv file with comma separated 4-digit patch number and a corresponding name. At the end there’s a dummy entry needed.

I’ve attached a sample gig file and a sample pathname csv. If you want to test this you have to adjust the (absolute) file path, where the GP script expects the file…

How are you handling your (remaining) external devices?

BBB

PatchChangeExternal.zip (17.8 KB)

PS: if you are also interested in the Python script let me know…

5 Likes

Hi Triple B
Having taken an introductory programming class 20 years ago with sporadic attempts to learn more, I can’t say this comes easy to me.
I would be very interested in accessing patches from my Roland F-08 via Gig Performer. I do like some of the Roland’s piano patches better than a lot of the software instruments I own.

So would this be translatable for my setup?

I’m very new to GP and at this point have been setting up instruments and a very simple setlist for my cover band. I would like to use my new Arturia Keylab 49 with the Roland mostly using it’s internal patches for my live performances.

Thanks
Ed

Hi @edx500,

yes, that’s definitely translatable for a Roland as well. Your main challenge will be to generate a ‘f08.ins’ file containing the patch (‘Tone’) names and corresponding numbers.

I’m not familiar with F-08 but it will work quite similar I think.

Just check the contents of the the zip above, study the rackspace script and the documentation how you Roland responds to MIDI CC00/32 and PCS to access patches. The remainder is pure math.

The gig script is quite short and easy to understand.

To be clear: this concept only switches the main patch on my Kurzweil. If you want to switch patches within a combination (I think this is called parts of a tone in Roland terminology) then you have to dig deeper in the Roland manual

Let me know if you need further help!

2 Likes

Hello @tripleB, what a brilliant way to do a patch change on an external device - plus have the tone name!

You mentioned that this may be adaptable to a Roland F-08, what about the Roland Integra-7 if we had an INS file?

Roland has Instrument Definition Files located here: Integra-7 Instrument Definition Files

There’s a file that is named “INTEGRA-7_Tone+GM2.ins” that contains most of the sounds I’m interested in. How would I convert that INS file (or create a new one from that) to the CSV format that is used by your script in your sample gig?

Does the GP gig require the INS or only the CSV file?

I do have the published Roland list of sounds for the Integra, with all the MSB, PSB, and PC change numbers. It’s free public information, so I’ll share it here.
INTEGRA-7_Sound_List_je01_W.pdf (1.9 MB)

Thanks in advance!

1 Like

Hi @DennisT2022,

Just to clarify: you can use the Integra ins file(s) straight out of the box - GP can handle this!
Just go to your MIDI Out port where your Integra is connected to, click ‘Set PC from Patch Name’, load the Integra ins file, and you are ready to go (don’t forget the Send On Select Checkbox…).

However, if you want to show the Patch Names also on your rackspace and select with widget like in my example, you have to create a single-line csv from the ins-file. This would require some more effort and an external program/script, e.g. in Python, and some minor adjustments in my GP script (csv-file name, patch number digits in FindPresetName function).

As mentioned above, I create both the ins and the csv with an external Python script from an object list derived from an other csv list. Just crunching strings and numbers…

2 Likes

Why not, it may be useful for community members :slight_smile:

Well, quick & dirty :wink:

2 Likes