Libaudioverse 0.9a5

7 views
Skip to first unread message

Austin Hicks

unread,
Aug 17, 2016, 9:23:55 AM8/17/16
to libaud...@camlorn.net
Hi,

Libaudioverse 0.9a5 is building now. Changes:


As discussed previously, all default_* properties on the
environment drop the default part of their name, save for default_size.
Instead, sources read from the environment by default. Three
properties--control_panning, control_distance_model, and
control_reverb--can be set to true to disable this functionality for
properties related to the three categories. In addition, the helper
function Lav_sourceNodeSetPropertiesFromEnvironment can be used to reset
all source properties from the environment. Note that changes to
environment properties are not reflected on the source properties, even
when the source is using them.


Note that default_size is still copied on source creation, and
never thereafter. While it makes sense for the other properties to
change by default, size is a very per-object quantity.


This release also includes some tweaks to distance models:


- The exponential distance model is now called inverse. This was done
because it's not actually exponential at all, and I potentially want the
name for something else


- The equations for the inverse and inverse_square distance model were
tweaked such that it is no longer possible to have a sudden jump from an
extremely loud source to complete silence at max_distance. This could
be seen with the old inverse and inverse square distance models for
small max_distance values. This was done by scaling things such that
the volume just before max_distance is about -25 DB. The linear
distance model was left untouched.


- In order to work well with the new equations, the defaults ofr
max_distance and reverb_distance have been changed to 150 and 75,
respectively.


Anyone doing audiogames should try inverse. The advantage of it is that
the new one emphasizes distance changes of close objects very well.
This is ideal for things like powerups when what you need to know is how
close you are when you're close, and the general direction when it's far
away. Inverse square is more natural, and a pretty close approximation
to what happens in an open field (but not a room or hallway, thus the
different options). I've added notes to the manuals on this.


Finally, I have removed the Lav_3D_* identifiers from the C API. There
are no longer common properties between the environment and source node
from the perspective of C users; you have to use Lav_SOURCE_POSITION and
Lav_ENVIRONMENT_POSITION as opposed to a generic Lav_3D_POSITION. This
was done to make room for an optimization that will probably happen
post-0.9 and which probably won't effect current projects. At the
moment, we use std::map for property lookups, but I have the tools and
the data required to avoid the overhead of such and just use a flat
array in future.


This release doesn't contain the thing that will prevent you
setting attributes on Libaudioverse objects that Libaudioverse doesn't
put there in the Python bindings, mostly because I forgot to add it
before pressing the button and I don't get any do-overs because Pypi is
annoying like that. I need to make some documentation improvements, so
I'll probably just fold those about 5 lines into an a6 or something.
it's not like releasing an alpha is expensive, after all.

Reply all
Reply to author
Forward
0 new messages