EMX1 mute/unmute and MIDI NPRN

Discussion relating to the Korg Electribe products.

Moderators: Sharp, X-Trade, Pepperpotty, karmathanever

Post Reply
jaz000
Posts: 3
Joined: Thu Mar 18, 2010 11:11 am

EMX1 mute/unmute and MIDI NPRN

Post by jaz000 »

Can I mute/unmute parts via MIDI?

Pressing the button sends NPRN messages but they don't work when sent back (it's quite possible part is missing due to the way nprn works it requires 4 midi messages to make sure all the info is there).

Is there a description of nprn implimentation anywhere? The manual states that nprn can be used to modify drum parts but without the implimentation map it's a bit difficult.
mbncp
Senior Member
Posts: 277
Joined: Fri May 23, 2008 1:11 pm

Post by mbncp »

Look for EMX1midiimp.txt on the korg site.
jaz000
Posts: 3
Joined: Thu Mar 18, 2010 11:11 am

Post by jaz000 »

awesom thanks! - that's exacly what I'm looking for.

Although to help future readers I will post this correction as the data in the file is not quite correct for the mute/unmute nrpn.

here are my notes:



TABLE1 : NON REGISTERED PARAMETER NUMBER (NRPN)
+---------+----------------------------------+---------+------------+---------------------------------------+
| nm nl | Parameter | MIDI Ch | Data Entry | dd (Data Entry Value) |
| [H] [H] | | | | [D] |
+---------+----------------------------------+---------+------------+---------------------------------------+

| 0B 76 | Mute 1 | Global | MSB,LSB | MSB= Bit0=1 SoloSts LSB= Bit4~0(S5~S1)=1 : Mute |
| 0B 77 | Mute 2 | Global | MSB,LSB | MSB=Bit1~0(P7B~P7A)=1 LSB=Bit6~0(P6B~P1)=1 : Mute |

Send all this to midi channel 1 (global) or whatever channel you set syth 1 to


but this is WRONG


Mute 1 is MSB = 0B LSB = 77
Mute 2 is MSB = 0B LSB = 78

And you must set all 4 bytes inc the solo one (to 0 id=f not solo) for it to take effect


*** Mute 1 MSB - solo

set cc #99 (x63) (msb) to 11 (x0b)
set cc #98 (x62) (lsb) to 119 (x77)
set cc #06 (x06) (lsb) set this to 0 unless you are setting solo


*** Mute 1 LSB = synth 1-5

set cc #99 (x63) (msb) to 11 (x0b)
set cc #98 (x62) (lsb) to 119 (x77)
set cc #38 (x26) (lsb) to 0-31 (0+values below for part to be "mute/off")

s5=16
s4=8
s3=4
s2=2
s1=1


*** Mute 2 MSB = drum7a/7b

set cc #99 (x63) (msb) to 11 (x0b)
set cc #98 (x62) (lsb) to 120 (x78)
set cc #06 (x06) (msb) to 0-3 (0+values below for part to be "mute")

7b=2
7a=1

*** Mute 2 LSB = drum1-6

set cc #99 (x63) (msb) to 11 (x0b)
set cc #98 (x62) (lsb) to 120 (x78)
set cc #38 (x26) (lsb) to 0-31 (0+values below for part to be "mute/off", 0=all on x7f = all off)

6b=64
6a=32
5=16
4=8
3=4
2=2
1=1
jaz000
Posts: 3
Joined: Thu Mar 18, 2010 11:11 am

Post by jaz000 »

of course all this would be easier if my DAW didn't fail to record the perfectly correct "flurry" of nrpn data that is sent when you mute/unmute a part :x
insenico
Posts: 12
Joined: Sat Jan 09, 2016 10:42 pm

Explained for dummies?

Post by insenico »

Hi,
I hate to bring this old thread back to life, but after fighting with this for a while I wanted to share my findings.

First, we'll have binary numbers, decimal and hex. We'll have to convert a lot. I am writing binary between [ ] , hex between ( ) and decimals straight.

As described above, the MIDI chart is wrong. MUTE 1 is NRPN (0b) (77) and MUTE 2 is (0b) (78 ). An important comment here. You have to send both! If you just send one it will be ignored. So basically, to control MUTE externally you have to send all the MUTE switches in one batch, for all drums and synth parts.

I wanted to add a few details on things I struggled with.

NRPN numbers
You send a 14 bit NRPN for MUTE1 and a 14 bit for MUTE2, basically a 28 bit signal.
There are 2 ways. Straight NRPN or using CC. I'll explain NRPN first, CC is very straightforward after you get NRPN.

NRPN has 2 pieces of information, WHERE you send to and WHAT you send . Where is the 14bit address, which is identified by two 7bit parts, MSB and LSB. For MUTE 1 is (0b) (77) in hexadecimal, or 1527 in decimal.
How do you get from (0b) (77) to 1527?. Well, (0b) hex converted to binary is [1011] or 11 in decimal. Let's use the 7bit, it is [0001011]. On the other hand, (77) in hex is [1110111] or 119 decimal. If you now put both pieces together, [0001011] [1110111] is (5F7) in hex or 1527 in decimal. Some daws use decimal (I use MIDI OUT from FL Studio for example, is decimal) which makes using NRPN so dificilt until you get it right.
OK, so that was one conversion, for the address. Then you need to send the data. Emx uses binary switches, plus the solo, as described above. But remember to send both.

A complete MUTE command sends

To MUTE1 address (0b) (77) in hex, 1527 in decimal: send 14 bits of data. The first 7 (known as MSB) are [0000000], or [0000001] if you use SOLO, basically 0 or 1 in decimal. The other 7 (known as LSB) are based on binary switches depending on what synth part is MUTE ON or OFF. The instructions above are clear. Examples: Just S5 would be [0010000] or 16 in decimal. S4 & S1 would be [0001001] or 9 in decimal, etc.

YOU HAVE TO SEND MUTE 2 TOO! MUTE 2 is very similar to MUTE 1 but the information is about Drum part mute switches. The address is (0b) (78 ) or 1528 in decimal.

Final example: you want to mute everything but S5 and S1.
MUTE1 goes to 0b 77 (1527) and data is [0000000] (0) [0010001] (17)
MUTE2 goes to 0b 78 (1528 ) and data is [0000000] (0) [0000000] (0)
Remember to send both, one after the other.

Second tip: NRPN as CC. The post above actually explains this, but I just couldn't understand it at first. Remember the NRPNs have both address and data, each being a 7 bit number MSB and LAB. Well you can send those using CC.
CC99 sends the NRPN address MSB.
CC98 sends the NRPN address LSB.
CC06 sends the NRPN data MSB
CC38 sends the NRPN data LSB.

Same example: you want to mute everything but S5 and S1.
MUTE1 goes to 0b 77 (1527) and data is [0000000] (0) [0010001] (17)
MUTE2 goes to 0b 78 (1528 ) and data is [0000000] (0) [0000000] (0)
If you use CC, then:
MUTE1
Set CC99 to (0b) or 11 in decimal for the address MSB
Set CC98 to (77) or 119 in decimal for the address LSB
Set CC06 to (0) or 0 in decimal for the data MSB
Set CC38 to [0010001] or (11) in hex or 17 in decimal for the data LSB.

Right after this, send MUTE2 as well, in the same shape.
MUTE2
Set CC99 to (0b) or 11 in decimal for the address MSB
Set CC98 to (78 ) or 120 in decimal for the address LSB
Set CC06 to (0) or 0 in decimal for the data MSB
Set CC38 to [0000000] or (0) in hex or 0 in decimal for the data LSB.

All these 8 CCs commands will be needed for just one MUTE command, the first 4 are MUTE1, the second 4 are MUTE2. From the first group, these 4 CCs are actually 2 for the address and 2 for the transmitted data.

After figuring this out, I decided not to use it :lol: Basically your command sends all MUTE switches simultaneously, as a big array, there is no way you can just toggle 1 at a time. It was still a fun challenge to figure it out... some engineer in korg overcomplicated something that could have been very easy...

I hope this helps....

:lol:
Electribe EMX-1
Kaossilator Pro+
Roland A-800 PRO
Hercules RMX2
Novation Launchkey Mini
FL Studio12
Traktor2
Post Reply

Return to “Korg Electribe”