Files
ggwave/bindings/javascript
Georgi Gerganov 00b23ff54f r2t2 - Transmit data through the PC speaker (#32)
* inital implementation

* remove file

* ggwave-cli : txProtocol -> txProtocolId

* ggwave : add custom protocol enum values

* r2t2 : use cutom protocols

* r2t2 : build only on Unix systems

* r2t2 : remove thread

* r2t2-rx : wip

* r2t2 : wasm build ready + various fixes

* r2t2 : error message

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* r2t2 : length 16

* r2t2 : use slow protocol by default

* r2t2 : add timestamp

* r2t2 : update html

* r2t2 : update github link

* r2t2 : more robust tx

* r2t2 : add option to use beep command

* emscripten : cannot use requestAnimationFrame when capturing audio

This causes the queued audio buffer to grow indefinitely when the page
is not focused, causing the process to run out of memory.

* r2t2 : disable beep option

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* r2t2 : add example to README
2021-04-18 13:20:45 +03:00
..
2021-01-24 17:25:58 +02:00
2021-02-27 12:27:18 +02:00
2021-01-24 17:25:58 +02:00
2021-02-20 19:42:16 +02:00
2021-01-24 20:55:34 +02:00

ggwave

Tiny data-over-sound library.

  • Audible and ultrasound transmissions available
  • Bandwidth of 8-16 bytes/s (depending on the transmission protocol)
  • Robust FSK modulation
  • Reed-Solomon based error correction

Example Usage

var factory = require('ggwave')

factory().then(function(ggwave) {
    // create ggwave instance with default parameters
    var parameters = ggwave.getDefaultParameters();
    var instance = ggwave.init(parameters);

    var payload = 'hello js';

    // generate audio waveform for string "hello js"
    var waveform = ggwave.encode(instance, payload, ggwave.TxProtocolId.GGWAVE_TX_PROTOCOL_AUDIBLE_FAST, 10);

    // decode the audio waveform back to text
    var res = ggwave.decode(instance, waveform);

    if (res != payload) {
        process.exit(1);
    }
});