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

Is the code on post #22 right for the initial definition 3 x 5 switch row, preset/scene/looper discribed in the first posts of the thread ??
is it the most recent version of the code ?

I have tried to read the code (not specialist of arduino at all) and I don't see anything particuliar regarding the led/switch definition . Is it normal ??
Where is then defined the numbers of switches ?
Just for me to be sure.

if I understood well, the last code is bi-directional with the AXE FX II. also I suppose that the CC Effect definiton is not necessary anymore in comparison with previous version of the code

Many thanks in advance for any explanation
 
Is the code on post #22 right for the initial definition 3 x 5 switch row, preset/scene/looper discribed in the first posts of the thread ??
is it the most recent version of the code ?

I have tried to read the code (not specialist of arduino at all) and I don't see anything particuliar regarding the led/switch definition . Is it normal ??
Where is then defined the numbers of switches ?
Just for me to be sure.
The code listed in post #22 is only for the sysex portion of the program. In this case the sysex is used solely for query and response from the AxeFX in order to get information such as preset name and number and does not make or request any block or preset changes to the AxeFX.

The full code download is linked in post #42 above and includes the sysex code as well as the remainder of the code that includes the footswitch, LED, and LCD control.

if I understood well, the last code is bi-directional with the AXE FX II. also I suppose that the CC Effect definiton is not necessary anymore in comparison with previous version of the code
The CC commands are still used (in the full code: post #42) to control the AxeFX and do things like switch scenes, presets, and control the loop functions.

As a disclaimer, I have gone through the full code but haven't tried to run it as-is so I can't say if it is fully functional. I have used it quite a bit as a reference when working on my own switches, so a hearty "Thank you!" goes out to the OP!
 
This was a great project! Thank you so much! Inspired me to make a controller myself:
2018-07-08%2015.16.01_zpsxmpzplaf.jpg
2018-07-08%2015.15.47_zpssuzdk7lm.jpg
2018-07-08%2015.14.48_zpsfvs5lpbo.jpg


It came out great and works great to control the Axe Fx and the Triple rectifier (via the external switching). Fantastic starting point. Thanks so much for posting your code!!

2018-01-08%2021.59.00_zpsmwjqaa43.jpg


I did have one question and can't seem to find the answer. Is there any way to bank up or down? I.e., call a preset greater than 127. Currently, I can only use Bank A (i.e., preset 0-127). I've done a lot of looking but can't seem to find an answer.

I had read in other places that you need to execute a control change cc#0 and a value of 0,1,2... for the different banks; but, that doesn't seem to work for me. If I try putting the value at 1 or 2 then the preset changes don't work correctly. Any thoughts??

Thanks again for the GREAT starting point and the motivation to get my project going!! If you have any insight on the bank changes, I'd much appreciate it!!
 
Sending the CC alone doesn't work, it has to be followed by a PC command.

Here's an example code I have in my MIDI controller which I'll finish soon. With this function you can set the preset number directly, e.g. with the line setPreset(300); it will send the required data. Oh and MIDIKANAL = Midi Channel (obviously ;))
Code:
void setPreset(int currentPreset) {
  if (currentPreset < 128) {
    MIDI.sendControlChange(0, 0, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset, MIDIKANAL);
  }
  else if (currentPreset < 256) {
    MIDI.sendControlChange(0, 1, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset - 128, MIDIKANAL);
  }
  else if (currentPreset < 384) {
    MIDI.sendControlChange(0, 2, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset - 256, MIDIKANAL);
  }
  else if (currentPreset >=  384) {
    currentPreset = 0;
    MIDI.sendControlChange(0, 0, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset, MIDIKANAL);
  }
}

For preset up and preset down I have this:
Code:
void presetUp(int presetChangeAmount) {
  currentPreset = currentPreset + presetChangeAmount;
  if (currentPreset < 128) {
    MIDI.sendControlChange(0, 0, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset, MIDIKANAL);
  }
  else if (currentPreset < 256) {
    MIDI.sendControlChange(0, 1, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset - 128, MIDIKANAL);
  }
  else if (currentPreset < 384) {
    MIDI.sendControlChange(0, 2, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset - 256, MIDIKANAL);
  }
  else if (currentPreset >=  384) {
    currentPreset = 0;
    MIDI.sendControlChange(0, 0, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset, MIDIKANAL);
  }
}

void presetDown(int presetChangeAmount) {
  currentPreset = currentPreset - presetChangeAmount;
  if (currentPreset < 0) {
    currentPreset = 384 - presetChangeAmount;
    MIDI.sendControlChange(0, 2, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset - 256, MIDIKANAL);
  }
  else if (currentPreset < 128) {
    MIDI.sendControlChange(0, 0, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset, MIDIKANAL);
  }
  else if (currentPreset < 256) {
    MIDI.sendControlChange(0, 1, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset - 128, MIDIKANAL);
  }
  else if (currentPreset < 383) {
    MIDI.sendControlChange(0, 2, MIDIKANAL);
    MIDI.sendProgramChange(currentPreset - 256, MIDIKANAL);
  }
}
Hope this helps
 
Hey axifist, thank you so much for responding back!! Unfortunately, that did not work for me. If I'm hitting preset up, when I get to preset 127 it jumps to 11. If I manually have it on a higher preset, like 463 and preset up, it jumps back to the beginning (preset 0). I'm not sure what's going on. I've implemented your code pretty much verbatim. Any thoughts?

I have my code posted on github, unfortunately, I can't include a link here until I get some more posts under my belt. But you should be able to find it by searching github for jraVette/AxeFxII_ArduinoController and going to line 655 in the .ino file.

Thanks so much for the help!
 
For everyone else interested, here's the link: https://github.com/jraVette/AxeFxII_ArduinoController/blob/master/AxeController_V6.9.ino#L655

First of all: DISCLAIMER ;) I'm no professional coder, in fact my code for my midi controller is my first real coding project! I'm immensly proud of what I achieved, but not all I think is right is in fact right.

As soon as my controller is done, I'll show you guys all of it :) To make you all curious: With my controller I taught my Ultra the functionality of Scenes!!! And more! That thing in combination with the III would be pure satisfaction :p


Back to the topic:
I'd say, don't do
Code:
int currentPreset = presetToChangeTo;
You're just moving data around. Replace currentPreset from my code with presetToChangeTo.

Important question: Do you have an AxeFX XL(+)? Afaik that one has more than 384 presets, right? In that case you'll have to change the code accordingly. I wrote it in a way which makes it jump back to preset 0 if I'm on preset 383 and want to go up to preset 384 which doesn't exist. In case of an XL this preset DOES exist.

I don't want to provide the edited code to you, not because I'm lazy or a dick, but to make sure you understand your code.

Another reason could be that the XL treats those CC and PC messages different to the Ultra. I wrote my code for the Ultra only. But to be honest, I doubt there's a difference!



> If I'm hitting preset up, when I get to preset 127 it jumps to 11.
That one I don't understand... :(
 
I really appreciate all the help. Yep, you are right on all counts: It's an XL and will have to be modified accordingly. Also, my coding there was sloppy, just trying to quickly incorporate your code and get anything besides bank A working to start with.

I ended up finding my issue. For some reason (I have no idea how) my setting: I/O > MIDI > Mapping Mode was set to "custom" instead of "none". I changed it to "none" and it works fine. No idea how in the world, but it's working now!! I'm guessing that made the weird preset 127 jump to 11. Thanks again for the replies and the suggestions, they are much appreciated!
 
I am sorry for not contributing much, but I haven't touched the code since the last version that I posted.

BTW, all the pictures from the first post have disappeared. These free image sharing services are not reliable...

I will try to post them again

NdA4x4
 
Last edited:
Your code also was my starting point, although I took another road very early, mostly because 1. I wrote it for the Ultra and 2. because I have a completely different usage approach.

Still, I'd like to thank you a lot, your project made myself believe in being able to build my own controller. All that's missing is the enclosure. I want it so be road ready! Pretty tough for a beginner like me, but I'll manage to do it and will show everything I did just like you did, so everyone can benefit. In a few weeks, hopefully not months, I'll create a thread :)
 
Woah this thread is amazing. Good job, guys. I ordered parts on ebay today and are gonna have a go on a midi-controller for AxeFx II myself. Thanks for getting me inspired
 
I've rescued the project. Latest version on post #2. Minor bugs corrected and new layout for switches.

This is the new layout. I've realized that at the Axe-FX III Scene Selection is more important than Preset Selection, so I've moved scenes to the lower rows.



One of these days I may build a proper box... :D
 
For those who are challenged building foot controller cases (that would be me), you can buy a professionally built MFC from BJ Devices and code it yourself. All the include files, button management, etc are already provided. And if you've already written Arduino code, it can almost be ported direct into this MFC's AVR environment.
 
@Piing is it still in a three ring binder?

Yes, the same old ring binder. I've been stomping it for almost 2 years (only at home) and it is still alive. But now I've found a band in Bangkok to play live, so I have to seriously reconsider its resilience :rolleyes:

I am going to rescue an old Behringer FCB1010 (I was not using it because it is too large for my bedroom). I will study if there is extra space to drill,to add extra foot-switches, and embed my arduino controller inside.
 
Back
Top Bottom