Midi Messages send "BANK" change messages

Home Forums General General MIDI discussion Midi Messages send "BANK" change messages

Viewing 16 posts - 1 through 16 (of 16 total)
  • Author
    Posts
  • #114660
    JT64
    Participant
      • Topics: 11
      • Replies: 23
      • Total: 34

      Somehow my original message dissapeared, i would like to know howto “build a bankmessage” for Korg N364.

      I know howto send note and midichannel “the basics”. But i can’t quite figure out howto change bank given the little info i found.

      Could someone help me construct it? In decimal would be nice, but hex or bin ok.
      Here is the info i found i can’t see it say anything about bankchange, i would guess these type of ino not available in a usermanual, so where can one find it service manuals or? How did he find out these things?

      [ KORG N264/N364 SysEx – A Quick Reference Guide ]

      Compiler: Kenneth Jonsson (http://user.tninet.se/~ufn204a)
      Updated: April 29, 1998.

      All pages & tables refer to the N264/N364 Reference Guide.

      x = global MIDI channel: 0 through F (equals 1 through 16)

      ———————————————————————–
      GENERAL N264/N364 SYSEX CODE:
      ———————————————————————–
      SysEx start F0
      KORG ID number 42
      MIDI channel 3x
      N-series ID 35
      Function code
      Data
      SysEx end F7
      ———————————————————————–
      DUMP REQUESTS:
      ———————————————————————–
      Current program F0 42 3x 35 10 F7 *
      Current combination F0 42 3x 35 19 F7 *

      Global data F0 42 3x 35 0E 00 F7
      Pattern set F0 42 3x 35 09 00 F7
      Drumkits F0 42 3x 35 0D 00 F7
      All programs F0 42 3x 35 1C 00 F7
      All combinations F0 42 3x 35 1D 00 F7
      All sequencer songs F0 42 3x 35 18 00 F7
      All data F0 42 3x 35 0F 00 F7

      Current mode F0 42 3x 35 12 F7

      * = N264/N364 must be in prog or combi mode respectively
      ———————————————————————–
      MODE SELECT:
      ———————————————————————–
      Combination mode F0 42 3x 35 4E 00 00 F7
      Program mode F0 42 3x 35 4E 02 00 F7
      Sequencer mode F0 42 3x 35 4E 04 00 F7

      Global mode F0 42 3x 35 4E 06 00 F7
      Disk mode F0 42 3x 35 4E 07 00 F7

      Combi edit mode F0 42 3x 35 4E 01 00 F7
      Prog edit mode F0 42 3x 35 4E 03 00 F7
      Seq edit mode F0 42 3x 35 4E 05 00 F7
      ———————————————————————–
      ERROR / ACKNOWLEDGEMENT MESSAGES:
      ———————————————————————–
      In-data format error F0 42 3x 35 26 F7
      Data load completed F0 42 3x 35 23 F7
      Data load error F0 42 3x 35 24 F7
      Write completed F0 42 3x 35 21 F7
      Write error F0 42 3x 35 22 F7
      ———————————————————————–
      PROG / COMBI / DRUM PARAMETER EDIT (CUMBERSOME!):
      ———————————————————————–
      Prog write request F0 42 3x 35 11 0b nn F7
      Combi write request F0 42 3x 35 1A 0b nn F7
      Prog/combi param change F0 42 3x 35 41 yy zz vv ww F7 *
      Drum kit param change F0 42 3x 35 53 0k ss 0p vv ww F7

      b = bank number: A=0, B=1
      nn = prog/combi number: 00 through 99 (decimal)
      yy = parameter number LSB (see tables 8 through 12 on page 225)
      zz = parameter number MSB ( – ” – )
      vv = value LSB (see note 13 on page 220)
      ww = value MSB ( – ” – )
      * = N264/N364 must be in prog edit mode to change current prog
      parameters, and in combi edit mode to change current combi
      parameters.
      k = drum kit number: A1=0, A2=1, B1=2, B2=3
      ss = index number: 00 through 59 (decimal)
      p = parameter number (see table 13 on page 225)
      ———————————————————————–
      MISCELLANEOUS (NON-SYSEX):
      ———————————————————————–
      Select seq song F3 0s (s = 0 through 9)
      Start seq play FA
      Continue seq play FB
      Stop seq play FC
      Seq position F2 yy zz

      Master volume F0 7F gg 04 01 yy zz F7
      Master balance F0 7F gg 04 02 yy zz F7
      Master balance center F0 7F gg 04 02 00 40 F7

      General MIDI mode on F0 7E gg 09 01 7F
      Instrument ID request F0 7E gg 06 01 7F (see table 1-4 on page 214)

      Timing clock F8
      Active sensing FE

      gg = global MIDI channel: 00 through 0F, or 7F for any channel
      yy = LSB: 00 through 7F
      zz = MSB: 00 through 7F

      #114661
      JT64
      Participant
        • Topics: 11
        • Replies: 23
        • Total: 34

        Are all messages starting with F0 sysexmessages?

        Here is by the way how javascript handling it, i think it take it in hex also.
        Bankchange message for Korg N364 anyone?

        message = [240, 126, 127, 6, 1, 247]; // device ID request
        outputPort = midi.outputs.get(portID);
        outputPort.send(message);

        #114662
        JT64
        Participant
          • Topics: 11
          • Replies: 23
          • Total: 34

          Ok think i solved it, found something. I guess it means that bankchange is not a sysex message.
          Is that true for all synths?
          Anyhow Nice!

          file:///C:/Users/jonas/Downloads/_home_httpd_data_media-data_8_BankChangeKorg-.pdf

          #114664
          goodweather
          Participant
            • Topics: 45
            • Replies: 550
            • Total: 595
            • ★★★

            Exactly!
            it is about the same on all synths.

            Program change is usually a channel message like 0xCm 0x00/7F where m is 0 to F and is your midi channel 0-15 and where the second byte is O to 127 (00 to 7F)

            Bank change is a controller message like 0xBm 0x20 0x00 to 0x07 where m is 0 to F and is your midi channel 0-15 and where the second byte is the copntroller number (0x20 or 32 in this case) and the third byte is in my example O to 7 allowing to select a bank 1 to 8.

            It is in this third byte of the bank change message that you will have differences between the synths (but also in the 2nd byte of the program change message)

            #114668
            Possemo
            Participant
              • Topics: 14
              • Replies: 638
              • Total: 652
              • ★★★

              afaik bank select is standardized by midi specs. It is a bit more complicated than simple control change messages as it consists of two 7-bit msb/lsb parts. There may exist some synths that are using only one of them. It is quite well explained here: https://www.mutools.com/info/docs/mulab/using-bank-select-and-prog-changes.html

              Ctrlr uses the Lua script language, not Java script. Syntax is somewhat similar. No need to do most of the hard work, you will just access components of Ctrlr and/or use the Juce libraries (not all classes are implemented in Ctrlr – e.g. audio classes wouldn’t make much sense): https://docs.juce.com/master/index.html
              Best way to learn Ctrlr is to check how others have done it e.g. start with the demo panels from Roman: http://ctrlr.org/demo-panels/

              #114673
              goodweather
              Participant
                • Topics: 45
                • Replies: 550
                • Total: 595
                • ★★★

                Well, when I wrote my answer I simplified the bank message which contains indeed 2 controller messages (and at the same time I told myself that I was sure someone would react 😉 )…

                So, for bank message you need to send 0xBm 0x00 0x00 then 0xBm 0x20 0xsomething

                The something can be different from one synth to another one depending on the organisation of the programs.

                Example on Sub37: 16 real banks of 16 programs but the “something” is only 0 or 1 because each virtual bank contains 128 programs (0-127) each
                Example on Pro2: 8 real banks of 99 programs. The something is in that case 0-7 while for programs only 0-98 is recognized even if each virtual bank can handle 128 programs

                #114674
                JT64
                Participant
                  • Topics: 11
                  • Replies: 23
                  • Total: 34

                  Just as someone said it seem just to be two control messages.

                  Korg X Series/N364/264/Trinity Series/ Z1/Z1EX

                  BANK A
                  Message Value
                  Controller 0 0
                  Controller 32 0
                  Program Change 0-99 (0-127)
                  BANK B
                  Message Value
                  Controller 0 0
                  Controller 32 1
                  Program Change 0-99 (0-127)
                  BANK C
                  Message Value
                  Controller 0 0
                  Controller 32 2
                  Program Change 0-99 (0-127)
                  BANK D
                  Message Value
                  Controller 0 0
                  Controller 32 3
                  Program Change 0-99 (0-127)
                  BANK S/M (Trinity)
                  Message Value
                  Controller 0 0
                  Controller 32 4
                  Program Change 0-99 (0-127)
                  GM BANK (X and N Series)
                  Message Value
                  Controller 0 56
                  Controller 32 0
                  Program Change 1-128
                  GM DRUM BANK (X and N Series)
                  Message Value
                  Controller 0 62
                  Controller 32 0
                  Program Change *

                  #115212
                  JT64
                  Participant
                    • Topics: 11
                    • Replies: 23
                    • Total: 34

                    Regarding Midi Control of my N364 “using Javascript”

                    Well i came so far i can load the banks and i have no problem changing programs within banks

                    ***EXCEPT FOR the drum bank***? Is it really a bank? Because the drum sets listed as program 128 to 236 in GM bank it is uttely confusing. Does this mean Korg N364 do not have dedicated midichannel 10 for drums?

                    I can reach Drum bank “patch 128 in GM bank” it is easy, resting within the program banks not combi banks.

                    You first tell what mode to put synt into equal “program mode” and send the 3 part message two control messages followed by a program message, to get there.

                    In all banks except GM drum i can just send a program message to set “instrument” in this case drumkit. Something like outportarr[outportindex].send(192,10,4)

                    But when drumBank selected it do not work “because it seem like the kits in bank are just patches in the GM bank 128-136”. I just do not get howto change kit. And it get very confusing looking into the cakewalk instrumentfile. A hint anyone?

                    What does it mean
                    Patch[7169] = N364 Prog GM
                    Patch[7937] = N364 GM Drums
                    Patch[ * ] = 0. .127
                    Key[7937, 0] = N364 GM Kit
                    Key[7937, 16] = N364 Power Kit
                    Key[7937, 25] = N364 Dance Kit
                    Key[7937, 26] = N364 Analog Kit
                    Key[7937, 33] = N364 Jazz Kit
                    Key[7937, 41] = N364 Brush Kit
                    Key[7937, 48] = N364 Orch Kit
                    Key[7937, 65] = N364 Perc Kit
                    Drum[7937, * ] = 1

                    Below code work to change between banks, and the code to select patches in bank simple “except it do not work in drumbank, because it is just patches?”
                    function sendBankN364(){
                    selectSequenserMode();
                    bankNr=document.getElementById(“selBank”).selectedIndex;
                    //alert(bankNr);
                    if (bankNr<6 && bankNr>1) {selectProgramMode();bankNr=bankNr-2;synthMode=”instrument”;GM=0}
                    else if (bankNr>5){selectCombiMode();bankNr=bankNr-6;synthMode=”combi”;GM=0}
                    else if (bankNr==1){selectProgramMode();GM=56;bankNr=0;}
                    else if (bankNr==0){selectProgramMode();GM=62;bankNr=0;}
                    //alert(bankNr);
                    settingChange = [176,0,GM];
                    outportarr[outportindex].send(settingChange);
                    settingChange = [176,32,bankNr];
                    outportarr[outportindex].send(settingChange);
                    settingChange = [192,0];
                    outportarr[outportindex].send(settingChange);
                    }

                    function selectSequenserMode(){
                    settingChange=[0xf0,0x42,0x30,0x35,0x4e,0x04,0x00,0xf7];
                    outportarr[outportindex].send(settingChange);
                    }

                    function selectCombiMode(){
                    settingChange=[0xf0,0x42,0x30,0x35,0x4e,0x00,0x00,0xf7];
                    outportarr[outportindex].send(settingChange);
                    }

                    function selectProgramMode(){
                    settingChange=[0xf0,0x42,0x30,0x35,0x4e,0x02,0x00,0xf7];
                    outportarr[outportindex].send(settingChange);
                    }

                    function sendProgram() {
                    //Set program on the track
                    programTRX = document.getElementById(“prog_sel”).value;
                    //Set channel
                    sysexC = 192 + channelTRX-1;
                    //Build message for midi synth
                    settingChange = [sysexC, programTRX];
                    //Send to midiport
                    if (outportarr.length>0) {outportarr[outportindex].send(settingChange);}
                    }

                    #115214
                    Possemo
                    Participant
                      • Topics: 14
                      • Replies: 638
                      • Total: 652
                      • ★★★

                      I am a bit familiar with this Korg mess as I am working on a Korg 05R/W panel ATM.

                      First: you probably meant program Nr. 128 to 136 (not 236).

                      Look at the midi implementation chart, page 214 of the manual. At the bottom program/bank changes are explained. Prog 128 to 136 do have special values (btw. very weird ones). The same applies to my Korg 05R/W.

                      #115215
                      JT64
                      Participant
                        • Topics: 11
                        • Replies: 23
                        • Total: 34

                        Well that is such a total mess, i do not even know where to begin to decrypt that one.
                        They really sucked writing manuals back in the days.

                        Well in javascript to reach drum bank first you set mode by first sending type of setting message.

                        settingChange=[0xf0,0x42,0x30,0x35,0x4e,0x02,0x00,0xf7];
                        outportarr[outportindex].send(settingChange);
                        Ok so now we are in program mode, where our drums is.

                        Next we need the message to drumbank.
                        GM=62;bankNr=0;
                        //The two control messages
                        settingChange = [176,0,GM];
                        outportarr[outportindex].send(settingChange);
                        settingChange = [176,32,bankNr];

                        //And then you must send a program change i guess this must be program 0 but it ends up being 128?

                        settingChange = [192,0];
                        outportarr[outportindex].send(settingChange);

                        So the above works, but what numbers to use for program 129,130,131,132,133,134,135,136 i don’t get it?

                        settingChange = [192,x]; ???

                        You have any idea for those other kits, 192,0 is defintily working for program “kit” at 128 but that may just be fluke.
                        And 192,1 192,2 and so on definitly do not.

                        You have an idea or hint, because that manual is awful.

                        #115216
                        JT64
                        Participant
                          • Topics: 11
                          • Replies: 23
                          • Total: 34

                          I do not even get what the below means, is it a three part message to send, ?
                          3e must be 62 controler 0 message
                          And 00 contoller 32 message?
                          So what is the last byte, something like?
                          settingChange = [192,25]; for prg 131 ?
                          settingChange = [192,16]; for prg 130 ?

                          Well i just have to try i guess.

                          3e,00,00 =129
                          3e,00,10 =130
                          3e,00,19 =131
                          3e,00,20 =132
                          3e,00,28 =133
                          3e,00,40 =134
                          3e,00,18 =135
                          3e,00,30 =136

                          #115217
                          JT64
                          Participant
                            • Topics: 11
                            • Replies: 23
                            • Total: 34

                            Well i tried to set the values sending just program change when at 129 i send program 16,24 and so on, did not work.
                            But maybe they must be part of a full bank message, probably…

                            I will contruct those and report on success and failure.
                            It is kind of weird with bank changes that just change programs in the GM bank.

                            • This reply was modified 4 years, 9 months ago by JT64.
                            #115223
                            Possemo
                            Participant
                              • Topics: 14
                              • Replies: 638
                              • Total: 652
                              • ★★★


                              3e,00,00 =129
                              3e,00,10 =130
                              3e,00,19 =131
                              3e,00,20 =132
                              3e,00,28 =133
                              3e,00,40 =134
                              3e,00,18 =135
                              3e,00,30 =136

                              These are combined bank / program change values.

                              Here a snippet of my Korg 05R/W code. Change to program Nr. 136:

                                      -- select bank 3
                                      panel:sendMidiMessageNow(CtrlrMidiMessage(bankSelect.."00 3e"))
                                      -- select patch
                                      panel:sendMidiMessageNow(CtrlrMidiMessage(programChange.."30"))

                              With Lua for Ctrlr it is a thousand times easier to do and this is just a snippet but I think you will get the point.

                              • This reply was modified 4 years, 9 months ago by Possemo.
                              • This reply was modified 4 years, 9 months ago by Possemo.
                              #115243
                              JT64
                              Participant
                                • Topics: 11
                                • Replies: 23
                                • Total: 34

                                Yeah it works, program change in the drumbank of N-series and its cousins do need a full bank message to be set.

                                It get a bit messy codewise either drop the kits as banks in bank optionlist. Or make a special case for programs in “drum/GM bank”.

                                And special cases does not feel right, i think i list the kits as individual banks in option list, because they all need a bank message. And i already have the messages for Korg N364 in an own file.

                                So i keep the generality of program change.

                                #117741
                                anasmith
                                Participant
                                  • Topics: 0
                                  • Replies: 1
                                  • Total: 1

                                  Students who are dealing with stress due to pending assignments can approach our professional assignment help UK. We ensure you to complete your entire assignment within the limited time provided by you. Our prompt and cheap offers never compromise on the quality of the assignment. Our primary objective is to produce quality writing through our expert writers.

                                  #117897
                                  goodweather
                                  Participant
                                    • Topics: 45
                                    • Replies: 550
                                    • Total: 595
                                    • ★★★

                                    The link provided by Possemo above has changed.
                                    here is the new link: http://www.mutools.com/info/M8/docs/mulab/using-bank-select-and-prog-changes.html

                                  Viewing 16 posts - 1 through 16 (of 16 total)
                                  • The forum ‘General MIDI discussion’ is closed to new topics and replies.
                                  There is currently 0 users and 86 guests online
                                  No users are currently active
                                  Forum Statistics
                                  Threads: 2,495, Posts: 17,374, Members: 77,605
                                  Most users ever online was 12 on January 22, 2019 3:47 pm
                                  Ctrlr