Music 220b Homework 3, Winter 2022
Super Looper
Ryan Wixen

Super Looper:

Super Looper.mp4
Super Looper.ck

Description and instructions:

Super Looper is an interactive drum machine that superimposes simple loops of different lengths to create a complex, polyrhythmic texture. It is controlled in real time with the keyboard. Each row of keys corresponds to a different loop. Starting from the leftmost letter in a row, the keys correspond to the sequence of beats in that row's loop. Hitting a key enables/disables the corresponding beat in its row's loop. Holding down a key before releasing increases the velocity of the enabled note. The lengths of the loops are set with the pattern variable before the program is run. The tempo can be controlled with the up and down arrow keys.

Number keys 1 through 4 trigger short melodic motifs. Keys 1 and 2 play the same line in ascending and descending order respectively, and you can restart it or change its direction in the middle of the line by pressing the same or the other key. Keys 3 and 4 play two independent, higher lines with more rhythmic intrigue. Lastly, key 7 enables/disables a subtle synth chord progression.

Intention:

I love polyrhythms, the rich, mathematical textures that arise from superimposing multiple simple rhythms with distinct but related rates or periods. I am always fascinated by these simple constructions and wanted to take the opportunity with assignment to make an instrument that facilitates making music with them. So when I thought about, loops and patterns in the context of a drum machine, I had the idea to center my project around loops of multiple lengths. When considering the human interaction design component of this project, I asked myself what would be the easiest way for a user to program these simple loops. Considering that the structure I envisioned consisted of a sequence of beats that could be enabled and disabled, I realized that the rows of keyboard keys mapped nicely to this musical structure. I first programmed just one row and had tremendous fun just playing with the kick drum pattern of 4 beats, which is how my final piece begins. My instrument became even more exciting to play when I added more rows playing other drums with different numbers of equal beats. It is simple to program any polyrhythm I could imagine, but I found it was even more fun to alter the rhythm real time. The instrument is expressive in its response to the user's input, allowing the user to express an idea of a certain rhythmic shape without giving them full control over where that pattern happens. The loops of different lengths make the pattern less repetitive and more interesting, making the listener work harder to pick out patterns.

At the checkpoint, I knew I wanted to add harmonic or melodic element, but I wasn't sure what. The brainstorming we did in class helped me think about what would complement my existing interface and instrument. I decided to make something that responded as well to my excited key spamming as my drums did. So, I chose to use a couple of short, melodic motifs that would not clash with each other. To make them respond expressively to the user, I made them restart or change when a key is pressed again, allowing the user to change to pattern of the melodies, giving them control and creative leeway. To build my piece further, I wanted to add some subtle, non-imposing chords. (I made a typo one one of the notes and I liked it much more than what I had intended. This is a good part about coding music.) I experimented with making the chords on when a certain key is pressed and off when it not pressed, but this sounded to weak and felt awkward to play, so I went with the simple on/off trigger, which worked much better for how I wanted to use the chords.

Lastly, I recieved the excellent suggestion from Ge to incorporate dynamics into my drums. I realized how much this would aid the intrigue of my piece and decided to implement it. I figured that an emphasized note might be one that a player might spend more time thinking about than other notes, so I decided to make a key being held down for longer increase the velocity of a note. This interface forces the user to be intentional about what notes they accent and makes it hard to overuse the accents.

I am proud of the video I produced as the final presentation of this instrument. It was important to me that the keyboard interface was viewable, but also that the control monitor could be clearly seen. It was hard to accomplish both of these goals at once with a camera, so I turned to screen recording. I happily realized that I could record the display of my computer's built-in camera along side my control monitor. However, directly recording from the camera flipped the video horizontally and I found it hard to get a good shot and a playable setup. I had another idea to use a mirror to show my keyboard to my computer's built-in camera while it screen recorded my performance. Though a little uncomfortable to play, this worked terifically, and I liked that you could see my keyboard the right way as well as my face. However, my computer was overworked by the screen recording, video inputting, and Chucking, so during my performance, ChucK started to lag. Luckily, the audio that ChucK recorded came out perfectly, so I was able to just speed up the video to somewhat match the recorded audio, and I am very happy with the final product. My instrument is really fun to play!