MiFaSol - MIDI Footswitch/Controoler

MIDI Controller

Download .zip Download .tar.gz View on GitHub

MiFaSol

MIDI FootSwitch Controoler

©2014, Antonis Maglaras


History

I was in the need for a MIDI Controller for my rack-mounted guitar processor.
What easier to do with an Arduino?

The basic idea was to add some footswitches, a MIDI Out and to send whatever MIDI messages I wanted.
After some testing and coding, here is the latest version of the project:

A custom PCB (actually, an Arduino) with MIDI In & MIDI Out/Thru.
LCD (HD44780) 4x20 with I2C Driver.
8 Foot switches (momentary).
Input for any passive volume pedal (for use as expression pedal).



What you can do

First of all, note that all footswitches are programmable.
You can assign to each one to send a Control Change/Program Change/Note On/Note Off MIDI Message.
For example, you can use foot switch #1 to send "Program Change 5", foot switch #2 to send "Note C4 On", foot switch #3 "Control Change 7 with value 127", foot switch #4 "Note A3 Off" etc.
Also if you attach a volume pedal, you can program it to send the same commands, with variable parameter depending on the pressed level. E.g. you can send CC #7 with values from 0 to 127, realtime.
For fully compatibility, the expression pedal can be calibrated.

Another one feature, is the MIDI In. It's nice, if the MIDI appliance is sending back information for the current program. You are pressing "Next" program from the MIDI Controller, then the "Next" program from your MIDI appliance and then again "Next" program from the MIDI Controller, and you are always go to the next program.



Programming

To program the MIDI Controller you don't need a PC. Everything is done via 4 foot switches and the LCD display.

Press the footswitches #1 & #2 at the same time to enter the Main Menu.
Foot switch #1 acts as "Previous" value.
Foot switch #2 acts as "Next" value.
Foot switch #3 acts as "Enter/Accept".
Foot switch #4 acts as "Escape/Cancel".


The menu items are:

  • MIDI Out Channgel.
    The Channel that is used for sending the commands.
    • To be included in a next version, a feature to enable MIDI Out as MIDI Thru too.
      Will forward every MIDI message it receives from MIDI In (if it's enabled).

  • MIDI In channel.
    The Channel that the controller is listening or disable the MIDI In feature.
    When you enable the MIDI In, the controller will accept and display the Program Change values.
    All other MIDI messages are ignored.

  • Footswitches Settings.
    You can program what type of message every footswitch will send.

  • Expression Pedal Mode.
    You can enable or disable the pedal input.

  • Expression Pedal Calibration.
    You can calibrate the pedal for full response.

  • Backlight Time.
    You can set the backlight timeout of the LCD (automatic off) from 1-99 seconds, Always On or Always Off.

  • Version/Memory.
    Mostly for debugging. You can see what is the current software version and the available (free) memory.

  • Factory Reset.
    You can reset all settings to default values.



    ### Board Information
    The PCB is small. 75x50mm. It includes low-cost THT parts.
    It has a "PROGRAM" header, for connecting a FTDI adapter for uploading the software,
    a double-DIP Switch, for changing from PROGRAM mode to MIDI mode (they share the same pin, so they cannot be used at the same time).

    The board can be powered by 7-18V DC (note that it has NOT reverse polarity protection!).



    ### Parts List
    1 x ATmega328
    1 x 6N139 Optocoupler
    1 x 16MHz Crystal
    2 x 22pF Ceramic Capacitors
    2 x 220μF Electrolytic Capacitors
    1 x 100nF Polyester Capacitor
    1 x 7805 Voltage Regulator
    1 x LED
    1 x 1N4148 Diode
    2 x DIP Switchs
    2 x MIDI PCB Female Jacks
    1 x 4.7kΩ Resistor
    2 x 10kΩ Resistors
    4 x 220Ω Resistors
    1 x Push switch (momentary button)



    ### To Do
    A lot of stuff, but have no time yet :)
    Stay tuned!