Reason 8.3 MPK Mini remote script

This forum is for discussing Reason. Questions, answers, ideas, and opinions... all apply.
Post Reply
carlosedp
Posts: 32
Joined: 02 Mar 2015
Location: São Paulo/ Brazil
Contact:

10 Jun 2015

Hi, have anyone beta testing Reason 8.3 tried the new Akai MPK Mini remote script?

It is the one I created (based on work by others as well) and I submitted to Propellerhead to be included on 8.3.

Have anyone found bugs? Could you try it? Test the knobs and pads in PC and CC modes to check if they are working as intended in the Readme here: https://github.com/carlosedp/Reason-MPKMini-Remote

You could send bugs over the issue tracker in Github.

Best regards,
Carlos

MDTerps2015
Posts: 416
Joined: 25 Jan 2015

10 Jun 2015

Will this work with the MPK249. I just bought that and cant get anything to work with it other than Reason stock devices. 
150 paid RExtensions and still no Grammy

carlosedp
Posts: 32
Joined: 02 Mar 2015
Location: São Paulo/ Brazil
Contact:

10 Jun 2015

You mean controlling rack extensions with the controller?

I think my script does not work with them as well. I might implement it someday.

MDTerps2015
Posts: 416
Joined: 25 Jan 2015

11 Jun 2015

carlosedp wrote:You mean controlling rack extensions with the controller?

I think my script does not work with them as well. I might implement it someday.
Yeah i just bought the MPK249 and cant get any of the rack extensions to work with it except remote override. I want to drop in a rack extension and just go instead of programming eac knob each time. 
150 paid RExtensions and still no Grammy

User avatar
jam-s
Posts: 3062
Joined: 17 Apr 2015
Location: Aachen, Germany
Contact:

11 Jun 2015

For REs to work with any controller you will have to edit the remote map file of the controller and add the correct mapping information for each RE you want to have supported.

mpkminimark2
Posts: 8
Joined: 18 Jun 2015

18 Jun 2015

to carlosedp

Thank you for your work on this akai mini remote files.

I have the Akai MPK mini MK2 and would ask you if it is possible to add the pitchbend and the modulation wheel features to your files, so that also the mk2 will be fully usable in Reason.

I tried myself copying some lines code from the mpk49 and mpk249 files, but with no result.

Thank you in advance.

carlosedp
Posts: 32
Joined: 02 Mar 2015
Location: São Paulo/ Brazil
Contact:

18 Jun 2015

You need to figure out the CCs the MK2 send for the controls. If everything on MK2 works with my script except the pitch bend and mod wheel you could get the MPK Editor from Akai website and check the CCs sent. Then add to "items" array and the "inputs" section a line similar to below:

Items array:

{name="Pitch Bend", input="value", min=0, max=16383},
{name="Modulation", input="value", min=0, max=127},

Inputs:

{pattern="e? xx yy", name="Pitch Bend", value="y*128 + x"},
{pattern="b? 01 xx", name="Modulation"},

Replacing the channels and CCs in the patterns above. Usually the pitch bend will work because it accepts from any channel. The mod wheel is assigned to any channel but CC 01. If the CC is different, it must be changed in it´s line.

In doubt post a screenshot of the Akai editor with the CCs for the preset 1 shown so I can help you.

The auto detection must be updated as well. You need to send the Sysex "f0 7e 7f 06 01 f7" via the codec test or any other MIDI console to get the ID of the MK2. Then the remote_probe() function must be updated.

Take a look in Remote Codec Developer documentation, it's pretty simple.

Regards,
Carlos

mpkminimark2
Posts: 8
Joined: 18 Jun 2015

18 Jun 2015

Hi Carlos and thank you for your answer.

First of all, I must say that I don't use Reason version 8 yet, but still the 7.1.1 where I feel more comfortable, particularly in the browser area.

So I've tested your script only in 7.1.1 and I'm really sorry to say that the MK2 doesn't work, at least not entirely. Only Program Change events like Start Stop Record are OK. Sorry to say that Pads and Knobs as CC events are not working/recognized yet.

It's almost one week now that I'm having good results using the original Akai LPD8 lua/map script files, after having a little customized them following my preferences. Only the pitchbend and the modulation appear difficult to me to get implemented.

About your script files, there are two possibilities:
- or they work only in Reason 8;
- or there must be a problem in the minimk2's preset area.

I set a copy 1=1 from your starting preset (remember it is for the akai mpk mini first release) to my preset in the mini mk2 (it has a different editor, that generates new files not in plain text). Anyway, I will try again next days.

Best Regards,
John

carlosedp
Posts: 32
Joined: 02 Mar 2015
Location: São Paulo/ Brazil
Contact:

18 Jun 2015

I believe the script works in any Reason version (although I only tested in R8). I didn't use anything different from the standard Remote functions.

Probably there are mismatches in CC and mainly MIDI channels sent by the pads and knobs.

Adjusting them is pretty easy:

Maybe you need to adjust the CC (currently 40) since it reads from any channel ("b?"):
{pattern="b? 40 xx", name="Sustain"},

Here you need to map each CC to the knob and pad following the rule [CC]=Knob index/Pad Index:

--converts CC numbers to slider/knob numbers in format: [CC]=Knob
gAnalogCCLookup = {
    [17]=1,[18]=2,[19]=3,[20]=4,[13]=5,[14]=6,[15]=7,[16]=8 --Knobs 1-8
}

gPadCCLookup = {
    [20]=1,[21]=2,[22]=3,[23]=4,[24]=5,[25]=6,[26]=7,[27]=8, --Pads 1-16
    [28]=9,[29]=10,[30]=11,[31]=12,[35]=13,[36]=14,[37]=15,[38]=16
}


Here the script sets the MIDI Channel that the pads use. It does from B0 for channel 1 to BF for channel 16. Check the MK2 editor:
ret=remote.match_midi("B9 yy xx", event) --check for messages in channel 10


    ret=remote.match_midi("B0 yy xx", event) --check for messages in channel 1

Here the script sets the channel for the knobs (channel 1 = B0). Just adjust to MK2.

The two other things to do is add the mod wheel and pitch bend (like I sent earlier) and adjust the remote_probe function to auto-detect the MK2. Use the last version that I updated (1.5) from my repository on github.

Drop me a note after you do it. Try to keep the default preset 1 mappings from the MK2 so we can submit the script to Propellerhead so they add to Reason.

Carlos


mpkminimark2
Posts: 8
Joined: 18 Jun 2015

20 Jun 2015

Hi Carlos!

Thank you for your post above.
I've delete the message here because old now.
In fact during week-end I've edited lua/map files based on the LPD8 and now everything works on the MPKminiMK2, even pitch bend and modulation.
In short, what is working on MPKminiMK2 with customized Remote files based on LPD8:

Keyboard, Sustain = OK
Knobs CC = OK
Pads CC = OK
Pads PC = OK
Pitch Bend, Modulation = OK
Auto-detect = OK


I also edited a little the MPKminiMK1 files and got steps ahead but not all is working yet.
I added Modulation and Pitch Bend.
I also set a perfect Auto-Detection.
Here what is working on MPKminiMK2 with customized Remote files based on your MPKmini MK1:

Keyboard, Sustain = OK
Knobs CC = not yet
Pads CC = not yet
Pads PC = OK
Pitch Bend, Modulation = OK
Auto-detect = OK

I'll go on testing next days.

Regards,
John

mpkminimark2
Posts: 8
Joined: 18 Jun 2015

20 Jun 2015

I have another question...
I see in your file and in your post above that Knob4 and Pad1 have the same CC = 20.
Why?


However I think the problem is here:
--converts CC numbers to slider/knob numbers in format: [CC]=Knob
gAnalogCCLookup = {
    [17]=1,[18]=2,[19]=3,[20]=4,[13]=5,[14]=6,[15]=7,[16]=8 --Knobs 1-8
}

gPadCCLookup = {
    [20]=1,[21]=2,[22]=3,[23]=4,[24]=5,[25]=6,[26]=7,[27]=8, --Pads 1-16
    [28]=9,[29]=10,[30]=11,[31]=12,[35]=13,[36]=14,[37]=15,[38]=16
}

Although I don't have the reasonremote development kit, IMHO midi CC numbers should be written in hexadecimal.
But inside the [ ] it doesn't allow me to put hex numbers.
The controllers that are used for Knobs at the moment have the CCs numbers that can be both decimal and hex (for instance from 1 to 9), so they are correctly working.
Just my opinion thou.

Regards,
John

carlosedp
Posts: 32
Joined: 02 Mar 2015
Location: São Paulo/ Brazil
Contact:

22 Jun 2015

Let's go in parts:

The knobs that jump might be because they are not sending the output values. Check the items if the knobs have the output="value" tag:

local items={
        ....
        {name="Sustain", input="value", output="value", min=0, max=127},
        ....

Also chech the gFirstAnalogIndex variable. It should have the index of the first analog item from the items array. For example it's 3 because the first knob is the third item on the array:

--position of first analog control in the items table
gFirstAnalogIndex = 3

function remote_init()
    local items={
        {name="Keyboard", input="keyboard"},
        {name="Sustain", input="value", output="value", min=0, max=127},
        {name="Knob 1", input="value", output="value", min=0, max=127},
        {name="Knob 2", input="value", output="value", min=0, max=127},
        ......

Get a MIDI monitor utility to check which CCs and PCs your controller send, than adjust in the gAnalogCCLookup and gPadCCLookup arrays.
The reason a knob and pad uses the same CC is because they use different MIDI channels. You don't use CCs in hex, only in decimal. The number outside brackets is the analog index and the number inside is the CC it send.

The pads use channel 10 as can be seen in the "B9" match below:
    ret=remote.match_midi("B9 yy xx", event) --check for messages in channel 10

And the Knobs use channel 1 as can be seen in the "B0" match below:
    ret=remote.match_midi("B0 yy xx", event) --check for messages in channel 1

Regards,
Carlos

mpkminimark2
Posts: 8
Joined: 18 Jun 2015

22 Jun 2015

Hi Carlos,
Thank you for your post.

I'm beginning to think that the miniMK2 is completely different from your miniMK1 and perhaps this is the reason why we didn't understand ourselves well enough.

"Jump" is referring to your readme in   github   about the controller (in Reason) that jump to the value (of the knob) just beginning to rotate it.
Your well done script has found out a way to solve this problem, and this is the main reason why I'm wishing to use it.

My MPKminiMK2's midi channel is programmable and it has always been channel 1 for keyboard, pads and knobs. I've never changed it because it is useless with Reason's internal synths. Pads are always channel 1, never been channel 10 here.

I set the position of the first analog knob to 1 because I move keyboard, pitch bend, sustain and modulation to the end of the array list, much easier for testing, adding and deleting items.

The MPKminiMK2 transmits the CCs in hexadecimal, this is doubtless.
For instance, this:
Maybe you need to adjust the CC (currently 40) since it reads from any channel ("b?"):
{pattern="b? 40 xx", name="Sustain"},
is not 40 (decimal) but 40 (hexadecimal) = 64 (decimal). Sustain has always been CC=64 in decimal.

In fact in both original and custom LPD8 lua script file, all specified listed CCs are in Hexadecimal and the script works perfect.
I don't know about the old miniMK1.
The fact is that your script with CCs in decimal number doesn't work for the MPKminiMK2.
Only exception is for those CC numbers that are the same in Dec or in Hex (typically from 0 to 9).
I use them for the Knobs and they work. If I use 1 to 9 for the Pads, they also start working.
IMHO MPKminiMK2 needs hex numbers for CCs in its lua script.

I tried to explain myself the best I could, I won't write here again.
The lua script for the LPD8 should clarify a lot more, hope it helps.

Many thanks again for all your great work and the useful suggestions.
Best regards,
John

kslat3r
Posts: 1
Joined: 03 Nov 2015

03 Nov 2015

Hi all

Thanks for your great information everyone. It's been really helpful.

mpkminimark2: could you possibly share the work you have done with your Lua script? I too am having problems with my mk2, particularly the mod wheel and pitch bend. What CC do you have these set to? I am struggling to find the right pattern to put in my script.

Many thanks

Post Reply
  • Information
  • Who is online

    Users browsing this forum: taddx, zoidkirb and 9 guests