After seeing this post I decided to put together my own pedal board for controlling my Axe Fx III. Rather than having a single screen however to display current preset information I wanted a screen per button to provide context sensitive information on each function.
The design includes:
Layout 1
Layout 2
The Arduino Due was chosen due to the number of pins available, support for controlling many SPI devices concurrently, increased clock-speed over the Arduino Mega.
A standard hammond enclosure was used, CAD designs were developed using FreeCad and available under docs. Note these designs were used to get a sense of proportions, layout. The designs aren't comprehensive and the final layout was not millimetre perfect.
The software was written from scratch with the exception of the great Tysonit library and included Arduino libraries.
Current tweaks to out of the box software:
NOTE: Some of the below are still in development (marked in italics)
Button presses signalled by interrupts - priority given to recording presses rather than screen updates / sending axe messages.
A tape data structure is used for recording button events. This just creates a loop so if more button events occur in between processing cycles than we can fit in memory it will write over the earliest recorded events. This gives preference to processing the last action rather than dropping the latest actions if there is overflow as would be the case with a straight array implementation.
Core domain project is not coupled to Arduino or Tysonit. This allows for unit testing of the majority of the solution. The unit tests need to be extended further.
After cloning the repository, use the following scripts to work with the program: build.ps1 (does a single build of the code, no arduino needed) upload.ps1 (this will build and upload to the arduino. It will ask you to select the com port used by arduino) monitor.ps1 (you can run this independently of uploads to read the log output from the arduino)
Please visit the Build Tutorial for information on how to construct your own system For details on how to work with the software visit Software Tutorial