Proof of concept for a new instrument.

Video does not say that much, read the text, and look at the pictures!


I have a proposition for a new type of controller for playing and recording chords. It’s based on isomorphic input and the usual keyboard. And no it’s not an accordion.

Why do I think me and the world needs this? Because recording and editing chords on the computer is tedious and boring. Even when applying all the tricks I know in Ableton Live I still lack a way to fast and easy add a walking chord or a strum like one. And if I program one and then transpose it I would have to redo it for every single clone if I want to change a little something. Not to mention the human feel that you get while playing something rather then programming it.

This became apparent to me while learning to play the bass, I could reuse the same pattern if I knew the base note. This kicked ars, but basses are hard to strum on, and even harder to make into MIDI data. So I found the isomorphic input method appealing, but the cheapest keyboard was still expensive. So I was thinking about making one cheaper, and that would not be done unless there where significally less buttons.

So I came up with this idea:
Using a one octave keyboard to choose the root-note, and then a isomorphic keyboard that is velocity sensitive. That way I would only need 12 velocity sensitive buttons and 12 keys for the note-selection.

This is a map over the isomorphic layout I choose:

So a major chord would be:

and minor:

To test this idea I wrote a little program based using a KORG padKONTROL as velocity editing and a rockband keytar as MIDI-input device. This was way faster and cheaper then starting to solder something together, and I get to get a feeling for it before trying to fix hardware problems like, how should it look, should it be strapped or more like a piano, is 12 buttons correct?


void handleMIDIMessageFromMidiDevice( int status, int data1,int  data2)

/*	printf("handleMIDIMessageFromMidiDevice: ");

	printf("status %d | ",status);
	printf("data1 %d | ",data1);
	printf("data2 %d \n",data2);
    if(status == 144) //NoteOn
        if((data1-12) < 25) //If it's from the padKontrol, let's play
            printf("MyData %d \n",data1-12);
        else{ //it's from the keyboard, save rootnote
            RootNoot = data1;
    else if(status == 128)//NoteOff
         if((data1-12) < 25)


One thing I found out is that the minor chord could be optimized if I move it to here:

this was an easy fix and as used in the video.


Next steps could possibly be to make dedicated hardware, should it be drum-type buttons to mash on or should it be something else, should I strap it on like a keytar or should it be stationary like a piano. is it more comfortable to play the keyboard with left hand or should that be right hand. So many questions.

5 thoughts on “Proof of concept for a new instrument.

  1. Excellent! I’ve been dreaming about exactly the same control method.. one hand for root chords and another for actual keys seems so logical.

    I lack anywhere near the know-how to make something like this, so I’m thrilled you’ve picked it up!

    Please continue with this project, whatever form it take I’d be most interested in the final product, and I know a lot of other would be too – they just don’t know it yet!

  2. I’m actually working with another version based on the novation launchpad. Maybe it’s own hardware eventually!

  3. Pingback: idle hands › Second iteration of my note input idea.

  4. I have my Novation Keyboard just above my Maschine, and would die for this in Max for Live!!!

  5. I don’t totally understand your chosen layout. It looks like the pattern going up is fifths, but the pattern going to the right alternates between two different intervals. Doesn’t this ruin the isomorphism? For instance, if you wanted play a major chord two whole steps up from the root, you can’t just move to the right.

    I mean, I get that you could simply use the piano keyboard to shift up two steps in this simple situation, but while playing something more complex, you might want to have consistent intervals available.

Leave a Reply