The aim of this project is to provide an open design for OSC (Open Sound Control) and MIDI foot controllers, primarily targeted for use with SooperLooper, distributed under the GNU General Public License.

The development was carried out on GNU/Linux Debian 8, but its implementation may be made with other Linux distributions or even should be simple to adapt for Mac OS X or Windows.

Here you can get everything you need to build your own foot controller using free software tools!

Content



News



OM Foot Controller with image processing

This is a foot controller implemented by using only a webcam and the image processing resources provided by OpenCV library. The basic idea is to track an specific object (with a defined colour) and to implement a virtual foot controller, so when the tracked object goes from an idle zone to a button area, that is like a real button were pressed. The command banks and expression option are still implemented, like on previous designs. In this video appears an example of usage.

             


The source is available on Github, and depends on the following packages, all available on the Debian official repos: liblo-dev, libjack-jackd2-dev, libboost-program-options-dev, libboost-system-dev, cmake and libopencv-dev. So, as root, run:

# aptitude install liblo-dev libjack-jackd2-dev libboost-program-options-dev libboost-system-dev cmake libopencv-dev

Once those packages are installed, clone the git repo, run cmake in the src directory, and then run make.

$ git clone https://github.com/turcofran/omfootctrl.git
$ cmake .
$ make

At this point the executable is already built. Its name appear in the CMakeLists.txt file. Let's guess that name is 'cvOM', the webcam it's mapped on /dev/video0, then just run:

$ ./cvOM -d 0


OM Foot Controller with USB Interface

The OM Foot Controller with USB interface was designed for SooperLooper, but it allows you to send commands to any Jack MIDI port or OSC interface: Guitarrix, Hydrogen, Ardour and others. For example, is possible to connect a guitar input to an effects chain and control all effects with only one controller.

OM means "OSC and MIDI", but it also refers to the Hindu mantra sound, because looping sounds is something mystical!

This design has six on-the-fly reconfigurable non-retention buttons and an expression pedal. Some pictures:

             


The following is a simplified diagram of the OM Foot Controller and its software (OMBrigde).

The next sections describe the basic parts of the last diagram and the available package.

Hardware

In the 'hardware' directory of the download package there is a complete Kicad project, with schematic and PCB ready to be built.

Basically, this is a USB-powered board, built with an inexpensive Texas Instruments microcontroller, the MSP430F2012, although the development is compatible with other MSP430 microcontrollers. This microcontroller sends data via 232 to a chip FTDI FT232RL whenever a switch is pressed on the controller or when the expression level changes, and the FT232RL forwards the event and its information to the PC via USB. The board has a simple pins header to connect the controller switches, which should implement a matrix schema as describes other schematic sheet. The expression level is captured with a Vishay TCRT5000 Reflective Optical Sensor which includes an infrared emitter and phototransistor.

Firmware

In the 'firmware' directory of the download package is the C code for the MSP430 microcontroller, ready to be compiled with msp430-gcc command.

To program the microcontroller and debug the program may be used the Texas MSP-EZ430U Debugging Interface Tool and the command mspdebug.

This firmware is scanning the buttons matrix and converting the expression channel to evaluate a change using interrupts. Also is possible read and calibrate expression limits to adapt the AD conversion for each custom pedal design. The 'soft' subdirectory contains the source of a program to do this.

Software - OMBridge

In the 'software' directory of the download package is the C++ code for the 'ombridge' software, ready to be compiled with gcc compiler. This software captures the commands arrived from USB and passes them to the specified OSC or MIDI interface.

The mapping is performed as indicate an XML configuration file, which can include multiple banks command in order to expands the number of commands that the pedal is capable to send. In the 'sofware/map' directory of the download package there are several examples of the format this file should have.

To compile this software Boost Library (www.boost.org), libjack-jackd2 and Liblo (liblo.sourceforge.net) are required, all available in Debian official repositories.

Optional simple GUI

Also an optional simple GUI written in Perl is included, which receives commands mapped by the OMBridge through an UDP port and displays them on screen. The following is a capture of this GUI.


Mechanic

The 'mechanic' directory of the download package contains LibreCAD dxf files for building a robust controller in iron sheet 16 (1.6mm) and stainless iron sheet 15 (1.5mm) for the pedal. Perhaps these thicknesses are an overkill, check it out!

Implementation Cycle and Use

The implementation and using of the controller is similar to the other models. Take a look below.

Screenshots

Here appears some screenshots of OM Foot Controller and SooperLooper.

             



OSC Foot Controller with USB Interface

The following is a simplified diagram of the OSC Foot Controller and its software (OSCBrigde) for use with SooperLooper and/or any other application with OSC interface.

The next sections describes the basic parts of the last diagram, a simplified implementation cycle and an example of using for the OSC Foot Controller.

Hardware

In the 'hardware' directory of the download package there is a complete Kicad project, with schematic and PCB ready to be built.

Basically, this is an USB-powered board, built with an inexpensive microcontroller from Texas Instruments, the MSP430F2013, although the development is compatible with other MSP430 microcontrollers. This microcontroller sends a byte via 232 to a chip FTDI FT232BL whenever a switch is pressed on the device. The FT232BL forwards the data to the PC via USB. The board has simple pins header to connect the switches.

Firmware

In the 'firmware' directory of the download package is the C code for the MSP430 microcontroller, ready to be compiled with msp430-gcc command.

To download it into the eeprom of microcontroller and debug the program may be used the Texas MSP-EZ430U Debugging Interface Tool and the command mspdebug.

The task of this firmware is as follows: When a Hi to Low edge appears at pins P1.2 to P1.7, a byte is sent through pin P1.1. This sending is performed using the Timer A0 interrupt service routine. Besides, Timer A1 interrupt service routine is used as debounce filter at input pins.

Software - OSCBridge

In the 'software' directory of the download package is the C++ code for the 'oscbridge' software, ready to be compiled with gcc compiler. This software captures the commands arrived from USB and passes them to the OSC interface specified, being able to configure a default server.

The mapping is performed as indicated in an XML configuration file, which can include multiple banks command, which expands the number of commands that the pedal is capable of sending. In the 'sofware/map' directory of the download package there are several examples of the format this file should have.

To compile this software Boost Library and Liblo are required, both in Debian official repositories.

Optional simple GUI

Besides, an optional simple GUI written in Perl is included, which receives commands mapped by the OSCBridge through an UDP port and displays them on screen. The following is a capture of this GUI.


Implementation Cycle

A possible implementation of a foot controller for SooperLooper may be done with four controls (buttons), corresponding to the following commands of SooperLooper: Select_next_loop, Record, Overdub and Undo. Of course, if you take a look into the 'software/maps' directory, you will see that the relation between each button and its command associated is flexible by using sel_next_bank and sel_prev_bank commands (exclusive commands of OSCBridge), through which you can alternate between several banks of commands on the fly.

Construction of the structure

To do this can be useful a cover plate from an old desktop PC, which would be cut, resulting in a structure similar to the Marshall footswitch Pedlar-10 049 of four buttons. The following are pictures of a final hardware implementation.

             


Firmware compilation and microcontroller programming

To compile the firmware use the msp430-gcc command in the following way:

$ msp430-gcc -g  main_OSC.c -o main_OSC.elf -mmcu=msp430x2013

To program and debug this firmware in the microcontroller using the interface MSP-EZ430U Debugging Tool attached in ttyUSB0, use this commands:

$ mspdebug -d /dev/ttyUSB0 uif
$ (mspdebug) prog main_OSC.elf
$ (mspdebug) run

Software 'oscbridge' compilation

To compile the software 'oscbridge', go to the 'software' directory and run:

$ make

NOTE: Modify the variable $BOOST_PATH in the Makefile with the correct path to the library Boost in the system.

Use

Example of using with SooperLooper

Here are the steps to use the foot controller with SooperLooper.

One option is to run the bash script 'run.sh' located in 'software' directory. This will launch the OSCBridge, its graphics interface and SooperLooper.

Another option is to follow the following steps:

NOTE: To get a better performance and a low latency, is recommended to use a Linux Real Time Kernel. A good option would be the kernel provided by Pengutronix, or if you like, try to compile your own one!

Screenshots

Here appears some screenshots of OSC pedal and SooperLooper.

             

Videos

Some brief loops sessions created with SooperLooper and the OSC pedal can be found here!



MIDI Foot Controller

Unlike the OSC foot controller, this MIDI controller connects directly to an standard MIDI input (with DIN5 connector) and doesn't need any additional software. Besides, due to it has a little quantity of components, its implementation is really inexpensive.

However, used with SooperLooper, it is necessary to connect virtually the pedal and the loop's program. Besides, it is necessary to make the binding of MIDI commands, which is done via the SooperLooper's setup menu. Of course, these last two task are really easy to do!

The next sections describes the board's hardware and firmware, a simplified implementation cycle and an example of using for the MIDI Foot Controller.

Hardware

In the 'hardware' directory of the download package there is a complete Kicad project, with schematic and PCB ready to be built.

Basically, this is a board powered by 9V battery, with a very economic microcontroller of Texas Instruments, the MSP430F2013, although development is compatible with other MSP430 microcontrollers. The board has single-pin connectors for connecting the battery, a switch-on, the buttons and DIN5 connector (standard MIDI).

Firmware

In the 'firmware' directory of the download package is the C code for the MSP430 microcontroller, ready to be compiled with msp430-gcc command.

To download it into the eeprom of microcontroller and debug the program may be used the Texas MSP-EZ430U Debugging Interface Tool and the command mspdebug.

The task of the firmware is: when a falling edge appears at one of the pins P1.1 to P1.7 of the microcontroller, a MIDI Note On command is sent through P1.0 pin. This sending is done using the Timer A0 interrupt service routine. Besides, Timer A1 interrupt service routine is used as debounce filter at input pins.

Implementation Cycle

A possible implementation of a foot controller for SooperLooper may be done with four controls (buttons), corresponding to the following commands of SooperLooper: Select_next_loop, Record, Overdub and Undo.

Construction of the structure

To do this can be useful a cover plate from an old desktop PC, which would be cut, resulting in a structure similar to the Marshall footswitch Pedlar-10 049 of four buttons. The following are pictures of a final hardware implementation.

             


Firmware compilation and microcontroller programming

To compile the firmware use the msp430-gcc command in the following way:

$ msp430-gcc -g  main_MIDI.c -o main_MIDI.elf -mmcu=msp430x2013

To program and debug this firmware in the microcontroller using the MSP-EZ430U Debugging Interface Tool attached in ttyUSB0, use this commands:

$ mspdebug -d /dev/ttyUSB0 uif
$ (mspdebug) prog main_MIDI.elf
$ (mspdebug) run

Use

Example of using with SooperLooper

Here are the steps to use the foot controller with SooperLooper using an M-Audio FastTrack Pro soundcard. Steps are:



FAQ