Recording from MIDI input
You can live-record input from an external MIDI keyboard / controller / hardware sequencer into a skulpton track. We capture notes and CC + Pitch Bend + Channel Aftertouch in the same pass, so mod-wheel moves and pitch bends performed alongside notes are preserved.
Requirements
Section titled “Requirements”Recording fires when all of these are true:
- The track has an IN port other than None (Set up MIDI I/O)
- The track is armed
- Record is on (or you pressed Play with the track armed and Record was already on)
- The incoming MIDI channel matches the track’s IN channel filter (or it’s set to All / Omni)
If no track is armed when you press Record, the first track is auto-armed.
What gets recorded
Section titled “What gets recorded”| MIDI message | Recorded into |
|---|---|
| Note On / Off | The track’s clip (piano roll) |
| CC (Control Change) | The lane for that CC# (auto-created if missing) |
| Pitch Bend | The PB lane (auto-created if missing) |
| Channel Aftertouch | The CA lane (auto-created if missing) |
| Program Change | Not recorded (avoids accidental patch-change capture) |
| Poly Aftertouch | Live-thru only (not recorded for now) |
So performing your part with the mod wheel, pitch wheel, or channel aftertouch leaves all of it on the lanes.
Same-value thinning
Section titled “Same-value thinning”Mod wheels and pitch benders can fire 30–100 events per second. skulpton drops repeated identical values automatically, so the clip never bloats:
- Wheel held at 64 with continued bursts → only the first event is kept
- Wheel moves 64 → 70 → 64 → all three are kept (real change)
- Different lanes (e.g. CC1 and CC11) are evaluated independently
Thinning compares the clamped value. If you somehow send 200 on a CC, it clamps to 127 — the next 127 is then thinned.
How clips are managed during recording
Section titled “How clips are managed during recording”One session = one clip
Section titled “One session = one clip”From the start of recording until it ends, your input lands in the same clip. Pauses in your performance don’t split the clip.
- If a clip already covers the playhead, that one is used
- If not, a new bar-aligned clip is auto-created at the next bar
- If your performance runs past the end of the host clip, the clip is auto-extended to the next bar boundary
A “take” ends when any of the following happens:
- Stop
- Pause
- Seek (timeline click / piano-roll ruler click)
- Disarm the track
- Delete the track
The next Play starts a fresh clip.
Loop recording = overdub
Section titled “Loop recording = overdub”With the loop range on, each lap layers onto the existing clip (overdub).
- Lap 1: kick
- Lap 2: snare
- Lap 3: hi-hats
All in the same clip. This matches Logic / Live / Cubase / Bitwig MIDI overdub semantics (Pro Tools “Stacked Take” mode is different — we don’t do that yet).
At the wrap:
- Notes spanning the loop boundary are surgically released (no big
panic_allburst that would hitch the wrap) - The first events of the new lap fire inside the same engine tick as the wrap (no per-lap timing drift)
- MIDI Clock keeps emitting monotonically — sync with external gear is unaffected
Same-pitch retrigger across the loop boundary
Section titled “Same-pitch retrigger across the loop boundary”If a note rings into the loop end and the same (channel, pitch) fires again at the loop start (a re-trigger), skulpton suppresses the redundant note-off, sending only the new note-on. This avoids the envelope-glitch you get when off + on for the same pitch land in adjacent MIDI bytes — the industry term is “Note Tie” / “Legato” (à la Cirklon hardware sequencers and Live Clip Legato).
Troubleshooting
Section titled “Troubleshooting”Track is armed and Record is on, but nothing records
Section titled “Track is armed and Record is on, but nothing records”- IN port is None
- IN channel is filtering out the source channel (set to All to receive all)
- Another app (Logic, etc.) is claiming the same MIDI port — IAC on macOS is shareable, USB device ports usually aren’t
- skulpton scans MIDI ports at startup only — restart the app after plugging in new gear
Mod wheel records less than I expected
Section titled “Mod wheel records less than I expected”- Same-value thinning (intended). Detail-record by moving the wheel slightly more
Loop wrap feels like it stutters
Section titled “Loop wrap feels like it stutters”- v0.1.0 includes the smooth-wrap fix
- If you still hear it, check whether external clock-receiving gear is the bottleneck
Related
Section titled “Related”- Transport & playback — Record / Play / Loop button basics
- Set up MIDI I/O — IN/OUT port + channel config
- CC / PB / CA automation — edit recorded lanes
- Troubleshooting — automatic panic on Stop and recovery