thijson 2 days ago

It might be useful to study the techniques that modems used to transmit data over phone lines. I seem to recall trellis coded modulation being used:

https://en.wikipedia.org/wiki/Trellis_coded_modulation

The acoustic channel is bound to suffer from multipath too, so some equalization may be needed too.

https://en.wikipedia.org/wiki/Equalization_(communications) https://www.ti.com/lit/an/spra140/spra140.pdf

In order to receive the signal far from the transmitter, some form of spread spectrum encoding could be used, like CDMA. The spreading factor could be negotiated.

https://en.wikipedia.org/wiki/Direct-sequence_spread_spectru...

  • ghurtado 2 days ago

    Did somebody say Spectrum?

    https://softspectrum48.weebly.com/notes/tape-loading-routine...

    I always assumed that PWM was the go-to method for this kind of low bandwidth / high noise medium, I wonder why the author didn't go that route and used FM instead

    • nomel 2 days ago

      > Tape data is encoded as two 855 T-state pulses for binary zero, and two 1,710 T-state pulses for binary one.

      Is that not FM, more specifically FSK, just with some extra harmonics?

      • ghurtado 2 days ago

        keep in mind I don't know much about waves, so all of this could be wrong, but I think PWM works by modulating the width of the pulse, in other words, the "duration of the note" if you will, so the frequency of the square wave remains constant. You have a high pulse of width t to represent a zero and a high pulse of t*2 to represent 1. The human ear might hear this as a modulating frequency, but that's only because the pulses are changing faster than our brains can recognize pitch, if that makes any sense . I don't know what a t state is, but I suspect the number is the duration of the pulse in microseconds or something of the sort.

        I believe IR remotes work on a similar principle: a series of blinks of two different durations, which represent 0 and 1

        • MobiusHorizons 2 days ago

          What you are describing is basically CW which is how Morse code is transmitted over radio. It works well at the low data rates of Morse code. The higher the symbol rate, however, the higher resolution you need for measuring pulse length, which requires sharper edges from off to on. In practice it is usually easier to use different tones for each symbol (fsk) since the pulse length is less critical in that case. Quadrature modulation like bpsk is more efficient at the cost of additional complexity, and spread spectrum techniques allow for much better performance in noisy environments at the cost of using more bandwidth. So as usual in engineering, it’s a trade off that has to be decided on a case by case basis.

  • cogman10 2 days ago

    Another step to look into if you really want to have fun is implementing some sort of QAM.

lxe 2 days ago

18-20khz is not really ultrasound. Many people can still hear this range, and it's very unpleasant when played (at least to me).

For comparison, medical imaging ultrasound is 2-20 MHz (that's MEGA hertz) I think,

  • thfuran 2 days ago

    Yeah, 18 kHz isn't really ultrasound, but 50 kHz definitely is and nobody's hearing that. You definitely don't need to go up into the MHz range and can't if the goal is to use existing audio equipment.

  • dylan604 2 days ago

    would the stock equipment be able to produce MHz? consumer gear is targeted specifically at making sounds humans can hear. Since the 18-20kHz is within the 44.1-48kHz audio tends to playback, it makes since why it would be near-ultrasound frequencies. The headline specifically mentions without any special equipment

    • lxe 2 days ago

      Theoretically, yes! With 192kbps sample rantes you can probably render up to 96khz, but the limitation is the speaker and amp components all the way from your DAC to the main amp to the speaker.

      • dylan604 2 days ago

        bitrate isn't really what we're concerned with here, though is it? if you use 96kHz sampling rate, you can reproduce 48kHz frequencies according to Nyquist. the bitrate would then be the sampling rate * bit depth * #channels. your 192kbps would potentially be the 96kHz * 2 channels, but you've left out the bit depth or using a 1-bit sample???

  • sneak 2 days ago

    Sure, but he’s using computer/phone speakers and mics and audio interfaces. These can’t generally produce or sample frequencies above 24kHz.

    • mordae 2 days ago

      20kHz, actually. They tend to have really sharp filters with -3dB @ ~0.4 fS.

      • sneak a day ago

        All frequencies above 24kHz are also above 20kHz. :)

TrackerFF 2 days ago

IIRC, there was some commercial product - years ago - that worked by using ultrasonic data transfer.

It went something like this: You install some app on your phone, which then listens for incoming audio in the ultrasonic range. The audio is coded instructions, which then would do things like blink a light on your phone or whatever. The idea was that this could be used at events (sport, music, whatever) to create light shows on the mobiles, without relying on good wifi coverage or similar in the avenue. As you could use the PA for the data transmission.

  • tanepiper 2 days ago

    I wrote a very similar web implementation 12 years ago as a proof of concept - if it got the go-ahead, the plan was to test it with some commercial TV broadcasting in the UK where a ultrasonic short code could be sent to phones using an app with a Web view, or possibly native app.

    Sadly never got picked up, although we proved the concept could work - but it certainly had it's challenges.

    https://github.com/tanepiper/adOn-soundlib

    https://github.com/tanepiper/adon-ad-platform

  • mgraczyk 2 days ago

    Google explored doing this with devices that connect to each other, specifically Chromecast and their early Google Home devices. I don't think it ever launched but Google did some interesting experiments to test the ultrasonic transfer functions on millions of consumer devices. (I worked in audio research at Google at the time but not on this).

    I believe the main problem is that it makes dogs go crazy

    • pests 2 days ago

      I might be misremembering but I am 99% sure the early Chromecasts had this. It was a “Guest Mode” for when you wanted to share access to a device not on the network. I don’t think it lasted for long.

  • tkanarsky 2 days ago

    The official Blackpink (kpop group) light sticks from one of their tours have this functionality built in. The annoying part is that one of their Spotify albums have this 18-20khz control track present, and (when I was younger) I could hear it and it annoyed the heck out of me.

achairapart 2 days ago

A few years ago I made a digital audio-guide for an interactive exhibition in the form of a Progressive Web App, using a modified version of Quiet.js[0] for proximity, e.g. You enter a room, the phone mic picks up a signal playing in this room and starts an audio track synced with video projected in the room.

Screenshots of the app:

https://pino.ceniccola.it/portfolio/img/diconodilei-1.jpg

https://pino.ceniccola.it/portfolio/img/diconodilei-4.jpg

Sadly, Safari iOS Web Audio API filtered out everything above ~16khz, so instead of playing the audio at full volume in the room I had to make a few points of contact where you had to place your phone near enough a little speaker (actually a tweeter) to pick the (now) audible whisper but at much lower volume.

By the way, everyone was already wearing their headphones anyway, and it worked like a charm with many people wondering what and how was going on!

[0]: https://github.com/quiet/quiet-js

adzm 2 days ago

The web tool is fun! I decided to give it a harder test and turned up some fans and background music up pretty loud and it still managed to decode the message.

Though after a certain point it stops recognizing it, I was still surprised how well it did with noise. I'm sure noise in higher frequencies (or the right harmonics) would be much harder to handle, but solvable in interesting ways too

kiicia 2 days ago

This reminded me of „Ultrasonic investigations in shopping centers”[1]

> Ultrasonic pilot tones, commonly used in PA systems to monitor speaker connections, are often modulated by background noise or movement. These tones can be used for various purposes, such as speed detection, escalator monitoring, positioning codes, ad delivery, and finding quiet areas in shopping centers.

[1] https://www.windytan.com/2024/06/ultrasonic-investigations-i...

jnwatson 2 days ago

Chromecast has used ultrasound in lieu of pairing code for a while now.

  • jayknight 2 days ago

    Webex on a laptop can know which conference room it is in by ultrasound, which allows quick screen sharing to the screen/meeting.

echoangle 2 days ago

Isn't the "Illustrated for zoomers" version of the frequency domain wrong? I'm pretty sure the bars over the timeline show volume over time, not intensity over frequency. So the middle bar doesn't represent a specific frequency but a specific time interval in the song.

  • bigiain 2 days ago

    I dunno, but as a almost-boomer (57 years old) I felt seen by the "Illustrated for boomers" pic. I had almost exactly that display in the headunit/cd player I installed in my '72 VW Beetle back in the early 90s...

    • benji-york 2 days ago

      Same experience here, I owned this exact piece of equipment as a teen (I'm ~50).

      Aside: I know "boomer" is just slang for "not young", but I can't help but think that only the most tech-savvy Baby Boomer would identify with that EQ; Gen-X would be more applicable.

ac29 2 days ago
  • blensor 2 days ago

    GGWave is a really great tool and does support audible and inaudible versions.

    We are using it in XRWorkout to automatically sync up ingame recordings with external recordings, we are using the audible version instead of the ultrasound version so a human can sync it up too if they are using a regular video editor instead of doing it automatically in our own tools

    Here is an example how that sounds https://xrworkout.nyc3.digitaloceanspaces.com/data/video/036...

    • noman-land 2 days ago

      This seems like such a fun way to work out but not with a VR helmet on.

vishnuharidas 2 days ago

Reminded me of LG Smart Diagnosis. Almost every LG appliances come with an audio-based diagnosis system. Look for "LG Smart Diagnosis" on YouTube and you will find hundreds of videos of LG washing machines, AC, Fridges, and other devices using a music-like audio for diagnosis.

amelius 2 days ago

Speaking for all the dogs and other pets with hearing abilities above 20kHz ... please don't do this.

kragen 2 days ago

No special equipment—except a laptop capable of running a web browser that can do Web Audio, and microphones and speakers. Which, as the article explains, isn't novel. But it's still a nice introduction to the space.

I would argue that microphones and speakers are special equipment: most microcontrollers don't have them, most computers are microcontrollers, and most non-microcontroller computers already have better ways to transmit data. I was hoping for an ultrasound codec for an Arduino using the microphonics of the X5R bypass capacitors included on the board, or something like that. Plausibly that is a thing you could do, but nobody has managed it so far that I know of.

polotics 2 days ago

what is it about websites that can't be zoomed? do the authors not realise their choice of fonts won't always fit with mobile phone screens?

  • nine_k 2 days ago

    IIRC mobile Firefox ignores the "can't be zoomed" setting, which I find the right thing to do.

velcrovan 2 days ago

So that’s how Bobby Tables got his start