
ggwave-spm
https://github.com/ggerganov/ggwave-spm- Category
- Developer Tools
- Rank
- No. 1869Tools index
Previous survey · No. 1876 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- ggerganov
- GitHub
- 18 stars
- Date
About
Swift Package Manager wrapper for ggwave — Georgi Gerganov's data-over-sound library for short audio-based messaging.
What it does
It turns a small payload into waveform bytes, then recovers that payload from supplied audio samples. Applications configure sample formats and protocols through a C interface usable from Swift or Objective-C.
Why it's ranked here
A practical choice when an Apple project needs the underlying codec packaged with minimal ceremony. The package builds the native implementation directly, exposes both encoding and decoding, and verifies round trips from Swift and Objective-C. Documentation remains notably sparse.
What's good
The package contains the signal-processing implementation, including Fourier transforms, resampling, and Reed-Solomon error correction. Callers can select protocols, adjust starting frequencies, choose sample formats, and query output size before allocating a waveform buffer.
Tradeoffs
The public surface is a low-level C interface with explicit instance management and caller-owned buffers. The supplied documentation covers installation and build commands but does not explain audio capture, playback, threading, buffer sizing, or production integration.
How to use it well
Use it when a Swift or Objective-C application already controls its audio input and output pipeline and needs payload-to-waveform conversion. Start from the round-trip examples and wrap the C interface locally. It does not provide microphone capture, speaker playback, or application-level messaging.
Technical notes+
Package.swift declares Swift tools 5.3, one ggwave library target, test-objc and test-swift targets, and C++11. Sources/ggwave/ggwave.cpp implements the C ABI over a fixed instance table, supports encode-size queries, copies encoded waveforms into caller buffers, and returns distinct decode errors for failure and insufficient payload capacity. Sources/ggwave/resampler.cpp implements windowed-sinc resampling. Sources/test-swift/main.swift and Sources/test-objc/main.m perform the same four-byte audible-fast round trip using 16-bit samples. .github/workflows/swift.yml builds and runs both programs on macOS. The Makefile can refresh packaged sources from a parent ggwave checkout before building.
Observed
- Packaging
- Swift Package Manager library product named ggwave, using Swift tools 5.3 and C++11.
- Interface
- Native library with a C ABI imported by both Swift and Objective-C examples.
- Primary implementation
- C++ signal-processing core, with Swift package metadata and Swift and Objective-C test clients.
- Verification
- Two executable test targets encode and decode a four-byte payload; CI runs both on macOS.
- Install surface
- README instructs users to add the repository URL as an Xcode Swift Package dependency.
- License
- The bundled Reed-Solomon component carries an MIT license; no repository-wide license is shown in the supplied tree.
Read from README.md, Makefile, Package.swift, Sources/ggwave/ggwave.cpp, Sources/ggwave/resampler.cpp, Sources/test-swift/main.swift, Makefile-tmpl, Sources/ggwave/fft.h, Sources/test-objc/main.m, Sources/ggwave/resampler.h, .github/workflows/swift.yml, Sources/ggwave/reed-solomon/gf.hpp, Sources/ggwave/reed-solomon/rs.hpp, Sources/ggwave/reed-solomon/LICENSE.
What it can do
Transmit data through audio signals
Digital data or text message → Audio waveform containing encoded data
Decode data from audio signals
Audio recording or live audio stream → Original digital data or text message
Generate audio tones for data transmission
Binary data or text string → Sound frequencies encoding the information
Parse audio frequencies back to data
Audio file or microphone input with encoded sounds → Reconstructed original message or data
Enable short-range audio-based communication
Message to transmit and receiving device with microphone → Wireless data transfer via sound waves
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.