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>
This commit is contained in:
7
main.go
7
main.go
@@ -16,6 +16,7 @@ import (
|
||||
"crypto/tls"
|
||||
"flag"
|
||||
"github.com/alessio/shellescape"
|
||||
"git.stormux.org/storm/barnard/audio"
|
||||
"git.stormux.org/storm/barnard/config"
|
||||
"git.stormux.org/storm/barnard/noise"
|
||||
|
||||
@@ -162,6 +163,7 @@ func main() {
|
||||
Address: *server,
|
||||
MutedChannels: make(map[uint32]bool),
|
||||
NoiseSuppressor: noise.NewSuppressor(),
|
||||
VoiceEffects: audio.NewEffectsProcessor(gumble.AudioSampleRate),
|
||||
}
|
||||
b.Config.Buffers = *buffers
|
||||
|
||||
@@ -176,7 +178,10 @@ func main() {
|
||||
}
|
||||
b.NoiseSuppressor.SetEnabled(enabled)
|
||||
b.NoiseSuppressor.SetThreshold(b.UserConfig.GetNoiseSuppressionThreshold())
|
||||
|
||||
|
||||
// Configure voice effects
|
||||
b.VoiceEffects.SetEffect(audio.VoiceEffect(b.UserConfig.GetVoiceEffect()))
|
||||
|
||||
b.Config.Username = *username
|
||||
b.Config.Password = *password
|
||||
|
||||
|
Reference in New Issue
Block a user