Arduino Axe-Fx control library

I have a few question

I registered connection call back and define function to response callback already , to get connected true or false. After call begin() i don't get callback connection.
I want to check connection and display connecting info on screen. But i don't get callback to check it

How i do it . Or i mistake something.

Thank you.


And i have a few request, i want to get effect name or effect name tag when fxid is not in current preset

I have fxid , want know effect name or tag only.
 
I am still 100% stoked about the library.

I still use my FBV into arduino to play my Axe3 every day. I can make this thing act exactly how I want it to act. I'm working on incorporating my 2nd FBV into my setup.

FC12 would be neato, but this gives me absolute control. I can choose at a granular level what every button does in every context.

I have 1200 lines of code in my thingy. I think tysonlt has half that in his library to do 10x the shit. He's the man.

Nice! I know it’s been a while but have you documented your work anywhere?
 
I have a few question

I registered connection call back and define function to response callback already , to get connected true or false. After call begin() i don't get callback connection.
I want to check connection and display connecting info on screen. But i don't get callback to check it

How i do it . Or i mistake something.

Thank you.


And i have a few request, i want to get effect name or effect name tag when fxid is not in current preset

I have fxid , want know effect name or tag only.
Can you post your code? Hard to help otherwise
 
Can you post your code? Hard to help otherwise

onConnection not fire or callback
void setup()
{
Serial.begin(115200);
pinMode(SwitchInput_Int_Pin, INPUT);

Axe_Setup();
}

void Axe_Setup()
{
Serial.println("- Axe System Setup -> Begin");

//register a callback so we know when preset details are available
Axe.registerConnectionStatusCallback(onConnection);
Axe.registerPresetChangingCallback(onPresetChanging);
Axe.registerPresetChangeCallback(onPresetChange);
Axe.registerSceneNameCallback(onSceneName);
Axe.registerSystemChangeCallback(onSystemChange);
Axe.registerConnectionStatusCallback(onConnection);
Axe.registerEffectsReceivedCallback(onEffectReceived);

Axe.setMidiChannel(midi_channel);
Axe.begin(Serial2);
Axe.setStartupDelay(1000);

Axe.requestFirmwareVersion();
Axe.fetchEffects(true);
//delay(500);
Axe.requestPresetDetails();
Serial.println("- Axe System Setup -> End");
}

void onConnection(const bool Connected)
{
Serial.println("\n+++++++++++Call Connection Change +++++++++++++\n\n");
connection = Connected;
Serial.println("\n+++++++++++End Call Connection Change +++++++++++++\n\n");
}

void onSystemChange()
{
}

void onPresetChange(AxePreset preset)
{
}

void onPresetChanging(const PresetNumber number)
{
}

void onSceneName(const SceneNumber number, const char* name, const byte length)
{
}

void onEffectReceived(PresetNumber number, AxePreset preset)
{
}


void loop()
{

Axe.update();
}
 
Is that the whole file? I don't see you including headers or declaring the Axe variable, like:

C++:
#include <AxeFxControl.h>

AxeSystem Axe;

Apart from that it looks ok, except I can't see where you've declared midi_channel. If you leave that off it will revert to OMNI.

Try this example and see if that works: https://github.com/tysonlt/AxeFxControl/blob/main/examples/PresetDetails/PresetDetails.ino

If it's still not working I'd check how you've wired up Serial2.
 
Is that the whole file? I don't see you including headers or declaring the Axe variable, like:

C++:
#include <AxeFxControl.h>

AxeSystem Axe;

Apart from that it looks ok, except I can't see where you've declared midi_channel. If you leave that off it will revert to OMNI.

Try this example and see if that works: https://github.com/tysonlt/AxeFxControl/blob/main/examples/PresetDetails/PresetDetails.ino

If it's still not working I'd check how you've wired up Serial2.
Plus:

There is no reference to any buttonfunction from the loop. No input is detected or handled imho
 
it is part of code. it work, i received callback when preset change or scene name and effect detail. it work perfect.

but i dont receive call back on connection call back when i unplug or plug from fractal fm3 unit. i put while loop in setup function for checking connection , it false alltime.

i wire up Serail2 (GPIO 16, 17) on ESP32. it working i can received sysex message from fm3 unit perfectly.

i test unplug midi in out from this system an turn on this system, it not receive anything (that correct). then i plug it back it working, i can receive preset detail and scene detail. but connection callback it not work when it plug in back or unplug.


C++:
#include <AxeFxControl.h>

#define SwitchInput_Int_Pin 14

AxeSystem Axe;

static byte midi_channel = 0;
bool connection = false;

void setup()
{
      Serial.begin(115200);
      pinMode(SwitchInput_Int_Pin, INPUT);

      Axe_Setup();
}

void Axe_Setup()
{
      Serial.println("- Axe System Setup -> Begin");

     //register a callback so we know when preset details are available
    Axe.registerConnectionStatusCallback(onConnection);
    Axe.registerPresetChangingCallback(onPresetChanging);
    Axe.registerPresetChangeCallback(onPresetChange);
    Axe.registerSceneNameCallback(onSceneName);
    Axe.registerSystemChangeCallback(onSystemChange);
    Axe.registerConnectionStatusCallback(onConnection);
    Axe.registerEffectsReceivedCallback(onEffectReceived);

    //Axe.setMidiChannel(midi_channel);
    Axe.begin(Serial2);
   //Axe.setStartupDelay(1000);

   //when i comment this while loop to skip this loop it working. but when i put this loop it  not pass to next code. because connection it false not change to true
   while(1)
   {
               if(connection)
               {
                         break;
               }
    }

   Axe.requestFirmwareVersion();
   Axe.fetchEffects(true);
   //delay(500);
  Axe.requestPresetDetails();
   Serial.println("- Axe System Setup -> End");
}

void onConnection(const bool Connected)
{
      Serial.println("\n+++++++++++Call Connection Change +++++++++++++\n\n");
      connection = Connected;
      Serial.println("\n+++++++++++End Call Connection Change +++++++++++++\n\n");
}

void onSystemChange()
{
}

void onPresetChange(AxePreset preset)
{
}

void onPresetChanging(const PresetNumber number)
{
}

void onSceneName(const SceneNumber number, const char* name, const byte length)
{
}

void onEffectReceived(PresetNumber number, AxePreset preset)
{
}


void loop()
{
  
       //Input switch part
       .
       .
       .

      Axe.update();
}
 
It appears you have found a bug - that callback is not actually being called anywhere.

You don't need it for what you're trying to do. Just remove it and it will work fine, you don't have to wait for it to be connected.
 
Back
Top Bottom