How to keep the microKorg arpeggiator in sync

Last week Aaron and I were raving it up– he with his Doepfer, I with my microKorg.  We were frustrated, however, by our difficulty getting the microKorg to stay synced up.  After much investigation, I unearthed the cause and solution to our problem.

When the microKorg’s clock is set to EXT, it accepts MIDI clock from the master.  MIDI clock is a series of ticks sent at regular intervals.  The synth can calculate the master tempo from the time between ticks.  But MIDI clock contains no information about bars and beats.  (Other MIDI protocols do, but the microKorg does not accept them as far as I can tell.)  So the synth matches its tempo to the master, but it has no knowledge of how to line up the first beat with the master.  The arpeggiator might start on the beat just by chance, but it’s just as likely to start halfway between beats.

After much investigation, I discovered that you can force the microKorg to jump back to the first beat in time with your host.  Details after the jump.

I’m using Ableton Live here (sorry, Buzzards), but you ought to be able to do the same trick with any host.  For that matter, this same trick probably works with other synths and grooveboxes.

1. Install MIDI Yoke and MIDI-Ox.  MIDI Yoke is a virtual MIDI driver that gives you extra MIDI ins and outs; you can use them to connect different programs together.  MIDI-Ox is an incredibly useful tool that lets you route, filter, and rewrite MIDI data.

2. In Live, disable our physical MIDI port (Out-1 USB Midisport) and enable our virtual MIDI port (Out to MIDI Yoke: 1).

3. Start up MIDI-Ox.  We need to connect the virtual MIDI port to the real MIDI port.  Go to the Options menu and open up MIDI Devices.  Make sure “Automatically attach Inputs to Outputs during selection” is checked.  In the MIDI Inputs box, find “In From MIDI Yoke: 1” and select it.  In the MIDI Outputs box, find your physical MIDI port and select it.  Now MIDI data we send to the virtual port goes to the actual synth.

4. We need to send MIDI realtime messages to the microKorg on demand.  Live doesn’t support this directly, so we will configure MIDI-Ox to replace a regular note with the realtime message.  Go to Options on open Mappings.  Press the Insert button.  Under “When Input matches,” set “Event Type” to “NoteOn.”  Make sure “Pass original value on” is not checked.  Under “Set Output to,” set “Event Type” to “Start.”  Press OK.

5. Make sure “Turn Map On” is checked, and then press “OK.”

6. Leave MIDI-Ox open and go back to Live.  Add a MIDI track and set its “MIDI To” to “Out To MIDI Yoke: 1.”

7. Make a MIDI clip for your new track and put a note on the first beat.

Now you have a couple options.  You can play this clip as a loop and continuously re-start the microKorg arpeggiator in time with your Live clock.  This might be handy if you’re switching between a lot of different patches.  But this will also re-start your note pattern, which may or may not be desirable.  Alternately, you can configure the clip as a one-shot and trigger it whenever you need to fix the microKorg sync.  In this case, you might want to map a hotkey to trigger the clip.

11 Responses to “How to keep the microKorg arpeggiator in sync”

  1. Nic Says:

    Here’s everything you ever wanted to know about MIDI synchronization:

    http://www.borg.com/~jglatt/tech/midispec/seq.htm

    This web site contains full MIDI specs in a well-laid-out format (http://www.borg.com/~jglatt/tech/midispec.htm).

    I’ve been hitting these pages a lot recently for buze’s MidiTracker machine and keyjazz!

  2. Kevin Says:

    That doc is very helpful. Unfortunately most sequencers don’t provide an easy way to send MIDI realtime messages (start/stop/continue etc) on demand, hence the MIDI-OX hack.

    When you mention Buze’s MidiTracker .. have you been coding it??!

  3. Kevin Says:

    Also microKorg ignores SPP.

  4. Nic Says:

    Oh, I wasn’t knocking the MIDI-OX hack, that’s nice stuff! I just had that link on-hand (I’d been trying to implement MIDI clock stuff in the miditracker a couple weeks ago, so this whole topic is fresh in my mind).

    I agree that it’s not easy getting devices to synchronize. What a pain… I ended up failing to implement MIDI clock broadcasting, but maybe I’ll try again later, or, maybe I had actually succeeded and my virus wasn’t set-up properly. Too many variables!

    Anyway, I have been hard at work improving buze’s MIDI, input and output. I’m currently working on device-specific CC descriptions in the MidiTracker (if you’re familiar with Polac setting up useful parameter descriptions for VST’s, MidiTracker’ll do the same for MIDI gear CCs).

  5. Kevin Says:

    If you’re not already, you should try MIDI-OX for debugging your MidiTracker. You can stick it in between Buze and your actual synth and watch all the data go back and forth. The MIDI-OX interface is a little scary, but it’s just so useful.

  6. Nic Says:

    Good idea (using MIDI-OX for debugging). I definitely will, seeing as I’m decidedly going to tackle this issue (It just came up as a major request on buzzchurch).

  7. soerena Says:

    ehm.. what about mac?
    I’m using live and want to sync the microkorg probably, but this yoke/ox program that is mentioned, doesn’t seem to be available for mac… any alternatives?

  8. rory Says:

    Yeah does the programme work with a MAC????????

  9. Kevin Says:

    MIDI-Ox doesn’t work on Mac, but maybe you can do the same thing with MidiPipe:

    http://www.apple.com/downloads/macosx/audio/midipipe.html

    What you want to do is get it to replace a note on event with a MIDI Start event; the MIDI Start re-syncs the microKorg pattern. I would play with the Message Converter feature and see if that’s possible.

  10. hayley Says:

    could someone please do a tutorial on/explain how to do this with midipipe?!!!

  11. Kevin Says:

    Oh hey, I didn’t have a Mac when I wrote this, but I have one now. Maybe I’ll figure out the midipipe deal and write up a tutorial.

Leave a Reply