EURO SEM style Attenuverter

I already have a DIY attenuverter in my rack, in FRAC format (+/- 15V). My Modular Synth geek group have been telling me: stop it, the only format left is Euro and large format. 

I have a bit of space in my Eurorack setup, so, let's get building--let's port last post's design to Eurorack.

Previous posts for this SEM style attenuverter are here (prototyping), here (Skiff depth attenuverter) and improving the module's bias control--here.  

To summarize those posts, because, who reads blog posts anyway? I always liked the sound/feel/response of the attenuverters found in the Oberheim SEM. 

The legendary Tom Oberheim confirmed via email that his design used a center tap pot. 

I bought a few ( ALPS RK11K114) and built a few.

Finished module

Boards were already laid out in Eagle; I only needed to change power connectors and add a  few 100 mil test points to gang 2 attenuverters in series.  

I also needed to design a Eurorack sized front panel:

I used the previous board and paper templates to create a new front panel.  But--would everything fit?
 
Next I sent the gerbers off to the blog's trusty sponsor, PCBway.  

BAM!! they are back:

Happy weekend--new boards from PCBWAY.  Thanks to those guys for helping out this blog.



Next I got soldering. 

The design had 2 SOIC op amps, but those aren't too hard to solder. Use a fine tipped solder pen, flux, and patience.

Beyond that, this is all through-hole. Happy day.



The design required a standoff board for the center tap pot. Otherwise its threads won't stick up far enough through the front panel. I included this small standoff in the gerbers and sch/brd files you can get here.
I had 2 pulled standoff boards from earlier projects so i reused those......


Only a couple mistakes, which i corrected in the gerbers uploaded to the PCBWAY project page (here); I forget to silk "red stripe" on the back of the PCB (oops) corrected below with a p-touch label. Wow, dumb error.



Beyond that everything worked first time!  Front panel fit fine, everything lined up.

The CON xxx connector sets from All Electronics are inexpensive handy for connecting signals between modules.  2.54mm spacing...nice.

As far as new features: after having this module (I have built two) in my rack for several months, I found I was patching the output of module 1 to the input of module 2 frequently to get complex inverted CVs, audio phase shifts and whatnot.  

Using CON-242's from All Electronics I wired two Euro attenuverters  together from the back, so the output of 1 hit the switched input of module 2:

Rear view--two attenuverters chained together


I also added another CON-242 male to each module's output.  This will allow me to wire up something new to the module's output in the future.  I will build an output expander for this next month--let's hope it works.

Update 11-4-22: I have created an expander module for 2x of these attenuverters, adding simultaneous inverted outputs with level and bias control. Project here. Blog post here.




All in all this was a fast and fun build.  

If you want to play along, get BOM, gerbers, PDFs of schematics, eagle files, from PCBway's community page here. 


2x Attenuverters with Expander (right)



Remember: If you have to vert, go up and down not back and forth.  See ya next time.

AD9833-RP2040 VCO--Volt/Octave is Working.....

Hello again, quick post.  

Last time I was working on an Analog to Digital equipped RP2040 carrier board (a development board to expand the capabilities of an even smaller development board--the SEEED XIAO RP2040).  

The initial carrier design had some stupid mistakes. I had to send off the gerbers again.  

Now, I am waiting for the improved dev boards to come back from fabrication, from my generous and patient sponsor, PCBWAY.

In the meantime I have a working volt per octave VCO made from bits and pieces left over from my last post--centered around an AD9833 programmable waveform generator IC driven by an RP2040 MCU running firmware I wrote in embedded C.


Here are a couple of videos from the bench--first up: basic volt per octave CV, coarse pitch control, and ramp LFO modulation. My MIDI controller (Alesis Q49) is wired to an Intellijel uMIDI volt-octave generator. Next, a Tiptop MIXZ Euro mixer module is used to sum it with additional CV sources. Yes, that works. The AD9833 based VCO can track high frequency modulation well. Cool!



\\

Let's go riffing!


Here is how the SEEED RP2040 carrier PCB is wired to the AD9833 breakout board:



The confusing thing here is "Pin 6/SDA".  This is used for chip select for the AD9833 BoB. 

Since I was programming in C, I had to refer to the RP2040 SEEED schematic to get the GPIO pin number (in this case, GPIO6) used for chip select.  

This is not confused with "D6" pins in the more in SEEED pin out diagrams.  How Arduino abstracts the GPIO Pins in shown in green; the Micropython pin numbers DO match the schematic and thus can be used for C:

For embedded C, the GPIO pins in your code must match the Micropython pins you see here, not the green pins, which represents Arduion Sketch GPIO. 


Assuming the link still works, the "little Blue 9833 BoB" can be purchased on Amazon US. here.  I have seen it referred to as "GY-9833" but this is a generic no-name made in China BoB, folks. 

I tried getting some from AliExpress where they can be purchased for less than $3USD (wow!) but after shipping and charging my PayPal they vanished like the wind. I called USPS and US Customs--sorry, no help there--they are gone. I will probably never see them, lesson learned?

If you want to see the Embedded C code, the github repo for this project is now public. It's a work in progress but the basic embedded C code for RP2040 works. Go here.  

How it works...straightforward as VCO's go? Nope. Main.c runs a loop on the RP2040 and sends data grabbed from an MCP3201 ADC to a frequency lookup table; results are transmitted to an AD9833 on a cheap breakout board as "play these pitches" SPI commands.

The lookup table was written in python, then the STDOUT from that was copied as a static array into the C code for the VCO. You can get the python script to generate the lookup table from Github, here.

SPI, UART, AD9833, MCP3201 etc., are included in the project as libraries, as the goal creating these libs was to reuse these libraries in future projects--well, here they are.

Good news, it all works--normal 1V/octave tracks over several octaves.  



The VCO's V/octave performance is not fully rock solid--nor is it for the analog VCOs I've built. For instance, jumping to a given note a few times from an octave away results in a pitch that is a few hertz off from the last time the same note was played. I am pretty sure this is a lack of repeatability in the ADC section--the MCP3201 is not a high end chip, but regardless, I don't want this VCO sounding too "digital"--maybe as-is it's good enough.  

I will next create an output buffer/waveform conversion board to supplement the VCO triangle/sine core, (update 12-17-22--works, see the post here) as well as a Eurorack format front panel for the VCO, in the coming weeks.  once everything works I will post the schemos, gerbers etc....but not yet, I am still working out design quirks.

There are certainly easier ways to make a V/octave VCO, and using an AD9833 function generator IC controlled by a microprocessor for volt per octave synthesis is--unusual? Whatever.  My goal was to see if I could make an AD9833, with an MCP3201, RP2040, mutable instrument style input buffers, etc,.work, as a musically useful VCO. So far, so good.

Update 3-5-23: VCO using this board is working! See the post here.

SEEED XAIO 2040--New Development Board, Will it Explode?

Update 7-1-23: I have revised this board a few times--making further small improvements....notes about the revisions as well as how to calibrate the board can be found in the PCBWAY project page here.

Hello again! 

Back to posts about embedded C and digital. 

From previous posts: I've been working with Raspberry Pi's RP2040 MCU's and the Pico dev boards; unlike Raspberry Pi SBCs, the RP2040 is not backordered everywhere.  

I set up a RP2040 development and debug platform for C using an Ubuntu VM; posts about this start here, then ported an AD9833 library I wrote for AVR MCUs to RP2040 (here).  

I wanted to embrace a smaller RP2040 Development board for upcoming projects--the Pico dev board is relatively big; I found something small from SEEED--the XIAO RP2040:

As big as a toenail?  

Let's motorize this pursuit!

I needed some buffered and clamped ADC inputs--almost all my MCU projects use these. Using the seeed XAIO RP2040 dev board as the parent, I drew up a carrier board in Eagle with buffers and an addition ADC:


I sent this off to this blog's faithful and surprisingly low key sponsors, PCBWAY (get-yer-gerbers here)--whammy bammy, thank you cslammy; boards are back:

As always, a shameless plug for my sponsors: please help out this geeky blog and check PCBWAY's site next time you have DIY and maker needs. 

What's Added

....a SPI ADC because I read (here and elsewhere) the built in 12 bit ADCs for the RP2040 are noisy.  I plan to experiment with V/octave with this dev board; V/O is sensitive to noise. I also thought it'd be useful to have a 5th ADC available for upcoming SEEED 2040 based projects.

For the ADC IC I used an MCP3201 SPI 12 bit chip; the inverting buffers were inspired by ideas visible from Mutable Instrument's open source designs.   

Next step: build it and see if it works:




To make the daughter development board plug into breadboards I brought all pins out to an 100mil edge connector....

ready to test!

SACRIFICIAL OP AMPS

Once stuffed and powered up, my new dev board worked--for about a minute--then it shorted out.  

Nice!

I dug in and found a design stupid mistake:



My design provided the MCP6004 op amp with ground to Vss and +12V to Vdd but the IC's maximum rating is 7V (helps to read the data sheet right? I didn't!).

After a few minutes of operating outside its maximum limit the op amp blew up and shorted between its Vdd and Vss pins, which halted everything else on the board, including the SEEED mini-dev board.

I destroyed two MCP6004's getting to the bottom of this issue. Fortunately the MCU was spared.

Trace fix....

This issue was pretty easily fixed by cutting the Vdd trace and soldering a wire between the output of the 7805 regulator and Vdd. I will need to get the board fabricated again, however.  

I will post a (hopefully) fixed and improved version soon. 

UPDATE: Another mistake is that the 78L05 can't source enough current for the RP2040--it sources 100mA but the MCU alone needs more like 130mA.  I am replacing it with an L4931 in newer designs, we will see if that helps....

UPDATE!! revised buffer board is back and works...fixes the two issues above and other problems, see the post here. I am not why the board above was drawing so much current--probably a solder blob or some other snafu due to the trace cut--the rev2 board does not have this issue..

With the voltage rail issues sorted, a blink sketch now works...indefinitely. 

Does the world need more blink code?  probably not. You can get the simple C blink code for the SEEED XAIO 2040 at github, here.

Next up, I want to see if the board will work with the RP2040 ADC, SPI, UART and AD9833 libraries I wrote. I think they will--why wouldn't they; but in my world things almost never work the first time. update--10-5-22 works!  RP2040 + AD9833 volt-octave VCO to 7-8 octaves with pretty good accuracy is working on my bench. uses many of these libraries....post is here; embedded C code is here. 

I will post again when I make progress or lack thereof. Until then, enjoy spreading your SEEED.


Improving the SEM Attenuverter

 Hello again! A few years ago I designed and laid out an Oberheim SEM inspired attenuverter, posts are here and here.  

Never being 100% happy with anything I do, I redesigned the main board to give better user control of bias inputs. Today's post goes over the updated circuit design.

Improved attenuverter module in FRAC format


Let's look at the bias input buffers found in the initial design:

Original design

First off, the 2018 design has a glaring typo: pins 3 and 5 need +5V at input, not 0V, so I don't know what I was thinking with a 100K/100K voltage divider between the rails. I used 47K for R11 in the actual build, but still, the circa 2019 schematic had this glaring mistake.

Here is the new design:

Update!!

Besides fixing R11's value, the Bias pots now control levels found from the CV **or** the signal found at "Bias+" and "Bias -". This meant the user has greater flexibility for controlling the input bias CV using the B100K pots.

The rest of the schematic remained unchanged.

Another issue was that the PCB was tall to comfortably fit into a Frac case. This is fixed in the gerbers found on the PCBWAY project page, here, and the github for the build, here. If you want to build this attenuverter for Frac, make sure to download and fab the standoff daughterboard for the CTPOT, it is needed for the layout.

 


With the PCBs trimmed to size it was now a matter of populating it.   

The latest Attenuverter PCBs were provided by this blog's honorable sponsor, PCBWAY.  I would be very grateful if you could check them out for your next project.




A daughterboard is needed for the center tap pot--read more in  this previous post.  



The center pot shaft had to be shorted using a Dremel tool.

ready to test!

I like it when it works the first time!

What's next?  I have new RP2040 dev boards to experiment with, more on that next time. I also want to design a front panel for this attenuverter for Eurorack....(update--Euro port of this asttenuverter is done and works--go here).

Until then, don't breathe the fumes!

Cloning the Moog CP3 Mixer

I read that the secret sauce that makes the Minimoog/Moog Modular sound so damn good is the subtle distortion introduced by its audio mixer.  True? False? 

Let's build one and find out! 

For this post I laid out three PCB's the capture Moog's legendary CP3 design, got them fabricated at that blog's sponsor, PCBWAY, then built a Eurorack format skiff clone:



  

CP3 (io) CLONE WARS

Let's go!

I found the original Moog CP3 schematic--looks simple enough--here.  

I captured the CP3 schematic, then laid out PCB's using Eagle; to save space I used 3 PCBs stacked in a skiff setup: front panel, a board for pots and jacks, and the mixer PCB.  

Front Panel is designed to Euro spec




100 mil edge connectors were used instead of hookup wire...."skiff"
 depth


Next I sent the gerbers off the this blog's trusty sponsor, PCBWAY; they were back in a jiffy, good to go:

Thanks to PCBWAY for sponsoring AudioDiWHY, you can help this blog by checking them out.

Most of the CP3's components were commonplace and could be found in my junk box, but I had to order a some pots from Tayda, and I found 3392 and 4058 transistors for about 70c each from Mouser.



On to the build....  

Very straightforward--the entire process took about two hours.

The board accommodates the CP3's original 3392/4058 transistors, which seem a bit rare, as well as easier to find 2N3904/3906's. If you build this CP3 clone, use 2x NPNs and 2x PNPs.














I built two CP3s; one used 3904's/3906's; the other 3392's and 4058's "NOS" components.

The 2N3904/06 build worked flawlessly the first time. Joy! However, the 3392/4058 version didn't work at first, I thought it was my layout, since the pins on 3392's are different than the 3094's, but no, that wasn't it; turned out, Mouser put the wrong part in the bag:


What is a JCJ111 anyway? A Jfet, I think. I called up Mouser, they were very nice about this, and sent me 5 3392's to replace the one transistor that was misshipped. Hey, it happens right?

I replaced the JCJ111 with a 3392; afterwards, the NOS board worked.  

Overall this was a pretty easy design to capture, lay out, and build. 

If you want to build one, get PCBs, BOM, gerbers, eagle files, PDFs of the layouts, etc., from PCBWAY community (here) and/or my github page (here).  

Which transistors to use? 

To my ears, the 3904/06 version sounded a bit better than the NOS unit--a bit less noise, with the same pleasing distortion when levels were turned way up.  

So--if you build this, save time, money and trouble and just use 3904 and 3906's. 

Using the CP3

The "click filter" is a passive low pass filter in the CP3's signal flow, not sure how much I will use it, but it indeeds knocks a sizable portion of the high end off the circuit's outputs.

I used tiny trimmers for the input level adjustments to save space, that makes the panel a bit crowded, but hey, in the Eurorack world, things get crowded.  

Overall, the CP3, to my ears, does indeed add Moog's signature Minimoog/System 55 distortion to a patch: subtle, warm, and fat sounding, especially with ramp waves. 

I am happy with how this DiWHY project came out and will use these 2 mixers a lot going forward.

If I get time I will record before/after wav files, photograph scope shots of distorted waveforms, etc., but right now it's back to the day job (post Covid?) and on to new things.  

CODA 

Still more analog, less digital, next time. After many long months, I am going to try to fix a few problems with an attenuverter circuit from several posts ago. See ya.