The server reads a wave file from disk and creates a stream of audio samples from it. The audio samples are then streamed to the client using gRPC. On the client side C# 8 async streams are used to asynchronously consume the stream of samples and feed them into an audio player.