Remember when you were on a phone call and the person on the other line wanted to give you a URL, password, or other narly string?
Pinky: What are we going to do today Brain?
Brain: The same thing we do every day. We will try to take over the world!
Pinky: Narf!!!
Brain: Just go to http:// www.halfbakery.com/ idea/ Hullaballoon to find plans for our world conquering machine.
Pinky: forward slash or backslash?
Brain: Forward
Pinky: K ... havebakery.com?
Brain: NO! hotel-alpha-lima-foxtrot bakery!
Pinky: Not working
Brain: Do you have two Ls in hullaballoon?
Pinky: Still not working
Brain: It looks like it's case sensitive. H in Hullalloon is capital. Got it?
Pinky: Not working ... can you email it to me or text it to me?
Brain: But that's not a secure channel Pinky ... Now... from the beginning: Hotel-Tango-Tango-Papa .....
Pinky: Papa??
Brain: ARRRRGH!!!!!!!
You've all been there. Acoustic QR Code to the rescue:
Brain: <Pastes the URL into an acoustic QR code generator>
Pinky: <Gets his acoustic QR code reader app ready - it can be any device with a working microphone>
Brain: Ready Pinky?
Pinky: Yes, Blain
Brain: <Clicks play> <Modem-type sound begins> Pshhhkkkkkk rrrr tsh chchchchchchchcch .....
Pinky: Sees http:// www.halfbakery.com /idea/ Hullaballoon pop- up on his screen <Starts laughing uncontrollably>
Other uses are: Alternative to QR codes in dark places. Alternative to QR code in places where cameras are not allowed (change rooms). Alternative to QR code in situations where you can't free your hands to do the scanning action.
Note. This is not standard modem modulation, this modulation is designed for noisy environments and low bandwidth. Just like with QR code, you will be able to pick the noise tolerance vs bandwidth efficiency.-- ixnaum, May 04 2016 COFDM http://searchnetwor...om/definition/COFDM [Wrongfellow, May 05 2016] 'Dhwani' http://www.computer...sfer_system_phones/Dhwani uses the speaker and microphone on phones to securely exchange data, achieving speeds of up to 2.4Kbps [xaviergisz, May 05 2016] beepitover.com http://beepitover.comBaked implementation using HTML5 [ixnaum, May 06 2016] Literal acoustic QR code demo https://mitxela.com...ts/acoustic_qr_code [mitxela, May 07 2016] IP over QR codes https://www.reddit....ver_qr_code_tunnel/Now possible to do IP over QR code over VoIP, by combining this with the other this [notexactly, Nov 20 2016] The Whistling Spy Enigma http://redmp3.su/95...ing-spy-enigma.html [not_morrison_rm, Nov 20 2016] This seems like an excellent idea.-- MaxwellBuchanan, May 04 2016 Will it go "boing-boing" during protocol negotiation?-- Dub, May 04 2016 Use Morse code (extended to include symbols) or ASCII. Play/transmit at high speed, repeating at multiple frequencies to get around background noise (ie. transmit entire message as 30Hz tones, 300Hz tones, and 3000Hz tones).-- neutrinos_shadow, May 04 2016 So you'll need an app to send it, and an app to receive it. Hmm.
It would be cool to make a tactile acoustic barcode where the lines are different textures/tiny bumps, so when you drag a fingernail, or your phone across it, it hums the message as a series of buzzes.-- mitxela, May 04 2016 so... when the person at the next table over turns the volume up and hits the button on their phone, does it spam you or the person you're talking to ?-- FlyingToaster, May 05 2016 //one axis represent chords and the other axis represents the tune and beat of the musical motif
This is interesting-- ixnaum, May 05 2016 //So you'll need an app to send it, and an app to receive it.
Yes, you will need an app. In the future this could be built in to do this behind the scenes.-- ixnaum, May 05 2016 I see one use -- broadcasting your data to local devices. :) Oh, and devices could return messages encrypted or signed with their private keys. This would allow to automatically identify and log-in all devices in a room.
But wait... why sound, why not bluetooth?-- Inyuki, May 05 2016 This could be a helpful interface into Siri, Cortana, or whichever voice-recognition thingy you've most recently been losing your patience. Ultimately, it might result in an actual R2-unit, complete with all the associated sound-effects.-- zen_tom, May 05 2016 //Then it occurred to me that as a QR code is two dimensional, one axis could be transmitted in parallel acoustically, and the other axis stepped through, serially. It could do this by having one axis represent chords//
You've just invented COFDM. [link]-- Wrongfellow, May 05 2016 It's amazing how slow it has been for voice calls to incorporate other data streams. At this point you've already got a digital connection between two phones. There is absolutely no reason why there shouldn't be a chat interface where you can paste in the URL, or snap a photo while chatting and have that zip over the line, or click "share screen" to show the other person what you're doing.
I think a lot of these features are available in tools like Skype, but why aren't they integrated into basic call functionality?-- scad mientist, May 05 2016 .... so I baked this. It was really fun since it sent me back to the days of loading ZX Spectrum games off of cassette tapes. BUT it doesn't work well. Even at 30 bits/s it's performing poorly. I'm using minimodem in the core. Like this:
echo "Hello World" | minimodem --tx -R 44100 -a -8 -f tx.wav 30
minimodem --rx -R 44100 -a -8 -f rx.wav 30
But the results are quite poor. My microphone has to be no more than 5 cm from the speaker and even then it's hit and miss. I really like this Dhwani. I had a brief look at the paper, but no source code :-( ... how would I implement something like this? I also considered using cwpcm to do morse code as pointed out in one of the annotations, but I think that program can only encode, and not decode. Also morse code will probably have too low of a bandwidth (if we assume special chars, uppers and lowers have to be included in any encoding).-- ixnaum, May 05 2016 Wow - thumbs up for baking!-- MaxwellBuchanan, May 06 2016 Ah. I was feeling inspired last night, and I also had a go at implementing this. Except I took a more literal / comical approach to it.
I made a script which uses QR code libraries to generate an image, then scans through that image and fourier transforms it into sound. The receiving end fourier transforms back, plots a spectrogram of the output and uses the ordinary QR image recognition on the result. Amazingly, this actually works quite well.
With the microphone right up against the speaker, I managed to decode a 55 byte message in 8.5 seconds, which is actually not bad at all. My phone had to be almost in direct contact with the speaker, but using a high quality microphone I was able to transmit over about 30cm.
I think the next step in improving range would be to do a frequency sweep at the beginning to measure the response of the system, and then apply a correctional curve to the data.
(I'll try and upload the demo/source code later today.)-- mitxela, May 06 2016 //I made a script which uses QR code libraries to generate an image, then scans through that image and fourier transforms it into sound.
wow!-- ixnaum, May 06 2016 I finally got over the minimodem troubles. You can finally test drive it yourself now [beepitover link]. Main problem was that during --rx I was using the -a flag for automatic carrier detection. It sounded good at the time, but actually that flag was responsible for messing up a lot of stuff. Also I tweaked the mark and stop frequencies to make them further away from each other.
Next steps:
- Get the bugs out (there are many)
- Increase bitrate. Right now I'm running only at 50 kbit/s for sake or reliability
- Add checksum to allow verification of successful transmission
- Customize minimodem itself to make it more suitable for noisy environments.
- Create offline desktop and phone app. Doing it online was easy way to implement for me, but in reality it's kind of a weird use case. You might as well do pastebin if both of you are already online.-- ixnaum, May 06 2016 Excellent stuff. With the microphone a few meters away I had one or two errors (which is actually better than the qr method which either works perfectly or fails completely). Also I would recommend some kind of progress bar or loading animation for the upload.
I just played with my one again, and with a few tweaks I was able to transit the halfbakery url from desktop speakers to my phone sitting on a desk at the other end of the room! However each arrangement of microphone/speaker needs several attempts at different bandwidths and speeds before success.-- mitxela, May 06 2016 OK, I've uploaded a javascript demo of my silly QR code fourier thing. It is far less practical than an actual modem, yet still just about usable.
This was an entertaining exercise. Thanks for inspiring me!-- mitxela, May 07 2016 The Whistling Spy Enigma, about 4mins 40 secs where Seagoon has to whistle the Hungarian Rhapsody, in English.-- not_morrison_rm, Nov 20 2016 //I made a script which uses QR code libraries to generate an image, then scans through that image and fourier transforms it into sound. The receiving end fourier transforms back, plots a spectrogram of the output and uses the ordinary QR image recognition on the result.
Whereas I fixed my router by switching it off then back on again. The bakery abounds with tech whizzes It seems.-- AusCan531, Nov 20 2016 This is so cool.-- 2 fries shy of a happy meal, Nov 20 2016 random, halfbakery