MIDI Arp — a MIDI arpeggiator and arpeggiated synth

MIDI arp is a MIDI-controlled arpeggiator with a built-in synth (that I really like). You can use an external keyboard to control the arpeggio and apply it to the internal synth (or rip that synth out and build one of your own) or you can output the arpeggiator to an external synth or sound module.

The default channel for both MIDI in and out is channel 1; the I/O modules can be found on the second page of the patch, so you can change them as you wish; the ultimate gate–a multiplier–and pitch–a sample and hold–aggregators for the patch are also found here, if you wanted to build your own synth voice to use the arpeggiator.

The arpeggiator has a few quirks: notes will always be replicated in the order that they are played (such as a “played” or “manual” option found in some arpeggiators). So, if you want ascending notes, play the notes in as ascending. Relatively simple. There is probably a way to organize note order, but it would require a lot of comparators, and as much as I love comparators, the time (and CPU cost) don’t seem worth it.

Also, in latched mode, sometimes playing a chord won’t take. You need to play the notes one by one (this can be done pretty quickly, but the issue there is that the latched mode depends upon a single sample and hold, triggered by the trigger outputs of each MIDI note input; if it receives them too close together, it can’t distinguish them as separate triggers). This is not an issue when the arpeggiator is unlatched.

It also doesn’t have a pendulum action, or other means to change the note order (other than a randomization), although I may try to implement this in a standalone arpeggiator patch (without an included synth voice). The arpeggiator is built upon a sample and hold counter; this makes it very reliable compared to a clock-divided LFO, but it also makes building different motions a bit of a CPU hog.

Putting aside the quirks and shortcomings, MIDI Arp also features some probability options that aren’t available in every arpeggiator:

Notes order and note octave can be randomized separately.

Ratchets are available. You can determine the probability that a note will be ratcheted, and you can also determine whether that ratchet will be a fixed number or a random number of ratchets.

Steps in the arpeggio are also probabilistically determined. With lower step chance, a step will not produce a gate.

These options allow the arpeggiator to move between fixed and almost generative, with surprising variation.

The synth voice is a relatively simple, one oscillator affair, but it has a number of interesting features. A square wave oscillator, its pulse width can be set and modulated; this modulation is unclocked, to allow more variety across the arpeggio. The single envelope is logarithmically shaped, as it passes through a CV filter, which gives it a distinctive, swelling sound, and it can be applied to the filter or the amp.



Left footswitch — latches the arpeggiator; a module on the front page will light when this occurs

Front page:

Controls are broken down into two sides. On the left are controls for the synth voice (blue-ish modules). On the right are controls for the arpeggiator (purple-ish modules).

Let’s start with the arpeggiator:

Gate length — determines the length of the gate for each step; it also determines the length of ratchets

Range — this is a bipolar control; the arpeggiator ranges from +4 octaves to -4 octaves. Octaves are set approximately .2000 value apart (e.g. when this control is set to .3000, the range will be +1 octave, when it is set to -.5000, the range will be -2 octaves).

Random order — randomizes the order of the notes within the arpeggio

Random octave — randomizes the octave on a note-by-note basis within the range set by the Range control (note: this is somewhat probabilistic; while a Range value of .3000 will produce some notes an octave higher, they will favor no octave shift; a Range value of .4000 would have a more equal distribution across the two octaves).

Ratchets — this control sets the number of ratchets on a given step; when ratchet randomization is selected, it determines the maximum number of ratchets within the randomization

Random ratchets — this pushbutton will turn the ratch randomization on

Random ratchet chance — this controls how likely a step is to be ratcheted; 0 = no ratchets, 1 = ratchets on every step

Step chance — determines the likelihood of a step to produce a gate; 0 = no steps are played, 1 = all steps are played

Tap tempo — the patch accepts either tap tempo or MIDI clock; MIDI clock will override tap tempo

Latched — indicates whether the arpeggiator is latched or not

Clock divider — allows the tap tempo or MIDI clock to be divided

Moving on to the synth controls:

Many of these are standard, so I won’t spend a lot of time on them.

Pulse width — the pulse width of the square wave oscillator; 0 = square wave

PWM rate — controls the rate of the pulse width modulation

PWM depth — controls the depth of the pulse width modulation; the pulse width setting will offset the center of this modulation

Glide — portamento between notes; a little goes a long ways when used with an arpeggiator

Attack decay sustain release — the controls for the stages of the envelope

Filter frequency — base cutoff frequency of the low-pass filter

Filter resonance — resonance of the cutoff

Filter envelope depth — bipolar; envelope can be applied positively or negative

Filter keytrack — bipolar; the filter can keytrack (follow the oscillator pitch) with a range of -200% to +200%; a value of .5 = 100% keytracking

Amp envelope — applies the envelope to the synth’s VCA; when disabled, gates from the arpeggiator will be applied to the VCA

Pan spread — each gate (and ratchet) will randomly pan the synth voice; this determines how extreme the panning is, from no panning (0) to panning across the entire stereo field (1)

Reverb decay — decay of the reverb lite

Reverb mix — mix of the reverb lite


V 1.1

In a failed attempt to add swing to the arpeggiator (still a goal, but I need to give it more thought), I noticed that the arpeggiator was adding some notes to the arpeggios.

I believe this is fixed, but let me know if you run across any issues with note count.

  • Platform:
  • Category: Sequencer Synthesizer Utility
  • Revision: 1.1 -- Minor fix
  • License: Creative Commons Attribution Share Alike 4.0
  • Views: 469
  • Modified: 3 months ago
Chat about this patch on Discord! Download (128)
Appreciate 1

Leave a Reply