Skip to content

Hardware controllers

Grainsmith can be played from hardware. Four devices are recognised by name and arrive with a built-in binding set; anything else that sends MIDI can be mapped by hand in a few seconds.

Everything here lives in one place: the Controllers pill at the bottom right of the plugin window. Click it to open the controllers panel.

Supported devices

Device How it connects What you get
OXI E16 USB MIDI A full built-in map across its 51 encoders
Faderfox UC4 USB MIDI A built-in map
monome arc serialosc Encoder and ring support, arc 2 and arc 4
Any other MIDI controller USB or DIN MIDI Generic MIDI: nothing preset, map what you want with MIDI learn

A controller does not need to be in that list to be useful. The generic MIDI path handles any device that sends control changes, and MIDI learn is the same two clicks whichever device you are on.

OXI E16

The E16's built-in map covers all 51 encoders. It expects the device in its 7-bit absolute CC mode, on MIDI channel 5, sending CC 0 to 50.

Pushing an encoder resets the parameter it controls. The device sends the same CC number on channel 6 when you push, and Grainsmith treats that as a reset rather than as a second binding, so pushes do not show up as separate rows in the panel.

monome arc

The arc connects through serialosc, not MIDI, so it does not appear in your host's MIDI device list. Both arc 2 and arc 4 are recognised. Make sure serialosc is installed and running before you open Grainsmith, otherwise the arc will not appear in the device roster.

The controllers panel

The panel has two panes. The left is the roster of devices Grainsmith can see right now. The right is the binding list for whichever device you have selected.

Each row reads left to right:

text Param | Ch | CC | Lrn | Rst

  • Param is the Grainsmith parameter the row controls.
  • Ch and CC are the MIDI channel and control-change number. Edit either by dragging vertically on the number or by scrolling over it. Rows that are not driven by a CC show a dash and cannot be dragged.
  • Lrn starts MIDI learn for that row: click it, then move the control you want on the hardware.
  • Rst puts that row back to the device's built-in default. It is greyed out on rows that have nothing to reset.

Mapped parameters are listed first. Below a thin dividing rule sit the parameters that are not mapped to anything, dimmed. Clearing a binding does not remove the row, it moves it down into that unmapped section, so the list never changes length and nothing disappears while you are working.

Seeing what you have changed

Rows using the device's built-in default are shown in dim text. Rows you have learned or edited yourself are shown in brighter text with a coloured bar down the left edge. So a glance at the list tells you how far your setup has drifted from the factory map, without having to remember what you touched.

Profiles

A profile is a saved set of bindings for one device. The built-in map is called Default and cannot be overwritten, so you always have something to get back to.

You can save the current bindings as a new profile, rename a profile, or delete one. Profiles are per device: a profile saved for the E16 does not appear when the UC4 is selected.

Use them for different jobs on the same hardware, for example one profile that puts the grain controls under your fingers and another built around the FX tab.

MIDI learn, step by step

  1. Open the Controllers panel.
  2. Select your device in the left pane.
  3. Find the parameter you want in the right pane. Unmapped parameters are in the dimmed section at the bottom.
  4. Click Lrn on that row.
  5. Move the knob, fader, or encoder you want to use.

The row picks up the channel and CC it just saw. Repeat for as many parameters as you want, then save the result as a profile if you want to keep it separate from the default map.

Troubleshooting

The device is not in the roster. For MIDI devices, check it is connected and visible to your host, then reopen the panel. For a monome arc, check serialosc is running: the arc does not use MIDI and will not appear if serialosc is not up.

A knob moves the wrong parameter. You are likely on a profile you edited earlier. Select Default to get the built-in map back, or use Rst on the individual row.

A control does nothing. Check the row is actually mapped: unmapped parameters sit in the dimmed section below the divider. If it is mapped and still silent, confirm the hardware is sending on the channel the row shows.

An encoder feels reversed or too coarse. Per-row scaling options (absolute versus relative, 7-bit versus 14-bit, linear versus logarithmic) are not in this release. For now, set the behaviour on the hardware itself where the device allows it.