|
1 | | - |
2 | | -# SpectrumNet - Real-Time Audio Spectrum Visualizer |
| 1 | +# SpectrumNet — Real-Time Audio Spectrum Visualizer |
3 | 2 |
|
4 | 3 | [](LICENSE) |
5 | 4 | [](https://dotnet.microsoft.com) |
6 | 5 |
|
7 | | -**SpectrumNet** is a high-performance audio visualizer for Windows that transforms any system audio into a captivating, real-time spectral display. Built with C#, WPF, and .NET 8, it combines advanced signal processing with a powerful rendering engine to create immersive visual experiences. |
| 6 | +**SpectrumNet** is a Windows audio visualizer that renders real-time spectrum effects from system audio. Built with C#, WPF, and .NET 8, it uses a SkiaSharp-based renderer pipeline with shared object pooling and centralized spectrum processing. |
8 | 7 |
|
9 | 8 |  |
10 | 9 |
|
11 | | -> ### 🚀 Now Available in C++! |
12 | | -> |
13 | | -> For users seeking maximum performance and a lighter footprint, a native C++ version of this project is now available! **[SpectrumCpp](https://github.com/diqezit/SpectrumCpp)** is built from the ground up with Win32 and Direct2D for raw speed and efficiency. |
14 | | -> |
15 | | -> **Check out SpectrumCpp if you:** |
16 | | -> - Need the absolute best performance, especially in overlay mode. |
17 | | -> - Prefer a minimal, dependency-free executable. |
18 | | -> - Are interested in native Windows development with C++. |
19 | | -
|
20 | | -## ✨ Key Features |
21 | | - |
22 | | -### 🎧 Advanced Audio Processing |
23 | | -- **Real-time System Audio Capture:** Captures desktop audio directly using WASAPI loopback—no extra configuration needed. |
24 | | -- **Multiple FFT Window Functions:** Choose between Hann, Hamming, and Blackman windows to fine-tune the spectral analysis. |
25 | | -- **Flexible Frequency Scaling:** Visualize sound across Linear, Logarithmic, Mel, and Bark frequency scales. |
26 | | - |
27 | | -### 🎨 Powerful Visualization Engine |
28 | | -- **20+ Unique Render Styles:** A vast collection of visualizers, including: |
29 | | - - **Bars:** Vertical, Circular, LED Meter |
30 | | - - **Waveforms:** Gradient Line, Heartbeat, Waterfall |
31 | | - - **Particles:** Fire, Raindrop, Text Effects |
32 | | - - **Advanced:** Voronoi Diagrams, Spectrum Fractals |
33 | | -- **Dynamic Color Palettes:** Customize your visualizer with beautiful gradient effects and pre-built themes. |
34 | | -- **Adjustable Quality Presets:** Instantly switch between Low, Medium, and High quality settings, with options for manual override to balance performance and visuals. |
35 | | - |
36 | | -### ⚙️ Customization and Control |
37 | | -- **Flexible Display Modes:** Use in a standard window or as an **Always-on-Top** overlay for seamless integration with your desktop. |
38 | | -- **Configurable Hotkeys:** Control the application without interrupting your workflow (`Start/Stop Capture`, `Toggle Overlay`, `Open Panel`). |
39 | | -- **Real-time Adjustments:** Fine-tune spectrum sensitivity, range, and other parameters on the fly with an interactive control panel. |
40 | | - |
41 | | -## 📸 Visual Showcase |
42 | | - |
43 | | -| Main View | Overlay Mode | |
44 | | -| :---: | :---: | |
45 | | -|  |  | |
46 | | -| **Menu & Performance Settings** | **Visual Settings Panel** | |
47 | | -|  |  | |
48 | | - |
49 | | - |
50 | | - |
51 | | -## 🚀 Getting Started (For Users) |
52 | | - |
53 | | -1. **Download the latest version** from the [**Releases**](https://github.com/diqezit/SpectrumNet/releases) page. |
54 | | -2. Unzip the archive and run `SpectrumNet.exe`. |
55 | | -3. Click **"Start Capture"** to begin visualizing your system's audio. |
56 | | -4. Use the controls and hotkeys to customize your experience: |
57 | | - - `Space`: Start or stop the visualization. |
58 | | - - `Ctrl + O`: Toggle the always-on-top overlay mode. |
59 | | - - `Ctrl + P`: Show or hide the main control panel. |
60 | | - |
61 | | -## 🛠️ Building from Source (For Developers) |
| 10 | +## Native C++ version |
| 11 | + |
| 12 | +For maximum performance and a smaller footprint, there is a native C++ version: **[SpectrumCpp](https://github.com/diqezit/SpectrumCpp)** (Win32 + Direct2D). |
| 13 | + |
| 14 | +## Features |
| 15 | + |
| 16 | +### Audio |
| 17 | +- Real-time system audio capture (WASAPI loopback). |
| 18 | +- FFT-based spectrum analysis (windowing via **FftSharp.Windows**). |
| 19 | +- Configurable sensitivity/range and smoothing. |
| 20 | + |
| 21 | +### Visualization |
| 22 | +- 25+ renderers (bars, waves, particles, grids, etc.). |
| 23 | +- Quality presets (Low/Medium/High) with adaptive advanced effects. |
| 24 | +- Shared object pooling for **SKPaint/SKPath** across renderers to reduce allocations. |
| 25 | +- Integrated performance metrics and FPS limiting. |
| 26 | + |
| 27 | +### UI / Controls |
| 28 | +- Window mode and overlay mode (always-on-top). |
| 29 | +- Hotkeys for common actions (Space, Ctrl+O, Ctrl+P). |
| 30 | +- Themes/styles with persistence and instant save on theme change. |
| 31 | +- Control panel improvements (Grid overlay instead of Popup) and StereoMode selector. |
| 32 | + |
| 33 | +## Screenshots |
| 34 | + |
| 35 | +| Control Panel | Animations | Themes | |
| 36 | +| :---: | :---: | :---: | |
| 37 | +|  |  |  | |
| 38 | + |
| 39 | +## Getting started |
| 40 | + |
| 41 | +1. Download the latest build from the [Releases](https://github.com/diqezit/SpectrumNet/releases) page. |
| 42 | +2. Unzip and run `SpectrumNet.exe`. |
| 43 | +3. Click **Start Capture** to begin. |
| 44 | +4. Hotkeys: |
| 45 | + - `Space`: Start/Stop visualization. |
| 46 | + - `O`: Toggle overlay mode. |
| 47 | + - `P`: Toggle control panel. |
| 48 | + |
| 49 | +## Building from source |
62 | 50 |
|
63 | 51 | ### Prerequisites |
64 | | -- [Visual Studio 2022](https://visualstudio.microsoft.com/) |
65 | | -- [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) |
| 52 | +- Visual Studio 2022 |
| 53 | +- .NET 8.0 SDK |
66 | 54 |
|
67 | 55 | ### Steps |
68 | | -1. **Clone the repository:** |
69 | | - ```bash |
70 | | - git clone https://github.com/diqezit/SpectrumNet.git |
71 | | - ``` |
72 | | -2. **Open the solution file** (`.sln`) in Visual Studio. |
73 | | -3. **Restore NuGet packages** (this should happen automatically). |
74 | | -4. **Build and run** the project in `Debug` or `Release` mode. |
75 | | - |
76 | | -## 💻 Technology Stack |
77 | | -- **Framework:** .NET 8.0 |
78 | | -- **UI:** WPF (Windows Presentation Foundation) |
79 | | -- **Rendering:** SkiaSharp for high-performance 2D graphics. |
80 | | -- **Audio Capture:** WASAPI Loopback (via a .NET wrapper like CSCore or NAudio). |
81 | | - |
82 | | -## ⚠️ Known Issues |
83 | | - |
84 | | -### Transparency Rendering Issues on Intel GPUs |
85 | | -Some users with older or integrated Intel GPUs may experience rendering artifacts in overlay mode. |
86 | | - |
87 | | -**Symptoms**: |
88 | | -- Partial or complete loss of window transparency. |
89 | | -- Flickering or visual glitches when interacting with the interface. |
90 | | -- Poor performance in overlay mode. |
91 | | - |
92 | | -**Affected Hardware**: |
93 | | -- Primarily observed on Intel HD/UHD Graphics (pre-2021 models). |
94 | | -- Laptops with hybrid graphics systems (NVIDIA Optimus). |
95 | | -- Systems with outdated graphics drivers. |
96 | | - |
97 | | -**Workaround**: |
98 | | -1. **Force Dedicated GPU**: In your NVIDIA or AMD control panel, set `SpectrumNet.exe` to always use the high-performance dedicated GPU. |
99 | | -2. **(For Developers) Force Software Rendering**: As a last resort, you can disable hardware acceleration by replacing `SKGLElement` with `SKElement` in the relevant XAML files. This will use CPU-based rendering, which is slower but more compatible. |
100 | | - ```xaml |
101 | | - <!-- In the visualizer's XAML, replace the hardware-accelerated element: --> |
102 | | - <skia:SKElement /> |
103 | | - |
104 | | - <!-- Instead of: --> |
105 | | - <!-- <skia:SKGLElement /> --> |
106 | | - ``` |
107 | | -
|
108 | | -## 🤝 Contributing |
109 | | -
|
110 | | -Contributions are welcome! If you have an idea for a new feature, a bug fix, or a new visualizer style, feel free to fork the repository, make your changes, and submit a pull request. |
111 | | -
|
112 | | -1. Fork the Project |
113 | | -2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) |
114 | | -3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) |
115 | | -4. Push to the Branch (`git push origin feature/AmazingFeature`) |
116 | | -5. Open a Pull Request |
117 | | -
|
118 | | -## 📄 License |
119 | | -
|
120 | | -This project is licensed under the **MIT License**. See the [LICENSE](LICENSE) file for details. |
| 56 | +```bash |
| 57 | +git clone https://github.com/diqezit/SpectrumNet.git |
0 commit comments