Jump to content
Video Files on Forum ×

Significance of "Program Change" in MIDI data?


Recommended Posts

I have an older CDP-220R. Its documentation came with an Appendix, which lists some 683 patches, plus 24 more drum and sample patches. The Appendix shows the patch number, patch name, program change, and bank select MSB (Most Significant Byte).

 

My question has to do with the program change listed in this Appendix data. The program change numbers range from 0 to 116 with my CDP, and from what I understand, the numbers can range from 0 to 127. But from what I've read of "program change" is it has to do with changing patches while a piece of music is being played, hence program (or patch or instrument or whatever you want to call it) change. I found a copy of the MIDI Implementation for my CDP at world.casio.com and I've come across some interesting explanations as to how program change is implemented with my CDP. There is at least one parameter in which program change affects the sound, or timber, of a patch when it is received (but not sent). And I found that, with the bank select, it states when a bank value is received, that the bank isn't actually selected until a program change message is received.

 

There appears to be some importance to this since the Appendix has 116 different values for program change.

 

But here's where it matters to me -- I'm building an Instrument Definition file, used by Cakewalk (by Bandlab, previously Sonar) and the .ins files apparently do not have any parameters for a program change value. I've been following the work done by A. Dawson in the following link, and specific to my need, I copied much of the content of his message #13. It lists the CDP-200R, so I downloaded a copy of the 200R's Appendix, and found that it has a total of 653 instruments, whereas the 220R has 683. I haven't compared the two Appendices yet to see where the differences lie, but I'll get around to it one of these days. In the mean time, at least this file works with my 220R. Here's the thread where Dawson documents his efforts. I used the contents of message #13 to build my .ins file.

 

https://www.keyboardforums.com/threads/ctk-4000-5000-wk-500-instrument-definition-for-cakewalk.22565/

 

So anyway, I'm wondering, can I just ignore these program change values? My CDP seems to be working fine using the .ins file I built from the above message, so I guess I'm not gonna worry about it. Or should I?

 

 

 

Link to comment
Share on other sites

I'm not quite sure what question you are asking. A MIDI Program Change changes the program, or patch, or voice, or whatever you wish to call it. So if, hypothetically, Bank 0 Program 7 is Grand Piano, sending MIDI Bank Change 0 and Program Change 7 will switch your keyboard to the Grand Piano sound. You would use this in a DAW to ensure that your keyboard makes the right sound, so you would for example send the message at the very start of the song to make sure your Grand Piano MIDI track doesn't play as a Swannee Whistle because that sound happens to be selected on the keyboard when you start the playback.

 

There are some old standards for which program is which, called GM and GS. If an instrument follows that specification, it guarantees that a particular Bank/Program corresponds to a particular sound like Grand Piano or Electric Bass.

 

Is this any help?

Link to comment
Share on other sites

Not sure either-what an amazing piece of work this Dawson had done-and these are old posts. Might be that your link to his work should be posted prominently somewhere here! One thing about program and bank change messages. Each "bank" can (but does not have to) consist of 128 tones in Casiospeak-0-127 program change numbers. I think you get that, and many of those 'slots" can be empty in banks other than the first bank. But there can be a tremendous number of "banks" as well-I don't remember what the limit is as to how many, and each "bank" will have 128 new slots for an additional 128 sounds. This was done to accomodate workstations and tone modules that literally have thousands of tones or sounds. Unfortunately, there is no standard for where these other sounds are to placed in each new or successive bank-which is why this musician's posts and .ins files represent a staggering amount of work-and this just for Casios!

 

Most manufacturers will have the "GM" general midi bank as the first bank-the default bank, and this has been established as a constant-each instrument will have a fixed program change, and must always be in the first bank. After that, succesive banks should (logically) have in the same program change number, a variation of the first tone in the GM bank. So the first instrument in the first bank will be a piano, the first in the 2nd bank should be a variation on that piano. Now many succesive banks-depending on the keyboard, and the manufacturer-will have alternate instruments unfortunately-scattered all over. This is why the .ins (also called .idf files) need to be created. Regarding the different numbers of tones in the 2 Casios-without studying each keyboard's list of tones, chances are the missing tones will be in succesive banks-not the first, so will not miss these tones normally. Sorry it took so long to answer your question! The other thing to be aware of-if you download a midi file to play in the Casio-it will most likely adhere to the "GM" or "GS" standard-it will be playing tones in the very first bank of 128 tones-except the drums which are supposed to be fixed to midi channel 10, and have separate bank and program change numbers for each kit-again depending on the keyboard. These will also adhere to specific "GM" drumkits. If there are variations for example on the "standard" "room" or other type of drum kit-these will need the specific bank change and program change to play with your midi file-again why these .ins files are so important. Casios sometimes will not use some of their better pianos, organs, ep's etc. unless you select the right "bank change" number and its "program change" number-your midi file will automatically select the "GM" tones from that bank-which are not always the best tones with the some Casios, which use different banks for some of the better pianos, organs and many other sounds. Again sorry for such a long post-but I never assume what someone else knows-and I always like to be thorough. not much fun at parties though......:P

Link to comment
Share on other sites

Thanks for the explanations. Sorry I didn't make myself more clear. In the Appendices, each patch has four values associated with it: the patch number, the patch name, the program change number, and the bank select MSB. Ian, the program you're referring to, where you write "Bank 0 Program 7 is grand piano" for example, would be interpreted in the Appendix as Bank 0 Patch Number 7. The Program Change value is not unique for each instrument. In fact, many instruments share the same Program Change value, according to this Appendix list.

 

Oh, and just so's you know, I am familiar with a number of aspects of MIDI, including GM, GM2, XG, and even XG Lite. Plus, I have a couple of MIDI instruments that don't follow any of these standards -- an old Yamaha keyboard that predates the MIDI GM spec, and a Roland GR-33 guitar synthesizer that has patches which are more usable for a guitar synthesizer.

 

But back to the topic, if we examine the Appendix, for example, 001 (patch number) is Stereo Grand Piano, with a Program Change of 0 and a Bank of 2. 002 is Stereo Bright Piano with a Program Change of 1 and also a Bank of 2. There are a total of 31 different piano voices, most of which share Program Change 0 or 1, a few of which share program changes of 2 or 3. And the banks are all over the place, ranging from 1 to 12. Now, with regards to my earlier comment about how Bank Change can affect an instrument's timber, this does seem to be what's going on when you look at patch numbers 001 and 002 -- there being a difference in brightness between the two. But it would appear that the .ins file takes this into account without having to specifically mention the Program Change value, since, when I play the two different patches, patch 002 is noticeably brighter than patch 001. So I guess this is answering my question, in a way, as to what the Program Change value is actually doing. And I guess, since Program Change values are not listed in the .ins files, it looks as if they can be safely ignored. Make sense?

 

This is off-topic to the CDP, but I also have a Yamaha, a DGX-230, for which I've been searching for an .ins file and which I've, so far, found nothing. But this keyboard is both GM and XG Lite compatible, which got me to thinking that maybe I don't need a unique .ins file for it since Cakewalk supports both GM and XG (and XG Lite is backward compatible with XG). So first I just set it up as a GM instrument, with 128 voices, and it worked fine. Then I set it up as an XG instrument, with its expanded range of voices. What I found curious about doing this is that, with the XG spec, the first 128 voices are the same as GM, but they sounded different. Better to my ear, in fact. So this is an example of how different banks with the same but different voices can have an impact on how a device sounds. Heh, but don't get me started on the DGX's list of voices and how to interpret what's going on. The first 448 voices list a Bank Select MSB as 000 and Bank Select LSB values that are all over the place, frequently repeating, ranging from 0 to 127. Just as well it adheres to the XG spec, I'm figuring.

 

Link to comment
Share on other sites

  • 1 month later...

Bank changes exist so that you can have more than 128 sounds selected by MIDI, that's all. In the MIDI spec, there's no inherent correspondence between the bank and the sound (e.g. if bank 1 program 1 is a piano, bank 2 program 1 does not similarly have to be a piano). Typically, once you send a Bank command, all subsequent Program Change messages that lack a corresponding Bank command will simply select that numbered program from within whatever the last bank you had specified.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.