Wekinator

Cole Sprout
2 min readFeb 22, 2024

--

YOU SHOULD BE STUDYING:

A Wekinator-driven system that pulls the alarm whenever you try to use your phone while studying. Here’s the structure:

DataOSC (iPhone app) → chuck (phone2wek) → Wekinator → chuck (alarm)

DataOSC sends gyroscope data from my phone to my computer. If the (x,y,z) gyroscope coordinates don’t sum to 0 (meaning the phone is flat on the table), an alarm is sounded until they do.

Relevant Code

MAGIC WAND:

A wekinator-driven system that allows the user to control music playback speed and volume with a swish of a finger. Here’s the structure:

VisionOSC → chuck (vision2wek) → Wekinator → chuck (audio output)

I grab the pointer finger (x,y) values from VisionOSC, which are sent through Wekinator to a chuck script that modulates playback rate (depending on x-value) and volume (depending on y-value).

Relevant Code

MAGNUM:

Partly inspired by one of the examples we saw in class, and partly inspired by watching Zoolander the other day, I decided to build a “blue steel”, “magnum” classifier. Here’s the structure:

FaceOSC → chuck (face2wek) → Wekinator → chuck (wek2vid) → Processing

Relevant Code

Reflection:

It took me a minute to figure out how to properly use Wekinator. I had the inclination to normalize my input values (whether that was from VisionOSC or DataOSC) before sending them through Wekinator which would’ve kind of defeated the point of training a wekinator model in the first place. Once that mental switch flipped, I found this assignment fairly intuitive! In my first wekinator, I used a classifier model to determine whether the FaceOSC input was “blue steel” or not. That felt like a good starting point for building a simple wekinator system. After building that, I wanted to try using a regression model to have a bit more fine control of output value. I had the idea of using hand movement to control music playback speed/volume which sounded kinda sci-fi. The result worked better than I anticipated, to be honest. Towards the edges of the screen, the classification gets dicey but otherwise, it’s a smooth mapping between input and output. For my final Wekinator, I wanted to incorporate another device as input. By chance, I found this app, DataOSC, which allows you to send various iPhone stats (gyroscope, accelerometer, compass, location, etc.) via OSC. I have the bad habit of hopping on my phone mid-study session so using my phone’s gyroscope stats as input, I built a system that raises an alarm when you pick up your phone. It’s somewhat effective because I can’t stand the iPhone alarm sound. I’m happy with where I ended up given the time I had but I’d love to push these (or other) ideas further to see what I could build. This was an assignment that I could sit down and tweak forever.

Acknowledgments:

Code was provided and adapted from Ge Wang and GPT-3.

--

--