I recently changed from Ableton to Logic Pro and replaced my little used Push 2 with an IK Multimedia iRig Keys 2 Mini.
On plugging in the keys themselves and the octave buttons where the only thing working, the data encoder and 4 pot knobs were not doing what I thought they would do – which is to pick up the first 4/8 controls on whatever device I was in e.g. Quick Sampler.
The issue is that Logic just sees it as a ‘MIDI Device’ and not a control surface.
I searched high and low and eventually stumbled on a post on a forum where some clever dude had made a LUA script file for the iRig Keys 2.
After a bit of experimentation I was able to get this working by updating the name of the device etc for the Mini.
To be quite honest it is criminal that IK sell this thing as some kind of fully Mac compatible device when it 100% IS NOT out of the box in Logic.
If you have not already purchased this device and are a Logic user please do yourself a favor and get something by Arturia or Nektar instead.
If you already own it, you will need to find the folder which has all the supported control surface devices listed, add a new folder for IK Multimedia.
After that drop in the script file below or copy and paste it in a text doc and save it there as ‘config.lua’
The next time you run Logic it will ask if you want to use and auto map the control surface, select yes and you should now see the knobs assigned to eg Cutoff automatically in Quick Sampler.
Note: I originally removed the lines pertaining to mod wheel etc as the Mini does not have these – the LUA script in this case did not work – the one below works.
-- Copied from Arturia 25, tweaked to kind of work for iRig Keys 2 PRO
function controller_midi_out(midiEvent,name,valueString,color)
return nil
end
-- Define the knobs, buttons, etc. of the device
-- This is also used to check if this device is a match (model, manufacturer and/or device inquiry status)
function controller_info()
return {
-- model name for this device
model = 'iRig Keys 2 Mini',
-- manufacturer name for this device
manufacturer = 'IK Multimedia',
-- All buttons, knobs, keyboard, possible pedals are defined here
items = {
-- The default midiType is 'Absolute', it only has to be defined, if it is different
{name='Pitch Bend', label='Pitch', objectType='Wheel', midi={0xE0,MIDI_MSB,MIDI_LSB}},
{name='Modulation', label='Mod', objectType='Wheel', midi={0xB0,0x01,MIDI_LSB}},
--{name='Keyboard', label='iRig Keys 2 Mini', objectType='Keyboard', midiType='Keyboard', startKey=48, numberKeys=25, midi={0x90,MIDI_Wildcard,MIDI_Wildcard}},
{name='Sustain Pedal', label='Sustain', objectType='Sustain Pedal', midiType='Momentary', midi={0xB0,0x40,MIDI_LSB}},
--{name='Expression Pedal', label='Expr', objectType='Pedal', midi={0xB0,0x0B,MIDI_LSB}},
{name='Data Knob', label='Data', objectType='Knob', midi={0xB0,0x0B,MIDI_LSB}},
--{name='Volume', label='Volume', objectType='Knob', midi={0xB0,0x07,MIDI_LSB}, outport='iRig Keys 2 Mini'},
{name='Knob 1', label='P1', objectType='Knob', midi={0xB0,0x0C,MIDI_LSB}},
{name='Knob 2', label='P2', objectType='Knob', midi={0xB0,0x0D,MIDI_LSB}},
{name='Knob 3', label='P3', objectType='Knob', midi={0xB0,0x0E,MIDI_LSB}},
{name='Knob 4', label='P4', objectType='Knob', midi={0xB0,0x0F,MIDI_LSB}},
{name='Knob 5', label='P5', objectType='Knob', midi={0xB0,0x10,MIDI_LSB}},
{name='Knob 6', label='P6', objectType='Knob', midi={0xB0,0x11,MIDI_LSB}},
{name='Knob 7', label='P7', objectType='Knob', midi={0xB0,0x12,MIDI_LSB}},
{name='Knob 8', label='P8', objectType='Knob', midi={0xB0,0x13,MIDI_LSB}},
}
}
end
Bonus - Data Encoder
The script above auto assigns your knobs. In addition to this you CAN use the editor to assign them specific functions if you want, for example Knob 1 if set to track volume will pick up and allow you to control the volume on whichever Logic track you have selected.
The problem with this is it will also control this at the same time as whatever device parameter its assigned to, so basically useless.
The Encoder/Data wheel I also did’nt find much use for I wanted to use it for scrubbing but mapping it to this is not really possible.
I ended up with a jog movement as Play/Stop and an encoder press as record toggle which is actually pretty handy so give that a try if you like.