Pearls has three main parts:

- Rhythm generator
- Sequencers
- Note mapping

## Rhythm generator

The rhythm generator consists of four types, ranging from simplest to most complex.

### Type #1: Pulses

The rhythm can be defined by the length of steps or the length of the cycle, as well as the number of steps in a cycle. By stacking multiple Pearls units, interesting polyrhythms can be explored.

### Type #2: Euclidean

The rhythm generator is based on Euclidean rhythms. The previous working mode is a special case when the steps and events are the same, but with different values, a general Euclidean rhythm is created. This allows for the creation of familiar yet unusual rhythms.

### Type #3: Altered Euclid

In addition to the usual parameters of Euclidean rhythms (number of steps, number of events, direction, offset), the random exchange of empty steps and steps containing events can be played with.

### Type #4: Euclid Collision

The Pearls rhythm generator introduces the interaction of two Euclidean rhythms. This interaction can be a logical (bool) operation (AND, OR, XOR) or a weighted random choice between the two rhythms. This adds further creative possibilities.

Parameters:

- Number of steps
- Number of events (per euclidean rhythm)
- Direction (per euclidean rhythm)
- Offset (per euclidean rhythm)
- Number of random exchanges between empty steps and event steps (per euclidean rhythm)
- Random seed for this exchange (per euclidean rhythm)
- Interaction operation

## Sequencers

Pearls features independent sequencers for notes, velocities, note length, and note selection. The sequencers only advance on every event generated by the rhythm generator.

### Note sequences

Four patterns can be defined for the notes, which can be switched between at any time during playback.

### Velocity sequence

The values in the sequence range from 0 to 100. With the mapping knobs, these values can be interpolated, extrapolated, or projected into a desired velocity range. The target velocities can range from 1 to 127, matching standard MIDI velocity values. Velocity can also be adjusted during playback.

### Length sequence

The values in the sequence range from 0 to 100. Using the mapping knobs, these values can be interpolated, extrapolated, or projected into a desired length range. The target length can range from 6.25% to 1600% of the current step length. Length adjustments can also be made during playback.

### Selection sequence

The values in the sequence range from 0 to 100. The selection can function as a probability. By using the mapping knobs, the sequence values can be interpolated, extrapolated, or projected into a desired probability range. The target probability can range from 0% to 100%, determining the chance/probability of playing the corresponding note (0% meaning the note never plays and 100% meaning the note always plays).

The selection sequence can also be used in limit mode, where lower and upper note limits are set, muting any notes outside the range.

## Note mapping

### Predefined note mapping

This is a general sequencer mode where musical notes can be assigned to each lane of the sequencer. Four note mapping presets can be created and switched between at any time. In this mode, incoming MIDI notes pass through the device, allowing for stacking of multiple Pearls units.

### Dynamic note mapping

This is an arpeggio mode where incoming MIDI notes are utilized as the notes of the sequencer lanes. The notes can be assigned to the lanes based on four modes: oldest to newest, newest to oldest, lowest to highest, and highest to lowest. If the number of incoming notes is less than 8, recursion can be enabled to repeat the current pattern for the remaining lanes.

## Version history

- 1.2.0 Additional features in the pattern and the note map gear menu
- 1.1.0 CV Toggle outputs, additional utility features for the note map gear menu
- 1.0.0 Initial release