Sunday, March 5, 2023

AD9833 Volt/Octave VCO--New Jacks n' Pots Board--I am happy!

 Last post on this VCO, for a while anyway?  Hope!

AD9833/RP2040 VCO--seems WORKING

I took a month off and it helped! 

This module was driving me nuts. 

I got a fresh start March 1st and got the damn thing working after a single morning.  

There are too many previous posts about everything that went into designing, programming, laying out, and building the AD9833/RP2040 VCO, for instance:

  • C library for AD9833 Function generator IC for the RP2040 MCUhere.
  • AD9833 Triangle out to Ramp/Pulse board: here.
  • SEEED buffer board for SEEED XAIO 2040 RP2040 MCU dev board: here.
  • SPI library for RP2040: here
  • UART for debugging: here
  • Toolchain for RP2040/Ubuntu Linux/VMware virtual machine starts here.
  • Getting volt-octave working on the bench: here.
  • Getting the initial chock-full-o'-errors Euro skiff  build working: here.

BUILDING THE VCO

I knew I had to replace the pots n' jacks board from the previous revision--this is the board that sits behind the front panel--as it had some stoopid mistakes. 

I redesigned the board and sent it off for fabrication to this blog's ever-patient sponsor, PCBWAY....


Happiness is new PCBs from this blog's sponsor, PCBWAY.  Please help this blog and check them out--clicking on the link helps a lot--also take a look at their community pages, here.

I used a hot air tool to melt the pots' solder joints and get them off the previous board.  At $2USD or so per pot it was good to reuse them. 

Success--ready to reuse........

Next, I built the revised pots n' jacks board--resistors first:



Then the RP2040/SEEED breakout/buffer board and tri-ramp-pulse PCBs were attached to back of the pots n jacks board:


Front panel mounted--ready to test:


HOW IT CAME OUT....

To my surprise, after the new "motherboard" was deployed, the VCO sounded and worked--GREAT! 

The pitch jitter was gone--not sure what was causing it before--I thought I had to upgrade to a 14 bit ADC instead of 12 bits, but, no--12 bits seemed fine for this application.  

To test, I used the CV output of my MIDI to CV generator (intelligel uMIDI), multed it with a Mutable links and fed the volt per octave signal to the AD9833 VCO in parallel with a trusted analog VCO: a Doepfer A-111-3 Micro Precision VCO / LFO

These two were mixed through a CP3 clone mixer and presented directly to Ableton Live.

I wanted see how how they sounded together:

  • How well did the AD9833/RP2040 VCO track compared to the Doepfer-smoker 111 for volt/octave tracking?
  • Same question for portamento and pitch bend
  • How did its FM modulation input sound?
  • How "analog" did the AudioDiWHY AD9833 VCO sound in general?

The jury is in.

The AD9833 VCO behaved and sounded--trying to be objective here?--fantastic

No drift from this VCO, no overt temp/pitch issues, no oddness when tracking all over the place along side the Doepfer; to my ears both stayed in tune over at least 6 octaves, maybe 7. 

For what I do--definitely good enough.  

Pitch and glide sounded the same for either VCO.

FM modulation for the AD9833 VCO sounded as you'd expect. Pleasingly warbly, buzzy, to ring-moddy.

Best of all, this digital VCO sounded "analog" to my ears--between some distortion in the triangle to pulse/ramp conversion errors, and whatever slight errors are caused by the 12 bit A/D, I got a few slight pitch drift issues and a small bit of analog output oddness, the same sort of miniscule errors I get from the many analog VCO's I have in my rig.

The AD9833 VCO's pulse width controls were aggressive (?), but sonically pleasing.

The ramp audio output is a bit distorted but had a pleasing and very usable buzzy rampy sound.

In general, for all the consternation, fear and loathing with this build, in the end, I was happy...

I wanted a digital VCO that sounded analog, and think i got that, but more important, I wanted to see if I could bring together the many many hours spent learning embedded C, self-taught electrical engineering, pondering what makes something I like "sound good" and improving my PCB design skills--the "geeking" (as my psychiatrist girlfriend/fiance calls it) that went way up during the pandemic...and ultimately make something challenging that is useful in my Eurorack....  

HOW TO BUILD IT

If you want to play along at home:

You can get the embedded C files, CMAKE files, firmware (including ready-to-use .uf2 file--drag and drop it directly to the RP2040--so, no need to compile or have a working C toolchain) and all other code needed for this project from github, here.  

Then get hardware files--gerbers for the 4 PCBs, BOMs, Eagle CAD files, and a PDF of the board layout, from another github repo here

You can also purchase the PCBs through PCB way's community site, here, but I'd recommend getting all the gerbers from Github first--they will be most current.

Make sure to read the BOMs which have specific information and tips about components and hardware used.

Hopefully from there it should be like building a kit.

A note on components: to get volt/octave response I used these values on the SEEED dev board, then adjusted T1 to get volt/octave response.

  • 50K 25 turn trimmer for T1 (use a high quality trimmer for this)
  • 47K 1% for R8
  • 100K 1% for R5
  • 22K 1% for R6

OUTTRO

Improvements? Of course.  

How about a second FM input?  That would be easy to add but would take up front space--maybe too much.  For now I'll use a CV mixer. 

The triangle to ramp conversion could be improved to distort less: perhaps use a JFET instead of a 2N7000 mosfet, include additional comparators, other things--but I like the way the one I have now sounds. For now it stays.

A rotary switch to jump between octaves?  

I think at least for now, I'm done with this. Time to move on.

I know I complain about the WHY in AudioDIwhy.  But when something works well it's fun. 

That's the idea, right?

No comments:

Post a Comment

Rotary Encoder Expermenter's Board: Improving the Hardware

Quick one this time....I have posted a few projects lately that incorporated a Raspberry Pi Pico, rotary encoder, and .96" OLED:  here ...