A powerful MIDI to Windows audio mixer controller for .NET9. Mideej lets you control Windows application volumes and audio routing using MIDI controllers like faders, knobs, and buttons.
- 🎛️ Multi-Channel Control: Up to 8 simultaneous audio channels with individual volume control
- 🎹 MIDI Controller Support: Works with any MIDI device (tested with M-Vave SMC Mixer, Behringer X-Touch Mini, Novation Launchpad)
- 🎚️ Real-time Fader Control: Smooth, responsive volume control with visual feedback
- 🔇 Mute & Solo: Quick mute and solo buttons for each channel with LED feedback
- 📱 Audio Application Mapping: Assign any Windows audio application to any channel
- 🔁 Exclusive Session Assignment: A session can be assigned to only one channel at a time (reassignment removes it from others)
- ⏯️ Transport Controls: Map Play/Pause, Previous, and Next to controller buttons with LED feedback
- 🔁 Default Device Switching: Quickly swap Windows default Output/Input devices from the controller
- 🔆 LED Feedback Lifecycle: Startup animation (SMC), state restore on connect, and clean LED shutdown on exit
- 🎨 Modern UI: Themeable WPF UI with multiple built-in themes
- 🔌 Hot-plugging: Connect and disconnect MIDI devices on the fly
- 💾 Controller Presets: Pre-configured mappings for popular MIDI controllers
- ⚡ High Performance: Built on .NET9 for optimal performance and low latency
mideej.mp4
- Windows10 version1809 (build17763) or later
- .NET 9.0 Runtime (Desktop)
- A MIDI controller (physical or virtual)
- Download the latest release from the Releases page
- Extract the archive to a folder of your choice
- Run
Mideej.exe
- Clone the repository:
git clone https://github.com/jimmyeao/Mideej.git
cd Mideej- Build the project:
dotnet build -c Release- Run the application:
dotnet run###1. Connect Your MIDI Controller
- Plug in your MIDI controller via USB
- Launch Mideej
- Pick your device from the MIDI Device dropdown and click Connect
- For M‑Vave SMC: a short LED startup animation plays, then LEDs reflect the current state
###2. Map Audio Applications to Channels
- Click the gear icon (⚙️) on any channel
- Select one or more active audio applications or devices
- Channel names update to show the selection
- Session assignment is exclusive: assigning a session to a channel removes it from any other channel
###3. Configure MIDI Mappings
- Volume: Map faders/knobs (CC or pitch-bend faders)
- Buttons: Map Mute, Solo, Record, Select to Note buttons
- Transport (global): Map Play/Pause, Next, Previous (Notes or CC)
- Note: Cycle Session mapping is no longer supported via MIDI
Open Manage Mappings to review/remove mappings. Mappings persist in your settings.
###4. Control Your Audio
- Faders/Knobs: Adjust application volume (0–100%)
- M button: Mute/unmute the channel (LED reflects state)
- S button: Solo the channel (muting others; LED reflects state)
- Record button (devices only): See “Default Device Switching” below
- Select button LED: See “Select LED (Audio Activity)” below
You can switch the Windows default playback/recording device directly from mapped channels:
- Assign an Output device (speaker) or Input device (microphone) session to a channel
- Press that channel’s Record button to set it as the Windows default
- The Record LED lights on the channel that represents the current default device
- On startup/connect, Mideej detects and lights the current defaults automatically
Notes:
- Pressing Record on application/system sessions does nothing
- Switching default devices turns off the LED on the previous default’s channel and turns it on for the new one
- The Select button LED indicates recent audio activity on a channel
- It turns on when the channel’s assigned sessions have audio above a tiny threshold
- It turns off automatically ~500ms after activity stops
- The Select button itself is read-only in Mideej (presses are ignored). It’s used purely as an activity indicator
- Play/Pause: Both mapped Play and Pause buttons toggle between states
- LEDs: Play LED is on when playing; Pause LED is on when paused
- Next/Previous: LEDs blink briefly on press
- On connect/startup:
- M‑Vave SMC devices run a short LED animation
- All mapped LEDs are then restored to reflect current states (Mute, Solo, Select, Transport, default device Record)
- On disconnect/exit:
- Mideej sends All Sound Off / Reset All Controllers / All Notes Off and explicitly turns off mapped LEDs
- SMC-specific note ranges are also cleared so the panel is dark after exit
Includes presets for:
- M‑Vave SMC Mixer: 8-channel controller with LED buttons (tested)
- Behringer X‑Touch Mini: Encoders + buttons (untested)
- Novation Launchpad: Grid controller (untested)
Custom controllers are supported via learning and saved automatically.
Controller presets live in ControllerPresets/ as JSON. You can create your own by copying an existing preset.
Example (simplified):
{
"ControllerName": "Your Controller",
"Channels": [
{ "ChannelNumber":1, "FaderCC":0, "MuteNote":16, "SoloNote":32 }
]
}- .NET 9.0, WPF
- CommunityToolkit.MVVM
- NAudio (audio/MIDI)
PRs welcome.
See LICENSE.txt.
Open an issue if you hit problems or have ideas.