table of contents
- main view
- sequence menu
- pattern transformations
- pattern menu
- snapshot view
- channel view
- saving and loading patterns
- app version history
cykle is an innovative, semi-generative melodic step sequencer for iOS that works by abstracting away all musical parameters (such as pitch, velocity, length, transposition and more) into individual sequences, by way of decoupled sequencer lanes. thus, the interplay between simple elements easily yields complex and musically interesting results.
the design of cykle was partly inspired by the article Manipulations of Musical Patterns (1981) by composer Laurie Spiegel.
standalone & AUv3
the standalone app communicates with other MIDI-enabled apps via CoreMIDI virtual endpoints (configurable in the channel view).
this manual uses various terms specific to sequencers and cykle, which will be clarified below:
a step is an atomic unit in a sequence. a step can be either binary (on/off) or scalar value (for instance, a pitch class or a beat division).
a sequence is a sequentially ordered list of steps. there are various types of sequences (such as pulse, pitch and velocity), each of which will be described in more detail shortly.
a channel contains a list of sequences which together produce a repeating musical phrase. channels can play back simultaneously, similar to the independent channels of audio on a mixing console. and each of the channels can send MIDI to a different destination and/or channel.
a snapshot is a saved state of a pattern. snapshots can be created and selected via the snapshot menu and can be used create and instantly switch between different variations on a pattern. they are marked with the alphabetic letters A to H.
a pattern contains one or more snapshots and/or channels (in the AUv3 version a pattern contains a single channel, since any number instances of the plugin and so any number of 'channels' can be loaded) as well as the musical metadata such as the tempo, swing, scale and key.
a pattern contains snapshots, which contain channels, which contain sequences, which contain steps.
the main view is the first view you encounter on launching cykle. it contains the lanes of various sequencer types (pulse, pitch and length, by default) which are shown as expandable cells. tap on a cell to expand and show its sequence grid. new sequences can be added to the channel by tapping the + icon in the top right of the screen. sequences can be removed by swiping to the left on a non-expanded cell and tapping delete.
one of cykle's defining features is that every sequence can have a different length. combining sequences of different lengths is a powerful technique, as you can quickly and easily generate complex but regular and self-similar musical phrases.
tapping the + icon in the top right of the screen opens at add sequence menu, where you can add new sequence lanes to the currently selected channel. note that each sequence type can only appear in the pattern once, with the exception of the control sequence, of which there can be any number. each of the various sequencer types modulates the pattern in a specific way. we will go over them now:
the pulse sequence sets whether a given step will play or not, using a row of on/off steps, similar to a Roland X0X-style drum machine. by default, the pulse sequence emits the root note of the selected scale. in order to select other pitches, it has to be combined with the pitch sequence.
the rest sequence is the inverse of the pitch sequence, meaning that an active step will mute the events that would otherwise play on that step. the rest sequence can by used in conjunction with the pulse sequence to generate more complex pulse patterns.
the offset sequence move the selected step ahead in time by a small increment. this allows for swing or more complex timing variations to be created.
the length sequence sets the duration of a given step in in a range between 1/16th and a whole note. by specifying different step lengths for each step you can generate more varied rhythmic patterns.
the velocity sequence sets the velocity (i.e. loudness) of a step in the sequence. by specifiying different velocity setting for each step you can generate more dynamic sounding patterns. note that not all MIDI-destinations respond to velocity changes. for patterns without a velocity sequence, all MIDI notes default to a velocity of 100.
the chance sequence allows for randomness to be introduced into a pattern. the value on a given step sets the probability that the notes on that step will play within in a range of 20 (20% chance) to 100% (the note(s) will always play).
the pitch sequence sets the pitch class per step. the eventual pitch that will play on the step is determined in conjunction with the octave and tranposition sequences. the values in the pitch sequence correspond to the diatonic pitches in the selected key and scale. unlike most other sequence types, the pitch sequence allows multiselection in order to create for polyphony. a step cannot be empty, use the pulse or rest sequences to add rests.
the accent sequence allows for specific step to be accented. this means that they will be played at a higher velocity, as configured in the Accent Velocity setting in the MIDI Settings menu (defaults to 120). an accented step overrides the value in the velocity sequence. a non-accented step plays at the velocity defined in the velocity sequence for that step, or at the default velocity (100).
the gate sequence sets the gate time (i.e. duration) of the events per step in a range between 1/16 and 1 whole note. longer gate times mean that the notes on a given step may overlap with events at subsequent steps.
the accidental sequence allows you to sharpen (♯) or flatten (♭) the note on the selected step, adding chromaticism to the programmed sequence.
the transpose sequence allows you to transpose the MIDI note(s) on a given step by the degrees in the selected scale.
the invert sequence inverts chords on the selected step, meaning the notes in the chord will be transposed up by an octave starting from the lowest note (conventionally the root note) upwards (upward transposition) or down by an starting from the highest note (downward transposition). on a step with a single note, this note will end up being transposed up or down by one or more octaves.
the octave sequence transposes the pitches of the notes on a given step up or down by one or more octaves. just like the pitch sequence, the octave sequence allows for multiselection, so notes can be duplicated over one or more octaves.
the ratchet sequence duplicates events in time by dividing a given step into a number of equidistant pulses, creating a roll of notes in a musical subdivision of the sequence's main pulse. this is another way of adding rhythmic variety to your patterns. the ratcheting technique was used extensively within the Berlin School of electronic music (e.g. Tangerine Dream et al.).
the control sequence sends a MIDI CC (Continuous Control) message on a configurable destination number. CC values are commonly used to control synthesizer parameters such as filter cutoff, -resonance and envelope settings. by tapping the control destination number (e.g. 74 - Brightness) on the header cell, the output address can be selected. unlike other sequence types, a channel can contain any number of control sequences, allowing you to control a multitude of parameters simultaneously.
the pitch sequence send a MIDI pitch bend message which alters the pitch of a MIDI notes by a sub-semitone interval. the exact amount of alteration depends on the receiving MIDI device's implemetation.
patterns can be instantly transformed by various actions, allowing to instantly create subtle to dramatic changes in patterns. the available transformations are displayed horizontally scrollable area above the pattern grid of an expanded sequence cell. they are the following:
divides the clock pulses on the specified cell, meaning that each step in the sequence gets played x times before moving to the next. this allows for longer patterns to be created from a few steps.
turns all the steps in a binary pattern off, or sets each step in a scalar pattern to the default value.
appends a step to the sequence. you can also change the sequence length by dragging the resizing indicator to the right of the sequence grid.
removes the last step from the sequence.
randomizes the sequence. for binary sequences, randomize produces a euclidean pattern, which results in more even patterning and thus more musically interesting results.
randomly changes one value in the pattern, allowing to gradually introduce some change without changing the entire pattern.
shifts (or, rotates) the sequence along its horizontal axis, meaning that step 1 moves to step 2, step 2 to step 3, etc.
shifts or rotate the sequence along its vertical axis, meaning that all steps move one item up or down along the list of available values.
reverses the pattern.
inverts the pattern. for binary patterns this means that all the steps that active are set to inactive and vice versa. for scalar patterns this means the values will be mirrored along the vertical axis, i.e., a value on the second-lowest step becomes the second-highest, etc.
doubles the pattern by duplicating the existing steps.
bisects the pattern by removing the latter half of the steps.
tapping the BPM (e.g., 120) indicator in the navigation bar opens the pattern menu, where you can set the tempo, swing, scale and key of the selected pattern. note that the swing global swing setting affects every second 16th note in the pattern, so there need to be events on those step values for the swing to have an effect at all.
in the AUv3 version these same settings are located in the hamburger menu on the top left. here you can also edit the global settings. finally, you can clear the current pattern here, and copy and paste patterns between different AUv3 instances.
tapping the letter displayed (e.g., A) on the top navigation bar reveals the snapshot menu. snapshots store the current state of a pattern and can be used to easily create and switch between different variations on a pattern. tap + to add a new snapshot to the pattern. long press on a snapshot cell to delete or duplicate the current snapshot.
at the bottom of the main view, you see that channel view, here you can add and remove channels. the maximum number of channels is 8. note that the AUv3 version has single-channel instances, since you can open as many instances as you want.
swipe up on the channel view to reveal the channel configuration panel. here you can enable/disable the selected channel and select its MIDI destination and output channel.
MIDI input mode
here you can also select the MIDI input note. cykle reacts to MIDI notes sent to its MIDI input by adjusting the pitches in the pattern to those of the played MIDI notes. can can choose between two input modes: 1) arp mode arpeggiates over the played notes, whereas chord mode plays the notes simultaneously, as a chord.
long press on a channel cell to reveal a tooltip where you can delete or duplicate channels.
saving and loading patterns
patterns can be loaded and saved via the main menu (accessible via the hamburger icon on the top left of the screen). cykle ships with a number of factory patterns to use as presets or to serve as inspiration.
concept, design & development: Corné Driesprong
beta testers: Rolf Seese, Jusep Torres Campalans, Trevor Llewellyn, Gad Baruch Hinkis and others.
app version history
- hotfix: bugfixes
- hotfix: updated manual
- adds new accidental (flat/sharp) sequence type
- adds new chord inversion sequence type
- improved MIDI timing accuracy
- adds MIDI clock output
- option to set MIDI output channel in AUv3
- various small bugfixes and stability improvements
- added snapshots
- added MIDI pitch input
- various bugfixes and improvements
- added offset sequence type (offsets the selected step in time)
- added global swing setting
- added transport (start/stop/pause) controls in standalone version
- display two channels on screen on iPad landscape mode
- added option to duplicate channel
- transpose sequence stays in key
- added option to copy and paste patterns between AUv3 instances
- added link to user manual in menu
- added option to reverse patterns
- show values on selected steps
- added new presets
- various bugfixes and improvements
- hotfix: fixes UI displaying incorrectly when launching app in landscape on iPad
patch update with a couple of bugfixes:
- fixes cykle AU transport being out of phase with host
- fixes cykle standalone transport being out of phase with Link timeline
- reset cykle standalone transport on stop and syncs to Link quantum
- fixes event on first step not firing when starting AU host transport
- fixes scale and key not being saved in AU preset
- fixes hanging MIDI notes on transport stop
- various other small bugfixes and improvements
- initial release