Channels and omni mode.

Home Forums General General MIDI discussion Channels and omni mode.

This topic contains 9 replies, has 2 voices, and was last updated by Possemo Possemo 2 months, 3 weeks ago.

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 2 months, 3 weeks ago by  JT64.
    • This topic was modified 2 months, 3 weeks ago by  JT64.
    #115351
    Possemo
    Possemo
    Participant
    • Topics: 13
    • Replies: 585
    • Total: 598
    • ★★★

    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 2 months, 3 weeks ago by Possemo 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 2 months, 3 weeks ago by  JT64.
    • This reply was modified 2 months, 3 weeks ago by  JT64.
    • This reply was modified 2 months, 3 weeks ago by  JT64.
    • This reply was modified 2 months, 3 weeks ago by  JT64.
    • This reply was modified 2 months, 3 weeks 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 2 months, 3 weeks 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
    Possemo
    Participant
    • Topics: 13
    • Replies: 585
    • Total: 598
    • ★★★

    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 2 months, 3 weeks ago by  JT64.
    #115377
    Possemo
    Possemo
    Participant
    • Topics: 13
    • Replies: 585
    • Total: 598
    • ★★★

    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 2 months, 3 weeks ago by  JT64.
    • This reply was modified 2 months, 3 weeks ago by  JT64.
    #115388
    Possemo
    Possemo
    Participant
    • Topics: 13
    • Replies: 585
    • Total: 598
    • ★★★

    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 2 months, 3 weeks ago by Possemo Possemo.
    • This reply was modified 2 months, 3 weeks ago by Possemo Possemo.
    • This reply was modified 2 months, 3 weeks ago by Possemo Possemo.
Viewing 10 posts - 1 through 10 (of 10 total)

You must be logged in to reply to this topic.

There is currently 0 users and 25 guests online
No users are currently active
Forum Statistics
Threads: 2,245, Posts: 15,811, Members: 56,124
Most users ever online was 12 on January 22, 2019 3:47 pm
Do NOT follow this link or you will be banned from the site!