Reference
Arrangement and transitions
Section durations with arrange, score-passage loops with loop-passage, pattern crossfades, mixer level and xfade, and structural rhythm morphs.
Mora arranges sections by actual cycle durations, loops score passages by re-querying them, and offers distinct kinds of transition: crossfades that shape newly triggered events, mixer fades that address a channel’s configured target orbit, and morphs between rhythm descriptions. This page describes each and the boundaries between them.
Sound-bearing examples on this page use the SuperDirt banks bd, sn, hh, and cp, and need an attached output backend and a working receiver.
arrange allocates actual cycle durations rather than proportional weights:
(d1! (arrange 4 (s "bd ~ sn ~")
2 (s "bd hh sn hh")))Its default section clocks advance independently across repeated arrangements. Explicit phase and boundary policies support other intentions.
time-cat is a different operation: it fits phrases into proportional weighted spans. Do not use time-cat weights as if they were arrange durations. See weights are not durations.
loop-passage repeats a fixed source-time window and re-queries it. By default it clips and retriggers at the loop boundary; preserving the original wholes and onsets is an explicit alternative.
(d1! (loop-passage 1/4 3/4 (s "bd hh sn cp")))pattern-crossfade | Mixer level and xfade | |
|---|---|---|
| Use it for | Shaping the gain of new events across a transition | Continuous deck transitions |
| Acts on | Newly triggered events, not tails already sounding | Each channel’s configured target orbit |
| Curves | Equal-power default, explicit linear, and the reference-style overlap curve | xfade: equal-power default, with :linear available explicitly |
pattern-crossfade shapes newly triggered events. It does not continuously turn down a sample or effect tail that is already sounding.
It offers an equal-power default, explicit linear behavior, and the reference-style overlap curve. In every case its gain shaping is applied to new events, not retrospectively to active tails.
For continuous deck transitions, use the mixer:
(level 1 1)
(level 2 0)
(d1! (s "bd ~ sn ~"))
(d2! (s "bd hh sn hh"))
(xfade 1 2
:bars 8)- The arguments to
xfadeare FROM, then TO. - Prepare the destination deck before fading.
- The default curve is equal-power;
:linearis available explicitly. - Tempo is sampled when the fade cue runs. The fade’s duration does not continuously retime itself after later BPM changes.
Independent cut groups are important when decks contain choked samples or stems. Pipelines and composition shows stack examples with per-lane cut and orbit annotations.
For structural transitions, rhythm-morph and euclid-morph interpolate rhythm descriptions rather than fading an audio bus.
Source references
Repository-relative paths in the Mora source where these mechanisms are implemented.
-
src/mini/arrangement.lisp -
src/mini/loop-passage.lisp -
src/mini/mixer.lisp