Вы находитесь на странице: 1из 4


MIDITab v0.3
(c) 2002, Russell Borogove
General Description:
MIDITab is an interface application between Wacom and compatible graphics
tablets, and MIDI out devices in the system. A stylus device moved over
the tablet will generate corresponding MIDI controller messages. Each
stylus or mouse device usable with the tablet can drive multiple MIDI
controllers -- up to twelve different "logical controllers" each operating
from 2 to as many as, theoretically, 8 different controls.
MIDI out devices in the system are selected from a list. One device at a
time may be selected, and one MIDI channel on that device will be used
according to the MIDI channel selector. The MIDI rate selector limits the
update rate at which MIDITab will send data; reduce this if its MIDI output
is swamping a target device.
To explain MIDITab's "control set" system, some background is required:
Wacom-compatible tablets can support stylus devices, which may be doubleended ("tip" and "eraser"), and puck or mouse devices. These devices may
have buttons and several (up to 8) axes of control: X, Y, and Z being the
basic positional axes; two pressure axes (one corresponding to how hard
the tip or eraser is being pressed against the tablet); and three angular
axes defining the orientation of the device in space. In practice, most
hardware uses only a subset of these axes, typically (X, Y, tip pressure)
plus possibly (azimuth/yaw angle, tilt/pitch angle). As far as the software
is concerned, the tip and eraser ends of a standard stylus are two separate
devices. Finally, some tablet hardware can support two devices in use
MIDITab represents the MIDI controller settings corresponding to each
stylus or mouse device as a pair of "control sets", one basic and one
alternate. When the stylus is reversed from tip to eraser end, MIDITab
automatically switches to the corresponding control set, allowing a
performer to easily control twice as many parameters as they would
otherwise. The buttons on the mouse or stylus are used to switch between
the basic and the alternate control set for that device, which redoubles
the parameters available. Finally, if a second stylus or puck is brought
into use with a tablet which supports multiple devices, the second
device has its own pair of control sets. Thus MIDITab can handle up to
twelve control sets:
1, Alt Tip
1, Tip
2, Alt Tip
Eraser 1, Alt Eraser 1, Eraser 2, Alt Eraser 2,
Mouse 1, Alt Mouse 1, Mouse 2, Alt Mouse 2
(In practice, the names for the control sets are derived from the
tablet software drivers, and so will be (a) different from this and
(b) stupid historical misnomers.)
Each control set defines, for each of 8 possibly-supported axes, a MIDI
controller number, a minimum and maximum MIDI value, and a granularity

expressed in MIDI controller units. The controller number is selected

from a list box; both controller numbers and their corresponding standard
assignment names are given, so feel free once again to mock the MMA's
lack of foresight and imagination in defining the controllers. The
granularity setting controls the step size between MIDI values, which can
be used to produce unpleasant discontinuous effects instead of nice smooth
sweeps. Hey, don't look at me, Phil asked for it. I think this is the
first time I've written a doc for one of these audio projects while
drinking, just so you know.
It is important to note that the grid of controls for the control sets
all refer to the control set which is currently selected for editing
("Edit Set"), which may not be the set which is in use by the current
thing you're wiggling on the tablet ("Active Set"). By selecting a
different edit set from the currently active set, you can configure a
set with the system mouse while running another set with the stylus.
You are ambidextrous, aren't you?
To access the alternate control sets, any button on the stylus or mouse
is used. In "Button Locks" mode, a press-and-release of any button toggles
the active control set between basic and alternate. In "Button Shifts"
mode, an alternate set is active as long as a button is held; releasing
the button reverts to a basic set. If one button on your device doesn't
work, like, oh, say, the left mouse button, try another button.
The Load Settings and Save Settings features should be pretty selfexplanatory. All settings except selection of MIDI out device are
Development Notes, Known Bugs and Limitations:
It seems to work with MIDI Yoke and Audiomulch. Beyond that, who knows?
I've tested it with an Intuos tablet, standard pen-stylus with 5-control
support; I've had reports that it works with a Graphire as well, with X,
Y, and Pressure supported.
Dual-tracking mode seems to mostly work, but I've only tested it with
two styli and have observed some flakiness that I haven't nailed down
yet. I welcome any reports from users using stylus/mouse combos.
The barrel buttons on a standard Wacom pen stylus don't work in inverted/
eraser mode. This is due to the design of the API and I don't think I can
fix it. If you use a tablet-mouse with it, I suspect that the left button
or something else considered "button 1" will also be disabled. I can
squirrel around with it, but I don't think it's too badly busted as it
I gave up on the automatic switch of edit set, as it got complicated
in dual-track mode. I may give it another try when my head hurts less.
It may not really be possible to get all 8 controllers in a control set
working with any extant hardware, but it should, in theory, work with
any such system that implements the LCS/Telegraphics WinTab API. Please
tell me what works and what doesn't with your hardware.
The app implements rather unconventional strategies of tablet context
management in order to grab all tablet events even while backgrounded.
If it detects another application being greedy about ownership of the

tablet, it will struggle gamely for a short time, then give up and selfdestruct, yielding the tablet to whatever other application thinks it's
so damned important that it has to have the tablet all to itself.
Future Enhancements
App should offer to save before quitting if settings have changed.
Currently, all MIDI controllers are considered to be 7-bit. I may add
14-bit support in the future.
Dual-tracking seems a bit flakey, I hope to investigate and improve the
Add an option to convert stylus tilt-and-angle data to a second cartesian
X-Y pair, thereby eliminating the jump from angle 1.0 to 0.0.
Convert this doc to attractive HTML.
Create attractive icons.
Revision History:
v0.1 - Initial prototype
This version supports only a single controller set, and was
released only as a proof of concept.
v0.2 - Multiple controller sets
12 independent controller sets supported.
MIDI rate limitation implemented.
MIDI granularity implemented.
Pitch bend and channel aftertouch added to controller options.
Tablet megalomania contention management implemented.
v0.3 - Load-save and dual-tracking functionality
Added load and save features
Rewrote half the internals to better support dual-device-trackin
mode, probably introducing many bugs in the process
Fixed a crash which occurred under moderate-to-heavy CPU load
Added "none" controller assignment option (default mapping for
obscure axes)
Shuffled default controller assignments
Default button response is now "shift", not "lock"
Disabled auto-switch of edit set
MIDITab is free to take and use as you will. If you like it, or if you
don't like it, please drop me an e-mail telling me so.
If you make music with it, and make that music available to others, tell
me that the music is available. That means if you sell CDs of your stuff,
you tell me how to buy a CD; if you let people download MP3s for free,
tell me where I can do the same.

I'm thinking about other types of audio projects to implement, so mail

me with your suggestions.
This software may contain bugs, errors and other problems that could
cause system or other failures and data loss. Consequently, it is
provided to you as-is, and I disclaim any warranty or liability
obligations of any kind.
If you wish to redistribute the software, please distribute it in its
packaged .zip-file form, or another archive format, along with this
You have the right to decompile, disassemble, reverse-engineer, and
modify the software for personal research and for fair-use purposes
such as adapting the software for interoperation with other systems.
I don't believe that I can legally take this right away from you,
though some large companies might try. If you'd like access to the
source code, it's possible we can work something out; drop me a line.
You do not have the right to reverse-engineer or modify the program
in order to violate my copyright on the software, e.g. to distribute
a version with "the serial numbers filed off".
MIDITab is copyright 2002 Russell Borogove.
VST is a trademark of Steinberg Soft- und Hardware GmbH.
AudioMulch is copyright 1997-2002 Ross Bencina