Introduction

VAXMIDI firmware was developed in MPLAB X IDE.  Please download the IDE and the Integrated Programming Environment, free from www.microchip.com. Use the IDE if you will be developing your own VAXMIDI firmware or use the simple IPE if you will just be updating your VAXMIDI with factory firmware updates.

 

You will need an in-circuit programmer to upgrade your firmware using either of the Development Environments noted above. You can find PICKIT3 (in-circuit programmer) for under $15.00 on ebay or you can buy the factory version from Microchip or mouser.com for $48.00. It also requires a TAG-Connect cable

http://www.tag-connect.com/pickit3 ($43.00) to connect the PICKIT3 to the programming port of any VAXMIDI circuit board.

 

Firmware design

The master control program runs on a PIC24FJ128GC010 on the pcb named Main. It handles USB communication with the host and well as being the SPI Master for communications with the other boards in the system. The slave boards communicate asynchronously with Main by toggling an external interrupt indicating the need for slave attention. EEPROM storage attached to an I2C interface is used for List mode storage as well as system configuration parameters.

 

The Controls pcb uses a PIC24FJ64GA004. It translates the 128 x 64 display image into the row/column bit pattern required by the oled display. It also debounces switches and performs a/d conversion on the sliders and mod wheel. The RAM requirement of these tasks is low so it also manages the concert information for the MainStage interface.

 

Each Sensor pcb uses a PIC24FJ128GC010. Sensor boards are connected serially in VAXMIDI but no ID switches are required because the left side chip selects are rotated 1 position prior to arriving on the right side. The sensor board generates complete USB MIDI note messages ready for output directly to the USB port. Sensor boards are aware of split points, PAT settings, velocity curves, and all other information required to generate note messages.

Project source code

(coming soon)

Main

 

Controls

 

Sensor