Use the chord pads on an Arturia Keylab Mark1 midi keyboard to actually play chords



For all you Arturia KeyLab Mark 1 users out there that can’t use the pad matrix to play chords here’s a partial solution. The only way to make use of the chord pads that I could find was with Analog Lab1. Subsequent versions dropped chord support so the pad keys became somewhat redundant. Annoyingly the KeyLab Mark2 versions apparently support one-finger-chords. So here’s a bit of python fun for Mark1 users to get some use out of those chord pads after all.

In fact the python code should work with any midi keyboard that has built in pads though you may have to figure out what midi messages the pad keys generate. Arturia Keylab makes decoding the pads easy with their Midi Control Centre that configures pad functions. The pads default to playing single notes across the scale on Midi Channel 10 so you don’t need to change anything. If you are using other control templates you need to restore the default pad functions for the python code to work.

The python code, chordgen.py provides one-finger-chords across the whole keyboard not just by pressing pads. In fact the pads are used to select the chord to play eg major, minor, augmented or diminished, triads, sevenths or ninths, etc.

Chordgen only supports one-finger-chords at present and you can’t mix single notes but its useful if you are just auditioning chords and progressions. You select chords from the pad matrix shown below:


Currently only triads, sevenths and ninths are available with major, minor, augmented and diminished versions. I’ll be adding a couple of inversion options soon.

Chordgen.py is here https://github.com/synthagora/chordgen. You need Python 2.7 or 3.X to execute. Install the pygame module to provide midi support from here https://pypi.org/project/pygame/.  Chordgen.py has only been tested in a Windows environment and you need to have Tobias Erichsen’s  loopMidi running in the background. Get loopMidi from here http://www.tobias-erichsen.de/wp-content/uploads/2020/01/loopMIDISetup_1_0_16_27.zip. Using loopMidi add a named port eg ‘MyMidi’.

Open a Windows command window, cd to where you have downloaded chordgen.py, and enter:

python chordgen.py

This will display all the midi ports available in your system eg:

Device ID: 0 MMSystem Microsoft MIDI Mapper 0 1 0
Device ID: 1 MMSystem Bome MIDI Translator 1 1 0 0
Device ID: 2 MMSystem KeyLab 49 1 0 0
Device ID: 3 MMSystem MyMidi 1 0 0
Device ID: 4 MMSystem Microsoft GS Wavetable Synth 0 1 0
Device ID: 5 MMSystem Bome MIDI Translator 1 0 1 0
Device ID: 6 MMSystem KeyLab 49 0 1 0
Device ID: 7 MMSystem MyMidi 0 1 0

Identify the Keylab name to be your midi input, in my case ID 2 ‘Keylab 49 1 0 0’. Identify  your loopMidi port for midi output, in my case ID 7 ‘MyMidi  0 1 0’. Note if the last element of the Device string is a ‘1’ then the midi port is already opened by another application.

Now rerun the python this time with arguments:

python chordgen.py –i "KeyLab 49" –o "MyMidi"

Just leave the python running in the background and open say a DAW and connect to a VST. Make sure the VST gets its midi input from MyMidi and you should hear major triads the first time you hit a key. Change chord type by hitting the relevant pad as shown in the map above.

The python code is of course extensible so feel free to modify.

Comments

Popular posts from this blog

VCV Rack interface with Cakewalk using VCV Bridge

Introducing Midichi, a MIDI chord interface

Build a Synthesizer VST on Windows using Cabbage