Hardware controllers
Three controllers, working out of the box.
Grainsmith Field listens for standard MIDI CC messages. The OXI E16, MIDI Fighter Twister, and Roto-Control each have a ready-to-load preset file. All three require one-time configuration in each controller’s desktop editor, then work immediately with no in-app mapping step.
All three controllers use 7-bit absolute CC mode (values 0 to 127). Encoder pushes reset the mapped parameter to its default where noted.
- Supported: OXI E16 · MIDI Fighter Twister · Roto-Control
- CC type: 7-bit absolute (0–127) on all three
- Preset files: OXI E16 (.oxie16) · MIDI Fighter Twister (.mfs) · Roto-Control (.json)
OXI E16: 16 encoders, two pages
The E16 covers all 19 mappable parameters across two pages. Load the preset file into the OXI app, copy the device profile, and the E16 works immediately as the default controller profile in Grainsmith Field.
Install:
- Copy
Grainsmith Field.oxie16into~/Documents/ox/Scenes/ - Copy
device_grainsmith.jsoninto~/Documents/Devices/ - Relaunch the OXI app. “Grainsmith Field” appears under Scenes.
- In Grainsmith Field, the OXI E16 controller profile is selected by default; no change needed.
- CC mode: Absolute CC, 7-bit
- Value range: Min 0 · Max 127
- Turn channel: Channel 5
- Push channel: Channel 6 · same CC# → reset to default
Download Grainsmith Field.oxie16 · Download device_grainsmith.json
Page 1: Perform (Channel 5 · CC 0–15 · 7-bit absolute)
| Encoder | CC | Parameter |
|---|---|---|
| Enc 1 | 0 | Position |
| Enc 2 | 1 | Grain Size |
| Enc 3 | 2 | Density |
| Enc 4 | 3 | Spread |
| Enc 5 | 4 | Speed |
| Enc 6 | 5 | Jitter |
| Enc 7 | 6 | Pitch |
| Enc 8 | 7 | Morph |
| Enc 9 | 8 | Pitch Random |
| Enc 10 | 9 | Reverse |
| Enc 11 | 10 | Wet Mix |
| Enc 12 | 11 | Scan Depth |
| Enc 13 | 12 | Reverb Mix |
| Enc 14 | 13 | Reverb Space |
| Enc 15 | 14 | Filter Cutoff |
| Enc 16 | 15 | Resonance |
Page 2: Sound / FX (Channel 5 · CC 16–18 · 7-bit absolute)
| Encoder | CC | Parameter |
|---|---|---|
| Enc 1 | 16 | Grain Shape |
| Enc 2 | 17 | Freeze |
| Enc 3 | 18 | Level |
MIDI Fighter Twister: 16 encoders, full parameter set
Import the preset into MIDI Fighter Utility, send it to the device, and leave the in-app controller profile on its default (OXI E16); no profile change needed. The MFT works immediately.
Install:
- Open MIDI Fighter Utility with the Twister connected.
- File → Import
Grainsmith Field.mfs, then send to MIDI Fighter. - Launch Grainsmith Field. Leave the controller profile on OXI E16 (the default); do not select an MFT profile. The encoders work immediately.
- Turn channel: Channel 5 · CC 0–15 · 7-bit absolute
- Push channel: Channel 6 · same CC# → reset to default
- Banks 2–4: Unused (available for your own mappings)
The preset makes the MFT impersonate the OXI E16: encoders send CC 0 to 15 on channel 5, pushes on channel 6. The app’s default profile already listens on ch 5/6, so the MFT works without selecting a separate MFT profile (whose ch-1 CCs conflict with the Roto-Control map).
Bank 1 (Channel 5 · CC 0–15 · 7-bit absolute · Push = reset)
| Encoder | CC | Parameter |
|---|---|---|
| Enc 1 | 0 | Position |
| Enc 2 | 1 | Size |
| Enc 3 | 2 | Density |
| Enc 4 | 3 | Spread |
| Enc 5 | 4 | Speed |
| Enc 6 | 5 | Jitter |
| Enc 7 | 6 | Pitch |
| Enc 8 | 7 | Morph |
| Enc 9 | 8 | Pitch Random |
| Enc 10 | 9 | Reverse |
| Enc 11 | 10 | Wet Mix |
| Enc 12 | 11 | Scan Depth |
| Enc 13 | 12 | Reverb Mix |
| Enc 14 | 13 | Reverb Space |
| Enc 15 | 14 | Cutoff |
| Enc 16 | 15 | Resonance |
Roto-Control: 18 knobs, four buttons
Import the preset in the Melbourne Roto Control app on Mac or PC and all 18 knobs lay out across three pages. Map the four buttons by hand for transport and performance. Works against the default profile with no in-app selection required.
One-time setup in the Roto Control app:
- Import
Grainsmith.jsoninto the Roto Control app; it sets up all 18 knobs across pages 1 to 3 in one shot. - Map the four Page-1 buttons by hand from the Buttons table below (the file has no buttons yet): momentary, CC 40 to 43, channel 1.
- Confirm every encoder is absolute CC, 7-bit. In Grainsmith Field, the Roto works against the default profile; no change needed.
- CC mode: Absolute CC, 7-bit (0–127)
- Channel: Channel 1 · knobs and buttons
- Buttons: Momentary · CC 40–43 · mapped by hand
- Push / reset: None (knob click has no in-app effect)
Critical: set encoders to absolute CC, 7-bit (not relative, not 14-bit). Relative or hi-res mode will cause the parameter to jump or wrap unpredictably.
The app echoes parameter changes back on the mapped CCs, so the Roto’s motorized knobs may track in-app edits automatically.
Page 1 comes from a known-good export shared by mistercharlie on the Loopy Pro forum. Pages 2 and 3 and the buttons extend it in the same format, straight from the app’s shipping mapping table, so the assignments are correct by construction; the extended pages and button feel are still gathering hardware confirms.
Page 1 (Channel 1 · CC 1–8 · 7-bit absolute)
| Knob | CC | Parameter |
|---|---|---|
| Knob 1 | 1 | Size |
| Knob 2 | 2 | Density |
| Knob 3 | 3 | Jitter |
| Knob 4 | 4 | Position |
| Knob 5 | 5 | Reverb Mix |
| Knob 6 | 6 | Reverb Space |
| Knob 7 | 7 | Cutoff |
| Knob 8 | 8 | Pitch Random |
Page 2 (Channel 1 · CC 9–16 · 7-bit absolute)
| Knob | CC | Parameter |
|---|---|---|
| Knob 1 | 9 | Spread |
| Knob 2 | 10 | Speed |
| Knob 3 | 11 | Pitch |
| Knob 4 | 12 | Morph |
| Knob 5 | 13 | Reverse |
| Knob 6 | 14 | Wet Mix |
| Knob 7 | 15 | Scan Depth |
| Knob 8 | 16 | Resonance |
Page 3 (Channel 1 · CC 17–18 · 7-bit absolute)
| Knob | CC | Parameter |
|---|---|---|
| Knob 1 | 17 | Grain Shape |
| Knob 2 | 18 | Level |
Buttons (Channel 1 · CC 40–43 · momentary)
| Button | CC | Action |
|---|---|---|
| Button 1 | 40 | Play / Stop |
| Button 2 | 41 | Freeze (toggle) |
| Button 3 | 42 | Grain Shape (cycle Soft → Round → Sharp) |
| Button 4 | 43 | Record (toggle) |
Not on the list?
How it works. Grainsmith Field responds to any MIDI CC on any channel. The tables above are pre-built mappings; you can use them as a reference for any encoder surface that lets you set CC numbers.
Channel. The app listens on channels 1, 5, and 6 by default. Match whatever channel your controller sends on, or use MIDI-learn to remap in-app.
CC type. Use 7-bit absolute mode (values 0 to 127) for predictable behavior. Relative and 14-bit hi-res modes are not currently supported.
