By Jim Arlow View In Digital Edition
What is a Ribbon Controller?
The last few years have seen a massive resurgence in the popularity and availability of voltage-controlled synthesizers. These synthesizers — whether modular, semi-modular, or stand-alone — are all characterized by voltage control of their various parameters. These voltages are known as control voltages; henceforth, abbreviated to CVs.
The ribbon controller we’ll construct in this article is shown in Figure 1 connected to my Behringer Crave analog synthesizer.
FIGURE 1. A 200 mm SoftPot ribbon controller set up for pitch use and connected to a Behringer Crave analog synthesizer. The red cable is the pitch CV and the yellow cable is the gate. The chassis is constructed using the Totem Maker system with a piece of acrylic providing a smooth platform for the SoftPot.
Ribbon controllers for voltage-controlled synthesizers can take many forms, but they all have similar requirements:
Ribbon controllers are fantastically fun, useful, and versatile devices. Obviously, you can use them to control the pitch of an oscillator as in Figure 1, but you can also use them to control any of the myriad voltage-controlled modulation opportunities provided by the typical voltage-controlled synth.
When you use a ribbon controller to control pitch — with the appropriate voicing — you can easily get Theremin or Ondes Martenot like continuous pitch effects. In fact, a ribbon controller generating pitch CV into a sine wave oscillator is pretty much functionally and sonically equivalent to the Electro-Theremin (invented by Paul Tanner and Bob Whitsell) that was used on the famous “Good Vibrations” track by the Beach Boys. See the Resources for links to information about these instruments.
When used for pitch control, ribbon controllers are very amenable to vibrato (fluctuations in frequency), which you achieve just by wiggling your finger back and forth. This makes them expressive instruments that are a great addition to the keyboard.
This article describes a very simple ribbon controller that uses a Spectra Symbol SoftPot ribbon potentiometer for the ribbon. A selection of standard SoftPots is shown in Figure 2.
FIGURE 2. A selection of Spectra Symbol SoftPots. These happen to have a female connector, but versions with Crimpflex solder tabs are more widely available.
If you can afford it, Spectra Symbol will manufacture SoftPots to order in almost any size and shape you can think of. The circuit works with any of the SoftPots, so you can easily create ribbon controllers in different lengths and geometries.
It’s easy to think of a SoftPot as just another potentiometer. However, they have some very significant differences that you need to carefully consider when designing with them:
The last point bears closer examination. The SoftPots readily available from SparkFun and Cool Components are terminated by three Crimpflex solder tabs. If you examine these carefully, you’ll see that they are pins stapled to the plastic substrate of the SoftPot so that they are in contact with the thin resistive films. These connections are fragile, and it’s easy to damage them mechanically or with heat. Because the SoftPot is plastic, again, it melts very easily (and expensively).
It’s possible to solder to the SoftPot Crimpflex solder tabs, but there is a risk of damaging the expensive component. I confess that I have never tried to solder them, but apparently, if you have nerves of steel and can arrange some sort of heatsink on each pin as you solder (e.g., grip the pin in snipe nose pliers), it’s possible to do it.
Rather than risk damaging the SoftPot, it’s best to use a socket. Crimpflex tabs fit securely in a solderless breadboard, but unfortunately, they’re too thin to work with standard DuPont female headers. I have found two types of connectors that work:
Whichever type of connector you choose, be sure to do all soldering to the connector before plugging in the SoftPot. Also make sure you arrange a strain relief for the connector.
The idea is very simple: All we need to do is set a start voltage and an end voltage across the SoftPot and take the CV off its wiper. However, as we’ll see, it gets a bit more complex in practice.
A naive approach is to use a couple of potentiometers to set the start and end voltages as shown in the circuit simulation in Figure 3.
FIGURE 3. Two potentiometers R1 and R2 allow us to set start voltages at their wipers. Simulation is in EasyEDA.
I used EasyEDA for this simulation (see Resources). In this circuit, the supply voltage, V1, is set to 5V; R1 is a 100K pot set to 20% of its range; and R2 is a 100K pot set to 80% of its range.
The voltage on the wiper of R1 is 20% of 5V = 1V, and the voltage on the wiper of R2 is 80% of 5V = 4V. The potentiometers act as simple voltage dividers as expected. So far, so good! We have two voltages that we can use for the start and end voltages for the SoftPot. Or, can we …
Consider the circuit simulation in Figure 4.
FIGURE 4. Addition of another potentiometer (a 10K SoftPot) connecting R1 and R2 wipers perturbs their wiper voltages. Simulation is in EasyEDA.
We have added a 10K SoftPot, R3, connecting the wipers of R1 and R2. This simple addition complicates things very considerably. R1 wiper is now connected via the 10K SoftPot to R2 wiper which is at a higher voltage. This pulls the R1 wiper voltage up a bit. Similarly, R2 wiper is connected via a 10K SoftPot to R1 wiper which is at a lower voltage; this pulls the R2 wiper voltage down a bit.
Neither voltage is proportional to the potentiometer setting, and much worse, the wiper voltages modify each other, so a change to R1 affects R2 wiper voltage and vice-versa. The situation gets even more complex if there’s a significant load on the SoftPot wiper because the extra current flow also has an effect.
R1, R2, and R3 in Figure 4 form a surprisingly complex resistor network. We know that for a given wiper setting, a potentiometer is equivalent to two resistors in series with the wiper voltage at their junction.
Given this, we can draw an equivalent resistor network for Figure 4, plus a load resistor for completeness as shown in Figure 5.
FIGURE 5. Three potentiometers make a surprisingly complex resistor network.
This is complex because there are no pairs of resistors in series and no pairs of resistors in parallel even though at first glance it looks as though there might be. See if you can convince yourself of this given the following definitions:
There is nowhere in the circuit where these two conditions are met.
To calculate total resistance between any pair of nodes in the network, we need to apply a ΔY (Delta Wye) transformation to simplify it so that we have only series and parallel resistors. I describe this in some detail in the sidebar if you’re interested.
This simple approach — using potentiometers to set the start and end voltages for the SoftPot — is completely inadequate. The result is that everything interacts with everything else, and it becomes very difficult to set the start and end voltages to the desired values.
A three-resistor cycle in a resistor network forms a triangle or delta shape. This delta shape may be substituted with an equivalent network comprising three resistors arranged in a Y shape. This is the Delta Wye (ΔY) transformation (see Resources), and it’s an essential tool for dealing with complex resistor networks.
To successfully apply ΔY, you must be very consistent in how you label the resistors and junctions in the circuit. Otherwise, it’s all too easy to get into a mess! I always like to think of resistor networks as graphs made of nodes and edges (if you don’t know Graph Theory, don’t worry, you don’t need to). The nodes are circuit junctions and the edges are resistors between junctions. There are no wires; only junctions and resistors. This gives you a key to naming all the parts of the problem in a consistent way:
1) Nodes (junctions) are labelled alphabetically A, B, C, etc., in any order.
2) Edges (resistors) are labelled RAB, RAC, etc., where RAB is the resistor between nodes A and B and so on. The nodes should be listed alphabetically in the resistor names, so RAB is okay, but RBA would be wrong.
3) The total resistance between any two nodes X, Y can be referred to as RXY.
4) If n resistors are in parallel between two nodes X and Y, then these resistors are named RXY1, RXY2 … RXYn.
5) The voltage across any two nodes X and Y is named VXY. Unlike resistors, voltages are bipolar, so VXY = -VYX. In terms of polarity, imagine placing a positive voltmeter probe on node X and the negative probe on node Y.
Because the network connections are encoded in the resistor names, it’s possible to completely reconstruct a resistor network directly from a list of all the resistors. Also, there are natural names for the total resistance and voltage across any two nodes. This is a big improvement on more arbitrary naming schemes in which the network topology is not encoded (for example, R1, R2, etc.), that I’m surprised it’s not standard practice.
Now that we can name resistor networks consistently, let’s have a look at the actual transformation. Figure A (left) shows a delta arrangement of resistors, and Figure A (right) shows an exactly equivalent Y arrangement of resistors.
FIGURE A. The ΔY transformation. The two resistor networks are exactly equivalent.
Notice that in the Y there’s a new node, E, which is the junction of all the resistors.
The equations relating the resistors in the delta, RAB, RAC, and RBC to the new resistor, RAE, RBE, and RCE in the Y are shown beneath the Y diagram. Of course, it’s possible to derive these equations, but it’s quite a lengthy process so most people just look them up as needed.
There’s a simple pattern in the equations that make them easy to remember. Consider the equation for RAE: It comprises the two resistors joined at node A in the original delta, RAB, and RAC, multiplied together, and then divided by the sum of all the resistors in the delta.
Let’s look at applying ΔY to the circuit back in Figure 4 to see if we can calculate the voltages shown. As I mentioned, this figure is the result of a simulation in EasyEDA (see Resources), and simulation is by far the easiest way to deal with resistor networks.
Nevertheless, I think it’s instructive to understand how the magic works.
Figure B shows the transformation process.
FIGURE B. Using ΔY to transform a resistor network so that it only has resistors in series and parallel.
Starting from the left, we have a simplified representation of the circuit in Figure 4 where, for completeness, we have added a load on the SoftPot. In the next circuit to the right, we expand each potentiometer by replacing it with two fixed resistors. We can do this because a potentiometer wiper divides the potentiometer resistance into two regions. You can see that the resultant network is quite complex. There are no resistors in series or parallel, and there are three deltas.
Moving to the third network in the figure, we carefully label all nodes and edges. We have now removed the load resistor for three reasons:
1) There is no load resistor in Figure 4, so we must omit it to do the calculation.
2) Synthesizer inputs can be (or can be arranged to be) quite high impedance, so “no load” can be a reasonable approximation.
3) For the purposes of this example, I want to keep it simple, and one delta is quite enough to deal with!
Applying ΔY to ABC gives us the final network AEBCD and the equations shown below it. The network AEBCD only comprises resistors in series and parallel, so we can calculate with it. The voltages in Figure 4 that we need to calculate are R1WIPER = VBD and R2WIPER = VCD. The third voltage in the figure, R3WIPER, is trivial because it’s just R1WIPER + (R2WIPER – R1WIPER)/2. Here are the actual resistor values:
RBC = 10000R (SoftPot)
RAB = 80000R, RBD = 20000R (R1 set to 20%)
RAC = 20000R, RCD = 80000R (R2 set to 80%)
It’s now possible to calculate the RED — the total resistance across nodes E and D. RBD and RBE are in series, RCD and RCE are in series, and (RBD + RBE) and (RCD + RCE) are in parallel. Therefore, using the standard equation for two resistors in parallel R = R1xR2/(R1+R2):
RED = (RBE + RBD) × (RCE + RCD)/((RBE + RBD) + (RCE + RCD)) = 20454R
We know that the voltage, VAD = 5V, so:
VED = VAD × RED/(RED + RAE) = 2.922V
Therefore, the voltages across the SoftPot, VB, and VC are:
VBD = VED × RBD/(RBD + RBE) = 2.143V = R1WIPER
VCD = VED × RCD/(RCD + RCE) = 2.857V = R2WIPER
VBD + (VCD - VBD) /2 = 2.5V = R3WIPER
This is in exact agreement with the voltages shown back in Figure 3 (bottom). I don’t think ΔY is something that you will need to use very often because, as I have already said, simulation is much easier. However, now you know how it’s done!
For a practical SoftPot ribbon controller, we need to eliminate the interactions between all the potentiometers so we can set the start and end voltages independently. This is easily done using an operational amplifier wired as a unity gain voltage follower (also known as a buffer). The buffer circuit is shown in Figure 6 and is one of the simplest and most useful circuits that you’ll ever come across.
FIGURE 6. An operational amplifier configured as a unity gain voltage follower.
In Figure 6, the input impedance of the non-inverting input (+) is theoretically infinite and, in practice, is always high enough that you typically don’t have to worry about it. This means you can connect the non-inverting input to a voltage source without perturbing that source in any way. Think of it as a way of measuring the voltage source without modifying it.
In the buffer, the op-amp output is connected directly to its inverting input, which sets its gain to unity. This means the output voltage simply follows the voltage on the non-inverting input.
Op-amp outputs are low impedance, and a buffer can drive a load with no effect on its input. This is precisely what we need to isolate the voltages at the potentiometer and SoftPot wipers. All we need to do is put a buffer on the wiper of each potentiometer.
The circuit for the SoftPot ribbon controller is shown in Figure 7.
FIGURE 7. Circuit for the SoftPot ribbon controller.
Starting from the left-hand side, there’s a 9V battery connector, then an LM78L05 5V regulator that regulates the input voltage and provides a stable supply voltage for the rest of the circuit.
U1 to U4 are the four amplifiers in a TLV2464 quad op-amp chip. This is a low power, single supply, rail-to-rail op-amp that’s designed as a buffer for analog-to-digital converters (ADCs). I had some of these on hand, but you can use almost any single supply rail-to-rail op-amp here. It’s not critical.
The R1 wiper voltage is buffered by U1 and provides the voltage for one side of the SoftPot. The R2 wiper voltage is buffered by U2 and provides the voltage for the other side. Because of the buffering, these voltages are independently variable between 0V and 5V and are not affected by each other or the SoftPot.
The SoftPot is connected across the outputs of U1 and U2, and its wiper voltage is buffered by U3. The output of U3 is the CV output of the SoftPot ribbon controller.
This should be taken to a Eurorack compatible 3.5 mm jack socket and then to your synth. When the SoftPot is not touched, it’s open circuit. So, we use R4 to pull the U3 input (and therefore the U3 output) to 0V when this happens.
This ensures the output of the circuit is always between 0V and 5V. The value of R4 is high enough that it doesn’t really affect the rest of the circuit.
As well as a CV, we have a requirement to generate a gate. This needs to be 5V when the SoftPot is touched and 0V when it’s not. This is the job of op-amp U4, which is configured as a voltage comparator.
The voltage comparator gate circuit is shown in Figure 8.
FIGURE 8. The gate circuit. The gate is triggered when the CV is greater than a few mV. The trigger level is set by potentiometer R5. If the gate triggers an ADSR envelope, note that there is a valid CV for only the ADS parts.
This is another incredibly useful circuit. When the voltage on the non-inverting (+) input of the op-amp is higher than the voltage on the inverting (-) input, the output voltage swings to the positive supply rail. When the voltage on the non-inverting input is lower than the voltage on the inverting input, the output swings to 0V.
Trimmer potentiometer R5 sets the inverting input of U4 to a few mV above 0V to ensure the gate is always 0V when the SoftPot is not touched. When it’s touched and it outputs more than a few mV, the gate goes high. I’ll explain how to set R5 correctly when I discuss setting up the SoftPot ribbon controller later.
The rest of the circuit is just an LED with current-limiting resistor R3 connected between the gate output and 0V. I used a 5V red LED with built-in internal resistor. The LED is essential because it gives visual feedback so you can set R5 to the right value to get the gate to trigger correctly and consistently.
The circuit for the SoftPot ribbon controller is shown in Figure 7 and Figure 9 shows an example of a solderless breadboard layout.
FIGURE 9. Example breadboard layout on a quarter size breadboard. WARNING: If you use 10-turn potentiometers, the wipers are not necessarily the middle pins as illustrated in this breadboard layout. Always check your potentiometers to identify the wipers before connecting them to the circuit!
The layout takes up exactly 1/4 of a full-size board, so it will fit on an Adafruit quarter size Perma-Proto board. This will give you a very neat result. All switches, potentiometers, LEDs, and jack sockets are panel mounted off-board as shown in Figure 1 and Figure 10.
FIGURE 10. A 200 mm SoftPot ribbon controller showing the 1/4 size Perma-Proto board and point-to-point wiring to the front panel. The chassis is constructed from Totem Maker parts with a 3 mm acrylic sheet glued to the right-hand side of the frame to provide a smooth surface to stick the SoftPot to. The SoftPot connector is a JST-SM three-way female header.
I used 10-turn pots for R1 and R2, but normal pots might be okay depending on how you’re going to use the ribbon controller.
If you’re going to use it for pitch control, then 10-turn pots are pretty much essential. The maximum CV output is 5V, which at 1V per octave is five octaves, which is equivalent to 10 turns of the pot. This gives us two turns per octave, which is very comfortable.
On the other hand, with a single-turn pot, we get one turn per five octaves which is fiddly, but not entirely unusable. For example, the Behringer System 100 182 analog sequencer uses single-turn pots over a five octave range, although it probably shouldn’t.
There’s not much to say about constructing the circuit because there are so few components. As always, I suggest you build it in stages:
Once the board is constructed, you need to add the off-board components. Figure 10 shows one of my 200 mm ribbon controllers opened to show the point-to-point wiring behind the front panel. There is quite a lot of this wiring because the multi-turn pots, LED, power switch, and sockets all live off-board.
Always use a good quality flexible multi-core wire for point-to-point wiring. The usual solid core hook-up wire is not suitable for this job and will make the process much more difficult. Also, solid core wire is not designed to be flexed and is prone to breakage.
There are a couple of things to be aware of when wiring up the front panel:
The key requirements for the mechanical construction of the SoftPot ribbon controller are:
The chassis in Figure 10 is constructed from the excellent Totem Maker system (see Resources). This is a flexible construction kit for makers that allows the construction of a range of chassis, robots, stands, etc., from a system of plastic ABS beams and plates. It’s ideal for this sort of project because you can easily play around with different designs to explore the ergonomics.
ABS beams and plates are simple to cut to size using the supplied Totem tools. I used an electric hand drill with a stepped drill bit to drill the holes in the front panel for the pots, switch, sockets, and LED.
ABS is a joy to work with, and this is probably the easiest chassis I have ever made. The chassis is robust and works well. Totem Maker is great fun to use.
The SoftPot needs to be stuck on a very flat, smooth surface but the Totem plates are not ideal for this because of the holes.
I glued a piece of 3 mm acrylic onto the frame sticking out of the right-hand side of the chassis to create a smooth, flat platform for the SoftPot to adhere to (see Figure 10).
The SoftPot has a self-adhesive backing and once it sticks to the acrylic plate, it’s not going anywhere! This means that you need to be careful to get the SoftPot correctly positioned the first time. I clamped a ruler to the acrylic plate to give me a reference edge to help me align it.
Note: If you’re interested in Totem, there’s a full review of another Totem product — the Totem Robotics Kit — in SERVO Magazine. This kit uses the Totem Maker system and other components to create an interesting range of seven remote control robots.
There is no left or right or up or down on this device! It all depends on how you orient the ribbon and how you set the potentiometers. However, for pitch use, CV should (according to the piano convention) increase from left to right.
I usually have the SoftPot Crimpflex connectors pointing to the left as in Figure 10, so that the chassis containing the pots and jacks is in easy reach of my left hand. This leaves my right hand free to operate the ribbon.
The left-hand pot controls the start voltage for the controller which is normally less than the end voltage and is controlled by the right-hand pot. However, as both pots have a full 0V to 5V range, you can set the voltages however you like and even make the device work backwards if you want.
The gate output must be set up as follows:
At this point, you might want to connect a DVM or oscilloscope to the SoftPot ribbon controller CV and gate outputs to see what happens when you touch the ribbon and adjust the left and right pots.
Note: Be sure to turn the SoftPot ribbon controller off when you’re not using it because it always draws about 0.1 mA current. This is because there is a resistance of about 50K between the 5V rail and ground.
That’s it! You’re ready to go. Connect the CV and/or gate to your synth and have fun!
To use the SoftPot ribbon controller to precisely control pitch, it’s a good idea to create a template keyboard and tune the SoftPot ribbon controller to that template. I use templates made of paper or card stock and place them above the ribbon. An example is shown back in Figure 1.
You need to decide two things to construct your template:
If you want to play individual pitches, each note should cover enough of the ribbon so that you can hit it reasonably accurately. I find that 10 mm is about the minimum note width for my fingers. The starting note determines the pattern of white and black notes along the ribbon.
Consider the example keyboard template back in Figure 1. This has 20 notes over a 200 mm ribbon, so each note is 10 mm wide. This keyboard starts on G, so the sequence of 20 notes is G, G#, A, A#, B, C, C#, D, D#, E, F, F#, G, G#, A, A#, B, C, C#, and D, where naturals are white rectangles and sharps are black rectangles.
To tune the SoftPot ribbon controller to your template:
For example, I often tune the keyboard in Figure 1 starting at G2 and finishing at D4. Because of the 1V per octave standard, all the other notes are in the right places between these two. If you’re lucky, your synth will have a built-in tuner, but if not, a cheap guitar tuner or tuner app for your phone will do the job.
Because the gate is generated directly from the CV using a comparator, the gate will always be 5V when the CV is a few mV above 0V and will fall to 0V when the CV falls to 0V (see Figure 8). This has implications for what kinds of articulation the SoftPot ribbon controller can support.
Let’s consider a synth keyboard to see how the SoftPot ribbon controller is different. Synth keyboards do at least two things:
The important point to note is that the keyboard always outputs a valid pitch CV even when no key is pressed. This means that if you connect the pitch CV of a keyboard to an oscillator, the oscillator always sounds the last note that was pressed.
If you require articulation so that a note starts when a key is pressed and ends when a key is released, then you must use the gate CV to open a filter, open a VCA (voltage-controlled amplifier), or trigger an envelope to modulate the oscillator output.
Some synths also have simple analog switches that can be controlled by a gate (e.g., the Behringer 173 module). A simple “East Coast” style patch is shown in Figure 11, where the gate is used to trigger an ADSR (attack, decay, sustain, release) envelope that controls a VCA that modulates the volume of the oscillator.
FIGURE 11. Simple “East Coast” style patch. The module symbols are from the Patch and Tweak website (see Resources).
Because the SoftPot ribbon controller CV falls to 0V when the gate is 0V, it behaves very differently to a keyboard. Consider the standard ADSR envelope shown back in Figure 8. The release part of the envelope is triggered by and extends beyond the falling edge of the gate.
This is fine for a keyboard because it holds the CV of the last key pressed. However, for the ribbon controller, the CV is 0V for the duration of the release stage.
So, the note would be correctly pitched for the ADS stages and then go to whatever pitch corresponds to 0V for the release stage. This generally isn’t what you want, so you need to set the release to be zero.
It would be nice to have an optional keyboard-like behavior for the ribbon controller that remembers the CV a few milliseconds before the ribbon is released. I did some experimentation with analog circuits to implement this.
I delayed the CV using a resistor/capacitor delay and used a sample and hold triggered by the negative-going edge of the gate to capture this delayed signal. However, I couldn’t get this to work reliably, so I haven’t included it here.
I suspect a digital approach might be more robust, or an approach using a bucket brigade delay line for a more controllable delay. If I manage to put together something that’s simple and reliable, I’ll write up an update.
Another feature I’d like to add to the SoftPot ribbon controller is touch sensitivity. Many analog synth keyboards output a CV that is proportional to how hard a key was pressed. This is most often used to control volume, but it can be used to control any synth parameter.
It’s quite easy to build an extended SoftPot ribbon controller that also outputs a CV that is proportional to the pressure applied to the ribbon as well as pitch CV and a gate. However, there’s no way to get pressure information from a SoftPot, so it’s necessary to add some extra pressure transducers to achieve this. This might well be a topic for a future article.
I hope you have enjoyed this article and take the time to build yourself a SoftPot ribbon controller. It’s an excellent addition to any analog synth! NV
SoftPots: www.spectrasymbol.com
The 200 mm and 500 mm SoftPots are a good size for keyboards, and the 50 mm SoftPot is best used for other types of CV. All these SoftPots are also available in the UK and worldwide from Cool Components (www.coolcomponents.co.uk).
JST-SM Connector: LED Strip Pigtail Connector (three-pin), SparkFun CAB-14575
SIL IC Socket: 20-way TE Connectivity Straight Through Hole 2.54 mm SIL Socket, RS Components 681-1320
Adafruit Perma-Proto Quarter-sized Breadboard PCB - 3 Pack; ID 589
14-pin DIL Socket
TLV2464 Quad Operational Amplifier
LM78L05 5V Voltage Regulator
5 mm Red LED (if you use other colors, you should recalculate the current-limiting resistor)
Resistors 1200K, 120R
Trimmer 100K
100K 10-turn Potentiometers, 2 off
Spectra Symbol SoftPot
https://www.spectrasymbol.com/product/softpot/
Totem Maker
https://totemmaker.net/shop/
ΔY and YΔ Transformations
https://www.allaboutcircuits.com/textbook/direct-current/chpt-10/delta-y-and-y-conversions/
Theremin
http://www.thereminworld.com
Ondes Martenot
https://en.wikipedia.org/wiki/Ondes_Martenot
Electro-Theremin
https://en.wikipedia.org/wiki/Electro-Theremin
Patch and Tweak
http://patchandtweak.com/symbols/
EasyEDA
https://easyeda.com