By a long shot.
I wasn't sure if a total sandbox environment was the right thing to do, but when I stepped back and looked at what I needed it was apparent there were actually two systems that needed developing; the low level routines in the hardware abstraction layer, and higher order routines that called them. Rather than fight with yet a shim between them, I decided to just use go.
After looking at the architecture a bit closer, it was also apparent that with just a few channels and a few support functions I could pretty much get what I wanted anyway.
I then started the job of coding a framework, and realized just how big a job this is... but if I stick to the 'keep it simple, stupid' mantra it shouldn't get out of hand.
Now to take a short break and get the USB audio working on the Beaglebone Black, so the rover can blare out 'Ride of the Valkyries' as it roves along...