Update 25082019 [New VCA/Mixer; New step sequencer; New MIDI sync features; various fixes and optimizations]

Hi all,

Time for another major update - In this one a new VCA module inspired by the Doepfer A-135 module, lots of improvements to the step sequencer and MIDI module, and a variety of bugfixes.


IMPORTANT - this update assumes you have flashed the latest SD card image to your microSD card first. If you haven’t done this yet, read the update below in detail for instructions and for the download link for the card image.

New VCA Module

The new quad-VCA module can be used as a VCA or mixer. Each VCA takes an audio input (A) and a control input ©, and the control signal is used to scale the audio signal. Both the audio and control inputs have attenuation parameters. There is also a gain parameter per VCA, and each VCA has an individual output. Besides that there is also a SUM output which is the sum of all 4 VCA outputs, which allows you to use the VCA as a mixer.

Here is how the VCA works internally - the Gain level is applied to the audio input, post-attenuation. The control signal is applied on top of the Gain level, post-attenuation. The sum of the gain level and applied control signal is clipped to the maximum signal amplitude.

Step Sequencer

We’ve done a massive update to the step sequencer module - we’ve added a playback window, with a start position (from). The pattern length parameter controls the length of the playback window and you can move the playback window anywhere in the 64-step pattern using the from parameter. You also can control the direction of playback using the new Dir input and there are special inputs to be used with the new MIDI clock/start/stop/continue signals of the MIDI module (see below). Besides all this you have a modulation input for controlling playback position in the playback window, and one to control the current pattern number.

We’ve also added an info-bar at the top of the sequence to show current tempo of the internal clock, tempo after applying division factor for the clock, current pattern number, playback window length and current step and step value.

We upgraded the step sequencer from 3 modulation inputs to 14 inputs, and here is a list of all the new inputs and what they do -

StLen - controls length of the gate signals output from the step sequencer
Tem - tempo of the internal clock
Clock - clock input, moves the playback head one step forward/backward
Begin - trigger input to set the playback head to the first step of the playback window
End - trigger input to set the playback head to the last step of the playback window
Pos - controls playback head position in the playback window
P - controls current pattern number
PLen - controls length of playback window
DivF - controls division factor applied to internal clock tempo
From - controls start of playback window in 64-step sequence
Dir - controls direction of playback. Positive signal advances sequence forward, negative advances the sequence backwards
Start - trigger input to enable the internal clock
Stop - trigger input to disable the internal clock
DivIn - clock division input, used with an internal clock from which you want to derive the tempo and possibly divide after deriving the tempo (for example a MIDI clock signal)

For some inputs there are corresponding parameters in the step sequencer. As always, parameter values and incoming modulation signals are summed together (i.e. modulation signal is applied on top of parameter value, so you get modulation around the parameter value).

The Start, Stop, Begin, End and DivIn inputs can be used to sync the sequencer to MIDI clock, start, stop and continue signals.

To sync the sequencer to a MIDI clock signal, you feed it into the DivIn input, and then set the DivF parameter to 1.5 (the reason for doing this, is that MIDI clock is 24 pulses per quarter note, while our sequencer has 16 steps per quarter note).

If you want to make sure the sequence starts in sync with your external DAW or sequencer, you can send the MIDI Start/Stop to the Start/Stop inputs of the sequencer. You will also want to send the Stop signal to the End input of the sequencer, such that when your external sequencer stops, it moves the playback head to the last step of the sequence on the SSP, ready to move onto the first step in the sequence on the first MIDI clock pulse. Optionally you might want to send the Continue signal to the Start input of the sequencer as well such that if you move the playback head in your DAW, and press start again, it will enable the clock in the SSP’s step sequencer.

The MIDI sync button has been removed from the Step Sequencer since you can control this now by feeding MIDI clock/start/stop/continue into the sequencer as you wish.

The step sequencer also outputs its internal clock, after division using the division factor (DivF). The DivF parameter has been changed to support fractional values.
The Restart toggle button has been renamed Begin to correspond to the above Begin input. The playback head has been changed so it’s more visible in the sequence.

Updates to the MIDI module for MIDI Clock Sync

The MIDI module has 4 new modulation outputs -
Clock - this is the MIDI clock signal which can be fed into the DivIn input of the step sequencer.
Start - start signal which can be used with start input of sequencer
Stop - stop signal which can be used with stop and end input of sequencer, etc
Continue - continue signal which can be used with start input of sequencer

Of course the signals can be used in any way you want and with any module you want, internally in the SSP or externally, for example to control other sequencers or modules in your rack.

Using the multichannel audio/cv streaming over USB, you can even send the signals to your DAW, and your DAW can function as the MIDI clock source (for example, connect a USB MIDI interface to the SSP’s host port, then connect this interface via MIDI cables to your computer’s MIDI interface, to receive the MIDI clock).

DSP Loop and MIDI Input processing Optimizations

Various under-the-hood optimizations for signal and MIDI processing were carried out.

Pitch Input fixes for all modules

There was a bug in the pitch inputs, where setting the coarse/fine frequency setting on modules would change the tuning of the modules, rather than just applying a pitch offset. Besides that I wanted to get rid of the requirement to set coarse/fine to zero on oscillators, when using the pitch inputs.

As a result, I changed the code such that it does no longer matter to what value you set coarse/fine in the oscillators, and the tuning will not change when you change the value. The coarse/fine parameters now simply apply a pitch offset and the pitch inputs continue to track correctly regardless of the coarse/fine value. It’s also no longer necessary to set coarse/fine to zero for any of the modules, to track correctly.

This means that on the patches in the preset collection, you have to change the coarse/fine setting on the modules to something sensible, like 440Hz, instead of setting these settings to zero.

If you want the pitches to match external oscillators, simply change the coarse/fine value until the oscillator has the same pitch as your external oscillator, for the same pitch signal coming in (or change your external oscillator’s frequency to match that of the modules in the SSP).

MIDI and MTQ modules received corresponding fixes so they work out of the box with the changes to the pitch inputs.

Source/Dest fix in Bus Module

There was a bug with Source/Destination parameters in the Bus module jumping all over the place. This has been fixed.


That’s it for this update. We hope you enjoy the hard work we put into this one and look forward to the next one.