INVISIBLE ARTFORMS

STPR-1: three-note step sequencer

The step sequencer, note lengths and Drum Mode

STPR-1 sequences up to three notes per step, with 64 steps per pattern. Click and drag notes directly on the grid. Three matching velocity lanes sit underneath it. The sound comes from Afterglow or the instrument assigned to your MIDI track. In TheRaK, STPR-1 also sequences drums: see Drum Mode in TheRaK.

Make a pattern

#
  1. Open Tools > DAWntless > STPR-1. Click an A1–D8 pattern button, or choose from the Pattern A1 menu; A2 Chord walk is a chord example. Hover a button to see its pattern name. Teal marks the selected slot and orange marks the playing slot; during playback, clicking another button launches that pattern at the next step boundary.
  2. Click an empty grid cell to add a note. Stack up to three pitches in a column to make a chord. Drag a note vertically to change pitch, or horizontally to move it to another step. Right-click a note to remove it; Delete removes the selected note. Scroll or use Octave - / + to change the visible pitch range.
  3. Drag the bars in VEL 1, VEL 2, and VEL 3. The colours match the notes above. Each note has its own velocity, 0–127. At 0, the note stays visible but makes no sound. If all notes in a step are at zero, that step is a rest.
  4. Set Steps to 1–64. 1 - 32 and 33 - 64 select the visible page. Follow playhead changes pages during playback; manually selecting a page turns Follow off so the page stays still while you edit. Shortening a pattern keeps its hidden steps.
  5. Choose the step rate (1/32, 1/16, 1/8 triplet, 1/8, or 1/4), set Swing, and press Play. A playhead travels across the grid and sounding notes light up. BPM is shared with the Thumpr/SQLCH Tools jam; STPR-1 joins at the next 4/4 bar. Edits and pattern changes take effect at the next step boundary.
  6. Stop releases STPR-1. Mute silences its audio while the sequence continues. Panic stops the Tools jam and resets STPR-1's MIDI transpose. Closing the panel stops STPR-1.

Numeric controls update while you drag. Live note, velocity and timing edits apply at the next step without restarting the phrase or its audio. Changing the selected pattern slot still launches that pattern from its first step.

A completed numeric, note or velocity drag is one Undo. Redo restores it. Escape cancels a drag. A destination containing three notes or the same pitch rejects a dragged note rather than replacing anything.

There are 32 reusable pattern slots, A1–D8. Copy, Paste, and Clear affect the selected pattern. Save bank stores patterns in your project. Open Bank, sound & additional settings to load a different bank, create a new one, or choose the standalone Afterglow preset. Instruments and pattern banks remain separate assets.

Per-note lengths

#

Each note has its own length in whole steps, from 1 step to the end of the pattern; the notes of a chord can have different lengths. A new note lasts one step, and a one-step note plays exactly as STPR-1 always has. Banks saved before lengths existed play as before: every note lasts one step.

Drag a note's edge. A long note is drawn as a bar across the steps it covers. Point at either end of a note (a narrow zone at the bar's edge) and the pointer becomes a left-right arrow:

  • Drag the right edge to lengthen or shorten the note. It snaps to whole steps and stops at the pattern's last step; it never touches other notes.
  • Drag the left edge to move the note's start while its end stays where it is. The note moves to the new start step and becomes that step's last note, so its velocity lane can change. A step that already has three notes, or already has this pitch, refuses the note: the bar turns red at the requested place, STPR-1 says why, and the note keeps its last valid position.
  • Drag the middle of a long note to move it: it keeps its length and moves by the steps you drag, however far into the note you grabbed it.

You hear each change while you drag. Releasing the mouse makes the whole drag one Undo; Escape cancels it and restores the note and the selection. Dragging past the right end of page 1 - 32 turns to page 33 - 64 and moves the pointer to the start of the new page, so the note grows on across the page boundary without jumping; dragging past the left end of page 33 - 64 turns back the same way. A bar that continues on the other page has no edge at the page boundary: drag its start on the page where it starts and its end on the page where it ends.

Length. With a note selected, Length (after Gate in the selected-step row) sets that note's length exactly, from 1 to the number of steps left before the pattern end. It is disabled ("Select a note in the grid.") when the selected step has no selected note. It shows the length the note plays, as its bar does: after you shorten the pattern, a longer stored length is kept (it plays again when the pattern grows) until you really change it here or at the note's edge. It appears in the STPR-1 window, on TheRaK's STPR-1 card and in classic rack rows; each change is one Undo.

How a long note ends. The note's start step shapes its end. Gate is the part of the note's last step that still sounds. Tie to next step holds the note to the end of its last step, and continues it into the following step when that step plays the same pitch. A note never wraps past the loop end: a note longer than the steps left in the pattern stops at the pattern's end. Shortening the pattern shortens such notes as they play without changing them, and lengthening the pattern again gives them back their length.

Notes under a long note. Other notes can start on the steps a long note covers. They play normally, with their own velocity, gate, tie and length, while the long note keeps sounding; lengthening a note never deletes or changes them. In the velocity lanes, the long note's lane is greyed on the steps it only holds (its first step stays active) and shows the long note's velocity as a grey bar; greyed cells cannot be edited. A step that has its own note in that lane shows and edits that note instead.

The same pitch again. A note of the same pitch that starts under a long note restarts it: the long note ends there, and the new note plays with its own data. The grid draws the rest of the long note dimmed, and its lane is no longer greyed after the restart. A note of that pitch at velocity 0 is silent, so it restarts nothing.

16 voices. STPR-1 plays up to 16 notes at once. When long notes keep all 16 busy, a new note takes over the one that started earliest among the notes its own step does not play, so new notes always sound. With one-step notes this never happens (a step has at most three notes).

Starting in the middle. When playback starts, loops or jumps to a step that a long note covers, that note sounds from the play position, as it would have if the pattern had played from its first step. A note that a restart or a takeover ended before that point stays ended.

Edits while notes sound. Erasing, shortening, moving or muting a long note while it sounds stops it within one step; lengthening it extends it at once, even in its last step. Dragging its left edge keeps it sounding while its span still covers the play position, and an edit you undo within the same step (Escape, or a velocity drag through 0 and back) leaves it sounding.

Everywhere the pattern plays. The Tools jam, classic racks, TheRaK device racks (in the editor and in a game), and Write MIDI all play the same lengths: a printed note lasts as long as the jam plays it. Drum Mode has no note lengths and is unchanged.

An example. The Stabs chain of the factory rack DA_Rack_TechnoRulez plays a 64-step pattern built on lengths: four pad chords of 16 steps (the notes of the last one end after 8, 12 and 16 steps, so it thins out), one-step stabs that start under them with their own velocity and gate, and a high note held from step 57 to the pattern end. Load the rack in TheRaK and unfold its STPR-1 to see the bars, the greyed cells and the stabs (see DA_Rack_TechnoRulez and Techno_Rulez).

Factory techno / house patterns

#

New banks contain 32 patterns: the four introductory patterns plus 28 original techno/house starting points. Existing saved banks are kept as they are. To get the expanded collection, use Bank, sound & additional settings > New bank, then Save bank to keep a project copy. Save your current edits before switching banks.

SlotsPatterns
A1–A4Pulse, Chord walk, Steady steps, Control rise
A5–A8Warehouse offbeat, Jack octave, Rubber shuffle, Deep sub answer
B1–B4Acid staircase, Machine pulse, Motor city fifths, Late night drive
B5–B8Broken warehouse, Three against four, Minimal pocket, Disco octave turn
C1–C4House bass conversation, Four bar sub journey, Offbeat minor, Piano jack
C5–C8Deep seventh, Garage skip, Dub shadows, Techno minor stabs
D1–D4Organ reply, Bright house lift, Detroit suspended, Minor chord conversation
D5–D8Basement progression, Sunrise piano, Four bar dub, Night bus chords

The collection includes straight and swung grooves, syncopated bass, octave figures, three-note chord voicings, and 16-, 32-, and 64-step phrases. Selecting a slot brings its notes into the visible pitch range. Pattern banks contain notes and timing; the chosen Afterglow preset supplies the sound.

Jam with Afterglow

#

Press Play, then Open Afterglow. Both windows share the current jam preset, regardless of which window opened first. Turn Afterglow controls or load another preset while STPR-1 runs: changes reach the playing synth without restarting the pattern or clearing MIDI transpose. Granular sample changes also update live. Factory presets become editable temporary copies; Save preset creates your own asset.

Loading a pattern bank while playing queues its A1 pattern at the next step on the same jam clock. Choosing another slot does the same. Thumpr and SQLCH can keep playing alongside it. Close Afterglow to hide the sound editor without stopping STPR-1; stop or mute playback in STPR-1.

With an Afterglow destination track selected, preview starts from that track's preset. Loading a different sound changes the jam preview; use Afterglow's Use on selected MIDI track to assign that sound to the arrangement. Editing an existing project preset changes that shared asset. Ordinary sampler tracks keep their own instrument.

If the optional Control lane addresses a parameter such as Wave_Cutoff, the next step reapplies that lane's value after a manual knob edit.

MIDI only transposes

#

Enable MIDI transpose, choose the input port, then press a key. With the default Root MIDI = 60 (C4), pressing MIDI 62 moves the entire sequence up two semitones. Note release changes nothing: the sequence keeps the latest transposition until another key is pressed or Reset transpose is used. Stop/start and natural sequence loops retain it. The panel shows the MIDI offset beside the device selector.

The pattern runs normally before any MIDI key is pressed. Incoming velocity does not replace the velocities you drew. Note Off, velocity-zero Note On, sustain, and CC messages do not alter transposition. Unchecking MIDI transpose bypasses the MIDI offset; the main Transpose control still shifts the stored pattern. Output pitches outside MIDI 0–127 are omitted.

Under Bank, sound & additional settings, Channel = 0 accepts all channels, 1–16 filters them, and Root MIDI changes the reference key. Refresh MIDI devices rescans the shared input port; reconnect to receive new keys. Playback retains its previous offset during reconnection. While STPR-1 consumes MIDI transpose input, matching direct-note monitoring is suppressed to avoid sounding the key twice. Normal MIDI recording remains independent.

STPR-1 has no arpeggiator. A separate arpeggiator is planned for version 1.1.

Write MIDI to your arrangement

#
  1. Open a DAWntless Level Sequence, select a standard MIDI or Afterglow track, and click Use selected MIDI track. Preview uses that track's instrument assignment.
  2. Position the playhead, choose Repeats, and click Write MIDI. Note pitches, individual nonzero velocities, timing, and optional automation are written in one undoable action. Zero-velocity grid notes are skipped. Save the Level Sequence.
  3. To revise a phrase, select one of its printed notes or control lanes and click Update phrase. The phrase stays at its original start. Locked phrases and conflicting unrelated notes/automation are protected.

Update phrase replaces only the phrase's own notes and its control lane. Curves you add with Add MetaSound Automation (or from a TheRaK knob) go on the track's own automation lane, which covers the whole sequence and which Update phrase never removes. An earlier version could put such a curve inside the phrase's control lane, where Update phrase deleted it; the next Update phrase now moves it to the track's automation lane with its keys, in the same undo step (see Manual lane and STPR-1 phrase lanes).

Printing uses the stored pattern and the main Transpose control; it does not bake the live MIDI transpose. Printed notes play through the existing editor/PIE/packaged sequence path. No live STPR-1 component is needed for a printed arrangement. Printing or starting the arrangement stops Tools playback.

The destination instrument is preserved. SQLCH uses its own sound protocol and is not an STPR-1 destination. Custom instruments still need DAWntless's existing 16-voice input interface, even though an STPR-1 step uses at most three notes. The writer validates the numbered destination route.

Additional settings

#

Gate, Tie to next step, and Control edit the selected step. Gate is a fraction of the time until the next step (of a long note's last step, see Per-note lengths). A tie continues pitches shared with the next step, including across a loop boundary. A muted note or rest releases the notes of the previous step; a long note sounds on through them.

The optional Float parameter, minimum, and maximum preserve STPR-1's automation workflow. Enter a route-local writable float such as Wave_Cutoff; each step's Control maps into the chosen range and continues through rests. Controls remain at their value until the next step.

Standalone preview returns to Afterglow and enables the preset picker after selecting a destination track.

PIE and packaged-game controllers

#

Add STPR-1 Performer (DAWntlessSTPR1Component) to an actor Blueprint, assign a saved bank and slot, and enable Auto Start or call Start. It lives in DAWntlessRuntime and does not require the editor panel.

The STPR-1 Performer plays banks and classic racks (Rack Preset). A TheRaK device rack plays through the TheRaK Performer component instead (see TheRaK Performer (gameplay)): given a device rack, Start returns false and Status reads "Device racks play through TheRaK or the TheRaK Performer component."

  • Assign Instrument Sound and the matching Afterglow preset, instrument patch, or Thumpr kit. Use Track Instrument copies an existing track's assignment. Standalone sounds need the unprefixed Key0_ through Key15_ interface.
  • With Instrument Sound empty, STPR-1 uses DAWntless's live MIDI instrument. Enable Project Settings > DAWntless Settings > Packaging > Cook Live MIDI Instrument for that default in packaged games. Keep the bank, presets, and custom sounds referenced by packaged content.
  • Listen To Midi Device enables hardware. Auto Connect Midi opens the remembered/first port on Start, preserving an already open one. Midi Device selects/filters an exact device name. Blueprints can call Refresh Midi Inputs, select a name, and Connect Midi Input. MIDI hardware support is Windows/macOS; Windows is the first release-validation target.
  • Custom controllers call Input Note with Note On=true and a positive velocity to select the transposition. Disable Listen To Midi Device for controller-only games. Channels are 1–16. Reset Transpose returns to the original pitch; Get Midi Transpose reads the offset. The old Input Control entry point is retained for compatibility and has no effect.
  • For runtime sound changes, call Set Afterglow Preset on the performer. When editing the assigned preset in Blueprint/C++, call its Notify Changed; set Sample Changed when replacing embedded audio. These updates preserve the running sequence and also work outside the editor.
  • Render Audio = false sends On Note and On Control events for gameplay or another synth. Mute only affects built-in audio. Stop releases active notes and disarms playback, retaining the offset; Panic also resets it.
  • On a DAWntless Sequence Clock Actor, Follow Owner Sequence connects to its runtime player. Otherwise call Follow Sequence. Call Start to arm STPR-1. Sequence stop/pause releases notes without disarming; the next Play rebuilds performance at the current position. Natural loops restart from the playback-range start while keeping the transpose. The performer's own Stop/Panic disarms it until Start is called again.

DAWntless uses one sequence second per quarter note; the clock actor supplies tempo/play rate. Follow Sequence expects this convention. Without a sequence or Tools clock, the component's BPM drives playback.

Live dispatch and Blueprint callbacks run on the game thread. Tools playback follows Quartz position but is frame-dependent, not sample-accurate. Test controller latency at the target game frame rate. Long hitches skip expired gates instead of bursting old notes. Reverse sequence playback is not supported.

Previously saved 32-step banks expand to 64 without changing their notes or velocity. Older prototype patterns with more than three notes in a step are rejected with a validation message; they are never silently truncated.

Drum Mode in TheRaK

#

In TheRaK, an STPR-1 attached to DrumKing, or to one of your own drum instruments, runs in Drum Mode: its card shows DRUM MODE and one lane per pad instead of the note grid. Its melodic patterns stay stored and come back when you attach it to Afterglow again, and its drum patterns stay stored as well. The standalone STPR-1 window described above has no Drum Mode.

Pattern slots. A1-D8 are 32 drum pattern slots, separate from the melodic slots. The factory patterns are A1 four on the floor, A2 breakbeat, A3 trap with hat rolls (ratchets), A4 half-time, A5-A8 fills, and B1-B8 UK garage, footwork and techno variants; C1-D8 start empty. They use pads 1-16 (notes 36-51 at DrumKing's default root), so they suit every factory drum kit. Click a slot to select it: while the jam plays, the new pattern starts at the next step, or at the next bar with Switch on bar. The name field, Copy, Paste and Clear act on the selected slot. The drum patterns belong to this STPR-1 and are saved with the rack; editing a factory pattern changes only this STPR-1's copy. In Drum Mode the card's [...] menu works on the drum patterns: Save preset... stores them as a drum pattern bank (/Game/DAWntless/STPR1/DA_STPR1DrumBank_...), Load preset copies such a bank in (slot A1; the melodic patterns are kept), and Reset returns both the melodic and the drum patterns to the factory ones (slot A1, Lanes follow sounds on).

The grid. Set Steps (1-64), the rate (1/32, 1/16, 1/16 triplet, 1/8, 1/8 triplet or 1/4), Swing and Seed. Each lane header shows the pad's colour, name and note, taken live from the kit (notes are named as DrumKing names them, with the MIDI number: note 36 reads C1 36), and the lane's own M and S (separate from the pad's mute and solo in DrumKing). Filled pads only (on by default) shows the kit's filled pads and every lane that has hits; lanes of empty pads are dimmed, because they still play and print. Turn it off to see 16 pads per bank page. 1 - 32 and 33 - 64 choose the step page, and Follow playhead turns pages while the jam plays. The playhead shows the playing step.

GestureResult
ClickAdds a hit at velocity 100, or removes it
Drag up or downSets the hit's velocity (1-127)
Alt-dragSets its probability (0-100 %)
Shift-clickCycles its ratchets: 1, 2, 3, 4, 6, 8 hits within the step
Ctrl-dragPaints hits across steps
Right-dragErases hits
Right-click a lane nameFill every 1, 2, 4 or 8 steps, Clear, Copy, Paste

Each gesture, a whole drag included, is one Undo step. A cell shows the velocity as its bar height, a probability below 100 % as a dotted outline, and the ratchets as ticks.

Hits. Each hit has a velocity, a probability, 1-8 ratchets with a velocity ramp across them, a gate (a fraction of its step or ratchet, never shorter than 5 ms) and a nudge (stored with the pattern; its editor arrives later). Ratchets are spaced evenly inside the step. Any number of pads can hit on the same step and every hit sounds: there is no 16-voice limit, and a pad hit again on the next step is never lost.

Probability and seeds. A hit below 100 % is rolled once per loop from the pattern's Seed, the same way every time: loop 3 always plays the same hits, so seeking, looping and playing straight through sound alike. Change the Seed for another set of rolls.

Print. TheRaK's Print... lists a Drum Mode chain with the sequencer STPR-1 Drum. Print writes what the jam plays for the first Repeats loops: every rolled hit, ratchets expanded into notes, each with its velocity and its gate as the note length, at the pad's note (the instrument's root note + pad). The dialog's Drum probability row reads "as the jam plays it"; Re-roll prints another reproducible set of rolls ("roll 1", "roll 2"...) without changing the pattern, and Jam returns to the jam's rolls. The same roll number always prints the same notes, so you can print roll 2 again later and get the same track. A printed track holds at most 32,768 notes over all repeats.

In a game. A saved rack with a Drum Mode chain plays in a game through the TheRaK Performer (see TheRaK Performer (gameplay)). It rolls its hits from the pattern's Seed as the jam does; Select Pattern switches drum slots (A1 = 0). There the bar and the beat are those of the Performer's clock, in its time signature (see Time signatures); a pattern keeps its length in quarter notes, so on a 3/4 clock a 16-step pattern of sixteenths still lasts four quarter notes. The TheRaK jam's clock is always 4/4.

Lanes follow sounds. With Lanes follow sounds on (the default), swapping two pads in DrumKing (dragging one pad onto another) moves their lanes in every drum pattern, in the same Undo step, so the beat keeps its sounds. Turn it off to leave the lanes where they are.

Import from Thumpr. Import from Thumpr... replaces the selected drum pattern with a Thumpr pattern, from a Thumpr in the same rack or from a Thumpr pattern bank. Each Thumpr lane lands on the pad whose note is that lane's pad note: note 35 moves to 36, and a note outside the instrument's pads is dropped; the report lists every change. Steps, velocities, chance, ratchets, the length and the seed carry over, the step rate becomes 1/16, and Thumpr's triplet swing becomes Swing × 2/3. Only what Thumpr plays comes over: muted lanes, and lanes a solo silences, are left out (the report names them), and no imported lane is muted or soloed. One Undo step.

No transpose. A drum note is always the instrument's root note + pad (DrumKing's Kit Root, or your drum instrument's root note). MIDI transpose, the main Transpose and the root MIDI setting never move it; with MIDI focus your keys play the instrument's pads instead.

Lanes above MIDI 127. A lane whose note would be above 127 (on a drum instrument rooted at 113 or higher, for example) is dimmed as outside the instrument: it stays in the pattern but is neither played nor printed.

Racks saved before this update. An STPR-1 attached to one of your own Drum-mode instruments used to stay silent; it now plays factory drum pattern A1. Bypass the STPR-1, or clear its drum pattern, to keep that chain quiet.

See the main user guide for instrument assignment, MIDI recording, and sequence clock setup.