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.

Arranging sections by duration

arrange allocates actual cycle durations rather than proportional weights:

Common Lisp
(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.

Looping a score passage

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.

Common Lisp
(d1! (loop-passage 1/4 3/4 (s "bd hh sn cp")))

Choosing a transition

pattern-crossfadeMixer level and xfade
Use it forShaping the gain of new events across a transitionContinuous deck transitions
Acts onNewly triggered events, not tails already soundingEach channel’s configured target orbit
CurvesEqual-power default, explicit linear, and the reference-style overlap curvexfade: equal-power default, with :linear available explicitly

Pattern crossfades

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.

Mixer levels and crossfades

For continuous deck transitions, use the mixer:

Common Lisp
(level 1 1)
(level 2 0)

(d1! (s "bd ~ sn ~"))
(d2! (s "bd hh sn hh"))

(xfade 1 2
       :bars 8)
  • The arguments to xfade are FROM, then TO.
  • Prepare the destination deck before fading.
  • The default curve is equal-power; :linear is available explicitly.
  • Tempo is sampled when the fade cue runs. The fade’s duration does not continuously retime itself after later BPM changes.

Cut groups and orbit routing

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.

Structural transitions

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

Documentation

Search the documentation

Results update as you type. Use the up and down arrow keys to choose a result and Enter to open it.