Go-based FM stereo transmitter with RDS, Windows-first and cross-platform
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
Jan Svabenik 47b46cb7cc feat: report active offline source and fallback state 1 місяць тому
..
NOTES.md docs: bootstrap fm rds transmitter project plan 1 місяць тому
README.md feat: report active offline source and fallback state 1 місяць тому
config.sample.json feat: make no-hardware tone source configurable 1 місяць тому

README.md

fm-rds-tx docs

Build & Test

Root CLI

  • go test ./...
  • go run ./cmd/fmrtx -print-config
  • go run ./cmd/fmrtx -config docs/config.sample.json
  • go run ./cmd/fmrtx --dry-run --dry-output build/dryrun/frame.json
  • go run ./cmd/fmrtx --simulate-tx --simulate-output build/sim/simulated-soapy.iqf32 --simulate-duration 250ms
  • go run ./cmd/offline -duration 500ms -output build/offline/composite.iqf32

Audio source modes

Current no-hardware sources:

  • generated stereo tones via config
  • 16-bit PCM WAV file input via audio.inputPath
  • basic sample-rate adaptation for WAV sources into the composite generation path
  • transparent tone fallback if the configured WAV source cannot be loaded

Tone configuration

The current no-hardware source can be parameterized via config:

  • audio.toneLeftHz
  • audio.toneRightHz
  • audio.toneAmplitude

HTTP control surface

Available endpoints:

  • GET /healthz
  • GET /status
  • GET /dry-run
  • GET /config
  • POST /config

Current patchable runtime fields via POST /config:

  • frequencyMHz
  • outputDrive
  • toneLeftHz
  • toneRightHz
  • toneAmplitude
  • ps
  • radioText

Internal DSP module

  • cd internal
  • go test ./...

Examples module

  • cd examples
  • go test ./...
  • go run ./soapy_simulated

Dry run

The dry-run mode generates a synthetic, hardware-free frame summary based on the current config. It is intended as a no-hardware smoke path for the CLI and config/control-adjacent logic.

The HTTP control plane also exposes GET /dry-run for quick inspection of the currently effective no-hardware summary.

Simulated transmit

--simulate-tx runs the offline generator through the Soapy-oriented simulated backend path and writes an IQ-style artifact to disk. This is the current closest no-hardware stand-in for the future transmit pipeline in the main application path.

Offline generation

cmd/offline generates a deterministic no-hardware IQ/composite-style file using the repository's output backend path. This is still an MVP path, but it is a more realistic offline artifact than the JSON-only dry-run. The generator summary now reports whether the active source is tones, wav, or tone-fallback.

Release posture

Current honest release posture: pre-v1. Recommended milestone tag: v0.3.0-pre. See CHANGELOG.md and RELEASE.md.