We explore some workarounds for getting Studio One to talk General MIDI.
All the best learning experiences are born out of the frustration of being unable to do something. And so this month’s workshop comes with a bit of a personal story involving Studio One and its almost complete disregard of General MIDI, which also fits in nicely with my recent workshops on MIDI basics.
One of my kids is interested in making his own music. He’s had some piano lessons at school and has really taken to it without anything but gentle encouragement from me. I got him a simple Casio home keyboard to use in his room; he loves the range of sounds and plays it all the time.
The next logical step was to wire it up to his computer for a bit of sequencing. I installed Studio One (naturally) and got very excited showing him how to record the piano sound and how simple sequencing worked. Then I suggested adding a second track and giving it a different MIDI channel so we could choose a different sound from the Casio. Could I get that to work? No, well, at least not without a lot of fiddling about, swearing and frustration while my kid wandered off to do something less boring instead.
I had fully expected to open the Inspector, click a GM button and select from the 128 sounds that have been available to us since the dawn of digital synthesis. But no, there’s no such function. I couldn’t even find where to select a bank and program number, and found myself trying to add it in as automation to the track. It turns out the Bank/Program section of the Inspector is hidden away in a fold between other sections. But anyway, numbers are not very friendly when selecting patches, so why can’t I choose them by name? I have definitely done this in other DAWs.
This led me to search the Studio One manual for any kind of General MIDI information or support, or anything to do with creating a patch script for selecting sounds by name from any external synthesizer or sound module. There’s nothing there. Studio One simply doesn’t have the ability to generate patch scripts. Browsing the online forums shows that this has been a requested feature since version 1.
I’ve spent the last few days trying to get to the bottom of this missing functionality, and I wanted to share a couple of ways I found of using General MIDI sound lists, and potentially other patch lists, in Studio One.
Loading GM Files
Believe it or not, people still want to load, play and mix MIDI files. There are millions on the Internet and you’ll find MIDI file versions of pretty much every song ever written. They are a great way of creating cover‑version backing tracks or stealing the groove section of a song to use in your own music.
Studio One can load and play MIDI files; you can drag them onto tracks from the browser just like any other file. It’s largely undocumented, but you can also pull in complete General MIDI multitrack MIDI files. When you do so, Studio One asks you if you want to load GM instruments for the tracks. If you select Yes then an instance of Presence XT will be loaded for each track with an appropriate sound. I had no idea Presence XT could do that, or that it had a bank of GM sounds. (It doesn’t have drum kits, though, so you will have to load something manually to take care of those.) There’s no information in Presence XT to indicate how the sounds are selected or which sounds are mapped to the GM program numbers. You can’t change presets with program/bank numbers, as these options don’t exist. So, it’s very mysterious.
If you were to try building a MIDI file in Studio One using Presence XT, you wouldn’t be able to include any program information, so the file wouldn’t work with any other GM player or device. And that’s the point. You could use all sorts of software instruments to make your MIDI file sound fantastic, but it wouldn’t be General MIDI‑compatible, so it’s not properly exportable. What do PreSonus have against General MIDI?
Putting all the software possibilities aside, what about using General MIDI in an external sound module? This comes back to my original task of being able to select patches on my son’s Casio keyboard. When you create an Instrument track assigned to an External Instrument, all you get is Program Number and MSB/LSB Bank numbers. While this can address pretty much any sound in any MIDI device, it’s not very elegant or helpful to someone taking their first steps into MIDI.
The ability to generate patch lists for external gear is also a feature that feels like it should already be there. Older DAWs like Cubase and Cakewalk have always had this ability. Third‑party software editors and librarians like Sound Quest could offer a program selection layer between Studio One and your hardware, but they tend to be very specific in application, and I haven’t been able to find one that just takes care of simple and generic GM patch selection.
However, after many dead ends, I think I’ve honed in on a couple of possible solutions...
I came across a thread talking about a similar problem in Cockos Reaper. Helpful people pointed the poster towards Reaper’s built‑in solution in the shape of the ReaControlMIDI plug‑in. It’s a simple MIDI control panel that you drop onto your MIDI data stream and it gives you precisely the sort of power we’re looking for. Thankfully, it’s a free plug‑in (www.reaper.fm/reaplugs/), and here’s how you use it in Studio One.
ReaControlMIDI comes up as an audio effect, so you can’t add it to your Instrument track in a chain or as NoteFX. Instead, you load it onto its own audio track, which feels counter‑intuitive — but bear with me. The plug‑in creates a virtual MIDI input. Set the MIDI input on your track to be ReaControlMIDI, and any changes you make in the plug‑in will be routed as MIDI to your GM device.
In the ReaControlMIDI plug‑in, you enable the Bank/Program setting and hit Load File. In the Data folder you’ll find GM.reabank, which contains the patch names for every GM and Expanded GM sound. Now you can select each sound by name — brilliant! The GM.reabank file is just a text file, so you could easily edit it and create files for all your synths if you wished.
Although this works, it has several drawbacks. It won’t act as part of ‘All Inputs’, so you have to select it as the input for the track directly. This means that you can’t play the track from your MIDI keyboard at the same time: you have to switch it in temporarily to select the sound, then switch back to All Inputs or your controller. If you wanted the patch selection to remain when the project is reloaded, you’d have to have a ReaControlMIDI track for each MIDI track. A GM MIDI file might have all 16 channels being used, so that’s a lot of extra tracks. Also, if you wanted to export the song as a MIDI file, none of the program data would be there, because the MIDI tracks wouldn’t be doing the Program Changes.
All in all, ReaControlMIDI is a useful little utility with some potential but there has to be more...
Sound Variations are a part of the Studio One MIDI editor and offer some really nice integration of virtual instrument orchestral articulations... But more importantly, for our purposes, it lets you change the trigger from notes to other MIDI messages — including Program Change.
Remarkably, the recent Studio One 5.3 update did unlock a little something that aided me in my search for simple sound selection. It’s hidden in the disguise of keyswitching and Sound Variations. The update fleshed this feature out a bit and created a loophole through which we can access the humble General MIDI patch list via a bit of shenanigans.
Sound Variations are a part of the Studio One MIDI editor and offer some really nice integration of virtual instrument orchestral articulations and the like. You’ll find these sound libraries in Presence XT and third‑party instruments such as Native Instruments’ Kontakt. The idea is that an instrument such as a violin can be played in several different ways, all of which are captured in the sample set. Using notes in a low octave, you can switch between different articulations without loading another set of samples. So C0 might load the legato version of the instrument, C#0 the staccato, and so on. Studio One has built these ‘keyswitches’ into the editor so that they can be interpreted without the redundant MIDI data getting in the way. But more importantly, for our purposes, it lets you change the trigger from notes to other MIDI messages — including Program Change.
You open the Sound Variations editor by hitting the spanner icon next to it in the panel to the left of the piano roll. Click on New Variation and stick in your patch name. Over on the right is a box called Activation Sequence, which tells you which note would activate the variation. Under Type, click on Note On, and you can choose an alternative method from the list. Choose Program Change and enter the program number for the patch you’re setting up. Add a few more in the same way, and before you know it, you have a selectable patch name list for your external synthesizer.
The only drawback is that this list only exists in the MIDI Editor piano roll. It’s not accessible anywhere else. And for the Sound Variation to be fixed to the track, you have to write it into the automation lane under the piano roll. Otherwise, when you load the project again the sounds will not be selected.
You can, of course, enter all 128 GM instruments by hand, but there’s another way. Keyswitches are one of those things that Studio One lets you share. You can save, export and import them. Some bright spark called Lukas Ruschitzka came up with a spectacularly simple way of generating Sound Variation files from Cubase and Sonar patch scripts. I found a bunch at RivetedStudios (https://rivetedstudios.com/downloadpage/), which includes one called ‘gs names.txt’ that has the GM patch name list we’re looking for.
Just download the scripts and drag the file onto Lukas’ webpage (https://studioonetoolbox.com/) and it automatically generates a corresponding Sound Variation file. Drop that file onto the MIDI Editor in Studio One and wham! You’ve got your GM patch name list. Genius. If you can find a Cubase patch script for your external synth, then you can generate a Sound Variation preset for it.
So Near, So Far
The Sound Variations feature is so frustratingly close to what I’m after. It has to be possible to nudge it in the direction of the main Track Inspector and let you create and share patch lists of all your synths, General MIDI included. It’s right there, staring PreSonus in the face.
Many synths have software plug‑in editors that work as patch librarians, so maybe it doesn’t feel like there’s an urgent need for this functionality. Perhaps they’re waiting for MIDI 2.0 where this sort of thing becomes automatic in the handshake negotiation between two MIDI brains. My kid’s Casio is unlikely to comprehend any of that, though, so add me to the list of people requesting good old‑fashioned patch scripts in Studio One.