Update: Images from this post have been lost
Last week, we got all the electronics and software finished. This week, we had a few finishing touches to complete, namely:
- 3d Modelling
- Assessing issues
- Addressing issues
- Identifying problems and fixing them
For the case, we started development on the online 3d cad software called TinkerCad. This involved measuring out the existing board we had soldered together and designing and iterating on a model. We researched guitar neck shapes to make the most ergonomic design we could, while bearing in mind that the fact that the Buttery Biscuit Bass (as we're calling it) is a relative of, as opposed to a clone of, a guitar, and thus will have some differences in design. The neck is significantly wider than the average bass guitar, a design choice we made to improve the feel of the object, to give it more substance. This maintains the aesthetic we were persuing in our choice of buttons, sharing the strong tactile attributes of the buttons. Initially we had decided to slide the PCB into its housing, however this posed a major problem with additional wiring inside the case. We decided to go for a "sandwich" design because not only did it allow for the wonderful addition of elastic bands, which genuinely add majorly to the design of the project, but it allowed access to the internals of the project easily without requiring us to unglue the top of the case.
There was a video of the 3d print happening, but it's gone now.
The first print iteration identified some problems to us - the wall through which the USB connection to the Arduino Micro was too thick. We remodelled, and were prepared to start the new print, but we discovered that serendipitously the conversion from model to printer instructions with the supplied infill settings meant that internally the wall was perfect to cut away at to be left with a solid holder for the USB cables. We decided to keep our printed models, and adjusted the design accordingly.
On the elastic bands...
The elastic bands are an integral part of the design of our product. While they hold the case together, they provide excellent grip on the back of the case which really helps the user when they're reaching for a far away fret (that is to say, a button), and they also provide a nice cushion for when the user presses a button at the side - rather than have a hole there, or some hard ABS plastic, the user has a nice soft flexible base that they can use to mentally identify when they're slightly off on a button, which is very very handy when learning to play the instrument without looking at it.
The software was quite straightforward to implement - we essentially had to map voltages recieved on analog inputs to MIDI pitches. We achieved this through binning the voltages into specific notes, and when a voltage was between the thresholds of a bin, that constitutes a note. We then output MIDI noteon and noteoff signals at each change in voltage on a pin. We realised that the while the Arduino Micro (which we had to use because of our form factor) provided MIDI host functionality, we couldn't get it to enumerate as a MIDI device, and would therefore require a small converter daemon to be running on a computer to bridge the data from the Arduino across to a DAW. The fact that we were already writing software for a computer meant that we had quite a lot of scope to do extra things.
We used Max/MSP to develop the software, because it facilitated rapid addition of extra features. We initially built the synthesizer insde of Max/MSP itself rather than bridging the MIDI signal. A bespoke synthesiser specifically for this project was excellent for us as we were able to see what was happening internally and debug more easily. Once we had the notes working, I was able to write a little additional preprocessor for the MIDI output stream. I was able to hook up the Max patch to the Propellerhead Reason DAW and jam along with a backing track. Here's some video:
I look forward to presenting this project in the morning - I'm very proud of how it turned out. It's excellently playable, very intuitive, and hackable which was one of my personal goals.
-- Hugh Rawlinson