The CV Sequencer module


This module is a two-channel 16 step sequencer designed for general purpose control voltage sequencing. For more specialized sequencing tasks check out the Adroit Rhythm Sequencer, Melody Sequencer, Drum Sequencer, Progression, Groove, Triggers and Beats modules.

The module’s two channels work in sync so the same step is always active in both, but they are otherwise independent.

The lower channel also controls the gain of a handy built-in voltage controlled amplifier (VCA) which can save space in some patches.

Each sequencer channel has a large rectangular area with colored bars that act as input controls for each step. The currently activated step is highlighted. When the GLIDE button is engaged a white line is drawn indicating the slope of the voltage over time.

Glide in white

Individual steps can be altered with a left mouse click or vertical drag. You can also hold down the left mouse button and quickly “draw” shapes that change any number of steps in one go.

A right button click on any step other than the first changes the value of that step to the value of the previous step. Holding down the right mouse button and sweeping to the right will therefore set a whole bunch of steps to the same value.

There is also a simple CV recording facility so things like LFOs or manual input can be sampled in real-time.

As with all Adroit Synthesis sequencers timing is controlled via the voltage input to the V/Bar In socket. See V/Bar for more detail. By default the CV Sequencer runs for the duration of one bar but time can be manipulated using the Time Flow Changer module so it’s possible to run CV Sequencers at much slower or faster speeds. It’s also possible to drive the module at audio rates.

See Tutorial 1 for help getting started with the CV Sequencer.

You are not limited to just 16 steps as sequence lengths can be extended indefinitely using Time Splitting and the MERGE sockets to chain any number of CV Sequencers together.

The Time Split 2 module is used in the example below to chain two CV Sequencers together to form a 32 step sequencer that runs over a two bar period.

Two CV Sequencers chained together to form a 32 step sequencer

Each CV Sequencer channel has its own set of inputs, outputs and controls.

The CV OUT socket transmits the current control voltage value in the sequence. By default the range is 0 to 5 volts but this can be adjusted by the RANGE and OFFSET knobs.


The RANGE knob scales the voltage range of CV OUT anywhere between 0 and 10 V. Its default setting (at 12 o’clock) is the standard 5 V.

The OFFSET knob adds or subtracts a DC voltage to the output of between -5 V and +5 V. It’s default setting (at 12 o’clock) is zero.

So at their default settings the RANGE and OFFSET knobs configure the output to range between 0 and 5 V. But if RANGE is set to maximum and OFFSET to minimum then the output will range from -5 V to +5 V.

Precise values can be set using either knob’s Edit Value right-click menu option.

The Edit Value option

The REC IN socket accepts a 0 to 5 V signal to be recorded. See the section below on recording for more detail.

REC IN and MERGE inputs

The MERGE IN sockets allows multiple CV Sequencers to be easily chained together with each module passing its CV OUT signals along to the next module in the chain.

Merge connections

This works by CV Sequencer channels passing on the voltage at their MERGE input whenever their V/Bar input signal is zero volts. The exact order of the chaining is not critical but generally the wiring is much tidier if chains are laid out in horizontal groups. What is critical is that the final outputs are taken from the last CV Sequencer in the chain of wiring and that only one sequencer in the chain has a non-zero V/Bar signal at a time (which is automatically the case when using Time Splitters in simple configurations).

See Tutorial 2 for a practical example of chaining Adroit sequencers.

Function buttons

Top row of function buttons

RECORD arms the sequencer for recording. See the section on recording for further details.

RESET sets all steps to their midpoint default value.

REVERSE reverses the order in time of the steps.

SINE sets the steps to represent one full cycle of a sine wave. The shift buttons can be used to alter the phase of this wave.

< SHIFT shifts the pattern one step to the left (earlier in time), rotating the first step to the last.

SHIFT > shifts the pattern one step to the right (later in time), rotating the last step to the first.

GLIDE when engaged makes the output voltage glide smoothly from one step to another. A white line shows the slope. See the section on glide for some technical details about exactly what happens at boundaries.

Bottom row of function buttons

RANDOM sets the steps to random values.

NORMAL performs a normalization on the values. This stretches and shifts the values so that the pattern occupies the full vertical range.

Before Normalization
After Normalization

SMOOTH performs an averaging operation on the step values that acts like a low-pass filter ironing out sharp edges. It can be applied once or multiple times to achieve the desired amount of smoothing.

Smooth being applied to a random sequence repeatedly

The smooth function is really useful as you no longer have to try and draw smooth curves by hand. Just draw approximately what you want and then hit the SMOOTH button a few times. Used in combination with the GLIDE feature you can easily create lovely smooth modulation curves.

RISE sets the values in increasing order to create a ramp. Use REVERSE to transform a rise into a fall.

The COPY and PASTE buttons allow you to copy data from one CV Sequencer to another, either within the same module or between them. Click on COPY to copy the pattern to the clipboard. Click on PASTE to copy a pattern from the clipboard.

COLOR enables you to select a color for the sequencer bars. This is great for color coding different functions especially in a large patch. For instance you might choose to use green to represent filter cutoff. Or you can just pick colors to brighten things up (Adroit modules are purposely rather neutral looking so as to not grate on the eye during prolonged sessions).

GLIDE details

When a channel’s glide button is engaged instead of the values between steps instantly jumping from one value to another a smooth transition is made. The glide uses a linear interpolation method rather than slew limiting so the slope of the glide is always exact and doesn’t need adjusting when the tempo changes.

A white line is superimposed on the colored bars to indicate the gliding values.

If you look closely you will see that the white line always hits the step’s value right at the end of each step…

Glide detail

So for each step the value changes smoothly from the previous step’s value to the current step’s value over the duration of the step.

But there is no previous value for the first step. CV Sequencer can’t know what the previous value was can it? Well the answer is not so simple.

If the MERGE socket isn’t connected to anything then indeed we can’t possibly know the value of the step before the first step or even if there was one. In this case CV Sequencer makes an educated guess by extrapolating backwards from the second step to the first. To see how this works set the first step’s value to be about half way and then adjust the second step’s value. Then try adjusting the value of the first step.

So you can see that the slope of the glide of the first step depends on the values of the first and second steps. Although the resulting “guess” can’t be outside the range of the sequencer so in some circumstances the extrapolation is clipped.

OK, so what happens when something is plugged into the MERGE socket? In this case CV Sequencer can potentially look back in time and figure out what the previous step’s value was.

So when two CV Sequencers are chained together the second sequencer can interpolate from the value of the last step of the first sequencer. But this doesn’t happen by magic. The information required has to be received in real-time when the sequencers are running. So what you will sometimes see is the white line of the first step of a chained sequencer suddenly jump from one slope to another. This looks very odd but it’s actually correct behaviour and things settle down as soon as the mechanism catches up with what the actual value was.

I did consider dropping this feature as many people will mistakenly think it’s some kind of bug, but being able to interpolate across sequencer boundaries is so useful that I decided to keep it and write this rather long-winded explanation instead.

Note this also works when the CV OUT socket of a CV Sequencer channel is connected to its own MERGE socket. In this case the first step interpolates between the value of the last step and its own value. This is useful when a CV Sequencer is being used as a user-programmable LFO as it helps remove a potential glitch at the point the cycle repeats.

Feeding back CV OUT to MERGE socket

You can see this in the image above. It’s a deliberately artificial example as the first and last values are so different, when in practice you would probably want them closer together to create a smooth transition, but it shows the interpolation happening. If you try this out and alter the value of the last step while the sequencer is playing in a loop you will see the slope of the first step adjusting to the new value when the first step becomes active and it has had chance to learn what the previous step’s value actually was. Again you will see the white line jump.

This also works when feeding back the final CV OUT from a chain of sequencers to the first sequencer’s MERGE socket.

Regardless of whether GLIDE is engaged, another benefit of this “feeback” loop is that when a single CV Sequencer or a chain of them stops (with a zero V/Bar being fed to all of them) then the final output voltage rather than dropping to zero volts holds at the final value output before the sequence stops. This can be important if a sound is sustaining after the end of a sequence. If the voltage drops to zero it might affect say a filter and the sustained sound could suffer an unwanted change while it decays.


Each channel has a REC IN socket that you can connect to any CV source. One limitation is that the range is limited to 0 to 5 volts. Anything outside this range will be clipped.

When you hit the RECORD button on a channel the button will light up to indicate that recording has been armed but the actual recording only happens when the sequencer is running. Specifically it begins when step 1 is active and ends when step 16 is active.

RECORD button

One benefit of this scheme is that it’s possible to record sequences longer than 16 steps by chaining CV Sequencers together and arming all of them. Then as the sequence plays each sequencer will record during its allotted time slot.

To make this kind of setup a little more practical there is a REC ARM IN socket. A trigger voltage applied to this socket has the same result as manually hitting the RECORD button on both channels. So you can set up a large number of CV Sequencers chained over time (and perhaps also wired in parallel) with all the REC ARM IN socket wired to the REC OUT socket on Song Control. Then all connected CV Sequencers can be armed for recording with just a single click on Song Control’s REC button.


Tutorial link

The CV Sequencer module is introduced in LSSP 101 Tutorial 1.


The CV Sequencer module is part of LSSP XL and LSSP 101.