CPU / MIDI boards

The CPU boards are in. Here’s an empty one:

and a working one:

The terminal block at the top will connect the four expression pedals to A/D inputs on the microcontroller. One phenomenon I have observed on my solderless breadboard is that the small amount of digital noise on the +5v and Ground lines can lead to variation in successive A/D readings, causing spurious MIDI Controller messages. Plenty of decoupling capacitors on the board shown here should reduce this effect. Also, each A/D input has a simple RC filter with a time constant of 0.01 seconds. This won’t delay expression changes at all, but combined with a simple hysteresis algorithm in the software, the filter has proven to virtually eliminate spurious MIDI traffic. I enhanced the PIC code to read all four A/D inputs every millisecond, and CPU utilization now stands at 56%.

The board has MIDI IN, OUT, & THRU. Since the last entry, I optimized the MIDI transmission routines to support both Active Sense and Running Status. Active Sense sends a “keep alive” control byte every 300 milliseconds or less if there is nothing else being sent. If Active Sense messages are being received but suddenly stop, the receiving device should interpret that as a disconnect and stop all notes from sounding. It doesn’t appear that Hauptwerk version 1 supports this optional feature, but it seems like a good idea. Running Status can reduce latency by trimming most MIDI Voice messages from three bytes to two, so that’s a no-brainer. I’ve been using MOTU‘s inexpensive 2-port FastLane-USB interface, and it has performed flawlessly.

The next step is to finalize and order the digital input boards that will be driven by the contact wetting boards.

This entry was posted in Uncategorized. Bookmark the permalink.