Automatic hand separation for piano-style MIDI — split what you played with two hands into two independent parts, in real time or as an offline pass.
Overview
Counterpoint works in two complementary modes, and you switch between them with one button:
- LIVE (default) — streaming classification while you play. Each note is assigned to the left or right hand on the fly, and a scrolling roll shows the algorithm's calls, colored by hand and shaded by confidence. You can calibrate the live split to your keyboard with the CAL button (see Controls) — handy on smaller controllers.
- REVIEW — an offline pass over a recorded clip. Counterpoint re-analyzes the whole performance with the benefit of hindsight, surfaces the notes it was least confident about in a queue, and on COMMIT writes the split back into your tracks.
Install
macOS: double-click the Counterpoint.pkg installer and click through Continue → Install. It places the device in your Ableton Live User Library automatically.
Windows: double-click the Counterpoint-Setup.exe installer. Windows SmartScreen is cautious about newly-signed software, so early adopters will likely see a warning on first launch — just click More info → Run anyway. It installs the device into your Ableton Live User Library automatically.
Then open Ableton Live, go to Library → Max for Live, filter to MIDI Effect, and drag Counterpoint onto a track. The header should read COUNTERPOINT · Rubato Audio. (Just installed and don't see it yet? Ableton Live picks up new devices automatically within a couple of minutes, or click the Refresh icon at the top of the User Library section.)
The workflow: two tracks, two hands
The intended setup is the simplest one that works — one track per hand, each with its own instrument and its own Counterpoint instance. The instances find each other and stay in sync.
1. Set up the tracks
- On your left-hand track, load the instrument you want for the left hand, drop Counterpoint on it, and click LISTEN until it reads LISTEN: L.
- On your right-hand track, load the right-hand instrument, drop Counterpoint on it, and set LISTEN: R.
LISTEN sets which hand each track sounds through its own instrument — it filters what you hear, not the recording (both clips still capture the full performance) or the split itself.
2. Record
- Record-arm both tracks (typical setup: both set to "MIDI From: All Ins", monitor "Auto", armed).
- Hit record and play. The LIVE roll on each instance scrolls right-to-left, showing the calls — teal for L, orange for R.
- Stop. Both tracks now hold a clip with the full performance — Ableton Live records pre-effect MIDI, so the LISTEN filter affects only what you hear, not what's captured.
3. Review and commit
- Click REVIEW on either instance — both flip to REVIEW in lockstep and auto-analyze the clip.
- Walk the marginal-call queue: click a row to focus a note, then press L / R (or the buttons) to flip it. You can also marquee-select notes in the roll for bulk changes. Both instances mirror every edit live.
- Hit COMMIT. Counterpoint first shows a compact preflight of exactly where the L and R parts will be written. Confirm it, and it writes only the L notes onto the left-hand destination and only the R notes onto the right-hand destination. Each track now plays only its hand.
Don't like a split? Undo in Ableton Live brings the original clips back — you may need to undo more than once, since COMMIT can rewrite more than one clip. Counterpoint notices the restored take and picks it back up automatically.
Splitting a clip you already recorded
If you recorded a two-handed part onto a single track and only later decided to split it, you don't have to re-record. To audition both hands through their own instruments, duplicate the clip onto a second track, aligned to the same start, then put a Counterpoint instance on each track and set one to LISTEN: L and the other to LISTEN: R. From there it's the normal REVIEW → COMMIT flow.
You can also use COMMIT with a single instance and no second track — the preflight will show the fallback before anything is written. What happens depends on that instance's LISTEN setting. On LISTEN: BOTH, Counterpoint creates two new MIDI tracks below the source, one per hand, and writes the split there, leaving your original clip untouched. On LISTEN: L or LISTEN: R, that track keeps its own hand — its clip is overwritten with those notes in place — and Counterpoint creates a single new track below for the other hand. Either way the split still happens; you just won't hear the two hands on separate instruments until each has its own.
How accurate is it?
Very good, not perfect. We've benchmarked and tuned the algorithm extensively against real recorded piano performances and our own playtesting, where it places the large majority of notes on the correct hand. How good exactly depends mostly on one thing you control: how far apart your hands are playing. Register is the strongest cue, so when your left and right hands sit in clearly separate ranges it splits notes nearly perfectly. As your hands move closer together — and especially if they cross or trade notes in the same stretch of the keyboard — the calls get more ambiguous, and mistakes get more likely.
There's one important exception. When your hands overlap in register but play different textures — say, blocked chords in one hand under a single melodic line in the other — REVIEW mode usually still separates them. Because it analyzes the whole recorded clip at once, it can tell a chordal hand from a single-line one and weighs that alongside register, so the chords and the melody sort out even when they share a range. (LIVE mode classifies each note the instant you play it, with no view across the clip, so it stays register-led.) What's genuinely hard either way is hands that overlap and share a texture — two single lines, or two chordal parts, weaving through the same stretch of keyboard.
Two things mitigate those kinds of problems in practice. First, you can play with your hands further apart than they would be otherwise, and use the OCT control (see below) to drop each track back towards its natural register. Second, REVIEW mode exists precisely to make it easy to fix any mistakes the algorithm made.
Controls
- LISTEN — cycles BOTH → L → R. Sets which hand this instance auditions through its instrument.
- LIVE / REVIEW — switches modes for every Counterpoint instance at once.
- CAL (LIVE) — calibrate the live classifier to your keyboard: play your lowest and highest note once and Counterpoint tunes its cold-start to your controller's range. Especially helpful on smaller keyboards; it also offers this automatically the first time you use LIVE.
- OCT — shifts this instance's MIDI output up or down by whole octaves (±5). Handy when you want to play both hands in a similar range: spread your hands apart on the keyboard so the classifier sees clean register separation, then set OCT on each track to land the output at the music's natural pitch. OCT applies to LIVE audition, REVIEW audition, and COMMIT writes alike. The roll always shows the notes you actually played.
- COMMIT (REVIEW) — previews the exact L/R destinations, then writes the split after you confirm.
- CCs toggle — passes CC, pitch-bend, and channel-pressure data through alongside the notes, or blocks it. It's per instance, so you can decide which hand hears continuous data: enable it on the right-hand track to hear your sustain pedal there, and disable it on the left so the pedal doesn't bleed into the bass.
- ? — opens an in-device help overlay with the full list of shortcuts (also opens with the ? key).
In the REVIEW piano roll, scroll to pan time, Shift-scroll (or Option/Alt-scroll) to zoom, and press 0 to reset the view.
Good to know
- Instances sync through the project folder. Counterpoint shares state via small files next to your
.als. Save the project so the folder exists — unsaved projects won't sync between instances. - More than two instances is fine. Counterpoint isn't limited to a single pair — you can layer two instruments on one hand (two tracks both set to LISTEN: L, say), and COMMIT writes that hand to each of them. The instances find each other through the same project folder.
- Single-clicking a different clip on a Counterpoint track switches what's being edited — convenient for the record-then-edit flow, but it means an accidental click on another clip on one of those tracks can jump the analysis. Clicking clips on tracks that don't host Counterpoint leaves it alone.
- COMMIT replaces whatever clip sits at the source's time slot on each destination track. That's the intended split-in-place behavior; the preflight names every destination before you confirm, so check it if you arrange things differently.
- LIVE-mode timing tracks your audio buffer. In LIVE mode each note is classified and passed through in real time, which adds a small, buffer-dependent delay — a smaller buffer keeps it tight, a larger one adds a touch more. In our measurements that was roughly 1 ms at a 128-sample buffer and a few milliseconds (~3–4 ms) at 512; your machine may differ, but either way it stays comfortably under the point where a player senses lag. REVIEW and COMMIT are unaffected: REVIEW's analysis runs on the clip before you press play, and once you COMMIT the result is ordinary MIDI clips that Ableton Live plays back with its normal sample-accurate timing, whatever the buffer.
- Two-finger scrolling over the device can also scroll Ableton Live's device chain — but only if the chain is long enough to need scrolling. It's an unavoidable quirk of Ableton Live's UI; minimizing the other devices in the chain is the simplest fix. To pan the REVIEW roll without the wheel at all, turn on Show the REVIEW time-scrollbar in the gear (⚙) Settings — a draggable minimap strip under the roll that pans the time axis with a plain mouse drag.
Settings (⚙)
The ⚙ button opens a few machine-wide preferences, in two groups:
- New instances open in — whether a freshly-added Counterpoint starts in LIVE or REVIEW.
- Start with the queue collapsed — open new clips with the marginal-call queue collapsed, for editing straight in the roll.
- Start with the CCs button on — whether new instances pass CC, pitch-bend, and pressure through by default.
- Show hover tooltips (on by default) — pops up a short hint when you hover a control; turn it off for a quieter UI once you know your way around.
- Show the REVIEW time-scrollbar (off by default) — the draggable minimap strip under the REVIEW roll that pans the time axis with a plain mouse drag.
Troubleshooting
- The LIVE roll is empty when you play. Check that MIDI is reaching the track (Ableton Live's input meter should light up). If not, fix the track's MIDI input source.
- Both hands play through every track. That track's LISTEN is set to BOTH — set the left track to L and the right to R.
- The two instances aren't syncing. Save the project and reload the devices so they share a project folder.
- The device keeps getting replaced by Ableton Live's piano roll. Double-clicking a clip opens Ableton Live's note editor over the device. You don't need to double-click — a single click focuses the clip and leaves the device in view. If the editor does cover the device, press Shift-Tab to flip Ableton Live's Detail view back to the device; the clip stays focused the whole time.
Support
Stuck or found a bug? Email [email protected] — Max console logs (anything tagged [hs-bridge] or [hs-controller]) and screenshots help a lot.