Inspiration

At TAMUHack 2022, our team came created a way to distribute information using QR codes that did not require the internet (if you're curious, you can see the project QRlicious on Devpost. This year, we come back with an even more ambitious idea: QR codes that do not require a camera. We're big fans of unconventional data transfer and aesthetically pleasing technologies.

What it does

DataJam is a way to transfer data via audible frequencies, inspired by technologies such as barcodes and QR codes. The program transmits data by taking in ASCII text, converting it to binary, selecting chords that correspond to the binary data, and then synthesizing each note. We also do the reverse, receiving data by recording audio, applying algorithms to find the musical notes, decoding each chord into binary, and reconstructing the original text.

How we built it

We wrote the whole program in Python, and used PyQt5 and matplotlib for the GUI. We used the fast fourier transform algorithm to decode the sound into its constituent notes.

Challenges we ran into

Throughout the process we found ourselves working in areas that we had little knowledge of ahead of time. We had to learn how to turn musical notes into sound, how to apply and interpret spectral analysis algorithms, and the practical considerations involved in building cross-platform projects that have to interact with hardware. One challenge that still remains difficult to solve is background noise that aligns with our note frequencies, and we are contemplating future iterations of our note finding algorithm to increase our robustness to interference.

Accomplishments

We made computers sing data to each other, and we think that's super cool!

What's next for DataJam

To make this truly a viable alternative for the ever-present QRcode, DataJam needs to be even better at filtering out background noise than now. Also, currently each character takes about 2.3 notes to transfer, and each note is about .55 seconds, which comes out to a rate of about 1.3 bits per second - pretty slow. To make this technology a viable option in a larger variety of environments, the speed could be improved.

Built With

Share this project:

Updates