Adds Config.DisableUDP field. When set:
- DialWithDialer skips startUDP() entirely (no UDP socket, no UDP reader)
- WriteAudio skips WriteAudioUDP and goes straight to TCP-tunneled audio
Useful for debugging crypto/transport issues — rules out UDP-specific
problems like NAT, firewall, or OCB2 counter mismatches.
Adds a --tone-test flag that bypasses all OpenAL/soundcard
initialization and instead:
- Generates a 440 Hz sine wave at 48kHz mono, encodes it via Opus,
and sends it to the Mumble server.
- Saves all incoming decoded audio to a raw PCM file (s16le,
stereo, 48kHz) specified by --tone-out (default: incoming.pcm).
Useful for end-to-end testing of the Opus encode/decode pipeline
and Mumble transport without requiring physical audio hardware.
Usage:
barnard --server HOST --tone-test --tone-out /tmp/in.pcm
ffplay -f s16le -ar 48000 -ac 2 incoming.pcm
When -auto-transmit is passed, barnard automatically keys up the
microphone as soon as the connection sync completes. Useful for
testing, bots, and unattended operation.
Usage:
barnard -auto-transmit -server=mumble.example.com -username=test_bot
The -logfile flag writes log output to a file in addition to stderr,
so users can run barnard in the TUI without log spam on screen.
Usage:
barnard -log=debug -logfile=/tmp/barnard.log -server=mumble.example.com
Add a lightweight log package (log/log.go) with debug/info/warn/error
levels. Wire it up via a -log flag (default: warn). Logging covers:
UDP transport:
- Socket open/failure, CryptSetup receipt, crypto initialization
- First UDP audio send confirmation
- UDP read errors and packet counts
- TCP fallback reason (no socket, waiting for crypto)
Audio pipeline:
- Source (mic) routine start with config details
- Audio stream start/end per remote user
- First audio stream creation for each user
- Packet loss detection with sequence gaps and PLC generation
- Decoder reset on sequence reordering
Usage: barnard -log=debug -server=mumble.example.com
Levels: debug, info, warn, error
Implements 7 voice effects that can be cycled through with F12:
- None (default)
- Echo: Single repeating delay with feedback (250ms)
- Reverb: Multiple short delays without feedback
- High Pitch: Chipmunk voice using cubic interpolation
- Low Pitch: Deep voice effect
- Robot: Ring modulation for robotic sound
- Chorus: Layered voices with pitch variations
The effects are applied after noise suppression and AGC in the audio
pipeline. Selected effect is persisted to config file. Includes
comprehensive documentation in README.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed handle_error to accept *Barnard pointer instead of copying struct by value, eliminating race condition warnings from mutex copying.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>