TimeZigs is a Renoise tool that adds fast and customizable creation of patterns and phrases in multiple time signatures.
It provides a 4×4 preset grid plus a CUSTOM mode, live readouts for Lines / LPB / Beat Duration, basic presets, and quick-create keybindings for instant pattern/phrase generation.
Based on Esa Ruoho’s Paketti Slab O Patterns.
Grab the latest alpha version at https://github.com/untilde/timezigs/releases/tag/Alpha
Since it's still a very experimental tool, feel free to open Issues or send Pull Requests.
- Creates patterns or instrument phrases for any time signature without changing your Lines-Per-Beat (LPB) setting.
- Automatically writes
ZLxx(LPB) on the first line of generated patterns and phrases. - 4 preset slots for custom time signatures.
- Shows current Time Signature,
Lines,LPB, andBeat Duration(lines per beat). Updates on LPB change. - Optional
Fill notes(experimental) mode places note markers per beat using theDelaycolumn for fractional timing. - Optional section naming: append current time signature and
LPBto the section name. - Safe/Integer Line mode (Allow only integer beat durations): highlights non-integer presets and blocks creation unless the bar length is a whole number of lines. Disable to allow approximation (more accurate at higher
LPB).
Open via Main Menu → Tools → TimeZigs.
Available keybinds (set in Renoise preferences):
Pattern Editor: TimeZigs: ToggleGlobal: TimeZigs: ToggleCreate Patterns – Presets 01–16(16 = Currently set Custom Time Signature)Create Patterns – Custom Preset Slots 01–04Create Phrases – Presets 01–16Create Phrases – Custom Preset Slots 01–04
- Use
+/-to adjustNumerator (n)andDenominator (d). - Right panel has four slots:
- Click a slot to load its
n/dinto Custom. - Click the disk icon to save the current Custom
n/dinto that slot.
- Click a slot to load its
2025-10-23.18-46-22.mp4
To use TimeZigs effectively, it helps to separate two ideas:
-
Time signature (music theory):
n(numerator) = how many beats are in one bar.d(denominator) = which note value counts as one beat:2= half,4= quarter,8= eighth,16= sixteenth,32= thirty-second.- Examples:
3/4= three quarter‑note beats per bar;6/8= six eighth‑note beats per bar.
-
LPB (Lines‑Per‑Beat):
- The resolution of the tracker grid — how many lines represent one beat.
- Changing
LPBchanges grid density for the pattern editor.
TimeZigs decouples these concepts: pick any n/d, and the tool computes how many lines each beat and bar should span at the current LPB, then creates patterns/phrases accordingly and writes ZLxx so the LPB travels with the content.
Example 1: 4/4 at 8 LPB
Lines per beat = (8 * 4) / 4 = 8
Lines per bar = 4 * 8 = 32
Example 2: 5/8 at 8 LPB
Lines per beat = (8 * 4) / 8 = 4
Lines per bar = 5 * 4 = 20
In the two examples above, everything lines up cleanly. Perfect integer grid, no fractional rounding.
But, wait... What if:
Example 3: 8/6 at 8 LPB
Lines per beat = (8 * 4) / 6 = 5.333...
Lines per bar = 8 * 5.333... = 42.666...
Now we have a fractional bar length: 42.666... lines. Renoise patterns can only have whole-number line counts, because each line is a discrete grid row.
If the result isn’t a whole number of lines (e.g., some odd denominators at low LPB), Safe/Integer Line mode (default ON) will highlight and block creation. Disable it in Settings to allow approximation and generate patterns/phrases with rounded line counts (higher LPB improves accuracy). In Example 3, the pattern would round to 43 lines.
In Safe/Integer Line mode, the tool detects float beat durations and refuses to create such patterns, highlighting the “non-integer” time signatures. That’s because 42.66 lines/bar doesn’t fit cleanly on the grid — the last beat would land partway through a line.
If you want to avoid these float pattern durations, keep Safe mode enabled.
If Safe Mode is off, the tool rounds to the nearest integer:
42.666... → 43 lines/bar
That makes the time signature approximate. However, the beats are slightly stretched (each now ≈ 5.375 lines instead of 5.333), which creates a slow drift over many bars — small, but perceptible in mathematically tight material.
The higher the LPB, the smaller the rounding error per beat. For instance, at LPB = 64, the same 8/6 bar becomes:
Lines per beat = (64 * 4) / 6 = 42.666...
Lines per bar = 8 * 42.666... = 341.333... (rounded to 341)
Now the error per beat is negligible (≈ 0.008 lines per beat), effectively inaudible and visually consistent.
See Technical notes below for exact formulas and the To Do for future improvements.
- Sync Denominator and LPB (default OFF): when enabled, changing the
Denominator (d)setsLPBaccordingly and creation uses the syncedLPB(writesZLxxwith that value). Prevents fractional beat lengths; disable to keepLPBanddindependent. - Global Custom Denominator: when enabled, the preset grid uses your custom denominator.
- Custom Section Name.
- Append Time Signature and LPB to Section Name.
- Fill notes (experimental): inserts one note per beat across the created bar; uses
Delayfor fractional placement. - Safe/Integer Line mode — Allow only integer beat durations (default ON):
- Subtly marks non-integer presets in the grid.
- Blocks Create Patterns/Phrase when the bar length is not an integer number of lines at the current
LPB. - Disable to allow approximation; higher
LPBimproves accuracy.
Formulas:
BeatDuration(lines) = (LPB * 4) / d
LinesPerBar = round(n * (4 / d) * LPB)
Delay column resolution:
- Renoise’s note delay column has 256 sub-line units per line (
00–FF), independent of ticks-per-line (TPL). TimeZigs’ fill logic rounds to these 256 steps and carries overflow to the next line when needed.
Constraints and validation:
- A beat must be at least
1line long. If(LPB * 4) / d < 1, the tool warns and aborts. - Higher denominators (e.g.,
d = 24,32) generally require higherLPBto avoid sub-line beats. - When Safe Mode is disabled, some combinations round to the nearest whole line due to the discrete grid.
- Denominator range:
2–32. - Numerator range:
1–32. - Pattern creation writes
ZLxxon Master to carryLPBwith the pattern; Phrase creation setsphrase.lpband mirrorsZLfor parity.
-
Enhance delay column calculation and fill marker placement. Example:
d = 13atLPB = 4→~1.23lines/beat- Delay offsets ≈
00,3B,76,B1, … - Pattern “slides” over time, since it doesn’t divide the grid evenly
-
Change fill options: give different resolutions based on current time signature (half, double, etc).
-
Show next delay value for current beat length and create a keybind to automatically insert it (for example, if you have a float line count, read the previous and current line in the editor and print the next needed delay column value to stay on grid).
-- Custom metronome: instrument with different sound options.
- Metronome sequencer: use the canvas to sequence metronome patterns or derive them from current timesig. Store sequences in JSON (e.g.,
o= strong beat,x= weak,-= silence; append delay info if needed). - Refactor the UI code for clarity.
- Refactor fill function based on the metronome settings.
- Adapt the Paketti keyhandlers to make the UI fully controllable from keyboard.
Based on Esa Ruoho's work in Paketti Slab O Patterns.