[sdiy] Digital VCA

Matthew Smith matt at smiffytech.com
Sun Aug 28 01:05:13 CEST 2011


Thanks for the responses. I'll address what's been said and try to give 
a clearer picture of *why* I am looking to do this.

Olivier & Neil - yes, I had a bit of a brain-fart on the binary 
multiplication side. Shows I spend far too much time working with 
high-level languages in my day job ;-)  One of the reasons I'm looking 
to do this with programmable logic is that I can specify totally 
arbitrary register sizes. (The other reasons are parallel operations and 
the fact I'm trying to do as much with Verilog as possible, as a 
learning exercise.)

 From Tom:
> It's an interesting notion, but what's the advantage?

> You finish up needing an ADC and DAC and a processor all to do one
 > multiplication in the digital domain. Hardly worth the effort
 > in my view.

One side of this is the educational aspect. I am coming to this from the 
digital side, and feel that I will better understand concepts if I 
implement them first in a familiar (digital) environment.

The other has a commercial leaning. One of the final aims of my R&D is 
to produce an audio processor - either complete or as modules - 
somewhere between a modular synth and a multi-stomp box.

Whilst this type of product is fitted to a niche market, where one can 
get away with rare and expensive components, when starting from scratch, 
I am inclined to use parts that are cheap and readily available. 
Programmable logic, microcontrollers, ADCs and DACs are both of these. 
If a specific DAC goes out of production, odds are I'll be able to find 
another, possibly without even having to re-work the board design, maybe 
without even having to do any software changes.

The same can't be said for VCA parts, for example.  Whilst I am happy to 
use esoteric odds and sods for my personal stuff, anything I were to 
sell to someone else, I would want to use commodity parts, available 
from all good distributors. (All the more so, as I am planning to 
release finalised designs as Open Hardware.)

>...think of it as an all-purpose board of which 'VCA' is just the 
 > simplest application.

That's pretty much how I see it. For starters, I'll probably have more 
than just the two input channels, right from the word go. As with my 
ADSR/LFO, I am trying to get a hardware design that does x, from the 
word go but, by adding to the firmware, can add y, z, and anything else
that looks useful/interesting/fun.

Olivier has suggested being able to simulate the CV responses of 
different breeds of analogue VCA. My current thinking is that this would 
just involve a second multiplication, based on per-level values found in 
a look-up table. (I'd probably start with an LUT based on highest "on" 
bit of the CV, rather than having a 4096-bit LUT for each curve 
simulated.) This would probably go in from Day 1.

Internal sine wave oscillator? Yes and no :-) Whilst I'm starting this 
off as a separate module from my ADSR/LFO:

1) The two could be integrated. Ultimately, I'd like to do this, having 
both discrete and integrated modules. From a design point of view, I 
think I'll find it much easier doing one at a time!

2) Rather than just creating a VCA, it should probably be a DCA as well, 
accepting input signals (probably via SPI, as it is so fast and simple 
to implement,) directly from the ADSR/VCO - or any other module, for 
that matter. The latter would just mean establishing a simple protocol, 
which I would probably do by making the DCA behave like a regular SPI DAC.

Neil:
>What is the reference voltage into your ADC?  If it is an internal one 
>it might well be rather less than 5V.  You need to scale appropriately.

Whatever I want it to be! Well, at least within the limits of what I 
consider to be appropriate parts. As I'm standardising on SPI-equipped 
devices for both programmable logic and microcontroller-based stuff, I'm 
not restricted to using, say, the ADC bundled in a microcontroller. I 
get to choose the best part for the job, where "best" is tempered by 
"not too expensive."

Clipping:
 > I would set the limit a bit lower, otherwise you only get indication
 > when you actually do clip, rather than some early warming.  Perhaps at
 > -3dBFS?
I'll implement a basic VU meter on each input channel. The LED channels 
would come off selected bits of the digitised signal. Chosen bits can be 
changed easily. Each LED output pin will be connected to an instance of 
a one-shot, the on-time of which would be set globally. (Thanks, Neil.)

Dave - I *will* be driving the ADSR/VCO straight into the Dixon VCA, in 
the first instance. This will help me determine the characteristics that 
I want to transfer to the firmware of my (D)VCA, and also give me a 
reference to which I can compare. ("What would a REAL one do?")

Having gone through the laborious process of creating the FPGA part in 
Eagle, my next step in the hardware design is to choose my ADCs. I 
initially thought of having separate ADCs for control and signal - the 
one being unipolar, the other bipolar. But that's just too complicated 
and, to achieve things like the ring modulator that Tom suggests, it's 
probably best to treat all inputs as signal, rather than CV.

Thanks again for the input so far - lots to think about!

Cheers

M

-- 
Matthew Smith

Business: http://www.smiffytech.com
Blog:     http://www.smiffysplace.com
Linkedin: http://www.linkedin.com/in/smiffy
Flickr:   http://www.flickr.com/photos/msmiffy
Twitter:  http://twitter.com/smiffy



More information about the Synth-diy mailing list