Wednesday, August 30, 2023

ARP2600 Style Preamp: Understanding and Reducing Noise

Readers: If you want to build the preamp in this post, please go to PCBWAY's Community pages--a gerber ready to download and/or fabricate is here

Also please visit PCBWAY's site using the link here--it will help this blog. 

============

I'm reaching the end of laying out clones and workalikes based on the classic ARP 2600 synthesizer.  

It's (almost) time to move on.

Not yet! Let's redo the 2600's preamp with revision 2 of a workalike--improving upon the last one--since revision one was noisy and sounded, well, just OK.

Finished Rev 2 Eurorack Synth Preamp

A previous attempt at laying out the same preamp....


I followed some basic guidelines to make a circuit less noisy....to my ears this Revision 2 design is quieter and sounds cleaner; I cover its build in this post; also share my "understanding op amp noise" lab notes.

A $10USD super low noise op amp vs. the venerable 741. Which produces less noise? Hint: the more expensive one. In a future post I will rebuild this post's preamplifier to see if its sounds better still with super op amp; I am using TL072's now.

LAB NOTES--OP AMP NOISE

An immediate takeaway--I thought there was just one kind of noise--but no, there are different types. I will look at voltage noise, current noise, total harmonic distortion, and slew.

VOLTAGE NOISE

Every component in a circuit generates voltage noise—wires, traces, resistors, everything. Temperature, quality of manufacture, IC design, materials used—all contribute to this noise. And of course op amps are components....so they contibute.

We can map op amp voltage noise using a graph:


This is the voltage noise on an OP07 op amp tested under laboratory conditions and shows voltage noise at low frequencies--.1 hz to 10hz.

But we use op amps at all different frequencies; in this case, voltage noise's spectral density looks like this: 

 

Voltage noise that varies depending on frequency is caused by several factors--here I name a few: 

  • Johnson noise--present in all components--noise created by thermal agitation of the electrons in the materials used; it spans all frequencies ("white noise") and is most noticable at higher frequencies.
  • Shot noise--caused by something to do with quantum mechanics that I can't sum up in a few words and will most likely never fully understand; I opened the box and the cat's dead. Temperature indepedendent; like Johnson noise, it spans all frequencies.
  • Flicker noise or "1/f" noise: Noise caused by the materials and construction techniques used during manufacture--1/f noise is concentrated in the lower frequencies--in the graph above you see it from 1 to about 500 hz.  1/f corner is where the white noise and pink noise amplitudes meet.

EEVLOG's video explaining voltage noise, which goes into quite a bit more detail, is here

Good articles on the same subject:  here and here.  

An interesting video explaining how to measure 1/f noise--using op amps to measure the noise of other op amps--is here.

From a noise standpoint, how to determine which op amp is right for a project?  

Like online dating: "it depends". 

In the land of AudioDiWHY, we do a lot in the 100-1000hz range, so 1/f noise is not our friend. The comparison chart here shows that the venerable TL072, used for this post's pre-amp build, and my go-to op amp for a lot of what I design, does not compare favorably with many other higher-performance op amps in terms of noise specs.

They're everywhere!


An obvious way to ameliorate: use a lower noise op amp. I got 2 AD8599's for a "final" build whose spectral noise density is ridiculously low, especially at low frequencies:

However, a less expensive op amp like a 5532 might sound just as good, and with my tinnitus diminished hearing I may not be able to tell the difference.

CURRENT NOISE:

There is also another type of noise—“current noise”.  

The idea: an op amp input should source or sink no current, but in reality it does. The current noise can be amplified by feedback resistors and overall gain, meaning  that current noise cannot be ignored. 

Current noise is less of an issue in JFET op amps, since JFETs really are closer to infinitely high input impedance. 

Some videos about this:

https://www.youtube.com/watch?v=1tUaDghBmuc&t=243s

https://www.youtube.com/watch?v=TxBJb-Z0XFI&t=950s

To try to get rid of these issues, there are a few basic design ideas…

For instance: the videos explain why you might see resistors between non-inverting and ground, which never made sense to me until I went down the op amp noise rabbit hole:


The R and C highlighted are there to quiet down the op amp created by input offset bias current offsets. Component choice looks easy--same value resistor as a feedback loop and a small cap.  

Great article about this: https://www.eetimes.com/op-amps-in-small-signal-audio-design-part-1-op-amp-history-properties/

Another basic idea is to use smaller value resistors in feedback loops: see the article here.  

OP AMP SHOOTOUT:

An extremely useful summary for overall op performance: https://www.cycfi.com/projects/six-pack/op-amp-shootout/

It’s from 2017 but many of the op amps are still available.  I bought some OPA1602's I learned about from the shootout; at about $3USD 1602's they have excellent specs for the price. 

THD:   

A bit easier to understand—extra harmonics are created by the amplifier.  A lower number is desirable. Video here                                             

SLEW:

An op amp cannot keep up with infinitely rapid voltage changes—for instance, a square wave at input does not look as crisp at output on a scope.  A high slew rate is desirable, but too fast an op amp can cause its own problems. Good video about slew is here.

Update 10-5-23: while researching another project I came across the video from Sine Lab here: an easy to understand general summary of op amp performance characterics.

OTHER WAYS TO IMPROVE PREAMP PERFORMANCE 

Ferrite beads and line filters near the power rails can be used to improve general amplification performance.

Using ground pours helps as well. Maybe? For high frequency electronics certainly but for us 20-20K bottom feeders, well, maybe.With my own designs I have not been able to hear a difference, but I read they help.

Again: lower resistance values in negative feedback loops helps. Look here. I reduced the 10K/100K used in rev1 to 1K/10K.  I will use 720ohm/10K for the next build, which takes us closer to 10x gain.

I incorporated these three improvements into this post's "revision 2" preamp.  

LET'S BUILD!

This time I took some of the aforementioned lower noise ideas and put them to the test.  

Here are build photos:

Joy! Bags o' New boards from the blog's trusty sponsor, PCBWAY




Ready to test....

Temporary front panel.... 


Final front panel fabricated.....


With TL072's, not super low noise op amps, the build already sounds better vs. the one here.

As mentioned above, I am going to build another preamp with AD8599's--the $10 op amp lover's op amp--to see if it sounds different/better than the TL072 build. 

Update: dropping in the AD8599, sadly, I can't hear a difference between it and the TL072. But that might be my >60 year old, sonically-tortured-between-ages-15-and-35-years-old ears, my crappy bench B chain, my cheap external Eurorack power supply, or a lot of other factors. For the test to be accurate and useful I'd need to be a lot more scientific, but it's time to move on.  

I'll post a Eurorack format front panel for this circuit as well--shortly. One of these days. Maybe. Update: gerber for front panel is posted--go here.

Anyway, this was a fun build, and it was satisfying to put another piece of  classic ARP inspired tech in my rack.

More to come....stay tuned.

Saturday, August 26, 2023

Expert Sleepers and Reaktor--The Perfect Combo for Bench Fun

Readers: get the Reaktor ensembles I use on my bench from github--here.

==-=-=-=-=-=-=-=-=-=-

My last post about my bench setup is a few years old--here.   

I am always trying to improve things.....

I needed voltage and function generation on my bench that was fast to set up and easy to control--for example, a sine wave at frequency X that is 5V peak to peak, two +/- 5V control voltage sources I can adjust with potentiometers, and a single +10V gate signal 20ms long that fires every 10 seconds.

I have a Siglent SDG1025 but it can be a bit time consuming to set up, even using PyVisa for automation. 

I also have a Siglent 3303X for generating DC voltages, but it takes a bit of time to set it to sweep through voltages, needed for testing things like synthesizer module CV inputs.

What else can be put to work?

Enter Expert Sleepers I/O:


Expert Sleepers ES-8--an extremely fast/powerful bench tool when combined with high level audio programming tools like Native Instruments Reaktor, Cycling 74 Max, and your Bench PC

AT THE BENCH:

The Expert Sleepers ES-8 is a DC coupled AD/DA that that conforms to the Eurorack specification, add-a-buncha-DC-coupled-I/O-to-your-PC idea, and uses USB or light pipe to send audio and CV data to and from your PC.  

To generate CV and audio signals I used free standing Reaktor 5--I found Reaktor 5 to be simpler to program than the current version, Reaktor 6.

Ensembles I use on my bench are available from GitHub here. You will have to buy Reaktor though. In a future post I hope to experiment with open source means to do the software part for free.

So far I have created simple LFO's and DC voltage generation. For what I do on the bench this has already proven useful. 

For example, I used the ES-8/Reaktor setup to test the VCF posted here. I needed an easy way to create an LFO mod source and sweep the cutoff frequency of the filter with CV simultaneously. At the same time, try to add yet another CV to the filter's frequency input.

Not impossible to do with my Siglent gear but using Reaktor and ES-8, it took me about 2 minutes to get the entire bench set up and ready to put the VCF under test.  

I wired up the device under test to the ES-8, in Reaktor I used an ensemble containing an LFO and two bipolar CV's:

Sure I could create 2x bipolar voltage sources and an LFO with my old bench setup, but it was much, much faster to use this Reaktor "ensemble" and the ES-8's DC coupled outputs you see here.

What else can this do?

I have a uMidi Midi to CV converter in my rack; it uses MIDI CC2 to create 0-5V CV signals. Yes, once set up correctly, the Reaktor/ES/Abelton trifecta works great for this use case as well.


The github repo contains ensembles for unipolar DC creation as well as bipolar...i will add more ensembles to the repo as I create them.

Update 9-25-24 I have found that sometimes I have to reboot my Windows 10 PC for the audio/CV coming out of Reaktor 5 standalone to "run".  There should not be a red circle icon in the top right of the Reaktor UI.  that means its output is not running--If so, reboot.

EXPERT WHO?

I was introduced to Expert Sleepers AD/DA's (ES-3--ADAT light pipe to DC coupled outputs, and ES-6---DC coupled inputs to ADAT light pipe) by a fellow synthesizer enthusiast a few years ago.  

He saw that I had a DAW/RME FireFace 802 equipped studio and told me run, don't walk, and buy an Expert Sleepers ES-3/ES-6 pair. 

"It will change how you do everything" he said.

The idea of the ES modules is pretty simple: they produce whatever audio or CV you send over ADAT light pipe, giving me many more channels of DC coupled I/O to and from my computer.  They have excellent fidelity, low DC offset, and low noise, are reasonably affordable, and have small Eurorack footprints. 

Bought them....

As I dug further into this I discovered what you could do with the ES-3/ES-6 was--vast.

Here's an example: I could run an audio signal out of Ableton, out of the the ES-3, through a guitar pedal, back into a ES-6, and back into Ableton. Another ES3 output could be used to control a VCA that allowed control of an external reverb. A third ES-3 output could go to the input of a free standing sampler, set to a loop, the sampler output came back via an ES-6 input.

Or--I could use free standing Reaktor (not as a plug in--the Reaktor 5 program itself) and Ableton Live 11 at the same time and talk to the same ES-3 port--both of the program's outputs got SUMMED to a single ES-3 3.5mm jack.  

That's right, the two different output signals, sent to the same ES-3 port, didn't step on each other, didn't stop the other program from working--nothing crashed--instead by magic the two output signals got added together.  

So a 1 V P/P sine wave coming from a DAW and a 1V DC signal coming from free standing Reaktor, both sent to the same ES-3 port on RME channel ADAT1, create a 1V P/P sine wave with a 1V DC offset at the 3.5mm jack.

I never thought this would work--it must be a feature of the ASIO standard that both programs use?  I don't know, but this seems extremely solid--I'll take it.  

ABLETON, REAKTOR, MIDI AND ES SERIES I/O

At the risk of losing the very few users still with me--here are my notes for making Reaktor and Ableton, working in parallel, work reliably in a project studio and note surrounding setting up MIDI.  

This assumes you have ES3/ES6, a ADAT optical interface like the RME 802, a "point and shoot" graphical programming tool like Reaktor, and something like Ableton Live 11. 

I realize this may be not much use if you don't have gear and software similar to mine--but this blog is my trail of bread crumbs, and maybe a few of you find may find bits useful?  But seriously, a DAW, Expert Sleepers IO and a tool like Reaktor can give you almost unlimited control of whatever sort of audio or CV signals you can dream up. 

FREE STANDING REAKTOR 5 AND ABLETON LIVE 11 AT THE SAME TIME

I use a Windows 10 i9 13700 PC and about 128ms for latency, sometimes 64ms. Ableton is hardware hungry I have found, especially when using a lot of tracks and plug-ins.

You have to set up the free standing Reaktor 5 program and route its audio ports to the ES6 (input) and ES3 (output) ports like this.


The RME gear (802, others) considers "Adat 1" to be ES-3 port 1 or ES-6 port port 1. 

So here, Adat 3 and 4 are ports 3 and 4 in the land of Expert Sleepers ES3 ES6....

In Reaktor, go to Audio and Midi preferences > MIDI and set the MIDI stuff found on "on" or "off". You do this by left clicking (left! not right!) the "on" or "off".


Additionally, if you want MIDI in or out you may have to go to the ensemble itself--this appears to be stored ensemble by ensemble--highlight a slider--not the "Chan. message" tile, rather, the slider panel element, click on the CONNECT tab, and check "MIDI Out" and/or "MIDI in":


A midi only ensemble...no audio I/O, only Midi Channel Messages


You knew that right? I didn't. My CC ensembles would not send data to output until I did this final step.

You may also have to edit elements of your Reaktor instrument or ensemble to be "always active". 

What if we want to use Reaktor as a MIDI only VST, not free standing?  

It seemed at first like Reaktor Midi only ensembles--an ensemble with only MIDI I/O, no audio or CV, with Reaktor running as a plug-in, wouldn't work with Ableton--but they do.

There are no specific MIDI out ports for Reaktor, as there are for audio. Instead, note on, Channel message, etc.

 Here is how to get it working in Ableton:

Get rid of all audio ins and outs in your ensemble (so, delete "L IN, R, IN, L OUT, R OUT, etc)

Choose individual MIDI tools like "Continuous controller" 

Then wire it up to build your ensemble.

You can only drop Reaktor 5 ensembles into a MIDI track--but once you do the track becomes an audio track. 

You can't route to a MIDI Output from an audio track in Ableton....

The trick is to create a 2nd MIDI track and set it up like this:

 



MIDI FROM Reaktor 5 is the track with your MIDI ensemble--in this case "3-Reaktor5"

Note you have to choose "Reaktor5" in the pull down right below that "MIDI FROM".

Set both tracks to "IN"

Now if you move the slider in the track with the ensemble, changing a CC for instance, it comes out of the track next to it, and routes to the MIDI output you choose (in my case a intellijel uMIDI)

OUTTRO

I figure there is no end to what this setup can do--with a bit of time programming Reaktor--well, almost anything.

Of course, the ES-8 can't source or sink a ton of current I would imagine, I could not find maximum current specs for its inputs and outputs, so I'd say: don't use its outputs to power other modules or feed high voltages into the ES-8's inputs.

ES's site says it can produce about +/-10V, but doesn't say max current source and sink--manual is here.

I'd also be careful about shorting ES3/8 outputs to ground, but I'd say that about many other Euro modules.....at the end of the day, for audio and CV creation into high impedence inputs, which is most of what I do, the ES series fills the bill. 

If you are looking for a single piece of gear that will greatly enhance your bench, your studio, and maybe your whole audio world, I highly recommend Expert Sleeper I/O--the ES-3, 6 and 8 are probably the most used Euro modules I own.

OK,  back to soldering and breathing fumes.  



Friday, August 4, 2023

MS20 Dual VCF--Improved

Hey readers! If you want to build the filter in this post, please go to PCBWAY's Community pages--the front panel and pots and jacks PCB's; with gerbers ready to go, are here; gerbers and info about the VCF subcircuit and PCB are here

Have fun!

-------------

 As soon as I wrap up a project I start thinking of ways to improve it.  This time I  laid out a few improved PCB's, got them fabricated by the blog's generous sponsor, PCBWAY, and built an improved VCF. 

Improvements to a working module? Doesn't happen often. But after having a DiWHY MS20 dual filter in my rack for a bit, the lack of an on-board mixer for both filters' outputs was bothering me. Also, the filter frequencies pots cut out when turned fully clockwise. A slightly more complex voltage divider  was needed to fix this annoying problem.

For the back story, please read the earlier post here; the filter circuit itself (the module uses 2 of them) is discussed here. There's more! Post for the pre-Euro versions of the same project is here. Yes, I have laid out a lot of MS20 VCF's. You may want to skim those posts?  


"Rev 2" of the Dual Euro Mixer. Seems Working!!!

MIXER

I added a simple mixer to the "pots and jacks" PCB--"1 - 2 Mix".  

This is the common single op amp mixer circuit used everywhere; yes it inverts the audio output.  The ARP2600's filter does as well--not always the worst thing.  

BETTER CUTOFF FREQUENCY CONTROL

The MS20 filter is a sallen-key design, meaning if you turn up filter feedback too much, instead of oscillation, the filter simply stops passing signal to its output. Good video about that is here. To fix this I added resistors before and after the pot.  After some expermentation, 10K for the V+ side and 1K for the V- side seemed to do the trick.  Some HP filter frequency settings can still make the filter cut out, but it's much better than it was before.

IMPROVED NORMALS

Filter 1 "Out" is now normaled to Filter 2 in.  I originally set this to Filter 1 IN being normalled to Filter 2 IN, but found myself overriding this with a patch cable frequently.  I like the REV2 normals better since one filter set to highpass and the other lowpass now creates a good sounding bandpass response, without needing patch cables.

All of this led me to a module I am happy with.  I can get a lot of cool sounds, from punchy bass to "Daft Punk" type VCF distortion.

TIME TO BUILD:

Here are the build photos:

New boards from PCBWAY.

The pots and jacks board now uses a single SOIC op amp for the filter mix.

Already built filter boards....


I didn't solder the pots you see here until after female edge connectors were soldered into place.

Mounting the VCF boards....

Chicken Sallen Sandwich?

Testing--worked the first time!

Front panel fit....

MS20 filters ahoy!


The module can be further tailored:

  • For more control of peak distortion, try using A100K pots for "frequency" pots instead of B100K's.
  • R15 on each filter board controls the maximum amount of feedback. Higher values means less feedback. Experiment with values from 10K to 100K--what sounds good is a matter of personal preference.
  • At the moment I am using B100K's for both frequency pots; first filter has 15k for R15; 2nd 47K for R15. This gives me a filter that mostly wants to get distorted and gritty sounding....I have a lot of filters that sound pretty, this one isn't one of them; that's OK with me.
  • OUT2 is the output of both filters in series, which to my ears sounds more like the filters on the MS10/MS20. "1-2 Mix", not as much, producing odd nasal sounds, Daf Punk distortion, and as Frank Zappa accurately put it, "cross tweeze".

That was fun--the damn thing's done. No more MS20 filter clones for a few years, OK?

Next few posts I hope to finish up a few more ARP2600 work-alike modules, until then, watch those fumes.

JTAG to SWD Converter

Readers: If you'd like to build the project featured in today's post, please go to PCBWAY's Community pages--gerber file, KiCAD ...