Spectro Monitor — приложение для приёма и анализа радиоэфира на SDR-плате. Весь тракт считается локально: от сырых отсчётов до спектра, детектора и записанного фрагмента.
Без облаков и внешних сервисов. Плата отдаёт поток I/Q, всё остальное — на компьютере.
Полный цикл: увидеть, найти, записать, прослушать.
Спектр в dBFS с накоплением и режимом максимума, водопад с прокруткой истории. Масштаб по частоте и уровню настраивается на лету.
Порог считается не от кадра целиком, а от местного шума вокруг каждого бина — поэтому в находке честно видно, на сколько дБ сигнал выше шума.
Найденный сигнал записывается в отдельный файл отсчётов, очередь выстраивается по силе сигнала: слабые находки не отбирают время у сильных.
NFM, WFM и AM. Перенос в основную полосу двухступенчатой децимацией, фильтрация, деэмфазис и подавление постоянной составляющей.
Опорный тон уводится от собственной линии настройки приёмника, чтобы не мерить юбку собственного гетеродина. Результат — поправка в dBFS.
Счётчики потока раз в секунду, первые байты до и после преобразователя, предупреждение о пустом фрагменте с уровнем входа.
Отсчёты от платы до звука и файла — четыре ступени.
Плата отдаёт блоки I/Q фиксированного размера. Блоки сразу расходятся двум потребителям: запись берёт их напрямую, обработка — через кольцевой буфер.
Собственное БПФ по основанию два с окном Ханна: крупное полотно для экрана и компактное для детектора — чтобы поиск не отставал от отрисовки.
Шум оценивается по процентилю бинов, каждый бин сравнивается с шумом рядом с ним. Находки объединяются по частоте и времени.
Перенос в основную полосу, фильтрация, демодуляция и запись. Форматы — отсчёты I/Q, звук и спектр.
Реальные истории из отладки — все заметки.
Поток живой, вход полон отсчётов, а на выходе ноль. Оказалось — шаг гетеродина оставался единицей.
Обход диапазона выбрасывал четверть блока вокруг центра. Разбор сырых блоков показал, что линия центра занимает один бин.
Порог считался от кадра целиком, а шум по полосе стоял на десять-двадцать дБ выше. Лечится оценкой местного шума.