Quiet.js

Transmit and receive data in the browser at 44.1kHz

View the Project on GitHub quiet/quiet-js

Quiet.js

This is a javascript binding for libquiet, a library for sending and receiving data via sound card. It can function either via speaker or cable (e.g., 3.5mm). Quiet comes included with a few transmissions profiles which can be selected for the intended use. For speaker transmission, there is a profile which transmits around the 19kHz range, which is essentially imperceptible to the human ear.

Quiet uses the Web Audio functionality in order to send and receive sound. Sending data is supported by Chrome, Firefox, Safari, and Edge. Reception is supported by Chrome, Edge, and to some extent Firefox.

Try it out in these examples or browse the documentation.

Transfer Text

This example will allow you to transmit text between two quiet-compatible browsers. There is a transmitter which will send tones through your speakers, and a receiver which will decode the tones through the microphone. These examples may run either in the same browser or in different browsers on different devices. The ultrasonic example cannot be received by Firefox, and neither receiver will work in Safari.

Be sure to turn down your volume to 50% or lower on your transmitting device.

Receive Text
Send Text
Transfer Image

This example will allow you to transmit an image between two quiet-compatible browsers. Because this example requires a little more power than the last one, the receiver will need to be on a laptop or desktop computer. Additionally, you will need to connect the transmitter and receiver by cable, such as a 3.5mm phone connector.

Neither Safari nor Firefox can be used as receivers for this example.

Receive Image
Send Image
Choose an image
Profiles

Let's take a look at the configuration for the audible text transmitter we saw earlier.

This is a profile that tells Quiet.js how to operate. It specifies a modulation scheme gmsk and a center frequency 4200.

Changing the behavior of Quiet.js is as simple as creating a new profile, making a few tweaks and then trying it out. To some extent, Quiet.js is a soundcard-based modem-building framework, thanks to the flexibility of liquid DSP.

License

Quiet.js is licensed under 3-clause BSD. It is compiled with liquid dsp and libjansson, which are licensed under MIT license. For full details, see 3rd party licenses.