Yahoo Groups archive

Wiardgroup

Index last updated: 2026-04-28 23:41 UTC

Message

Status of the Envelooper MARF

2007-01-13 by Grant Richter

After years of design and months of work I have a kind of working prototype of the 
Envelooper MARF. It works, but not perfectly yet. I am still getting the bugs out. This is 
targeted to the Frac-Rac format.

MARF stands for "Multiple Arbitrary Function Generator". One of the shortcomings of 
modular synthesis is the lack of complex controllers for modules. To generate a complex 
control function now, you have to sum together multiple envelopes and LFOs. The 
Envelooper allows you to draw complex control functions visually, with enough points to 
reproduce the effect of summing multiple envelopes and LFOs. It also stores pitches like a 
sequencer, and you can draw an envelope in channel 4 for each pitch.

The Envelooper is designed to support true "gestural" synthesis where a single key press 
or button push can produce control signals for a complete musical gesture. Multiple 
gestures are stored in different Banks and can be selected by voltage control. Using a 
black and white keyboard, you can select and trigger gestures with just the keyboard. The 
Envelooper also has a "Loop" switch that sets it to free running loop without needing a 
gate or trigger.

The Envelooper is modeled after an ADSR envelope generator. For the Envelooper, each 
segment of the A, D, S and R is four 256 byte pages stored in a PROM, for a total of 1024 
bytes for each envelope. Four 8 bit outputs are produced simultaneously with a channel to 
channel skew of an inaudible 1 microsecond.

Each ADSR segment has an independent "playback" time control from 1 millisecond to 20 
seconds. The shortest total envelope time is 4 milliseconds and the longest is 80 seconds. 
The ouputs are calibrated like the Mini-Wave to 1 volt per octave. Two steps = 83.3 
millivolts = a semitone. So the table programmer in Wave 256 can be used to program 
pitch information using actual note names.

The Wave256 software used to program the Waveform City and Mini-Wave is also used to 
program the Envelooper. The waveforms in a "Wave" are set up like this for the 
enveloopers four outputs; A1, A2, A3, A4, D1, D2, D3, D4, S1, S2, S3, S4, R1, R2, R3, R4. 
The programming rules are as follows; A(ttack) pages start at -128 and end at +128, D
(ecay) pages start at +128 and end at 0, S(ustain) pages start and end at zero, Release 
pages start at 0 and end at -128. Following these programing rules produce envelopes 
with no audible "splice" when the device switches from one segment to another.

The four outputs are mapped two different ways for East Coast and West Coast patches. 
For East Coast use, output 1 controls the pitch of the VCO, output 2 controls the 
waveform, output 3 controls the VCF (Boogie) and output 4 controls the VCA (Borg 2). For 
West Coast use, output 1 controls the pitch of the VCO, output 2 controls the waveform X, 
output 3 controls the waveform Y  and output 4 controls the lowpass gate.

8 bits has a fair amount of zipper noise, for pitches we want this quantization, but it is a 
problem for VCAs and other inputs. One of the little known things about Vactrols is that 
they remove zipper noise. So running an 8 bit signal through a Vactrol smooths out the 
steps into continuous function. The VCO will have Vactrols or the equivalent on the 
waveform X and Y inputs to remove zipper noise. The Borg and Boogie filters are based on 
Vactrols and already remove zipper noise.

I just wanted to post a little note to let everyone know that Wiard R&D will continue to 
produce ground breaking designs not available anywhere else. For those REALLY 
interested I have posted the test PROM file in the files section called adsr4.256 Use the 
Wave256 software to view the segment designs. Please note this is just an experimental 
file to test ideas, NOT the final file which will ship with the module.

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.