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