BeatKnit: A Knitting Machine Rhythm Sequencer

February 02, 2017
Category: Projects

Collaborators: Kevin Ta, Joshua Horacsek Tools: Unity3D, Node.js, Leap Motion, Vuforia, Arduino, OpenCVSharp

Abstract


Playing BeatKnit. A player runs the carriage back and forth to play the desired rhythm. Meanwhile the player uses their other hand to play a Therimin instrument.

Knitting machines often output knitted designs and patterns through a series of strokes on a carriage. But what if you could make music and knit at the same time? Introducing BeatKnit, a novel interface for interacting with the Knitting Machine. Using the weight bar, a set of weights are hung at specific intervals. Each weight represents a different instrument in a drum kit, such as kickdrums and cymbals which are represented in both color and icon. With 7 columns we can effectively have 4 complete measures on a complete back and forth stroke. Because it is difficult to change weights while playing and running strokes requires only one hand the player can use their other hand to control a theremin like device. Together BeatKnit is a musical instrument that augments hybrid fabrication of knitted objects.

Originally inspired by the _Bubblegum Sequencer_

Sequencing with BeatKnit


A player setting up a rhythm to play using the Rhythm Weights.

To make a rythmn with BeatKnit, we use weights on the casting bar of the knitting machine. Using one of four types of weights (cymbals, snare drum, kick drum, and hi-hat) players hang weights in one of seven columns. A complete forward and back stroke creates 4 measures of notes. Once the weights have been hung, a player may optionally cast-on a knitting project with the machine and begin playing the instrument. Using one had to move the knitting carrage back and forth, the player can control the rythmn’s tempo. Using the other hand the player can use the Theremin camera to play the Theremin. While the weights actually serve to give downward force while knitting with the machine, we thought it would be well suited to allow sequencing. This would eventually allow us in future work to display sequences on the knitted item.

Tracking the Weights

Tracking the weights was the most challenging part of the project. We tried several methods and ultimately settled on the most reliable of the three: Resistor Differentiation

Method 1: Initial Attempt with AR


An initial attempt at using augmented reality tracking. The approach proved to be too difficult to reliably track the rhythm weights.

To track the markers, we initially tried to use Augmented reality to track the markers. Using Vuforia and a webcam we found some mild success with using Vuforia’s Frame Markers (depreciated) to track positions of each type of knitting weight. This ultimately did not work reliably due to poor lighting conditions under the table and that the tracking only supported a mere 10 Frame Markers at a time in the video feed. Not to mention, the weights always move downwards as the machine knits (and plays).

Method 2: Retroreflective Markers


A rhythm weight’s position can easily be tracked if it had a retro-reflective marker. However this did not enable the camera to differentiate the type of weight used.

Another promising method to track the rythmn weights was through retroreflective markers. Using an IR camera like Kinect v2, we could track the position of the marker in the camera view. However the problem with this tracking was that it did not allow us to determine the identity of the weight as one of the four types. Even if we did use something like color to differentiate the different weights, would mean making much larger rhythm weights than what we envisioned.

Method 3: Resistor Differentiation


A rythmn weight. Normally used to cast on a Knitting machine. This weight has resistors that help the system differentiate it from the other weights.

We ultimately decided to go with using different resistor values on each weight to differentiate. The idea is that each type of weight can be given a unique resistor value. When the resistances are added together they create a unique sum. Thus we were able to deduce any combination of weights single column. This proved to be much more reliable. We were able to create as many as 20 weights simultaneously.

Video Demo