A Go package for audio playback and processing with a simple API and a rich library of effects.
Beep is a lightweight Go library that enables sound capabilities in Go applications, from basic playback to advanced audio processing. It provides a clean, stream-based architecture centered around the Streamer interface, which simplifies working with audio data. The library supports decoding multiple audio formats, encoding to WAV, and includes a rich set of compositors and effects.
Go developers who need to add audio playback, processing, or generation to their applications, such as those building games, music players, audio tools, or educational software. It is suitable for both beginners due to its simple API and advanced users due to its extensible Streamer interface.
Developers choose Beep for its minimalistic and composable design, similar to io.Reader for audio, which makes it easy to create custom effects and generate sounds. Its small codebase (around 1,000 lines) and focus on stereo audio keep it efficient and maintainable compared to more complex audio libraries.
A little package that brings sound to any Go application. Suitable for playback and audio-processing.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Focusing on two-channel audio simplifies the interface, making it straightforward for playback and basic effects, as the README notes it was a deliberate design choice to keep the API clean.
The Streamer interface, akin to io.Reader for audio, enables easy composition of custom effects and sound generation, allowing developers to build complex audio pipelines with minimal code.
Includes a library of compositors for looping, volume control, mixing, sequencing, and speed adjustment, providing out-of-the-box functionality for common audio processing tasks.
With a core of around 1,000 lines of code, Beep is minimalistic and maintainable, reducing overhead and making it suitable for embedding in various applications without bloat.
Supports decoding WAV, MP3, Ogg Vorbis, FLAC, and MIDI, covering a wide range of common audio formats for playback needs in games or media players.
Only encodes audio to WAV files, lacking support for saving to MP3, Ogg, or other compressed formats, which can be a significant limitation for output-heavy applications.
Relies on the Oto library for playback, which may require additional system dependencies (e.g., ALSA on Linux) for building, adding complexity to setup and cross-platform deployment.
Restricted to two-channel audio, limiting its use for applications requiring multichannel or spatial audio processing, such as immersive gaming or professional audio production.
Has a smaller community and fewer third-party integrations compared to established audio libraries, which can mean less documentation, fewer examples, and slower issue resolution.