How edoardomor/lars works
LARS is a JUCE audio plug-in for separating a stereo drum mix into kick, snare, toms, hi-hat and cymbal stems. A producer loads audio in the editor, runs separation, previews the input or stems, and exports stems as WAV files or by drag-and-drop. The sampled code shows editor-to-processor access and Python separation/model components, but not the complete C++ model-loading path; that connection is marked unverified. The Python separator is a distinct implementation path, not confirmed as called by the plug-in.
Main entry points: PluginEditor.cpp Editor workflow · separator.py Python separator · PluginProcessor.cpp Audio processor · ClickableArea.h Waveform controls
Components 16
Plug-in runtime
- Editor workflow
drums_demix/src/PluginEditor.cpp - Audio processor
drums_demix/src/PluginProcessor.cpp - Waveform controls
drums_demix/src/ClickableArea.h - Five drum stems
drums_demix/src/PluginEditor.cpp
Separation models
- Neural network utility
drums_demix/src/NeuralNetwork.cpp - Python separator
drums_demix/net/separator.py - U-Net model
drums_demix/net/unet.py - Scripted stem models
drums_demix/Resources - Model configuration
drums_demix/net/saved_models.yaml - Model scripting
drums_demix/net/script_modules.py
Audio utilities
- Audio transforms
drums_demix/net/utils.py - C++ audio utilities
drums_demix/src/Utils.cpp
Other components
- Producer
- DAW host
- Drum mix
- WAV stems
Connections 18
- Producer → Editor workflow: operates
README.md - DAW host → Audio processor: hosts
README.md - Producer → Drum mix: loads
README.md - Editor workflow → Audio processor: accesses transports
drums_demix/src/PluginEditor.cpp - Audio processor → Editor workflow: creates
drums_demix/src/PluginProcessor.cpp - Editor workflow → Waveform controls: uses controls
- Editor workflow → Drum mix: opens audio
drums_demix/src/PluginEditor.cpp - Editor workflow → Five drum stems: separates audio
drums_demix/src/PluginEditor.cpp - Editor workflow → WAV stems: writes stems
README.md - Waveform controls → WAV stems: drags files
drums_demix/src/ClickableArea.h - Five drum stems → Producer: previews
README.md - Python separator → Model configuration: reads paths
drums_demix/net/separator.py - Python separator → U-Net model: instantiates
drums_demix/net/separator.py - Python separator → Audio transforms: uses transforms
drums_demix/net/separator.py - Model scripting → U-Net model: scripts model
drums_demix/net/script_modules.py - Python separator → Five drum stems: returns stems
drums_demix/net/separator.py - Neural network utility → Neural network utility: implements forward
drums_demix/src/NeuralNetwork.cpp - C++ audio utilities → Audio transforms: parallel utility