StepClip - Section - Pattern - looping

I have watched videos and read the docs but I am trying to figure out exactly how the structure of these three relate when creating the app model.

The way I see it;

  • A StepClip that has a start and end (in track arrangement).
  • A StepClip contains 1…* Sections
  • A Section can contain 1…* Patterns.

Do I have this correct?

So when you loop a StepClip, what is actually getting looped, the Section or Pattern?

I think Waveform is the best demonstration of this.
A StepClip has a length but itself can’t be looped in the same way that an audio or MIDI clip is. Instead, a StepClip’s content will be repeated for the duration of the clip.

A StepClip contains a number of Patterns. These have a number of notes and then a set of on/off states, gate and velocities per note.

Then you build the contents using a sequence of these Patterns.

Finally, you can specify if the extra space in the clip (after the initial length of all the consecutive PatternInstances) is filled with the last Pattern repeated or the whole sequence.

It’s a bit difficult to explain but I hope that helps.


AH! So the video on the Waveform 9 docs is incorrect?

There is really no such thing as a Section (as the narrator was explaining), this is what was confusing me.

If that is the case, I totally understand what is going on. Loops are internal to the StepClip and it’s basically a container.

Having Patterns in a list was what I was seeing in the code.

So to sum up, you have 3 patterns, the looping only happens after you have exceeded the length of all 3 Patterns.

1 Like

That’s not strictly correct. Remember that sometimes we name things differently in the app to the code to reflect their real-world use. Obviously we try to minimise that so things don’t get confusing for us but they are different audiences.

Calling things Patterns and Pattern-Instances for users isn’t the best approach so we have “Patterns” and “Sections”, where a “Section” is filled with a “Pattern”.
In code, there is no “Section” but simply an array of “Patterns” (which are wrapped up by a “PatternInstance”).


1 Like

Bam, got it! Now it’s 100% clear.