One volt per octave: how an exponential converter works
An exponential converter turns a control voltage into a current using a transistor, whose current doubles for every 17.9 mV at its base. A 100 kΩ and 1.82 kΩ divider scales each volt down to 17.9 mV, so every volt doubles the current: one octave per volt.
circuit ExpoFilter setting input: 6 V setting output: 20 V setting cv: 50% V2 gnd vee 15V V3 top gnd 2.5V V4 gnd bot 2.5V P1 top w bot 10k cv U5 w vcv vcv opamp Rcv vcv b 100k Rcg b gnd 1.82k Rref nref vee 150k Q1 nref b e 2N3906 simple U4 gnd nref e opamp rails 15V Q2 abc1 gnd e 2N3906 simple Q3 abc2 gnd e 2N3906 simple R1 in p1 100k R2 p1 gnd 220 A1 p1 m1 c1 abc1 vee CA3080 Rlp out m1 100k Rq bp m1 300k R4 m1 gnd 220 Ca c1 gnd 1n U3 c1 bp bp opamp R5 bp p2 100k R6 p2 gnd 220 A2 p2 gnd c2 abc2 vee CA3080 Cb c2 gnd 1n U6 c2 out out opampendPress Play to see the wave after the circuit, at out.
What you're hearing
Pitch is exponential, so its control has to be. Each octave doubles the frequency: 110 Hz, 220 Hz, 440 Hz, 880 Hz. Equal steps up the keyboard are equal ratios, not equal numbers of hertz. Synths agree on one volt per octave: add 1 V and the frequency doubles, whatever it was. But many circuits are linear in a current: the OTA filter's cutoff is 6.75 Hz per µA. To make a volt an octave, something has to turn each added volt into a doubling of the current. That's the exponential converter.
A transistor is exponential already. Its collector current is Ic = Is × e^(Vbe/Vt), where Vbe is the voltage from its base to its emitter and Vt is 25.9 mV at room temperature. Add Vt × ln 2 = 17.9 mV to Vbe and the current doubles; add 59.6 mV and it grows ten times. The catch is Is, a tiny current that differs from one transistor to the next and changes a lot with temperature. So one transistor on its own can't be trusted to give a particular current.
A reference transistor and an op-amp take Is out. Q1 is the reference. U4 holds Q1's collector at 0 V, so exactly 15 V / 150 kΩ = 100 µA must flow through it, and U4 moves the shared emitters, about 0.65 V above Q1's base, until it does. Q2 and Q3 share those emitters, with their bases at ground. When Q1's base is at 0 V too, all three have the same Vbe, so they carry the same current, whatever Is is. Only the difference between the bases counts: lift Q1's base by ΔV, and the emitters rise with it, so Q2 and Q3 get ΔV more and carry 100 µA × e^(ΔV/Vt). These are PNP transistors, which push current out of their collectors, because an OTA's bias pin takes current in.
A divider turns a volt into 17.9 mV. cv reaches Q1's base through 100 kΩ, with 1.82 kΩ to ground: 1.82 / 101.82 of each volt, 17.87 mV. That makes each volt about ×1.995, 4 to 6 cents short of an octave (measured on the filter's cutoff: ×1.993), because 1.82 kΩ is the nearest standard value to the 1.83 kΩ that would be exact. Q1's own base current, 0.55 µA, also flows through the divider and lifts its base by 1 mV. That makes every current 3.9% higher, but only tunes the filter up, by 66 cents everywhere, because Q1's current never changes. In the transistor ladder filter, the divider feeds the copying transistor instead. Its base current doubles with every octave, so the octaves shrink as they go up.
| cv | knob | current | cutoff |
|---|---|---|---|
| −2.5 V | 0% | 18.5 µA | 125 Hz |
| −2 V | 10% | 26.1 µA | 176 Hz |
| −1 V | 30% | 52.1 µA | 352 Hz |
| 0 V | 50% | 104 µA | 702 Hz |
| +1 V | 70% | 207 µA | 1.40 kHz |
| +2 V | 90% | 414 µA | 2.79 kHz |
| +2.5 V | 100% | 585 µA | 3.95 kHz |
Into the filter, every volt is an octave of cutoff. Q2 and Q3 feed the two OTAs' bias pins, so the filter's resonant peak moves from 125 Hz to 3.95 kHz across the knob, five octaves, a volt each. The divider has to be right. With 2 kΩ in place of 1.82 kΩ, a volt becomes 19.6 mV and multiplies the current by 2.13: each octave is about 110 cents too wide, and at +2 V the cutoff is about 220 cents sharp, 3.21 kHz instead of 2.79 kHz. That's why real converters usually have a trimmer for it, often marked scale or V/oct.
Temperature: the catch the model leaves out. Vt is proportional to absolute temperature, so it rises about 0.33% per degree at room temperature. SynthMaker's circuit has no temperature: it's always at 27 °C. A real one 10 °C warmer would have Vt at 26.7 mV, and each volt would give ×1.95: 42 cents flat per octave, more than two semitones over five octaves. Is changes far more with heat, but Q1 shares that change with Q2 and Q3 if they're a matched pair at the same temperature, so it cancels. To fix Vt, designs put a resistor whose value rises about 0.33% per degree in the divider's small leg, or keep the pair at a fixed warm temperature with a tiny heater. The transistors here are also the simple model, as in the ladder. With the full model, the copies' much higher collector voltage would make every current about 1.8 times bigger: that shifts the tuning but keeps the octaves within about 10 cents.
Try this
- Turn cv from 0% to 100%. The filter's peak climbs from 125 Hz to 3.95 kHz, evenly, an octave every fifth of the turn.
- Press "cv +1 V: an octave up", then "cv +2 V: two octaves up". The peak jumps an octave each time: 702 Hz, 1.40 kHz, 2.79 kHz.
- Press "Divider 2 kΩ, cv +2 V: too wide", then "cv +2 V: two octaves up". The same 2 V, but the peak lands more than two semitones higher.
- Open it in SynthMaker to change the parts. Wire an LFO into cv: a wire turns a knob up to half its travel either way, so at full depth it sweeps all five octaves. Or make Rcg 1.8k: 16.5 cents short per octave.
The parts list
circuit ExpoFilter setting input: 6 V setting output: 20 V setting cv: 50% V2 gnd vee 15V V3 top gnd 2.5V V4 gnd bot 2.5V P1 top w bot 10k cv U5 w vcv vcv opamp Rcv vcv b 100k Rcg b gnd 1.82k Rref nref vee 150k Q1 nref b e 2N3906 simple U4 gnd nref e opamp rails 15V Q2 abc1 gnd e 2N3906 simple Q3 abc2 gnd e 2N3906 simple R1 in p1 100k R2 p1 gnd 220 A1 p1 m1 c1 abc1 vee CA3080 Rlp out m1 100k Rq bp m1 300k R4 m1 gnd 220 Ca c1 gnd 1n U3 c1 bp bp opamp R5 bp p2 100k R6 p2 gnd 220 A2 p2 gnd c2 abc2 vee CA3080 Cb c2 gnd 1n U6 c2 out out opampendP1 is the cv knob, a pot from +2.5 V to −2.5 V, and U5 buffers it so the divider sees a clean voltage. Transistors are written collector, base, emitter. vee before CA3080 puts each OTA's V− at −15 V, so its bias pin sits low enough for the converter to push current into it.
How we checked it
Checked against ngspice, a standard circuit simulator: the whole circuit, converter and filter, at cv 0 V and +2 V, driven by a 500 Hz sine, is within 0.01% of ngspice across the audible band at the 2× rate it runs at. Measured in SynthMaker, the cutoff goes ×1.993 per volt, from 125 Hz at −2.5 V to 3.92 kHz at +2.5 V. The same idea in Circuits 7's ladder measured ×1.990 and ×1.983 per volt.
Build it step by step
- The lesson: A filter from ten transistors: the transistor ladder filter (opens in a new tab). In its step "One volt an octave", the cutoff resistor goes and this converter takes its place, and then an LFO and an envelope on cv move the cutoff.
- The manual: The transistor ladder filter.
Next and previous
- Previous: How a VCO works: a sawtooth core (planned)
- Next: How to turn a triangle into a sine (planned)
Further reading
- One volt per octave, and how synths pass control voltages: Wikipedia: CV/gate.
- The transistor's exponential law (the Ebers–Moll model): Wikipedia: Bipolar junction transistor.
- Vt, and why it follows temperature: Wikipedia: Thermal voltage.
- A transistor copying another's current: Wikipedia: Current mirror.
- Octaves and cents: Wikipedia: Octave and Wikipedia: Cent (music)).
- How SynthMaker simulates a circuit: M. Holters and U. Zölzer, "A Generalized Method for the Derivation of Non-Linear State-Space Models from Circuit Schematics", EUSIPCO 2015. PDF