I've got Korg TR, and since it's a new keyboard it's not on the preset list for program names. Tracktion can import midnam files for that purpose, so I managed to find a Cubase-type file for TR, converted it to midnam using CherryPicker software and imported it into Tracktion in the Settings/midi/program names section. It didn't work - only a few programs were loaded in unusual places, others were ignored. After some digging I think I figured out why.
To tell a synth what program sound you want to select to be played, you need to send two pieces of information: BANK number and PROGRAM (patch) number. Since you can only have 128 programs (MIDI limitation) and synths nowadays have much more, they are organized in multiple banks. In Tracktion, only that single 0-127 program number is defined for each program, while bank number is derived from the MSB/LSB info for the bank the program belongs to. Those two pieces of information are then used to compile MIDI stream it sends to the keyboard to order a program change. That's fine if you have banks and programs organized as they are in a synth, but in most cases that's not the way you want to group programs, and that's not the way other programs do it. They have BOTH bank and program information stored for each program name, so you can organize programs by category. For example, you click on "insert program change" for a MIDI clip and you see folders such as guitar, bass, organ, etc., and within each of them are programs which are spread over different physical banks. Most midnam and other preset files are organized so you name those categories as you like, put any programs from any bank you want in there and define synth's bank and program numbers for each of them. The problem with Tracktion is that it forces you to have your group equal to physical bank:
1. midnam:
<PatchNameList Name="Bass" >
<Patch Number="6" Name="A005 HardPulse Bass" >
<PatchMIDICommands>
<ControlChange Control="0" Value="0" />
<ControlChange Control="32" Value="0" />
<ProgramChange Number="5" />
</PatchMIDICommands>
</Patch>
</PatchNameList>
2. cubase:
[g1] Bass
[p2, 5, 0, 0] A005 HardPulse Bass
3. Tracktion (trkmidi)
<bank name="Program Bank A" low="0" high="0">
<program name="A005 HardPulse Bass" number="5"/>
As you can see, in Tracktion you only define one parameter ("number") after program name, and it gets then bank number from the bank tag, while in other two examples you define both bank and program numbers together with program name. And that's why Tracktion gets confused when trying to load midnam files.
So, finally, my question: will this change in a future release of Tracktion. It's a really small thing, programming-wise.
MIDI program change implementation in Tracktion
-
- KVRer
- 4 posts since 22 Mar, 2022
This is an old thread to resurrect but is the exact problem I'm having.
I have an MC-303 and as much as some don't like the instrument, it is one I have an one that requires no more money being spent above the purchase of Waveform.
The MC-303 also wants 3 pieces of data PER TONE as per above (i.e. CC0, CC32 and PC).
The instrument's tone list sets groups of tones into what it calls banks, but each tone can have different PC and different bank select within the same group.
So I would also like to be able to add the CC0 and CC32 values PER PATCH in my .trkmidi file.
Additionally, I have observed (using the Waveform MIDI Monitor) that Waveform is sending PC# messages BEFORE Bank Select messages, meaning the sounds are not being correctly interpreted. I'd expect Bank Select BEFORE Program Change messages. So maybe this is a known bug in Waveform 11 - but it seems a relatively basic thing to get right to be honest.
Is there a list where we can request enhancement??
Thanks.
PS. First post, so sorry if you have an enhancement list that I've missed. I just searched and found this post that also explains my ask.
I have an MC-303 and as much as some don't like the instrument, it is one I have an one that requires no more money being spent above the purchase of Waveform.
The MC-303 also wants 3 pieces of data PER TONE as per above (i.e. CC0, CC32 and PC).
The instrument's tone list sets groups of tones into what it calls banks, but each tone can have different PC and different bank select within the same group.
So I would also like to be able to add the CC0 and CC32 values PER PATCH in my .trkmidi file.
Additionally, I have observed (using the Waveform MIDI Monitor) that Waveform is sending PC# messages BEFORE Bank Select messages, meaning the sounds are not being correctly interpreted. I'd expect Bank Select BEFORE Program Change messages. So maybe this is a known bug in Waveform 11 - but it seems a relatively basic thing to get right to be honest.
Is there a list where we can request enhancement??
Thanks.
PS. First post, so sorry if you have an enhancement list that I've missed. I just searched and found this post that also explains my ask.
-
- KVRAF
- 1602 posts since 9 Jan, 2018
This is somewhat of a short-sighted idea in the MIDI protocol, in my opinion, as the program change is more root-level than MSB and LSB control changes...simply because the need for a program change was obvious in 1983, but banks came later. Waveform adheres to the MIDI protocol, which means--if control numbers are issued sequentially, the program change can come before the MSB and LSB values hit your hardware. This has been the case forever, I think, since T1.
I'm not sure how other DAWs handle/prevent this issue.
In the days before DAWs, we handled it by manually inputting the CC0, CC32, and PC commands into the sequencer track ourselves...with the PC command happening right at the part where you wanted the program to switch. And in those days, your hardware might need a second or two to react properly, so sometimes you had to put it a little ahead of the desired change, even.
I was able to extend this idea to a workaround I use myself. I create a clip in Waveform that contains the CC0, CC32, and PC values into the clip and saved it as a preset (I have a preset for each commonly used bank). I then drag that preset clip onto the track and overlay it on top of the MIDI track, positioning it where I want the PC to happen.
Then, using the properties window, I shift the PC value to where I want it.
It's a weird workaround, but it gives me 100% control. However, I admit that some hardware units have a ton of banks. For example, on my big keyboard, I edit the CC0, CC32, and PC values in the properties pane. For the smaller devices, it's easier to use the bank preset thing I mentioned earlier. I use presets and tags, so it's quite easy to find the preset I want very quickly and drag it onto the track where it needs to go.
Is this ideal? No, but it works with a high degree of control. I think an ideal solution would let me do a three-in-one program sequence where I can pop in the MSB, LSB, and PC in a row and send that even as a single clip--but editing it in a single location. Not sure how that's done.
Maybe a macro writer here can suggest something.
I'm not sure how other DAWs handle/prevent this issue.
In the days before DAWs, we handled it by manually inputting the CC0, CC32, and PC commands into the sequencer track ourselves...with the PC command happening right at the part where you wanted the program to switch. And in those days, your hardware might need a second or two to react properly, so sometimes you had to put it a little ahead of the desired change, even.
I was able to extend this idea to a workaround I use myself. I create a clip in Waveform that contains the CC0, CC32, and PC values into the clip and saved it as a preset (I have a preset for each commonly used bank). I then drag that preset clip onto the track and overlay it on top of the MIDI track, positioning it where I want the PC to happen.
Then, using the properties window, I shift the PC value to where I want it.
It's a weird workaround, but it gives me 100% control. However, I admit that some hardware units have a ton of banks. For example, on my big keyboard, I edit the CC0, CC32, and PC values in the properties pane. For the smaller devices, it's easier to use the bank preset thing I mentioned earlier. I use presets and tags, so it's quite easy to find the preset I want very quickly and drag it onto the track where it needs to go.
Is this ideal? No, but it works with a high degree of control. I think an ideal solution would let me do a three-in-one program sequence where I can pop in the MSB, LSB, and PC in a row and send that even as a single clip--but editing it in a single location. Not sure how that's done.
Maybe a macro writer here can suggest something.
Spotify, Apple Music, YouTube, and even Deezer, whatever the hell Deezer is.
More fun at Twitter @watchfulactual
More fun at Twitter @watchfulactual
-
- KVRer
- 4 posts since 22 Mar, 2022
Thanks Watchful.
So I created (with some labour) a new Patch Script for the MC-303 in which I changed all the banks around so that the tones using a common CC/hbank were all in the same group/bank.
This resulted in a somewhat cleaner experience in changing tones within a single midi clip.
However - I can't seem to change banks in a single clip with much success.
I added (using the controllers menu) a specific Bank Select and a specific Program Change.
When I have the first part of the clip using say Bank A the Program Change is set as controlling tones in Bank A (all good). But then when I send a Bank Select to switch to Bank B, I need to add yet another Program Change entry but this time for Bank B tones. In Waveform I can add two Program Change boxes within the same MIDI Clip and select different Banks, BUT when I try to change one of them, it changes BOTH windows. It seems the second Program Change window always default to the first selected Bank (Bank A) and ignores the Bank (Bank B) chosen from the Controllers menu. So maybe that's an implementation issue.
Right now I have worked around by just using different tracks for the different banks, but that's also hardly ideal.
A macro may work to re-order the messages. I'd be keen to have a look at something like that given a little push in the right direction.
I guess the MC-303 is a little picky in how it wants to be sent MIDI, but I'm also still trying to convince myself that the Waveform MIDI features are sound. Thanks for any and all help.
So I created (with some labour) a new Patch Script for the MC-303 in which I changed all the banks around so that the tones using a common CC/hbank were all in the same group/bank.
This resulted in a somewhat cleaner experience in changing tones within a single midi clip.
However - I can't seem to change banks in a single clip with much success.
I added (using the controllers menu) a specific Bank Select and a specific Program Change.
When I have the first part of the clip using say Bank A the Program Change is set as controlling tones in Bank A (all good). But then when I send a Bank Select to switch to Bank B, I need to add yet another Program Change entry but this time for Bank B tones. In Waveform I can add two Program Change boxes within the same MIDI Clip and select different Banks, BUT when I try to change one of them, it changes BOTH windows. It seems the second Program Change window always default to the first selected Bank (Bank A) and ignores the Bank (Bank B) chosen from the Controllers menu. So maybe that's an implementation issue.
Right now I have worked around by just using different tracks for the different banks, but that's also hardly ideal.
A macro may work to re-order the messages. I'd be keen to have a look at something like that given a little push in the right direction.
I guess the MC-303 is a little picky in how it wants to be sent MIDI, but I'm also still trying to convince myself that the Waveform MIDI features are sound. Thanks for any and all help.
