skratchworx news
skratrchworx monthly archive

Skratchworx DJ equipment reviews
skratchworx skratchlounge dj forum
skratchworx downloads
skratchworx links
contact skratchworx
skratchworx RSS
SKratchworx twitter

Custom Search

Skratchworx Dj gear reviews DJ gear reviews DJ Mixer Reviews DJ Turntable reviews DJ CD deck reviews Digital DJ Gear reviews DJ Cart needles review DJ Slipmat reviews DJ accessories reviews
Bome's MIDI Translator Tutorial
Author: Jared Helfoer • Date: October 2011 • Link: Bome

An Introduction to MIDI


In the briefest way possible, MIDI (Musical Instrument Digital Interface) is a series of basic data messaging on/off and position/velocity information. When you press a key on your MIDI keyboard it is telling the brain in your computer what note was pressed and at what velocity, and the computer is interpreting that information. This is where the controller manager in Traktor, or the MIDI mapping in Ableton, or the base settings of any VST come in.

An Introduction to MIDI Translation

Most old synthesizers and keyboards are extremely limited in the data that can be transmitted. You turn a Filter knob and it will always be a Filter knob. It will always transmit the same CC (Continuous Controller command). You press the key for middle C and it will always send the note message for middle C.

Modern MIDI keyboards allow more room to maneuver. Using different memory banks and controller editors (like Automap and Korg’s Controller Editor) allows you to remap the messages sent by almost all MIDI controllers. The Korg PadKontrol, as an example, has 16 of these banks to control what every pad and knob sends. This could be considered a rudimentary form of MIDI Translation. You are taking static incoming message and retranslating it to a different outgoing message.

Now let’s put this in the context of the SP-6 just released by Serato into their ITCH platform. One of the biggest and most long awaited features of ITCH has been comprehensive MIDI mapping. To get a feel for how this is going to work, I figured it would be really helpful to show you how to map your MIDI controller (any MIDI controller) to control the SP-6 through keyboard commands.

Bome’s Midi Translator

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player

Before we dig into the process, we should at least talk about what Bome’s Midi Translator (MT) is and how to use it. First, the “classic” Windows version of MT that translates MIDI into key commands is free. For OS X, there is a demo version available. Just download it from Bome's web site and load the file I’ve attached to this article.

When you open MT you are going to be greeted by a screen asking what MIDI ports you want to use as defaults. MIDI ports are the pieces of hardware of software MT is going to be listening to for MIDI commands. Setting the default ports will tell MT to always listen to that source unless told otherwise. It is best to set these, especially if you are only using one controller. So select the MIDI port for the controller you want to use for In. Being this is just for keyboard commands we aren’t going to worry about the Out port because MT will not be sending any messages back to the controller.


Bome Midi translator

I figure it will make this a lot easier if I at least explain the basics of this whole MIDI and hexadecimal thing. MT reads and transmits MIDI as hex. Hex is MIDI. This is all standard, so no matter what controller you’re using the messages should be the same. We’ll break it down by individual entry.

Bome variable

The standard MIDI commands have three bytes of data. The first byte, for example 90, contains the message type “9”, and channel “0”. For the type, 9 is Note On, 8 is Note Off, B is control change, etc. There are others that are explained if you hit the Show Help button at the bottom of the translator entry. For the channel, 0 means Channel 1, 1=2, 2=3, 3=4, 4=5, 5=6, 6=7, 7=8, 8=9, 9=10, A=11, B=12, C=13, D=14, E=15, and F=16. So 9B is a note on, sent on channel 12.

Bome MIDI translator

The second byte of data is the note or control change number that is being sent. So, 90 45 is Note On, Channel 1, note 45 hex = 69 – defined to be note A. If it were a control change it would be B0 00 which would be Control Change, Channel 1, CC1.

Bome MIDI translator

The last byte of data is the velocity. Velocity is a measure of how soft or hard you press a key or pad. Many controllers allow you to set a static velocity, so every key press is at full power, regardless of how hard you hit the key. This is measured as 0-127. 0 is usually note off, 127 is full velocity. The velocity in the incoming or outgoing entry is designated in hex. So, 09 would be a velocity of 9, but 0A would be a velocity of ten. 7F is always 127, full velocity. So 90 00 7F would be Note On, Channel 1, C-1, velocity 127.

Velocity Sensitivity and Variables

Bome MIDI translator

In the attached file I have provided a list of translators in a single Preset showing all of the available keyboard commands for the SP-6. All you have to do is select the translator, go to the Incoming Message tab, click the checkbox for Capture and press the key you want. You will have two lines come up. The last two characters of the first line should be either two numbers or a number and a letter, and second line should end in a 00. Select the line not ending in 00. Uncheck Capture.

So what are those last bits of data? Most likely, your keyboard sends velocity data based on how hard you press the key or pad. You can probably turn that off on the unit itself, or you can tell MT to send out the keyboard command no matter what the velocity is. This is done by using variables.

Bome MIDI translator

MT has two kinds of variables: global and local. For this article we are only going to concern ourselves with the local variables. Local variables are set by a set of specific letters: oo, pp, qq, rr, ss, tt, uu, vv, and xx. These can be used to replace any of those three bytes of data tied to an entry. So if you entered your incoming message as xx 00 7F, it would not matter what the note type or channel was, only that it was C-1 at full velocity and the message would trigger. If you had it as 90 xx pp, any message that was a Note On on Channel 1 would be sent, regardless of velocity. And if you have it down as rr xx pp then it will not matter what message comes in, the outgoing message will trigger. In the “Pro” version of MT you are given a lot more control over Variables, allowing you to piece together huge changes in controls.

There are three different message types we need to look for with our controllers. If, when a key is released, the message it sends is 80 xx pp then we don’t need to worry at all. Just put your incoming entry as 9 and the channel, whatever the note is and pp for the velocity. If it is 90 xx 00 then we have a slight issue. If you can set your controller to only send 127 velocity then it is an easy fix. The incoming message would be 90 00 7F (if your outgoing message was C-1). That way the message only gets triggered with a 127 velocity message.

If you can’t set the velocity of your command, AND your controller sends a 90 00 00 when you release it then we have an issue. It can easily be fixed with rules but it requires the Pro version of MT to do that.

So if you set your middle C on your MIDI controller to send ‘z’ out, whenever you press the middle C, Slot 1 in the SP-6 should play.

Knobs and faders

More than likely, your MIDI controller has knobs and faders. If you want the faders to control the volume of the sample cells then you’re going to need the Pro version of MT so we can program in some rules to tell the translator to do that. For now you have to use buttons.

Final Notes

Bome's MIDI Translator

I know this sounds like a lot of work to get your MIDI controller using Itch. Please download the MT Preset file I’ve created and edit it to your heart’s content. Once you get a handle on that, and you decide to purchase the Pro version of MT, you will have a lot of power at your fingertips. We’ll be providing articles on how to use more advanced features and functions to really make your DJ experience unique.


Jared's headstart on mapping the SP-6 in ITCH. It's not all done for you - there are plenty of gaps to fill in.

© 2011 and may not be reproduced in whole or in part without permission.