Skip to content

Intech Grid Ableton Control Surface and Custom Profile

Notifications You must be signed in to change notification settings

jamhed/intech-grid-en16

Repository files navigation

Intech EN16 Ableton Control Surface

CI

Intech EN16

A custom Ableton Live control surface for the Intech Grid EN16 controller.

How It Works

This integration has two parts that communicate via MIDI:

flowchart LR
    subgraph EN16["EN16 Controller"]
        Lua["Lua Scripts"]
    end
    subgraph Ableton["Ableton Live"]
        Python["Python Control Surface"]
    end
    Lua <-->|MIDI| Python
Loading
Component Location Purpose
Control Surface control_surface/Grid.py Python script running in Ableton that maps MIDI to tracks, devices, and clips
EN16 Configuration configs/EN16-Control.lua Lua scripts running on the EN16 that handle encoders, buttons, and LED feedback

Both sides must agree on the MIDI layout (which CC/Note numbers mean what). See Control Surface Architecture for details.

Features

Control Function
Buttons 1-8 Select track (long press to arm)
Buttons 9-12 Select Return track A-D
Buttons 13-16 Launch/stop clips 1-4 (selected track)
Encoders 1-8 Device parameters (selected track)
Encoders 9-12 (available for custom mapping)
Encoder 13 Send level to Return C (selected track)
Encoder 14 Send level to Return B (selected track)
Encoder 15 Send level to Return A (selected track)
Encoder 16 Volume (selected track)

Installation

1. Control Surface (Ableton)

  1. Copy this folder to Ableton's Remote Scripts:

    ~/Music/Ableton/User Library/Remote Scripts/Intech
    
  2. In Ableton Live, go to Preferences → Link, Tempo & MIDI

  3. Set Control Surface to Intech, Input/Output to your EN16 MIDI ports

  4. Restart Ableton Live

2. EN16 Configuration

Upload the Lua configuration to your EN16 using Grid Editor or the CLI tool:

cd grid-cli && npm install
npx tsx grid-cli.ts upload ../configs/EN16-Control.json

See EN16 Configuration Guide for details on the Lua scripts.

Project Structure

Intech/
├── __init__.py              # Entry point
├── control_surface/
│   └── Grid.py              # Control surface implementation
├── configs/
│   ├── EN16-Control.json    # Grid config (JSON)
│   └── EN16-Control.lua     # Grid config (Lua)
├── grid-cli/                # CLI tool for config upload/download
├── docs/                    # Documentation
└── __ext__/                 # Git submodules (reference scripts)

Development

Control Surface (Python)

Edit control_surface/Grid.py to modify Ableton integration.

Prerequisites: Ableton Live 11+ (Python 3.x bundled)

Reload scripts: Add -_ToolsMenuRemoteScripts to Options.txt (Beta only), then use Tools → Reload MIDI Remote Scripts. Clear __pycache__ before reloading.

View logs:

tail -f ~/Library/Preferences/Ableton/Live\ */Log.txt | grep -i intech

References:

EN16 Configuration (Lua)

Edit configs/EN16-Control.lua to modify controller behavior, then upload to the device.

Using Grid CLI:

cd grid-cli && npm install
npx tsx grid-cli.ts upload ../configs/EN16-Control.json

Using Grid Editor: Open Grid Editor, connect your EN16, and configure elements visually.

References:

Known Issues

Initial sync delay: On startup, Ableton sends parameter values before EN16's MIDI callback is ready. A one-shot timer fires after 1 second to request a refresh.

License

MIT

About

Intech Grid Ableton Control Surface and Custom Profile

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors