Thoughts on Software Generated Envelopes

gstopp at fibermux.com gstopp at fibermux.com
Fri Jul 19 19:22:59 CEST 1996


     JDM wrote:
     
     >
     >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...
     >
     
     That's a really, really good question - just how discerning is our 
     perception of sound transients in the hundred-microsecond range?
     
     I get the feeling that we have different perceptions for different 
     kinds of audio events - for example, if a snare hit is 5 milliseconds 
     late, it may not change the feel of a groove, but if it's 15 
     milliseconds late, the groove starts to sound "laid back". (Notice the 
     lack of precision here.)
     
     But - if a gunshot sample has it's (let's say linear) attack curve 
     edited from a value of 100 microseconds to a value of 999 
     microseconds, will it sound more muffled, or more distant, or 
     something like that? Seems to me that human hearing is fine-tuned in 
     the microsecond range for transients, because that's how we 
     directionally locate sounds due to speed-of-sound stereo arrival times 
     at our ears. Things like twigs crunching underfoot as one walks 
     through the woods are *very* directional, so the resolution must be 
     pretty fine. Let's see - if the speed of sound is around 1000 ft./sec, 
     then sound travels one foot in a millisecond, and our ears are about 
     eight inches apart.....
     
     Not only that, but did you ever do an edit on a speech waveform in a 
     sampler? Like use a mouse and grab a section of waveform and mess with 
     it, and listen to the result? It's pretty amazing sometimes how 
     tweaking one point of a waveform can change a spoken word from "hello 
     there" to "fellow there" or something like that.
     
     Like you say, much experimentation is in order. (Someday I'll finish 
     unpacking and get my music room set up again...)
     
     - Gene
     gstopp at fibermux.com


______________________________ Reply Separator _________________________________
Subject: Thoughts on Software Generated Envelopes
Author:  "J.D. McEachin" <jdm at synthcom.com> at ccrelayout
Date:    7/18/96 5:52 PM


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