| @@ -0,0 +1,346 @@ | |||||
| bands: | |||||
| - name: uk-fm-broadcast | |||||
| start_hz: 8.75e+07 | |||||
| end_hz: 1.08e+08 | |||||
| center_hz: 1.02e+08 | |||||
| sample_rate: 4096000 | |||||
| fft_size: 512 | |||||
| gain_db: 32 | |||||
| tuner_bw_khz: 5000 | |||||
| use_gpu_fft: true | |||||
| classifier_mode: combined | |||||
| agc: true | |||||
| dc_block: true | |||||
| iq_balance: true | |||||
| pipeline: | |||||
| mode: wideband-balanced | |||||
| profile: wideband-balanced | |||||
| goals: | |||||
| intent: broadcast-monitoring | |||||
| monitor_start_hz: 8.8e+07 | |||||
| monitor_end_hz: 1.08e+08 | |||||
| monitor_span_hz: 2e+07 | |||||
| monitor_windows: | |||||
| - label: "" | |||||
| zone: focus | |||||
| start_hz: 8.75e+07 | |||||
| end_hz: 1.08e+08 | |||||
| center_hz: 0 | |||||
| span_hz: 0 | |||||
| priority: 1.25 | |||||
| auto_record: false | |||||
| auto_decode: false | |||||
| - label: "" | |||||
| zone: decode | |||||
| start_hz: 8.75e+07 | |||||
| end_hz: 1.08e+08 | |||||
| center_hz: 0 | |||||
| span_hz: 0 | |||||
| priority: 1.35 | |||||
| auto_record: false | |||||
| auto_decode: false | |||||
| signal_priorities: | |||||
| - wfm | |||||
| - rds | |||||
| - broadcast | |||||
| auto_record_classes: | |||||
| - WFM | |||||
| - WFM_STEREO | |||||
| auto_decode_classes: | |||||
| - WFM | |||||
| - WFM_STEREO | |||||
| - RDS | |||||
| surveillance: | |||||
| analysis_fft_size: 512 | |||||
| frame_rate: 12 | |||||
| strategy: multi-resolution | |||||
| display_bins: 2048 | |||||
| display_fps: 12 | |||||
| derived_detection: auto | |||||
| refinement: | |||||
| enabled: true | |||||
| max_concurrent: 24 | |||||
| detail_fft_size: 4096 | |||||
| min_candidate_snr_db: -3 | |||||
| min_span_hz: 60000 | |||||
| max_span_hz: 250000 | |||||
| auto_span: true | |||||
| resources: | |||||
| prefer_gpu: true | |||||
| max_refinement_jobs: 24 | |||||
| max_recording_streams: 32 | |||||
| max_decode_jobs: 16 | |||||
| decision_hold_ms: 2500 | |||||
| profiles: | |||||
| - name: legacy | |||||
| description: Current single-band pipeline behavior | |||||
| pipeline: | |||||
| mode: legacy | |||||
| profile: legacy | |||||
| goals: | |||||
| intent: general-monitoring | |||||
| monitor_start_hz: 0 | |||||
| monitor_end_hz: 0 | |||||
| monitor_span_hz: 0 | |||||
| monitor_windows: [] | |||||
| signal_priorities: [] | |||||
| auto_record_classes: [] | |||||
| auto_decode_classes: [] | |||||
| surveillance: | |||||
| analysis_fft_size: 2048 | |||||
| frame_rate: 15 | |||||
| strategy: single-resolution | |||||
| display_bins: 2048 | |||||
| display_fps: 15 | |||||
| derived_detection: auto | |||||
| refinement: | |||||
| enabled: true | |||||
| max_concurrent: 8 | |||||
| detail_fft_size: 2048 | |||||
| min_candidate_snr_db: 0 | |||||
| min_span_hz: 0 | |||||
| max_span_hz: 0 | |||||
| auto_span: true | |||||
| resources: | |||||
| prefer_gpu: false | |||||
| max_refinement_jobs: 8 | |||||
| max_recording_streams: 16 | |||||
| max_decode_jobs: 16 | |||||
| decision_hold_ms: 2000 | |||||
| - name: wideband-balanced | |||||
| description: Baseline multi-resolution wideband surveillance | |||||
| pipeline: | |||||
| mode: wideband-balanced | |||||
| profile: wideband-balanced | |||||
| goals: | |||||
| intent: broadcast-monitoring | |||||
| monitor_start_hz: 0 | |||||
| monitor_end_hz: 0 | |||||
| monitor_span_hz: 0 | |||||
| monitor_windows: [] | |||||
| signal_priorities: | |||||
| - wfm | |||||
| - rds | |||||
| - broadcast | |||||
| auto_record_classes: | |||||
| - WFM | |||||
| - WFM_STEREO | |||||
| auto_decode_classes: | |||||
| - WFM | |||||
| - WFM_STEREO | |||||
| - RDS | |||||
| surveillance: | |||||
| analysis_fft_size: 4096 | |||||
| frame_rate: 12 | |||||
| strategy: multi-resolution | |||||
| display_bins: 2048 | |||||
| display_fps: 12 | |||||
| derived_detection: auto | |||||
| refinement: | |||||
| enabled: true | |||||
| max_concurrent: 24 | |||||
| detail_fft_size: 4096 | |||||
| min_candidate_snr_db: -3 | |||||
| min_span_hz: 60000 | |||||
| max_span_hz: 250000 | |||||
| auto_span: true | |||||
| resources: | |||||
| prefer_gpu: true | |||||
| max_refinement_jobs: 24 | |||||
| max_recording_streams: 32 | |||||
| max_decode_jobs: 16 | |||||
| decision_hold_ms: 2500 | |||||
| - name: wideband-aggressive | |||||
| description: Higher surveillance/refinement budgets for dense wideband monitoring | |||||
| pipeline: | |||||
| mode: wideband-aggressive | |||||
| profile: wideband-aggressive | |||||
| goals: | |||||
| intent: high-density-wideband-surveillance | |||||
| monitor_start_hz: 0 | |||||
| monitor_end_hz: 0 | |||||
| monitor_span_hz: 0 | |||||
| monitor_windows: [] | |||||
| signal_priorities: | |||||
| - wfm | |||||
| - rds | |||||
| - broadcast | |||||
| - digital | |||||
| auto_record_classes: [] | |||||
| auto_decode_classes: [] | |||||
| surveillance: | |||||
| analysis_fft_size: 8192 | |||||
| frame_rate: 10 | |||||
| strategy: multi-resolution | |||||
| display_bins: 4096 | |||||
| display_fps: 10 | |||||
| derived_detection: auto | |||||
| refinement: | |||||
| enabled: true | |||||
| max_concurrent: 32 | |||||
| detail_fft_size: 8192 | |||||
| min_candidate_snr_db: -3 | |||||
| min_span_hz: 50000 | |||||
| max_span_hz: 280000 | |||||
| auto_span: true | |||||
| resources: | |||||
| prefer_gpu: true | |||||
| max_refinement_jobs: 32 | |||||
| max_recording_streams: 40 | |||||
| max_decode_jobs: 24 | |||||
| decision_hold_ms: 2500 | |||||
| - name: archive | |||||
| description: Record-first monitoring profile | |||||
| pipeline: | |||||
| mode: archive | |||||
| profile: archive | |||||
| goals: | |||||
| intent: archive-and-triage | |||||
| monitor_start_hz: 0 | |||||
| monitor_end_hz: 0 | |||||
| monitor_span_hz: 0 | |||||
| monitor_windows: [] | |||||
| signal_priorities: | |||||
| - wfm | |||||
| - broadcast | |||||
| - digital | |||||
| auto_record_classes: [] | |||||
| auto_decode_classes: [] | |||||
| surveillance: | |||||
| analysis_fft_size: 4096 | |||||
| frame_rate: 12 | |||||
| strategy: single-resolution | |||||
| display_bins: 2048 | |||||
| display_fps: 12 | |||||
| derived_detection: auto | |||||
| refinement: | |||||
| enabled: true | |||||
| max_concurrent: 16 | |||||
| detail_fft_size: 4096 | |||||
| min_candidate_snr_db: -2 | |||||
| min_span_hz: 50000 | |||||
| max_span_hz: 250000 | |||||
| auto_span: true | |||||
| resources: | |||||
| prefer_gpu: true | |||||
| max_refinement_jobs: 16 | |||||
| max_recording_streams: 40 | |||||
| max_decode_jobs: 16 | |||||
| decision_hold_ms: 3000 | |||||
| - name: digital-hunting | |||||
| description: Digital-first refinement and decode focus | |||||
| pipeline: | |||||
| mode: digital-hunting | |||||
| profile: digital-hunting | |||||
| goals: | |||||
| intent: digital-surveillance | |||||
| monitor_start_hz: 0 | |||||
| monitor_end_hz: 0 | |||||
| monitor_span_hz: 0 | |||||
| monitor_windows: [] | |||||
| signal_priorities: | |||||
| - rds | |||||
| - digital | |||||
| - wfm | |||||
| auto_record_classes: [] | |||||
| auto_decode_classes: [] | |||||
| surveillance: | |||||
| analysis_fft_size: 4096 | |||||
| frame_rate: 12 | |||||
| strategy: multi-resolution | |||||
| display_bins: 2048 | |||||
| display_fps: 12 | |||||
| derived_detection: auto | |||||
| refinement: | |||||
| enabled: true | |||||
| max_concurrent: 20 | |||||
| detail_fft_size: 4096 | |||||
| min_candidate_snr_db: -2 | |||||
| min_span_hz: 50000 | |||||
| max_span_hz: 200000 | |||||
| auto_span: true | |||||
| resources: | |||||
| prefer_gpu: true | |||||
| max_refinement_jobs: 20 | |||||
| max_recording_streams: 20 | |||||
| max_decode_jobs: 24 | |||||
| decision_hold_ms: 2500 | |||||
| detector: | |||||
| threshold_db: -60 | |||||
| min_duration_ms: 500 | |||||
| hold_ms: 1500 | |||||
| ema_alpha: 0.025 | |||||
| hysteresis_db: 10 | |||||
| min_stable_frames: 4 | |||||
| gap_tolerance_ms: 2000 | |||||
| cfar_mode: GOSCA | |||||
| cfar_guard_hz: 200000 | |||||
| cfar_train_hz: 100000 | |||||
| cfar_guard_cells: 3 | |||||
| cfar_train_cells: 24 | |||||
| cfar_rank: 36 | |||||
| cfar_scale_db: 23 | |||||
| cfar_wrap_around: true | |||||
| edge_margin_db: 6 | |||||
| max_signal_bw_hz: 260000 | |||||
| merge_gap_hz: 20000 | |||||
| class_history_size: 10 | |||||
| class_switch_ratio: 0.6 | |||||
| recorder: | |||||
| enabled: false | |||||
| min_snr_db: 0 | |||||
| min_duration: 500ms | |||||
| max_duration: 300s | |||||
| preroll_ms: 500 | |||||
| record_iq: false | |||||
| record_audio: true | |||||
| auto_demod: true | |||||
| auto_decode: false | |||||
| max_disk_mb: 0 | |||||
| output_dir: data/recordings | |||||
| class_filter: [] | |||||
| ring_seconds: 12 | |||||
| deemphasis_us: 50 | |||||
| extraction_fir_taps: 101 | |||||
| extraction_bw_mult: 1.35 | |||||
| debug_live_audio: false | |||||
| decoder: | |||||
| ft8_cmd: C:/WSJT/wsjtx-2.7.0-rc6/bin/jt9.exe -8 {audio} | |||||
| wspr_cmd: C:/WSJT/wsjtx-2.7.0-rc6/bin/wsprd.exe {audio} | |||||
| dmr_cmd: tools/dsd-neo/bin/dsd-neo.exe -fs -i {audio} -s {sr} -o null | |||||
| dstar_cmd: tools/dsd-neo/bin/dsd-neo.exe -fd -i {audio} -s {sr} -o null | |||||
| fsk_cmd: tools/fsk/fsk_decoder --iq {iq} --sample-rate {sr} | |||||
| psk_cmd: tools/psk/psk_decoder --iq {iq} --sample-rate {sr} | |||||
| debug: | |||||
| audio_dump_enabled: false | |||||
| cpu_monitoring: false | |||||
| telemetry: | |||||
| enabled: true | |||||
| heavy_enabled: false | |||||
| heavy_sample_every: 12 | |||||
| metric_sample_every: 8 | |||||
| metric_history_max: 6000 | |||||
| event_history_max: 1500 | |||||
| retention_seconds: 900 | |||||
| persist_enabled: false | |||||
| persist_dir: debug/telemetry | |||||
| rotate_mb: 16 | |||||
| keep_files: 8 | |||||
| logging: | |||||
| level: debug | |||||
| categories: | |||||
| - gap | |||||
| - prefir | |||||
| - boundary | |||||
| rate_limit_ms: 100 | |||||
| stdout: true | |||||
| stdout_color: true | |||||
| file: logs/trace.log | |||||
| file_level: debug | |||||
| time_format: "15:04:05" | |||||
| disable_time: false | |||||
| web_addr: :8080 | |||||
| event_path: data/events.jsonl | |||||
| frame_rate: 12 | |||||
| waterfall_lines: 200 | |||||
| web_root: web | |||||