LFO Rate Quantizer

Video Tutorial

Project Summary 

Do you want to wobble? Are you all about that bass? Do you want to add face melting to your resume? This mod is for you.  Using the Arduino and some code we can create an LFO rate quantizer to sync our keyboard notes to LFO rate settings at a specific tempo. 

Skills 
Arduino
Electronics
Materials 

 

1 x 10kΩ resistor 

1 x 2.2µF capacitor 

 

1 x Arduino Microcontroller

 

1 x Breadboard

Hardware 

For this mod we will be using an Arduino Uno micro controller.  The Arduino is based around the ATMEL series of micro processor IC's, and is a very versatile tool across multiple disciplines. Refer to Figure 1 for a closer look at the exact digital and analog I/O configuration for the Arduino. For more information regarding the Arduino please visit arduino.cc

Figure 1. Arduino UNO

 

First we need to create a low pass filter for our Arduino. Even though the Arduino features a function named analogWrite, it is not really able to send a true analog signal. Instead the Arduino sends a PWM (Pulse Width Modulation) signal, and emulates an analog voltage change by changing the duty cycle.

 

Figure 1. LFO Rate quantizer jumper configuration. 

 

 

The analogWrite function takes an input value from 0-255 and sends a 5V+ signal with a duty cycle corresponding to the input value. Although this technique may work for LED's and other components, we will need to filter our signal to achieve a true analog signal for our Werkstatt. A simple RC filter with one 10kΩ resistor and one 2.2μF capacitor will do the trick.  We will be sending our filtered signal from our Arduino into the Werkstatt's LFO IN.  This modification will require us to share ground between the Werkstatt and the Arduino as well as the RC filter.  Ground can be pulled from any screw terminal.  

 

For our keyboard control we will need to patch into an analog input on our Arduino. We can do this by running a jumper from the KB CV OUT into our Arduino, thereby letting us measure what keyboard button is being pressed.

 

Software 

The LFO rate quantizer works by cycling through two arrays at the same index.  LFO rate value will change in direct correlation to what control voltage (CV) note is being pressed.  See figure 2. for more information.

 

 

Figure 2. LFO Rate quantizer code in the Arduino IDE

 

The notes[] array holds any note you want to access on the Werkstatt keyboard and is referenced as follows: C1, Db , D , Eb , E, F, Gb , G, Ab , A , Bb , B, C2.

 

the note_values[] array holds all LFO rate value information for each corresponding CV input in the notes[] array and is referenced as follows:
w, h, q, qt, e, et, sx . These are defined as:
w = whole
h = half
q = quarter
qt = quarter triplet
e = eighth
et = eighth triplet
sx = sixteenth

 

Downloads 

Fritzing is an open source visual breadboarding software.

moog_werkstatt_lfo_rate_quantizer_fritzing.zip

 

 

The Arduino is a micro controller and programming environment for interactive systems. 

moog_werkstatt_arduino_library_v1.zip

Arpeggiator/Sequencer
Pitchbend
Pressure Sensitive Resistor