MIDI PADs to Controll Tracks
by

🎹 Zorgan: MIDI PADs to Controll Tracks

Author: Roman Prucha (zorgan)
Platform: Renoise 3.x, tested on Renoise 3.5.4
API target: Renoise Lua API 5.1 style
Version: 4.15 Final — Group Solo, Group Mute, PAD OFF & Visual State Engine

Zorgan MIDI PADs to Controll Tracks is a Renoise performance/navigation tool for pad and button controllers. It links hardware pads, GUI buttons, Renoise tracks, instruments, send routing, mute states and solo states into one compact control surface.

The tool is designed for fast project navigation, live track/instrument selection, group-aware mute/solo handling and clear visual feedback without relying on a large mouse-driven mixer workflow.


1. Main Workflow

A typical workflow is:

  1. Map your hardware pads/buttons through Renoise MIDI Mapping (Ctrl+M).
  2. Open the tool GUI from the Zorgan menu, keybinding, or MIDI-mapped Show GUI action.
  3. Use hardware pads for track/instrument selection, normal MUTE, or hold-to-SOLO.
  4. Use GUI PADs buttons only when you intentionally want a persistent TRACK OFF state.
  5. Use GUI Groups buttons to select or group-mute Renoise Group tracks.
  6. Use the single global SOLO button to solo either the selected track or the selected group.

The GUI is both a control panel and a visual state monitor. Track buttons keep the real Renoise track color and then receive state overlays for MUTE, OFF, SOLO, selected track and selected group membership.


2. Hardware MIDI Pad Logic

The hardware pad/button mapping uses one MIDI mapping per PAD slot.

Hardware action Result
Soft press / low velocity <= Select Threshold Selects the target Renoise track and its detected instrument.
Standard MIDI button CC value 127 Treated as a select command for non-velocity-sensitive controllers.
Hard press / velocity above threshold but below 127 Toggles normal Renoise MUTE / ACTIVE for the target track.
Long hold Activates SOLO for the target track.

Important distinction:

Hardware MIDI PAD mute = Renoise MUTE
GUI PAD mouse click    = Renoise TRACK OFF

Hardware MIDI pads do not create the persistent TRACK OFF state. This keeps hardware mute safe for performance use.


3. GUI Button Rows

Each PAD block contains multiple rows. Every column represents one track/pad slot.

PADs row

The numbered PADs buttons are not normal mute buttons.

Mouse action Result
Click GUI PAD button Toggles persistent Renoise TRACK OFF / ACTIVE.
Track already muted Click still forces the track into TRACK OFF.
Track already OFF Click restores the track to ACTIVE.

Use this row only when you want a deliberate hard/persistent off state. TRACK OFF is protected from group mute/unmute and from group solo operations.

When a group is selected, the PADs row mirrors the final color of the Tracks row for tracks inside that group. This makes the selected group visible as a larger two-row block.

Tracks row

The Tracks row displays the Renoise track number and keeps the real Renoise track.color as its base color.

Mouse action Result
Single click track button Selects the Renoise track.
Double click track button Toggles track SOLO using the single-track solo engine.

Track buttons show state overlays on top of the real track color.

Send 1 / Send 2 rows

The Send rows scan real Renoise Send routing from the track devices and display the first two detected Send targets.

Mouse action Result
Click Send button Selects the detected Send track.

Muted or blocked source/target states are shown with dedicated blocked/send colors.

Instr row

The Instr row displays the detected instrument index for each track.

Mouse action Result
Click Instr button Selects the track and the detected instrument.

Instrument detection uses real project data: assigned MIDI input track properties and pattern note data.

MIDI CH row

The MIDI CH row displays the detected MIDI channel for the assigned instrument or plugin/hardware routing when available.

Mouse action Result
Click MIDI CH button Selects the track and detected instrument.

4. GROUP Buttons

The GROUPS area lists detected Renoise Group tracks.

GROUP button action Result
Single click group button Selects the Renoise Group track.
Double click group button Toggles GROUP MUTE for the child sequencer tracks.
Single click another group while group solo is active Moves GROUP SOLO to the newly selected group.

GROUP SELECT

A single group click selects the actual Renoise Group track and stores it as the current group target for the global SOLO button.

Version 4.15 adds a short Group Select Sweep FX: when you select a group, track colors briefly sweep across the PADs and Tracks rows for that group. This is visual only. It does not change Renoise track color, mute state, solo state, instrument state or routing.

GROUP MUTE

Double-clicking a group button toggles normal Renoise MUTE on all child sequencer tracks inside that group.

GROUP MUTE does not use TRACK OFF and does not overwrite tracks that are already in TRACK OFF.

GROUP MUTE ON  = child tracks -> Renoise MUTE
GROUP MUTE OFF = child tracks -> ACTIVE
TRACK OFF      = left untouched

The group membership resolver uses real Renoise group_parent relationships, so it works correctly even when group tracks are placed after their children or when nested group structures are used.


5. SOLO Button

There is intentionally only one global SOLO button.

The SOLO button acts on the current context:

Current context SOLO button result
Regular track selected Uses Renoise native single-track solo.
Group selected in GUI or selected in Renoise Uses custom GROUP SOLO.
Same group already soloed Clears GROUP SOLO.
Any solo state active on regular track Pressing SOLO clears the active solo state.

Track SOLO

For a regular sequencer track, SOLO uses the native Renoise solo state. Existing temporary MUTE states created by the solo engine are cleared as needed.

GROUP SOLO

Renoise does not provide a perfect native one-click group solo behavior for this tool’s workflow, so GROUP SOLO uses a custom mute-based engine:

  1. Clears existing solo flags.
  2. Mutes other active tracks.
  3. Unmutes tracks that belong to the selected group.
  4. Keeps TRACK OFF tracks protected.
  5. Keeps relevant Send tracks active when detected through the child tracks’ Send routing.
  6. Stores the current group as the active group solo target.

This allows one global SOLO button to work for both normal tracks and group tracks without adding separate SOLO buttons for every group.


6. MUTE vs TRACK OFF Semantics

Version 4.15 formalizes two independent mute layers.

State Renoise state Created by Meaning
ACTIVE MUTE_STATE_ACTIVE Normal state Track plays normally.
MUTE MUTE_STATE_MUTED Renoise mute, hardware MIDI PAD hard press, GROUP MUTE, GROUP SOLO masking Temporary/performance mute.
TRACK OFF MUTE_STATE_OFF GUI PAD mouse click only Persistent hard-off state.

TRACK OFF is the protected state. It remains off across group mute/unmute and group solo/unsolo until the user explicitly clicks the GUI PAD button again.

If you click MUTE directly in Renoise, the tool now synchronizes that state back into the GUI Tracks row through track mute notifiers.


7. Visual State Colors

Track buttons always start from the real Renoise track color. The tool then blends in a state overlay.

Visual state Meaning
Real track color Normal active track.
Cyan overlay Selected track.
Amber/yellow overlay Selected group or group child context.
Red overlay Normal Renoise MUTE.
Magenta overlay Persistent GUI PAD TRACK OFF.
Purple/pink merge Selected group child that is also muted/off.
Yellow SOLO button Active SOLO / GROUP SOLO state.

When a group is selected, the PADs row mirrors the Tracks row for all child tracks in that group. This makes group membership and muted/off child tracks readable at a glance.


8. Native Project Scan Engine

The tool does not require rigid mathematical offsets for instrument assignment. It scans the Renoise project and builds a dynamic assignment cache.

The scan engine checks:

  1. Real sequencer tracks from the configured start index.
  2. Notes written in pattern data to detect used instruments.
  3. Renoise instrument MIDI input assignment where available.
  4. Plugin or MIDI routing data to detect MIDI channel information.
  5. Send devices to detect Send 1 / Send 2 routing per track.

This cache updates through dirty flags and Renoise notifiers instead of heavy constant rescanning.


9. Performance Architecture

The GUI does not use a heavy fixed redraw timer.

Current design:

System Behavior
GUI refresh app_idle_observable + dirty flags.
GUI redraw Only when GUI_DIRTY is set.
Assignment rebuild Only when ASSIGNMENT_DIRTY is set.
Event bus check Throttled through os.clock().
PAD hold/SOLO hold Lightweight 50 ms timer.
Group Select Sweep FX Runs through the existing idle loop, no extra timer.

This avoids refresh storms and keeps the GUI responsive while Renoise track states change rapidly.


10. MIDI Mapping

The tool dynamically registers mappings for:

  • Show GUI
  • Preset PAD 01-10
  • Preset PAD 11-20
  • Preset PAD 21-30
  • Pattern Scroll Absolute MIDI Control
  • Pattern Scroll Endless Encoder

Use Renoise Ctrl+M and move/click the target hardware pad or controller control.


11. Changelog

v4.15 Final — Group Solo, Group Mute, PAD OFF & Visual State Engine

Fixed

  • Fixed GROUP SOLO selecting or affecting the wrong group by replacing fragile index/bounds logic with real Renoise group_parent membership detection.
  • Fixed GROUP SOLO behavior for group tracks placed after their child tracks.
  • Fixed Renoise MUTE synchronization back into the tool GUI.
  • Fixed selected group coloring overwriting child track MUTE/OFF visibility.
  • Fixed GROUP MUTE visibility so child tracks inside the selected group remain readable.

Changed

  • GUI PAD mouse click now means persistent TRACK OFF, not normal MUTE.
  • Hardware MIDI PAD hard press now toggles normal Renoise MUTE, never TRACK OFF.
  • GROUP double-click now toggles normal MUTE on group child tracks and preserves existing TRACK OFF states.
  • The single global SOLO button is preserved and now resolves group context more reliably.

Added

  • Group-aware color merge system for selected group + muted/off child tracks.
  • Track button color overlays on top of the real Renoise track color.
  • PADs row mirror mode while a group is selected.
  • Amber/yellow group selection readability pass.
  • Short Group Select Sweep FX using real track colors.
  • More robust group membership handling for nested/group-parent structures.

Performance / Cleanup

  • Continued using idle-loop dirty flags instead of a heavy GUI timer.
  • No new observable layer was added for the 4.15 visual features.
  • No parallel mute-state table was added; the tool reads and writes Renoise mute_state directly.

v4.14 — Anti-Freeze Architecture & Optimization

  • Optimized GUI updates through dirty flags and throttled idle processing.
  • Removed heavy continuous project rescans.
  • Improved track/device notifier handling.
  • Reduced refresh storms during fast Renoise API state changes.

v4.13 — Zero FOUC GUI

  • Added pre-rendered GUI preparation before showing the window.
  • Reduced visible layout flashing when the dialog opens.

v4.12 — Standard MIDI Button Support

  • Added support for standard non-dynamic MIDI buttons.
  • CC value 127 is treated as a strict select command.

v4.09 - v4.10 — Smart Instrument & MIDI CH Detection

  • Replaced manual mathematical offsets with Native Project Scan Engine logic.
  • Added Instr and MIDI CH rows.
  • Added dynamic instrument and MIDI channel detection.

v4.06 - v4.08

  • Unified visibility engine.
  • Improved notifier management.
  • Restored safe GUI pad behavior.

v4.05

  • Cleaned GUI layout.
  • Moved mappings to Root.
  • Added smart pattern scrolling with absolute and endless encoder support.
  • Added parent-child UX highlighting.

v3.9x

  • Introduced Split Solo Architecture.
  • Added early group-track handling and custom group solo behavior.

External Links

Liability exclusion: You are about to download and install software from a third-party provider. This software was not developed by Renoise and is listed here in a summarised form purely as a convenience for our users. Renoise takes no responsibility for any malfunction, incompatibility, or damage caused by or otherwise arising from the use of the software. In the case of problems with the installation or use of the software, please contact the relevant developer.