Design Goals - AudioMorphology/waft GitHub Wiki
Design Goals
I decided to develop this controller having come across a demo on the Adafruit website of their VL6180x board and, as Adafruit often do, they were also giving away example code for controlling it from an Arduino over the I2C bus.
It seemed to me that something that could measure distances accurately up to a range of around 20-30cm could be used to translate distances into voltages that could be used to control various aspects of an analogue synth.
I hacked together a simple proof of concept on breadboard, and a video of that effort can be found here: First Prototype
Following that, I moved to strip board, and did a bit more work on the buffering and interface circuitry: Second Prototype
I wanted it to be simple to use and, for my own purposes, simple to develop, so I chose to base my hardware design around the widely-available (and cheap) Arduino Nano.
The VL6180x chip itself is only available in a tiny SMD package, which is difficult for hobbyists to solder. But, fortunately, a number of small pre-populated boards are available (including the original one from Adafruit, which prompted this development).
VL6180x boards are available from various different sources, but 3 stand out as being fairly similar in function & interface characteristics, though having very different pinouts:
The eBay boards are the cheapest, coming in at around $5, though you tend to have to suffer the inevitable shipment delays from the Far East.
With a bit of experimentation, I decided I could probably lay out the circuit boards so that they could accommodate any one of these boards, whilst leaving the actual VL6180x chip in approximately the same physical position on the board. Neat, huh?
In order to keep the component count low, and the hardware design simple, I opted for a couple of on-board jumpers to select functions that don't change very often, so are very much set-and-forget when the module is installed in a rack. These are:
* Direction (whether motion towards the controller raises or lowers the output voltages)
* intonation (Equal Temperament vs Just Intonation)
The other design choice was to use a 10-Way BCD switch to select quantization scales. This saves a lot of space, though requires the switch to be set using a screwdriver, rather than fingers. Again, I took the view that the quantization scales weren't something that were likely to be changed on-the-fly during a performance, so I could afford for it to be a little fiddly. I also opted not to have any visual feedback for the currently-selected quantization mode. Again, this was a conscious design choice in order to simplify the hardware design, and reduce clutter on the front panel.