gogwave
gogwave copied to clipboard
Go language bindings for the ggwave C++ library
GoGWave
The gogwave package provides Go language bindings for the ggwave C++ library.
Note: At the moment, gogwave supports linux systems only.
For further detail see the GoDocs
How to use
This example encodes a payload ([]byte) into a waveform, stores the waveform as a .wav file, and decodes the waveform back into a payload.
func main() {
gg := New()
defer gg.Close()
waveform, err := gg.Encode([]byte("hola"), ProtocolAudibleNormal, 50)
if err != nil {
panic(err)
}
b, err := gg.Decode(waveform)
if err != nil {
panic(err)
}
payload := string(b)
fmt.Println("payload:", payload)
}
How to build & install ggwave
To install ggwave library follow the ggwave building/installing instructions
An alternative is using GoGWave's Makefile
Clone this repo:
git clone https://github.com/diegohce/gogwave
cd gogwave
Build (linux):
make
Install:
sudo make install
after building ggwave, from GoGWave's root directory run:
go test .
tests should run fine.
Note: ggwave directory is safe to remove after building and installing.
License
GoGWave is licensed under the Apache 2.0 license. Copyright (c) 2025 Diego Cena
ggwave License
ggwave is licensed under the MIT license. Copyright (c) 2020 Georgi Gerganov