Skip to content

Latest commit

ย 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Noir Logo

๐ŸŽ›๏ธ NOIR

Advanced Per-Application Audio Patchbay & System Router for Windows

Release License: MIT Platform Electron

Noir is a modern, obsidian glassmorphic audio control center for Windows that gives you real-time patchbay cable routing between individual applications and physical audio endpoints.

Download Installer (.exe) โ€ข Download Portable (.exe) โ€ข Documentation


๐ŸŒŸ Key Features

Feature Description
๐Ÿ•ธ๏ธ Spider Connection Patchbay Dynamic glowing SVG cubic Bezier cables visually connect active applications to their assigned audio devices with animated audio particle flow.
โšก Interactive Cable Dragging Drag connection cables directly from any app's port socket and plug them into output devices with live rubber-banding physics.
๐Ÿ”€ Multi-Device Output Routing Route audio from a single application simultaneously across multiple audio outputs with independent checkbox selection.
๐Ÿค– Automation Engine Trigger-based automation for process launches/exits (e.g. auto-switch to Gaming profile on Valorant start) and recurring time schedules.
๐Ÿฆ† Smart Volume Ducking Automatically lower background music/media volumes during voice calls (Discord, Zoom, Teams, Meet).
๐ŸชŸ Mini Overlay Mode Compact, always-on-top frameless floating widget for lightning-fast volume control and profile switching during gaming or streaming.
๐ŸŽจ Theme Engine 4 curated obsidian palettes: Midnight Velvet, Cyberpunk Neon, Emerald Matrix, and Solar Amber.
๐ŸŽš๏ธ Low-Latency WASAPI Mixing In-memory session volume control and instantaneous mute toggles powered by native-sound-mixer.
๐Ÿ“Š Dynamic VU & Waveform Visualizers Real-time animated multi-band VU meters and live canvas waveform visualizers scaled to audio activity.
๐Ÿท๏ธ Hardware Disambiguation Distinguishes identical device types by their hardware adapter (e.g. Headphones (Realtek) vs Headphones (USB DAC)).
๐Ÿ’พ Persistent Audio Profiles Instant 1-click presets (Gaming, Music & Focus, Work / Meetings, Cinema) with custom profile snapshotting stored in %APPDATA%/Noir/profiles.json.
๐Ÿ”” System Tray Background Service Runs in the background, enables 1-click profile switching from the Windows taskbar tray context menu, and auto-starts with Windows.
๐Ÿ”ฎ Obsidian Glassmorphic UI Frameless, responsive desktop interface with curated dark color palettes, CSS custom properties, and smooth 60fps spring transitions.

๐Ÿ“ธ Interface Preview

+---------------------------------------------------------------------------------------+
|  ๐ŸŽต Noir Patchbay                                                    [โš™] [_] [โ–ก] [โœ•] |
+---------------------------------------------------------------------------------------+
|                                                                                       |
|   OUTPUT ENDPOINTS (3 active)                        AUDIO SOURCES (4 sessions)       |
|                                                                                       |
|   +--------------------------+                      +-------------------------------+ |
|   | ๐ŸŽง Headphones (Realtek)  |โ—- - - - - - - - - - -โ—| ๐ŸŽฏ VALORANT                   | |
|   |    Default ยท 2 apps      |   \                  |    [๐ŸŽง Headphones]  [ ๐Ÿ”Š 90% ]| |
|   +--------------------------+    \                 +-------------------------------+ |
|                                    \                                                  |
|   +--------------------------+      \- - - - - - - -โ—| ๐Ÿ’ฌ Discord                    | |
|   | ๐ŸŽง Headset (AKKORD-USB)  |                      |    [๐ŸŽง Headphones]  [ ๐Ÿ”Š 100%]| |
|   |    USB ยท 1 app           |โ—                     +-------------------------------+ |
|   +--------------------------+ \                                                      |
|                                 \- - - - - - - - - -โ—| ๐ŸŸข Spotify                    | |
|   +--------------------------+                      |    [๐ŸŽง Headset USB] [ ๐Ÿ”Š 45% ]| |
|   | ๐Ÿ”Š Speakers (Realtek)    |โ—                     +-------------------------------+ |
|   |    Speakers ยท 1 app      | \                    | ๐ŸŒ Chrome / YouTube           | |
|   +--------------------------+  \- - - - - - - - - -โ—|    [๐Ÿ”Š Speakers]    [ ๐Ÿ”Š 50% ]| |
|                                                     +-------------------------------+ |
|                                                                                       |
+---------------------------------------------------------------------------------------+
|  PROFILES:  [ ๐ŸŽฎ Gaming (Active) ]  [ ๐ŸŽต Music & Focus ]  [ ๐Ÿ’ผ Work ]  [ โž• New ]     |
+---------------------------------------------------------------------------------------+

๐Ÿ—๏ธ System Architecture

graph TD
    subgraph Frontend ["๐ŸŽจ Renderer Process (Obsidian Glassmorphism)"]
        UI_Spider["๐Ÿ•ธ๏ธ Spider Patchbay Canvas (SVG Bezier Engine)"]
        UI_Apps["๐ŸŽต Audio Source Nodes (Sliders & VU Meters)"]
        UI_Devs["๐Ÿ”Š Output Device Nodes (Status & Sockets)"]
        UI_Profiles["๐ŸŽ›๏ธ Presets Bar & Creation Modal"]
    end

    subgraph IPC_Bridge ["๐Ÿ”’ Secure IPC Bridge (preload.js)"]
        Bridge["contextBridge API / Event Emitters"]
    end

    subgraph Backend ["โšก Main Process (Electron & Node.js)"]
        AudioMgr["AudioManager (audioManager.js)"]
        ProfileMgr["ProfileManager (profiles.json)"]
        TrayMgr["TrayManager (Windows Taskbar Tray)"]
        WindowMgr["WindowStateManager (Multi-monitor Bounds)"]
        DevMonitor["DeviceMonitor (1.5s Change Polling)"]
    end

    subgraph OS ["๐Ÿ–ฅ๏ธ Windows Subsystem"]
        WASAPI["WASAPI Core Audio API (native-sound-mixer)"]
        PolicyConfig["IPolicyConfig API (SoundVolumeView)"]
        Registry["Windows Login Items (Autostart)"]
    end

    UI_Spider <--> Bridge
    UI_Apps <--> Bridge
    UI_Devs <--> Bridge
    UI_Profiles <--> Bridge

    Bridge <--> AudioMgr
    Bridge <--> ProfileMgr
    Bridge <--> TrayMgr
    Bridge <--> WindowMgr

    DevMonitor --> Bridge

    AudioMgr --> WASAPI
    AudioMgr --> PolicyConfig
    TrayMgr --> Registry
Loading

๐ŸŽ›๏ธ Built-in Audio Profiles

Preset Target Device Mappings Volume Defaults
๐ŸŽฎ Gaming โ€ข Games (Valorant, CS2, Steam, CoD) โž” Headphones
โ€ข Voice Chat (Discord, TeamSpeak) โž” Headphones
โ€ข Media & Browsers (Spotify, Chrome) โž” Speakers
Game: 90%
Discord: 100%
Music: 45%
๐ŸŽต Music & Focus โ€ข Music Apps (Spotify, Tidal, Apple Music) โž” Headphones
โ€ข Communications (Discord, Slack, Teams) โž” Muted
Music: 100%
Chat: 10% (Muted)
๐Ÿ’ผ Work / Meetings โ€ข Conference Apps (Zoom, Teams, Meet, Discord) โž” Headset
โ€ข Background Music โž” Speakers (Low)
โ€ข Game processes โž” Muted
Meetings: 95%
Media: 25%
Games: 0% (Muted)
๐ŸŽฌ Cinema / Media โ€ข Video Players (VLC, Netflix, Prime, YouTube) โž” Speakers / HDMI Soundbar
โ€ข Background Voice Apps โž” Headphones (Low)
Media: 100%
Chat: 30%

๐Ÿš€ Installation & Downloads

Option A: Windows Installer (Recommended)

Download and run Noir Setup 1.1.0.exe. It will install Noir with desktop shortcuts, Start Menu integration, and a clean uninstaller.

Option B: Portable Executable

Download Noir 1.1.0.exe to run Noir standalone with zero installation.


๐Ÿ’ป Building from Source

Prerequisites

  • Windows: 10 (1903+) or 11 (x64)
  • Node.js: v18.0.0 or higher
  • npm: v9.0.0 or higher

Steps

# 1. Clone the repository
git clone https://github.com/RajX-dev/Noir.git
cd Noir

# 2. Install dependencies
npm install

# 3. Start development server
npm run dev

# 4. Run ESLint code verification
npm run lint

# 5. Build production executable & installer
npm run build      # Generates unpacked directory in dist/win-unpacked
npm run package    # Generates NSIS installer & portable .exe in dist/

โŒจ๏ธ Shortcuts & Navigation

  • Tab / Shift+Tab: Navigate between interactive app cards, sliders, and profile pills.
  • Arrow Left / Right: Fine-tune volume levels in 5% increments.
  • Space / Enter: Activate mute toggles, open device menus, or switch profiles.
  • Esc: Dismiss active dropdowns or modals.
  • Click Tray Icon: Toggle hide/show and focus Noir instantly.
  • Right-Click Tray Icon: Open quick-switcher menu for background audio presets.

๐Ÿ“ Repository Structure

Noir/
โ”œโ”€โ”€ assets/
โ”‚   โ”œโ”€โ”€ icon.png              # Official Noir 512x512 app logo
โ”‚   โ””โ”€โ”€ tools/
โ”‚       โ””โ”€โ”€ SoundVolumeView.exe # NirSoft endpoint routing bridge
โ”œโ”€โ”€ docs/                     # Comprehensive Architecture Documentation
โ”‚   โ”œโ”€โ”€ architecture.md       # Data flow & IPC contracts
โ”‚   โ”œโ”€โ”€ phases.md             # 7-phase development roadmap
โ”‚   โ”œโ”€โ”€ product-requirements.md # PRD & specs
โ”‚   โ”œโ”€โ”€ tech-stack.md         # Technology choices & rationale
โ”‚   โ””โ”€โ”€ visuals.md            # CSS tokens & design guidelines
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ audio/                # Audio Engine
โ”‚   โ”‚   โ”œโ”€โ”€ audioManager.js   # Device & session coordinator & multi-output
โ”‚   โ”‚   โ”œโ”€โ”€ deviceMonitor.js  # Real-time event polling
โ”‚   โ”‚   โ””โ”€โ”€ nativeBridge.js   # Native C++ WASAPI wrapper
โ”‚   โ”œโ”€โ”€ automation/           # Phase 7: Automation Engine
โ”‚   โ”‚   โ”œโ”€โ”€ automationEngine.js # Rules coordinator & persistence
โ”‚   โ”‚   โ”œโ”€โ”€ processWatcher.js # Active process monitor
โ”‚   โ”‚   โ”œโ”€โ”€ scheduler.js      # Time/day schedule triggers
โ”‚   โ”‚   โ””โ”€โ”€ volumeDucker.js   # Dynamic speech/call volume ducker
โ”‚   โ”œโ”€โ”€ profiles/             # Presets & Profile Engine
โ”‚   โ”‚   โ””โ”€โ”€ profileManager.js # JSON serialization in %APPDATA%/Noir/
โ”‚   โ”œโ”€โ”€ renderer/             # Frontend UI
โ”‚   โ”‚   โ”œโ”€โ”€ index.html        # Main window markup & Spider canvas
โ”‚   โ”‚   โ”œโ”€โ”€ mini.html         # Always-on-top Mini Player window
โ”‚   โ”‚   โ”œโ”€โ”€ js/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ app.js        # Main UI controller & cable drawing
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ activityLog.js# Live action & automation history
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ automationUI.js # Automation rules builder modal
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ mini.js       # Mini overlay controller
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ notifications.js # Toast notifications
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ themeManager.js  # 4 obsidian color themes
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ visualizer.js # VU level meter physics
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ waveformVisualizer.js # Real-time canvas waveform
โ”‚   โ”‚   โ””โ”€โ”€ styles/
โ”‚   โ”‚       โ”œโ”€โ”€ main.css      # Design tokens & glassmorphism
โ”‚   โ”‚       โ”œโ”€โ”€ components.css # Spider board, sockets & modals
โ”‚   โ”‚       โ””โ”€โ”€ mini.css      # Mini player styles
โ”‚   โ”œโ”€โ”€ tray/                 # System Tray
โ”‚   โ”‚   โ””โ”€โ”€ trayManager.js    # Tray icon & live radio profile menu
โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ”‚   โ””โ”€โ”€ windowState.js    # Multi-monitor bounds persistence
โ”‚   โ”œโ”€โ”€ main.js               # Electron main process & IPC handlers
โ”‚   โ””โ”€โ”€ preload.js            # Secure contextBridge IPC
โ”œโ”€โ”€ LICENSE                   # MIT License
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ README.md

๐Ÿ“„ License

Distributed under the MIT License. See LICENSE for more information.

Developed with ๐Ÿ’œ by RajX-dev.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages