https://github.com/yobert/pulse
PulseAudio client implementation in pure Go
https://github.com/yobert/pulse
golang pulseaudio
Last synced: 6 months ago
JSON representation
PulseAudio client implementation in pure Go
- Host: GitHub
- URL: https://github.com/yobert/pulse
- Owner: yobert
- License: mit
- Created: 2017-02-17T06:20:56.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2019-04-08T16:24:56.000Z (over 7 years ago)
- Last Synced: 2025-10-13T10:51:57.294Z (9 months ago)
- Topics: golang, pulseaudio
- Language: Go
- Size: 17.6 KB
- Stars: 11
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NOTE:
Someone nice has rewritten this package into a much better package, with better code, a better API, and more protocol coverage! See https://github.com/jfreymuth/pulse
# pulse
PulseAudio client implementation in pure Go
# why?
I saw several wrappers out there of libpulse in Go using CGO, but CGO has many drawbacks. I wanted to try actually implementing the pulseaudio wire protocol in Go instead. The protocol is a very nice binary protocol that can speak over a unix socket. Mostly I figured it out by reading pulseaudio's source code, and by a little debugging unix socket proxy that I've included here. Just fire up the proxy and then run PULSE_SERVER="unix:/tmp/pulsedebug" paplay something.wav
# status
Working:
- Basic protocol negotiation
- It will connect to the default audio sink and synthesize a 440hz (A) sine wave
Not working yet:
- It does not correctly buffer according to the servers requests (It just sends frames on a time schedule and hopes it comes out unbroken).
- shm / memfd support
- The rest of the protocol...