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
Reason 8.3 MPK Mini remote script
-
- Posts: 416
- Joined: 25 Jan 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
You mean controlling rack extensions with the controller?
I think my script does not work with them as well. I might implement it someday.
I think my script does not work with them as well. I might implement it someday.
-
- Posts: 416
- Joined: 25 Jan 2015
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.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.
150 paid RExtensions and still no Grammy
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.
-
- Posts: 8
- Joined: 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.
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.
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
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
-
- Posts: 8
- Joined: 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
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
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
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
-
- Posts: 8
- Joined: 18 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
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
-
- Posts: 8
- Joined: 18 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:
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
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
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
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
-
- Posts: 8
- Joined: 18 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:
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
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:
is not 40 (decimal) but 40 (hexadecimal) = 64 (decimal). Sustain has always been CC=64 in decimal.Maybe you need to adjust the CC (currently 40) since it reads from any channel ("b?"):
{pattern="b? 40 xx", name="Sustain"},
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
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
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