Commit Graph
27 Commits
Author SHA1 Message Date
Brandon McGinty (chatgpt) c0ef036934 Add configurable incoming audio jitter buffer 2026-08-13 17:54:30 -04:00
Brandon McGinty (chatgpt) d338925da6 Add outgoing audio packet interval option 2026-08-13 16:00:30 -04:00
Brandon McGinty (chatgpt) 9c487c2586 Add Windows platform integration scaffolding 2026-08-10 12:36:47 -04:00
Brandon McGinty (chatgpt) ef8a92149d Report configuration persistence failures 2026-08-10 11:25:08 -04:00
Brandon McGinty (chatgpt) 43d7addc15 Protect regular files from FIFO setup 2026-08-10 08:50:56 -04:00
Brandon McGinty (chatgpt) d7dcaa8b21 Support IPv6 server addresses without ports 2026-08-09 23:55:51 -04:00
Brandon McGinty (chatgpt) 6da5b249f9 Reject missing explicit configuration files 2026-08-09 22:35:38 -04:00
Brandon McGinty (chatgpt) d2e94c76b5 Disable stderr logging unless logfile is selected 2026-08-09 21:21:38 -04:00
Brandon McGinty (chatgpt) d64e5125dd Bound notification delivery and expansion 2026-08-09 14:38:02 -04:00
Brandon McGinty (chatgpt) 41759b95f6 Stop FIFO reader after terminal errors 2026-08-09 14:30:31 -04:00
Brandon McGinty (deepseek) 819ed6931d Add -tcp flag to disable UDP and force audio through TCP tunnel
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.
2026-08-09 00:30:27 -04:00
Brandon McGinty (deepseek) 29be821155 Add --tone-test mode: 440 Hz Opus tone + incoming audio capture
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
2026-08-09 00:19:41 -04:00
Brandon McGinty (deepseek) b861193306 feat: add -auto-transmit flag to start transmitting on connect
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
2026-08-08 22:52:27 -04:00
Brandon McGinty (deepseek) 53918788f7 feat: add -logfile flag to write logs to a file
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
2026-08-08 22:33:23 -04:00
Brandon McGinty (deepseek) e483512f74 feat: add structured logging throughout audio pipeline
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
2026-08-08 22:19:42 -04:00
Storm Dragon 9bc514e74f Remove voice effects 2026-07-14 18:41:50 -04:00
Storm Dragon 5ac6703489 Use RNNoise for noise suppression 2026-06-28 23:15:09 -04:00
Storm Dragon 81a928e122 Update stale Go dependencies 2026-05-14 12:21:15 -04:00
Storm Dragon cfbefd3f7d Updated barnard to use openal for sound by default. This should bring with it pipewire or pulseaudio support. 2025-12-16 15:44:10 -05:00
Storm Dragon 0700264afe Work on supporting and using certificates. 2025-12-12 18:34:23 -05:00
Storm Dragon dd425563ba Experimental changes, switched to toml instead of yaml. Hopefully everyone will like this as much as I do. 2025-12-10 20:52:37 -05:00
Storm DragonandClaude f96cb1f79b Add real-time voice effects for outgoing audio
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>
2025-10-13 16:27:08 -04:00
Storm DragonandClaude 67d6ec2f37 Fix lock copying in handle_error function.
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>
2025-08-28 22:52:35 -04:00
Storm Dragon df7159bad1 Initial noise suppression added. 2025-08-16 21:29:52 -04:00
Storm Dragon 356ff5a3a8 Muting a channel now stops you from transmitting, it acts sort of like deafen. 2025-01-16 17:47:39 -05:00
Storm Dragon 2e337db3c5 Updated everything for dependencies. All sub packages are now part of the project. This was a massive update, hopefully won't have to be reverted. 2025-01-16 17:03:01 -05:00
Storm Dragon 3f0246a4f8 Initial commit, lots of cleanup and stuff to do, it may not work. 2025-01-15 23:43:44 -05:00