Sing or play a line. Get MIDI back.
Warf listens to a single monophonic voice — vocals, guitar, bass, a wind instrument — and converts what it hears into real-time MIDI note events. As a free VST3 plugin for your DAW, or right in your browser, no install required.
From sound wave to note event, in real time.
Warf tracks pitch continuously and turns it into MIDI as you play — or convert an existing recording in one pass.
Real-time pitch tracking
A YIN-based pitch tracker estimates the fundamental frequency of whatever you're playing or singing, continuously.
Clean note on/off
Onset and release debouncing keeps a held note stable and avoids chattering between adjacent pitches.
Legato retriggering
Slide or slur into a new pitch and Warf ends the old note and starts the new one cleanly, no gap needed.
Sensitivity & gate
One sensitivity knob balances speed against false triggers; a noise gate keeps silence from generating notes.
Transpose & MIDI channel
Shift the output up or down by octaves, and route it to any MIDI channel your instrument or track expects.
Velocity from level
Note velocity follows how loud you played, or fix it to a constant value if you'd rather have consistent output.
Monophonic only, and two ways to get its MIDI to a synth.
One note at a time
Warf tracks a single melodic line — a voice, or one instrument playing single notes. Feed it a chord and it'll report whichever pitch it judges dominant, not the whole chord. This is inherent to the pitch-detection approach, not a bug to fix later.
Instrument Input routing
Insert Warf on an audio track like any effect. Most DAWs (confirmed in Studio One via its "Instrument Input" track setting) let a separate Instrument/MIDI track pull MIDI straight from Warf's track — no extra software needed. Load Warf Synth on that receiving track to hear it.
Pick a MIDI Output Device
Open Warf's editor and choose a MIDI Output Device from the dropdown — useful for external hardware, or in a host that doesn't support Instrument Input-style routing. For another track in the same DAW you'll need a virtual MIDI loopback (Windows has none built in) — the free loopMIDI works well.
Install it in your DAW, run it on your desktop, or just open it.
Same pitch-tracking engine every way — the desktop app and the browser version are the exact same PWA, no DAW required for either.
Warf (Beta) — VST3
Installs Warf into your system's VST3 folder — shows up under Effects after a rescan, insert it on an audio track, then pick a MIDI output device right in its editor. Warf Synth (under Instruments) is bundled too, as an optional component you can skip during setup if you'd rather use your own synth.
Download installer (.exe) Installer blocked by Windows/your browser? Download the raw .vst3 files as a .zip instead — unzip it and copy both.vst3
folders into C:\Program Files\Common Files\VST3\ yourself
The installer isn't code-signed yet, so Windows SmartScreen may warn you the first time: choose More info → Run anyway, or use the .zip above.
Warf for Windows (Desktop)
The browser app in a native window — a Tauri build of the same PWA, so mic capture, recording, file conversion, and Web MIDI all work exactly the same, just without a browser tab.
Download installer (.exe) Prefer an .msi? Download that insteadRun the PWA — any platform
No install, no download. Warf runs entirely in the browser using the Web Audio and Web MIDI APIs, and works offline once loaded.
-
Open
warf.monco.io/app.html - Pick a MIDI output (a virtual MIDI port like loopMIDI works well on Windows)
- Web MIDI needs Chrome or Edge — Firefox and Safari don't support it
- Or hit Start Recording instead of Start Listening — stop it and download the take as a .mid file
- Or skip the mic entirely — upload a WAV and download a .mid file, no MIDI output needed
This is a fresh beta. The pitch-tracking engine has an automated test suite covering accuracy against known frequencies and the note-onset/offset logic, but it hasn't been validated against a wide range of real instruments and voices yet. Expect rough edges, and please report anything that sounds wrong via GitHub.