Xyla's electric violin lived in our living room for a while, prompting the question "what could we do with this at MHacks?" Wanting to combine visual arts, music, and tech-- we decided to see if we could create spirograph inspired images with music.

What it does

This project accepts a data input from an electric violin and processes and maps the information in Matlab. We map voltage (amplitude) and frequency (Hz via an FFT). Voltage is graphed in a rainbow circle in real time, with Matlab directly interfacing with the Arduino. Our frequency data is collected in Python and once collected, exported to Matlab to map.

How we built it

FFT for dayz.

Challenges we ran into

-Matlab and Arduino sample at dramatically different rates, making the Matlab FFT function useless. This meant we had to process Arduino side, despite the limitations of the Atmel 328.
-Harmonics are a b*tch.
-We were using an Arduino interfacing package in Matlab. A side effect of using that package was that the Matlab code automatically wiped the Arduino to input its own code. This nullified all the serial data code we had written Arduino-side (see FFT comment above) so we had to manually force the Hex files onto the Arduino through Matlab.
-A muffin ended up on the floor do everyone's chagrin. Team tension ensued.
-The headphones we had available to hack were enamel shielded, rendering them unsolderable and nonconductive. This required some MacGyver'ing to burn off the cheap coating and solder conductive pins on.

Accomplishments that we're proud of

-Our Hex files forced Arduino-Matlab hack
-We hacked something that wasn't meant to be hacked-- a very cheaply made musical instrument with low quality transducers.
-The muffin was eaten anyway.
-Considering none of us are Electrical Engineer or Computer Science majors, we accomplished a high level of signal processing.

What we learned

-Signal processing and FFT is really really hard.
-Transducer quality matters- our cheap Chinese violin might not have done us any favors. We got so much harmonic noise we couldn't filter it out using a high or low pass filter without also filtering out the data we wanted, but it was too muddled to handle software side.

Built With

Share this project: