Arpeggiator
This instrument implements an arpeggiator effect, such as is often found on hardware synthesizers. The notes generated by the arpeggiator are played by a simple synthesizer and echoed by a multi-mode delay.
Arpeggiator Section
The speed or rate of the arpeggio is defined using the 'Tempo' knob in BPM (beats per minute). Each arpeggio note is assumed to be a quaver/eighth note so a tempo of 120 BPM will result in 240 notes being played per minute, assuming beats are crotchets/quarter notes. There are also 8 'multiplier' presets which scale the tempo using simple ratios. There are six modes of movement: 'Up', 'Down', and 'Up and Down' are as would be expected. 'Random Direction' randomly moves up or down from the current pitch to the next pitch in the arpeggio. 'Random Pick' chooses any other note within the arpeggio each time a new note is required. 'Seq. Play' plays through the sequence of notes in the order in which they were pressed. 'Cycles' will add repeats of the entire arpeggio transposed sequentially by the number of semitones defined by 'Intvl'. 'Cycles' will have no effect if 'Intvl' is zero. If 'Intvl' is negative subsequent cycles of the arpeggio will be lower than the first. If 'Up+Down' is activated the transposition steps will go up and then back down (or vice versa if 'Intvl' is negative) rather than just in a single direction before repeating. This option is ignored in 'Random Dir.' mode which instead implements a kind of 'Drunken Walk'. 'Hold' imitates the action of a keyboard's sustain pedal. This function is also sometimes referred to as 'latch' in arpeggiators. 'Swing' warps the rhythm of each pair of arpeggiator notes. The rhythm is warped continuously from quaver:quaver at its minimum setting to dotted-quaver:semiquaver at its maximum. At its midway point the rhythm is triplet-crotchet:triplet quaver.
Synthesizer Section
The synthesizer is a single oscillator synthesizer with four waveform choices, an amplitude envelope, a filter envelope and an LFO which influences the filter cutoff frequency. The filter envelope can be defined as a static repeating function ('Kybd.Track' off) or one that describes a frequency function relative to the currently playing pitch ('Kybd.Track' on). The filter can be either resonant lowpass or bandpass. Increasing 'Port.' applies an increasing sliding portamento between pitch changes.
'Freq.Shift' frequency shifts the synthesizer tone by the number of cycles per second defined by the 'Freq.' knob. When 'Freq' is zero the effect is bypassed.
A ping-pong delay, the delay time of which is defined as the number of beats at the current tempo, can be introduced by raising the level control. When 'level' is zero the effect is bypassed.
Technical
Whenever a new note is played its note number is written into two different function tables: in the first table, note numbers are written sequentially in the order in which they were played. (NB. if a note is removed its note number is removed from this table and any notes following it in the table are shunted back one place so as to not leave any gaps.) This table is used by the 'Seq. Play' and 'Random Pick' arpeggiator modes. A second table is created (and updated any time a new note is added or removed) in which all notes currently being held are sorted into ascending order. This table is used by all other arpeggiator modes. A third table is used to store the on/off status of each note. A value of '1' in this table denotes 'note on' and '0' denotes 'note off'. For example if middle C (note number 60) is pressed, the 61st table item with index number 60 will be '1'. This is needed to check for active notes and prevent the same note appearing twice in a note row. This would otherwise be possible when 'hold' is active. This function could be deactivated if you wanted to define arpeggios with repeated notes.