Share your DIY controller project based on MIDI for 3rd Party Devices | AXE3 | FM3 | FM9 |

Axelman8

Power User
Hey there,

This thread is for sharing information about your DIY controller project, using a micro-controller of choice and possibly also using the @tysonlt AxeControl library.
If you are planning on building a controller yourself or you already build one, do chime in and share your project.
There are so much possibilities with micro-controllers and coding languages. Each build could be inspirational like design, hardware choice, coding language, but most off all is how a build is designed and what tools are used to build it.

This thread could be a pool of knowledge sharing about various builds. That would be awesome.
So If you are planning on starting your own DIY project, I hope this thread could be an inspiration source and knowledge base.
Also your knowledge could be inspirational for other builders.

About me:
I am not a programmer but I have some limited knowledge on how to use C++ and the Arduino IDE to code. All my minimum knowledge of microcontrollers, Coding with C++ on the Arduino and soldering I learned in this thread of forum-user @prongs_386.
After building my first peddleboard, I already wanted to build another version, trying to make it refresh the screens a little faster and making the enclosure road ready.

I will start off in this thread explaining my existing build and the upcoming build.

Cheers 🍻
 
Last edited:
20230226_221158.jpg

2020, my first build ever with Arduino Due.

Took me 3 months to fully develop the code and build the unit.
For this build I got all the items from the shopping list provided by @prongs_386 on his Github page (except the hammond enclosure)

The functional design was allready on paper, but I had no clue how to get it on the Arduino and show the AxefxIII info on the screens:
The start with @prongs_386 his project code was the best start ever. Without this example, my project wouldn't be what it is today.

My goals I set for the peddleboard:
My build would be a prototype build with wood. Looks nice and is more manageable for a mock-up situation.
I wanted an overview that shows me as much information I could get into one page. Like the MC101 with the AxeFx2.
On the MC101 peddleboard I could see which effect was available, bypassed or active. That function I had to have in this build and YES! Its working with a Hold function and is working perfectly. Very convenient in the usage.
Also, I wanted to know if a preset had the WaH or Looper available. This info is shown on top of 2 screens. The info updates on every preset, even in the AuditionMode screen this info is updated.
Available for MKI (512 presets) and MKII (1023 presets)

This is how the peddleboard is working on the Arduino Due and the Axecontrol libriary

Global functions (not page related):

My screens are the blue non SD version of the 1.8' ST7735 160*128. These screens can have a higher refresh rate then red SD version and can run with the Bodmer library.
Using the bodmer library the screens are updated very fast. This libriary is chosen over the standard Adafruit because of performance.

POWER:
The peddleboard runs on 5V 1A usb B connection. Its the same connection to flash a new version from the PC to the Arduino.​
The peddleboard also runs on a powerbank. I use a 10.000mah and that powers the board for aprox. 6 hours.​

CLOCK:
Seeing the actual time in a 2*16 lcd screen. Works with a DS3231 I2C module​

FREE MEMORY:
Seeing the amount of available memory in the 2*16 lcd screen.​

TAP TEMPO:
Tap to set the tempo, or select a tempo using numbers 0-9. Selection is shown in the 2*16 lcd screen.​
Tap tempo screen has 2 versions. 4 bullets flashtempo or a single tempo flash bar. Changeable in the AuditionMode screen.​

NUMBERS:
Shows a number on every screen 0-9 and you can type a number to select a preset, or set the tap-tempo​

TUNER:
Shows a tuner in the middle screen. ALL other functions are OFF, so that the tuner is at most accurate as possible.​
Tuner screen has 2 versions. A Pyramid or a Circle. Changeable in the AuditionMode screen. -> The tuner code is used from @prongs_386


Pages that build up for scenes, presets, effects, amp/cab channel switching and looper

SCENE PAGE:
View and acces all 8 scenes per preset​
View effects, effect state and toggle effect in scenepage​
Ability preset down / up.​
Show previous/next presetnumber and name in screen.​
PRESET PAGE:
View and select preset banks (0-9, 10-19, 20-29 etc to 511 or 1023). View preset name/number in the screens. After selecting, automaticly return to the scenepage.​
AuditionMode for presets and stay in the preset layout and keep on selecting till you choose the preset and go back to the scenepage.​
EFFECT PAGE:
View effects by name, effect state (green /red) and toggle effects state.​

AMP/CAB abcd CHANNEL SWITCH PAGE:
View and select AMP1/AMP2, CAB1/CAB2​
Select per AMP/CAB the channel a-b-c-d​
Selecting AMP1 channel, CAB1 will go to this channel (same goes for AMP/CAB2)​
Select CAB1/2 channel, AMP wont change​
LOOPER PAGE:
Show the looper functions undo, play, record, once, reverse, halfspeed and use the looper.


When I finished the project, the first thing I did was make a YouTube video to show the working of the peddleboard.
After using the peddleboard for some time, I wanted some changes and the latest version is shown on another YouTube video

The code of this build is on GitHub. If you are interested on building this peddleboard with the Arduino Due you will find all you need.

20230226_221255.jpg


NOTE: Development stopped for the Arduino Due version:
The development of this build is ended. A new build with a road-ready enclosure will be build using a Teensy 4.1 micro controller.

-> Development for the Teensy 4.1 has started using the latest existing code from the Arduino Due
-> Parts are dropping in from china so I can start building this project


If you have any question regarding the Arduino Due build, feel free to ask.


Cheers 🍻
 
Last edited:
TEENSY 4.1 BUILD with all used components

20231016_103629.jpg20220316_140945.jpg
1x Teensy 4.1​
1x Hammond enclosure: (1456RL1BKBK)​
15x TFT screens: ST7735 1.8 inch blue SPI from ROARKIT store (alixp, app the seller and make a good price)​
18x FootSwitch: (softswitch NON Momentary)​
1x 16*2 lcd screen (blue background) used with a i2C 4 pin connector​
1x BUCK 45V-9V to 5V​
1x BUCK 5V to 3.3V​
1x 16 channel multiplexer​
16x 10K resistors​
1x momentary powerswitch (I used one with a LED color ring)​
4x Stereo 6.3 Jack connectors ( used 2 for exp pedals and 2 for wiring guitar signal to fractal)​
4x 220K resistor (2 for the exp pedals) (2 for TX and RX)
1x cell battery case (with solder connection)​
1x USB-B to microUSB extention cable (connect to the Teensy usb port).​
1x micro USB extender cable (to get easy acces to the micro USB. I places the input in a ventilation sloth on the back.)​
1x RJ45 female connector with open terminals for cable connection.​
5Mtr 22AWG cable to connect footswitches to multiplexer etcetera​
2.5mtrs 16 row grey flat ribbon cable​
18x 16pin 2.54mm ribbon IDC socket connector​


NOTE:
My build is working powered by the Faslink (12V) to the peddleboard, over a CAT6 UTP cable. But the power is not as stable as I wanted to be, so still i'm searching for a better solution (maby 2 connection cables). Now im temporarely using a 5V external powersource over CAT6 that works.​
EDIT: Power from Faslink works now.​
I needed to transfer the power over 2 connecting cables instead of 1. I just bridged 2 connectors on each side and it works flawlessly 🤘.​
I wanted this build to be a 1 cable solution and with the CAT6 I managed to do that. There may be other solutions, but this works for me.​
Offcorse there is still the guitar cable, but I did not have a solution for that (other than wireless), so I connect my guitar to the peddleboard and signal from the peddleboard to the Fractal. (see the backside of the enclosure on the left near the powerbutton. That is guitar-in guitar-out.)​
20230424_235044[1].jpg


* Power management:
The Teensy 4.1 doesn't have 5V, so I had to be creative to power up the components.​
Also, the Teensy 4.1 does not have enough juice to power al the screens, so had to be creative to external power all the screens. (see the power schema for reference)​
!! Important
Also, to external Power the Teensy, I had to cut the connection with the usb port. Now I can use external power and still connect the USB at the same time. Only USB will not power the Teensy anymore.​
POWER SCHEMA.png

* Screens daisy chain:
Create 3 daisy chain rows for the screens. Make sure you will not exceed the cable length of 30cm per row.​
The connectors have a perfect fit on the screen pins, so you can create a very stable chained connection between the screens.​
The shorter the cable length, the faster you can run the St7735 SPI screens. I am on 38Mhz and my cable is max. 27cm. The max. for ST7735 is​
27Mhz, so overclocking is possible with the Bodmer eSPI libriary (that is what I am using).​
20230228_220322[1].jpg20230424_231532[1].jpg


* 16 channel multiplexer.
The multiplexer is for ALL the switches. But my build has 18 switches, so 2 are connected to a pin on the Teensy.​
Follow this schema to connect the pins to the multiplexer and use 10K resistors for every pin.​
Connected the 4 pins to anolog pins (!! NON PWR management)​
a94d529048ca02a082ae933a5c2f3134c9fa66c0[1].png20230413_003239[1].jpg 20230413_160514[1].jpg


* Connect Screens, Switches and components
Follow the pin schematics to connect. This is my schema as my layout for the build.​
The digital clock has a cell battery, connect it to the VBAT and GROUND and it will work instantly.​
Teensy pin connection SCHEMA.png



* Software:
Arduino IDE V2.1.1 (works best for me)
Teensyduino V1.57 (Other versions conflict with the MUX and TFT libriary)

You will need these libriarys for the components and software to function correctly
  1. AxeFxControl from TysonIt
  2. Bodmer TFT_eSPI-master
  3. MUX74HC4067-master
  4. SD
  5. hd44780


What can you change yourself in the layout configuration of the peddleboard:
[coming]
 
Last edited:
Looking forward to seeing Teensy version report here. I'm designing a new enclosure.
Hey there

I can recommend the hammond enclosure, its aluminium and very easy to handle with a jigsaw.

Also, one large hole in the middle of the screen square and then jig your way to the corners is more sharp then what I did. My approach whas a hole in the corner, but that is not "the way" 😅

20230226_133504.jpg

Cheers
 
Finally have my build up and running, used it as a Teensy beta subject with Axelman8's extensive help!. Also using a Seeed Studio XIAO to run the neo-pixels (for the scenes). It works great with my FM9, probably will have that on a riser in back. Coming from a full blown double expanded CAE controller you can never have too many switches LOL. The RJ45 on the back is another breakout for 6 more satellite switches. The top plate was from sendcutsend, the enclosure is a small Hammond the I cut apart, also, I have Rivnuts attaching the top to the enclosure. Lots of work all in all, but very rewarding in the end!

 

Attachments

  • IMG_7375.jpg
    IMG_7375.jpg
    725.8 KB · Views: 83
  • IMG_7329.jpg
    IMG_7329.jpg
    537.8 KB · Views: 81
  • IMG_7273.jpg
    IMG_7273.jpg
    479.1 KB · Views: 82
This is great, well done!

Are you considering making any of these for sale? I may well be interested.

I don't have the time to learn and do everything you've accomplished here. (I am a programmer by trade, and I've designed and built some DIY microprocessor-based music gear in the (distant) past, but still.)
 
This is great, well done!

Are you considering making any of these for sale? I may well be interested.

I don't have the time to learn and do everything you've accomplished here. (I am a programmer by trade, and I've designed and built some DIY microprocessor-based music gear in the (distant) past, but still.)
Hey there

Thanks for the reply on the build 🤘.
I`m not in it for the sales, but I see that as a big compliment that you would be interested in buying this controller.
This started as a project for me to have a controller doing stuff that I like it to do.

This community gave me the tools to build that controller, I just used what was allready there and created some functions around it.
The reason I could not sell any of it is because the biggest part of the working controller is not my intellectual property.

Its really not that hard to build. I managed to do most part solderless by using clamped connectors (screens and footswitches) that saved me somuch hours of soldering and if I had outsourced the cutting of the hammond than buildtime would also be decreased by 8 hours.
The hardware and schematics were the biggest challenge, but that is all figured out and the software is working.

-> I do have the working prototype with the arduino Due (wood top). I could sell it for the hardwareprice would be around 250 euro's.

Anyway, it would not be a business for me selling peddleboards but if I can help you to have one of these, give me a DM

Cheers 🍻
 
Last edited:
The reason I could not sell any of it is bacause the biggest part of the working controller is not my intellectual property.
If you’re talking about the AxeFX library, it’s open source, so go for it! But I understand not wanting to sell. Support is the killer.
 
If you’re talking about the AxeFX library, it’s open source, so go for it! But I understand not wanting to sell. Support is the killer.
Yes I'm referring to your libriary man, its so 👌 . I still dont get it how to ramdom start a callbackfunction like for effects haha 😅 but it works.

Cheers 🍻
 
Yes I'm referring to your libriary man, its so 👌 . I still dont get it how to ramdom start a callbackfunction like for effects haha 😅 but it works.

Cheers 🍻

I assume you're calling Axe.update() first thing in the main loop() function? You probably want to call registerEffectsReceivedCallback().

The philosophy is that you register which pieces of information you are interested in, and then just call update() in the loop. That will read from the AFX and notify you of what it received.

Do you want to share the code so I can check what you're trying to do?
 
Worth mentioning: in setup(), register your callbacks, then call Axe.requestPresetDetails() last, to get the initial preset data. Then it will listen for the Axe to tell us about program changes (if you have that turned on in AFX settings.) Otherwise, you can call refresh() anytime to read the preset details again.

By default it won't fetch effect details, you have to call Axe.requestEffectDetails() manually in your main code. If you want to fetch the effects every time you fetch the preset (either when the axe tell you it's changed, or you call refresh() yourself), then call Axe.fetchEffects(true) in your setup() function. This will fetch effects along with the main preset. This takes a tad longer which is why it's off by default.
 
Finally have my build up and running, used it as a Teensy beta subject with Axelman8's extensive help!. Also using a Seeed Studio XIAO to run the neo-pixels (for the scenes). It works great with my FM9, probably will have that on a riser in back. Coming from a full blown double expanded CAE controller you can never have too many switches LOL. The RJ45 on the back is another breakout for 6 more satellite switches. The top plate was from sendcutsend, the enclosure is a small Hammond the I cut apart, also, I have Rivnuts attaching the top to the enclosure. Lots of work all in all, but very rewarding in the end!

Love seeing the PixelStomps in action! Did you use a MIDI CHIP for the midi io?
 
Love this thread, this is HOLLY powered by a teensy 4.0, it has 6 monochrome oleds, 6 footswitches with neopixels (pixelstomps) usb midi, serial midi, 2 tactile buttons, 6 3mm leds, expression/footswitch jack, usb host midi (for my ax8) and BLE using esp32 to convert BLE to serial and vice versa, i run BMC on it so i can edit it on my computer.
 

Attachments

  • IMG_4551.jpeg
    IMG_4551.jpeg
    870.3 KB · Views: 37
  • IMG_4553.jpeg
    IMG_4553.jpeg
    736.5 KB · Views: 35
Love this thread, this is HOLLY powered by a teensy 4.0, it has 6 monochrome oleds, 6 footswitches with neopixels (pixelstomps) usb midi, serial midi, 2 tactile buttons, 6 3mm leds, expression/footswitch jack, usb host midi (for my ax8) and BLE using esp32 to convert BLE to serial and vice versa, i run BMC on it so i can edit it on my computer.
Holy !!!! I understand why she is called HOLLY its an amazing piece of gear. Really great build very professional

Cool that you chime in @Nero .. Ive been reading and trying all your shared code for the AFXII before I converted to the III.


Cheers 🍻
 
Really simple DIY solutions are out there

See this 2 button TRS solution, easy and confortable without any microcontroller or programming needed.


Cheers 🍺
 
Back
Top Bottom