Thoughts on Software Generated Envelopes

J.D. McEachin jdm at synthcom.com
Fri Jul 19 18:52:41 CEST 1996


On Fri, 19 Jul 1996, Matthias wrote:

> A 68000 is also cheap and you can install a .1msec loop and divide the MIDI
> work over several loops. Defining the envelops in 8bits is fine enough, but
> I suggest a finer filtering down to every second sample. A simple 1 stage
> recursive filter that "interpolates" so you end up with 12bit final volume
> information.

I generally use US$5 as a threshold cost that has to be crossed before 
switching from logic to CPU, though sometimes added features can 
influence this. 

> Interesting idea, but probably more complicated, certainly less flexible
> and maybe even more expensive than a quicker processor.

No more complicated, certainly less flexible, but doubtfully more 
expensive than a quicker processor.  Also, simple logic stuff tends to 
take less engineering time in hardware than software (I don't think 
polyphonic voice assignment qualifies as simple logic, Juergen %-).


On Fri, 19 Jul 1996, Don Tillman wrote:

> This sounds mighty kludgey.  

I'm glad you think so - this means it's probably worth a try! ;-}


> Is the response time to an interrupt really that slow on these CPUs? 
> Exactly how many microseconds are we talking about?

Just a few, but there's usually some overhead associated w/ task 
switching.  Also, to calculate one envelope step will probably require as 
much setup time as calculating 256 envelope steps, so you can squeeze a 
little more efficiency out of the CPU by doing it all at once...

After giving it some more thought, I'm going to first try doing SGE's 
with a dedicated CPU, doing some A/B testing w/ my MiniMoog (those are 
the best envelopes I know of) to establish the resolution requirements 
(and work out the best algorithm).  Then, I can measure how much CPU time 
it's requiring and decide to go w/ more CPU or more hardware.


> [Aside: The Xerox Alto computer in the 70's, you know it as the main
> influence behind the Macintosh, had this incredibly clever feature,
> well it had a lot of incredibly clever features, but this one
> particular feature was called Microtasking.  The CPU had extra
> hardware to allow a zero-overhead task switch at the microcode level.
> For instance, if you were in your 2nd microcycle of implementing a
> branch-if-less-than instruction and an interrupt came by, the very
> next microcycle and a bunch after it would service that interrupt, and
> than the next microcycle after that would be the 3rd microcycle of
> your branch instruction.  The reason for this was that cheap
> video/disk/network controller chips didn't exist then, and this way
> all the controller circuitry for these devices could be implemented in
> microcode and be arbitrarily intelligent.  The Symbolics 3600 series
> Lisp Machine (1982-1988) stole this feature.  Very cool.
> Unfortunately nowadays there's no need for such heroic measures as 
> controller chips provide all you need for pennies.  But in a situation
> like this it would be really nice.]

Cool story.


> But it got me thinking...
> 
> How about a semi-software generated envelope?  Specifically, the
> envelope generator would consist of a DAC driving an integrator, and a
> second DAC (along with the output of the integrator) driving a
> comparator which, when goosed, flags an interrupt.  The microprocessor
> would send out a command to the two DACs: ramp at rate R and
> interrupt me when you hit voltage V, then I'll give you the next step
> of the envelope.  Other bits could determine the shape of the ramp.

Very cool idea.

Thanks for the input.  

JDM




More information about the Synth-diy mailing list