How christian-mv/freenoisemap-fnm works
Free Noise Map is a desktop/mobile/web environmental-noise modelling application. Users place point, line or multiline sources and barriers, configure a receiver grid, run an ISO 9613-2-oriented calculation, then inspect an interpolated heatmap. The graph follows the sampled calculation and rendering calls; the README documents platform and modelling capabilities whose detailed implementations were not sampled, so uncertain internal wiring is omitted.
Main entry points: main_window.cpp Main window · noise_engine.cpp Noise engine · noise_grid.cpp Receiver noise grid · project_controller.cpp Project controller
Components 15
Map interaction
- Main window
code/ui/main_window.cpp - Map view
code/ui/fnm_view.cpp - Map items
code/ui/qgraphics_items/abstract_point_item.cpp - Polyline items
code/ui/qgraphics_items/abstract_polyline_item.cpp
Acoustic model
- Sources
code/core/point_source.cpp - Line sources
code/core/line_source_segment.cpp - Barriers
code/core/barrier_segment.cpp
Calculation
- Grid settings
code/core/grid_settings.cpp - Project controller
code/core/project_controller.cpp - Noise engine
code/core/noise_engine.cpp - Receiver noise grid
code/core/noise_grid.cpp - Grid interpolation
code/core/noise_grid.cpp
Result visualization
- Color gradient
code/core/gradient_color.cpp - Heatmap renderer
code/ui/receivers_grid.cpp
Other components
- User
Connections 19
- User → Main window: edits model
- Main window → Map view: controls map
- Main window → Map items: creates items
- Main window → Polyline items: creates lines
- Map items → Sources: updates position
- Polyline items → Line sources: owns segments
- Main window → Project controller: runs calculation
- Main window → Grid settings: sets grid
- Project controller → Receiver noise grid: uses receiver grid
- Project controller → Noise engine: calculates levels
- Noise engine → Sources: reads source data
- Noise engine → Line sources: discretizes lines
- Noise engine → Barriers: checks diffraction
- Noise engine → Receiver noise grid: updates receiver levels
- Main window → Grid interpolation: requests interpolation
- Grid interpolation → Receiver noise grid: refines receivers
- Main window → Heatmap renderer: paints results
- Heatmap renderer → Receiver noise grid: reads levels
- Heatmap renderer → Color gradient: maps levels to colors