Interestingly, some early wireless TV remotes used sound this way. The battery-free remotes would strike a tone when a button was pressed, and carefully tuned forks in the TV set would resonate in response, triggering the remote function.
There are also reasons they stopped using it in the first place[1]:
Some problems with this method were that the receiver could be triggered accidentally by naturally occurring noises, and some people could hear the piercing ultrasonic signals. There was an incident in which a toy xylophone changed the channels on such sets because some of the overtones from the xylophone matched the remote's ultrasonic frequency.
While each specific problem could be worked around with modern methods, it looks like a technique reserved for situations where you don't have a better option.
I don't see why DTMF https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_sign... couldn't have solved this pretty easily without adding too much complexity. I've seen those remotes before and they usually only had about three buttons on them. Still pointless, but I think this would have worked.
We had a tv like this growing up. Whenever the dog would run through the room, his tags would jingle and change the channel. It was funny, too, because the tv channel changer was this rotary dial that was motorized. When you changed the channel, the little dial on the tv would click and spin around.
Heh, I just visualized my laptop keyboard transposed onto an 88 key piano, and then tried to imagine what a typical vim session would sound like on it...
Many MIDI virtual keyboard apps provide a mapping to the PC keyboard. Install one of those, (e.g. apt-get install vkeybd), plus a softsynth (e.g. ZynAddSubFX). Done.
I think tones in our hearing range would be a bad idea. From what I remember of my music theory class, our brains (through either nature or nurture) don't like discordant sounds like that for a long time. In fact, I believe it's been used as a torture device in the past, although I'm guessing it wasn't just a weird jumble of notes in that case.
I don't think I'd be very good at programming in any case.
No, but the more sounds you use, the more precise everything has to be. Just think of a machine that recognizes blue, red, and yellow as compared to a machine that recognizes all 24-bit colors. Aside from everything else, how on earth would you calibrate the sensor?
You could do something like keep the frequency offset between keys constant for all keyboards, but add some way of shifting the frequency of all of the keys by the same amount. It seems feasible to me, but I have no expertise in the area. The difficulty could prohibit an infinite set of configurations, but it could easily allow for a small set of configurations for cases when a few keyboards are in close proximity.
It looks like it would interoperate with standard amateur radio PSK-31 software if you set the ham radio software to 19043 Hz (instead of more typical 500-2000 or so Hz)
Over the last 15 years or so there have been a lot of PSK-31 software interfaces, so there's probably one that appeals to everyone.
I would imagine other modulation schemes would work in the ultrasound range, if you wanted to try SSTV or RTTY or perhaps a bidirectional error correcting protocol. AX.25 would be amusing and linux has kernel support and softmodem support if you can convince it to run at 20 KHz.
If you've got the bandwidth for Olivia and other modern modes I'd try those... I've made QSOs on HF where there is no discernible signal on the waterfall, works down to very low SNR. So you could get better range / lower error rate with a wider band / slower / more modern modulation method.
I would imagine doppler shift and multipath interference would be an interesting problem.
Do you mean the sound waves would generate radio waves somehow, or are you thinking of the speaker generating EM interference as well? How strong would you expect that to be?
That's really cool! I used the web audio stuff to get real time audio data for interactive visualizations when I did a 5 minute demo of quietnet, the code is available (but might be a pain to get running): https://github.com/katee/quietnet-presentation
Running fully in the browser with visualizations might make a good teaching tool for digital signal processing (although you'd need better DSP code to demo, mine is not a shining example.)
Can this be accomplished on mobile devices? This could be a clever trick to implement interesting multiplayer games on train rides, airplanes, where wifi is not available.
Those "ratings" mean the sound will be distortion-free +/- 3dB over that range. You can still make some noise higher or lower than that, it will just be more distorted. I know iPhones support audio formats with at least 96 kHz sample rate, so you should be able to play half that or 48 kHz sounds without too much trouble. It might have some kind of band-pass filter built in, but the ratings won't tell you.
> Those "ratings" mean the sound will be distortion-free +/- 3dB over that range.
No it doesn't. All speaker drivers act as bandpass filters. On the ends of their frequency ranges those +/-3dB points are generally their -3dB points. For most speaker drivers their low frequency cutoff will be caused by the resonance of their motor, dropping off rapidly after that point. The upper frequency limit will be caused by the inductance of their motor's coil with a similar drop off above it.
It's unlikely that the iPhone speaker could reach 48kHz. If you look at expensive high frequency units (tweeters) they'll generally top out at 20-30k. A lot of headphone drivers (which are more similar to what's in the iPhone) barely make it to 20k.
> You can still make some noise higher or lower than that, it will just be more distorted.
Again, nothing about distortion here. A speaker driver will output sound outside of its -3dB points, but, obviously it's going to be much quieter (-3dB is already half as quiet).
Interesting... I thought the consensus was that these sounds weren't possible to create / detect on typical hardware according to recent discussions about mystery malware spreading through the air? I wonder what percentage of systems would be up to the required specs.
Malware can't spread via ultrasound, but it could certainly communicate via ultrasound. To spread would require that a sound picked up by the microphone would be executable, and in general, that can't happen. (In specific it can, of course; one could build a program to execute things from the microphone on purpose. But generally microphones do not get their input executed, and any hardware that did that would be incredibly, insanely broken. Mind you, I'm not saying that doesn't exist... just that it would be incredibly, insanely broken. Even by the standards of embedded hardware programming.)
Also, I don't think the badBIOS guy claimed it was spreading via ultrasound, that was sort of a generalized misinterpretation in the community.
Microphone injection reminds of the picture going around with the person who taped a sql injection attack over their license plate to screw with the traffic cams.
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
I have a 13in Macbook Pro and the internal speakers were not working for me. However, I plugged in my higher quality headphones and held them up to the speaker and it worked. It might work if you plugged in external speakers.
You are using Python 3.3, but the script is for Python 2.x where print is a built-in rather than a function. Welcome to the fragmented world of Python.
I really want someone to make a wireless, powerless keyboard where every key's click is tuned to a slightly different sound.
Keylogging by acoustic emanations is a well researched technique, I just think it could be a feature if we made the keyboard right. https://www.schneier.com/blog/archives/2005/09/snooping_on_t...