Weather audio: measure openings around the listener for wind sound tone and volume #894

Open
opened 2026-10-20 18:41:26 +00:00 by sky_line · 0 comments
Owner

Follow-up to #783 (weather audio) and the room acoustics work (#683, #857, #858).

Today

Indoor wind is chosen from a roof/cover answer at the listener plus the room estimate: an indoor bed, or a muffled outdoor one. It doesn't know where the openings around you are, how big they are, or which way they face. So a room with an open window to windward sounds the same as a sealed one with the same roof cover.

Goal

Measure the openings around the listener (windows, doors, gaps, open sides) and use them to drive wind sound:

  • Volume grows with the open area exposed to the wind.
  • Tone:
    • Small openings whistle or howl, using a band-pass or the wind_whistle / wind_howl_window beds.
    • Large ones give broadband rush.
    • Openings facing into the wind sound stronger than ones on the lee side.
  • Position: wind is heard from the direction of the openings, not from everywhere.
  • Gusts modulate the openings, with whistle pitch following gust strength.

Approaches to evaluate

  • RT: reuse the acoustics ray machinery. Rays that escape the room give the opening directions and an approximate solid angle. Cluster them into openings (direction, angular size, distance), and accumulate them over time the same way #858's path cache does.
  • Without RT: use the weather's roof/occlusion maps and the room estimate's escape fraction. A coarse voxel grid around the listener (#856) is another option.
  • Compare cost against the existing acoustics budget. It should cost nothing when weather audio or wind is off.

Notes

  • Use the existing CC0 pack: wind_whistle*_loop, wind_howl_window_loop, wind_indoor_loop and wind_gust_loop. #884 covers UUID sounds later.
  • Keep it consistent with rain-on-roof and drip audio, which already use shelter answers at the listener.
Follow-up to #783 (weather audio) and the room acoustics work (#683, #857, #858). ## Today Indoor wind is chosen from a roof/cover answer at the listener plus the room estimate: an indoor bed, or a muffled outdoor one. It doesn't know where the openings around you are, how big they are, or which way they face. So a room with an open window to windward sounds the same as a sealed one with the same roof cover. ## Goal Measure the openings around the listener (windows, doors, gaps, open sides) and use them to drive wind sound: - **Volume** grows with the open area exposed to the wind. - **Tone:** - Small openings whistle or howl, using a band-pass or the `wind_whistle` / `wind_howl_window` beds. - Large ones give broadband rush. - Openings facing into the wind sound stronger than ones on the lee side. - **Position:** wind is heard from the direction of the openings, not from everywhere. - **Gusts** modulate the openings, with whistle pitch following gust strength. ## Approaches to evaluate - **RT:** reuse the acoustics ray machinery. Rays that escape the room give the opening directions and an approximate solid angle. Cluster them into openings (direction, angular size, distance), and accumulate them over time the same way #858's path cache does. - **Without RT:** use the weather's roof/occlusion maps and the room estimate's escape fraction. A coarse voxel grid around the listener (#856) is another option. - Compare cost against the existing acoustics budget. It should cost nothing when weather audio or wind is off. ## Notes - Use the existing CC0 pack: `wind_whistle*_loop`, `wind_howl_window_loop`, `wind_indoor_loop` and `wind_gust_loop`. #884 covers UUID sounds later. - Keep it consistent with rain-on-roof and drip audio, which already use shelter answers at the listener.
sky_line added this to the Slipstream project 2026-10-20 18:41:26 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#894
No description provided.