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.5.4
API target: Renoise Lua API 6.2 / Lua 5.1 runtime style
Version: 4.28 β Engine Runtime, Group Topology, DSP Cache & Assigned Instrument Selection
Zorgan MIDI PADs to Controll Tracks is a compact Renoise performance and navigation tool for MIDI pads, button controllers and mouse control. It links hardware pads, GUI buttons, Renoise tracks, instruments, send routing, mute states, solo states, group tracks and visual feedback into one fast control surface.
The tool is designed for quick project navigation, track/instrument selection, group-aware mute/solo handling, controlled TRACK OFF states and clear visual feedback without opening a large mixer workflow.
1. Quick Workflow
- Open the tool from the Zorgan menu, keybinding, or MIDI-mapped Show GUI action.
- Press STOP ENGINE / START ENGINE to control whether the runtime engine is active.
-
Map your hardware pads/buttons through Renoise MIDI Mapping (
Ctrl+M). - Use hardware MIDI pads for fast track selection, assigned instrument selection, normal MUTE, or hold-to-SOLO.
- Use GUI PADs buttons only when you intentionally want persistent TRACK OFF.
- Use GUI Tracks buttons to select tracks or double-click for track SOLO.
- Use GUI GROUPS buttons to select or group-mute Renoise Group tracks.
- Use the global SOLO button to solo either the selected track or the selected group.
The GUI is both a control surface and a live visual monitor. Track buttons keep the real Renoise track color and receive overlays for MUTE, OFF, SOLO, selected track and selected group membership.
2. Engine Runtime
The main service button is:
STOP ENGINE / START ENGINE
STOP ENGINE
When the engine is stopped:
- MIDI PAD runtime input is ignored.
- GUI runtime buttons do not change Renoise track states.
- Track notifiers are detached.
- PAD assignment cache is cleared.
- DSP summary cache is cleared.
- PAD hold state is cleared.
- Group sweep FX is stopped.
- Tooltip and DSP status show the stopped state.
STOP ENGINE does not reset your Renoise mixer state. It does not clear mute/solo/off states. It only stops this toolβs runtime engine and clears internal runtime cache.
START ENGINE
When the engine is started:
- Track notifiers are attached again.
- PAD assignment cache is rebuilt.
- DSP summary cache is rebuilt.
- GUI visibility and button state are refreshed.
- Track buttons, instrument row, MIDI CH row, Send rows and DSP status are updated from current Renoise song data.
START ENGINE replaces the old manual GUI refresh workflow. It performs the full runtime rescan needed after a stopped state.
RESET STATE
RESET STATE is still available as a dedicated safety/service action.
It clears current solo logic and sets non-master tracks back to active. This is intentionally separate from START/STOP ENGINE because it changes Renoise mixer state.
3. Hardware MIDI Pad Logic
The hardware pad/button mapping uses one Renoise MIDI mapping per PAD slot.
| Hardware action | Result |
|---|---|
Soft press / low velocity <= Select Threshold |
Selects the target Renoise track and its assigned instrument when available. |
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 persistent TRACK OFF. This keeps hardware mute safe for live performance.
4. GUI Button Rows
Each PAD block contains multiple rows. Every column represents one visible 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-off state. TRACK OFF is protected from group mute/unmute and 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 and its assigned instrument when available. |
| Double click track button | Toggles track SOLO using the single-track solo engine. |
| Hover track button | Shows cached track DSP summary as a tooltip. |
The tooltip is read from the internal DSP cache. It does not scan Renoise devices during hover.
Example tooltip:
Track [05] Bass
DSP: Hydra, Pro-Q 3, Delay
If no DSP devices are active on the track:
Track [05] Bass
DSP: none
Send 1 / Send 2 rows
The Send rows scan real Renoise Send routing from 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 detected instrument. |
Instrument detection uses real project data:
-
Renoise instrument MIDI input
assigned_trackwhen available. - Pattern note data as fallback.
- Safe assignment matching for songs containing Group tracks.
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. |
5. Selected & DSP Status Rows
The top area shows two independent status lines.
Selected row
Selected: TRK: [05] Bass INSTR: [02] VST3: Omnisphere (...)
This row shows the selected Renoise track and selected instrument.
DSP row
DSP: Hydra, Pro-Q 3, Delay
This row shows the active DSP devices on the selected track.
Rules:
- DSP row reads from cached track DSP summary.
- DSP row lists Track DSP devices only.
- Virtual instruments such as Kontakt, Omnisphere or other VSTi sources do not appear in the DSP row.
- Parameter names are not stored or displayed.
-
If no DSP is active, the row shows
DSP: none. -
In STOP ENGINE state, the row shows
DSP: Engine stopped.
6. GROUP Buttons
The GROUPS area lists detected Renoise Group tracks.
Current layout:
5 columns Γ 4 rows = 20 GROUP buttons
| GROUP button action | Result |
|---|---|
| Single click group button | Selects the Renoise Group track. |
| Double click group button | Toggles GROUP MUTE for 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.
When a group is selected, a short Group Select Sweep FX runs 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.
After the sweep finishes, the child tracks stay marked using a final color derived from the selected Group track color. This keeps the selected group readable after the animation ends.
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 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 when group tracks are placed after their children and when nested group structures are used.
7. 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 a 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 child track 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.
8. MUTE vs TRACK OFF Semantics
The tool uses 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 synchronizes that state back into the GUI Tracks row through track mute notifiers.
9. 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. |
| Group-color overlay | Selected group child after Group Select Sweep FX. |
| Sweep colors | Temporary Group Select Sweep FX animation. |
| 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. |
| Red STOP ENGINE button | Engine is running; click to stop it. |
| Dark START ENGINE button | Engine is stopped; click to start it. |
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.
10. Native Project Scan Engine
The tool does not require rigid mathematical offsets for instrument assignment. It scans the Renoise project and builds dynamic caches.
The scan engine checks:
- Real sequencer tracks from the configured start index.
- Group tracks and group membership through Renoise track topology.
- 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.
- Track DSP devices for tooltip and DSP status cache.
Assigned instrument selection
When selecting a track through a Track button or MIDI PAD, the tool also selects the Renoise instrument assigned to that track when available.
The assignment resolver supports projects with Group tracks. It checks valid assigned-track candidates so the selected instrument still resolves correctly when the GUI Track buttons display only normal sequencer tracks while Renoise song track order also contains Group tracks.
If no assigned instrument is found, the tool selects the track and leaves the current instrument unchanged.
DSP cache
The DSP cache stores only primitive text snapshots:
- Track index.
- Track name.
- Active DSP device names.
- Tooltip text.
- Status row text.
It does not store Renoise userdata objects, device parameters, parameter names or parameter values.
11. Track Topology & Live Refresh
The tool now watches structural song changes through lightweight signatures.
Handled cases:
- Add track.
- Remove track.
- Reorder track.
- Change classic track into Group track.
- Change Group track back into a normal track.
- Rename Group track.
- Change instrument assigned track.
- Change track DSP chain by adding/removing/reordering devices.
When topology changes, the tool rebuilds the internal PAD assignment cache and DSP cache structurally. It does not fake this by text refresh.
This is important because Group tracks are not shown as normal Track buttons, but they still affect song track order and instrument assignment numbering.
12. 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. |
| Track topology check | Lightweight signature check, throttled. |
| Instrument assignment check | Lightweight signature check, throttled. |
| 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. |
| Tooltip display | Reads prepared cached text; no hover scan. |
This avoids refresh storms and keeps the GUI responsive while Renoise track states change rapidly.
13. 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.
14. Practical Notes
GUI PAD vs hardware MIDI PAD
GUI PAD click = persistent TRACK OFF
Hardware PAD mute = normal Renoise MUTE
This separation is intentional.
Group tracks in Track buttons
Group tracks are listed in the GROUPS area, not in the normal Track button grid.
If a normal track is changed into a Group track in Renoise, the tool rebuilds the Track button list and removes it from the normal track grid.
Virtual instruments vs DSP devices
Virtual instruments belong to the Selected / Instr information.
Track DSP devices belong to the DSP row and Track button tooltip.
Example:
Selected: TRK: [05] Bass INSTR: [02] VST3: Omnisphere (...)
DSP: Hydra, Pro-Q 3, Delay
Omnisphere is not listed as DSP because it is a virtual instrument, not a Track DSP device.
15. Changelog
v4.28 β Assigned Instrument Selection Fix
Fixed
- Fixed track selection not switching to the assigned virtual instrument in projects containing Group tracks.
- Reworked assigned-track matching from one-way resolver logic into target-track candidate matching.
- Track button and MIDI PAD selection now select the assigned instrument when Renoise instrument assignment is available.
Changed
- Track selection now uses a unified track + assigned instrument path.
- If no assigned instrument is detected, the current instrument is left unchanged.
v4.27 β Assigned Instrument Cache Path
Added
- Separate assigned-instrument cache field for PAD assignments.
- Assigned-instrument detection path independent from pattern fallback display logic.
v4.26 β Assigned Track Resolver
Added
- Initial resolver for Renoise instrument MIDI input assigned track conversion.
Changed
- Prepared assigned-track handling for songs where song track index and visible sequencer position differ.
v4.25 β Track Select + Instrument Select
Added
- Unified helper for selecting track + assigned instrument.
- Instrument assignment signature check for live assignment changes.
Changed
- Track button, MIDI PAD select, Instr row and MIDI CH row now share one selection path.
v4.24 β Group Child Final Color
Fixed
- After Group Select Sweep FX, child tracks now remain marked with a final color derived from the selected Group track color.
- Removed fallback to generic group-child color after the sweep ends.
v4.23 β Track Topology Scope Fix
Fixed
- Fixed crash after adding a new track caused by an undeclared local song reference in topology update callback.
v4.22 β Track Topology Signature
Added
- Lightweight track topology signature check.
- Automatic Track button rebuild when a normal track is changed into a Group track.
- GROUP name refresh support when a Group track is renamed.
Changed
- Assignment cache can rebuild structurally even when GUI is closed.
v4.21 β Compact Status Layout
Fixed
- Fixed status row layout width so Selected and DSP text no longer stretch the GUI window.
v4.20 β Status Row Gap Cleanup
Fixed
- Removed unnecessary spacing between status labels and their text.
v4.19 β Compact DSP Status Text
Changed
- Added controlled clipping for the fixed DSP status row.
- Kept full DSP text available in Track button tooltip.
v4.18 β DSP Cache, Tooltip & 20 GROUP Buttons
Added
- Track DSP summary cache.
- Cached Track button DSP tooltip.
- Fixed DSP status row under Selected.
- GROUP button layout expanded to 5Γ4 / 20 buttons.
Changed
- Removed the old REFRESH GUI button from the main GUI.
- START ENGINE now performs the proper refresh/rescan workflow.
v4.17 β START / STOP ENGINE Runtime
Added
-
Runtime
STOP ENGINE / START ENGINEbutton. - STOP ENGINE clears runtime cache and stops engine work.
- START ENGINE rebuilds assignment cache, notifiers, DSP cache and GUI state.
Changed
- Replaced the older RESTART TOOL workflow with a safer runtime state toggle.
v4.16 β Header Cleanup
Changed
- Tool version is kept only in the GUI title.
- Script comments were cleaned to English language where touched.
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.
- Short Group Select Sweep FX using real track colors.
- More robust group membership handling for nested/group-parent structures.
v4.14 and older
- Anti-freeze GUI architecture and dirty-flag refresh.
- Zero FOUC GUI preparation.
- Standard MIDI button support.
- Smart Instrument and MIDI CH detection.
- Pattern scroll mappings.
- Split solo architecture and early group-track handling.