MIDI Bank Select

Discussion about: tracktion.com
RELATED
PRODUCTS

Post

Waveform allows me to pick one of 16 MIDI banks for a given track.
If I remember correctly the MIDI specs supports 127 (coarse) * 127 (fine) banks. How do I select those? (I am asking because my legacy synth actually requires Bank number 88/0 for its custom sounds.

Post

If I am understanding you correctly then I believe this can be done in the piano roll > controllers > control changes > + Then select your CC# and draw/paint in your value required

Post

Cross22 wrote: Wed Mar 22, 2023 10:02 pm Waveform allows me to pick one of 16 MIDI banks for a given track.
I think you mean channel. Channel is a fundamental MIDI property and has to do with who (ie. the instrument) is listening to what (channel). Most modern plugins don't really pay much attention to it as they are usually monotimbral and you simply add another instrument plugin to another track if you want more. They listen on all channels. However, some instruments are multitimbral, eg. Kontakt, which allows you to load multiple sample libraries and each one can listen to a different MIDI channel.
Cross22 wrote: Wed Mar 22, 2023 10:02 pm If I remember correctly the MIDI specs supports 127 (coarse) * 127 (fine) banks. How do I select those? (I am asking because my legacy synth actually requires Bank number 88/0 for its custom sounds.
As mikoatkvr mentions above, if your instrument changes banks it would be listening to MIDI CC data. CC0 (zero) is bank select. For the "(fine)" control you might be thinking of Program Change, which is not CC data but is editable in a very similar way. So between Bank Change (CC0) and Program Change you can select up to 16,384 presets per MIDI channel. If your instrument allows it. This is all old MIDI stuff. Modern plugins might not adhere to those old standards.
Surely there must be consensus by now...

Post

Cross,

How you do it will depend on the hardware you have. Each is a little bit different, but I have some lessons learned to share.

Basically, you're right: you need to issue three commands in sequence.

1. Most significant byte (MSB) / Bank Change Coarse / Bank Select / CC#0
2. Least significant byte (LSB) / Bank Change Fine / Bank Select (Fine) / CC#32
3. Program change

The terms vary from manufacturer to manufacturer, and the terms in red is what Waveform uses.

Here's how to do it the hard way:
1. Create a MIDI clip
2. Open the MIDI editor by double-clicking on the clip
3. Click on Controllers, at the bottom of the editor
3a. Click on the + symbol next to it
3b. Select Control Changes from the flyout menu
3c. At the top of that flyout, select 0-Bank Changes
4. A new window pops up at the bottom of the MIDI editor, titled 0-Bank Select
5. Click on the pencil icon
6. Click anywhere in the little window, creating a black line: I recommend close to the left! You'll see why soon.
7. Click the arrow icon
8. Click on that line and drag it up or down until you select the MSB for your device (a little balloon shows you the current number...0 is at the bottom, and 127 is at the top of the window)

Note: the value may be off by one, depending on your hardware manufacturer. For example, Roland treats the first bank as zero, and Yamaha treats it as one in its documentation. Waveform always assumes this to be 0, so you might need to experiment. If the first attempt doesn't work, try adding or subtracting just in case.

9. Click on Controllers, at the bottom of the editor
9a. Click on the + symbol next to it
9b. Select Control Changes from the flyout menu
9c. At the top of that flyout, select 32-Bank Select (fine)
10. A new window appears below the previous one, titled 32- Bank Select (fine)
11. Repeat steps 5 through 8 to select the LSB number. As before, this might be off by one.

MAKE SURE you click to the right of the MSB line you created! Your hardware needs to receive the MSB, then the LSB, then the Program Change in that order. Left-to-right is the direction of time in Waveform, so make sure the second line you create is to the RIGHT of the MSB.

You're almost there.

12. Click on Controllers, at the bottom of the editor
12a. Click on the + symbol next to it
12b. Select Program Change from the flyout menu
12c. At the top of that flyout, select Bank 1
13. Repeat step 11 to select the program number (0 through 128); ignore the balloon, which uses the general MIDI names. Most hardware synths don't report the names of the programs back to Waveform, so they won't match.

Again, make sure the line you create for the program change is to the RIGHT to the LSB line in the window above.

That's it! You can close the MIDI editor for now.

PLEASE experiment with this. It can be a little time consuming to get this to work, but once you figure out the numbers for your hardware, the steps will be exactly the same thereafter.

For example, I have a Roland D-05, which supports banks and programs. To change a program on the fly, I need to create a CC#0 of 87 (that's the MSB), followed by a CC#32 of 8 (the LSB), then a program change of whatever I want.

I also have a Yamaha Montage--which has a whole other range of numbers.

Tip: you can double click on the program change to create additional events, allowing multiple program changes throughout the track.

Okay, that's the HARD way.

The easy way:

1. Create a super short MIDI clip, maybe a quarter-note long or less.
2. Do steps 2 through 11, above, in the same clip.
3. Save this clip as a preset for yourself, as these numbers probably don't change unless your hardware supports multiple banks.
4. Create another super-short MIDI clip.
5. Do steps 12 through 13 to create a program change.
6. You guessed it: save THIS as a preset for yourself.

Now when you use this hardware, drag the first clip into position in your track. Then, drag the second clip into the track--you only need to edit THIS clip to change the program. And you can reuse this clip at various places in your track to change to other programs in your hardware.

What if your hardware supports multiple banks? Well, I create multiple presets. For example, with that Roland unit I have, I have an MSB/LSB clip for bank 1 (original presets), another for bank 2 (newer sounds), bank 3, etc. I drag this to the very earliest part of the track.

I have a single program change clip that I can use anywhere. I can drop that into the track a few ticks after the bank change clip. I can reuse that clip throughout the track; I just edit the program change value each time.

Also, if you have multiple pieces of hardware, you can reuse that program change clip there, too! I can use the same clip for my Montage...so you can create MSB/LSB bank change clip presets for your other hardware and simply reuse the program change clip preset as needed!

Hope this is what you need. I will tell you that this isn't the easiest or most obvious thing to do in Waveform, and you'll find posts here from years ago of me asking the devs to make working with hardware a bit easier. In my mind, this could be done so many better ways (MSB/LSB/ProgCh as a property of the clip with direct entry instead of drawing and dragging automation lines).

Once I realized that presets for my different hardware would make things SO much easier, I relaxed a bit on that. But obviously you're in the same position, so there I go again.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post

Pough, no--he means bank.

The hierarchy is as follows:
1. MIDI channel 1-16
2. MSB - 1-128
3. LSB - 1-128
4. Program Change - Banks 1-16

If you click on the program change controller in the MIDI editor, Waveform will pop up a flyout of Bank 1 through Bank 16.

This is correct, and is a weird bit of MIDI history.

When MIDI first arrived, it couldn't support more than 128 channels...and since most synths at the time had 32 programs, and maybe 64 later, nobody had 128.

Of course, that didn't last long. So MIDI was revised to support 16 banks in one program change.

When GM came out in the early 90s, bank 1 was reserved for GM sounds.

That still wasn't enough, so the MSB/LSB entered into the mix. But the old term of banks 1-16 never left the spec, so Waveform (properly) retains it.

If your hardware supports MSB/LSB, you only need Bank 1 in the program changes, I believe. I've never used the other 15 banks since the mid-1990s. My Ensoniq VFX, for example, used the first couple of those as it had 160 programs.

It's confusing. But that's how it worked before MSB/LSB let us have access to thousands upon thousands of program changes.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post

This is all assuming Cross is using hardware.

If using software, I rarely use program changes: it's waaaay easier to add another instance of the synth on another track and set all the presets/programs in advance and skip program changes entirely.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post

Watchful wrote: Thu Mar 23, 2023 1:53 am Pough, no--he means bank.
Thank you. I was using an online reference and did a text search for "bank". It specifies CC0 as Bank Select but it doesn't go into details for any of the LSB numbers so I didn't find it. And since the last time I actually used any MIDI hardware was 1989...
Surely there must be consensus by now...

Post

I don't think the MSB/LSB thing happened until a bit later than 1998. I could be wrong, though. It was a long time ago!
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post

I bought a Yamaha DX27 in 1984 and a Roland MT32 a little later. All theMIDI bank stuff is in the handbooks. In 1990 or 91 I acquired a piece of software called Prism. It was a software sequencer, which meant it only dealt with MIDI, and it had some interesting tricks that modern DAWs could use, but it did require some arcane knowledge of MIDI and computers. I did spend some time in the very early days of KVR analysing the bank settings with a thought to generating banks full of what were then called patches (I suspect there's a different term now) by setting all the values at random. I found that I needed to look at the values to find out which were had continuous values and which had discrete values. It was possible to create a bank file (.fxb) or a patch file (.fxp). In the end I didn't write a program to do this, partly because I was concerned about possible hearing damage being caused via headphones when testing some random patch.
[W10-64, T5/6/7/W8/9/10/11/12/13, 32(to W8)&64 all, Spike],[W7-32, T5/6/7/W8, Gina16] everything underused.

Post

Hey Watchful, thank you so much for the detailed posts!

My particular setup here is a Korg N1 so I got lucky by digging into Waveforms setup menu and discovering that they have a predefined mapping for that synth. With that enabled, the typical Bank 1-16 fly out menu now uses Korg's bank names (User A/B, Combo A/B) and apparently sends the correct MSB/LSB data.

I am still curious / confused though as to why Waveform has that 16 bank limit. CC0 (Bank Select coarse) has a 0-127 range and Program Change does not have any bank data in it as far as I am aware (only channel # and 0-127 program number).

https://www.songstuff.com/recording/art ... ge_format/

Post

One mystery solved: When the UI mentions "Banks" they mean "Waveform Banks", not "MIDI Banks". Inside of the output settings dialog there is a way to specify how many "Waveform Banks" you want (1-16) and which MIDI Bank & MIDI Program the Waveform Patches should be mapped to.

The remaining mystery is why my Program Change events are being ignored and not actually sent to the synth.

Post

Are you saying your N1 is not changing programs? Make sure the MSB occurs first, then the LSB, then the Pr9gram Change command. You need to get those three events to occur before you send notes, which can be tricky to time.

Try experimenting on a test track with no other MIDI events to ensure your N1 is not getting confused.

Make sure MPE is off on the clip: you can do this from the full Properties menu. I find that if MPE is oactive on the clip, non-MPE hardware synths stop listening.

Also, ensure the clip is set to the correct MIDI channel. In Waveform, it's possible to assign channel numbers in different places, and a clip won't play if its channel number is different from the synth"s, obviously. This happens sometimes if the clip was imported from someone else or pulled in from another project.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post

I added a MIDI listener to make sure it's not a hardware problem. I found that Waveform typically is not sending PC messages to the interface, unless I click on the device and select "Set Program" then it sends a one-off PC.
Screenshot shows Waveform's MIDI event list where I added a PC at the beginning of the clip. That one never gets on the wire - all the subsequent notes are being played though.
You do not have the required permissions to view the files attached to this post.

Post

Waveform does have issues trying to send an event at 1,1,000 - delay it slightly?

I don't have a way to test, but you can actually put MSB or LSB of bank changes, followed by a PC - according to MIDI Monitor. Don't know if they successfully would make it out to an external interface.
You do not have the required permissions to view the files attached to this post.
Waveform 13; Win10 desktop/8 Gig; Win11 Laptop; MPK261; VFX+disfunctional ESQ-1

Post

I would delay that program change to 1,1,003 to be safer. And MSB at 0,0,0001 and LSB at 0,0,0002.

The presumption there is that you would select your initial program *before* you press play...and only put in subsequent program changes in the rest of the piece. I disagree with this and still think Waveform should make initial bank/program changes at the start of a clip as part of its properties...like it does with MIDI channel info.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.

More fun at Twitter @watchfulactual

Post Reply

Return to “Tracktion”