DIY Axe-Fx Foot Controller for $50 (Open Project)

Piing

Axe-Master
Few months ago I had no idea of what Arduino was, but today I have a working MIDI pedalboard to control the Axe-FX. I am writing this thread to encourage everyone to build their own pedalboard. If a dummy like me can, you can too!! At least you can try it, just for fun. It’s cheap and harmless.

I have borrowed code from several sources and learnt to understand it and modify it by trial and error. I have also found the other threads at this forum to be very helpful.

The main source of information about Arduino (install software, connections, upload code, etc.) is here: https://www.arduino.cc

You can even ignore the science! Just buy and assembly the components, upload the code as it is, and voila! It’s very simple. If you cannot solder wires, find a friend who can do it for you.

At an initial stage you don’t even need the foot-switches or to assembly things on a box to ensure that it is working; only the Arduino board, the Midi Output, and a piece of wire to simulate the contact switches. Like this picture:

Questions are welcome. I’m no expert, but we can work together.

Shopping list:
- Arduino Mega ( $6.56 )
http://www.ebay.com/itm/401036224315?_trksid=p2060353.m2749.l2649

- DIN Female Jack (7 pin if you want power supply from Midi Cable) ($0.99)
http://www.ebay.com/itm/272139554632?_trksid=p2060353.m2749.l2649

- LCD display (I’ve bought one with a keypad that I may use in the future) ($2.56)
http://www.ebay.com/itm/Keypad-Shie...emilanove-UNO-MEGA2560-MEGA1280-/221849044117

- Stomp Pedal Momentary Switches ( $2.54 each)
http://www.ebay.com/itm/Guitar-Peda...Effects-Push-Button-Foot-Switch-/400914113943

- 220 Ohm resistors for the MIDI Output and for the LED’s ($1 for 100 units)

- LED’s ($1 for 50 units)

Minimum cost:
Arduino Mega.................................... 1 x $6.56 = $ 6.56
LCD Display...................................... 1 x $2.56 = $ 2.56
MIDI DIN Female Jack...................... 1 x $0.99 = $ 0.99
Stomp Pedal Momentary Switches... 15 x $2.54 = $ 38.10
220 Ohm resistors............................. 17 x $0.02 = $ 0.34
0.5 mm LED...................................... 15 x $0.05 = $0.75
Case................................ Free, using imagination
Cable................................ Cannibalized from scrap LAN wire
TOTAL COST .......................................................$ 49.30

Current Features:
  • 15 Pedal Switches (3 rows of 5)
  • First row, switches 1-5: patch selection
  • Second row, switches 1-4: Select Scene 1 to 4
  • Second row, switch 5: Bank Down (subtracts 5 to the patch numbers selection)
  • Third row, switches 1-4: Looper control
  • Third row, switch 5: Bank Up (adds 5 to the patch numbers selection)
  • LCD displays Bank and functions selected by switches
  • Midi Input to read real-time data from Axe-FX. (23/Oct/2016)

Possibilities:

- Implement MIDI Input to read real-time data from Axe-FX. (preset name, scene, tuner, etc)
  • Extra switches and inputs for external switches (the Arduino Mega has spare inputs/outputs)
  • Inputs for external expression pedals (there are plenty of free Analog Inputs at the Mega)
  • Programmable functions for the switches (you can already program anything that you want on the Arduino code, but this feature would permit changes on-the-fly)
  • Full (or exceed;)) MFC-101 functionality

I have not implemented the MIDI input yet because I always have the Ax-FX close to me, so I can directly read its screen. I'll do it for fun when I have more time.

Connections:

Midi Output:

- MIDI DIN socket pin 5 connected to Arduino pin 1 (TX) through a 220 ohm resistor

- MIDI DIN socket pin 4 connected to Arduino +5 pin through a 220 ohm resistor


- MIDI DIN socket pin 2 connected to ground

Instructions: https://www.arduino.cc/en/Tutorial/Midi

Switches:

Common terminal of all switches connected to ground
The 15 Switches are connected to pins n. 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50
http://www.instructables.com/id/Arduino-Button-with-no-resistor/


LEDs:

  • Cathode (short leg) connected to ground
  • Anode (long leg) connected through a 220 Ohm resistor to pins n. 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51
https://www.arduino.cc/en/tutorial/blink


Enclosure:

The enclosure for my prototype is free. I’ve just grabbed a recycled binder from the office. It is strong enough for home use. If you need a beer-proof enclosure you could use a large cookie metal box or whatever you can find... ;)

Edit: 8-April-2018. New pictures






AxePedal_04.jpg
 
Last edited:
I reserve this post to maintain the latest version of the code

All collaborations/improvements/modifications are welcome and will be posted here.

Ver 11.01 (19/May/2019)
Using a 20x4 I2C LCD display (now the budget is above $50 :cool:)
https://mega.nz/#!cvxAjCpK!hT_mmU30tOzGQz5queKBJA1P84SuvKcgm9B7DwMAo6M

Switches configuration:
Axe-FX3-PEdal-Controller-B1.jpg



If the preset or scene names have more than 20 characters, it continues printing at the next line.
Axe-FX3-PEdal-Controller-C.jpg



Ver 7.0 (28/April/2019)
https://mega.nz/#!I7oFWYCR!pPT1whBWHFaI6rvl6kFwdlG5shxXoyewZ8LJDUv_8vk

Now using tysonlt AxeFx Control Library
https://github.com/tysonlt/AxeFxControl


Ver 6.13 (13/April/2018) LED outputs corrected
https://mega.nz/#!Eu4CRYSJ!osEB-9IzZhHNok2X-xx5MTgzZd7y5AS9KiwDwe-Rm90

Ver 6.12 (13/April/2018) Some minor bugs corrected

https://www.dropbox.com/s/ia0179wjxxwsr1u/Axe3Controller_V6.12.ino?dl=0

Ver 6.9 (23/Oct/2016)- Reads SysEx from the Axe-FX
https://www.dropbox.com/s/f3z4e88s2z2npb9/AxeController_V6.9.ino?dl=0

Ver 5.2 (7/Oct/2016):
https://www.dropbox.com/s/tvkzyzbuhabul4n/AxeController_V52.ino?dl=0


Midi library 4.2:
https://github.com/FortySevenEffects/arduino_midi_library

Timer Library:
https://github.com/JChristensen/Timer
 
Last edited:
Fantastic.
It is for sure the most imaginative prototyping enclosure I have ever seen.
Brilliant !

And of course, thanks a lot for your contribution.
I have an arduino mega at home that is unused because I have never been able to use it properly.
I will look for sure closer at your project . ;)
 
I didn't realize LCDs could be had so cheaply... You could get the LiquidFoot LCD-per-button design going for not too much money!

Yes, it seems as easy as declaring one instance for each LCD.

LiquidCrystal lcd1(12, 11, 5, 4, 3, 2);
LiquidCrystal lcd2(12, 10, 5, 4, 3, 2);
LiquidCrystal lcd3...

http://forum.arduino.cc/index.php?topic=5014.0


There are plenty spare I/O's at the Mega, and if we need more, the foot-switches could be multiplexed in order to save more I/O's (although I've tried that at the beginning with an Arduino Uno, but I did not succeed; that's why I've switched to a Mega that has more inputs)
 
Last edited:
Few months ago I had no idea of what Arduino was, but today I have a working MIDI pedalboard to control the Axe-FX. I am writing this thread to encourage everyone to build their own pedalboard. If a dummy like me can, you can too!! At least you can try it, just for fun. It’s cheap and harmless.

I have cannibalized code from several sources and learnt to understand it and modify it by trial and error. I have also found the other threads at this forum to be very helpful.

The main source of information about Arduino (install software, connections, upload code, etc.) is here: https://www.arduino.cc

You can even ignore the science! Just buy and assembly the components, upload the code as it is, and voila! It’s very simple. If you cannot solder wires, find a friend who can do it for you.

At an initial stage you don’t even need the foot-switches or to assembly things on a box to ensure that it is working; only the Arduino board, the Midi Output, and a piece of wire to simulate the contact switches. Like this picture:

Questions are welcome. I’m no expert, but we can work together.

Shopping list:
- Arduino Mega ( $6.56 )
http://www.ebay.com/itm/401036224315?_trksid=p2060353.m2749.l2649

- DIN Female Jack (7 pin if you want power supply from Midi Cable) ($0.99)
http://www.ebay.com/itm/272139554632?_trksid=p2060353.m2749.l2649

- LCD display (I’ve bought one with a keypad that I may use in the future) ($2.56)
http://www.ebay.com/itm/Keypad-Shie...emilanove-UNO-MEGA2560-MEGA1280-/221849044117

- Stomp Pedal Momentary Switches ( $2.54 each)
http://www.ebay.com/itm/Guitar-Peda...Effects-Push-Button-Foot-Switch-/400914113943

- 220 Ohm resistors for the MIDI Output and for the LED’s ($1 for 100 units)

- LED’s ($1 for 50 units)

Minimum cost:

Arduino Mega.................................... 1 x $6.56 = $ 6.56
LCD Display...................................... 1 x $2.56 = $ 2.56
MIDI DIN Female Jack...................... 1 x $0.99 = $ 0.99
Stomp Pedal Momentary Switches... 15 x $2.54 = $ 38.10
220 Ohm resistors............................. 17 x $0.02 = $ 0.34
0.5 mm LED...................................... 15 x $0.05 = $0.75
Case................................ Free, using imagination
Cable................................ Cannibalized from scrap LAN wire
TOTAL COST .......................................................$ 49.30

Current Features:
- 15 Pedal Switches (3 rows of 5)
- First row, switches 1-5: patch selection
- Second row, switches 1-4: Select Scene 1 to 4
- Second row, switch 5: Bank Down (subtracts 5 to the patch numbers selection)
- Third row, switches 1-4: Looper control
- Third row, switch 5: Bank Up (adds 5 to the patch numbers selection)
- LCD displays Bank and functions selected by switches

Possibilities:

- Implement MIDI Input to read real-time data from Axe-FX. (preset name, scene, tuner, etc)
- Extra switches and inputs for external switches (the Arduino Mega has spare inputs/outputs)
- Inputs for external expression pedals (there are plenty of free Analog Inputs at the Mega)
- Programmable functions for the switches (you can already program anything that you want on the Arduino code, but this feature would permit changes on-the-fly)
- Full MFC-101 functionallity

I have not implemented the MIDI input yet because I always have the Ax-FX close to me, so I can directly read its screen. I'll do it for fun when I have more time.

Connections:

Midi Output:

- MIDI DIN socket pin 5 connected to Arduino pin 1 (TX) through a 220 ohm resistor

- MIDI DIN socket pin 4 connected to Arduino +5 pin through a 220 ohm resistor


- MIDI DIN socket pin 2 connected to ground

Instructions: https://www.arduino.cc/en/Tutorial/Midi

Switches:

Common terminal of all switches connected to ground
The 15 Switches are connected to pins n. 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50
http://www.instructables.com/id/Arduino-Button-with-no-resistor/


LEDs:

- Cathode (short leg) connected to ground
- Anode (long leg) connected through a 220 Ohm resistor to pins n. 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51
https://www.arduino.cc/en/tutorial/blink


Enclosure:

The enclosure for my prototype is free. I’ve just grabbed a file from the office. It is strong enough for home use. If you need a beer-proof enclosure you could use a large cookie metal box or whatever you can find... ;)

AxePedal_01.jpg


AxePedal_02.jpg


I still haven't connected the LED's. I'll probably wait until I build it into a professional enclosure.
AxePedal_03.jpg



AxePedal_04.jpg
Super nice creative project!!
Love the binder concept ;)

can't wait to see a version with scrible buttons and scene info in the overall display
 
The scene number is already on the display, as far as you select it from the Axe-Binder and not from the Axe-FX front panel

AxePedal_05.jpg
So you could also give it another name. like SC4 clean overdrive?
As axe fx and mfc its not possible.
Naming a scene is not possible in axe fx.
 
So you could also give it another name. like SC4 clean overdrive?
As axe fx and mfc its not possible.
Naming a scene is not possible in axe fx.

Yes, you only have to rename the correspondent lines of the program:
eg: lcd.print("Scene 4"); ---> lcd.print("SC4 Clean Overdrive");

Those names would be the same for all the presets, but it is possible to create an array of texts with individual Scene Names for each selected preset.
 
Last edited:
I have released Ver 6.8 Beta.

- Midi Input implemented. It can read data from the Axe-FX (preset number, preset name, scene...) and show it on the LCD display (needs a longer display to show all the characters. I'm wondering if buying a 4 x 32 or a OLED display)
- Midi In/Out moved from pins 0-1 to pins 18-19 of the Arduino Mega, to avoid conflicts with the internal Serial Port
- It can still be used without Midi Input. The LCD will display the preset number and scene number selected from the controller if no info is received from the Axe-FX.


It has one bug. I don't know why, but it only reads the Preset Name when pressing the switch two times or when selecting a scene.

I have provisionally sorted the issue by calling Scene-1 every time that a preset is selected, then the Preset Name is displayed correctly, but the name is not updated when changing the preset from the Axe-FX panel until a Scene is selected. Not a big issue if you only change presets from the floor-controller, but it needs to be debugged o_O

MIDI.sendProgramChange(PresetNumb,MIDICHAN);
MIDI.sendControlChange(SceneSelect_CC, 0, MIDICHAN); //Selecting a Scene forces it to read the Preset Name.

Any help would be appreciated. I've already spent 2 days trying to figure it out.
I don;t really need it because, as I've said, I have the Axe-FX besides the stompboxt I do it for fun.

Thanks to Deathelk. I've used parts of his code available at instructables.com: http://www.instructables.com/id/Arduino-Due-Based-Fractal-Audio-Axe-FX-II-Controll/
 
Last edited:
Few months ago I had no idea of what Arduino was, but today I have a working MIDI pedalboard to control the Axe-FX. I am writing this thread to encourage everyone to build their own pedalboard. If a dummy like me can, you can too!! At least you can try it, just for fun. It’s cheap and harmless.

I have cannibalized code from several sources and learnt to understand it and modify it by trial and error. I have also found the other threads at this forum to be very helpful.

The main source of information about Arduino (install software, connections, upload code, etc.) is here: https://www.arduino.cc

You can even ignore the science! Just buy and assembly the components, upload the code as it is, and voila! It’s very simple. If you cannot solder wires, find a friend who can do it for you.

At an initial stage you don’t even need the foot-switches or to assembly things on a box to ensure that it is working; only the Arduino board, the Midi Output, and a piece of wire to simulate the contact switches. Like this picture:

Questions are welcome. I’m no expert, but we can work together.

Shopping list:
- Arduino Mega ( $6.56 )
http://www.ebay.com/itm/401036224315?_trksid=p2060353.m2749.l2649

- DIN Female Jack (7 pin if you want power supply from Midi Cable) ($0.99)
http://www.ebay.com/itm/272139554632?_trksid=p2060353.m2749.l2649

- LCD display (I’ve bought one with a keypad that I may use in the future) ($2.56)
http://www.ebay.com/itm/Keypad-Shie...emilanove-UNO-MEGA2560-MEGA1280-/221849044117

- Stomp Pedal Momentary Switches ( $2.54 each)
http://www.ebay.com/itm/Guitar-Peda...Effects-Push-Button-Foot-Switch-/400914113943

- 220 Ohm resistors for the MIDI Output and for the LED’s ($1 for 100 units)

- LED’s ($1 for 50 units)

Minimum cost:

Arduino Mega.................................... 1 x $6.56 = $ 6.56
LCD Display...................................... 1 x $2.56 = $ 2.56
MIDI DIN Female Jack...................... 1 x $0.99 = $ 0.99
Stomp Pedal Momentary Switches... 15 x $2.54 = $ 38.10
220 Ohm resistors............................. 17 x $0.02 = $ 0.34
0.5 mm LED...................................... 15 x $0.05 = $0.75
Case................................ Free, using imagination
Cable................................ Cannibalized from scrap LAN wire
TOTAL COST .......................................................$ 49.30

Current Features:
- 15 Pedal Switches (3 rows of 5)
- First row, switches 1-5: patch selection
- Second row, switches 1-4: Select Scene 1 to 4
- Second row, switch 5: Bank Down (subtracts 5 to the patch numbers selection)
- Third row, switches 1-4: Looper control
- Third row, switch 5: Bank Up (adds 5 to the patch numbers selection)
- LCD displays Bank and functions selected by switches

Possibilities:

- Implement MIDI Input to read real-time data from Axe-FX. (preset name, scene, tuner, etc)
- Extra switches and inputs for external switches (the Arduino Mega has spare inputs/outputs)
- Inputs for external expression pedals (there are plenty of free Analog Inputs at the Mega)
- Programmable functions for the switches (you can already program anything that you want on the Arduino code, but this feature would permit changes on-the-fly)
- Full MFC-101 functionallity

I have not implemented the MIDI input yet because I always have the Ax-FX close to me, so I can directly read its screen. I'll do it for fun when I have more time.

Connections:

Midi Output:

- MIDI DIN socket pin 5 connected to Arduino pin 1 (TX) through a 220 ohm resistor

- MIDI DIN socket pin 4 connected to Arduino +5 pin through a 220 ohm resistor


- MIDI DIN socket pin 2 connected to ground

Instructions: https://www.arduino.cc/en/Tutorial/Midi

Switches:

Common terminal of all switches connected to ground
The 15 Switches are connected to pins n. 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50
http://www.instructables.com/id/Arduino-Button-with-no-resistor/


LEDs:

- Cathode (short leg) connected to ground
- Anode (long leg) connected through a 220 Ohm resistor to pins n. 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51
https://www.arduino.cc/en/tutorial/blink


Enclosure:

The enclosure for my prototype is free. I’ve just grabbed a recycled binder from the office. It is strong enough for home use. If you need a beer-proof enclosure you could use a large cookie metal box or whatever you can find... ;)

AxePedal_01.jpg


AxePedal_02.jpg


I still haven't connected the LED's. I'll probably wait until I build it into a professional enclosure.
AxePedal_03.jpg



AxePedal_04.jpg
Fantastic Piing :eek:

You are already projected in the World Economic Future. :(
There is also room for the printed manual, hahaha :):p:)
Collector's item :cool:
 
I have released Ver 6.8 Beta.

- Midi Input implemented. It can read data from the Axe-FX (preset number, preset name, scene...) and show it on the LCD display (needs a longer display to show all the characters. I'm wondering if buying a 4 x 32 or a OLED display)
- Midi In/Out moved from pins 0-1 to pins 18-19 of the Arduino Mega, to avoid conflicts with the internal Serial Port
- It can still be used without Midi Input. The LCD will display the preset number and scene number selected from the controller if no info is received from the Axe-FX.


It has one bug. I don't know why, but it only reads the Preset Name when pressing the switch two times or when selecting a scene.

I have provisionally sorted the issue by selecting Scene-1 every time that a preset is selected, then the Preset Name is displayed correctly, but the name is not updated when changing the preset from the Axe-FX panel until a Scene is selected. o_O

MIDI.sendProgramChange(PresetNumb,MIDICHAN);
MIDI.sendControlChange(SceneSelect_CC, 0, MIDICHAN); //Selecting a Scene forces it to read the Preset Name.

Any help would be appreciated. I've already spent 2 days trying to figure it out.
I don;t really need it because, as I've said, I have the Axe-FX besides the stompboxt I do it for fun.


Thanks @Piing ... can't wait to start my little project. Waiting for all the components to arrive.
 
I am preparing a matrix to convert the AMP TYPE to the real name of the amplifier (eg: "Budda Twinmaster" instead of BUTTER) and show it on the LCD display, but I need to solve the bug of reading the Preset Name before reading the AmpType, otherwise i may complicate things.

I'm going to play guitar until I receive some help or I accidentally beat my head and get inspired as Cliff. :p
 
Back
Top Bottom