audio analysis task


Implementing a networkable audio analysis tool based on an existing solution and an existing communications protocol. The purpose of the tool is to listen to N many channels of N many input devices and provide appropriate volume levels data to a control application.

Communication between the tool and the control application is via simple lenght-prefixed messages over a TCP stream. The control flow is as follows: Control application connects to the analysis tool. Analysis tool returns a list of audio input devices and the associated data. Control application requests the analysis tool to start listen to a specific device and specific channels. Analysis tool starts streaming back RMS values (and possibly other analysis data).

The existing solution is in Python and suffers from the "created in a hurry in 2 days"-syndrome. Given that the application is relatively simple and has an existing reference implementation, Rust is considered as the replacement language due to its benefits in security, safety and performance.