mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
617b1b840bc946e5f9fcbcb4470b08fc80732956
Два источника искажений при передаче с микрофона компьютера: 1. SoundCard mic путь в TX-потоке (WDSPEngine.pas) при неполном блоке подменял голосовой хвост в кольце тишиной. PortAudio отдаёт по 128 сэмплов, в кольце часто < FAudioBufSize → ProcessTXBlock уходил в else-ветку и слал блок нулей, оставляя голос на следующий тик. Результат: чередование «голос/тишина» = треск ≈50–100 Гц. Теперь подмена тишиной только при Avail=0; иначе ждём следующий тик. Добавлен PushTXMicSamplesD — батч-пуш с одной будилкой семафора. 2. DUC IQ packetizer (MainForm.pas/OnTXIQReady) добивал последний неполный пакет нулями. FTXOutBufSize не кратен 240 (4096 mod 240=16), из-за чего в каждом TX-блоке возникал провал ≈1.16 мс каждые ≈21 мс ≈ 47 Гц гул. Теперь хвост переносится в следующий вызов через FDUCPendingI/Q/Count; шлются только полные пакеты по 240 пар. Дополнительно: ScaleIQ24 клампит результат в [-2^23, 2^23-1] чтобы пики от EQ/компрессора (V чуть >1.0) не оборачивались через 24-bit wrap → щелчки на громких сэмплах. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Languages
Pascal
96.4%
Python
2.9%
Shell
0.6%