I remember my first time learning about Shift at the club fare. I had tried to start a sort of product design group with a few friends before I had joined, which failed before we had gotten anything done. Needless to say, I’m not much of a leader, nor do I really have the drive to run an organization. I’m just great at putting my head down and doing my own thing.
When I heard that Shift had their own house, resources, and cool people (like me of course), I thought I’d give it a go. So I trudged in the snow half a mile off campus to get interrogated by Mr. Michael Rigney himself. And I blabbed on for half an hour about this mixed reality boxing robot game that I was trying to make, which never really panned out, but I guess it was enough to get me in.
Why this project?
I’ve spent the last two and a half years of my college career making pointless robots and electronic doo-dads, so I thought, “What better way to end it?” I took an electronic music production class my junior year, and instead of making fire tracks right off the bat, we were subjected to physics lessons and forced to learn about sound waves. I was intrigued to find out that me that sound waves can have different forms, which sort of emulate their sonic qualities. It makes sense that a saw wave is buzzy and jarring like a saw.
I thought that in a similar vein, the physical form of an object could emulate its reproduction of sound. There’s something philosophical about it...
I thought I could make a sharp object that makes saw waves, a rounded one that makes sine waves, and so on so forth. By interacting with them (tilting and shaking), you’d be able to modulate different qualities of the sound, like volume or frequency. Furthermore, by using two at once, the wave forms could be combined in some way.
What needed to be done
- use radio frequency (RF) transceivers to communicate between blocks
- read gyro/accelerometer and send via RF
- use sensor readings to output modulated sound
- reproduce waveforms via arduino
- develop communication protocol between blocks
- create physical blocks
What was the most challenging part?
The most difficult part was figuring out the software. Learning how to pack and unpack gyroscopic readings as a char strings over RF was confusing and took a lot of tweaking. Then, I faced the problem of modulating waveforms with the arduino. It took a while to learn the capabilities of the arduino, and the limitations of pulse width modulation (PWM). But a few libraries I found after some intensive digging showed me that there really isn’t much you can’t do with PWM (there probably are things you can’t do). One of them allows you to control the volume of the output tone, while the other allowed me to create analog waves using only one pin. This was crazy stuff! In both cases, I had almost given up, as the only alternative would be to build some complex DAC to control the output.
I’ve still got a long way to go, but things are looking promising. My next move is to integrate the libraries into my main program, so that I could modulate the waveform in addition to volume and frequency using the gyro/accelerometer. Once COVID passes by, I’ll be able to build these into actual playing blocks. To look at my references and a more detailed breakdown of my process, go to my notion page where I’ve attached more photos and videos. Also feel free to check out my other work at my website!