We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
MIDI PADs to Controll Tracks
by
zrgcz
🎹 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:
-
Map your hardware pads/buttons through Renoise MIDI Mapping (
Ctrl+M). - Open the tool GUI from the Zorgan menu, keybinding, or MIDI-mapped Show GUI action.
- Use hardware pads for track/instrument selection, normal MUTE, or hold-to-SOLO.
- Use GUI PADs buttons only when you intentionally want a persistent TRACK OFF state.
- Use GUI Groups buttons to select or group-mute Renoise Group tracks.
- 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:
- Clears existing solo flags.
- Mutes other active tracks.
- Unmutes tracks that belong to the selected group.
-
Keeps
TRACK OFFtracks protected. - Keeps relevant Send tracks active when detected through the child tracks’ Send routing.
- 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:
- Real sequencer tracks from the configured start index.
- Notes written in pattern data to detect used instruments.
- Renoise instrument MIDI input assignment where available.
- Plugin or MIDI routing data to detect MIDI channel information.
- 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_parentmembership 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_statedirectly.
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 127is 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.