We almost made Recorder Hero, but then we decided that the world wasn't ready.
What it does
Mach One converts strings and pixel art into binary data and transmits this data by broadcasting a series of frequencies. On the receiving end, the app recognizes target frequencies and frequency shifts, allowing it to reassemble the original message.
How we built it
UI was built in Swift and data/frequency processing was done in C.
Challenges we ran into
Creating a decoding algorithm; also, synchronizing broadcast and receiver sampling rates. We needed an accurate way to distinguish between broadcast frequencies while also accounting for consecutive identical frequencies and ignoring background noise. Even when coordinating rates using NSTimer, sampled frequencies often desynchronized and totally screwed up the decoded message. We fixed this by eliminating time dependence and instead relied on identification of frequencies based on patterns of change.
Finding a space to repeatedly test our code. We would like to thank everyone on the first floor of the library for putting up with us for 36 hours.
Accomplishments that we're proud of
Created a listening algorithm that can recognize a transmission, distinguish between frequencies, and correctly decode frequencies.
What we learned
How to process audio using the AudioKit library.
What's next for Mach One: Transmitting data by sound
The Mach One team is planning to up the ante by going further back in time and using a spinning iPhone like a record player to encode and transmit frequencies. Scaling up, it would be interesting to explore low frequencies outside of the audible range to improve transmission distance. We could also improve information density by making use of phase modulation, potentially also outside of audible range.