diff --git a/doc/verification/002-freedv-gui-macos.jpg b/doc/verification/002-freedv-gui-macos.jpg new file mode 100644 index 0000000..11e33f4 Binary files /dev/null and b/doc/verification/002-freedv-gui-macos.jpg differ diff --git a/doc/verification/002-freedv-gui-macos.md b/doc/verification/002-freedv-gui-macos.md new file mode 100644 index 0000000..9662728 --- /dev/null +++ b/doc/verification/002-freedv-gui-macos.md @@ -0,0 +1,119 @@ +# RADE Integration Verification Report + +## Application Under Test + +| Field | Value | +|---|---| +| Application name | FreeDV | +| Application version / git hash | 3.0.0-dev (git 69473b0) | +| Platform (OS + version) | macOS 26.6.2 (25G83) arm64 (loopback)
macOS 26.6.2 (25G83) x86\_64 (OTAC) | +| Tester name / callsign | Mooneer Salem / K6AQ | +| Date | 2026-09-16 | +| radae repo commit hash | 758e825182f3a216922fb4bbd7f9a4f5c6fe4288 | +| rade\_c repo commit hash | 7eda42f0f10ec5df6ff409527f5855d5b3ed1c94 | + +## Signal Path Declaration + +- [x] No additional signal processing (AGC, noise gate, resampler, EQ, + compression) between WAV file input and RADE encoder input during + this verification test + + +## Baseline Loss (Step 1) + +Re-run with the current repository version before filling in this section. + +| Field | Value | +|---|---| +| Baseline loss | 0.079 | +| 10% tolerance window | baseline ± 0.0079 (0.0711 – 0.0869) | + +Command used: +``` +rade_tx_wav --v2 -f baseline_txfeatures.f32 all.wav baseline_tx.wav +rade_rx_wav --v2 -f baseline_rxfeatures.f32 baseline_tx.wav baseline_decoded.wav +python3 loss.py baseline_txfeatures.f32 baseline_rxfeatures.f32 --clip_start 100 --clip_end 300 +``` + +_Supplied via RADE_LOSS_THRESHOLD._ + +## Level 1 — Software Loopback (mandatory) + +- [x] Pass (loss within ±10% of baseline) + +| Field | Value | +|---|---| +| Loss result | 0.083 (PASS) | + +Command used / reproduction notes: +``` +# Result parsed from an existing run of the command below. +# From the FreeDV build directory (see .github/workflows/cmake-linux.yml / +# .github/workflows/cmake-macos.yml for the per-platform virtual audio setup): +FREEDV_BINARY= \ +FREEDV_RADIO_TO_COMPUTER_DEVICE= \ +FREEDV_COMPUTER_TO_RADIO_DEVICE= \ +FREEDV_MICROPHONE_TO_COMPUTER_DEVICE= \ +FREEDV_COMPUTER_TO_SPEAKER_DEVICE= \ +RADE_LOSS_THRESHOLD=0.0869 test/test_rade_loss.sh + +# loss.py invocation performed inside test_rade_loss.sh: +python3 rade_src/loss.py txfeatures.f32 rxfeatures.f32 \ + --loss_test --clip_start 100 --clip_end 300 +``` + +## Level 2 — OTAC: Over The Audio Cable (mandatory for hardware integrations) + +- [x] Pass (loss within ±10% of baseline) +- [ ] N/A (software-only integration) + +| Field | Value | +|---|---| +| Loss result | 0.083 | +| Sound card (Tx) | Generalplus USB Audio Device (USB VID 0x1B3F, PID 0x2008) + USB isolator | +| Sound card (Rx) | Generalplus USB Audio Device (USB VID 0x1B3F, PID 0x2008) + USB isolator | +| Cable description | ~1m 3.5mm audio cable | + +Photo of test setup: +![](002-freedv-gui-macos.jpg) + +Reproduction notes: +``` +Use Audio MIDI Setup to set both output channels and the single input channel to 0.5. + +Command line: + +FREEDV_COMPUTER_TO_RADIO_DEVICE="USB Audio Device" FREEDV_RADIO_TO_COMPUTER_DEVICE="USB Audio Device" FREEDV_MICROPHONE_TO_COMPUTER_DEVICE="MacBook Pro Microphone" FREEDV_COMPUTER_TO_SPEAKER_DEVICE="MacBook Pro Speakers" FREEDV_BINARY=/Applications/FreeDV.app/Contents/MacOS/FreeDV ctest -V -R rade_loss +``` + +## Level 3 — OTC: Over The Coax (optional) + +- [ ] Pass (loss within ±10% of baseline) +- [x] Not performed + +| Field | Value | +|---|---| +| Loss result | | +| Tx radio | | +| Rx radio | | +| Attenuator(s) | | + +Photo of test setup: +_(attach or link)_ + +Reproduction notes: +``` +(paste notes here) +``` + +## Summary + +| Level | Result | +|---|---| +| Level 1 — Software loopback | PASS | +| Level 2 — OTAC | PASS | +| Level 3 — OTC | N/A | + +Additional notes: