Skip to content

Vox implementation#44

Open
Brantlab wants to merge 3 commits into
W3AXL:mainfrom
Brantlab:Vox-implementation
Open

Vox implementation#44
Brantlab wants to merge 3 commits into
W3AXL:mainfrom
Brantlab:Vox-implementation

Conversation

@Brantlab
Copy link
Copy Markdown

Summary

This PR implements the daemon VOX control mode and makes it usable for audio-only radio setups such as an FT-991A running DATA VOX through a USB audio interface.

VOX can now drive radio RX/TX state from audio levels, forward receive audio only when active, and pass transmit audio to the configured TX audio device only when that specific radio has been keyed.

What Changed

  • Added VoxRadio implementation for controlMode: 0
  • Added configurable VOX settings:
    • RX/TX thresholds
    • attack and hang timing
    • startup delay
    • noise-floor margin
    • quiet-after-reset behavior
    • static zone/channel labels
  • Added raw RX audio monitoring so VOX state can be driven from local audio input
  • Gated RX audio forwarding so idle/reconnect noise does not open the radio stream
  • Started local audio early for VOX so RX detection works before WebRTC negotiation completes
  • Routed WebRTC TX audio through VOX before sending it to the local TX audio device
  • Prevented shared console mic audio from accidentally keying the VOX radio when other radios are selected
  • Allowed console alert tones to key and pass through the VOX radio correctly
  • Updated example configuration for VOX
  • Updated the rc2-core submodule for reliable initial WebRTC audio negotiation

Why

This enables radios that can self-key from audio, such as an FT-991A in DATA VOX mode, to work without CAT/PTT control.

@W3AXL
Copy link
Copy Markdown
Owner

W3AXL commented May 24, 2026

You'll have to fix the rc2-core merge conflicts, and I would like to see some better commenting of the changes/additions to explain their functionality. But I definitely would love to get this added in, thanks for the work!

Brantlab added 3 commits May 24, 2026 12:03
Implement audio-level based VOX radio control with RX/TX gate detection,
startup/reconnect suppression, learned noise-floor calibration, and gated
RX forwarding. Wire VOX mode into daemon startup, local audio callbacks,
and example configuration.
Route WebRTC TX audio through the VOX radio before sending it to the local TX device. Track explicit VOX transmit requests so alert tones can key and play correctly while preventing audio from other selected radios from opening the VOX radio.
@Brantlab Brantlab force-pushed the Vox-implementation branch from 01feaac to a96637d Compare May 24, 2026 16:08
@Brantlab
Copy link
Copy Markdown
Author

I rebased the VOX branch onto current main and resolved the rc2-core submodule conflict by keeping the current upstream rc2-core pointer. Any rc2-core WebRTC fixes are being kept separate so this PR stays scoped to the daemon VOX implementation.

I also added more section-level comments around the VOX changes, especially the audio callback wiring, raw RX monitoring path, startup/warmup calibration, RX/TX gate behavior, hang timer behavior, and encoded RX forwarding.

Validation:

  • dotnet build daemon\daemon.sln

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants