Files
tuimble/docs/USAGE.md
Username 2533e43391 docs: add pitch shifting documentation
F6/F7 keybindings, audio.pitch config option, voice pitch section
in USAGE.md.  Updated profiling notes to reflect per-thread coverage.
2026-02-28 13:55:46 +01:00

3.3 KiB

Usage

Running

tuimble                          # uses ~/.config/tuimble/config.toml
tuimble --host mumble.example.com --user myname

Key Bindings

Key Action
Tab Cycle focus (chat input / channel tree)
F1 Toggle self-deafen
F2 Cycle output volume
F3 Cycle input volume
F4 Push-to-talk (configurable)
F5 Reload config from disk
F6 Pitch down (1 semitone)
F7 Pitch up (1 semitone)
Enter Send message / join channel (sidebar)
Up Previous message (input) / previous channel (sidebar)
Down Next message (input) / next channel (sidebar)
q Quit
Ctrl+C Quit

Push-to-Talk Modes

  • toggle — press to start, press again to stop (default)
  • hold — hold key to transmit, release to stop (requires evdev)

Profiling

tuimble --cprofile                    # saves to ~/.config/tuimble/profile.prof
tuimble --cprofile /tmp/tuimble.prof  # saves to custom path

Profile data is dumped every 30 seconds and on exit, so snapshots are available even after a crash or kill. Output is standard .prof format:

python3 -m pstats /tmp/tuimble.prof   # interactive explorer
# or install snakeviz for a browser-based flamegraph:
# pip install snakeviz && snakeviz /tmp/tuimble.prof

Profiling covers both the main thread and all worker threads (including the audio send loop where pitch shifting runs).

Volume Control

F2 and F3 cycle through volume steps: 0%, 25%, 50%, 75%, 100%, 125%, 150%, 200%, then back to 0%. Volume is shown in the status bar as block indicators.

[audio]
output_gain = 0.75   # 0.0 to 2.0 (default 1.0)
input_gain = 1.5     # 0.0 to 2.0 (default 1.0)

Voice Pitch

F6 and F7 adjust outgoing voice pitch in 1-semitone steps, ranging from -12 to +12. Negative values make the voice deeper, positive values make it higher. The current setting is shown in the status bar when non-zero.

[audio]
pitch = 3            # semitones, -12 to +12 (default 0)

When pitch is 0, the processing step is skipped entirely (no CPU overhead).

Client Certificates

For servers requiring client certificate authentication:

[server]
certfile = "/path/to/client-cert.pem"
keyfile = "/path/to/client-key.pem"

Both must be PEM-encoded. Leave empty to connect without a certificate.

Config Reload

F5 reloads ~/.config/tuimble/config.toml from disk.

Safe changes (applied immediately): PTT key/mode/backend, audio gain values, pitch.

Restart-requiring changes (server settings, audio device/rate): shown as warnings. Press F5 again to confirm reconnect, or any other key to cancel.

Reconnection

On unexpected disconnect (server restart, network loss), tuimble automatically retries with exponential backoff:

  • Initial delay: 2 seconds, doubling each attempt (2, 4, 8, 16, 30...)
  • Maximum delay: 30 seconds
  • Maximum attempts: 10

The status bar shows ◐ reconnecting during retry. If the server rejects authentication, retries stop immediately.

After all attempts are exhausted, press F5 to retry manually. F5 also cancels an in-progress reconnect and starts a fresh attempt.

Configuration

See ~/.config/tuimble/config.toml. All fields are optional; defaults connect to localhost:64738.