h a l f b a k e r yWhere life imitates science.
add, search, annotate, link, view, overview, recent, by name, random
news, help, about, links, report a problem
browse anonymously,
or get an account
and write.
register,
|
|
|
Acoustic QR Code
QR code for telephones, dark places and situations when your hands are busy | |
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.
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.com Baked 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]
Please log in.
If you're not logged in,
you can see what this page
looks like, but you will
not be able to add anything.
Destination URL.
E.g., https://www.coffee.com/
Description (displayed with the short name and URL.)
|
|
This seems like an excellent idea. |
|
|
Will it go "boing-boing" during protocol negotiation? |
|
|
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). |
|
|
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. |
|
|
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 ? |
|
|
//one axis represent chords and the other axis
represents the tune and beat of the musical motif |
|
|
//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. |
|
|
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? |
|
|
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. |
|
|
//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] |
|
|
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? |
|
|
.... 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). |
|
|
Wow - thumbs up for baking! |
|
|
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.) |
|
|
//I made a script which uses QR code libraries to generate
an image, then scans through that image and fourier
transforms it into sound. |
|
|
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. |
|
|
- 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. |
|
|
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. |
|
|
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! |
|
|
The Whistling Spy Enigma, about 4mins 40 secs where Seagoon has to whistle the Hungarian Rhapsody, in English. |
|
|
//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. |
|
| |