mobiletechtracker / NetCoreAudio

Allows playback of audio files on .NET Core with minimal dependencies
MIT License
124 stars 20 forks source link

NetCoreAudio

The library allows playback of audio files on .NET on any supported operating system (Windows, macOS, Linux) and any CPU architecture (AMD, ARM, etc.) with minimal dependencies.

Prerequisites

The library can be downloaded and installed like any other NuGet package. On Windows, there are no further prerequisites, as it depends entirely on OS components for its functionality. On other operating systems, however, additional utilities may have to be installed before the library can fully function.

Mac dependencies

On Mac, the library depends on afplay for its audio playback functionality, which should already be included in the operating system.

However, for audio recording functionality, we need to install the ffmpeg tool.

Linux dependencies

Linux implementation depends on ALSA architecture. Therefore, the machine needs to have the following utilities installed, which may or may not be included in the distro:

In addition to this, we need mpg123 to be able to play MP3 files on Linux.

Usage

The library can play and record audio. It will automatically detect which OS it's running on and will activate the components specific to this OS.

Below is the description of its public API:

Audio Playback Functionality

For audio playback, the library exposes the Player class for audio playback, which detects the OS the library is running on and abstracts away any OS-specific audio playback implementations.

The class contains the following properties:

It also has the following methods:

The class also has the following event handler:

Audio Recording Functionality

For audio recording, we use the Recorder class. The class contains the following properties:

Contact and support

If you want to support me and my work, you can do so via this page.

If you want my help integrating this library with your software or making any bespoke changes to it to meet your needs, you can book my time via this page.

For any other queries, you can get in touch with me via LinkedIn.