Daniel Cho

Structural Dynamics / Vibro-Acoustics / Audio Hardware

My interests lie in audio engineering, acoustics, and test engineering, where I apply skills in experimental modal analysis, impact testing, signal processing, and vibration analysis. I'm passionate about bridging the gap between mechanical engineering and acoustics, and I've applied these skills across shock-mitigating and vibration-isolating materials, structural-acoustic testing, and instruments I built myself.

About Me

I am a Mechanical Engineering BS/MS student at WPI with a minor in music, expecting to graduate in May 2027. My focus is on structural dynamics, vibration testing, and signal processing. My thesis, advised by Prof. Zhu Mao, centers on Statistical Energy Analysis (SEA) and Shock Response Spectrum (SRS) model validation. I am also helping to develop a graduate-level course on signal processing, handling the workflow from the experimental setups to the course materials.

This past summer, I was a LADSS Fellow at Los Alamos National Laboratory, where I designed experimental test methodology end to end for soft-material dynamic characterization: instrumentation, compression testing, impact excitation, full-field Digital Image Correlation (DIC), and post-processing to inform finite-element validation on Abaqus.

Previously, I was an undergraduate research assistant on a PhD thesis project studying vibration damping in polymer foams, funded through Saint-Gobain. Under Prof. Mao's Laboratory of Intelligent Systems and Structural Dynamics (LISSD) at WPI, I led guitar modal and acoustic analysis using impact hammers, modal shakers, accelerometers, and a Laser Doppler Vibrometer (LDV) to understand how build quality, body deformities, material, and string price point affect acoustic quality.

Aside from my work in experimental modal analysis and vibro-acoustic testing, I lead the Air Piano project, a gesture-controlled MIDI instrument that started off as a passion project then became my senior capstone project.

Past Projects

LANL LADSS Fellowship

Role
R&D
Team
3 Fellows, 2 Program Leads, 5 Mentors
Timeline
Jun 2026 – Aug 2026
Tools
DIC (Vic-3D), NI PXIe, Abaqus, MATLAB/Python

Traditional quasi-static compression testing can't fully capture how materials behave under dynamic, impact-driven loading. My work explored whether stereo Digital Image Correlation (DIC), which captures full-field strain data simultaneously across a specimen, could serve as a better-suited alternative for characterizing nonlinear foam behavior under impact excitation.

Read more

I used stereo DIC (Vic-3D, Photron PFV4) for full-field strain measurement under impact loading, diagnosing and resolving camera-sync calibration drift to bring residual scores back under target threshold. I also designed an end-to-end DAQ and hardware trigger chain (NI PXIe, custom Python/NI-DAQmx scripts) to synchronously acquire load-cell and accelerometer data and trigger the high-speed DIC cameras on impact, eliminating analog trigger jitter. The resulting datasets were processed into stress-strain curves with compliance correction and used to calibrate a HYPERFOAM material model in Abaqus, validating test-simulation correlation for finite-element modeling.

This fellowship was led by Shannon Danforth and Samantha Ceballes, and mentored by Jim DeClerck, Kennan Hodovic, Christopher Teti, Peter Beck, and Samuel Hinerman.

Saint-Gobain Foam Damping Research

Role
Undergraduate Research Assistant
Team
1 PhD Student, 1 Advisor
Timeline
Dec 2024 – May 2025
Tools
Crystal Instruments DAQ, MATLAB, shaker testing

Saint-Gobain's railway product line relies on polymer foam materials to damp vibration in rail transit systems, reducing noise and structural fatigue from train operation. As a research assistant supporting Tessa Lytle's PhD thesis project, I helped characterize how different foam materials performed this damping function and how they compared against competitor materials, my first real experience in a research lab setting.

Read more

I assisted with shaker testing on polymer foams (Norseal, silicone, polyurethane) under varying applied mass to help capture their dynamic response, and supported processing of the vibration data with a Crystal Instruments DAQ and MATLAB (pwelch) to extract modal frequencies and damping characteristics. This testing fed into root cause identification of damping performance gaps across competitor materials for Saint-Gobain's product line.

This work was led by Tessa Lytle as part of her PhD thesis project, advised by Prof. Zhu Mao.

Air Piano

Role
Project Leader
Team
1 Teammate, 2 Advisors
Timeline
Aug 2025 – May 2026
Tools
Onshape, KiCad, Python, MediaPipe

This project is a gesture-controlled MIDI instrument, which uses computer vision to recognize 21 landmark points on your hands and track the tip of your fingers to play the piano without physical contact with an instrument. It connects to any DAW for a seamless, expressive playing experience, giving you full control over note, octave, velocity, and effects.

Read more

I led mechanical and PCB design end to end: a parametric Onshape enclosure across multiple prototype revisions, and complete KiCad schematics for a Raspberry Pi 4B, MCP3008 ADC, and USB-C MIDI interface. As systems integrator across mechanical, electrical, firmware, and computer vision, I built real-time motion-to-MIDI mapping firmware with MediaPipe hand tracking (~14 FPS) and low-latency USB MIDI output, and worked through 12+ hardware and firmware failures along the way, mostly SPI timing and MIDI routing bugs.

This project was completed with teammate Anika Escobar as part of our MQP, advised by Prof. Zhu Mao and Prof. Ziming Zhang.

Air Piano enclosure interior showing Raspberry Pi, display, potentiometers, and wiring Onshape CAD render of the Air Piano enclosure, solid view Onshape CAD render of the Air Piano enclosure, exploded view showing internal assembly
View schematic
KiCad schematic for Air Piano: Raspberry Pi 4B, MCP3008 ADC, potentiometers, and switches
Published MQP paper

Guitar Acoustics & Modal Analysis

Role
Researcher
Advisor
Prof. Zhu Mao
Timeline
May 2025 – Jul 2025
Instruments
Crystal Instruments DAQ, LDV, MATLAB

This project investigates whether guitar price and build quality measurably affect acoustic performance, or whether perceived differences in tone owe more to construction and materials than to cost. Rather than relying on how the instruments sounded by ear, we approached the question from a dynamic standpoint, a more objective, measurable basis for comparison. I tested three guitars and six strings across a range of price points, build quality, and visible deformities, comparing frequency response and harmonic content to see what the data actually showed.

Read more

I led the full experimental workflow for guitar modal and acoustic analysis under Prof. Zhu Mao at WPI: configured impact hammer, modal shaker, accelerometers, and a Laser Doppler Vibrometer to measure structural vibrational response across body shapes, bracing, and tonewoods.

To understand how build quality affects acoustic quality, I bought guitars and strings at different price points, including instruments with cracks and deformities, and compared their frequency response functions and harmonic profiles. I extracted natural frequencies, damping ratios, and mode shapes with a Crystal Instruments DAQ and MATLAB (pwelch), the same vibro-acoustic techniques used in speaker, enclosure, and instrument design.

The results showed that guitar body quality, size, material, and construction had a far greater influence on acoustic performance than string price. Differences between strings of the same material were subtle and often negligible.

Acoustic guitar suspended in a free-free boundary rig for impact testing Guitar suspended under a Laser Doppler Vibrometer with a modal shaker attached Polytec PSV-500 scanning head aimed at a guitar body clamped for LDV scanning
Normalized power spectrum comparing nylon guitar strings at three price points on the low E note
View code
%% Impact test: normalized power spectrum across string price points%% === USER PARAMETERS === Fs = 40960; noverlap = 0; N_peaks_total = 10; %% === INPUT FILE === file = 'time_force241.mat', 'time_force243.mat','time_force247.mat'; %% === Load === data = load('time_force241.mat'); window_size = 265728; signal = data.(cell2mat(fieldnames(data))); signal = signal(2, :); % force row signal = signal(:); % column vector [pxx, f] = pwelch(signal, window_size, noverlap, window_size,Fs); figure; [pks, locs] = max(pxx); f(locs); y1= semilogy((2*f/(f(locs))),pxx, 'LineWidth', 2, 'DisplayName','$', 'color', '#0F33E0'); xlabel('Peak (#)'); ylabel('Power/Frequency (dB/Hz)'); title('Bad Guitar, Nylon String, Low E note'); grid on; xlim([0,10]); hold on %% === Load === data = load('time_force243.mat'); window_size = 236646; signal = data.(cell2mat(fieldnames(data))); signal = signal(2, :); % force row signal = signal(:); % column vector [pxx, f] = pwelch(signal, window_size, noverlap, window_size,Fs); [pks, locs] = max(pxx); f(locs); y2= semilogy((2*f/(f(locs))),pxx, 'LineWidth', 1.5, 'DisplayName','$$', 'color', '#FFEA00'); grid on; xlim([0,10]); %% === Load === data = load('time_force247.mat'); window_size = 236646; signal = data.(cell2mat(fieldnames(data))); signal = signal(2, :); % force row signal = signal(:); % column vector [pxx, f] = pwelch(signal, window_size, noverlap, window_size,Fs); [pks, locs] = max(pxx); f(locs); y3= semilogy((f/(f(locs))),pxx, 'LineWidth', 1, 'DisplayName','$$$', 'color', '#FF1901'); grid on; xlim([0,10]); hold off legend([y1 y2 y3],'$', '$$', '$$$');
LDV FRF magnitude with coherence overlay for guitar body modal testing
View code
%% LDV scan: FRF magnitude with coherence overlaymodal_data_good = readuff('Scan_modal_good_guitar_0721.uff'); figure; plot(modal_data{66}.x, abs(modal_data{66}.measData)); xlabel('Frequency (Hz)'); ylabel('Magnitude (mm/s^2/N)'); title('LDV Testing w/ Shaker on Good Guitar Body'); yyaxis right plot(modal_data{221}.x, abs(modal_data{221}.measData)); ylabel('Coherence'); ylim([0.55 1]);
Research poster

3x3 MIDI Soundboard

Role
Designer & Builder
Team
Solo project
Timeline
Jan 2026
Tools
Raspberry Pi Pico W, CircuitPython

One of my biggest musical inspirations has been Fred again.., among other artists, and I've always wanted a drum machine/soundboard of my own. As a prerequisite to the Air Piano capstone, I built a smaller 3x3-button MIDI controller to get hands-on experience with firmware coding and circuit wiring outside of coursework, as well as to have an instrument for my very own DJ/musician moment.

Read more
Finished 3x3 MIDI grid controller with nine buttons and two knobs
3x3 MIDI grid wiring connected to breadboard and Raspberry Pi Pico

This project was my first coding and electrical engineering project outside of coursework. It was a lower-stakes prototype built with a Raspberry Pi Pico W, a place to break things and learn analog and digital signals in digital instrument creation before committing to a much more complex build. It implements two effects knobs that can load any effect, along with nine drum pads that can each hold a different sound.

View schematic
KiCad schematic for the 3x3 MIDI Soundboard: Raspberry Pi Pico W, nine push buttons, and two potentiometers
View code
# CircuitPython: debounced button + smoothed pot MIDI firmwareimport time import board import digitalio import analogio import usb_midi import adafruit_midi from adafruit_midi.note_on import NoteOn from adafruit_midi.note_off import NoteOff from adafruit_midi.control_change import ControlChange BUTTON_PINS = [ board.GP2, board.GP3, board.GP4, board.GP5, board.GP6, board.GP7, board.GP8, board.GP9, board.GP10 ] PAD_NOTES = [ 45, 46, 47, 41, 42, 43, 37, 38, 39 ] NOTE_VELOCITY = 127 DEBOUNCE_S = 0.02 # 20 ms POT1 = analogio.AnalogIn(board.GP26) POT2 = analogio.AnalogIn(board.GP27) POT1_CC = 74 POT2_CC = 12 SMOOTH = 0.10 # lower = less lag DEADBAND = 6 # higher = no CC spam POT_DELAY = 0.01 # slower polling def adc_to_cc(v): return (v * 127) // 65535 midi = adafruit_midi.MIDI( midi_out=usb_midi.ports[1], out_channel=0 ) buttons = [] last_raw = [] stable = [] last_flip = [] t0 = time.monotonic() for pin in BUTTON_PINS: b = digitalio.DigitalInOut(pin) b.switch_to_input(pull=digitalio.Pull.UP) buttons.append(b) v = b.value last_raw.append(v) stable.append(v) last_flip.append(t0) p1 = adc_to_cc(POT1.value) p2 = adc_to_cc(POT2.value) last_p1 = p1 last_p2 = p2 while True: now = time.monotonic() # ---- Buttons (debounced) ---- for i, b in enumerate(buttons): raw = b.value if raw != last_raw[i]: last_raw[i] = raw last_flip[i] = now if (now - last_flip[i]) >= DEBOUNCE_S and raw != stable[i]: stable[i] = raw note = PAD_NOTES[i] if not stable[i]: # pressed midi.send(NoteOn(note, NOTE_VELOCITY)) else: # released midi.send(NoteOff(note, 0)) r1 = adc_to_cc(POT1.value) r2 = adc_to_cc(POT2.value) p1 = int((1 - SMOOTH) * p1 + SMOOTH * r1) p2 = int((1 - SMOOTH) * p2 + SMOOTH * r2) if abs(p1 - last_p1) >= DEADBAND: midi.send(ControlChange(POT1_CC, p1)) last_p1 = p1 if abs(p2 - last_p2) >= DEADBAND: midi.send(ControlChange(POT2_CC, p2)) last_p2 = p2 time.sleep(POT_DELAY)

Rice Husk Prescription Bottles

Role
R&D Researcher
Team
7 Team Members, 2 Advisors
Timeline
Aug 2023 – Dec 2023
Tools
SolidWorks, FDM 3D Printing

Nearly 165 million plastic prescription bottles enter landfills each year in the United States. Our team set out to find a biodegradable alternative that addresses the same functional requirements as standard prescription bottles, UV resistance, durability, and contamination resistance, while eliminating the plastic waste problem. "The Rice Remedy" was selected as the seminar's 2023 class winner for innovation in sustainable manufacturing, with material and medical applications extending well beyond pill bottles.

Read more

Plastic pill bottles are difficult to recycle: they're made primarily from #5 polypropylene, which isn't universally accepted in curbside recycling programs, and their opaque orange coloring causes many facilities to reject them outright. We explored a range of biodegradable composite materials and found that rice husks, a byproduct of one of the world's largest agricultural industries, met every requirement we were targeting. After testing several binding ingredients and techniques to achieve a consistent, homogeneous texture, we identified carboxymethyl cellulose (CMC) powder as the safest option for consumer use while still binding the material effectively. We designed and fabricated molds in SolidWorks, using FDM 3D printing for casting to improve production efficiency and structural integrity.

The result: a viable, biodegradable substitute for polypropylene prescription bottles, with potential applications extending into other areas of the medical field.

This project was completed with a team of 7 as part of the Great Problems Seminar, advised by Prof. Svetlana Nikitina and Srivatsan Mukunthraj.

CAD model of the prescription bottle mold used to cast the rice husk composite
Rice husk composite drying in the 3D-printed molds
Final molded rice husk composite disc, a biodegradable bottle material
Research poster Award announcement

Contact

Always happy to talk about structural dynamics, acoustics, hardware, or potential opportunities. Feel free to reach out.