So I had a bit to work on my build over the past week. I'm about finished with the sheet metal CAD. It's directly modeled after the RJM Mastermind GT16. This was/is a great chance for me to scratch multiple itches in terms of electrical, mechanical and software creativity. Looks like the case will be ~$80USD to get made which isn't terrible. I resized the enclosure to a 17 inch width, 12 inch height so it could fit inside of a rackmount tray. I use an 8U Gator case with wheels to transport my rig, so this means the controller can sit on the bottom tray for transport like my old GCX used to.
View attachment 117106
Displays will be connected to a single PCB per row. So each PCB can connect either 6 1.8 inch displays and footswitches or 4 1.8 inch displays and a center 3.5 inch touch display. This limits the number of parts/PCBs to a single part number for all of the rows and can be fulfilled in a single JLCPCB sample order. Yay savings.
Each display row will be connected via ribbon cable to a control board that also hosts the rear I/O panels. The rear I/Os are your standard EXP1-4 jacks, USB type B port, midi in/out/thru, power (with reverse polarity protection) and aux foot switches.
The central processor is an ESP32 running at 40MHz. SPI bus clock, master and slave data are controlled directly from the ESP32. CS lines are strobed via I2C and MCP23017 I/O expander chips. Each row board has its own I/O expander that handles 6 CS lines and 6 footswitches. I2C addresses are set via dipswitches on each board. That means that each ribbon cable merely carries MISO, MOSI, CLK, GND, SDA and SCL. Power rails will have their own dedicated connector to keep noise down (and allow for thicker gauge cable).
The touch display will be powered by a raspberry pi pico and will also be on the SPI bus, receiving commands from the ESP32.
Testing the Software
While I'm waiting for my displays to come in and doing final fitment tests before I send the metal out for fab, I've been testing the midi interface between my PC and the Axe FX III. I designed a WebMIDI-based editor that allows me to test the logic both in the foot controller program as well as the communications back and forth with the AxeFX III. While it's in JavaScript, it's not all a waste of time. The foot controller will all be C++ code, BUT this interface can later serve as an editor tool much the same way as Axe Edit or the RJM editor works. Plug the USB into your computer/foot controller, edit presets in the app, flash them to the board.
This interface serves multiple functions.
1. Mostly testing the logic/button presses/ergonomics with how I want the board to function
2. Testing the SysEX messages as well as standard midi commands going back/forth to the Axe FX III unit.
3. Sniffing the communications/midi data being exchanged between AxeEdit and the Axe FX III. This is useful for debugging.
I've got presets, scene control, tuner engagement, instant access effects, and expression emulation implemented. I still need to implement tap tempo, and I'll be experimenting with split device controls so I can control both my AxeFX III and my DAW (reaper) with one board, most likely using the buttons from unused scenes/FX.
View attachment 117107
All in all, a great week of productivity and this has been fun to work on thus far!