Hi Guys,
I've spent several hours searching online about MIDI construction issues and guideline for traktor pro and found this amazing article of Traktor Pro MIDI guide. First of all I must say this is not my own work. One Native Instrument forum moderator has put these guideline in one of its thread and scattered around saveral pages. What I have done is collect all the infomation and put it for your usage because I find it very useful to anyone who wants to do MIDI programming. The user profile of Phill can be found here (LINK)
[MIDI Modifiers] 100 – Basic Theory
This series of messages will take you from the very beginnings with modifiers all the way through to advanced switching and control. Each of the message titles will be prefixed with lesson(?) number, This one being [MIDI Modifiers] 100 – Basic Theory
As you’ve no doubt discovered one of the changes to MIDI control is the removal of the MIDI pages. On the surface this looks to be a HUGE impediment to being able to do some really fancy control trickery, until you realize the presence of the new MIDI Modifier feature(s). When you first look at it, you are no doubt going to be scratching your head going “What the hell is this and how can I use it?” Think of modifiers as MIDI pages on steroids. They offer much greater flexibility, instead of just 4 pages you have the capability now to do essentially 128 pages. You can just map the controls you need to a modifier or all the controls if you want to emulate the T3 control model.
To start with modifiers looks like a confusing mess, and while its true the learning curve is steep, its fairly short, at least to gain a basic understanding. As already noted MIDI modifiers replaces MIDI Pages. There is no analog for Keyboard Modifiers sorry to say, (not yet anyway) but keyboard keys can be used to trigger MIDI Modifiers.
So what are modifiers? The easiest way to think of them is as a bank of 8 rotary switches. Each rotary switch can be used to select a single value from 0 to 7. The switches have the additional function of reverting automagically to default value of 0 once the button or knob is done sending a message and the modifier is not locked at the new value. There is a way to latch the modifier value, that will be shown in a future lesson.
If you look in preferences | MIDI Mapping there are several new pieces that go to making up the whole MIDI Modifier landscape.
1/ the first piece is to look at is when you click the Add Button, there is a new function group called “modifier”. It contains a sublist with Modifiers #1 – 8 in it. Each of these modifiers is MIDI trigger-able. You can use any control that generates a midi message to trigger the modifier. A common use is a button type control. When triggered the modifier has its value set to what ever is defined in the button options. Possible range of values is 0 –7. Zero is special in that its the default value, if no other value has over-ridden the default value, then zero is set for the modifier. This lists of modifiers lists all the available modifier switches in Traktor Pro. Its not user definable or changeable, it doesn’t need to be. The list of modifiers is fixed at 8. The list of values usable for each modifier is 8 (ranging from 0-7). You may think that is not enough for what you want to do but consider that each modifier has 8 possible values AND you can apply 2 modifiers to each MIDI control then you have tremendous flexibility. During testing I created working presets with over 800 Midi controls and throughout that I used just 4 modifiers and 4 values to do everything I needed. You could get much more complicated than that but trying to remember and understand your logic ladder later on will become impossible. The critical point to take away from this this section; when constructing your preset remember K.I.S.S. Keep It Simple Stupid! Just about every single propellerhead in the world who sees this functionality and grasps its use will first construct presets that are totally magnificent, but so complicated and intricate that they will ultimately fail. We’ll cover the modifier control types and what you can do with them later. For now we’ll simply be using the hold type with a button.
2/ The second piece of the puzzle is the Modifiers section that has been added to the preferences MIDI Mapping page for every MIDI control. There are two pairs of items Modifier/Value, Modifier/Value. Well come back to how they work in second.
3/ The third and final piece is in the Assignments Table list, MOD1 and MOD2. These are the Modifier and Value pairs (noted in piece 2/) defined for a control. Each MIDI control you setup can have from 0 to 2 modifiers defined. Any control that has zero (0) modifiers defined will always work no matter what modifier is pressed. So, say for example you have your controller layout setup so that no matter what modifier is set you always want your deck volume controls to be accessible then you could a) add additional mappings for each state you have or b)not to add any modifier at all and its always accessible.
So to sum up so far:
Modifier Switches are listed as Modifier #1 through Modifier #8 and are also noted as M1, M2 ... M8.
All modifiers have a default value assigned. That value is always zero unless the modifier is triggered.
Mod1 and Mod2 are essentially list filter criteria. Say you have a MIDI controller that when you press a button that produces MIDI message CC1(ch1). You define a Modifier set to value = 1 (and set it to button and hold mode). When you press that button, Traktor first updates the modifier table it keeps in memory, setting the new value for M1 to 1 then it evaluates all the MIDI controls to see which controls are also assigned to message CC1. When it filters down to those controls, it next looks to see if Mod1 or Mod2 have an entry defined for that control. If nothing is set, the control works always, regardless of the modifier and value being set. If Mod1 and or MOD2 has been set then Traktor gets the tag/value pair for the control and looks up the modifier number (M1) in the lookup table to see what values are currently set. If the value in the lookup table and the value from the control (1) match, then whatever action the MIDI control says to do, actually gets done. If the values don’t match the control operation is ignored.
So now that we’re done with the theory lets do something semi-useful. First off save your current Traktor Midi preset by exporting the MIDI section in preferences.
To make it easier to see you may want to delete all your current MIDI controls after you have exported, you can import again after experimenting.
First control entry we’ll create is Modifier#1. Set it as follows: Interaction mode = Hold, Type of controller = Button, Value = 1. Do not set M Numbers or values for either modifier If you did then this modifier will get filtered based on those entries and this demo will not work. Use learn to set a MIDI controller button to this control entry.
Next Control Add a control entry Mixer | Key on, set it as follows: Interaction mode = Toggle, Type of controller = Button, Assignment = focus. Set the first modifier to M1 and value to 1. Use learn to set a second MIDI controller button to this control entry.
Next Control entry Add Mixer | Monitor Cue, set it as follows: Interaction mode = Toggle, Type of controller = Button, Assignment = focus. Set no modifier at all right now.
Use learn to also set the second controller button to this control entry.
Turn Learn off and press button 2, monitor cue will turn on and off. Key on state will remain as it was.
Press and hold Button 1 then press button 2. Both Monitor Cue and Key on will change state. This occurs because the Modifier Button is triggering the modifier so the filter gets applied, that means key on gets evaluated and therefore changes. Also, since no modifier at all is applied to Monitor Cue it always works. Take care later on when making your presets, failing to set Mod 1 or 2 to zero when necessary can result in unexpected behaviors.
Next step lets go back and edit the entry for Monitor cue. Change the modifier entry for MOD1 to be M1=0.
Now press button 2 and you’ll see the same behavior as step 1 above.
Press and hold Button 1 then press button 2. Monitor Cue will not change, But Key on will change state. This occurs because the Modifier button is now triggering the modifier so the filter gets applied. That means 'key on' gets evaluated and changed state since Modifier#1 = 1 now since Monitor Cue was set to on act if M1 = 0 , it doesn't get acted upon.
So that’s the most basic of setups. It should be enough to get you started experimenting. We’ll begin covering more advanced options in next lessons in the coming days. We’ll look at Toggling, Latching, Using multiple Mod values, Jog wheel scaling, control reuse, preset design guidelines and rules among other items.
[MIDI Modifiers] 101 – Basic Switching
This is the second in a series of messages taking you from the very beginnings with MIDI modifiers through to advanced switching and control. Each of the message titles will be prefixed with a lesson(?) number, This one being [MIDI Modifiers] 101 – Basic Switching
So far we’ve covered the basics of modifier setup. Next up in this set we move look at how to use Modifiers to do some some basic switching. So far we’ve covered what is needed to make basic modifier operations possible.
If you used Traktor 3 MIDI it was quite likely you used the midi page functions to expand your controller possibilities. Traktor Pro takes the possibilities to a whole other level. To do this we’ll create a really simple example.
Traktor Pro uses 2 separate commands to set and delete gridmarkers. They perform what is essentially a binary operation and for those that want to use a single key to set and delete the gridmarker you were pretty much out of luck. Using modifiers its completely possible to do this by forming a toggle switch function. The function is simple latched flipflop logic.
The first part of the function is the logic action.
To do this you add two modifiers. For our example we’ll use Modifier # 1 or M1.
Set the Interaction type to Direct and the control type to Button, Set the value of the first modifier to 0 and the second to 1. Now go back to the first modifier entry whose value is 0 and add a modifier to it M1=1. Next, goto the second modifier and add a modifier to it, M1=0.
For both entries set the same Midi button to trigger the modifiers.
OK so now that the logic is all set up its time to add the actual commands
First Add the set Grid marker command, set the interaction type to be Trigger and control type to button. Bind the same controller button to the entry and add a modifier M1=0.
Next Add the Delete Grid marker command. Once again, bind the same controller button to the entry. The Final step is to add the modifier M1=1
What you have now is a flipflop, setting and deleting the grid marker. Obviously you’ll be able to see other practical applications for this kind of function. Its possible to extend the functionality to button group operations allowing you to do 1 of n operations.
[MIDI Theory] 103 What's in a message?
Almost everyone new to MIDI is daunted by what it means. All that cabling and protocol stuff stuff is not for the faint of heart. Fortunately with the new controllers on the market using USB, knowledge of the wiring and mechanics merging really is not really necessary. There are a few things though that anyone creating presets for controllers should know especially when it comes to messages and control types. As far a Traktor is concerned the number and type of messages is fairly limited. That does not mean you can’t do a lot of things its just the more complex message types are not read for what they are. Traktor knows how to deal with 2 message types Absolute and Relative, we won’t bore you with the gory details of 1’s complement because its more than you need to know with respect to Traktor and MIDI.
So lets rewind just a little and cover some basics. Some stuff you learn here is just useful trivia it will mean something more later on but it needs to be thrown out now for context. First off, MIDI is a 7 bit command set, any part of a message sent is just seven bits in length. It means that any byte value sent is in the range of 0 hex to 7f hex. Those hex numbers translate to 0 decimal to 127 decimal. A standard general MIDI message is made up of 3 bytes. and each are 7 bits in length, actually its commonly 8 but the high order bit is set to 0, So when you see a raw message it consists of 3 Bytes. The names for those each of the bytes are Channel, Parameter and Value.
The MIDI spec allows 16 Channels (requiring 4 bits of the channel byte) . It allows 127 Parameters (uses 7 bits of the parameter Byte) and values in the range of 0 to 127 also 7bits. Its sometimes easiest to think of the whole thing as a 16 drawer file cabinet and each draw has 127 folders for parameters. Into each folder a single message at a time can be kept. Anytime a MIDI message comes in the sending file clerk checks the message and puts the message into the right draw and folder. If there is already a file message in the folder that message is taken out thrown away and the new message is placed in the folder. It is up to the receiving file clerk to check all the folders regularly and to hand off the message to the correct midi control. Its the job of the receiver to check for ALL messages but to take copies of messages only for those it has on its assignment list.
Senders; .i.e.MIDI controllers have no idea what may be on the other end of signal path and they really don’t care, at least in terms of sending the actual message. All that it knows is that if it can send the message then do so. General MIDI has no notion of source or target device in a MIDI message. In its most basic setup, anything connected to the MIDI chain can hear any message produced by any other device connected on the chain.
OK, so before we look at tools for examining MIDI messages, lets see what we’ve got so far:
MIDI Messages: 3 Bytes, 7bits each, MIDI spec supports 16 channels, each channel can support 127 parameters. Each parameter can have a value assigned, ranging from 0 to 127 dec.
MIDI Messages have no source or destination Address.
Electrical and low level protocol understanding is not necessary for a basic understanding of MIDI.
OK, got that? We continue...
When you are having trouble getting the right action to be performed in Traktor, its worth having a tool or two around to check to see just what your controller is sending. IMO the two best weapons of choice to do this are MIDI Monitor for OSX and MIDI-OX for Windows. MIDI Monitor is a great basic tool for monitoring message as thaqt come off your controller heading to Traktor. It does not have an elaborate feature list but it does just what you need to know what is going on.
MIDI-OX for Windows is legendary in the MIDI hack circles and can do it all.
Both tools will at least allow you to see what message Traktor would receive for a given control and with a vey small amount of practice you’ll get to understand the differences in behavior for the two button modes and for the various absolute and relative modes applied to knobs. It will mean when you program your controller to do something and it doesn’t do what you think it should then at least you can look at the message being produced to see if the problem is actually the controller message and not the programming you’ve done. I’ve had two recent cases where someone was fighting with their controller, and the trace from MIDI-OX showed that their programming was mostly OK, it was that the controller was not producing the exactly the messages they thought it was. In both MIDI tools ech line lists the Chnnel the message Parameter number and finally the value for the parameter.
Finally some behaviors to note when it comes to Traktor and the values in messages.
For buttons, any value that is non zero is generally considered an ‘ON’ state.
A button that is working in hold mode will produce two messages, one on the press side and one on the release side.
A button working in toggle mode will produce one value (non zero – normally 127) for the first press and release cycle and another (normally zero) for the second.
A controller button that is in toggle mode will give the appearance for needing to be pressed twice to perform the action in Traktor.
A control in Traktor in absolute mode being acted upon by a knob in relative mode (01:7F) will give the appearance of going from 0 to 100% and nothing else in-between.
Traktors trigger action does not seem to care what the message value is, All that is needed is a valid MIDI message for the parameter the midi control is bound to.
You can use a relative control producing (3F:41) assigned to a rotary controller type in Traktor. The result is a very coarse control.
This is a very simplified look at some of the basic aspects of MIDI messages. There is a lot skipped (for now) because its not necessary to understand and some stuff is a little blury because when it comes to MIDI there is almost always more than one way to skin-da-kitty.
0 comments:
Post a Comment