21/6/2011
After some months of work I've finally got my Axefx foot controller kit up for sale. I've updated the index page to have both software and hardware sections... because apparently I do hardware too now :)

20/6/2011
So in the last few days I've finished the controller test
board, ironed out a few bugs in the firmware code, hooked up
the midi ports and tested that they are sending and
receiving
the right data. The board looks like it's doing all the
things it's meant too. Which means I can now start moving
ahead on making the kit available. What's left to do is
write
up the documentation of how to build a kit from the parts
and
PCB and work out the business details, like shipping
weights/costs and a purchase page.

Today I also printed out the new graphics that are laid out
for the Hammond box and checked them for accuracy.

It's sitting next to the prototype box, which is a different
aspect ratio. The plan is to get someone to print it out
onto adhesive backed vinyl and then stick it straight onto
the aluminium, cut the holes out with a hobby knife and then
poke all the pots, switches and LED's through. There are
some more knobs coming from the UK for both my own
controller and the kits.

16/6/2011
Last night I got some time to work on the MIDI controller
testing. The problem I was left with is that the parameter
knobs were not working, so I started with printing out the
current value for param0 on the LCD and it was always 1023
(the maximum value) no matter what voltage was supplied on
the input pin. So I teared down all the setup code and
checked that I was doing everything right in the software...
which after an hour or so of re-reading all the docs... yes;
I'm doing everything right. Ok that leaves hardware. So I
measured the voltage on the input pin again... yup that's
right too. *sigh* Then I notice there is a "VREF" pot on the
AVR stamp... wonder what that does? Tweak tweak... oooh look
the value on the LCD is finally changing! Seems that VREF
pot on the stamp is controlling something to do with the way
the AVR reads values on it's analog in pins, so I'll have to
write that into the documentation to set correctly when
assembling the kit. So hurrah the parameters are all working
pretty much correctly and I can test the new menu code on
the hardware. I'm getting close to being done with the
testing. All that remains is hooking up the MIDI sockets and
checking the right messages get sent and received.

14/6/2011
Last night I investigated whether I could compile and flash
the ROM from Windows7 64bit. The compiling side was fine, I
could build the binary but the program I was using to flash
that binary onto the AVR chip via the parallel port doesn't
work on Windows7-64bit. Which isn't to say you can't do AVR
development on Win7 but it just means that different
software is needed. On XP I've been using PonyProg2000 with
a lot of success.

On the hardware front, I wired up all the pots to the test
harness and checked they were applying the right voltage to
the analog pins. I've soldered those onto the PCB traces and
not the pads because it's a pain removing wires from pads
and then trying to get the solder out and put something else
in.

Software wise I have re-written the menu and not everything
is hooked up at the moment. So I spent some time uncommented
some sections of the controller code and got them compiling
with the new menu layout. The structure of things in memory
(both RAM and EEPROM) has changed to make things more
flexible and those changes need to be propagated out to all
the rest of the code. (Parts that didn't compile originally
have been commented out). Also I put together a Visual
Studio 2005 project for the desktop version of the
controller.

And I'm loving zip ties at the moment... they make things so
much more organized.

7/6/2011
So last night I rewrote the setup menu of the Axefx
Footcontroller software. Basically before it was very
simple, had one level of editing where you could scroll
through all the parameters fairly easily. However you were
quite limited in what you could do with the IA buttons (send
one CC) and knob parameters (send one CC). Also the "Amp
Mode" has hard coded. Also it was hard coded to 3 IA
buttons, not flexible if there were more than that.

The new menu system has much more flexibility. Basically you
have 5 levels of menus, I know it sounds like a lot, but
it's manageable. The first level is simply picking between
the pre-preset settings and the global settings. In the
preset settings, you have 3 sections for the IA buttons, and
the "grouping" setting for making the IA's mutually
exclusive. Inside the IA button settings you now have 2
commands (limited by the EEPROM memory in the current AVR),
where each command (4 bytes) is one of:

So you can do 2 things with any given IA button. Most of the
time you'd want to just use one command to switch a block on
or off. But now there is some flexibility to do more things
if needed.

Now in the global menu there is 3 sections for the different
parameter modes (parameters are the 6 knobs and 2 external
controllers). The modes are "Normal", "Amp1" and "Amp2". In
normal mode the default operation is to send a midi CC
command, with the default settings being the axefx EXTERN1
to EXTERN8 midi CC's. Amp1 and Amp2 mode default to sending
axefx sysex command's that map to the
Gain/Bass/Mid/Treble/Presence/Master for the Amp1 and Amp2
block. That mode change is tied to a 3 position hardware
switch on the box somewhere. Each of those (3) modes has 8 parameter settings, that each have again 2 commands. The
command editing is exactly the same options as the IA's.

Then you also have the Tuner CC and Tempo CC, the midi
channel and the factory reset function. The factory reset
just configures all the IA's for every preset to do nothing
and makes the global parameters do all the default things
for the different modes.

All in all it's now looking and feeling much better. The
hardware testing is coming along nicely. I'm still working
on dialing in the LCD code... it's being a little finicky.
But hopefully I'll get it sorted tonight.

6/6/2011
Tonight I put together a test harness on some proto-board,
using 12 micro-switches to test the functions on the foot
controller board. So far so good, all the parts are working
as expected. The next thing to test is the MIDI input and
output. The next revision of the controller PCB with allow
for connecting to the test board via ribbon cable and IDC
plugs. Which will be much neater than soldering the test
harness in.

Also I've installed a contrast pot for the LCD.
Unfortunately I messed up the trace going to the contrast
pin on the LCD in the PCB design. Not to worry, I've cut
that trace on the PCB's using a dremel which leaves it free
to be hooked via a nearby pad to whatever you'll use for
contrast control. The kit instructions will cover that.

After getting all the buttons hooked up tonight, I tried all
the setup menu functions, like factory reset, configuring
the MIDI channel, changing the IA blocks etc. Then I moved
around the presets, and switched some IA blocks on and off.
Everything worked first time... so that's an excellent sign!

23/5/2011
So all 3 packages for the Axefx controllers have "shipped"
but not arrived. Awesome. The last of the packages to ship
was the PCB's which apparently shipped today, although the
tracking number hasn't shown up on the postal system yet.
And I don't know what the shipping transit windows are
either.

The 3 boxes, are the footswitches, all the electronic
components (inc the AVR stamps) and finally the custom
PCB's. I think at one point last week I had 8 outstanding
orders, including unrelated stuff from ebay.

Things have slipped partly because I took a while to verify
the drill lists and images of the tracks, and made some
minor changes before the PCB's got made. And partly because
the vendor making them took a week longer than they said it
would take from when they accepted payment and the final
design to when they shipped the boards.

While I've been waiting I've started working on a new
revision of the PCB that supports a 40 pin IDC connection
between the main PCB and the switches / LEDs / expression
pots. This is very similar to the setup I used in the
prototype but I think I'll end up using it primarily to test
complete boards. I'm going to make a test harness that just
plugs into the board and lets me test all the functions
without having to solder in all the parts directly.
Depending on the layout of the final enclosure it might be
useful for others as well.

10/5/2011
For the last six months or so I've been building a MIDI foot controller for the Fractal Audio System'sAxefx guitar processor. The Axefx digitally models the effects and amps that guitarists use, but on a scale
that hasn't been seen before. For me the main draw cards were great audio quality, the ability to practice and record quietly (I
have kids and neighbors), and very consistent sound quality in a live setting. Something that I couldn't do with my old tube
amps.

The design of my controller is based around an AVR microprocessor built into a stamp that I bought many moons ago for an economy gauge that I never got around to building. I did however build something useful and
fun with that stamp. There is a long
thread about the various stages in the build process. Which resulted in a plywood prototype that I now use when I play
guitar in a live situation every week or two. It allows me access to the important parameters of the Axefx via knobs and
switches and displays the current state of the settings and parameters on the LCD. All the software running on the
microprocessor is written by me and I developed the support circuit from various information available on the 'net.

About a month ago I switched from building this just for my own use to exploring the possibility of building these controllers
for others as well. In kit form, or fully assembled. A few people expressed interest on the Axefx forums, so I created a PCB
layout and am currently having those printed up (design acceptance and payment happened last friday), I've also ordered
enough parts to build 2 controllers up front. The design can be executed in 2 main ways, as a full foot controller, or as an
amp controller, with reduced functionality. When I get the boards back from manufacturing next week I'll build at least one
for testing the PCB kit out and then I'll be putting the kits and PCB's up for sale on the site. A new hardware section will be
created with PayPal links.

The software that runs on the AVR chip is written in C and has a high level foot controller portion, and a low level hardware
specific layer/API. The foot controller part controls all the functions specific to the axefx, the setup menu and the display of
information on the LCD. The device specific layer is responsible for talking to the hardware, and running the main event
loop. The design is deliberately separated like this so that you can also run the foot controller software on the PC and Mac,
mainly for testing things out before committing it to hardware. It far easier debugging on a desktop computer that
way. Surprisingly this works really well. There are no #ifdef's in the high level code needed to make the 2 systems run, and
they behave exactly the same.