Skylights is a random collection of modules that I thought would be fun to have.
They are not profitable to work on, so they are maintained or developed on a whim.
What Note? is a CV tuner with a digital display. It shows the
semitone, octave, cents and absolute voltage of the signal which
enters its port.
ALAN is an SK version of Tom Whitwell’s Turing Machine. I wrote
it because the original Turing Machine is open hardware, and so the
virtual version should be open source too[fn::There is also a weird
rite of passage that one build their own Turing Machine when they
start building Eurorack components, as the Turing Machine is a common
first project despite its complexity.].
|Port||What it does|
|Lock Knob||Controls the probability that bits in the sequence are flipped.|
|Out||Outputs the last eight bits of the sequence, run through an 8-bit DAC.|
|Gate||Outputs high if the final bit is lit (represented by a bar through the LED.)|
|Write||Forces new bits to always be zero.|
|Pole||Sets whether the DAC emits a unipolar or bipolar signal.|
|Scale||Scales the outgoing signal from the DAC.|
ALAN sequences are also exported over the XPND interface. This allows one or more expanders to access the sequence and provide linked functionality.
Use of the lock knob is the primary way to control a Turing Machine sequencer. Rotating the knob places it in to a different “mode” which determines how much variation will be introduced to the existing sequence over time.
- Beta side
- sequence loops indefinitely.
- around one in eight bits is changed.
- approximately every other bit is flipped.
- Alpha side
- every bit is flipped.
There is a CV port beneath the lock kob. When a patch cable is connected to this, the knob is ignored and the control voltage takes its place. CV signals should be within [0V, 10V].
When the write switch is set, bits are always set to zero when they scroll past the right side of the display. This can be used to manually clean up a busy sequence or to clear the sequencer after enough steps pass.
When the bit on the far right of the display is set (the light is blue), gate will output a high signal. Otherwise gate will output a low signal.
The pole switch allows you to set the module output between unipolar [0V, 10V] or bipolar [-5V, 5V] modes.
The scale knob allows you to attenuate or boost the output signal. By default this is set to 1, which covers a single octave in unipolar mode.
Out will perform an analogue to digital encoding of the 8 visible bits
on the display, scale the signal through the
Scale knob and perform
a polarity shift depending on the
While a turing machine sequencer is not designed to hold on to state forever, ALAN does write its internal sequence to JSON. This means:
- A locked sequence is saved along with your
- You can right click and use
Open presetto keep a library of locked sequences.
Turing sequencers can drive an entire synthesizer cabinet; an external
clock feeds pulses in, while
Gate produce notes or
Out to a note quantizer and further to a VCO can
produce melodies over time. Using two turing sequencers, you can have
a separately generated melody and rhythm that are independently
When an oscillator is used as the clock, turing sequencers are driven at audio rates and behave similar to 8-bit wavetable synthesizers. Placing the lock knob will then control the amount of “grit” present in the sound, from 8-bit white noise to a more normal waveform.
Volts (Turing Expander)
|Port||What it does|
|In||Feeds signals to the mixer.|
|Knobs||Attenuverts the respective input signal. Clamped to the range [-1V, 1V].|
|Out||Stereo output of the mixer. Clamped to the range [-5V, 5V].|
Volts is an expander for the ALAN based on Tom Whitwell’s own “Volts” expansion module.
Volts reads the last eight bits of a sequence generated by ALAN. This means you need an ALAN (or ALAN XPND-compatible module) in conjunction with a Volts. Each bit corresponds to an LED on the faceplate.
Input signals are fed in through the audio ports, then attenuverted based on their corresponding knobs. Each knob also has two LEDs that display if that channel will be added to the left, right, or both output channels.
Pulses (Turing Expander)
When a clock signal is connected, outputs from this module only happen both at the correct steps and when the incoming clock signal is high. If you do not have a cable plugged in to this port the outputs operate as gates instead of pulses.
See XPND Ports.
Vactrol (Turing Expander)
The Vactrol mixer accepts four incoming signals, passes them through
four independent attenuvators, then outputs them to the left and/or
right output channels depending on the state of a turing machine
connected via the
See XPND Ports.
Single channel audio signals going in to the mixer.
The left and right output channels from the mixer.
Each knob controls an internal attenuvator; the knobs from top to bottom represent the same input as the input jacks from top to bottom.
The expansion port encodes the internal 16-bit sequence of an ALAN to
a [0V, 10V] control voltage.
XPND does not obey any scale or pole
settings. You can use this to drive other modules in your patch,
but its primary purpose is connecting to expanders.
Internally an unsigned 16-bit integer is converted to a double and divided against 65,535.0 and then normalized to 10V. Expansion modules perform these steps in reverse to regain access to individual rhythm bits.
Note that Volts only reads the five least significant bits of the sequence regardless of however many are live.
|Port||What it does|
|All||Triggers all channels to sample new noise.|
|Turbulence||Controls amount of noise added to each channel.|
|In||CV to have noise added.|
|Sail||Triggers a single channel to sample new noise.|
|BIP||Whether noise is bipolar.|
|Out||Input CV with attenuverted noise added.|
ADRIFT is based on the idea of using a sample and hold, connected to a noise source, as a means of adding minor amounts of flavor to notes. It simplifies the need for multiple Kinks, VCAs and mixers when all you want is just a little bit of drift to your attacks.
|Detuners||Sample & Holds|
|Continue to change V/Oct CVs throughout a note.||Lock the noise added during a note.|
|Usually allow a single input with multiple separately detuned outputs.||Usually a single input, single output.|
Sail is always handled prior to coloring and outputting signals
throughout each channel. This means you can connect the
Retrig from note inputs to
Sail and attacks will appropriately
receive detuned input.
ADRIFT does not sample new noise unless explicitly told to (via a high
pulse to either
All or a
Sail port.) Retriggering while a note is
probably fun but will be abrupt–you will need to bring your own slew
limiter if smoothness is desired.
The vactrolyzer has only
out ports, two pairs. Any signal
which is sent to the input is run through an analogue modelled vactrol
and the resulting signal is sent to the output.
These are used in low pass gates or certain unusual pieces of equipment (like the Turing Machine’s stereo mixer) to add a natural pluck and lag to on/off signals. It can be used as a kind of slew limiter for simpler control signals but is based on the response curve of the actual VTL5C3 chip (which is not configurable.)
A scaler/amplifier may be needed as a second stage to bring the output up to whatever range you need.
Vactrols are typically low voltage and their response curves are not linear. They do not accept negative control voltages and over-volting them causes distortions or failure of the device. In the simulation overvoltage simply returns an output of 1V and negative voltages are ignored (it will output 0V.)
The analogue modeling works as follows:
- Incoming voltages from Rack are adapted to the chip’s actual operating range.
- An “exponentially weighted moving average” is taken but it has two weight factors: increase and decrease. Each one was tuned with genetic programming to match the light on and light off values from the chip’s spec sheet. So an on signal “pulls” the LED towards brightness in the sensor chamber and an off signal allows it to fall.
- This weighted value is then run through a small formula which was curve fit against the data sheet, to simulate non-linear output.
Skylights itself is available under the BSD license.
Custom graphics were designed by github user @infamedavid (David Rodriguez), provided under CC-BY.
Skylights is based on the Rack plugin template, which was provided under CC-0.