Alesis Vortex: Modify the Ribbon Controller behavior

Some Keytar players use both hands on the keyboard part to play more complex notes arrangements. When I need to do that, I use a regular keyboard. As explained in a previous post, “I have seen keytar players “cross-under” the support strap to use their left hand on the (small) keyboard part. I have tried and it’s really uncomfortable because it puts the left wrist at a very odd angle. Since the keyboard part of the Vortex is only three octave long, my left wrist starts hurting as soon as I try that. Plus it looks dorky…” But, it might sometimes be useful to send some notes using the left hand. One example is when using RealGuitar, from MusicLab.com. RealGuitar uses some keyboard notes to control numerous program parameters. For example, Midi note C3 is a “strum down” and D3 is “strum up”. Instead of using the “cross-under” method, I would like to use my left hand on the neck of the Vortex. I thought about using other buttons on the Vortex neck, but none of them is programmable. The only one that actually sends something is the Sustain button (CC 65)(NOT changeable). I could use it but I need more than one button. The only solution (apart from modifying the Vortex)(see below) is to use the Ribbon Controller. The first method that I tried was to divide the Ribbon Controller’s surface into 4 logical sections: one section for each finger in my left hand (the thumb is used to hold the instrument, of course). If you position your fingers on the ribbon, they fall naturally next to each other. Pressing each one in turn while looking at a midi monitor gives me four distinct sections:

  • Index: 0 to 20
  • Second finger: around 50 (± 10)
  • Third (ring) finger: around 80 (± 10)
  • Fourth finger: 110 to 127
Fingers placed naturally on the Ribbon Controller
Fingers placed naturally on the Ribbon Controller

The ranges allow for some movement and imprecision. Of course, one restriction with this method is that you can’t touch the Ribbon Controller with two or more finger. Well, you can, but the resulting CC value will be between two ranges. For example, if I press both Index and Second finger on the Ribbon, a value of 30 is shown. That might give you the idea of using “sub-ranges” but due to the imprecision of finger placement, you might have a very unstable value. I guess that with plenty of practice, one might be able to diminish the error margin (thus the ranges) for each finger, like a violinist would have to do. But my left hand is just precise enough to hit piano notes, which translates to the ranges shown above.

One finger (ring) on the Ribbon Controller
One finger (second/major) on the Ribbon Controller

So, the key is now to map these ranges of incoming CC values to specific NoteOn Midi messages. Here are three ways to get the Ribbon Controller Midi messages transformed in NoteOn messages:

1- Use a software solution

1.1 Existing Software

I know two programs that will let you change midi messages on the fly. The first one is from thepiz.org and is called pizmidi, available at thepiz.org/plugins/?p=pizmidi. It’s free. It will load as a VST plugin in Ableton or other software and the midiConverter3 option will let you transform any incoming Midi CC into a NoteOn. It takes a while to program the necessary parameters but the results are OK. Take a look at the other plugins offered in pizzmidi. There’s over 40 of them! Since this is a VST, it will run on both Windows and Mac. Another way to transform Midi messages is to use a (NOT free) program called Bome’s Midi Translator Pro. It costs €59 (about US$ 80) and is very powerful. You will have to write rules that will transform the ranges into NoteOn messages. It will also run on Windows and Mac.

1.2 Write your own software

A third way to do the translation is to write your own software. This is what I tested first. I wrote a small program using Processing and a Midi library called MidiBus. The code is simple: the program waits for Midi input. If the incoming command is in the range that you want, you replace it with a Midi NoteOn command. Here’s the code for the active part:

void controllerChange(int channel, int number, int value) {
  // Receive a controllerChange
  int thisNote = 0;
  println();
  println("Controller Change:");
  println("--------");
  println("Channel:"+channel);
  println("Number:"+number);
  println("Value:"+value);
  if (lastValue == 0) { //Don't send a note if one is already active
    lastValue = value;
    if (channel == 0 && number == 1 && (value >= 1 && value <=15)) {
      println("Index");
      thisNote = 39;
    }
    if (channel == 0 && number == 1 && (value >= 40 && value <=60)) {
      println("Major");
      thisNote = 38;
    }
    if (channel == 0 && number == 1 && (value >= 70 && value <=90)) {
      println("Ring");
      thisNote = 37;
    }
    if (channel == 0 && number == 1 && (value >= 110 && value <=127)) {
      thisNote = 36;
    }
    //myBus.sendNoteOn(channel, number, value);
    if (thisNote != 0) {
      myBus.sendNoteOn(0, thisNote, 64); // Send a NoteOn
      //robot.keyPress(KeyEvent.VK_DELETE);
      //robot.keyRelease(KeyEvent.VK_DELETE);
    }
  }
  else {
    if (value == 0) { //reset the Note flag
      lastValue = 0;
    }
  }
}

There’s some debugging code in there to show the incoming CC command and to show which finger was pressed. There is also some code to prevent multiple values. When your finger touches the Ribbon, many values can be sent in rapid succession. This will happen as soon as you move your finger (or even press harder) on the ribbon. This is the normal behavior for the Ribbon. The problem is that will send more than one NoteOn for one finger press. One solution is to block outgoing NoteOn until a finger is released. This will also ensure that only one finger can touch the Ribbon at one time. The key is to add a variable that will block outgoing messages until the received value from the Ribbon has a value of 0 (zero). This will happen when the Ribbon is programmed in non-latch mode, which is the default. The entire code is in this file: midiKeystrokeCCtoNoteOn.pde

2- Use a hardware solution

2.1- Midi Solutions Event Processor

Midi Solutions makes an Event Processor that will let you re-map any Midi command to NoteOn commands. This is explained here. I haven’t tested it.

2.2- Practical Usage Midi Processor

I built my own Midi processor. I call it the MP-1. It can be programmed to do anything with any Midi command. It’s built using an Arduino (any will do). I wrote many versions of the software. Some use hard-coded translation tables (the simplest way if you are good at programming the Arduino) while others let you store “translation tables” in the Arduino EEPROM memory. This is my prefered method, and by far the most flexible.

3- Modify the Vortex

I have modified my Vortex. In a previous post, I explain what was done. I found that using the Ribbon Controller required too much left-hand/left-fingers ability that I don’t have. So instead of practicing the precise timing required to only press with one finger, I added buttons dedicated for this purpose. This also lets me keep full functionality for the Ribbon. That modification uses a micro-controller similar to the Arduino. It’s a Teensy ++ 2.0 from pjrc.com. The main advantage over a stock Arduino is that it incorporates a USB port. So I can just plug it in a computer and it is recognized as its own Midi instrument.


Comments

11 responses to “Alesis Vortex: Modify the Ribbon Controller behavior”

  1. Well, thanks again! You’re assom!
    I will use the Vortex/mainstage as a second secon keyboard and second guitar on stage, and for guitar only need to change from normal sound to bridge mute and repeat played notes (strum up/down), so I think the easier solution will be assign sustain button to bridge mute and use PizMidi to split the ribbon controller into two areas (strum up and strum down).
    I’ll do some tests and comment the results, maybe with a video, too 🙂

  2. Stuart Avatar
    Stuart

    Can you recommend a good software set up for the Vortex for live performance? What I would like to be able to do is set up about 12 presets on a laptop, and then be able to quickly switch between presets on the Vortex while on stage.

    I have played around with the included Ableton Live 9 Lite and have added some VSTi instruments from the free Kontakt player. Given that I don’t need Ableton for recording or looping sounds, is this the best software the job? I just need to be able to change between presets using the Vortex buttons.

    1. Stuart Avatar
      Stuart

      I forgot to add, I am using a Windows laptop.

      I realise you have written a lot about controlling instruments using the Vortex, but the huge quantity of information was difficult to summarise. All that I was after was something like:
      1. Set up presets in Ableton Live
      2. Map MIDI commands from the Vortex to Ableton
      3. Use Vyzex to program the pads on the Vortex to trigger program changes in Ableton.

      Another helpful tip would be, how best to set up your presets in Ableton? For instance, do you load all VSTi’s into a single Ableton “Live Set” for your whole gig or do you create a “Live Set” for each song that you do?

      1. The best way, depending on how many instruments you have and how CPU intensive they are, is to use chains in an instrument rack: here’s a very good explanation: http://loopcommunity.com/blocks/software/ableton/how-to-arm-different-ableton-external-instrument-racks-via-scene-changes
        He explains how to setup one track with many instruments.
        If you are using only a few instruments, you could also set one instrument per track and switch between tracks.

        Ableton is not very good with Midi Program Changes (PC). Fortunately, the Vortex will let you program the Pads to send Control Change commands (CC). Then, all you have to do is, in Ableton, choose Midi Mode to assign a Record button to a Midi CC.

        Read the text and look at the Video and let me know if it makes sens to you. If not, I will create a specific video to show you how to do it.

        1. Stuart Avatar
          Stuart

          Thanks rt for your reply! I had independently discovered that the chains were the best solution, so it was good to see you confirm this.

          I have 2 questions:

          (1) In the video you mentioned, Scottie Dugan takes the extra step of creating dummy clips. I couldn’t understand why this was better than simply setting up several chains for the various instruments desired in an instrument rack.

          1. Stuart Avatar
            Stuart

            (2) Can you recommend any other options for selecting chains besides the Vortex’s pads? The pads are ok if you only use 1 chain per song, but if I needed to change chains midway through a song, a control on the neck would be quicker. I was able to use the ribbon to easily change between 4 chains (as 4 fingers naturally fit on the ribbon) although you need to hold your finger down on the ribbon to maintain the chain as taking your finger off will revert the chain back to 0.

          2. You can tell the ribbon to “latch”, meaning that it will keep the last value and not return to zero. See http://practicalusage.com/?p=799 and go to the “Ribbon Controller”. I explain how to switch from “rn”-returntozero to “lch”-Latch

          3. Hello Stuart,
            Using Dummy clips allows you to “preprogram” changes in Audio or Midi. So launching a dummy will let you choose intruments, midify parameters, routing, etc by just launching that clip.
            See this detailed post: https://forum.ableton.com/viewtopic.php?f=1&t=195844
            Also, for simpler examples and explanations, Google “ableton using dummy clips for midi instruments” and read the fisrt few posts. It is mostly Audio clips but there are some parts explaining chain selection.

  3. Stuart Avatar
    Stuart

    I also tried using the K1 knob to change between chains which works (and gives you access to 128 chains!) but it is tricky to move the knob in small increments, ie moving from 1 to 2 can be touchy. Any comments?

    1. I use the knobs too. I don’t use that many chains (128 seems a bit excessive…). I use max 12-16. After that, I begin to get confused and forget what is what.
      Anyway, look at the chains assigment area. The chains selector defaults to a width of 1 but you can “strech” it (by dragging the ] with the mouse). So for example if you have 10 chains, each can be 28 wide. So when you rotate the knob, it requires a lot less precision.

      1. Stuart Avatar
        Stuart

        Thanks for all your comments! I will go away and digest them now 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *