You heard right. Somehow our resident simulation hero, Rhys Goldstein, has found a way to approximate acoustic analysis using the same fundamental data structures he used to implement both pathfinding and visibility. Simon Breslav has built the core C++ library into the Space Analysis package and has posted it to the Dynamo Package Manager as version 0.3.0.
Here’s a screenshot of the feature in action:
This graph has two point sources, which can be combined by either union or intersection: for most scenarios I’d imagine it would be more useful to use union, which will aggregate multiple sources… we could use this to assess the distraction caused by audible “buzz” from major pedestrian routes through an office, for instance. That said, I can also imagine wanting to identify areas where multiple sound sources are in conflict (perhaps speakers from “competing” adjacent conference rooms).
Here’s a subsection of the graph – with nodes moved around for readability – that shows the guts of what’s happening.
You can set the intensity of the sound, as well as the amount the sound gets absorbed by barriers: this is global, even if barriers will clearly absorb or reflect sound differently depending on their material. Setting per-barrier absorption rates is currently out-of-scope for this package, which may limit its usefulness for use-cases requiring more precision (more on this later).
We’ve also deliberately kept intensity and absorption as factors between 0 and 1, to avoid any association with being physically accurate: if we’d measured intensity in decibels the temptation would have been to assume it was somehow “correct”. That said, I did suggest to the team that we should make sure the feature can “go to 11”, but that particular request fell on deaf ears. :-)
For the movie-lovers out there, here are the animations I showed in the last post.
As with pathfinding and visibility, this analysis should be considered a rough approximation that has been implemented using a 2D grid of a particular resolution: our intention is to create lightweight implementations that are efficient and directional, both beneficial characteristics when creating generative design workflows. We typically only need to assess whether one design is “better” than another, we don’t need to generate a value that is either precise or physically correct.
Please give the latest version of Space Analysis a try and let us know what you think. We’ll be adding more enhancements, in due course, but would love these to be driven by your feedback.