Skip to content

Easyoakland/audio-network-interface

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Transmit data over audio.

This project was created primarily for me to learn and understand the concepts of digital communications.

If you are looking for a mature digital signal processing library take a look at liquid-dsp or quiet instead. Although, it does appear at least equal to the efficacy of quiet-js

Usage

Usage Instructions Overview

Run Instructions

Cli

cargo run --release --bin transceiver_cli -- <OPTIONS>

The cli has help information if -h or --help or help are used as options.

Native Gui

cargo run --release --bin transceiver_gui -F gui

The gui has help information on hover.

Wasm Gui

Hosted demo at https://easyoakland.github.io/audio-network-interface/

To run locally: Install trunk then run trunk serve --release. You may need to install wasm-opt first.

The gui has help information on hover.

Goals/Roadmap

  • Physical layer
    • On Off Keyed (OOK) Frequency division multiplexing (FDM)
    • Forward error correction
      • Reed solomon
      • Parity checks
      • Hamming codes
        • 74
        • 84
      • Convolutional/Viterbi
      • Cyclic redundancy check CRC-32
    • Orthogonal FDM (OFDM)
      • Cyclic prefix
      • Multiple frames
        • Multiple contiguous frames
        • Multiple non-contiguous frames
        • Coarse timing estimation
          • Autocorrelation
          • Cross-correlation
      • Precise timing estimation
        • Pilot Symbol
        • Pilot Channel
    • Quadrature Phase Shift Keying (QPSK)
      • bpsk (2 point)
      • qpsk (4 point)
      • n point
    • Quadrature Amplitude Modulation (QAM)
      • 2 point
      • 4 point
      • n point
    • Different sampling frequency of transmitter vs receiver
    • Realtime
      • Faster than realtime but don't yet have option to decode direct from microphone.
    • From file
  • Interface
    • Command line interface (cli)
    • Native gui
    • WASM static website
      • Note: Not great because poor AudioWorklet and/or Multithreading in Wasm support. The single-threaded implementation in cpal is sometimes too choppy/imprecise causing phase to rapidly become incorrect. Also see here for a good summary of the state of things.
      • Local server.
      • Public site.
    • Operating system network interface/adapter

About

Transmit data over audio.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •