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