Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Waver – Messaging Through Sound (github.com/ggerganov)
49 points by ggerganov 6 days ago | hide | past | favorite | 11 comments

This could have multiple uses. One that I can think of is to have a profile of what a normal sounding manufacturing floor is or lathe, mill, any machine that operates. If the sound profile changes you might be able to distinguish what component is failing on that machinery. This could possibly be extended to listening to organisms or ecosystems like the human biome to identify problems.

I know other tech might exist in this but I find the possible uses for this fascinating.

There's quite some research, and even some products (I mentored a company about five years ago doing such a thing, but I even forgot their name, and don't remember what their outcome was) about this topic.

- https://www.hindawi.com/journals/js/2018/4105208/

If memory serves, you don't even need to have permanently installed sensors, you can do it with a portable stethoscope kind of contraption which can detect anomalies and help to schedule preventative maintenance.

Hello HN,

This is a hobby project that I have been working on and off for the past few years. It started with a simple PoC [0] for sharing files through WebRTC using sound signaling to exchange the SDP between peers and I recently decided to extract the data-over-sound part into a standalone library [1] so I can use it in different projects. The current post is one such project: "Waver" - a simple application with the primary purpose to showcase the capabilities of my data-over-sound library. The main functionality of the app is to exchange short text messages through sound with nearby devices. All you need to use it is to enable the device's speakers and microphone. The app also includes an early prototype for sharing files with sound signaling. The app runs on iOS, Android, Linux, Mac OS and Web - I put quite some effort to make it easy to try out :)

The implemented data-over-sound protocol is quite simple. It is essentially a 6-tone FSK modulation scheme with special markers to mark the start and end of the transmission. The bandwidth is quite low (8-16 B/s), but I think the transmission is reliable. I've been testing it with a few devices across the room and it seems robust enough. The ultrasound protocols especially are very robust to surrounding noise.

An additional challenge I had to solve while working on the data-over-sound protocol was to make the encoded data sound good to the human ear. Although the current sound is not the most pleasant thing to hear (especially the markers), I think it turned out relatively OK :-)

There are a few reasons about why I decided to implement this FSK approach instead of using an existing and well-known modulation scheme used by modems:

- My DSP knowledge is fairly limited

- Most modulations typically sound like noise (not very pleasant to the ear)

- Reliable air-gapped transmission seems to be much more difficult to achieve compared to over-the-wire

- But mainly because I find it more fun to implement something from scratch

There are similar solutions available on the market, but I feel they are difficult to try out. I wanted to make something free and very easy to test and see how it works. The data-over-sound library [1] still needs some work, but it's getting there. I am hoping to find some fun and potentially useful applications of this, so I am looking for ideas. Also, any feedback about the performance is very much appreciated.

If you decide to try out the Waver app, make sure to watch the 2 min video in the link [2] for a quick tutorial. Also, there is a small easter egg at the end of the video :-)

[0] - https://github.com/ggerganov/wave-share

[1] - https://github.com/ggerganov/ggwave

[2] - https://www.youtube.com/watch?v=Zcgf77T71QM

Cool product! This is essentially a modern take on the radioteletype [0], which is much older than dial-up modem technology. You might find it interesting to study RTTY modulation schemes if you haven't already done so. (If you do end up implementing RTTY modulation schemes, it could make the product more popular among amateur radio enthusiasts, who use similar software already [1].)

[0] https://en.wikipedia.org/wiki/Radioteletype

[1] https://en.wikipedia.org/wiki/Fldigi

Thanks - I should definitely take a more detailed look at existing RTTY modulation. I admit I haven't looked too much into it. I know I am probably "rediscovering the hot water" for most part :)

You mean speaking?

Heh, kind of - but in a weird sounding language :)

i knew it sounded familiar

This is a super impressive collection of work. Well done.

The only other tool that I've ever seen similar to what you've built is libquiet. Are you familiar with it? If so, could you provide a comparison?

Thanks. Yes - I am familiar with libquiet. It is much more advanced and mature compared to what I am doing. I haven't used it for development, but have played with it's online examples. I think my library is sort of a poor man's solution to what libquiet offers, with the advantage of being a very small and simple piece of software.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact