museumsvictoria / spatial_audio_server

An audio backend for the multi-layered soundscape of Beyond Perception: Seeing the Unseen, a permanent exhibition at Scienceworks in Melbourne, Australia.
81 stars 14 forks source link

Add Peak and RMS, display all Sounds in GUI, Add continuous preview #37

Closed mitchmindtree closed 6 years ago

mitchmindtree commented 6 years ago

This sets up the Audio -> GUI communication channel for monitoring audio state. Currently this is used for monitoring Peak and RMS per-channel for active sounds but will also be used for monitoring speaker output levels, FFT data and possibly sound-channel->speaker mappings. Also currently monitors active sound position which will be useful when the composer thread begins composing movement paths.

Add a Detector type used for detecting RMS and Peak. This will soon be updated to perform both wide-band and narrow-band FFTs.

One-shot source previews now correctly automatically end and disappear from the GUI. Support for continuous (looping) source previews has been added after adding the necessary changes to the WAV decoding library upstream.

The GUI is now setup to display all active sounds and animates their channels to demonstrate per-channel amplitude. The displayed source preview is now implemented as a special-case active sound that can be manually positioned and has a unique colour to stand out from other sounds.

Audio server also now benefits from some upstream performance improvements to the sample crate including the addition of bounded and fixed-size ring buffers and their use within RMS detection.

Note: This currently depends on local builds of hound and sample, however these will be changed back to the crates.io dependencies as soon as the recent patches have been published.

Work in this PR relates to #3, #7, #12, #13.