Alto 2.0 Released

Version 2.0 of Alto is out, featuring a more convenient API and support for new extensions.

This new version removes almost all lifetime annotations, instead relying on internal Arcs to maintain object relationships. I'm not exactly thrilled to make this change, but Rust still does not have a satisfying story for self-referential structs, and as hard as I've tried to make Rental usable, it's still just not very good. I can't in good conscience just tell people to use it when I know it's awkward and painful to integrate.

On a more positive note, lots of needless Result wrappers are removed for functions that can't fail. This should eliminate lots of error handling noise. Also support for 6 new extensions has bee implemented:

  • AL_EXT_STEREO_ANGLES: Change direction of stereo sources.
  • AL_EXT_SOURCE_RADIUS: Sources can have a size instead of just being a point.
  • AL_SOFT_gain_clamp_ex: Finer grained control over implicit gain clamping performed by the implementation.
  • AL_SOFT_source_resampler: Sources can choose a resampler algorithm.
  • AL_SOFT_source_spatialize: Explicitly opt in or out of spatialization, instead of just assuming mono means spatialized.
  • ALC_SOFT_output_limiter: Simple limiter to mitigate clipping.

For more detailed information on this and other OpenAL extensions, this repository has a comprehensive list.