Skip to main content

Overview

This guide walks you through compiling Lumix from source code. Building from source is ideal for developers who want to contribute to the project, customize the DAW, or test the latest features.
The source code is provided as-is. Expect crashes, unfinished features, and incomplete functionality. For the latest commits, check the Development branch.

Prerequisites

Required Software

1

Install .NET 6 SDK

The .NET 6 SDK is required to compile Lumix.Download and Install:Verify Installation:
dotnet --version
Expected output: 6.0.x or higher
Make sure to install the SDK, not just the runtime. The SDK includes the compiler and build tools.
2

Install Git

Required to clone the repository.
  • Windows: Download from git-scm.com
  • Verify: git --version
3

Install an IDE (Recommended)

Choose one of the following:
  • Visual Studio 2022 (Community, Professional, or Enterprise)
  • Visual Studio Code with C# extension
  • JetBrains Rider
Visual Studio 2022 is recommended as it provides the best .NET development experience on Windows.

Clone the Repository

1

Clone Lumix Source Code

Open a terminal or command prompt and run:
git clone https://github.com/ImAxel0/Lumix.git
cd Lumix
For Latest Development Build:
git checkout Development
The Development branch contains the latest features but may be unstable.
2

Verify Project Structure

Ensure you have the following structure:
Lumix/
├── Lumix/
│   ├── Lumix.csproj
│   ├── Program.cs
│   ├── Resources/
│   └── ...
└── README.md

Configuration

Choose Your Build Configuration

Important: Lumix must be compiled as either x86 or x64. The AnyCPU configuration is not supported.

Debug Mode Configuration

By default, the project defines a LOCAL_DEV constant in Debug mode. If you want to run the DAW in Debug mode, you must remove this constant.
To Remove LOCAL_DEV Constant: Edit Lumix/Lumix.csproj and comment out or remove these lines:
<!-- IF YOU WANT TO RUN THE DAW IN DEBUG MODE REMOVE OR COMMENT OUT THE FOLLOWING CONSTANT DEFINITION -->
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
  <DefineConstants>LOCAL_DEV</DefineConstants>
</PropertyGroup>
After removing:
<!-- IF YOU WANT TO RUN THE DAW IN DEBUG MODE REMOVE OR COMMENT OUT THE FOLLOWING CONSTANT DEFINITION -->
<!--
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
  <DefineConstants>LOCAL_DEV</DefineConstants>
</PropertyGroup>
-->

Building the Project

1

Open Solution

  1. Launch Visual Studio 2022
  2. Click File > Open > Project/Solution
  3. Navigate to the Lumix folder and open Lumix.csproj
2

Select Platform

In the toolbar, select your target platform:
  • x64 (recommended for modern systems)
  • x86 (for 32-bit systems)
Do not use “Any CPU” - Lumix requires a specific architecture.
3

Select Configuration

Choose between:
  • Debug: For development with debugging symbols (remember to remove LOCAL_DEV constant)
  • Release: For optimized builds
4

Restore NuGet Packages

Visual Studio will automatically restore packages. If not:
  • Right-click the solution in Solution Explorer
  • Select Restore NuGet Packages
5

Build the Project

  • Press F6 or click Build > Build Solution
  • Wait for the build to complete
  • Check the Output window for any errors
6

Run Lumix

Press F5 to run with debugging, or Ctrl+F5 to run without debugging.

Dependencies and Libraries

Lumix uses the following open-source libraries:

ImGui.NET

Version: 1.90.8.1.NET wrapper for Dear ImGui - provides the entire user interface

NAudio

Version: 2.2.1Audio playback and recording library for .NET

DryWetMidi

Version: 7.2.0MIDI file processing and playback library

VST.NET2-Host

Version: 2.1.0VST2 plugin hosting support
Additional Dependencies:
  • Veldrid (4.9.0): Cross-platform graphics library
  • Veldrid.StartupUtilities (4.9.0): Window and graphics initialization
  • Veldrid.ImageSharp (4.9.0): Image loading support
  • Vanara.PInvoke.User32 (4.0.1): Windows API interop
All dependencies are automatically downloaded via NuGet during the restore phase.

Output Structure

After a successful build, you’ll find the compiled application in:
Lumix/Lumix/bin/
├── Debug/
│   └── net6.0/
│       ├── win-x64/
│       │   ├── Lumix.exe
│       │   ├── cimgui.dll
│       │   └── [dependencies]
│       └── win-x86/
└── Release/
    └── net6.0/
        ├── win-x64/
        └── win-x86/

Common Build Issues

NuGet Restore Failures

Issue: Package restore fails or times out Solution:
dotnet nuget locals all --clear
dotnet restore --force

Platform Target Errors

Issue: “Platform target ‘AnyCPU’ is not supported” Solution: Always specify x64 or x86:
dotnet build -r win-x64  # or win-x86

LOCAL_DEV Constant Issues

Issue: Application behaves differently in Debug mode Solution: Edit Lumix.csproj and remove/comment out the LOCAL_DEV constant definition:
<!--
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
  <DefineConstants>LOCAL_DEV</DefineConstants>
</PropertyGroup>
-->

Missing cimgui.dll

Issue: Application fails to start with “cimgui.dll not found” Solution: The DLL should be copied automatically. If not:
  1. Locate cimgui.dll in Lumix/Resources/
  2. Copy it to the output directory (e.g., bin/Release/net6.0/win-x64/)

ASIO Driver Process Won’t Close

Issue: After closing Lumix, the process remains active Solution:
  • Use Task Manager to end the process manually
  • This is a known issue with ASIO4ALL driver cleanup
  • The code includes a temporary Process.GetCurrentProcess().Kill() workaround

Development Workflow

Running in Debug Mode

1

Configure Debug Build

Edit Lumix.csproj to remove the LOCAL_DEV constant as described above.
2

Set Breakpoints

In Visual Studio or your IDE, set breakpoints in the code where you want to pause execution.
3

Launch Debugger

Press F5 in Visual Studio or run:
dotnet run -c Debug -r win-x64
4

Access Debug View

In the running application:
  • Go to View > Debug in the menu
  • Or check the debug window that appears in Debug builds

Testing Changes

The project is under active development. Pull requests are not currently accepted, but you can fork the repository for personal modifications.
Recommended Testing Workflow:
  1. Make changes to the source code
  2. Build in Debug mode for testing
  3. Test with various audio/MIDI files
  4. Check VST plugin compatibility
  5. Build in Release mode for performance testing

Publishing a Build

To create a distributable version of Lumix:
dotnet publish -c Release -r win-x64 --self-contained false
Self-contained Build (includes .NET runtime):
dotnet publish -c Release -r win-x64 --self-contained true
Self-contained builds are significantly larger (~150MB+) but don’t require .NET to be installed on the target system.

Contributing

The project currently does not accept pull requests as it’s still in early development stages. However, you can:

Useful Keyboard Shortcuts

While testing your build:
  • F11: Toggle fullscreen
  • Space: Play/Stop playback
  • Ctrl+;: Open Preferences

Next Steps

Now that you have Lumix compiled:

Explore the Codebase

Browse the source to understand Lumix’s architecture

Introduction

Learn how to use Lumix’s features

Additional Resources

Build docs developers (and LLMs) love