This function introduces an implementaton of an arpeggiator.
This meta controller is an instrument that, rather than playing notes, dynamically sets a scale, that other layers can then play from. This allows lots of generative type effects. The way this arpeggiator works may seem a bit convoluted, but hopefully this offers flexilibity to lots of different uses.
This function is a property of the layer, and is selected under the layer menu. When active, the main display will change slightly to indicate that it is not an “INST” that is being played, but a META.
The controller constructs a scale from 4 notes defined in the layer, repeated across 4 octaves (one octave lower than the original notes, the original notes, then +1 octave and +2 octave). The scale number (see Per layer scales) is taken from the “midi channel” number of the layer. That is, to write to scale set 1, the midi channel should be 1, whereas to write to scale set 8, the midi channel should be set to 8. (No midi information is output by this meta controller).
How the four notes are defined depends slightly on the layer mode. For all non-score modes, where chords are impossible (e.g. random) or not necessarily deliberate (e.g. bounce), each new note pushes out the oldest one in the four-note unit. So, if Arp4 is used in random mode, once 4 notes are entered, then the scale defined will always be “full”, with no missing notes.
In score mode, where “chords” are more normal, the defined scale is cleared if any are set. This means a three note chord will only have three notes (repeated in each octave) - i.e. the scale generated will have gaps.
For all layers, the notes are sorted by pitch.
A typical usage model for this might be to have layer 1 be Score mode, using an Arp-4, set to Ionian scale, with midi channel 1 (i.e. layer scale 1) as its target. A four-note chord in each column, and a slow loop speed, would change the contents of layer scale 1 on every tick. A different layer - e.g. a bounce layer - with layer scale set to 1 - could then be used to arpeggiate from the 4 notes defined by the score layer.
Alternatively, I’ve found setting a few widely spaced notes in a random layer using Arp-4, and then rotating the layer, is a great way of generating evolving chords.
A few notes:
If the target (i.e. midi channel) of an Arp-4 layer is the layer scale, nothing will happen.
Only 4-note arps are currently set because a 4-note pitch sort was quite fast to execute, and (for example) an 8 note sort would take longer. It is possible to implement a generic N-note scale setting controller, without sorting (i.e. first in, first out) if this is useful for people. In the mean time, I may work on a suitably fast 8-note sort.
Arp-4 layers don’t record incoming midi. This means that it can’t be used as a arpeggiator for a keyboard, for example.
in case it wasn’t obvious, this isn’t a traditional arpeggiator, i.e. an instrument that arpeggiates (up/down etc.) chords that are played into it; since the arpeggiator pattern is defined within the target layer.
Multiple layers can play from the same scale number, allowing chords, bassline rhythms, arpeggios, all to come from the same 4-note set.
First included in A021.