The idea for the scalar glove came from synergy. I was already moving the fingers of my left hand in time with the music as I played the guitar, so if I could capture that motion and turn it into an audio controller, I would be gaining a totally new capability at almost no cost (my dexterity isn’t as good when I’m wearing the glove, but I’m working on it). This has been a lot of my approach to designing my gear. I like to dance, and if I could translate certain types of movement into sound, I could incorporate that into my performance.
Lately my design considerations have become more about seeking out and plugging holes (that’s what she said. Or what he said, maybe). Now that I have everything working together, I’ve started to notice opportunities for upgrades, because I notice the absence of certain elements. I’ve implemented two of these since the last write-up of the vector glove, and for some reason I want to keep this blog up to date even though I expect maybe three people ever will read it, so here’s this post.
Inverted Y and Z axis
I’ve discovered that when I’m playing the guitar with the vector glove, the Y axis is always nearly maxed out. The nature of CV control is typically that the amount of an effect increases with the voltage; if I use the Y axis to control, say, distortion on a voice, then the distortion will always be extremely heavy while I’m playing. This can sometimes compete with the sound of the guitar.
However, it offered a clear opportunity. If I wanted an effect that would only happen when I wasn’t playing the guitar, the simple answer — using almost entirely code I’d already written — was to offer an output that was an inverted version of the Y axis. I could use this -Y CV source with a VCA to only allow a particular voice through when it wouldn’t compete with the guitar, or to send a clean signal while I was playing but a distorted one otherwise, or any number of other things.
While I hadn’t recognized a particular need for an inverted Z axis the way I had with the Y axis, I decided to implement one anyway because it seemed cool. I considered doing it for the X axis as well, but I’ve found, in general, the X axis to be the least useful, and I thought I could use the hardware for something better.
When I initially designed the vector glove, I soldered six different DACs, intending to use them for X, Y and Z orientation, and X, Y and Z acceleration. In my initial tests I found the acceleration controls to be unintuitive and difficult to calibrate, so I scrapped that part of the design and instead built acceleration into the orientation parameters. This meant that after implementing the X, Y and Z axes, I already had all the hardware available for three more CV outputs.
Two of those I used for the -Y and -Z axes I described above, but since I decided against using -X, that meant I had one remaining output. I decided to use it to create an acceleration-triggered gate signal; if I use it to control a VCA (which I usually have), it means I can turn a sound on or off with, literally, a flick of my wrist.
I decided to use acceleration specifically along the Y axis, because with practice I discovered that one was the easiest for me to control. It also requires a calibration period; when the glove is first powered on, the first five seconds record the acceleration data and set the threshold over which the gate signal is triggered. Reaching that level of acceleration (positive or negative) will turn the gate signal on; doing it again will turn it off.
The clock on the Arduino is quick enough that I had to add an additional check — after this gate is triggered either on or off, it waits for half a second before it accepts another trigger. This is to ensure that each individual motion is only read by the software once; otherwise it would “flicker” in time with the clock (much too fast to actually be heard) and then finally resolve to either on or off depending on the number of clock cycles that my hand was speeding up or slowing down for. Obviously that’s not useful, hence the timeout.
The calibration period for the acceleration is a little annoying and I want to add an LED that turns on during it and off afterwards. That’s probably the next thing I’ll do, and after that I’ll be done with the vector glove for a while.