Mechaduino
As a part of my master's thesis research, I revived an obsolete open-source haptic controller called the Mechaduino. I used the Mechaduino to create a custom haptic device, producing force feedback effects on a rotary encoder (for example, simulating the feeling of detents or a spring as you turn the knob).
For this design, I ported the original Mechaduino schematics from EAGLE to KiCad and created a new PCB layout from scratch. The device features an STM32 microcontroller, a magnetic encoder, and a motor driver, all integrated into a compact board to fit onto the back of a NEMA 17 motor.
More details can be found at the GitHub repository.
SWITCH8
SWITCH8 is a digitally-controlled analog audio multiplexer, designed for client Flock Audio as a part of my undergraduate capstone project. It features eight stereo inputs, one stereo input (in both TRS and XLR format), digital control and display, and entirely analog signal routing. Our prototype was later adapted into Flock Audio's SWITCH (currently commercially available!).
For this project, I designed the entire four-layer PCB in KiCad, including the power supply, MCU circuitry, and the analog audio path. Thanks to great group members and solid coordination with the firmware half of the team, we actually managed to deliver a fully functional prototype at the end of the semester!
Tape-Echo with Physically Informed Tape Modelling
A MATLAB implementation of J. Chowdhury's tape machine model, completed as my final project for MUMT 618 (Computational Modelling of Musical Acoustics) at McGill. The model draws on the physical principles of magnetic recording to reproduce tape saturation, wow/flutter, and loss effects resulting from magnetization and playback. I combined the tape machine model with a delay-line-based echo function to create a tape-echo effect reminiscnent of the Roland RE-201 Space Echo (or at least, that's what I was going for).
I have a real affinity for cassette as a music format. More than CD or vinyl, I think it is defined by its limitations, which have only become more endearing since its displacement by CD and later streaming. As Brian Eno said, "Whatever you now find weird, ugly, uncomfortable, and nasty about a new medium will surely become its signature". This was an homage to the cassette tape and all its quirks.
Read my paper on the project, which describes the model in much greater detail, here.
TheraGlitch: Gestural Control of Glitch Music
TheraGlitch was a digital musical instrument I developed as my final project for MUMT 620 (Gestural Control of Sound Synthesis) at McGill. Inspired by Kim Cascone's paper exploring interfaces for glitch music, I created a Theremin-like instrument which allows users to control pitch, volume, and glitch effects through physical gestures (namely, distance sensing, force sensing and striking the instrument respectively). Under the hood, I had an ultrasonic distance sensor, force-sensing resistors, and an accelerometer connected to a Bela microcontroller running a custom Pure Data patch for low-latency embedded audio synthesis.
My idea was to synthesize (pun intended) class readings with my interest in experimental electronic music. I drew on metaphor-guided DMI design by mapping glitch control to striking the instrument, tying sound-degradation of the instrumental-frustration. And the enclosure references famous guitar-bashers The Who.
You can read more about the TheraGlitch here.
Broad-Band Noise Suppression Using Short-Time Spectral Attenuation
Another MATLAB implementation, this time of a noise suppression algorithm based on short-time spectral attenuation, done as my final project for MUMT 605 (Digital Sound Synthesis and Audio Process) at McGill. If we take the STFT of a noisy audio signal and compute the spectrum of a sample of just the noise, we can recover a denoised signal by applying a Wiener filter and attenuating the noisy signal's spectrum in the time-frequency bins where noise is dominant. For as simple as the algorithm was, it worked really well, especially for speech and single-instrument recordings.
You can probably see a trend in my grad school projects. I like lo-fi music. Which maybe makes this project sacrilege. I even denoised Daniel Johnston's "Walking the Cow" for my demo, and inadvertenly removed some of the soul along with the noise. One day I'll write some big rambling essay about hardware limitations and lo-fi aesthetics...
Read my paper on the project here.
Modelling Cognitive Radio in MATLAB
As a part of the Dean's Research Award program at the University of Alberta, I developed a cognitive radio simulation in MATLAB. The simulation used an energy detection algorithm to identify vacant frequency bands in a noisy environment and transmit data within them. I evaluated the performance of the system by varying the transmit signal-to-noise ratio and interference power and observing how the bit-error rate was affected.