MIDI port

Mikko Helin MHELIN at tnclus.ntc.nokia.com
Thu Dec 31 11:27:53 CET 1998


>I'm in my final year at Uni., Electronics degree, and for my project I'm
>making a monophonic synth, which has to be MIDI controlled.  At the moment I
>just want note on and note off think.  I've got a diagram of the port its
>just how do I decode the info?  I want to try and convert this to a voltage
>so I can feed it into a VCO.  Any advice, pointers etc would be most
>welcome.
>
You can order MIDI specs from www.midi.org, though every information
you'll need is on page http://www.midi.org/table1.htm

You got to receive the MIDI data with a UART, and convert the
key (not) number to analog voltage which is feeded then into VCO.
You also need to convert the note on status to gate on, and the
note off status to gate off signals.

The easiest solution is to force the MIDI sequencer or master keyboard
to use NOTE ON/NOTE OFF messages with no running status. Then use
binary comparator (74HC688) to find a note on status byte.
The following data byte, which is the key (note) value, is read 
into latch register, and from the latch output to DAC (DAC08 etc.)
to buffer and from it to the VCO. You'll need another 74HC688 for note off
status recognition. You'll need some counter (a decade counter
should work here) to count the data bytes after NOTE ON has received, 
and some logic for the latch enable control signal (short pulse after 
1st data byte after note on has received). 

The note on comparator sets a flip-flop (such as 74HC74) and note off
comparator resets it. The Q output of 7474 is the gate signal
for EG's or VCA.

This design can be simplified a little. As the difference with the
note on and note off is only one bit, just compare the other
bits, and connect bit 4 (the 5th bit) to an AND gate with
the (inverted?) output of 688, and the output of AND to /S input of 
7474 and to /RESET of counter and through an inverter to /R input.
You may need some inverters there or use NAND gate etc., but this
gives you the idea.

This kind of hardware midi2cv converter will not work with running
status, which use the second data byte (velocity) for note
off (when RS=note on, if the 2nd data byte is zero, it means
a note off status). You could use the other decade counter output
and third comparator (or other gates) to compare whether the
2nd data byte is zero or more. If it's zero, generate a pulse
to reset the 7474 (also the counter has to be reset somewhere).

An alternative and a better solution is a microcontroller 
like PIC16F84 with a DAC.

If you are not familiar with digital locigs try www.paia.com
- they have a thing called MIDI2CV8 which has everything you
need and a lot more.

Hope this helps,

-Mikko




More information about the Synth-diy mailing list