Introduction
DISCLAIMER: Building the PER|FORMER sequencer is not recommended for beginners.
This page is based on the original Westlicht build guide.
This page is about hardware/build concerns, local simulator setup, and controller-template setup. For day-to-day firmware operation, use the User Manual.
The lower part of this page includes practical notes for building and launching the local Desktop Simulator, including MIDI and Launchpad connection setup.
If you just want the browser-based build, use the published Web Simulator instead of the local desktop flow described below.
For up-to-date known limits and validation status (hardware test scope, BeatStep Pro status, Voltage Mode edge-cases, controller limits), see User Manual - Known Limits / Validation Scope.
Sourcing Parts
To build the sequencer you first need to source all the required parts. The original build guide references the complete BOM, Octopart BOM, and assembly resources for the hardware project.
For the hardware build process and sourcing details, the original upstream guide remains the main reference: Westlicht Build Guide
Setup on macOS and Linux
Clone this repository:
git clone --recursive https://github.com/VinxScorza/performer.git
cd performer
Make sure you have a recent version of CMake installed. On Debian-based systems you may also need:
sudo apt-get install libtool autoconf cmake libusb-1.0.0-dev libftdi-dev pkg-config
To compile for hardware and allow flashing firmware:
make tools_install
Then set up the build directories:
make setup_stm32
make setup_sim
Setup on Windows
There is currently no native Windows build flow. The standard workaround is the Vagrant virtual machine, as in the original Westlicht documentation.
git clone --recursive https://github.com/VinxScorza/performer.git
cd performer
vagrant up
vagrant ssh
Build directories
After setup, build directories are available under build/[stm32|sim]/[release|debug].
Use release for hardware builds and debug for the Desktop Simulator.
Build for hardware
cd build/stm32/release
make -j
The sequencer build generates an UPDATE.DAT file suitable for firmware updates through the bootloader.
For full hardware assembly, flashing, and sourcing notes, refer to the original build guide: Westlicht Build Guide
Build for Desktop Simulator
cd build/sim/debug
make -j
./src/apps/sequencer/sequencer
Here, Desktop Simulator means the native local simulator build, distinct from the
browser-based Web Simulator published on the site.
The Desktop Simulator can use external MIDI ports. Run ./src/apps/sequencer/sequencer --midi to list
the available ports, then use options such as --midi-port, --midi-in, --midi-out,
--usb-midi-port, --usb-midi-in, --usb-midi-out, --trace-midi, and --trace-dio to route DIN and USB MIDI or inspect simulator traffic from the terminal.
Use none, off, or - to disable a default input or output assignment.
By default, the Desktop Simulator now starts with both DIN MIDI and USB MIDI disabled, so it does not keep probing missing MIDI devices unless you explicitly assign them from the command line.
In the current Vinx line, LP Note Style defaults to Circuit, so dedicated Launchpad Circuit editors are the normal reference workflow when you test Launchpad behavior through the Desktop Simulator.
Useful launch commands:
./src/apps/sequencer/sequencer --midi
./src/apps/sequencer/sequencer --midi-port "Your MIDI Port"
./src/apps/sequencer/sequencer --midi-in "Your MIDI In" --midi-out none
./src/apps/sequencer/sequencer --usb-midi-port "Your USB MIDI Port"
./src/apps/sequencer/sequencer --trace-midi
./src/apps/sequencer/sequencer --trace-dio
On macOS, some devices expose port directions from the device point of view. For example, a Launchpad Mini MK3
on the simulated USB MIDI port may need --usb-midi-in "Launchpad Mini MK3 LPMiniMK3 DAW Out" and
--usb-midi-out "Launchpad Mini MK3 LPMiniMK3 DAW In".
./src/apps/sequencer/sequencer \
--usb-midi-in "Launchpad Mini MK3 LPMiniMK3 DAW Out" \
--usb-midi-out "Launchpad Mini MK3 LPMiniMK3 DAW In"
Validation note: the simulator-side USB MIDI workflow is currently maintainer-validated on
macOS / OS X with Launchpad Mini MK3. For the current cross-device scope, use
User Manual - Known Limits / Validation Scope.
The simulator also infers the Launchpad model from the selected USB port names, so a Mini MK3 is no longer exposed to the firmware as the old Mini Mk2 default device.
For Launchpad-style USB controllers, the simulator also mirrors the matching sibling input and output ports
(DAW / MIDI) when possible, so pad presses and initialization messages can still land
on the endpoint the device actually uses.
When a MIDI connection is active, the lower status area shows DIN MIDI ... and USB MIDI ...
indicators with states such as OFF, WAIT, and OPEN.
When --trace-midi is enabled, the terminal prints the incoming DIN and USB MIDI messages that actually reach the simulator, which is useful when testing routing, Launchpad input, or external controller behavior.
When --trace-dio is enabled, the terminal prints simulated CLK OUT and RESET OUT
transitions as they happen, which is useful for checking clock pulse timing independently from the UI rendering.
External controller templates
The firmware includes an experimental 16-step Editing Mode controller path for 16-knob / 16-pad hardware.
This guide only covers controller setup assets and validation limits; the practical workflow is documented in the
User Manual - 16-step Editing Mode.
For BeatStep Pro, import the MIDI Control Center template:
PERFORMERstep16_BSP.beatsteppro.
For Launch Control XL, use Factory Preset #1.
The mapping is designed around MIDI channel 9. Controller compatibility is map-driven rather than brand-driven, so other controllers may work if they can emit the same map. Devices that cannot emit that map require a dedicated firmware profile.
Architecture limit: the current firmware supports exactly one external USB controller at a time, and that controller must be connected directly to the module USB host port.
USB hubs, including externally powered hubs, are not supported. The current firmware architecture does not implement hub-based multi-device handling on top of the STM32 USB Host stack, so devices connected through a hub are not enumerated by the firmware and cannot establish a usable controller connection.
Validation status for Launch Control XL, BeatStep Pro, simulator USB MIDI, and controller concurrency is tracked in
User Manual - Known Limits / Validation Scope.