Go Down

Topic: Adding Envelope to an Output? (Read 4268 times) previous topic - next topic


Quote from: Magician on September 20, 2011, 02:01:39 PM
Edited: Just realized, probably it would sound awful  with 8 original bits scaled down to even less... But idea would still be practical with 16 bit or 24 bit R2R. Only less outputs 'd be available

Yup, that's the whole problem. That's why I want to do something in analog-domain. ;-)

The problem only I can see, is not that design isn't possible in digital domain, but only less outputs would be available in digital domain solution, than if we use PWM filtered to analog -> to VCA, just because PWM use single pin. So basically problem narrowed down to shortage of digital pins, ( for 8 voices x 8-bit envelope for each, would require 16 x 8 = 128 outputs ).
It could be easily solved with shift register extender.
Analog multiplier (1 transistor VCA) posted above create more distortion than  4 bit sound, and should not be considered seriously. More sophisticated VCA require more components, and higher price IC for all design.

What I'm saying, that shift registers + R2R 16-bit (homemade DAC) would win for 
quality to simplicity/price ratio.

If we set amplitude resolution to less than 256 levels, R2R could be simplified to 14 (64 levels) or 12 (16 levels ).

WilliamK Govinda

But all that would take too many cycles and sample-rate would lower too much. To be honest, I could just add Envelope at 8-bits, but it would require multiplication or division and it slows the whole thing down to a point that I get like 1 voice.

Now, imagine the current Beat707 SY LE, which does 8 voices, now, combine that with 4 PWM outputs, there's no extra cycles added, and the Envelope math is very simple and is not per-sample calculated, so it would still fit on the code. Doing the VCA outside in analog domain would make all this work like a charm. Its only 4 voices, but still, 4 dual OSC voices, not bad for a single ATmega328. ;-)

Another path would go nuts and use another chip for processing audio, like my XMOS Shield idea, but that's another talk, check the other thread. ;-)



Than just add digital pot, single chip: AD5204 / AD5206

WilliamK Govinda

Ah, I forgot about those, I did check some last time but they are a bit expensive, but them again, its a single chip solution, so I will check this out again, thanks.  :smiley-red:


WilliamK Govinda

How about this one?


I like that it has 4-channels for twice the price of a single channel chip.



what about tweaking the MCP4921 dual channel Dacs?

Those DAC have a dedicated Reference input for D to A conversion Vrefx. Acccording to the datasheet:

VREFA and VREFB are DAC voltage reference inputs.
The analog signal on these pins is utilized to set the ref-
erence voltage on the string DAC. The input signal can
range from AVSS to VDD.

Avss being the Analog ground, I guess you can modulate this voltage from Gnd to Vdd with the Arduino PWM to get a VCA. Output amplifier short circuit current is 17mA, so i'm sure yan can deal with it by lowpass filtering the PWout. You may need to charcterize the transfer function of such a wiring mean, but it shall do its job in the meantime, dual VCO + Dual VCA in a single chip.

There is a multiplier mode detailed in the Datasheet if this does not work as well...
Blog, DIY Electronics & Stuff - http://www.banson.fr


Alternatively, if you were planning on using PWM and filter over a DAC chip, you could use the Vref on an op-amp, again driven by filtered PWM.



Thread resurection !

I tested yesterday the simple solution of using the MCP4921 Vref input as a voltage control for my new synth project.

I basically connected a pot to the Vref, and made the voltage swing from 0 to 5V while DAC output was set full range saw wave (4096).

==> Volume control is smooth and very efficient. It's working pretty well. The only drawback is that it gets a little noisy at low Vref amplitudes (<500mV) but this was easily handled by appropriate filtering of the Vref signal (i.e. opamp buffering + 10nf cap at the input of the DAC).

I recommend this generally speaking, it's working well for a simple VCA design.
Blog, DIY Electronics & Stuff - http://www.banson.fr


Check out coolaudio.com, they make a quad VCA chip.

If the minimum buys are too much, google the part number & find a distributor, for example

"The V2181 is a state-of-the-art voltage-controlled amplifier (VCA) offering high-performance current-in/current-out technology including two opposing-polarity, voltage-sensitive control ports. The V2181 VCA combines many advantages such as ultra-low noise, ultra-low distortion, low offset and high gain-bandwidth. It requires few external support circuitry and is housed in a space-efficient 8-pin single-in-line (SIP) package."

"The V2162 is a new dual VCA and contains two high-performance voltage-controlled amplifiers. With two opposing-polarity, voltage-sensitive control ports, they offer wide-range exponential control of gain and high attenuation with low signal distortion. Both high-performance VCA's are factory-trimmed to deliver low distortion as well as control-voltage feed-through without further adjustment. The unit represents a highly compact and cost-effective solution."

"The V2164 contains four independent voltage controlled amplifiers (VCAs) in a single package. High performance (100 dB dynamic range, 0.02% THD) is provided at a very low-cost-per-VCA, resulting in excellent value for cost sensitive gain control applications. Each VCA offers current input and output for maximum design flexibility, and a ground referenced -33 mV/dB control port. The V2164 is available for many applications such as Automatic Volume Controls, Audio Mixers, Compressor / Limiters / Compandors, Noise Reduction Systems, Automatic Gain Controls, Voltage Controlled Filters, and Effects Processors."
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.


Thanks for the link. I feel like trying one of those chips some day. They also seem to have a alternative to 13700 chips I already use today.

Blog, DIY Electronics & Stuff - http://www.banson.fr

Go Up