Channels and omni mode.

Home Forums General General MIDI discussion Channels and omni mode.

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

      I have this old Roland midi module, an 80’s gadget “Sound Canvas 7 SC-7” that i really enjoy. Work flawless out of box i am able to set programs directly to channels regardless which channel i send on.

      So i guess it is standard in some sort of “omni” mode?

      Right now i really struggle with my other hardware a synth Korg N364, it “seem” i can only send programchange on midichannel 1, have i missunderstood the channel philosophy, i thought that “default program” was set for each channel because that is how it seem to work on the Roland SC-7?

      Admittedly i do alot of things i do not understand….
      Following code will change program on any midichannel on the SC-7 but only change program on channel 1 one for the Korg N364.

      I was looking for some sort of omni mode in synth.

      But i can only find midi channesl 1-16 under GLOBAL 3A in the menu.
      Because the korg N364 can listen/play on many channels i guess, it is the same as the 05 module?

      Well if that really is the problem, but the program changes work flawless on the roland module on any channel.

      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];
      //Build message for soundfont synth
      SFprogram=programTRX-1;
      //Send to soundfont synth
      synth.PGMchange(sysexC,SFprogram);
      //Send to midiport
      if (outportarr.length>0) {outportarr[outportindex].send(settingChange);}
      }

      • This topic was modified 4 years, 10 months ago by JT64.
      • This topic was modified 4 years, 10 months ago by JT64.
      #115351
      Possemo
      Participant
        • Topics: 14
        • Replies: 638
        • Total: 652
        • ★★★

        I can only talk for the 05/RW module assumming the N364 being very similar:
        The 05/RW has 3 completely different modes.

        Normal “Program” mode:
        it will just respond on one midi channel (the global channel you can set it to any channel from 1 to 16). You can select user programs and gm-(rom)programs. There are 3 different banks – user, gm and gm-drums

        “Combi” mode:
        combine up to 8 different programs. Midi Program-change will select one of the 100 combis. Each program of the combi can have its own midi-channel. If channel differs from the global channel you can change the program by midi-program-change in this “combi-slot” (but – btw – the Ctrlr panel will use sysex messages sent on the global channel to change programs.

        “Multi” mode:
        select a program for each of the 16 midi channels. Program-change messages will change program on the corresponding midi channel. As in Combi mode the Ctrlr panel will use sysex messages on global channel to edit the entire parameter set of the Mulit mode

        special “GM” mode:
        I haven’t tested it yet but I believe it is just Muti mode without the user programs, so program-changes will select the GM patches (suitable for playing back GM midifiles).

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

          Well given that “GM” mode is when the synth is in GM bank using those programs. A straight program change
          computer send [192 + channel, program] -> synth

          This kind of program change, just will not do it “unless midichannel is 1” i could probably set it to two or whatever channel under menu Global 3A but not to multi receive mode.

          I beleive that would make it hard to play a regular GM “midi files” on the device?
          And it also do not seem to support the usual drum setup on midichannel 10. “From what i can see”

          Well it is hard to say i do not think i have managed to change midichannel, just programs on midichannel 1.

          If you further in your development of the panel for 05/RW find out, i would appreciate if you write a line or two.

          Have you got program changes for kits in drumbank to work, do you do them different from program changes in other banks?

          “Oh sorry it just dawned on me you say that omni mode is multi mode” i will try that if it find howto set it.
          Looking around a bit i see that your multimode actually maybe sequenser mode “multitrack mode” on the Korg N36¤, i think that’s it.
          Well it make sense you want to be in sequenser mode playing midi files.

          Thanks!

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

            I thought that multi mode may have been sequenser mode on the N364 but that was not it.
            I am just not able to set program on other channel then 1.
            Maybe you could try with the 05/RW and see if it change program on other midichannels then 1.

            https://midisequenser.000webhostapp.com/

            “well it must be the mode because it does not even listen to the virtual keyboard on other channels then 1”

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

              function sendBankN364(){
              bankNr=document.getElementById(“selBank”).selectedIndex;

              if (bankNr<6) {selectProgramMode();}
              else if (bankNr>5) {selectCombiMode();}

              if (bankNr==0){bankNr=0;GM=62;prgbase=192;}
              else if (bankNr==1){bankNr=0;GM=56;prgbase=192;}
              else if (bankNr==2){bankNr=bankNr-2;synthMode=”instrument”;GM=0;prgbase=192;}
              else if (bankNr==3){bankNr=bankNr-2;synthMode=”instrument”;GM=0;prgbase=192;}
              else if (bankNr==4){bankNr=bankNr-2;synthMode=”instrument”;GM=0;prgbase=192;}
              else if (bankNr==5){bankNr=bankNr-2;synthMode=”instrument”;GM=0;prgbase=192;}
              else if (bankNr==6){bankNr=bankNr-6;synthMode=”combi”; GM=0;prgbase=192;}
              else if (bankNr==7){bankNr=bankNr-6;synthMode=”combi”; GM=0;prgbase=192;}
              else if (bankNr==8){bankNr=bankNr-6;synthMode=”combi”; GM=0;prgbase=192;}
              else if (bankNr==9){bankNr=bankNr-6;synthMode=”combi”; GM=0;prgbase=192;}
              setBank();
              }

              function setBank(){
              settingChange = [176,0,GM];
              outportarr[outportindex].send(settingChange);
              settingChange = [176,32,bankNr];
              outportarr[outportindex].send(settingChange);
              settingChange = [prgbase,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);
              }

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

                I tried it on the 05/RW: I couldn’t change programs with midi prog-change-message in combi mode.. no idea why – in theory it should work. But in multi mode it was no problem. It seems that the 05R/W switches to GM-mode automatically when going into multi mode -> pc-message will select gm-patches.

                The N364 seems different in this aspect as it has its own sequencer. Look at page 154 of the reference manual. You have to set up a song in order to enable GM playback, or you can send a GM-mode-On message to set up song 9 automatically for GM playback (which will enable program change on all midi channels – all tracks set to different midi channels).

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

                  Yeah adding GM system on message setting the channels work but there is something funny going on because not only does the synth take midi in on the channel it also play something directly via keyboard “program 1 piano”, i can’t see on which channel.

                  It seem to be the active channel i chose but i can’t tell for sure can the synt play two programs on same channel?
                  I wonder can one mute keyboard to synth engine or set its volume to zero.

                  function sendBankN364(){
                  bankNr=document.getElementById(“selBank”).selectedIndex;

                  if (bankNr<6) {selectProgramMode();}
                  else if (bankNr>5) {selectCombiMode();}

                  if (bankNr==0){bankNr=0;GM=62;prgbase=192;}
                  else if (bankNr==1){bankNr=0;GM=56;prgbase=192;}
                  else if (bankNr==2){bankNr=bankNr-2;synthMode=”instrument”;GM=0;prgbase=192;}
                  else if (bankNr==3){bankNr=bankNr-2;synthMode=”instrument”;GM=0;prgbase=192;}
                  else if (bankNr==4){bankNr=bankNr-2;synthMode=”instrument”;GM=0;prgbase=192;}
                  else if (bankNr==5){bankNr=bankNr-2;synthMode=”instrument”;GM=0;prgbase=192;}
                  else if (bankNr==6){bankNr=bankNr-6;synthMode=”combi”; GM=0;prgbase=192;}
                  else if (bankNr==7){bankNr=bankNr-6;synthMode=”combi”; GM=0;prgbase=192;}
                  else if (bankNr==8){bankNr=bankNr-6;synthMode=”combi”; GM=0;prgbase=192;}
                  else if (bankNr==9){bankNr=bankNr-6;synthMode=”combi”; GM=0;prgbase=192;}
                  setBank();
                  GMsystemOn();
                  }

                  function GMsystemOn(){
                  settingChange = [0xf0,0x7e,0x00,0x09,0x01,0xf7];
                  outportarr[outportindex].send(settingChange);
                  }

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

                    You mean it plays some patch when you play the keyboard of the N364? Most keyboards have a “local on/off” switch. When set to off it will disconnect the keys from the sound engine and keys will only go to midi-out socket (and eventually back via midi-in).

                    Btw. in Combi mode midi channels /program change do work as expected on the 05R/W, I just had to leave combi-edit mode – it must stay in normal combi mode.

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

                      It works keyboard to engine turned off, now with “GM synth on message [0xf0,0x7e,0x00,0x09,0x01,0xf7]; even the drums on midi channel 10 works, which mean my implemented metronome is available in GM mode.

                      I am very thankfull for all your help, it would take me quite some time to figure out all this by my own, the N364 is quite a beast when in comes to functionality. And the menusystem do not exactly make it easier.

                      It would be nice if i could mirror “some of the LCD output” to a subwindow on javascript canvas, but that depends on how much of the message system available out, when pushing buttons quite alot from what i can see “in monitor”.

                      One step at a time now i will read in the drumkits “notes”, so the notes<-->“drum names” can be set thru option lists for the virtual drumpads.

                      Thansk again, midi is really great fun!

                      Is there functionality in CTRLR to read in the message sent when you push a button. Would be neat way to create the message for the panels?
                      Just push the button and CTRLR automaticly save it as a nameable function?
                      Maybe sound abit to good to be possible, no more fiddling with reading out manuals for messages just push the button to create them and save them as named functions that can be reached from the CTRLR interface.
                      If all button pushes was sent to midi out one could create message chains, basicly creating functions to reach any functionality on synth, by just read in saven and the mimic the keypresses.

                      Just an idea possible or not.

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

                        you mean a “learn” feature like some apps/controllers do have? No, Ctrlr just stores the incoming midi message into a memoryblock which is acessible very easily by using the Lua script language. I think a learn feature wouldn’t work well with most sysex messages anyway. E.g. many of them have the midi-channel included in some byte, but as it is sysex (system exclusive) it is free for every manufactuer to choose on which byte he places the midi-channel. Moreover, e.g. the 05/RW breaks big 14-bit numbers into two 7-bit bytes for the parameter address. Some of the 05/RW parameters do need big 14-bit vaules as well. It would be impossible to “learn” such composite sysex strings automatically.

                        AFAIK a learn-feature can just learn standard control change which is very easy to insert by hand into Ctrlr modulators anyway. But nevertheless it would be a nice feature to have. It could even be able to learn RPN and NRPN CC’s which are standardized by midi specs. RPN and NRPN do allow a big amount of controller adresses (14-bit = 2-exponent-14 = 16384) and do have 14-bit resolution for the value. Enough for even the most complex device. It’s a shame that almost none of the manufacturers makes use of these great hi-res CC’s.

                        • This reply was modified 4 years, 10 months ago by Possemo.
                        • This reply was modified 4 years, 10 months ago by Possemo.
                        • This reply was modified 4 years, 10 months ago by Possemo.
                      Viewing 10 posts - 1 through 10 (of 10 total)
                      • The forum ‘General MIDI discussion’ is closed to new topics and replies.
                      There is currently 0 users and 54 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