Skip to content

Commit 90b483d

Browse files
committed
FSK frequency map and FSK Control tones tables have been added
1 parent ff28528 commit 90b483d

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

README.md

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22

33
A browser-based acoustic data link for air-gapped, peer-to-peer transmission using device audio hardware. Built with React and the Web Audio API, it encodes text and files into 8-FSK audio signals to transmit data wirelessly over sound waves.
44

5+
---
6+
57
## What This Does
68

79
This project allows two devices to communicate with each other completely offline and without any RF network (Wi-Fi, Bluetooth, Cellular). It uses the device's built-in speaker to emit a sequence of musical tones (Frequency-Shift Keying) and the receiving device's microphone to listen to and decode those tones back into digital data. It is capable of transmitting both short text payloads and small files across an air gap.
810

11+
---
12+
913
## Features
1014

1115
- **8-FSK Modulation**: Encodes 3 bits of data per audio symbol using 8 distinct frequencies.
@@ -14,13 +18,17 @@ This project allows two devices to communicate with each other completely offlin
1418
- **Data Integrity**: All payloads are verified upon receipt using CRC32 checksums.
1519
- **"Dead Frequency" UI**: A custom, vintage signal intelligence aesthetic with a warm parchment/amber/teal palette, `DM Serif Display` typography, and kinetic CSS animations.
1620

21+
---
22+
1723
## Tech Stack
1824

1925
- **Frontend Framework**: React 18 + Vite
2026
- **Styling & Motion**: Tailwind CSS + Framer Motion (for kinetic elements and page transitions)
2127
- **Audio Processing**: Native Web Audio API (`AudioContext`, `AnalyserNode`, `OscillatorNode`)
2228
- **Icons**: Lucide React
2329

30+
---
31+
2432
## Getting Started
2533

2634
### Prerequisites
@@ -40,6 +48,8 @@ This project allows two devices to communicate with each other completely offlin
4048

4149
*Note: For the acoustic link to work, the transmitting device needs a functioning speaker, and the receiving device needs a functioning microphone and must grant microphone permissions in the browser.*
4250

51+
---
52+
4353
## How It Works
4454

4555
1. **Encoding**: The application takes a text string or a file buffer and chunks it into smaller packets. Each packet calculates a CRC32 checksum. The binary data is then mapped to 8 specific audio frequencies (8-FSK).
@@ -61,7 +71,7 @@ Each transmission is stripped into 64-byte maximum payloads and wrapped in a 10-
6171

6272
### FSK Frequency Map
6373

64-
| Symbol (Trit) | 3-bit Value | Frequency (Hz) | Notes |
74+
| Symbol (3-bit) | Value / Type | Frequency (Hz) | Notes |
6575
|:---:|:---:|:---:|---|
6676
| 0 | `000` | **1400 Hz** | Lowest data frequency |
6777
| 1 | `001` | **1800 Hz** | Also used in Sync Preamble |
@@ -71,18 +81,27 @@ Each transmission is stripped into 64-byte maximum payloads and wrapped in a 10-
7181
| 5 | `101` | **3400 Hz** | Also used in Sync Preamble |
7282
| 6 | `110` | **3800 Hz** | |
7383
| 7 | `111` | **4200 Hz** | Highest data frequency |
74-
|| Handshake A | **900 Hz** | Outside FSK range, wake-up tone |
75-
|| Handshake B | **1050 Hz** | Outside FSK range, wake-up tone |
76-
|| EOT | **700 Hz** | End-of-transmission, below FSK range |
84+
85+
### Control Tones
86+
| Type | Frequency | Description |
87+
|:---:|:---:|:---:|
88+
| Handshake A | **900 Hz** | Outside FSK range, wake-up tone |
89+
| Handshake B | **1050 Hz** | Outside FSK range, wake-up tone |
90+
| EOT | **700 Hz** | End-of-transmission, below FSK range |
91+
92+
---
7793

7894
## Limitations & Future Ideas
7995

8096
- **Bitrate**: Current speeds are around ~37 bps. Future versions will optimize the DSP loop to increase throughput.
8197
- **Distance**: Environmental noise heavily impacts reliability. Devices must be relatively close in a quiet room for uncorrupted transmission. Error correction coding (like Reed-Solomon) is planned to recover flipped bits automatically.
8298

99+
---
100+
83101
## Deployment
84102

85103
This repository includes a GitHub Action for deploying natively to GitHub Pages (`.github/workflows/deploy.yml`).
86104

87105
---
106+
88107
*Developed by Asmith — asmyth@duck.com*

0 commit comments

Comments
 (0)