CodeVis - Art and Vision in Software


PROJECTS DOWNLOADS PRODUCTS INFORMATION


MIDI Driver

A CodeVis Production.


MIDI Driver 1.0 (c) 2003 by CodeVis (www.codevis.com). All Rights Reserved.

This program is free for non-commercial and commercial use.
However, you may only distribute the unmodified install package.

This software is provided as is. Considerable effort has been made
to make it as free from defects as possible.
However, it's free, so please:
USE AT YOUR OWN RISK!

By downloading and installing MIDI Driver, you acknowledge and agree to
abide by the above license and disclaimers.

MIDI Driver uses NSIS from NullSoft to install.
Thank you to the guys at Nullsoft for a free, solid, and spiff installation system!


Contents:

MIDI Driver Overview

MIDI Driver is a program to connect game-type input devices to a MIDI device. It was specifically written to use pedal-type controls like the ones used for racing games to control MIDI devices for guitar effects. It is, however, a multi-purpose program and could just as easily connect your game pad to your MIDI lights controller if you want.

MIDI Driver sends Control Change (0xBn) and Program Change (0xCn) messages. If there is sufficient demand, other message types may be added.

You can customize your messages to toggle a value, send a static value, cycle through a series of values, or send a continuous value from your input controller to a MIDI device. You may also create custom curve mappings between the input controller values and the output MIDI values.

MIDI Driver also lets you build Combos - sets of MIDI actions that can all be sent via a single trigger. You may either build these Combos manually, or you can record them directly from a MIDI device.

Please email any bug reports, comments, feature requests, etc. to codevis@codevis.com. Also, please remember that this is free software, and you are using it at your own risk.

Requirements

  • Windows 98 / ME / 2K / XP
  • DirectX 8 or above
  • Pentium-II or better w/128MB RAM
  • DirectInput device
  • Soundcard w/MIDI support
  • MIDI device(s)


^ Top ^


Screencapture of the main window of MIDI Driver

MIDI Driver Main Window

The image above is MIDI Driver's main window. Here you can configure the basic settings for MIDI Driver, turn it on and off, and monitor its status. The major controls on the window are as follows:

  • Invert button pic
    Invert Switches ('I') - Inverts an axis. Use these if your controller is reporting full when up, or if you just want an inverted control. Inversion is also useful for some controls like Volume where you want the default to be full. Just click it to toggle.
  • Controller menu pic
    Controller Menu - This menu selects which input device (joysticks, gamepads, racing pedals, etc.) will be used. When you change this, it updates the left and right axis menus (see #9 below) with the axes that are available on the device. Make sure to calibrate the device before using it - you can reach the calibration page through the device configuration button.
  • Output menu pic
    MIDI Output Menu - This menu selects the MIDI interface to send messages with. Make sure you have the MIDI Out from the interface plugged into whatever device you want to use.
  • Channel override menu pic
    Channel Override Menu - Here you can specify an output channel to send *all* MIDI messages to. If it is set to Default, then the individual Actions will be sent to their configured channel. However, if you specify a channel here, then all actions will be sent to it.
  • Input menu pic
    MIDI Input Menu - This menu selects the MIDI interface to receive messages with. This is primarily used for recording MIDI messages when creating Combo Actions.
  • MIDI listen channel pic
    Listen Channel - If you only want MIDI Driver to record from a single channel of MIDI, select the channel you wish to listen to here. Otherwise, if All is selected, then MIDI Driver will record from all channels.

  • Refresh Speed - The Refresh menu controls how fast MIDI Driver checks your input device for changes, and likewise how quickly MIDI messages will be pumped to the MIDI Output device. Some MIDI devices may not be able to handle full speed - if you begin to experience lag from your MIDI device, or if your computer becomes unresponsive, you should turn the Refresh speed down. However, the faster the refresh speed the more accurate and responsive the pedals will be.

    If you have the refresh speed set high, but continuous actions still seem choppy, use the Attack and Decay knobs to control filters on the individual axis to smooth the actions out.

  • Axis configuration pic
    Axis Config Section - This section allows you to select an action to be performed for each for your axis, as well as which axis to use for your left and right pedals. You can map button actions, pedal actions, and combos to the left and right axis.

    If you use a button action or a combo action, it will be triggered or toggled when you press the axis past a low threshold. You must return the axis to zero before the trigger will reset and be ready for a second trigger.
    For continuous controls, the axis maps directly to the value to send. The light to the right of the axis will display the status of the control - either in brightness for continuous controls, green or red for a toggled control (on and off respectively), or red for triggered static messages.
  • Joystick button configuration pic
    Button Config Section - This section allows you to configure buttons in the same way as the Axis section described above, except buttons are not allowed to be assigned to continuous messages.
  • Picture of the Load, Import, and Export buttons
    Load/Import/Export Buttons - These buttons allow you to Load, Import, and Export your configured actions and combos. Load clears your current combos, and loads in just what is present in the file you select. Import adds the actions and combos from the file you select into your current configuration. Export allows you to save your current actions and combos into a file. By default, all of your actions and combos are saved into a file called Default.mdr in your MidiDriver/Data directory.
  • Combo button pic
    Combos Button - Press the "Combos" button to bring up the Combo Window to configure or record Combination Actions.
  • Action button pic
    Actions Button - Press "Actions" to bring up the Action Window to configure the MIDI actions available within MIDI driver.
  • Help button pic
    Help! Button - Press the "Help!" button to bring up this help.
  • Power button pic
    Power Button - Once you have configured MIDI Driver the way you'd like it, press the Power Button to make it pass the configured actions to your MIDI device.
  • Picture of the minimize, restore, and close buttons
    Minimize, Restore, and Close - These buttons are standard - except for the Restore button (*). This window is scaleable by pulling in the bottom-right corner. The Restore button will return the window to its original size. You may also press the ALT-R for the same effect.
  • Device configuration button pic
    Configure Device Button - Press this button to configure or calibrate your game devices. If no devices are currently available on the machine, it may just open the system control panel for you to install devices from. Make sure to calibrate your device before using it as a MIDI controller - otherwise, some controls may not work properly.
  • Picture of the attack and decay knobs
    Attack/Decay knobs - If the movement on an axis is too choppy, you may want to turn down the Attack and Decay knobs for that axis. Likewise, if it isn't responsive enough, you may want to turn them up.
    Attack controls how responsive the pedal is to pushing on it.
    Decay controls how responsive the pedal is to letting up on it.
Note: To view global hotkeys, you can hit ALT-?.


^ Top ^


Action Configuration screen capture

Action Configuration Window

The Action Configuration Window is used to create new actions and modify existing actions. It can also be used to import and export MIDI Driver Map (.mir) files.

  • Pedal / Axis Action List - This list displays all of your currently loaded MIDI actions that use a continuous value from an axis. These actions may only be assigned to the right and left axes configured in the main window. These will mostly be intensity-type controls for effects like Wah, Volume, Drive, etc.
  • Button Action List - This list displays all of the currently loaded MIDI actions that either toggle a value or send a static one. These actions may be assigned to axes or to individual buttons on your controller. Toggle effects, max out the drive, flip a light, or go to the next patch here.
  • Add - To create a new action, press Add and fill in the blanks. See the Add/Edit window description for details.
  • Edit - If you have selected an action you want to change, the Edit button will light up. Press it to modify the action.
  • Remove - Pressing Remove nukes the currently selected action, gone, bibi, but you didn't want it anyway, did you?
  • Show Hidden - If you have recorded Combos from a MIDI device, it will create hidden actions that start with a '*'. If you press the Show Hidden button, these will be displayed and may be edited.
  • Delete All - Sometimes, you just want to start over with a clean slate. MIDI Driver lets you do that by pressing "Delete All". Be warned - it works. I'd suggest exporting your MIDI action configurations from the main window before doing this.


^ Top ^


Action Add/Edit screen capture

Action Add/Edit Window

The Add/Edit Window is where you go to create and modify your MIDI actions. You'll need to figure out what the codes are for the actions you want first though - check the device specifications for the device you want to control, or use the "Record" feature in the Combo window to capture messages. If you need a great MIDI utility for capturing and debugging messages, check out MIDI-OX. Anyway, once you know the message you want to send, entering it in is easy. All values are in decimal.

  • Action Name - What you enter here is what your new action will be called, so put in something that describes what you're doing. Remember, the actual effect of a message on devices may differ, so make it somewhat descriptive - you've got 63 characters.
  • Program/Control Change - Select whether you want to send a Program Change or a Control Change message to the MIDI device.
  • Channel Menu - Select your channel, 0 - 15.
  • Controller Menu - Lotsa possible control messages to send: Click the up and down arrows on the menu to scroll through them.
  • Action Types - There can be only one. Which one, though, depends on what you want to do.
    • Toggle - Select the Toggle option if you want to toggle the state of something between the Data Value (low) and the Data Value (high) numbers.
    • Static - Just want to chunk a message down every time you hit a trigger? Use the static option and fill in the the Data Value (low) field.
    • Cycle - Like the Static message, except every time this action is triggered, the value increments up towards the Data Value (high) number. Once it hits the max, it starts over.
    • Continuous - The Continuous option will map an axis directly to a MIDI value from 0-127 to send to your controller. These are only used with pedals/axis devices.
    • Curve - This one works like the Continous option, except with a twist - you can create a curve map to translate your input device's messages. This is particularly useful if you want a faster or slower ramp on the message. Especially with controls like volume or Wah, it can totally change the feel of the effect! See the Curve Mapping window below.

  • Data Values - Yhe Data Value fields are enabled for toggle, static, and cycle-type actions. They can be set to any value from 0 to 127. If you enter an out-of-range value, it will be rounded into range.


^ Top ^


Curve Editor window screencapture

Curve Mapping

The Curve Mapping window is show if you select a "Curve" Action Type from the Add/Edit Window. It allows you to map input values to output MIDI messages in non-linear fashion.

What this means is that if you want a smoother ramp on a volume control, or you want a different kind of effect when you press your game pedals, you can make it happen here. To design your curve, either select one of the default curves from the grey buttons (they have squigglies showing the type of curve) or draw it directly on the curve display. To draw a curve, just click on the curve display and drag where you want the curve to go.

You can also perform a couple of simple operations on curves:

  • The Flip button will invert all of the mapping values. So, if you had a value of 12, it will become (127 - 12) = 115.
  • The Reverse button reverses all of the values. This means that what would have previosly been sent when your pedal was full up will now be sent when the pedal is full down. In other words, if you had a map that let you create a crescendo by pressing down on the game pedal, it's now a decrescendo.
  • Pressing Smooth will attempt to smooth out any rough spots in the map. If you hand draw a curve after drinking too much coffee, it might be a bit shaky. Pressing smooth a few times can help this out.

One last feature of curves is that you can import and export them. This lets you save a curve to a file, then load it back in later. Not only does this let you copy curves between different Actions and Action Files, but it also lets you share great curve maps with others.


^ Top ^


Combination Edit window screencapture

Combo Window

The Combo Window allows you to assign multiple actions (created in the Action Window) to one Combo. Combos work the same way as button actions - when triggered, all of the actions within a combo will be activated and sent.

  • Action Combos - This list displays all of your currently configured Combos. To add a new one, click the Add button beneath the window. To remove one, select it and click the "Remove" button. Note that when you add a new Combo, it will start out empty.
  • Actions in Current Combo - This list displays all of the actions in the Combo selected in the Action Combos list. To remove items from this list, select them and press the "Remove" button beneath it.
  • Available Actions - This list displays all of the available actions. Continuous actions are not allowed in Combos. To add an action to a combo, first select the Combo in the Action Combo list, then select the action you wish to add from the "Available Actions" list and press the "Add" button beneath the list.
  • Record - The record button allows you to record up to 100 MIDI messages at a time from the Input MIDI device configured on the main window. To use it, create a new Combo, select it, and press the Record button. Once you have recorded the messages you want, press it again to stop. Recording will automatically stop after you've recorded 100 messages. The messages are recorded as hidden actions - i.e. actions with a '*' at the start of the name. Deleting a Combo later will remove all of the hidden actions the Combo uses to avoid clutter.
  • Show Hidden - When recording MIDI Combos, hidden actions are created for each message received. To view them in the Actions lists, click on Show Hidden. Note that deleting a Combo will also remove its associated hidden actions.


^ Top ^


Questions? Comments? Suggestions?
Email them to codevis@codevis.com or check out our public forums.
Copyright © 2003-2004 by Michael Ellison. All Rights Reserved.