Thoughts on Software Generated Envelopes

J.D. McEachin jdm at synthcom.com
Thu Jul 18 18:36:50 CEST 1996


DIYers:

I'm pretty obsessed w/ envelopes.  I started out on a DX7, which has something 
like 7 envelopes per voice (6 for oscillator levels and 1 for pitch).  I 
quickly learned that envelopes are the key to complex, evolving sounds.  When I 
started playing around w/ analogue synths, I couldn't believe they only had 1 
or 2 envelopes!  Ever since I've wanted an analogue synth w/ 6-10 envelopes.

I've got a few ideas cooking for future Synthcom products, and most of them 
will require lots of envelopes.  Given the cost to implement many accurate 
multi-stage looping envelopes in hardware, I have been giving some thought to 
building a better software generated envelope (SGE).

As Juergen has pointed out in the past, the primary problem w/ SGE's is the
main loop time of the processor.  Given the constraints of processing MIDI
data w/ an inexpensive embedded CPU, your typical loop time is usually around
1 msec.  If your CPU is feeding a DAC w/ 8bit values to generate the envelope 
once per loop, this doesn't give you alot of resolution with a fast attack.  

You could use a timer interrupt to tell the CPU to feed the DAC the next SGE
value, but this usually has some overhead associated w/ it that will slow the
CPU down considerably.

My approach to situations like this where you're using too much CPU time
has always been - hardware assist!  My solution is as follows: stick a
small SRAM between the CPU and the SGE DAC.  The CPU can move a lot of SGE
data into the SRAM at once, and then go away.  The DAC would read data out
of the SRAM using a counter.  Multiplexing everything to provide multiple
envelopes would be easy.  The CPU could generate values for linear, log,
or inverse-log envelope shapes. 

For added fun you could add a state machine to do looping to provide 
LFOs.  If you're like Gene and Juergen (totally anti-CPU ;-), you could 
build it to read everything out of an EPROM, w/ different rates for each 
envelope/LFO.

What I would like to know is, what resolution is necessary to satisfy the ear?  
There are two resolutions to contend w/ - time and amplitude.  I'm wondering, 
can someone hear the difference between a 0.1 msec attack and a .3 msec attack? 
Can someone hear the difference between a 1.0 msec linear attack and a 1.0 msec 
log attack?  Has anyone read any scientific studies on this?

I suppose I'm going to have to do some experimenting w/ this...

Comments, anyone?

JDM
Synthcom Systems, Inc.
http://www.synthcom.com/




More information about the Synth-diy mailing list