Final Project: Design Your Own

"Sampling Sandbox": a parallel controller-mediated live sampling looper with effects

Max Jardetzky
MUSIC 220A (Spring 2021)
assignment instructions
⟵ back to my portfolio


Final Performance: "Toward the End"

Files: samplingsandbox.ck, towardtheend.mp4, towardtheend.wav



Between the milestone and now, I figured out how to adjust the rates of the underlying SndBufs, which was an element crucial to this performance. I decided to keep the control scheme simple and not add too many superfluous functions.
I completely forgot to use the LPF (on the triggers)! I realize now that I didn't have to use every functionality of the software to make an interesting performance, however.
I tried to get really creative with the kinds of sounds I was recording as well as with how I manipulated them, creating a soundscape without any sense of tempo or tuning.
This performance was really fun, albeit quite weird. Let it symbolize the gravity of the current transition out of the dark times of the pandemic.
Check out the control scheme, and check out my other works from 220b and from 220a.



Milestone 2 (Working Demo)

Files: finalmilestone.ck, milestone2.mp4

For this milestone, I leaned into the third idea from Milestone 1 and heavily refactored my code from Grain Games (my controller-mediated granulation 220B final project).
It is, at its simplest, a live sampler mediated through my Xbox controller that allows me to start and stop recording on the fly and play back the (current) maximum of four files in parallel.
I transferred over the global and local parameter controls (reverb, delay, LPF, local gain adjust/mute toggle) from those of the individual granulators.
Going forward, I need to tighten up the recording and playback logic just a little bit (running into some crazy tolerance bugs with unintended button presses, such as recording before a file has finished rendering out).
I also need to figure out how to implement an interpolated SndBuf rate adjustment (probably on the X/B buttons) which requires me to redo my logic in the loop() function that currently relies on a static playback duration.
I will also need to find a job for the right joystick, as it was utilized as a single-axis grain position randomness adjuster in the last project.
Otherwise, it has been pretty smooth sailing, except for the first couple hours of regular hiccups.


Milestone 1 (Preliminary Ideas)