Friday, November 16, 2018

Synth Gates, Interrupts, and Arduinos; a million and one uses

Yes once again: more Arduino Control Voltage Fu.

Continuing from last time...how can we use an Arduino to get rid of mountains of analog boards?  When generating CV to do useful things?  Most of this post involves interrupts

Before I begin: ....the coding examples here were tested on an ATTINY85. All the interrupt information you see is available for most if not all Arduinos, but the code will be different (because, for instance, a Nano has more than 8 pins).

Goes like this: When I started using Arduinos for Synth DIY, it quickly became clear I needed to figure out a good way to accept a gate input signal and control my code with it. We synth guys use 0-5V gates all over right?

So: what's a really good way to do this?

There are lots of ways to do this, but from reading it seemed best to use interrupts....which morphed into using change pin interrupts--then using a boolean variable to trap if the gate signal was going from 0 to 5V or from 5V to 0.

Turns out it's not hard to stick all of this into your Arduino sketch, once you know the secret.

First declare this:

void setup()
{

    // (pin declarations, variables, whatever blah blah....
    //but then this...

    GIMSK = 0b00100000;    // turn on pin change interrupts
    PCMSK = 0b00010000;    // turn on interrupt on pin PB4
/* you can enable more than one pin for this.....
 a "1" in the above PCMSK line means use pins as interrupts, following this logic: 0bxx54321 where
the "54321" business are physical pins on an ATTINY. 
*/

    sei();                 // enables interrupts


Wait a minute, what are "pin change interrupts"? Information here but: Easy! 

That means, you're using external hardware interrupts--change the voltage present at this pin, relative to ground, and you can immediately change what your Arduino is doing.

Added bonus: with "pin change interrupts" you can pick the pins you want to use for interrupts. Including more than one or two or three pins on the same chip at the same time. And, depending on the Arduino you use, the pins allow you create up to 3 completely independent interrupts, each of which can do something different! Handy!

BTW, an incredibly good explanation of the the Arduino interrupt universe is here. Check it out.

(The "change pin" moniker threw me for a bit. Shouldn't it be a "pickyerown" interrupt? Whatever.)

OK after your GIMSK PCMSK  etc. you have declare an "interrupt vector"--this tells the ATTINY what to do when the interrupt is thrown.

Here I am reading whatever voltage is present at PB4 pin and assigning it to "gatemaker", a boolean variable I do declare.


void setup()

volatile boolean gatemaker = LOW;

// blah blah, other stuff here....

ISR(PCINT0_vect)
{

     gatemaker = digitalRead(PB4);
}


Here's what makes this different than the usual "if/then" statement in a loop(). When the voltage seen at PB4 changes from high to low, or low to high, the volatile variable's value gets pulled in from memory (it's "volatile") into the CPU; the CPU doesn't use whatever value it has lying around. Then the Arduino jumps to and reruns the statements that use the volatile variable, literally interrupting your program to do something you need done in a hurry.

When it's done with that, it goes back to whatever it was doing before.

So your code can thus act on incoming data--a gate rising edge, a new midi note on, etc., fast--very, very fast. Super useful for very close to real time CV gate control of a synthesizer which is what I was trying to do when I got into this whole thing.

You do that like this and this like that:

void loop()

if (gatemaker == LOW) 

 // I see a falling edge, 5V to 0V, on my gate signal.  When I see that:

///do something; charge a cap, turn on an LED, change pitch, //whatever.....
}

//but if I see 0V to 5V......

if (gatemaker == HIGH)
//do something even still more different; discharge a cap, turn off //an LED, don't change pitch, whatever.....
}

Wow! That's really easy! A million and one uses: ARs, gate to trigger, trigger delays, on and on. Trap when your gate signal is going up or down, then do something fun. NNNNNNext!

Again this is useful for ATTINY or whatever other Arduino widget suits you. This took me a few evenings to figure out, mostly because there are so many different documented ways to get into the interrupt paradigm, but this whole change pin interrupt/boolean method seems to work every time and is simple, simple, SIMPLE!!!

Final thing to do is protect your ATTINY interrupt pins from an obnoxious gate signals from (say) your 15V power supply (oops!  Patched it wrong....blew up that ATTINY....magic smoke....yeh baby yeh!)

For that I used this circuit fragment plugged into the PB4 pin used above; as always, many ways to do this, but this simple NPN circuit fragment worked for me. Transistor is a 2N3904....this inverts the gate, so you have to code accordingly.




OK for now that's it. I created an ATTINY based module I call "ConBrio" allowing a gate to speed up up up or down down down. It uses this whole pin Change interrupt thing extensively. It works on the bench but I am trying to make it "more musical" whatever the hell that means. I figure I will finish the code and hardware for that and post it soon.

Until then, don't breathe the TINY and have fun!!!




Thursday, November 15, 2018

ATTINY arduino for AUDIODIY--Pros and Cons--Debugging these Tiny Spuds!

From last time: I am waiting for C1406HA voltage controlled attenuator boards to arrive from China to get reverselandfill's noiseboard going.

Any day now....

 In the meantime I thought I'd keep working on my Arduino skills, this time working with an ATTINY85.

Part one of my ATTINY exploration is here.....



Cutting the BS and getting to it--pros and cons w/ working with an ATTINY vs. all the other Arduinos out there.  Why use it at all?

Pros:

  • ATTINYs are super cheap. I bought 4 of them for $12 on eBay.  If you can work with SMT, it's even cheaper.
  • They are super small. Tiny? Sure. In Eurorack land where everything needs to get tiny, that's good.
  • You can program a few of them to do the same thing and then drop them into your projects like you just fab'd up custom IC's. Gate to trig? Gate delay? One Chip LFO?  Yep.  
  • Most all the important commands you can get out of a Nano or whatever are supported here.  Pin change interrupts for instance?  Yep. I'll get into that in the next post, which I'll upload tomorrow.
  • You can get an all in one programmer for about $16 USD complete with handy built in blinking LED.  But watch out for this gotcha....this one drove my crazy....on Linux or mac programming code into an ATTINY works OK. Then suddenly quits. Like you unplugged the programming board...but you didn't. Why? Turns out to be a USB permissions issue. To fix follow the instructions in this link or just do this : open your terminal and run lsusb from terminal. Then chmod the crap out of the usb ports with this: sudo chmod 666 /dev/bus/usb/0xx/0yy where xx and yy are the device ID's used for the ATTINY programmer.  You can make that change permanent by following the advise here.  Otherwise the "write to chip" commands in Arduino IDE become caloric; i.e., they donut work.


The AVRTINY programmer.  $16USD!!!


And now....Cons:

Biggest issue, con number one! There is no easy way to debug these damn ATTINY rascals.

What does this mean?

On the Nano, you use serial print commands for this, to see if a variable is working the way you want, for example:


void setup()
{
  Serial.begin(9600);
}
x = 100; // or whatever other bozo value you are trying to determine

Serial.println(x);
delay(2000);


If you expect to see a 100 here and get 0 in your serial monitor, that tells you you screwed up your code!

On the ATTINY, this debugging methodology is not so easy. That's because serial commands are not supported by default at all!

The workaround: There are lots of fixes for this. After digging I found a nifty add-in library called TinyDebugSerial. I liked it because it was easy to implement. And if you read this blog at all you know I like easy.

You can get the add-in here.

Drag the files into your Arduino library folder, then try this as code:


 #include <TinyDebugSerial.h>

void setup() {           
mySerial.begin(9600);
TinyDebugSerial mySerial = TinyDebugSerial();
}

void loop() {
mySerial.println("hello world!");
}

OK, serial print data, streaming at 9600 baud, now shoots out ATTINY85's "pin PB4" (that's pin 2 for those of us in the DIP8 real world). In this case "hello world" over and over.

But....Where to hook up the TX out? So you can read it, Elmo??

I ran it to a RX pin of an Ardino UNO via a 220 ohm resistor--hooked the UNO up to a 2nd USB port in my Linux laptop--fired up a new IDE window for the UNO--set the USB port in the IDE for the uno--and (finally) read the serial strings out of there. Worked!

Using an UNO to get tinydebugserial output from an ATTINY.  Wire it like this....

Con #2:
there just aren't that many pins to work with. This is an 8 pin chip and 2 of them are for power.  1 more is for reset, and it can do other things, but not easily. Not much more to say there. Sorry.

Con #3: the pinout designations are odd for ATTINY.  I found for analog in I had to use something like "A0", "A1" etc. For digital I had to use "3". I had to check the pinout diagrams online more than a few times, and for me, screw around a bit....

For instance, analog Pin A2 is tied to physical pin 3 and A3 is tied to physical pin 2.  But why, Scottie, why?


Con #4: ATTINYS are slow, slow, slow, SLLLOWWW and then they are slower than snot!

Overall--I almost gave up a few times--really, for audio DIY why use ATTINY at all and not just a Nano? Or Uno? Or Due? Or  Dookay?

Not sure I can answer that....but then I came back to it...I bought the damn tiny things--I just have to figure it out.

After a few evenings I did get it working, and with debugging set up could start to do useful things. So yes there are probably more cons than pros. I programmed it anyway. Guess it's just the way I am.
Doesn't mean you have to be that same way.

Soon to come--using interrupts to track CV gates with these little turds.  Until then.....well you  know.

Friday, November 9, 2018

Reverselandfill PCB Swaps and the Crazy C1406HA Attenuator Chip. Thoughts about the old days.

History Lesson....

How it was back in the 80's: I'd get in my Station Wagon (or later, in a van, or a plane), get to the seedy club, and if the vibe was good, swap conversation, drinks, and, well, other things, with my new found friends.

If said friend was a fan, tour caterer, flight attendant, promoter's daughter, and/or exotic dancer and liked wire-thin synth and backup vocal dudes with Brian May hair, (a few did, most of them liked the drummer better) try even harder to swap....well, you can guess right?

This was the 80's and I'm oversharing....so let's fast forward 30 years.

My Brian May hair and Ford Country Squire are long gone. I don't drive to clubs a lot nowadays; instead I get up early and control/alt/delete a PC.....mess with Eagle and whatever audio PCB I am trying to finish, look at audio websites and peruse PDF data sheets extolling obsolete OTA IC's.

Feeling social? Not often, but if so, perhaps I will email like minded audio folks, many of whom live halfway around the world. And if the vibe is good, we swap....

(.....wait for it?)

.....printed circuit boards!!!

(Welcome to my World.)

One such swap occurred recently with Electro-Music mensch Martijn Verhallen from reverselandfill.

Martijn and his site are chock full of creative ideas and music.  To name a few: he does crazy things with video synthesis; mounts synthesizer PCBs on slabs of wood, and produces noise/dark electronic/soundscape  music. 

I sent Martijn a couple of Lunetta VCO variation PCB's as well as an ASMVCO.  In trade he airmailed his "Aconitum Noise Mixer" PCB along with a CMOS based noise PCB with on-board patching called "Noise! Oscillator".

I have slim to no white/pink noise capabilities in my homemade synth so let's build the Aconitum first.

ReverseLandfill's Aconitum Noise PCB

Aconitum combines a few analog staples--the "get noise out of 2 pins of a gained up transistor" and the "two inverting op amps in series mixer"--along with active filtering--a bunch of pots and jacks--into a small board.

I could build this box stock, which would be fun, but it's even more fun to mod it.

How about adding CV control of the noise levels? Why not?

There are a hundred ways to do that, an easy way: use VCA's. I have already messed around with that--the Farm VCA and Irwin VCA for instance. But, as per my initial push into DIY, I want to see if I can do something new (for me anyway). Let's try using a chip that you may have never heard of. I know I hadn't!

It's called the C1406HA:




 As far as I can tell, he audio consumer mass market was the C1406HA's target. Fair bet whoever designed this IC never thought it'd end up in a synth.

I say SIP it!  SIP it good!

So it's a voltage controlled stereo attenuator.  OK, the 1406 might useful for what we do, but buying these IC's was a shot in the dark--I was putting together an order for Goldmine (switches and caps) and saw this, on a lark I bought ten of them--they cost pennies--figuring, if they didn't work, toss em.



I breadboarded my first C1406HA and--they are super simple and work great! The CV to audio curve, to my ears, is very musical; the distortion is there but not too bad, certainly acceptable for mixing noise and grunge.

Proof of Concept for 1406 was 5 parts--the chip and 4 caps!

If there is any issue at all with the C1406HAit's that the channel separation is butt--the spec sheet says 60db but really I doubt that, to me it sounds a lot worse, but for attenuating noise signals, who cares? Maybe the crappy channel sep makes the thing sound better?

I spent an evening creating an Eagle "experimenters board", which I will get fab'd soon. It will (if it works?) accommodate two 1406 chips, which allow control of 4 audio signals.


The C1406HA Experimenters Board.

In  case you're curious: where can you buy this chip? As far as I can tell was been discontinued during the Eisenhower administration (a bit after, but close?)  Goldmine no longer has them.  Damn!  I found more in China at affordable prices--UTSOURCE in China, had them for 50 cents each USD and $4 for postage.  I have no idea if they will ever show up, much less work. But DIY is about gambling--both money and time? 

OK more in a bit.  Until then, good hunting!

Monday, November 5, 2018

SMALL B.O.W.A.L: Creating DC Bias Offsets with a Control Voltage

Last time I was extolling the virtues of creating DC offsets for control voltage and audio signals.  This can add color to LFO signals, wave shapers, modulators, and other devices.

To review, what does this mean?

It means you start with an AC signal like this:

Figure 1: standard Sine Wave
And you offset it a few volts above ground so it looks like this:


Figure 2: sine wave with DC bias offset

The B.O.W.A.L. circuit from last time let you tweak the bias with a potentiometer.

But! Wouldn't it be nice to be able to do the same with a control voltage?

Turns out it's not hard.  We start with the same PCB:



Then add some wiring instructions which you can find here. And yes I realize that the PDF is hard to follow (crappy handwriting).  Hopefully this next diagram helps--it summarizes the 4 main wiring mods you need to add to hook the op amp stages together to make this work.


Wire all that up and you have 2 fully independent, buffered bias offset circuits; feed in CV and out comes the input sound or another CV, offset by the amount of CV at the "bias" input.  Easy!

Some bench photos. Means not much to anyone but me, but it makes me remember the zen times at the bench putting this module together. That's the good thing about being a blogger--as long as you're not overly offensive, you can post any damn thing you want.

Like Big B.O.W.A.L., Small B.O.W.A.L. worked the first time without kludges, tweaks, and changes. Two in a row.  I am trying to stay humble.

The wires here turn four channel BOWAL into two channel Small Bowal

Skiff?  We don't need no stinking skiff!




B.O.W.A.L. brothers....


Bench B.O.W.A.L.


Still with me?

Interesting synthesizer patches may be imminent when using CV to offset an audio or control voltage....a lot of times you want to get rid of DC offsets, but not always. Hear what Small B.O.W.A.L. sounds like here.  As usual, no effects, tweaks, tricks etc. for this demo.  This is all bias offsets using the circuit in this post.

details about the demo:

00:02 CLASSIC MOD F/X
  • Slow LFO goes to Small bowal input.
  • Small bowal CV input source (for bias offset) is from an AR
  • AR is set to immediate attack and moderate release.
  • Post-gate LFO climbs down from an offset of about 3V above ground to zero volts. 
  • Sent this offset LFO CV signal to a mod input of a VCO.  VCO set to ramp wave  
  • So you hear the warbly mod pitch descending as the CV offset goes from around 3V to 0V.
  • This is a popular mod trick for modular synthesis. A bit tired perhaps.

00:20 Distortion unit becomes waveshaper
  •  Sine wave to small bowel audio input.
  • DC offset of this sine wave with slow LFO, maybe 1V P/P
  • Feed this signal into input (1) of the SON OF ZENER
  • The other channel (2) of son of Zener is a triangle wave.
  • You end up with something that sounds a lot like a Serge Waveshaper meets VCA.  I have no idea why.

00:55:  Goose a Korg MS20 style ring modulator 
  • 1K Ramp wave > Small Bowal input.
  • Small bowal CV input is modulated by ADSR.  
  • So ramp wave is starting with a  DC offset and falling back to 0V
  • That's fed into X input of the ring-mod.
  • Y input of Korg Rmod is ramp wave, unadulterated
  • You end up with the ringmod effect that is not audible, then suddenly very audible.

1:21: Odd things happen when you DC offset audio into a balanced modulator.
  • Not everything will sound good here, you have to mess around.
  • pulse wave (audio) offset by SB. 
  • SB bias offset modulated by slow LFO. 
  • SB audio output to Y of 3080 or equivalent balanced mod. 
  • X in to B-M is another pulse wave. 
  • Balanced mod out to VCF > VCA
  • You can get all sorts of very odd sounds from this.  If you have a balanced modulator, without AC coupled inputs, try messing with putting DC audio offsets to feed X & Y inputs.

OK next up I have some guest circuits from reverselandfill.org.  Stay tuned!

Monday, October 29, 2018

Bias Offset With Adjustable Level, AKA "B.O.W.A.L."--EZ Op Amp Circuit that worked the first time!

Almost nothing makes me happier then laying out a PCB, getting it fab'd, stuffing it with parts, mounting it to a metal panel, racking it, and having it (wait?  wait?) work the first time !!!

NO MISTAKES!! No kludges, no cutting traces, no gnashing of teeth. Yeah!!!

What is up: While I had the Zener Distortion Units on the bench I found this: if I offset the audio signal(s) feeding it by a few hundred millivolts or more the zener unit's sound at output changed quite a bit.

I also found that in my growing DIY modular synthesizer I had very few ways, if any, to create this said offset.

Let's get building! The usual: researched, opened up Eagle, designed, checked, sent it off to JLCPCB for quick fab.....

While we're waiting for the PCBs to come back to the US now what?

As Frank Zappa used to say "let's examine this phenomena!"

Q: What do I mean by offset?  

Say you have a sine wave, and it's centered on 0V DC (ground).

It will look like this on a scope, or, if you hunt around Google and copy illustrations to your blog:



The bias offset will "elevate" the sine wave to something more like this; and it can go either way; apply a negative DC offset and the sine wave is dragged below zero, but here it is above:


At first glance, this doesn't seem like a big deal, but in terms of modular synth, it can be useful.  Put your waveforms through the bias offset device, change its bias level relative to ground, and put it through a ring modular.  Ha! Sounds different!

Q: Still not convinced, but anyway, how to design this? 

There are lots of ways; but like most every other analog designer out there, I like using op amps.

On my website I already had a non-inverting design for this, but it requires small value offset trimmers or pots, say 1K or 5K, which might draw too much current if you add say 8-12 of them to a design.  I don't use battery power but if I did you probably don't want to do this!


I don't spend a ton of time worrying about power efficiency but still, it's good to do things right. OK, lets put a bigger value trimmer in for the 5K above....let's make this trimmer 100K to keep our power supply completely happy, and the resistors in the op amp's negative feedback network are also 100K.  But wait, now, the gain doesn't come out right--the offset resistors screw up the output:

Audio goes to +; this circuit draws relatively little current--but-your gain will not be what you expect!

What I figure: an inverting solution ends up working better when the power supply draw is critical. .

Enter B.O.W.A.L....a simple quad inverting then re-inverting op amp PCB with 2x quad op amps.

You can see details about PCB layout on my website but basically the circuit board looks like this:


While a single gain stage (repeated 4x) looks like this:



For my own B.O.W.A.L. I added a brain dead AC coupler to undo whatever the offset circuit does, creating a "star belly off machine", entirely wired to the front panel.  The Offset pot above can be a trimmer for fixed applications, or a pot on the panel so you can adjust the bias on the fly.

Aside: a really good guide for setting op amp bias offsets can be found here: MIT's "how to bias an op amp".  (Note that my undergrad application to MIT in 1980 got the big goose egg. I wonder why?)

So anyway this PCB got back from China and I populated it, selected an unused a front panel, got some pots from Small Bear going etc:



Designed up a front panel for Lazertran using Adobe Illustrator:




As I said! worked first time. Yeh!



BEWARE: if you amplify and/or offset your incoming signal too much, your op amp will squash the dickens off some or all of your incoming signal, turning it into an ugly square wave. To my ears, this isn't good sounding distortion, this is really bad sounding distortion. At best an op amp can gain something up to slightly above its V++ and V-- rails, and usually less. So keep your amount of BOWAL output flushable....

And: if you are really concerned about input impedance you may want to put yet another buffer in front of your B.O.W.A.L. or change BOWALs R values.  The incoming sound will travel through all the feedback resistors from input to output, which might yield a different input impedance than you want.

Update!  The +/- 15V DC bias settings weren't working for me sound-wise--it was too easy to squash incoming signals, which sounded terrible, so I did this easy mod to the 4 bias pots (in my build, these are inner pots of dual concentrics from Small Bear:)

"To PCB" means wiring to the center tap of the bias trimpots on the circuit board.  The down arrow is -15V


I used different resistor values between V++, the pot and V-- to allow for flexible settings

UPDATE to the update: After messing with this design a bit more, I realized the circuit would be more musical if I could control voltages to determine the bias offsets. And that's easy, buffer an incoming CV signal and feed it to each of the op amps' non-inverting inputs. I thought about modifying B.O.W.A.L. to do this, but the front panel was already done and labeled.  Instead, I  created a 2 channel variation of this same PCB that has CV to DC bias offset: "Small B.o.w.a.l".

OK that's it.  Remain biased at all times! Until next time, go MITEs and don't breathe the fumes!



Friday, October 19, 2018

Zener Synth Distortion: alive and kicking (with sound file and scope photos)

Hello Again.  This time closing out the "Zener Synth Distortion" Project.

You can read Part I, how I stumbled upon this circuit, here.

2x zener prototypes, each slightly different builds, are up and running,  panels Lazertran'd, ready to go.




This is a super simple build, almost no parts!






How does it sound?  you be the judge! I have uploaded a demo sound file on Soundcloud.

I tried to give the most objective before/after demo of the 2 modules I could. No reverb, no filters, no echo etc. boring right?

Here is how I patched my fully DIY home-grown-works-almost-all-the-time modular synthesizer to get the demo sound going:

On the demo the first few sounds are from the "Zener" design:


"Zener" provides in your face, loud, crunchy distortion and greatly emphasizes beat frequencies.  maybe a bit much?

The rest of the demo (the last 3:30 or so worth) is "Son of Zener", a lot more subtle.


Shorts anyone? On "ElectroMusic" forum there was discussion about buffering the inputs (so 2 input signals don't go through both inward facing zeners and short one another).  Ach Tung!  I added a single unity gain buffer to one side of each design.  Update: After a bit more discussion with Phobos from the site, it makes sense to buffer the Son of Zener input as well, since the transformer only supplies about 45-50 ohms of resistance.

Another thing that came up on the forum: what do these distortion doodads look like on a scope?  My Siglent save to USB stick doesn't work (Firmware issue?  Damn!  Says save, then nothing on the stick!) so excuse the crappy photos, but here it is:

Source waveforms look like this of course:


Mixed, through ZENER they look "square waved" as you might expect (note the DC offset--you may want to get rid of that if you build this circuit--cap coupling should help, but me? I fix it soon....)


But other times you get messed up sine waye craziness......




In case there was any doubt, it's not true ring modulation; again I think the circuits beef up any beat frequencies, sometimes they jettison the fundamentals entirely, so you get oddness (hear it in the demo?)....you end up with something that reminds me, sometimes? a bit?? of ring modulation.  And I can't figure out why the transformers are necessary, from my limited knowledge of inductors, they shouldn't be, but trying these designs the bench without them yielded less "effect" for things like the pseudo R-M sweeps.  Sorry, i  can't say why....

OK that's it, time to move on. I can fab a PCB of this if anyone is interested; I can't charge you for 'em, sell em on etsy or whatever, due to the deal I have with my current employers, but I can send a "freebee" out to whoever is interested (help me w/ postage?  Whatever....)  If there is any interest I'll get that going. Until then enjoy some Ziener for your wiener.....This is a super easy circuit and I'm sure can be improved.  Different value Zeners?  More buffering?  Figure out if the transformers are needed or if I was listening to too much 80's pop while I was prototyping? How about an AC offset in front of each input (which changes the sound).  Please let me know whatever you come up with. Have fun!

Tuesday, October 16, 2018

Thomas Henry 13700 based VCO: All hail the mighty Henry!

How much have I learned from Thomas Henry's books?  Well it's all relative I guess but for me,  a lot!  I went from zero knowledge about OTA's to well, some knowledge. Two of his books are both recommended if you want to learn how OTA synth circuits work: "Making music with the 3080" and "An Analog Synthesizer for the 21st century".

Each book features schematics for different VCO's.  The former, 3080 based; the latter 13700.



If you've studied audio DIY for synths you've probably run into these IC's before; in goes (low) voltage; out comes current, and best of all, you can control the output current in a linear fashion (hopefully) with an independent "gain" current at a dedicated input.

But it's not quite that easy:
  • The gain input lives a diode drop above V--.  So to make this go, you often have to use PNP Transistors which seems to me oddly counter-intuitive. Hello?.....OK....
  • If you put too much current into the gain pin (2mA I think?  1mA? don't remember but it ain't much) you blow the crap out of the OTA chip.  You don't get a buzz, a hum, smoke or whatever, it just dies and never works again--fast, like in milliseconds. OTAs are fragile!!
  • And these damn things can be expensive to replace!
  • The input gain control to output current is a linear relationship, but only for a narrow band. If you outside this band, it's distortion city.
  • The voltage at input needs to remain small, like 30mV?  Don't remember that either, but it's not much.
There is really good information about all of this, that a non-EE, nearly deaf, never-made-it-as-a-rock -star guy like me can follow, in the 3080 book.

The 3080 and 13700 OTA ICs are obsolete you say?  Ha! you can still get 13700 clones from CoolAudio and I still see 3080s come up for sale every now and then on Ebay, Mouser, surplus places and the like.

I've now built 3 TH OTA VCOs as I write this.  The designs aren't quite as simple as the ASM VCO but do yield really good looking triangle and sine as well as pulse and ramp, with good stability, a wide frequency range (LFO to way too high for me to hear), and good V per octave performance over about 8 octaves. TH probably put a ton of work into these designs and he deserves our gratitude.

Nice to have another 3 VCO's in my rack.

3x THVCOs.  No labels yet, but they all work.

 I still need to do the LazerTran phony silk screen to the left two units.

OK, Done.....



For all three: No mods really, except I had change op amp gain at the output of the sine waves to about 4:1 as what is in TH's books come in at about 1V P/P for everything I built.  Easy--change out a resistor value in the output buffer for sine.

BTW the waves look really good on these VCO's!







Details on the fab: There are lots of ways to build your own THVCO, including guys online (licensed sometimes, sometimes not) who will sell you TH VCO PCB's.

For me, I always fab my own boards (makes them easier to mod, for one thing), but for this, a single printed circuit board using all through hole would have been huge--a lot of parts--and my Fracrak case is not big, so I created a "motherboard" and then used 4/40 hardware to screw daughter boards (3 of them: CV volt/octave to log; OTA VCO core; waveform generation from triangle) to each one.

the boards lying on the bench are the motherboards. 
Dual concentric pots are a lifesaver for modules going into small racks

As always front panels are from PCBWAY (I ordered "alubase" PCBs); dual concentric pots from Small Bear; PCB's from JLCPCB. 


Holy smokes the 13700 VCOs were a ton of fab work. I need to get into SMTs I guess, and not do so much wiring, but I often modify my designs after they are in the rack (an op amp here, a resistor in parallel there?) and nothing beats through hole components and 22 gauge hook up wire to facilitate that. It took me 2 weekday evenings and 2 solid weekend days to get them stuffed, assembled, wired, debugged, calibrated, and in my rack.  Another 1/2 day to create and apply the front panel decal.


OK....I can't in good conscience post TH's schemos anywhere, please buy his books, but for build notes (this is mostly for me I guess?) I scanned everything and put it on my website here. Eagle files for the motherboard and some other goodies are linked in the same part of the page. Note there are 3 mistakes in the 13700 work, all of which are easy to fix.  The fixes are in the PDF docs.  I'll go over the 3080, which is a pretty different build, and destined to be used for waveform experiments, another time. At least everything fits in my rack!  Until next time, don't breathe the fumes!

Synth Gates, Interrupts, and Arduinos; a million and one uses

Yes once again: more Arduino Control Voltage Fu. Continuing from last time ...how can we use an Arduino to get rid of mountains of analog ...