Skip to content

CC / Pitch Bend / Aftertouch automation

The channel-message lanes under the piano roll let you edit CC, Pitch Bend, and Channel Aftertouch visually. You can edit per-clip — or define Track-bound lanes that apply across every clip on the track.

TypeBadgeRangeUse
CC (Control Change)CC0–127Modulation, volume, filter, etc. (CC# 0–127)
Pitch BendPB0–16383 (center = 8192)14-bit pitch bend
Channel AftertouchCA0–127Channel-wide aftertouch

PB and CA carry no controller number — only one of each is allowed per clip on a given channel (a second one would silently overwrite). CC supports unlimited lanes (different numbers).

The + Add Lane ▾ button at the bottom-right of the piano roll opens a menu:

  • + CC — new CC lane (auto-picks the next free CC number)
  • + Pitch Bend — disabled if a PB lane already exists on this clip
  • + Channel Aftertouch — same, disabled when one already exists

Click the ⚙ gear in any lane header (or right-click) to open the Lane Settings modal, a table view of all lanes in this clip:

ColumnWhat it does
VisibleToggle lane visibility — hidden lanes still play and export
Type badgeCC / PB / CA, with prefix for Track-bound
CC#CC lanes only (PB/CA show )
LabelFree text — defaults to the CC name (e.g. “Modulation”)
EventsNumber of points in the lane
Expand the row to edit type / CC# / label inline
×Remove (disabled for Track-bound; manage from Track Settings)

Click empty space in a lane to add a new event at that time and value.

ActionResult
Drag a dotChange time and value at once
Click a dotSelect
Delete / Backspace with a selectionRemove
Right-click a dotContext menu (delete + change curve)

Horizontal axis = time (beats), vertical = value (top is max). The value shows as a tooltip while dragging.

The segment between two dots is shaped by the right-side dot’s curve type — i.e. how value approaches that point.

TypeShapeAccel
LinearStraight line (default)L
HoldStair-step (hold previous value, jump on arrival)H
ExpSlow → fast (Bitwig “Exp” feel)E
ExpInvFast → slowO
ScurveSmoothstep — both ends flatS

Right-click the dot, or hover and press L/H/E/O/S. The dot shape encodes the curve type so it’s recognizable at a glance.

The Track Settings modal (gear in the track header) has a “Shared lanes” section where you define lanes at the track level.

  • These lanes appear in every clip on this track automatically
  • All three types (CC / Pitch Bend / Channel Aftertouch) supported
  • Events stay per-clip (only the lane “scaffold” is shared)
  • Renaming or renumbering a Track lane propagates to every clip’s mirror
  • If clips already have events on the lane, you’ll see a confirm dialog (affected clips + event count) before applying

This is great when you want CC1 or Pitch Bend on every clip of a track without re-creating the lane each time.

When a track is armed and you press Play, your mod wheel / pitch wheel / aftertouch are recorded into matching lanes (created if they don’t exist).

  • Lanes auto-materialize on first event
  • Repeated identical values are thinned automatically so a 30+ events/sec mod wheel doesn’t bloat the clip
  • See Recording from MIDI input for the full picture

In the piano roll’s Code tab, use setCc / setPitchBend / setChannelAftertouch to write automation in JavaScript.

// LFO modulation on CC1
onBeat((b) => {
const v = Math.round(64 + 60 * Math.sin(b * Math.PI));
setCc(1, b, v); // (ccNumber, beat, value)
});
// Pitch Bend that eases back to center over a beat
onInit(() => {
setPitchBend(0, 16000);
setPitchBend(1.0, 8192, { curve: "exp" });
});
// Channel Aftertouch as a bell curve
setChannelAftertouch(0, 0);
setChannelAftertouch(0.5, 100);
setChannelAftertouch(1.0, 0);

See Coding Note Effect overview and Host API.

CCNameTypical use
1ModulationVibrato / filter wobble
7VolumeChannel volume
10PanStereo position
11ExpressionVolume changes within a phrase
64SustainSustain pedal (0=OFF, 127=ON)
71ResonanceFilter resonance
74BrightnessFilter cutoff

Actual behavior depends on each synth’s MIDI implementation.