micser icon indicating copy to clipboard operation
micser copied to clipboard

Micser is a modular audio routing framework for Microsoft Windows (mostly) written in C#.

Current State

As the initial version did not meet some of my expectations the project is currently undergoing a major refactoring. The main problems I wish to address are:

  • Using WPF was not an optimal choice. I struggled to create a good user experience, especially for the main dashboard.
  • Communication between the frontend and the service via named pipes caused security problems on some machines.

Additionally, as I currently work mostly in web development and feel more comfortable there, this led me to start a big refactoring process, which involves:

  • Recreating the UI as a web app based on React and using the React-Flow library
  • Converting the service communications to a REST API

Because of this, the development of new features will be on hold until I reach feature parity with the old architecture.

Micser

Micser is a modular audio routing application for Microsoft Windows (mostly) written in C#.

The application includes the following parts:

  • WPF application with graphical audio routing using widgets
  • Audio engine Windows service
  • Virtual audio cable driver with a configurable number of devices (WIP, will require an extended validation code signing certificate)

Building

Requirements

  • Visual Studio 2019
    • .NET Core SDK 3.1
    • Windows 10 SDK, version 10.0.18362.0
    • WDK for Windows 10, version 1903
    • MSVC v142 build tools & spectre-mitigated libs (v14.21)
  • WiX Toolset 3.11.1

Build Status micser CI

Installer

Building the installer (Micser.Setup project) and the driver (Micser.Vac.* projects) in Release mode requires the presence of a code signing certificate. The certificate needs to be named "Certificate.pfx" and placed in the folder "crt" in the repository root.

Plugins

Micser is a modular framework and can easily be extended with plugins.

The main modules (Device In-/Output, Gain, Compressor, ..) are provided in the Micser.Plugins.Main assembly, which serves as an example for how to implement a plugin for Micser.

Credits

This project uses the following libraries: