MIDI Exiter Project

The MIDI exiter is not a standard MIDI product. It does not produce or accept MIDI note information. The purpose of the MIDI exiter is to implement a MIDI LFO. This LFO can be applied to any MIDI Control Change parameter on any MIDI channel.

The current version has a small set of parameters:

Wave type
Four wave shapes are implemented; two Sinus types, square wave and triangle. The sinus types differ in the way the duty cycle controls the wave shape. Two resolutions are provided, 32 and 8 messages per cycle.
Duty cycle
The duty cycle parameter controls the wave shape in a wave type dependent way without changing the speed. For one sinus type and the square wave the upper half of the wave time is increased and the lower half is decreased or vice-versa. For the other sinus and the triangle wave the ascending half of the wave time is increased and the descending half is decreased. As usual with these kind of things some pictures help a lot:
Message Rate
The message rate is the average time interval between the MIDI messages send. Because the number of messages per cycle is constant for a given wave type, the message rate is a measure for LFO cycle speed or frequency. The basic wave types have 32 messages per cycle, the high speed ones 8.
Channel number
Just the MIDI channel used.
Control change number
The MIDI Control change number. During edit of this parameter sending of MIDI messages is inhibited. The reason is that the MIDI exiter continually keeps sending MIDI messages during edit, making the changes immediatly audiable. But while changing the controller number from one number to another, a fair number of MIDI messages with intermediate controller numbers can be sent. As this can seriously confuse MIDI devices, no output is send during Control Change editing. So you can use this to make the MIDI exiter shut up.


The display consists of a double 7-segment display, four yellow LEDs and one red LED. The 7-segment displays show the current value of the parameter being edited in hexadecimal numbers. If a parameter uses only one display, the other is blank. The yellow LEDs indicate which parameter is being edited:

The red LED indicates the LFO cycle.


The MIDI exiter has four user controls; three buttons and a jog wheel. The left and right buttons cycle through the five parameter edits, the jog wheel changes the current parameter and the P button saves the current parameter value in the startup value memory. The saved value is the one the parameter will have at the next startup. There is no way to recall the saved parameters other than switching the MIDI exiter off and on again.


This second version of the board is chanced quite a bit since the previous version. The potentiometers with the ADC routines are gone as is the LCD display. The first wasn't appropriate for multi parameter input, the second to big and slow. For input a rotary encoder was developed, for output a dual 7-segment LED display and four parameter LEDs. Development was still done with AVR Studio 4. It is buggy for the 4433, but will do.

The processor board

The main board contains a 7805 regulator, a AVR90S4433 some buffering and a CNY17 optocoupler. The parts at the lower right are an integrated serial in-circuit programmer. Device programming is done with PonyProg.

The rotary encoder Rotary encoder

The rotary encoder is canibalized from an old mouse and potmeter. The mouse phototransistor signals are decoded in separate up and down pulses. Which go to INT0 and INT1.

Schematic An preliminary schematic only at the moment. The software is considered functional complete and will be tested. Already there are ideas for extensions, but for this a new board based on the ATmega8 will be build. That is the idea with prototypes. Once in a while you abandon a version and start a new one. The old version will remain functionally complete.
Version 2 Version 2

Finding out the hard way a pertinax based construction isn't very sturdy, I changed the setup a bit and replaced the rotary encoder with an improved (real ball bearing) type. The schematics are more accurate now too, as some bugs appeared while reconnecting the boards.

Last updated: 2003-12-27