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

Hey there

What @Piing software version are you using?
As far as i know they allready have ledflash available

I do see the following in the code:
void onTapTempo() {
// Flashes a LED on tempo
// flashLed( 3, TAP_TEMPO_LED_DURATION ); // pending assign to correspondent tempo led

But I don't see anything that appears to assign the tap tempo LED to a certain pin.
 
This code is using the AxeFxConteol libriary.
You see the function void onTapTempo(), the lines are commented out, so this function does nothing.

If you uncomment these lines and use pin 3 for your led, it will work. If not, probably you are not using the correct Timer.h (use the one from Paul C. That one will definitely work.)

On the tab Functions.h is the rest of the code, that seems to be okay

Just uncomment // the two lines and flash it to the arduino. You do need MIDI IN and MIDI OUT connected to the fractal and your setup to receive the taptempo flash
 
I do see the following in the code:
void onTapTempo() {
// Flashes a LED on tempo
// flashLed( 3, TAP_TEMPO_LED_DURATION ); // pending assign to correspondent tempo led

But I don't see anything that appears to assign the tap tempo LED to a certain pin.

My sketch is not reading the Axe-FX tempo. It doesn't have that function.
TAP_TEMPO_LED_DURATION is assigned to a fixed value on line 15 of hardware.h:
Code:
#define TAP_TEMPO_LED_DURATION 100
and it is used just to set the time of a blinking LED

Now I am having a look at Tysonlt Library, and I see that the tempo request is:
Code:
requestTempo    KEYWORD2
 
My sketch is not reading the Axe-FX tempo. It doesn't have that function.
TAP_TEMPO_LED_DURATION is assigned to a fixed value on line 15 of hardware.h:
Code:
#define TAP_TEMPO_LED_DURATION 100
and it is used just to set the time of a blinking LED

Now I am having a look at Tysonlt Library, and I see that the tempo request is:
Code:
requestTempo    KEYWORD2
Hey there
I see all functions in the sketch available so it should work

Maby, move function void taptempo() to tab Functions.h and paste it below/under function void flashled(int ledpin, int flashdelay)

This way, it should definitely work as so it does in my own .ino and that is basicly just copyd from V11 😇
 
My internal EPROM is losing data😅. I haven't used that sketch for more than 5 years
Hey there @Piing

To me, your sketches have helped so much by learning how to control the fractal with my feet. Cool that this thread dates from 2016 and your software still is used today.. many variant of peddleboards are based of your code or chunks of it. Thumbs up to you dude, that is really a great contribution and inspiration.

Thanx

Cheers 🍻
 
Yes! It is very, very cool that you @Piing and others have shared so much here. I've had a great time playing with this project, and I definitely wouldn't have pulled it off without the resources and knowledge here.
 
Last edited:
Uh ok, so... The thing seems to be working right now. Problem is, I don't know why :D
After unsuccesfully trying to find ver 8.0 to install (can only find v6.x, v7, v10.x and v11, so I stuck with v11 for now) I tried several things:
-changed the Axe to receive from MIDI chan 1 instead of OMNI
-tried hooking up a MIDI IN by using an instructable that required me to hook up something called an octocoupler, but no dice
-read the thread more thoroughly and tried the schematics for the MIDI IN connection. Still no dice and weirdly enough the arduino was getting some power just from hooking it up into the MIDI IN, which kinda scared me cause I don't think this is supposed to happen (I didn't forget the 220 resistors)
-switched the pins from TX0/RX0 to TX1/RX1
-unhooked MIDI IN from the breadboard aaaaand that's what did it somehow. No idea why.
I don't have the LCD screen connected yet cause I wanted to get the functionality of the board before adding what I expect will be another challenge, but right now I'm still trying to figure out what happened for it to suddenly work properly.

Is this thing haunted?
 
Hey there
I see all functions in the sketch available so it should work

Maby, move function void taptempo() to tab Functions.h and paste it below/under function void flashled(int ledpin, int flashdelay)

This way, it should definitely work as so it does in my own .ino and that is basicly just copyd from V11 😇
I tried doing this, but I think I'm still too new to c++ to figure out exactly what/where I should add to the functions.h. I did remove the void taptempo lines of code from the axe3cont...
 
Hey guys!

I have succesfully deployed the controller in 2 gigs now and it's worked well so far!
There are still a couple of issues though:
-the main one is that I can't seem to get the Preset up and Preset down buttons working even though they seem to be hooked up correctly (Axe's MIDI LED registers input and Serial Monitor shows the correct button whenever pressed)
-the MIDI LED on the Axe seems to blink at regular intervals (about 1.5 to 2 sec) which seems weird to me.

I now have a bit of time to continue working on this so I'm going to try and figure out the screen, which also means trying to figure out the MIDI IN jack.
Additionally, I'd like to add an expression pedal to the project since I have re-purposed my old BOSS GT-6 chassis for this and it already comes with one and I really like the feel of it. If anyone has any insight as to how to sketch this out in the Arduino, that'd be great:)
 
Hey guys!

I have succesfully deployed the controller in 2 gigs now and it's worked well so far!
There are still a couple of issues though:
-the main one is that I can't seem to get the Preset up and Preset down buttons working even though they seem to be hooked up correctly (Axe's MIDI LED registers input and Serial Monitor shows the correct button whenever pressed)
-the MIDI LED on the Axe seems to blink at regular intervals (about 1.5 to 2 sec) which seems weird to me.

I now have a bit of time to continue working on this so I'm going to try and figure out the screen, which also means trying to figure out the MIDI IN jack.
Additionally, I'd like to add an expression pedal to the project since I have re-purposed my old BOSS GT-6 chassis for this and it already comes with one and I really like the feel of it. If anyone has any insight as to how to sketch this out in the Arduino, that'd be great:)
I think the midi led lights because the controller is reading/checking for changes. My preset up/down buttons don’t work above a certain preset number (somewhere in the 500 range). I think this has to do with the functionality that the FC units have to limit the upper/lower range of presets to scroll through.
 
I think the midi led lights because the controller is reading/checking for changes. My preset up/down buttons don’t work above a certain preset number (somewhere in the 500 range). I think this has to do with the functionality that the FC units have to limit the upper/lower range of presets to scroll through.
Yeah the Axe 3's setting called "Preset Inc/Dec End" goes up to 511, but my controller right now can't change any presets, even from 0 or 1. Still trying to figure that out.

Does your MIDI LED also light up periodically? I'm not too bothered by it, since I also noticed that when the Axe is hooked up to the PC via USB, that MIDI LED is permanently lit, so I figure you are probably correct about what it's doing
 
Hey there

On V11.* you are using the axecontrol libriary. This libriary takes care of the querying with the fractal.

This code is for previous preset selection: , but you can copy and change it to be next preset selection or whatever.....

You got to have 3 global int variables set somewhere

int CurPreset;
int nextPreset; // +1
int previousPreset; // -1

void presetDown(AxePreset preset)
{
CurPreset = (preset.getPresetNumber());
//this is the action for the axecontrol libriary
delay(50);

previousPreset = (CurPreset - 1);

if (previousPreset <0)
{
previousPreset = 511;
}
Axe.sendPresetChange(previousPreset);
//this is the action for the axecontrol libriary
delay(50);
}

This code only takes care of the CurPreset -1
, be sure it is an Int, a BYTE does not work because the presetnumber exceeds the number of 255!

Now you can play around with +1, or -10 etc. Create another function for that and address it from the buttonpush

Goodluck
 
The folder idea is brilliant, used to be quite active in the arduino field not so long ago, built 5x5, 16x16 <-> midi usb interfaces with expression and switch pedals too.
I prefer usually to use Teensy chips (Tensyduino's) when I can but I like the good old 8bit impl. too, also they usually provide a lot of current!
Hats down!
 
@Piing would it be ok to put this code on Github, I'd like to fork it and play with it, a simple idea I have is a 2 rows only version, which would handle more for each SPST momentary button, when you stay press you get another function (e.g. tuner). I'm on github as fab-672-000 btw (remove dashes).
Also thinking of adding (if not there already): auto-repeat and acceleration would be my initial ideas of contributions.
PS: I can do that for you too and add your original credit for this project and a link to that thread if you'd like and make the license GPL V3.
 
Last edited:
@Piing would it be ok to put this code on Github, I'd like to fork it and play with it, a simple idea I have is a 2 rows only version, which would handle more for each SPST momentary button, when you stay press you get another function (e.g. tuner). I'm on github as fab-672-000 btw (remove dashes).
Also thinking of adding (if not there already): auto-repeat and acceleration would be my initial ideas of contributions.

Ok, I will put it on Github. It will be nice to have the forks there.

@Axelman8 has a more advanced version with one individual display per switch. You can find it here: https://github.com/Axelman8/
I started building that one before covid, but I still haven't finished it 😅

More info here: https://forum.fractalaudio.com/threads/multi-screen-diy-controller.166504/

And another great program at Github by @prongs_386 https://github.com/kmcgain/Pedalboard

And @tysonlt library: https://github.com/tysonlt/AxeFxControl
 
Last edited:
I definitly would start by your simpler implementation that requires way less hardware first, I started my own repo putting you in the credits but I can delete it and wait for your repo it makes more sense that I fork from you first.
Thanks!
 
Back
Top Bottom