Vibeleaderboard
Index / tool
Visit github.com
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 messageAudio waveform containing encoded data

  • Decode data from audio signals

    Audio recording or live audio streamOriginal digital data or text message

  • Generate audio tones for data transmission

    Binary data or text stringSound frequencies encoding the information

  • Parse audio frequencies back to data

    Audio file or microphone input with encoded soundsReconstructed original message or data

  • Enable short-range audio-based communication

    Message to transmit and receiving device with microphoneWireless data transfer via sound waves

Tags

ggwaveswiftaudiodata-transfer

Tech Stack

Swift

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.