The only browser-based Valeton GP-200 preset editor. Works on Linux, Windows, macOS, and Chrome OS — no installation required.
The official Valeton GP-200 editor software is Windows-only. Preset Forge runs in any modern browser (Chrome/Chromium recommended for USB MIDI). Tested on Linux Mint, Windows 11, and macOS.
https://preset-forge.com · Supports GP-200 firmware 1.8.0 · Open source · Free
Preset Forge lets you edit Valeton GP-200 multi-effects pedal presets (.prst files) directly in the browser. You can:
- Load and edit presets — open
.prstfiles, tweak all 305 effects across 11 slots, download the result - Live USB MIDI editing — connect your GP-200 via USB and push changes to the device in real time (toggle effects, adjust parameters, reorder the signal chain)
- Import Line6 HX Stomp presets (experimental) — convert
.hlxfiles to GP-200 format - Build live setlists — timed cue points for automatic preset switching during gigs, with 3-2-1 count-in
- Share and discover presets — community gallery with per-effect filtering across all 305 effects
- Admin dashboard — user/preset management, error console with GitHub issue creation, audit log
Editing presets (loading, editing, and downloading .prst files) works in any modern browser on any OS — no special requirements.
Live USB MIDI editing uses the Web MIDI API with SysEx. The entire GP-200 protocol is SysEx, so a browser needs Web MIDI with SysEx support — which narrows it down to Chromium-based browsers:
| Browser | Edit presets | Live USB MIDI (SysEx) |
|---|---|---|
| Google Chrome / Chromium (desktop) | ✅ | ✅ Recommended (since v43) |
| Microsoft Edge (desktop) | ✅ | ✅ (since v79) |
| Brave / Opera / Vivaldi (desktop) | ✅ | ✅ Chromium-based |
| Chrome / Chromium (Android) | ✅ | |
| Firefox (desktop, v108+) | ✅ | ✅ Works — on first use Firefox auto-prompts you to install its generated MIDI site-permission add-on, then asks for MIDI permission like Chromium. Needs a secure context (HTTPS). |
| Firefox (Android) | ✅ | ❌ No Web MIDI |
| Safari (macOS) | ✅ | ❌ No Web MIDI (any version) |
| Any browser on iOS / iPadOS | ✅ | ❌ No Web MIDI — all iOS browsers use WebKit |
Short version: for live USB editing, use Chrome, Edge, or another Chromium-based browser on desktop.
- A Chromium-based desktop browser — Chrome, Edge, Brave, Opera, or Chromium — or Firefox 108+ (it auto-prompts a one-time MIDI add-on on first use).
- A secure connection (HTTPS). Web MIDI only works on secure origins. preset-forge.com is served over HTTPS;
localhostalso counts for local development. - Allow the MIDI permission prompt. Preset Forge requests SysEx access — click Allow when the browser asks. Without SysEx the GP-200 cannot be controlled.
- A USB data cable (not a charge-only cable) and the GP-200 powered on.
- No other app holding the device. Close the official Valeton editor, any DAW, or other MIDI software first — only one application can own the USB-MIDI port at a time.
- Per OS: Linux works via ALSA in Chrome/Chromium with no extra driver; Windows and macOS use the device's class-compliant USB-MIDI driver (no install needed). Safari is excluded on every OS.
Preset Forge is the only GP-200 editor that runs on Linux. Tested on Linux Mint with Chrome. The official Valeton software requires Windows.
For USB MIDI on Linux: install Chrome or Chromium, connect the GP-200 via USB, and grant MIDI permission when the browser asks.
Hit a bug with live USB editing — an effect won't switch, a preset won't save, an IR/NAM won't load? You can record the USB-MIDI traffic between your PC and the GP-200 and send it to us. That capture lets us reproduce and fix the issue.
A small GUI tool makes this easy — no command line required:
python scripts/gp200-capture-gui.py # Windows: run as AdministratorConnect the GP-200, pick the USB interface, click Start, reproduce the
problem, click Stop, then attach the resulting .pcap file to a
GitHub issue.
Full setup (Wireshark + USBPcap + Python/Tkinter), step-by-step instructions and troubleshooting: docs/capture-tool.md.
- Preset Editor —
.prstfiles (1224 bytes, 11 slots, 305 effects, 15 parameters per effect). Pedalboard view with patch cables - 305 Effects — names and parameters extracted from the official Valeton
algorithm.xml - Live USB MIDI — SysEx protocol reverse-engineered and hardware-verified with firmware 1.8.0 (14 message types)
- HX Stomp Import (experimental) — Line6 HX Stomp
.hlx→ GP-200 format - Playlists & Cue Points — timed setlists for live gigs, slot-based preset switching, 3-2-1 count-in
- Preset Gallery — community sharing, per-effect filtering (305 effects × 12 modules)
- MIDI Auto-Reconnect — 3 automatic reconnect attempts on USB disconnect
- PWA / Offline — editor works offline; gallery requires internet
- Admin Area — user management (suspend/warn/delete), preset moderation (flag/unpublish/delete), error console with GH issue creation, audit log
- Account system with profile, avatar, email verification, login via email or username
- Role-based access (USER/ADMIN)
- Fully bilingual (DE/EN) · WCAG 2.1 AA
- Next.js 15 App Router + React 19 + TypeScript strict
- Tailwind CSS (Dark theme, JetBrains Mono + DM Sans)
- Prisma 5 + PostgreSQL 16
- Lucia v3 (Session-Auth, Argon2id)
- Garage (S3-kompatibler Object Store) für Avatare und Presets
- next-intl 4 (DE/EN)
- Vitest (346 Unit-Tests, 76% Coverage) + Playwright (E2E + A11y)
- Node.js 22+ (LTS)
- Docker (für PostgreSQL, Garage, Mailhog)
# Dependencies
npm install --legacy-peer-deps
# Infrastruktur starten (PostgreSQL, Garage, Mailhog)
docker compose up -d
# Garage einmalig initialisieren → gibt Access Keys aus
bash scripts/garage-init.sh
# .env.local anlegen (Vorlage: .env.local.example)
cp .env.local.example .env.local
# → Access Keys aus garage-init.sh eintragen
# Datenbankmigrationen
npx prisma migrate dev
# Dev-Server
npm run dev # http://localhost:3000Hinweis: Immer
--legacy-peer-depsverwenden — lokale npm-Version ist 11.x, Lock-File wurde damit erzeugt.
npm run test # 346 Unit-Tests (Vitest)
npm run test:coverage # Coverage-Report (76% Statements)
npm run test:e2e # Playwright E2E (App + Garage + DB erforderlich)npm run build
# Docker
docker build -t gp200editor .
docker run -d -p 3000:3000 gp200editor# Erstmalig:
cd /opt && git clone https://github.com/phash/gp200editor.git && cd gp200editor
bash scripts/deploy-vps.sh # Setup: Build, Garage, SSL, Nginx
# Updates:
bash scripts/deploy-update.sh # git pull → build → restart (Migrations laufen automatisch)DB-Migrationen laufen automatisch bei jedem Container-Start (docker-entrypoint.sh).
Alle User-Presets sind exakt 1224 Bytes. Das Format wurde per Reverse Engineering dokumentiert:
- Magic
TSRP(reversed "PRST") + Device ID2-PG(reversed "GP-2") - 11 Effekt-Blöcke à 72 Bytes mit Effekt-Code (uint32), Active-Flag und 15× float32 Parametern
- 305 Effekte mit Namen und Parameter-Definitionen aus der offiziellen Valeton GP-200 Editor Software (
algorithm.xml)
Details: CLAUDE.md
Vorlage: .env.local.example
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/gp200
GARAGE_ENDPOINT=http://localhost:3900
GARAGE_ACCESS_KEY_ID=<from garage-init.sh>
GARAGE_SECRET_ACCESS_KEY=<from garage-init.sh>
GARAGE_BUCKET=avatars
GARAGE_PRESET_BUCKET=presets
EMAIL_FROM=noreply@gp200editor.local
EMAIL_SMTP_HOST=localhost
EMAIL_SMTP_PORT=1025
NEXT_PUBLIC_APP_URL=http://localhost:3000
Technische Entscheidungen und Konventionen: CLAUDE.md