Status: Implemented in APS v0.27+ (Jan 2026)
Historically, the APS StepSeq (step sequencer) subsystem was designed with a fixed 32-step grid assumption. This reflected the most common drum-pattern use case at the time:
Under this assumption, many parts of the StepSeq implementation were hard-coded around a 32-step structure (e.g., two 16-step pages, fixed copy operations, and fixed cursor logic).
As a result, patterns with LENGTH=24 were explicitly or implicitly rejected by StepSeq, even though such patterns are musically valid.
This document explains the original rationale for that policy and outlines the plan to evolve StepSeq toward a fully variable grid-length architecture aligned with the ADT specification.
The ADT specification defines grid type and length as a coupled pair:
| GRID | Meaning | LENGTH |
|---|---|---|
| 16 | Straight 16th-note grid | 32 |
| 8T | 8th-note triplet grid | 24 |
| 16T | 16th-note triplet grid | 48 |
Therefore:
Any editor or player that claims ADT compliance must eventually support these combinations.
The historical restriction was not a musical decision, but an engineering safety constraint. Key limitations included:
0–15 → 16–31For these reasons, StepSeq deliberately limited itself to LENGTH=32 to avoid subtle corruption or crashes.
The goal is to evolve StepSeq into a grid-aware, length-agnostic editor that correctly supports all valid ADT grid/length pairs:
This will ensure:
steps = 32 with:steps = pattern.length
page_size = 16 pages = ceil(steps / page_size)
pages instead of assuming exactly two pagesbar_steps = steps / bars
first_bar → second_bar
rather than fixed index ranges
stepsUntil the above refactoring is complete:
This avoids data corruption while preserving musical correctness at the engine level.
This change aligns StepSeq with the long-term goals of the Ardule / APS ecosystem: clarity, correctness, and extensibility.