How teceer/screechnet works
Screechnet is a browser-based acoustic modem: users exchange messages by playing modem audio through a phone call and decoding it on the other side, without a server. The main path runs from composing a message through optional encryption and modem encoding to speaker output, then microphone capture, parallel demodulation, frame/block assembly, optional decryption, and display. The README also documents multiple FSK/MFSK modes, local echo, and a synthesized dial-up handshake. The map follows the supplied source excerpts and README; some UI and audio wiring is only partially sampled.
Main entry points: app.js Compose and display · rx-worklet.js Audio receiver worklet · demod.js FSK and MFSK demodulators · modem.js Modes and framing
Components 10
Browser interface
- Compose and display
app.js - Browser audio I/O
Modem transmission
- Modes and framing
modem.js - TANK error correction
fec.js
Modem reception
- Audio receiver worklet
rx-worklet.js - FSK and MFSK demodulators
demod.js - Frame and block assembly
modem.js
Private line
- Room-key encryption
crypto.js
Other components
- User
- Phone-call audio line
Connections 16
- User → Compose and display: composes message
- Compose and display → Room-key encryption: derives key / seals
- Compose and display → Modes and framing: encodes payload
- Modes and framing → TANK error correction: encodes TANK blocks
- Compose and display → Modes and framing: synthesizes handshake
- Compose and display → Browser audio I/O: plays samples
- Browser audio I/O → Phone-call audio line: sends audio
- Phone-call audio line → Browser audio I/O: carries audio
- Browser audio I/O → Audio receiver worklet: feeds microphone samples
- Audio receiver worklet → FSK and MFSK demodulators: pushes samples
- FSK and MFSK demodulators → TANK error correction: decodes TANK blocks
- Audio receiver worklet → Compose and display: posts receive events
- Compose and display → Frame and block assembly: pushes received bytes
- FSK and MFSK demodulators → Frame and block assembly: reports decoded blocks
- Compose and display → Room-key encryption: opens ciphertext
- Compose and display → User: displays received text