Huge discussion potential, wanted to throw a few comments out there. Some key things you can do to learn the inner workings of midi is to 1)Read everything you can on it, 2)Read your software manuals, 3)Just start experimenting with it. When you hit a roadblock, just go back to step 1. It’s really not as intimidating as people make it out to be.
Here are some major fundamentals:
Midi is a protocol for communication, it can be very flexible, BUT it definitely has its limitations. It’s important to know its basic components and how to use them (note on/off, CC (continuous controller), etc.
No hardware actually utilizes everything about midi. Hardware sends and responds to only a select set of midi messages, on select channels. Each machine is different. That’s why it’s key to sit down and get to know your hardware really well. A midi monitoring program is invaluable for this. Don’t think that just “midi learning” something in your software is giving you the whole picture. Sometimes controls send multiple messages (VCI-100SE is a good example), and you also need to know what your machine responds to (leds, bank changes, etc). Most manufactures set up leds to respond to the same note number that that button sends, but that’s not always the case.
Software all responds to midi differently too. Not everything can be controlled via midi, it’s up to the manufacturer. You have to experiment with what a simple midi note actually does in the software. Traktor actually uses a pretty sophisticated midi mapping system, even though the interface is clunky. Ableton’s is pretty rudimentary in comparison, though a lot can be done actually sending midi from the clip grid. It has the capability, just not the interface, so some people go the route of Python scripting to get what they want. I think Bomes MT is indispensable for strictly midi programming, but I’d definitely recommend having a solid grasp on midi before you go trying to translate it and add rules and shit. Bomes takes midi limitations in Traktor and Ableton and just throws it out the window. But you should hit those limits yourself first and understand WHY something doesn’t work before adding another program.
Traktor is very flexible because of its Modifier system. All this is is a basic logic framework. You have the choice in Traktor for a command to execute only if certain modifiers are in certain states (chosen by you). This allows you to make certain behaviors contextual, but is also the reason people have trouble modifying other people’s (complex) mappings without breaking them. A lot of dependencies get built up. You can figure things out if you understand the modifiers, but honestly I think it’s more cumbersome to be reverse-engineering other people’s work than to build your own.
A modifier command responds to a midi note like anything else. For example, you add a modifier command that says: hit button X and that changes Modifier 1 from a Value of 0 to a Value of 1, ONLY IF the Value is currently 0. Now M1=1. Another command says: hit button X again and that changes Modifier 1 from a Value of 1 to a Value of 0, ONLY IF the Value is currently 1. Now M1=0. Youv’e just created a modifier toggle. From here you can start adding other commands that don’t interfere with one another, because some of them have the condition M1=1, and others have M1=0. This means the command only executes if the condition is met. Hell, you can build simple maps with no modifiers at all.
General midi operates on 16 channels. The exact same message on different channels will not interfere with one another.
Your basic control sends a message that contains a channel, a note/cc number, and a a value of 0-127.
Your controller is sending info. For the software to understand it, it needs to have a line of communication open to the controller. This is the IN. IN commands take info from the controller, interpret it, and tell the software to do something. OUT is where the software tells the controller or other software to do something. So OUT commands are what you use to give yourself feedback. As I mentioned before, the OUTs are what the controller is responding to, and they are unique to each controller. More often than not, an led state is controlled by the Value of the midi message. You’ll commonly see 0=off, 1-127=on. Sometimes the Value will control different colors of the led, if the controller has multi color controls.
Continuous controllers (CC) are used for knobs, sliders, ribbons, etc. They really only differ from buttons in that they’re sending different values very quickly as opposed to the single message from a button press.
Note-on and note-off is a good concept to understand. Usually this means a control sends a maximum value (127=note-on), and (0=note-off). A control might do this via press=note-on, release=note off, or it could be a toggle (first press note-on, second press note-off). Experiment with what your controller does, beacuse it can confuse your mapping process if you’re not sure. Traktor is interesting because it doesn’t specifically give you the option to choose which the software responds to. But the button types (hold, toggle, direct, etc) are essentially doing this. A note off output command can turn an led off on your controller without actually turning the control off in the software, so just be aware of that.
Learning hexadecimal can be very helpful. A midi message is 6 characters long, written like this: B0 2C 7F. The first two designate a channel, the next two a note# or CC. The last designate a value. I forget where it starts, but the system moves upward in value or note # by moving first through integers, then letters A through F. So a value might go up in value like this: 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, 22, 23, etc. Once you’ve got this down, your Bomes programming will be cake.
For your beatslicer thing, if I wanted it to act like a Serato loop roll, what I would do is macro commands to a button that simultaneously set a 4 or 8 bar loop and turn on the slicer. Another macro would release the loop when the effect is turned off. Doing this, when you exit the effect, you’re still at the part of the track where you left off, like Serato. I can’t stress enough how the slicer effect does not work if your beatgrids are off though 
Might be basic stuff for some people, but I hope some of that helps those who need it.