gopxl/beep

A little package that brings sound to any Go application. Suitable for playback and audio-processing.

592

stars

336

commits

Go

primary language

Jul 16, 2025

updated

README

Beep

Go Reference Go build status Coverage Status Go Report Card Discord Chat

A little package that brings sound to any Go application. Suitable for playback and audio-processing.

go get -u github.com/gopxl/beep/v2

Features

Beep is built on top of its Streamer interface, which is like io.Reader, but for audio. It was one of the best design decisions I've ever made and it enabled all the rest of the features to naturally come together with not much code.

  • Decode and play WAV, MP3, Ogg Vorbis, FLAC and MIDI.
  • Encode and save WAV.
  • Very simple API. Limiting the support to stereo (two channel) audio made it possible to simplify the architecture and the API.
  • Rich library of compositors and effects. Loop, pause/resume, change volume, mix, sequence, change playback speed, and more.
  • Easily create new effects. With the Streamer interface, creating new effects is very easy.
  • Generate completely own artificial sounds. Again, the Streamer interface enables easy sound generation.
  • Very small codebase. The core is just ~1K LOC.

Tutorial

The Wiki contains a handful of tutorials for you to get started. They teach the fundamentals and advanced topics alike. Read them especially if you call speaker.Init every time you play something.

Examples

Dependencies

For playback, Beep uses Oto under the hood. Check its requirements to see what you need to install for building your application.

Running an already built application should work with no extra dependencies.

License

MIT

Projects using Beep

Contributors

(top 30 of 34)

MarkKremer

177 commits

faiface

55 commits

dusk125

18 commits

dependabot[bot]

10 commits

gopxl/beep

A little package that brings sound to any Go application. Suitable for playback and audio-processing.

592

stars

336

commits

Go

primary language

Jul 16, 2025

updated

README

Beep

Go Reference Go build status Coverage Status Go Report Card Discord Chat

A little package that brings sound to any Go application. Suitable for playback and audio-processing.

go get -u github.com/gopxl/beep/v2

Features

Beep is built on top of its Streamer interface, which is like io.Reader, but for audio. It was one of the best design decisions I've ever made and it enabled all the rest of the features to naturally come together with not much code.

  • Decode and play WAV, MP3, Ogg Vorbis, FLAC and MIDI.
  • Encode and save WAV.
  • Very simple API. Limiting the support to stereo (two channel) audio made it possible to simplify the architecture and the API.
  • Rich library of compositors and effects. Loop, pause/resume, change volume, mix, sequence, change playback speed, and more.
  • Easily create new effects. With the Streamer interface, creating new effects is very easy.
  • Generate completely own artificial sounds. Again, the Streamer interface enables easy sound generation.
  • Very small codebase. The core is just ~1K LOC.

Tutorial

The Wiki contains a handful of tutorials for you to get started. They teach the fundamentals and advanced topics alike. Read them especially if you call speaker.Init every time you play something.

Examples

Dependencies

For playback, Beep uses Oto under the hood. Check its requirements to see what you need to install for building your application.

Running an already built application should work with no extra dependencies.

License

MIT

Projects using Beep

Contributors

(top 30 of 34)

MarkKremer

177 commits

faiface

55 commits

dusk125

18 commits

dependabot[bot]

10 commits

Languages

Go

100.0%