BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

README-prerelease.md (127716B)


      1 # BogaudioModules
      2 
      3 ![build badge](https://img.shields.io/github/actions/workflow/status/bogaudio/BogaudioModules/buildDevelop.yml?label=build) ![version badge](https://img.shields.io/github/v/release/bogaudio/BogaudioModules)
      4 
      5 Modules for [VCV Rack](https://github.com/VCVRack/Rack), an open-source Eurorack-style virtual modular synthesizer:
      6 
      7   - [Oscillators](#oscillators)
      8   - [LFOs](#lfos)
      9   - [Filters](#filters)
     10   - [Envelopes and Envelope Utilities](#envelopes)
     11   - [Mixers, Panners and VCAs](#mixers)
     12   - [VCAs and Dynamics](#dynamics)
     13   - [Noise/Random, Sample and Hold](#random)
     14   - [Sequential Switches and Sequencers](#sequencers)
     15   - [Visualizers](#visualizers)
     16   - [Polyphony Utilities](#poly)
     17   - [Pitch CV Utilities](#pitch)
     18   - [Other Utilities](#utilities)
     19   - [Miscellaneous](#misc)
     20 
     21 Most Bogaudio modules support VCV Rack's polyphony feature; see <a href="#polyphony">Note on Polyphony</a>.
     22 
     23 Some modules have expanders; see <a href="#expanders">Note on Expanders</a>.
     24 
     25 Many modules support bypassing in a non-default way; see <a href="#bypassing">Note on Bypassing</a>.
     26 
     27 ![modules screenshot 1](./doc/www/modules1.png)
     28 
     29 ![modules screenshot 2](./doc/www/modules2.png)
     30 
     31 ![modules screenshot 3](./doc/www/modules3.png)
     32 
     33 ![modules screenshot 4](./doc/www/modules4.png)
     34 
     35 ![modules screenshot 5](./doc/www/modules5.png)
     36 
     37 The modules have two <a href="#alternate_panels">alternate panel designs</a>, "Dark":
     38 
     39 ![Dark alternate panels screenshot](./doc/www/skin-dark.png)
     40 
     41 And "Dark (low-contrast)":
     42 
     43 ![Dark (low-contrast) modules screenshot](./doc/www/skin-lowcontrast.png)
     44 
     45 
     46 ## Builds/Releases
     47 
     48 Mac, Linux and Windows builds of the latest version are available through the [VCV Rack Library](https://library.vcvrack.com).  Find release notes on the [releases page](https://github.com/bogaudio/BogaudioModules/releases).
     49 
     50 
     51 ## Building
     52 
     53 You'll need to be set up to build [VCV Rack](https://github.com/VCVRack/Rack) itself.  Under the Rack build directory, switch to `plugins/`, and then:
     54 
     55   ```
     56   git clone https://github.com/bogaudio/BogaudioModules.git
     57   cd BogaudioModules
     58   make
     59   ```
     60 
     61 The master branch of this module currently builds against Rack 2.0.x.
     62 
     63 
     64 ## Modules
     65 
     66 ### <a name="oscillators"></a> Oscillators
     67 
     68 ![Oscillators screenshot 1](doc/www/oscillators1.png)
     69 
     70 #### <a name="vco"></a> VCO
     71 
     72 A standard VCO featuring:
     73   - Simultaneous square, saw, triangle and sine wave outputs.
     74   - Traditional exponential and linear through-zero FM.
     75   - Pulse width modulation of the square wave.
     76   - Hard sync.
     77   - Slow (LFO) mode.
     78   - Antialiasing by a CPU-efficient combination of band limiting and oversampling.
     79 
     80 The main frequency knob is calibrated in volts, from -4 to +6, corresponding to notes from C0 to C6.  The default "0V" position corresponds to C4 (261.63HZ).  Any pitch CV input at the V/OCT port is added to the knob value to determine the oscillator frequency.  With CV input, the pitch can be driven as high as 95% of the Nyquist frequency (so, over 20KHZ at Rack's default sample rate).  The FINE knob allows an additional adjustment of up to +/-1 semitone (100 cents, 1/12 volt).  In slow mode, the output frequency is 7 octaves lower than in normal mode with the same knob/CV values.
     81 
     82 In linear mode, the frequency 1000HZ times the pitch voltage (as determined by the knob plus V/OCT CV) -- at 0V, the frequency is zero, and the oscillator stops.  In slow mode, it tracks at 1HZ times the pitch voltage.  Negative voltages will realize the same output frequency as the corresponding positive voltage (the oscillator runs backwards).  Use with with an FM input to create strange waveforms.
     83 
     84 The context menu option "DC offset correction", on by default, removes DC offset from the outputs.  Presently, this only affects the square output when the pulse width is set to anything besides 50%.  When this is enabled, and viewing the output on a scope, the waveform will move up and down relative to 0V as the pulse width is changed -- this is the DC offset removal in action.  When disabled, the waveform stays centered on 0V, which is useful if using the output as CV.
     85 
     86 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/OCT input.  The poly port can be changed to the FM input on the context menu.
     87 
     88 _When <a href="#bypassing">bypassed</a>:_ no output.
     89 
     90 #### <a name="lvco"></a> LVCO
     91 
     92 A 3HP subset of VCO, designed as a compact general-purpose oscillator.  The waveform is selectable between sine, triangle, saw, square and 25% and 10% duty-cycle pulses.  FM and linear modes are selectable on the context menu.
     93 
     94 Context menu option "Reset phase on wave change", if enabled, causes the waveform phase to be set to zero when the waveform is changed.  By default the continues to advance from wherever it was.
     95 
     96 _Polyphony:_ Same as VCO.
     97 
     98 _When <a href="#bypassing">bypassed</a>:_ no output.
     99 
    100 #### <a name="sine"></a> SINE
    101 
    102 A 3HP subset of VCO, designed in particular for use making synth drums.  The waveform defaults to sine but is selectable on the context menu, with the same options as LVCO, with the addition of a ramp (inverse saw) wave.
    103 
    104 Additionally, there is a phase control with CV borrowed from XCO (if CV is used, the input is attenuverted by the PHASE knob).  This sets the initial position of the wave when the module is synced (if you're not using sync, changing the phase won't meaningfully alter the output).  This can be used to alter the harmonic content of sync sounds, and for transient shaping for drum synthesis.
    105 
    106 _Polyphony:_ Same as VCO.
    107 
    108 _When <a href="#bypassing">bypassed</a>:_ no output.
    109 
    110 #### <a name="pulse"></a> PULSE
    111 
    112 A 3HP subset of VCO, oriented toward pulse-width modulation.  The only output waveform is square/pulse, and there is no FM.  However, the PWM CV input has a dedicated attenuverter, and unlike VCO, the result CV value is summed with the PW knob position.
    113 
    114 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/OCT input.
    115 
    116 _When <a href="#bypassing">bypassed</a>:_ no output.
    117 
    118 #### <a name="xco"></a> XCO
    119 
    120 Includes all the features of VCO, adding:
    121   - An onboard wave mixer with output at the MIX port.
    122   - For each wave type:
    123     - A wave modifier (pulse width for square; saturation for saw; a sample-and-hold/step-function effect for triangle; FM feedback for sine).
    124     - A phase knob/CV controlling the phase of the wave in the mix.
    125     - A mix knob/CV to control the level of the wave in the mix (waves are output at full level at their individual outputs).  The mix knob/CV responses are linear in amplitude.
    126   - A CV input for FM depth.
    127 
    128 The context menu option "DC offset correction" works as documented on <a href="#vco">VCO</a>.
    129 
    130 The context menu option "Mix output processing" sets how the mix output is scaled or clipped.  VCV Rack modules generally [should not output signals exceeding +/-12 volts](https://vcvrack.com/manual/VoltageStandards#Output-Saturation), and oscillators typically output +/-5 volts.  However, XCO's mix output combines four oscillators, and can easily exceed these values.  "Mix output processing" sets how to deal with this:
    131   - "Scaled to +/-5V" (default): the output is directly scaled down to +/-5V (like a regular oscillator) when it would otherwise exceed that range (it will not scale up; it is possible to reduce the output below this range with the MIX controls).  The scaling is updated once per oscillator cycle, and abrupt parameter changes can confuse it; in this case hard clipping takes over.
    132   - "Saturated": a saturator (soft clipper) keeps the output within +/-12V.
    133   - "Hard clipped": the output is simply clipped at +/-12V.
    134   - "None": no scaling or limiting is applied to the output, ignoring the voltage standards.  This was how XCO always behaved prior to version 2.*.41.  Older patches should restore this mode if affected by the addition of these options.
    135 
    136 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/OCT input.
    137 
    138 _When <a href="#bypassing">bypassed</a>:_ no output.
    139 
    140 #### <a name="additator"></a> ADDITATOR
    141 
    142 ![Oscillators screenshot 2](doc/www/oscillators2.png)
    143 
    144 An additive oscillator, where the output is the sum of up to 100 individual sine/cosine waves (partials).  Various parameter knobs/CVs allow control over the number, frequencies and amplitudes of the partials:
    145   - PARTIALS: sets the partial count.
    146   - WIDTH: sets the spacing of partials in frequency; at the default position each successive partial is pitched an octave higher than the one before.
    147   - O-SKEW: adjusts the spacing of odd-numbered partials up or down relative to WIDTH.
    148   - E-SKEW: adjusts the spacing of even-numbered partials up or down relative to WIDTH.
    149   - GAIN: Sets the level of the output by adjusting an internal amplitude normalization parameter.
    150   - DECAY: applies a positive or negative tilt to the amplitude decay of the partials; at the default position, amplitudes decrease proportionally with increasing frequency.
    151   - BALANCE: cuts the amplitudes of the odd or even partials.
    152   - FILTER: manipulates the partial amplitudes to simulate low or high-pass filter effects.
    153 
    154 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/OCT input.
    155 
    156 _When <a href="#bypassing">bypassed</a>:_ no output.
    157 
    158 #### <a name="fmop"></a> FM-OP
    159 
    160 A sine-wave oscillator and simple synth voice designed to allow patching up the classic FM algorithms (using multiple instances).  Features:
    161   - Linear through-zero FM response.
    162   - CV-controllable FM depth.
    163   - CV-controllable FM self-feedback.
    164   - CV-controllable output level.  The LEVEL knob and CV have a linear-in-decibels (exponential in amplitude) response; a context-menu setting makes this linear in amplitude.
    165   - An on-board ADSR, controlled by the GATE input, with selectable routing to output level, feedback and depth, with CV control over the sustain level.
    166   - A main frequency knob calibrated for setting the frequency as a ratio of the frequency dictated by the V/OCT input - assuming a single V/OCT CV is routed to multiple FM-OPs, this allows the relative frequency of each operator to be set via ratios.
    167 
    168 Anti-aliasing techniques are applied when feedback or external FM are in use.  Either condition for anti-aliasing can be disabled on the context menu.  Prior to version 1.1.36, due to a long-standing bug, there was no anti-aliasing for external FM, unless feedback was also on.  To get that behavior back, **the true vintage FM-OP sound**, disable "Anti-alias external FM" on the menu.
    169 
    170 As of version 2.6.46, menu option "Oscillator mode" sets the quality of the oscillator's output sine wave:
    171   - Option "Classic", the default, is the classic FM-OP sound. The sine is produced from a wavetable, without interpolation. This adds small extra harmonics to the output.
    172   - Option "Clean" enables interpolation, yielding a nearly-pure sine wave.
    173 
    174 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/OCT input.
    175 
    176 _When <a href="#bypassing">bypassed</a>:_ no output.
    177 
    178 #### <a name="chirp"></a> CHIRP
    179 
    180 Part VCO and part sound effect, CHIRP produces swept sine waves.  On each cycle, the output sine wave sweeps in frequency from FREQ1 to FREQ2, over the course of TIME.  If LOOP is enabled, the cycle repeats, otherwise it may be triggered manually with the TRIGGER button, or by CV at the TRIG input.  A pulse is emitted at output EOC each time a cycle ends.
    181 
    182 TIME takes a unipolar CV (0-10V), which is attenuated by the knob if in use.  FREQ1 and FREQ2 take bipolar (+/-5V) 1V/octave inputs at ports V/O1 and V/O2, which CVs are added to the corresponding knobs.
    183 
    184 The frequency sweep can be linear in time, or exponential, under the control of the EXP toggle.
    185 
    186 The sweep is upwards in frequency if FREQ1 is less than FREQ2, and downwards otherwise.
    187 
    188 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/O1 input.
    189 
    190 _When <a href="#bypassing">bypassed</a>:_ no output.
    191 
    192 
    193 ### <a name="lfos"></a> LFOs
    194 
    195 ![LFOs screenshot](doc/www/lfos.png)
    196 
    197 #### <a name="lfo"></a> LFO
    198 
    199 A standard LFO featuring:
    200   - Simultaneous ramp-down, ramp-up (saw), triangle, stepped random, square and sine wave outputs.
    201   - Knob and CV control of the pulse width of the square wave.
    202   - A CV-controllable "sample" modifier, which turns the output into a step function.
    203   - Onboard CV-controllable offset and scale of the output voltages.
    204   - CV-controllable output smoothing (the CV input is shared with offset, see below).
    205   - Reset (hard sync) input.
    206   - Slow mode.
    207 
    208 LFO tracks pitch CVs at the V/OCT input seven octaves lower than a normal oscillator: with a 0V input, the output frequency is note C-3 (2.04HZ).  The frequency knob is calibrated in linear volts (the small ticks), and its value is added to the input V/OCT.  With no input, the frequency range is from approximately 0.1 to 400HZ; with CV the frequency may be driven up to 2000HZ or down to arbitrarily low values.  In slow mode, the output frequency tracks the controls four octaves lower than otherwise (11 octaves below a normal oscillator).  Output is `(lfo * scale / 100) + offset`.
    209 
    210 The stepped random output selects a new random value in the range +/-5V once each cycle, each time the oscillator phase crosses 0.  Triggering RESET will select a new value.
    211 
    212 The sampling feature is not used with the square and stepped outputs, but applies to the others.
    213 
    214 By default OFFSET varies from -5 to +5V.  The "Offset range" context-menu item allows this range to be set to +/-10V.  Note that the output is clipped to +/-12V.  SCALE is applied to the output before the offset is added.
    215 
    216 Output smoothing is applied to the signal last, after offset and scale.  Smoothing is implemented with a slew limiter (see <a href="#slew">SLEW</a>), where the rise/fall times are a function of both the LFO rate and the smoothing amount.  The effect of smoothing varies radically with the amount, the wave selected, and with use of sampling and pulse width.  Some examples:
    217   - Smoothing will turn the stepped random "wave" into a random walk (similar to, but distinct from, the output of <a href="#walk">WALK</a>).
    218   - The triangle output is unaffected by smoothing even at its maximum (unless sampling is turned up).
    219   - Square waves can be rounded off to shark-fins.
    220   - Asymmetric waves (saw, ramp, pulse) will seem to get a positive or negative offset with increased smoothing (which can be countered with the offset setting); sampling reduces this effect with saw and ramp.
    221 
    222 To save space, offset and smoothing share a CV input port.  By default this will route CV to offset.  A context-menu option allows the CV to be routed to smoothing instead.
    223 
    224 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/OCT input.
    225 
    226 _When <a href="#bypassing">bypassed</a>:_ no output.
    227 
    228 #### <a name="llfo"></a> LLFO
    229 
    230 A 3HP LFO, with selectable waveform.  The features are a subset of LFO.  There are separate square and pulse waveform options: square is fixed at a 50% duty cycle, while pulse defaults to 10% but may be adjusted with the "Pulse width" option on the context menu.
    231 
    232 Sampling and smoothing functions are available on the context menu.
    233 
    234 Context menu option "Reset phase on wave change", if enabled, causes the waveform phase to be set to zero when the waveform is changed.  By default the continues to advance from wherever it was.  In either case, the output will typically jump to a new value, which may cause clicks or other undesirable effects depending on how the output is used; adding a bit of smoothing may help.
    235 
    236 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/OCT input.
    237 
    238 _When <a href="#bypassing">bypassed</a>:_ no output.
    239 
    240 #### <a name="fourfo"></a> 4FO
    241 
    242 A quadrature LFO, with outputs at 4 different phases.  The phases may be set by knobs and CVs (marked PHS); by default they are 0, 90, 180 and 270 degrees from the fundamental.  Otherwise, functionality is the same as with LFO, except that:
    243   - The wave shape is selectable, and all four outputs are of the same (phase-shifted) wave.
    244   - The sampling and pulse width knobs and CVs are combined, with their function depending on the selected wave.
    245 
    246 Note that with the stepped random output, each output will update its output when its phase crosses 0 degrees.  Each draws from the same random sequence, rather than separate ones -- the outputs only vary in phase.
    247 
    248 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/OCT input.
    249 
    250 _When <a href="#bypassing">bypassed</a>:_ no output.
    251 
    252 #### <a name="eightfo"></a> 8FO
    253 
    254 An "octature" LFO, like 4FO, but with outputs at 8 phases.  By default the phases are 0, 45, 90, etc, degrees from the fundamental.
    255 
    256 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the V/OCT input.
    257 
    258 _When <a href="#bypassing">bypassed</a>:_ no output.
    259 
    260 
    261 ### <a name="filters"></a> Filters
    262 
    263 ![Filters screenshot](doc/www/filters.png)
    264 
    265 #### <a name="vcf"></a> VCF
    266 
    267 A general-purpose filter with a selectable lowpass, highpass, bandpass or bandreject (notch) output.  Being based on pure DSP theory, rather than a model of an analog filter design, it has a transparent character (which to say, no "character" at all, or not much -- which character is often very nice).  However, it achieves interesting features such as:
    268   - A slope (or transition rate at the cutoff) that can be smoothly modulated from very shallow (1 pole) to very sharp (12 poles).
    269   - Smoothly modulatable bandwidth in bandpass and bandreject modes.
    270   - Very accurate V/OCT tracking.
    271 
    272 The large knob sets the filter's base cutoff frequency (for lowpass and highpass modes) or center frequency (for bandpass and bandreject).  There are three CV inputs that affect the cutoff, in this order:
    273   - CV: a general, linear input expecting bipolar +/-5V signals. The input is attenuverted by the CV knob.
    274   - V/OCT: an input here is interpreted as a pitch CV; if connected, the input voltage is interpreted as a frequency and added to the cutoff.  Use this and set the main knob to 0HZ for accurate key tracking.
    275   - FM: an exponential FM input; the input here is attenuated by the FM knob.  It is implemented by converting the cutoff to a V/Octave pitch CV, adding the attenuated FM signal to that, and converting back to frequency.
    276 
    277 The RES/BW knob has two functions, depending on mode:
    278   - In lowpass and highpass modes, it controls the resonance of the filter at the cutoff frequency.  The filter does not self-resonate.
    279   - In bandpass and bandreject modes, it sets the bandwidth of the filter -- the width in HZ around the center frequency of the passband (bandpass mode) or stopband (bandreject mode).  Note that at the minimum setting, the bandwidth can be quite small, even inaudible, depending on the center frequency (see below).
    280 
    281 The R/BW CV input expects a unipolar 0-10V input; when in use this input is attenuated by the RES/BW knob.
    282 
    283 SLOPE modulates the rate of transition between the pass and stop bands in each filter mode.  (For example, in lowpass mode, a higher slope means a faster/sharper change, at the cutoff frequency, from frequency passing through the filter to being suppressed by the filter.)  This ranges from a slow (at 1) to fast (at 12) transition.  It may be modulated by the SLP CV input, which expects 0-10V, and which is attenuated by the SLOPE knob.
    284 
    285 The context menu option "Bandwidth mode" controls how the bandwidth is calculated for a given center frequency and RES/BW setting:
    286   - "Pitched" (the default): the upper and lower frequencies of the band are equally distant from the center frequency in pitch (octaves and semitones), with a maximum of 2 octaves.
    287   - "Linear": the upper and lower frequencies are equally distant in HZ from the center frequency, with a maximum of 2000HZ.
    288 
    289 Note: due to limitations in the filter's implementation, it has a couple workarounds in place to avoid problems:
    290   - The cutoff frequency uses a slew limiter (it has limit on how fast it can change), such that it takes approximately 100ms to move the cutoff from fully closed to fully open (or the opposite).
    291   - There is a fixed two-pole highpass filter on the filter output, at a cutoff of 80hz.
    292   - While the module's frequency knob goes to zero, the filter's cutoff won't actually go below 3hz.
    293 
    294 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    295 
    296 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
    297 
    298 #### <a name="lvcf"></a> LVCF
    299 
    300 A compact version of VCF.  The filter slope may be set on the context menu.
    301 
    302 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    303 
    304 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
    305 
    306 #### <a name="ffb"></a> FFB
    307 
    308 A fixed filter bank comprised of 12 bandpass filters, with low- and high-pass filters on each end.  The band frequencies are those used on the classic [Moog 914](https://modularsynthesis.com/moog/914/914.htm).
    309 
    310 Each knobs sets the attenuation of the output of its corresponding filter, down to -60db, before those outputs are mixed back together and sent to the outputs.
    311 
    312 The FREQ knob adjusts the center frequency of each band up to an octave in either direction.  It takes a bipolar (+/-5V) CV at FCV, which is attenuverted by the knob if in use.
    313 
    314 There are three outputs:
    315   - ALL: a mix of the outputs of all the filters.
    316   - ODD: a mix of the LP, HP, and odd-numbered band filters (125HZ, 250 HZ, etc).
    317   - EVEN: a mix of the LP, HP, and even-numbered band filters (175HZ, 350 HZ, etc).
    318 
    319 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    320 
    321 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to each of ALL, ODD and EVEN.
    322 
    323 #### <a name="eq"></a> EQ
    324 
    325 A basic low/mid/high three-band equalizer.  Each knob sets the gain of its corresponding filter from -36db, through unity (0db) to +12db.
    326 
    327 The cutoff/center frequencies of the three filters are:
    328   - LOW: 100Hz
    329   - MID: 350HZ
    330   - HIGH: 1000HZ
    331 
    332 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    333 
    334 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
    335 
    336 #### <a name="eqs"></a> EQS
    337 
    338 A stereo version of EQ.  The left and right inputs are processed by separate filters, but the filter parameters are set by the shared three knobs.
    339 
    340 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the L input.
    341 
    342 _When <a href="#bypassing">bypassed</a>:_ passes left and right inputs unmodified to the corresponding outputs.
    343 
    344 #### <a name="lpg"></a> LPG
    345 
    346 ![LPGs screenshot](doc/www/lpgs.png)
    347 
    348 LPG is a "low-pass gate", where an envelope generator, low-pass filter (LPF) and amplifier (VCA) are combined into a single sound-shaping unit.  It lends itself to percussive or plucked sounds, though longer notes are possible.
    349 
    350 LPG's envelope is a version of <a href="#vish">VISH</a>, with simplified controls.  On LPG, the single RESPONSE control (taking a unipolar 0-10V CV at RESP) sets the length and basic shape of the envelope (turning up RESPONSE is equivalent to turning up each of MIN GATE, RISE time and FALL time, proportionally, on VISH).  Enabling LONG rescales the knob for longer envelopes.  The RISE and FALL knobs set the shapes (curves) of the rising and falling envelope segments, as on VISH.  The envelope is triggered whenever LPG receives a rising edge at the TRIG input.
    351 
    352 The signal received at IN is processed by an LPF and VCA in series before being sent to OUT.  Each has a BIAS knob, which sets the base level of the cutoff of the LPF, and level of the VCA, when the envelope is off.  The ENV attenuverters control how the envelope affects the LPF and VCA respectively.  Each bias knob also has a CV input, marked LPF and VCA, expecting unipolar (0-10V) signals.
    353 
    354 If LINEAR is enabled, the VCA has a linear-in-amplitude response to its BIAS, CV and the envelope; otherwise it has a linear-in-decibels response.
    355 
    356 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the TRIG input.
    357 
    358 _When <a href="#bypassing">bypassed</a>:_ no output.
    359 
    360 #### <a name="llpg"></a> LLPG
    361 
    362 LLPG is a compact, simplified version of <a href="#LPG">LPG</a>, where:
    363   - There is only one shape knob, which affects both the rise and fall shapes simultaneously.
    364   - There are no ENV knobs; the envelope applies in full to both the filter and VCA.
    365   - There are no CV inputs, and no linear VCA mode.
    366 
    367 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the TRIG input.
    368 
    369 _When <a href="#bypassing">bypassed</a>:_ no output.
    370 
    371 #### <a name="megagate"></a> MEGAGATE
    372 
    373 MEGAGATE generalizes the idea of a low-pass gate, not least by adding a high-pass filter (HPF).  It is also stereo, optionally velocity-sensitive, and has full CV inputs over the filter and VCA biases and envelope routing.  
    374 
    375 The envelope circuit is the complete "vactrol-ish" envelope available independently as <a href="#vish">VISH</a> -- see VISH for a description of the envelope controls and CVs on left side of MEGAGATE, aside from VELO and TILT, which further process the envelope before it is sent on to control the filters and VCA.
    376 
    377 The VELO input provides control of the level of the envelope before it is processed by TILT.  It is designed to be used to implement velocity from a MIDI controller, but may be used as a general CV.  It expects a 0-10V input voltage: when this 0, the envelope gain is -6dB (it is cut in half); when VELO is 10V the output is unchanged (a 0dB gain). Intermediate values will set the output gain linearly to values between -6dB and 0dB.
    378 
    379 The velocity-zero gain of -6dB can be set to other values on the context menu, to make the velocity response stronger (-12dB, -24dB) or weaker (-3dB).  It can also be set to -60dB, such that a 0V velocity input will completely cut the output -- allowing the input to be used as a full-range, though inverted, CV.
    380 
    381 TILT is essentially a panner for envelope, turning it into left and right channel envelopes.  Turning the knob towards L will reduce the gain of the right channel envelope, or vice versa.  TILT accepts a bipolar (+/-5V) CV, which attenuated by the knob when in use.
    382 
    383 The left and right signal inputs are processed by the LPF, HPF and VCA sections before being sent to their corresponding outputs.  There are independents sets of filters and VCAs for the left and right channels, each set controlled by the same knobs and CVs, but receiving different envelopes as set by TILT.
    384 
    385 By default the LPF and HPF filters process the input (whether left or right) in parallel, and their outputs are mixed together to send to the VCA.  If FILTER SER is enabled, the filters are processed serially, with the LPF's output being fed to the HPF, and HPF to the VCA.
    386 
    387 Each of the LPF, HPF and VCA sections has a BIAS knob, which sets the base cutoff (for the filters) or level (for the VCA).  Each bias control accepts a bipolar (+/-5V) CV, and each CV has an attenuverter.  Each CV, subject to its attenuverter, is added to its knob's position.
    388 
    389 Each section also has an ENV setting, controlling how much of the envelope is applied to the final cutoff or level setting.  Again, each ENV accepts a bipolar CV, with attenuversion, and the CV is added to the knob.
    390 
    391 The final cutoff and level settings are determined by scaling (multiplying) the envelope by the ENV value (including CV), and adding that to the BIAS value (including CV).  In no case can the envelope and CVs drive a parameter outside of its knob range.
    392 
    393 If LIN VCA is enabled, the VCA has a linear-in-amplitude response to its BIAS, CV and the evelope; otherwise it has a linear-in-decibels response.
    394 
    395 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the GATE input.
    396 
    397 _When <a href="#bypassing">bypassed</a>:_ no output.
    398 
    399 ![Parameteric EQs screenshot 1](doc/www/parametric_eqs1.png)
    400 
    401 #### <a name="peq"></a> PEQ
    402 
    403 A three-channel parametric EQ, which is a filter bank where the band frequencies are controllable.  Each channel gets the input from IN and applies a bandpass filter with center frequency set by FREQ, where the filter's output is sent through a VCA controlled by LEVEL.  The outputs of each channel are mixed to OUT.
    404 
    405 The first channel may be configured as a lowpass filter, if the LP button is on.  The last channel can be highpass.  (And they are by default.)
    406 
    407 Each channel has a CV input for level; this is a unipolar (0-10V) CV, and corresponding knob attenuates the CV if the CV is in use.
    408 
    409 Likewise each channel has an FCV input for frequency modulation, and additionally there is a global FCV input, which voltage effects all channels.  For each channel, the channel FCV and global FCV are summed, then attenuverted by the channel's FCV knob, and the result is added to the FREQ knob setting.  These CVs are bipolar (+/-5V), where +5V will send the frequency from 0 to its max value.
    410 
    411 Finally, each channel has a BW (bandwidth) setting, that applies if the channel is a bandpass filter, and controls the width of the filter's frequency response.  These have unipolar CVs per channel.
    412 
    413 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    414 
    415 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
    416 
    417 #### <a name="peq6"></a> PEQ6
    418 
    419 A six channel parametric EQ.  It generally works as PEQ does, except:
    420   - The global FCV control has a knob, which becomes an attenuverter if a CV is provided.
    421   - There is a global BW parameter with CV, rather than per-channel bandwidth controls.
    422   - The "FCV RNG" option controls the scaling of the frequency CV inputs; if set to OCTV, the full CV range will alter the band frequencies up to an octave in either direction; if set to FULL, the CV can run the frequencies over the full range, as on PEQ.
    423   - On the context (right-click) menu, there is an option "Exclude direct-output bands from mix"; if this is enabled, any band that has its direct output in use (if something is patched to its output) does not get its output mixed into the main output.  Usually, the main output includes all bands.
    424 
    425 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    426 
    427 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
    428 
    429 #### <a name="peq6xf"></a> PEQ6XF
    430 
    431 Expands PEQ6 with envelope follower outputs, per band.  The DAMP and GAIN knobs control the followers; see the description of the <a href="#follow">FOLLOW</a> module for a description of how these work.
    432 
    433 ![Parameteric EQs screenshot 2](doc/www/parametric_eqs2.png)
    434 
    435 #### <a name="peq14"></a> PEQ14
    436 
    437 A fourteen channel parametric EQ.  The control scheme is as with PEQ6.
    438 
    439 It adds ODD and EVEN outputs: these are mixes of the odd and even channels, respectively.  If the low channel is set to LOWPASS, its output will go to both ODD and EVEN.  Same for the high channel, if its set to HIGHPASS.
    440 
    441 The "Exclude direct-output bands..." option, if enabled, applies to ODD and EVEN as well as the main OUT.
    442 
    443 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    444 
    445 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to each of OUT, ODD and EVEN.
    446 
    447 #### <a name="peq14xf"></a> PEQ14XF
    448 
    449 Expands PEQ14 with envelope follower outputs, per band.  The DAMP and GAIN knobs control the followers; see the description of the <a href="#follow">FOLLOW</a> module for a description of how these work.  DAMP has a unipolar (0-10V) CV; GAIN has a bipolar (+/-5V) CV.
    450 
    451 
    452 ### <a name="envelopes"></a> Envelopes and Envelope Utilities
    453 
    454 #### <a name="dadsrh"></a> DADSRH
    455 
    456 DADSRH (Delay, Attack, Decay, Sustain, Release, Hold) is an envelope generator, augmenting a standard ADSR design with a delay stage and a self-gating (hold) mode.
    457 
    458 ![Envelopes screenshot 1](doc/www/envelopes1.png)
    459 
    460 Features:
    461   - When the MODE switch is set to GATE, DADSRH is a more-or-less standard ADSR envelope generator, with an additional pre-attack delay stage.  The envelope is controlled by a gate CV at the trigger port, or by holding the TRIGGER button.
    462   - When MODE is TRIG, a trigger CV or press of the TRIGGER button will start a normal DADSR cycle, but controlled by an internal gate CV.  The internal gate persists for the time set by the HOLD knob.
    463   - The envelope is output as a 0-10 signal at port ENV.  Its inverse (10V - ENV) is output at INV.  When a release stage completes, a trigger is emitted at END.
    464   - When MODE is TRIGGER, the CYCLE switch controls whether the envelope loops or not upon completion of a release stage.
    465   - Toggles allow selection of linear, exponential or inverse-exponential ("logarithmic", more or less) shapes for the attack, decay and release stages.
    466   - The SPEED switch slows down the timing of segments by 10x.
    467   - The RETRIG switch controls the retrigger behavior (when a new gate or trigger happens while the envelope is running): ATT immediately attacks from the current envelope value (this is the typical behavior with many ADSRs), while RST causes a full reset of the envelope (restarting it at the delay stage).
    468 
    469 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the TRIGGER input.  Pressing the trigger button will trigger all channels.
    470 
    471 _When <a href="#bypassing">bypassed</a>:_ no output.
    472 
    473 #### <a name="dadsrhplus"></a> DADSRH+
    474 
    475 DADSRH+ is a DADSRH, with the addition of CV inputs for each knob, and gate outputs for each stage (a stage's gate output will be high for the duration of the stage).
    476 
    477 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the TRIGGER input.  Pressing the trigger button will trigger all channels.
    478 
    479 _When <a href="#bypassing">bypassed</a>:_ no output.
    480 
    481 #### <a name="shaper"></a> SHAPER
    482 
    483 SHAPER emulates the function of the Envelope Generator section of the classic [EMS VC3](https://en.wikipedia.org/wiki/EMS_VCS_3) and related synths.  It combines an envelope with a VCA.  Unlike an ADSR, the envelope stages are attack, on, decay and off, producing a signature trapezoidal envelope shape.
    484 
    485 ![Envelopes screenshot 2](doc/www/envelopes2.png)
    486 
    487 Features:
    488   - The ATTACK, ON, DECAY and OFF knobs specify times from nearly zero to 10 seconds.  The SPEED switch allows these times to be multiplied by 10.
    489   - The trapezoid envelope is output as a 0-10V control signal at port ENV, subject to attenuation by the ENV knob.  (INV outputs 10V - ENV.)
    490   - Audio input at port IN is sent through the internal VCA -- controlled by knob SIGNAL and the envelope -- to port OUT.  Turning up the SIGNAL knob can dramatically amplify the signal.  [This is actually a design error, but enough people have used it this way that we leave it be.]
    491   - A trigger CV at the TRIGGER port, or a press of the TRIGGER button, will start the envelope cycle.  When the off stage completes, a trigger is emitted at port END.  If the CYCLE switch is set to LOOP, the envelope restarts immediately.
    492   - The SPEED switch slows down the timing of segments by 10x.
    493 
    494 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the TRIGGER input.  Pressing the trigger button will trigger all channels.
    495 
    496 _When <a href="#bypassing">bypassed</a>:_ no output.
    497 
    498 #### <a name="shaperplus"></a> SHAPER+
    499 
    500 SHAPER+ is a SHAPER, with the addition of CV inputs for each knob, and gate outputs for each stage (a stage's gate output will be high for the duration of the stage).
    501 
    502 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the TRIGGER input.  Pressing the trigger button will trigger all channels.
    503 
    504 _When <a href="#bypassing">bypassed</a>:_ no output.
    505 
    506 #### <a name="ad"></a> AD
    507 
    508 An AD (Attack, Decay) envelope generator in 3HP.  The attack and decay stages have durations up to 10 seconds, and CV inputs expecting 0-10V inputs; if a CV is present, the corresponding knob attenuates it.
    509 
    510 When a trigger or gate is received at the TRIG input, the envelope cycle begins and runs to its end.  At the end of the cycle, a pulse is emitted at EOC.
    511 
    512 If the RT (retrigger) toggle is enabled, if TRIG receives a new trigger while the envelope is decaying, it reenters the attack stage at whatever level the envelope is currently at.  If the cycle ends and the TRIG voltage is high, the cycle restarts.
    513 
    514 If the LP (loop) toggle is enabled, the envelope cycles continuously (it doesn't need a trigger to start it).  If RT is also enabled, triggers at TRIG will restart the cycle (this is similar to syncing an LFO).
    515 
    516 By default, the attack and decay envelope segments have a logarithmic (more or less) curve -- in linear mode (the LIN toggle), the segments are linear.
    517 
    518 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the TRIG input.
    519 
    520 _When <a href="#bypassing">bypassed</a>:_ no output.
    521 
    522 #### <a name="asr"></a> ASR
    523 
    524 ASR is AR (if triggered) or ASR (Attack, Sustain, Release -- if gated) envelope generator.  It has CV inputs for the attack and release times (if CVs are used, they are attenuated by the corresponding knob values).  The sustain level may be set by the small knob marked S.  The attack and release segments are curved by default, but can be made linear with the LIN toggle.
    525 
    526 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the TRIG input.
    527 
    528 _When <a href="#bypassing">bypassed</a>:_ no output.
    529 
    530 #### <a name="adsr"></a> ADSR
    531 
    532 A standard ADSR (Attack, Decay, Sustain, Release) envelope generator in 3HP.  The attack, decay and release knobs are exponentially scaled with durations up to 10 seconds.  The sustain knob is linearly scaled, setting the sustain level from 0 to 10 volts.  Lights below each stage knob indicate which stage is active.
    533 
    534 By default, the attack, decay and release envelope segments have a curve -- in linear mode (the LIN button), the segments are linear.
    535 
    536 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the GATE input.
    537 
    538 _When <a href="#bypassing">bypassed</a>:_ no output.
    539 
    540 #### <a name="vish"></a> VISH
    541 
    542 VISH ("vactrol-ish") is an envelope generator designed to simulate the voltage shapes produced by the [vactrol](https://en.wikipedia.org/wiki/Opto-isolator) control circuits of hardware LPGs (low pass gates).  It lends itself to percussive envelopes, though long envelopes are possible.  It is also used as the envelope circuit in <a href="#megagate">MEGAGATE</a>, and in simplified form in <a href="#lpg">LPG</a> and <a href="#llpg">LLPG</a>.
    543 
    544 It operates by generating an internal 10V square envelope, which is fed through a slew limiter.
    545 
    546 When a trigger is received at the GATE input, or if any rising edge is received and GT TO TRIG is enabled, the internal envelop triggers and runs for the time set by the MIN GATE knob.  This parameter may be controlled by CV at the MIN input, expecting a unipolar (0-10V) input, which is scaled by the knob position.
    547 
    548 When GT TO TRIG is not enabled, then a rising edge at GATE will trigger the internal envelope in the same way, but when the envelope completes, whatever voltage is at GATE is fed to the slew limiter.  This can be used several ways:
    549   1. If the input is a full 10V, the output will sustain for as long as the GATE input remains high, with a minimum time set by MIN GATE.
    550   2. If the input is less than 10V, there is an ADSR-like effect, where the output, subject to the slew, will go to 10V for the duration of MIN GATE, then fall to whatever the input is.
    551   3. If MIN GATE is zero, the input is simply fed to the slew limiter as-is.
    552 
    553 The slew limiter is controlled by the RISE and FALL controls, which behave exactly like they do on the <a href="#slew">SLEW</a> module.  The time knobs control how much the rise and fall of the internal envelope are slewed, while the shape knob control the shapes of each segment.  The time knobs have unipolar (0-10V) CVs, while the shapes can be modulated by the single SHAPE CV input, which takes a bipolar CV (+/-5V), which is added to the value of the rise and fall shape knobs.  Context-menu settings allow the CV to be disabled, or applied inverted, for rise and fall separately.
    554 
    555 If the TIMES 10X option is enabled, the values of the rise and fall times, and MIN GATE, subject to their CVs, are multiplied by 10.  Thus fall and MIN GATE can go to a maximum of 10 seconds, and rise to 3 seconds.
    556 
    557 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the GATE input.
    558 
    559 _When <a href="#bypassing">bypassed</a>:_ no output.
    560 
    561 #### <a name="dgate"></a> DGATE
    562 
    563 ![Envelopes screenshot 3](doc/www/envelopes3.png)
    564 
    565 A trigger-to-gate utility, with gate duration up to 10 seconds, and an optional pre-delay of up to 10 seconds.  A trigger pulse is emitted at END when a delay/gate cycle ends.  If the STOP/LOOP switch is set to LOOP, or if the trigger is high when the cycle ends, the cycle repeats.
    566 
    567 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the TRIG input.  Pressing the trigger button will trigger all channels.
    568 
    569 _When <a href="#bypassing">bypassed</a>:_ no output.
    570 
    571 #### <a name="rgate"></a> RGATE
    572 
    573 RGATE is a "clock-relative" gate generator, which outputs gates that have a length that is a ratio of the period of the incoming clock.  It can also be used as a clock divider/multiplier.
    574 
    575 The LENGTH control sets the length of the output gate relative to the incoming clock period (time between two clock pulses).  The length may be varied from a minimum of 1ms to the full clock period, at maximum.  With the length at maximum, the output gate will simply stay high.  A LEN unipolar (0-10V) CV may be supplied, which if in use is attenuated by the LENGTH knob.
    576 
    577 CLK DIV and CLK MUL alter the frequency and length of gate outputs.  Increasing CLK DIV will set the number of clock pulses the clock period extends over, while CLK MUL will set how many gates will be emitted in that period.  For example, setting CLK DIV to 3 and CLK MUL to 2 yield an output of 2 gates for every three incoming clock pulses, with a maximum gate length of half of 3 times a single clock period.
    578 
    579 DIV and MUL are CV inputs for CLK DIV and CLK MUL respectively, each expecting a unipolar (0-10V) CV, and each attenuated by its corresponding knob.  For example, if CLK DIV is set to 4, then a 0-2.5V input at DIV will select a division of 1, an input of 2.5-5V will select a division of 2, and so on.
    580 
    581 *About determining the clock period:* the module continuously updates its measurement of the clock period on each clock pulse received, setting it to the time since the last clock was received.  With a steady and continuous incoming clock, this works just fine; otherwise there are some issues to consider:
    582   1. When the module loads, it has seen no clocks yet, and needs to see two to establish the clock period.  To work around this, there is a default clock period which applies only after the first clock is received and until the second is.  This is configurable on the context menu, defaulting to 500ms (or 120 BPM).  
    583   1. If the clock stops, the module plays out the current (divided, multiplied) clock period, and then output will stop.  When the clock starts again, RGate will have measured a very long clock period, and will output a long gate.  The RESET function described below can help with this.
    584   1. An irregular or varying clock may cause odd or unpredictable behaviors.
    585 
    586 The RESET port allows resetting the state of RGate, with two modes, configurable on the context (right-click) menu:
    587   - HARD, the default, resets the calculation of the clock period, and the internal counter that drives the clock divider.  On receipt of the next clock after a hard reset, the default clock period applies.
    588   - SOFT resets only the clock divider.
    589 
    590 The output range of the module may be set on the context menu; it defaults to unipolar 0-10V.  It may be set to 0-5V, +/-10V or +/-5V.
    591 
    592 The module is usable as a general clock divider/multiplier; in this case it's advisable to set LENGTH to the minimum, as clocks usually output short trigger pulses.
    593 
    594 The module can also be used to generate pulse waves from incoming audio, where the output pitch is some ratio of the input, according to CLK DIV and CLK MUL.  For example, with CLK DIV set to 2, and CLK MUL to 1, and with a square wave input, the output will be a pulse wave tracking an octave below the input.  LENGTH becomes a pulse-width control in this case.  CLK MUL will multiply the increasing frequency to a point; at some point the output frequency would be faster than the internals of RGate update, and nothing happens.  If using the module this way, it makes sense to set the output to bipolar.
    595 
    596 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the CLOCK input, by default, or the LENGTH input, if so set on the context menu.
    597 
    598 _When <a href="#bypassing">bypassed</a>:_ no output.
    599 
    600 #### <a name="edge"></a> EDGE
    601 
    602 A trigger-to-gate utility, comparator and rising/falling edge detector.  RISE and FALL set voltage levels: when the input goes above RISE, the module switches to "high" state and outputs a voltage at the HIGH output.  HOLD sets a minimum time that the module stays in the high state; this can be used to avoid jitter on the output if using high-frequency inputs.  1ms trigger pulses are output at RISE and FALL on the corresponding changes (note that if you switch the module state at audio rates, these will essentially always be high).
    603 
    604 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    605 
    606 _When <a href="#bypassing">bypassed</a>:_ no output.
    607 
    608 #### <a name="follow"></a> FOLLOW
    609 
    610 An envelope follower (a utility that converts its input to a CV proportional to the level of the input's amplitude).  The DAMP knob and CV (0-10V) affect how quickly the output responds to changes in the input -- higher DAMP values effectively slow down and smooth out the response.
    611 
    612 The GAIN knob and CV (+/-5V) can attenuate or amplify the output.  Turning the knob counter-clockwise form center will cut the output up to -36dB; turning it clockwise will amplify it up to +12dB.
    613 
    614 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    615 
    616 _When <a href="#bypassing">bypassed</a>:_ no output.
    617 
    618 
    619 ### <a name="mixers"></a> Mixers, Panners and VCAs
    620 
    621 #### <a name="mix8"></a> MIX8
    622 
    623 An eight-channel mixer/panner with mutes.
    624 
    625 ![Mixers screenshot 1](doc/www/mixers1.png)
    626 
    627 Features:
    628   - Eight input channels with decibel-calibrated level faders.
    629   - Level fader for the output mix.
    630   - CV control over channel and output levels; expects 0-10V CV; CV is attenuated by the corresponding slider when in use.
    631   - CV-controlled stereo panners; expects +/-5V CV; CV is attenuverted by the corresponding knob when in use.
    632   - Stereo outputs: if only one is patched, the output mix is mono.
    633   - Mutes per channel.
    634   - Right-clicking a mute buttons solos that channel (un-mutes that channel and temporarily mutes all others).  Right or left click will un-solo, restoring the old state.  Multiple channels can be "soloed" at once.
    635   - The fader handles contain lights indicating the signal level out of that channel.
    636   - The master output has MUTE and DIM controls (DIM is a partial mute, with a value configurable on the context menu; it defaults to -12dB).
    637   - When context menu option "Linear level CV response" is enabled, level CV inputs on each channel and on the master output affect the corresponding level linearly in amplitude (that is, a 5V input would cut the level set by the slider by half); by default they respond in decibels.
    638   - The output saturates (soft clips) at +/-12 volts.
    639 
    640 _Polyphony:_ The module is monophonic: if a polyphonic cable is present at an input, its channels will be summed.
    641 
    642 However, there is a non-standard polyphonic feature: on the context (right-click) menu, there are options to "spread" a polyphonic input connected to input channel 1 (only) across the mixer's inputs, as if the poly input had been split into eight mono inputs and each connected to the mixer.  This can be applied to channels 1-8 of the input, or channels 9-16.  Any input patched to an input other than input 1 will override the spread signal.
    643 
    644 _When <a href="#bypassing">bypassed</a>:_ no output.
    645 
    646 #### <a name="mix8x"></a> MIX8X
    647 
    648 An expander for MIX8, adding an EQ for each mixer channel, and two sends and stereo returns.
    649 
    650 Each EQ section is based on the <a href="#eq">EQ</a> module, with same bands and gains.
    651 
    652 Each mixer channel can be routed to send A or send B by knob and CV.  The CVs expect a 0-10V signal, and are attenuated by the corresponding knob.  The knob/CV response is exponential in amplitude, linear in decibels.
    653 
    654 Below each send knob is a PRE switch (for "pre-fader"); if on, the send receives the unaltered input into its corresponding mixer channel; otherwise it gets the signal subject to the mixer channel's level slider, mute button and EQ.
    655 
    656 Return A and B are each stereo, with the right input being normalled to the left.  Each has a LEVEL knob. Return A (only) has a CV input for LEVEL (the CV works the same as with the sends).  Each return's inputs, subject to the LEVEL processing, are injected directly into the mixer's final stage, subject to the master level slider and mute.  Note that you don't have to use the sends to use the returns.
    657 
    658 MIX8X must be positioned to the right of, and ajacent to, the base MIX8 module it will pair with.  See <a href="#expanders">notes on expanders</a>.
    659 
    660 ![Mixers screenshot 2](doc/www/mixers2.png)
    661 
    662 #### <a name="mix4"></a> MIX4
    663 
    664 A four-channel version of MIX8 with the same features.
    665 
    666 _Polyphony:_ As with MIX8, this is a monophonic module, but with the same non-standard "spread" feature (in groups of four channels).
    667 
    668 _When <a href="#bypassing">bypassed</a>:_ no output.
    669 
    670 #### <a name="mix4x"></a> MIX4X
    671 
    672 An expander for MIX4, with functionality identical to what MIX8X adds to MIX8.
    673 
    674 ![Mixers screenshot 3](doc/www/mixers3.png)
    675 
    676 #### <a name="mix1"></a> MIX1
    677 
    678 A 3HP fader/VCA, with mute.  
    679 
    680 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the IN input.
    681 
    682 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
    683 
    684 #### <a name="mix2"></a> MIX2
    685 
    686 A stereo version of MIX1.  The left input is normalled to the right.
    687 
    688 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with channels defined by the L input.  However, as on MIX8 there is a poly spread feature -- if this is enabled, the module becomes monophonic, and will get the left and right inputs from a pair of polyphonic channels (channels 1 and 2, 3 and 4, etc) on the input L.
    689 
    690 _When <a href="#bypassing">bypassed</a>:_ passes left and right inputs unmodified to the corresponding outputs; left is passed to right if the right input is unpatched.
    691 
    692 #### <a name="umix"></a> UMIX
    693 
    694 A 3HP unity mixer, usable with audio or CV (e.g. to combine triggers).  Up to 8 inputs are summed to the output.  The output is limited to +/-12V (with clipping modes as below).
    695 
    696 The context (right-click) menu has a few options:
    697  - "Input gain" allows the input gain to be reduced up to -12dB.
    698  - "Output clipping" sets the manner of output clipping: "Soft" applies saturation or soft clipping, which is better for audio, and which is the default; "Hard" simply clips the output at +/-12V.  "Hard" is better for CVs, as this mode will achieve precise summing of CVs; otherwise the saturator will slightly affect (reduce) the sums at all levels.
    699  - "Average" causes the module to average, rather than sum, its inputs.
    700 
    701 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphonic channels defined by the first/topmost input.
    702 
    703 _When <a href="#bypassing">bypassed</a>:_ no output.
    704 
    705 #### <a name="mumix"></a> MUMIX
    706 
    707 Essentially identical to UMIX, but with mute buttons for each input.
    708 
    709 If averaging mode is enabled, note that the divisor for the average is the count of how many inputs are connected.  For example, if three inputs are connected, and one is muted, the output will be the sum of the two unmuted channels, divided by three.
    710 
    711 See also <a href="switch81">SWITCH81</a>, which is similar to this, with options to attenuate or invert the inputs.
    712 
    713 _Polyphony:_ same as UMIX.
    714 
    715 _When <a href="#bypassing">bypassed</a>:_ no output.
    716 
    717 #### <a name="mute8"></a> MUTE8
    718 
    719 MUTE8 provides 8 independent manual or CV-controlled mutes. Each channel is muted if its button is toggled on or if there is a positive voltage at its CV input.  Otherwise the input is passed to the output.
    720 
    721 As with MIX4 and MIX8, a right-click on a mute button will solo that channel (pass that channel through while muting all others).  Right or left click clears this.
    722 
    723 If context menu option "Latching CV triggers" is enabled, triggers on the CV inputs toggle muting on and off.
    724 
    725 _Polyphony:_ <a href="#polyphony">polyphonic</a>, where each of the 8 channels may be independently polyphonic, as defined by the cable at the channel's input.
    726 
    727 _When <a href="#bypassing">bypassed</a>:_ passes each input unmodified to the corresponding output.
    728 
    729 #### <a name="vcm"></a> VCM
    730 
    731 A four-channel mixer in 10HP.
    732 
    733 Features:
    734   - Four input channels and mono mix output with knob and CV control over level.  CVs expect 0-10V; when CV is in use, it is attenuated by the knob.
    735   - Linear mode makes the knob/CV response linear in amplitude (this is good dialing in a CV mix); otherwise, and by default, the response is linear in decibels (and therefore exponential in amplitude).
    736 
    737 By default, the output is hard clipped at +/-12V (this is a standard in Rack).  A context menu option allows this limit to be disabled.
    738 
    739 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphonic channels defined by the first IN input.
    740 
    741 _When <a href="#bypassing">bypassed</a>:_ no output.
    742 
    743 #### <a name="pan"></a> PAN
    744 
    745 A stereo panner with dual input channels.  Each channel's panner may be controlled with a +/-5 volt CV; when CV is in use, it is attenuverted by the corresponding knob.  The output saturates (soft clips) to +/-12 volts.
    746 
    747 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the first/top IN input.
    748 
    749 _When <a href="#bypassing">bypassed</a>:_ no output.
    750 
    751 #### <a name="xfade"></a> XFADE
    752 
    753 A crossfader (or two-channel mixer, or way to patch a dry/wet knob into any signal chain).  The MIX knob sets the relative strength of inputs A and B.  MIX may be controlled with a +/-5 volt CV; when CV is in use, it is attenuverted the knob.
    754 
    755 The SHAPE knob affects the attenuation curves of the two channels as MIX changes:
    756   - At the center position, SHAPE at produces a standard crossfader behavior.  A and B are attenuated by half; moving MIX to A or B brings that channel to full input level while cutting the opposite channel.  The attenuation is such that if the same signal is patched to both A and B, the same signal is produced at the output regardless of the setting of MIX.
    757   - With SHAPE at the full counter-clockwise (left) position, there is no output when MIX is centered; moving MIX to A or B brings that channel to full level.
    758   - With SHAPE at full clockwise (right) position, both channels are at full (unattenuated) level when MIX is centered; moving to A or B cuts the opposite channel.
    759 
    760 Linear mode (the LIN button) makes the level attenuation response of MIX linear in amplitude (useful when processing CV); otherwise and by default the response is linear in decibels (and therefore exponential in amplitude).
    761 
    762 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the A input.
    763 
    764 _When <a href="#bypassing">bypassed</a>:_ no output.
    765 
    766 #### <a name="matrix81"></a> MATRIX81
    767 
    768 ![Mixers screenshot 4](doc/www/mixers4.png)
    769 
    770 An eight input, one output version of <a href="#matrix44">MATRIX44</a>, below.
    771 
    772 _Polyphony:_ <a href="#polyphony">polyphonic</a>, as on MATRIX44.
    773 
    774 _When <a href="#bypassing">bypassed</a>:_ no output.
    775 
    776 #### <a name="matrix18"></a> MATRIX18
    777 
    778 A one input, eight output version of <a href="#matrix44">MATRIX44</a>, below.
    779 
    780 _Polyphony:_ <a href="#polyphony">polyphonic</a>, as on MATRIX44.
    781 
    782 _When <a href="#bypassing">bypassed</a>:_ no output.
    783 
    784 #### <a name="matrix44"></a> MATRIX44
    785 
    786 A 4x4 channel matrix mixer.  Each input can be routed with an independent level to each of the eight output mixes.  MATRIX44 is expandable with <a href="matrix44cvm">MX44CVM</a>.
    787 
    788 *Note that the matrix knobs are attenuverters, and default to zero.*  That means there will be no output, regardless of the inputs, until some knobs are changed to non-zero values.  The knobs can be set to unipolar mode, as below; they still default to zero.
    789 
    790 Saturation (soft clipping) limits each output to +/-12V.  This can be changed to a hard clip at +/-12V on the context menu ("Output clipping") -- as described on UMIX, this is mode is better if you need to precisely sum CVs.  Clipping may also be disabled entirely by setting "Output clipping" to "None".
    791 
    792 Another context menu option allows the input gains to be reduced by up to 12db.
    793 
    794 Option "Average" sets the output to be the average of its inputs.  The divisor for the average is the number of inputs in use; for example, if three inputs are connected, each output will be the sum of those inputs, scaled by the corresponding knobs, and divided by three.
    795 
    796 The knobs visually indicate their values with green/orange colors.  This can be disabled on the context menu.
    797 
    798 Option "Unipolar" sets the knobs to travel from zero to 100% over their full travel (which is to say that they can no longer be set to invert the input).  The panel does not update; the tick at noon for each knob indicates 50% in this mode.
    799 
    800 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphonic channels defined by input 1.
    801 
    802 _When <a href="#bypassing">bypassed</a>:_ no output.
    803 
    804 #### <a name="matrix44cvm"></a> MX44CVM
    805 
    806 An expander for MATRIX44, adding CVs and mutes for each point in the mix matrix.  The CVs are bipolar (+/-5v), and each is attenuverted by its corresponding knob when in use.  The mute buttons will mute the corresponding mix point, overriding the knob and CV.  As on <a href="mix8">MIX8</a> and others, the mute buttons can be right-clicked to solo that mix point -- all others will be muted.  A subsequent click on a soloed button restores the previous state, and other muted buttons retake effect.
    807 
    808 If the context menu option "Solo mutes by column" is enabled, the solo feature applies within the columns of mutes, which is to say soloing a mix point will only affect the output for that mix point, rather than all outputs.
    809 
    810 MX44CVM must be positioned to the right of, and adjacent to, the MATRIX44 module it will expand.  See <a href="#expanders">notes on expanders</a>.
    811 
    812 #### <a name="matrix88"></a> MATRIX88
    813 
    814 ![Mixers screenshot 5](doc/www/mixers5.png)
    815 
    816 An 8x8 version of MATRIX44.  It is expanable with <a href="matrix88cv">MX88CV</a> and <a href="matrix88m">MX88M</a>.
    817 
    818 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphonic channels defined by the first/topmost input.
    819 
    820 _When <a href="#bypassing">bypassed</a>:_ no output.
    821 
    822 #### <a name="matrix88cv"></a> MX88CV
    823 
    824 An expander for MATRIX88, adding CVs for each point in the mix matrix.  The CVs are bipolar (+/-5v), and each is attenuverted by its corresponding knob when in use.
    825 
    826 MX88CV must be positioned to the right of, and adjacent to, the MATRIX88 module it will expand, or a MX88M module that is itself expanding a MATRIX88.  See <a href="#expanders">notes on expanders</a>.
    827 
    828 #### <a name="matrix88m"></a> MX88M
    829 
    830 An expander for MATRIX88, adding mutes for each point in the mix matrix. The mute buttons will mute the corresponding mix point, overriding the knob (and CV if a MX88CV is in use).  As on <a href="mix8">MIX8</a> and others, the mute buttons can be right-clicked to solo that mix point -- all others will be muted.  A subsequent click on a soloed button restores the previous state, and other muted buttons retake effect.
    831 
    832 If the context menu option "Solo mutes by column" is enabled, the solo feature applies within the columns of mutes, which is to say soloing a mix point will only affect the output for that mix point, rather than all outputs.
    833 
    834 MX88M must be positioned to the right of, and adjacent to, the MATRIX88 module it will expand, or a MX88CV module that is itself expanding a MATRIX88.  See <a href="#expanders">notes on expanders</a>.
    835 
    836 #### <a name="switch81"></a> SWITCH81
    837 
    838 ![Mixers screenshot 6](doc/www/mixers6.png)
    839 
    840 An eight input, one output version of <a href="#switch44">SWITCH44</a>, below.
    841 
    842 SWITCH81 is related to <a href="#mumix">MUMIX</a>, with the difference that a switch must be turned on to pass an input to the output, where on MUMIX the switches are mutes (they pass by default).  Also, this module has options for attenuating and inverting the inputs, as on SWITCH44.
    843 
    844 If the option "Exclusive switching" is enabled, on the context menu, then only one switch may be active at once (only one input will be routed to the output).
    845 
    846 _Polyphony:_ <a href="#polyphony">polyphonic</a>, as on SWITCH44.
    847 
    848 _When <a href="#bypassing">bypassed</a>:_ no output.
    849 
    850 #### <a name="switch18"></a> SWITCH18
    851 
    852 A one input, eight output version of <a href="#switch44">SWITCH44</a>, below.
    853 
    854 If the option "Exclusive switching" is enabled, on the context menu, then only one switch may be active at once (the input is only routed to one of the outputs).
    855 
    856 _Polyphony:_ <a href="#polyphony">polyphonic</a>, as on SWITCH44.
    857 
    858 _When <a href="#bypassing">bypassed</a>:_ no output.
    859 
    860 #### <a name="switch44"></a> SWITCH44
    861 
    862 Identical to MATRIX44, but with switches instead of knobs.  All switches default to off, passing no signal.  Clicking a switch sets it to pass voltage with unity gain.  Another click sets the switch off (unless second-click inverting is on, as below).
    863 
    864 Note that you can pass attenuated values, by use of Rack's arbitrary parameter-entry feature: right-click a switch, and set its value from -100 to 100% (fractional percentages are allowed).  If inverting is disabled, as below, the entry is from 0 to 100%.
    865 
    866 The signal inverting behavior may be set with the "Inverting" context menu options:
    867   - "Disabled" disables inverting entirely.  This option is the default.  It is best if you want to map MIDI controller buttons/pads to switches.
    868   - "By param entry" allows negative scale values to be set for a switch by the parameter-entry method, but clicks on a switch will just toggle between on and off.
    869   - "On second click" causes a click on a non-inverting but enabled switch to change to inverting; another click turns it off.
    870 
    871 Option "Average" sets the output to be the average of its inputs.  The divisor for the average is the number of inputs in use; for example, if three inputs are connected, each output will be the sum of those inputs, scaled by the corresponding switch values, and divided by three.
    872 
    873 Two other options, "Exclusive switching by row" and "Exclusive switching by column", if enabled, allow only one switch to be enabled in a row, or column, respectively.  Both options may be enabled at once.  (These options do not work well with MIDI mapping via Rack's MIDI-MAP module; this is a known issue for which there is no good solution; but see the discussion [here](https://github.com/bogaudio/BogaudioModules/issues/112) for a potential workaround.  The same problem may apply to other parameter-mapping methods.)
    874 
    875 When randomizing the module from the context menu, the behavior changes based on the options:
    876   - If neither "Exclusive" option is set, then randomizing the module sets each switch to 0% or 100% with equal probability (0%, 100%, and -100%, if inverting is enabled).
    877   - If one "Exclusive" option is set, but not both, then on randomization exactly one switch per row (or column) is set to 100% (or -100% if inverting is enabled), all others 0%.
    878   - If both exclusive options are set, on randomization one switch on the entire module is set to 100% (or -100%, if inverting is enabled), all others 0%.
    879 
    880 Every switch applies a bit of slew limitation when it changes values, as an anti-popping measure.
    881 
    882 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphonic channels defined by input 1.
    883 
    884 _When <a href="#bypassing">bypassed</a>:_ no output.
    885 
    886 #### <a name="switch88"></a> SWITCH88
    887 
    888 An 8x8 version of SWITCH44.
    889 
    890 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphonic channels defined by the first/topmost input.
    891 
    892 _When <a href="#bypassing">bypassed</a>:_ no output.
    893 
    894 #### <a name="switch1616"></a> SWITCH1616
    895 
    896 A 16x16 version of SWITCH44.
    897 
    898 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphonic channels defined by input 1.
    899 
    900 _When <a href="#bypassing">bypassed</a>:_ no output.
    901 
    902 
    903 ### <a name="dynamics"></a> VCAs and Dynamics
    904 
    905 #### <a name="vca"></a> VCA
    906 
    907 ![VCAs screenshot](doc/www/vcas.png)
    908 
    909 A two-channel voltage-controlled attenuator.  (An attenuator can only reduce a signal.)
    910 
    911 Each channel's level may be controlled with a 0-10V CV; when CV is in use, it is attenuated by the corresponding knob.
    912 
    913 In linear mode (the LIN button), the knob/CV response is linear in amplitude (useful when processing CV); otherwise and by default the response is linear in decibels (and therefore exponential in amplitude).
    914 
    915 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the IN input, independently for the top and bottom sections of the module.
    916 
    917 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT independently in each channel.
    918 
    919 #### <a name="vcamp"></a> VCAMP
    920 
    921 A voltage-controlled amplifier, capable of adding 12 decibels gain to the input.  (Twelve decibels gain is the same as multiplying the input by 4.)
    922 
    923 The level may be controlled with a 0-10V CV -- when CV is in use, it is attenuated by the corresponding slider.  The slider's toggle has a light indicating the output signal level.  The output saturates (soft clips) to +/-12V.
    924 
    925 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the IN input.
    926 
    927 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
    928 
    929 #### <a name="velo"></a> VELO
    930 
    931 A voltage-controlled amplifier with three CV inputs of three different types: a regular one, a bipolar one (good for tremolo), and one that is inverted and scaled (designed for implementing MIDI velocity, and the reason for the module's name).  
    932 
    933 The LEVEL knob and CV words as on <a href="#VCA">VCA</a>; the knob sets the base VCA level if the LEVEL input is not patched; if it is patched, it expects a unipolar (0-10V) signal, which sets the LEVEL up to the position of the knob (which is to say that the knob attenuates the CV).  The LEVEL input is the place to patch in an envelope.
    934 
    935 The CV input takes a bipolar (+/-5V) signal, subject to attenuversion by the smaller knob below the LEVEL knob.  The resulting value is scaled by whatever value was set by LEVEL (knob and CV) and then added to the LEVEL value (this coupling of CV to LEVEL is enabled is by default, but see below).  The CV input is a good place to patch in an LFO, to achieve tremolo.
    936 
    937 The VELO input, if in use, takes a unipolar (0-10V) signal, scales it according to the "V. R." (Velocity Range) knob, inverts it, and adds it to the value produced by the previous two knobs and CVs.  Thus, if the VELO input is 0V, whatever level the VCA would open to according to the values of the previous inputs is reduced by the number of decibels set by the V. R. knob.  When VELO is a full 10V, there is no reduction.  If V. R. is fully clockwise, a 0V VELO input will fully close the VCA.  The VELO input is designed to be patched to the VELO output of Rack's MIDI-CV module.
    938 
    939 The suggested patch inputs are meant as examples; of course any inputs can be used.
    940 
    941 The LIN toggle, if on, sets the VCA's to a linear-in-amplitude response; when off, the VCA's response to the controls and CVs is linear-in-decibles.
    942 
    943 The bipolar CV is optionally coupled to the LEVEL knob/input, but this coupling can be broken by disabling option "Level knob/CV scales bipolar CV" on the context menu.  When the option is enabled, the value of the bipolar CV is scaled by the value of LEVEL (knob and CV) before being added to LEVEL.  Otherwise, it is simply added to level.  In a patch with an envelope to LEVEL and an LFO to CV, having this option on means the LFO's effect will be proportional to the envelope, which is to say the LFO won't open the VCA when the envelope is off.
    944 
    945 Using the bipolar CV, it's possible to drive the VCA past unity gain, up to +12db (4x amplitude).  The module soft-clips at +/-12V, and driving the signal into the clipper will result in distortion.
    946 
    947 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the IN input.
    948 
    949 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
    950 
    951 ![Dynamics processors screenshot](doc/www/dynamics.png)
    952 
    953 #### <a name="amrm"></a> AM/RM
    954 
    955 AM/RM is a ring- and amplitude-modulation effect and CV-controllable variable wave rectifier.
    956 
    957   - With the default knob settings, the unit is a proper ring modulator: the MOD (modulator) and CAR (carrier) inputs are multiplied and the resulting wave is sent to the output.  MOD is passed unchanged to the RECT output.
    958   - As RECTIFY goes from 0 to fully clockwise, the negative portion of the MOD input is progressively folded to positive, until at the full value the wave is fully rectified.  The modified input is output at RECT; the modified input is multiplied with the carrier input and sent to the output.
    959   - The DRY/WET control mixes the output of the mod/carrier multiplication with the unmodified carrier input.
    960 
    961 The RECT inputs expects a bipolar (+/-5V) CV, which is added to the RECTIFY knob.  The D/W input works the same for the DRY/WET knob.
    962 
    963 Note: AM/RM is calibrated to expect +/-5V, 10V peak-to-peak signals (i.e. the output of a typical oscillator).  A modulator signal with a negative value in excess of -5V will be affected by the rectifier circuit even if the RECTIFY is zero.  To avoid this effect, you may need to attenuate a hot signal you wish to use as the modulator.
    964 
    965 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the CAR input.  The polyphony input can be switched to MOD on the context menu.
    966 
    967 _When <a href="#bypassing">bypassed</a>:_ passes the CAR (carrier) input unmodified to OUT; the RECT output is 0V.
    968 
    969 #### <a name="pressor"></a> PRESSOR
    970 
    971 PRESSOR is a stereo [compressor](https://en.wikipedia.org/wiki/Dynamic_range_compression) and [noise gate](https://en.wikipedia.org/wiki/Noise_gate) with many controls and a sidechain input.  A compressor attenuates signals louder than a threshold level; a noise gate attenuates signals quieter than a threshold level.
    972 
    973 The module's signal path has two main components: a detector, and the compressor/gate.  The detector -- effectively an envelope follower -- analyzes the inputs (including the sidechain input, if in use), producing a control signal which is used to control the compressor/gate.  The detector signal is also emitted at ENV.
    974 
    975 The various controls and ports work as follows:
    976   - The MODE switch sets whether the module works as a compressor (COMP) or noise gate (GATE).
    977   - THRESHOLD sets the threshold in decibels.  The default 0dB setting corresponds to the 10V peak-to-peak output level of a standard oscillator.  The TRSH input expects a unipolar (+10V) input; if in use this is attenuated by the knob.  The knob's range is -24dB to +6dB; menu option "Threshold range" allows this to be doubled to -48dB to 12dB.
    978   - RATIO sets the degree of attenuation applied to a signal.  In compressor mode, higher settings attenuate the signal more as the detector output goes above the threshold; at the maximum setting, the compressor becomes a limiter.  In noise gate mode, higher ratios more completely attenuate inputs below the threshold.  The RATIO CV input is unipolar (0-10V), attenuated by the knob
    979   - The COMPRESSION meter provides a visual indication of the amount of attenuation being applied to the input at any given moment, and is proportional to the CV output at ENV.
    980   - ATACK and DECAY control lag times in the the movement of the detector signal as the input changes.  Each has a corresponding unipolar (+10V) CV attenuated by the corresponding knob.
    981   - The DECTECT switch toggles the detector between RMS and peak level analyzers; RMS averages the input over a short window whereas PEAK uses the instantaneous level.
    982   - KNEE toggles between a slightly softer or harder response as the attenuation turns on or off as the signal crosses the threshold.
    983   - IN GAIN attenuates (up to -12db) or amplifies (up to +12db) the left and right inputs.  (It does not apply to the sidechain input.)  The modified input is sent to the detector and the compressor/gate.  The IGN CV input expects a bipolar (+/-5V) signal which is added to the knob position.
    984   - OUT GAIN applies up to 24db of amplification to the left and right outputs, after the compressor/gate circuit does its work.  The outputs are subject to saturation (soft limiting at +/-12V).  The OGN CV input expects a bipolar (+/-5V) signal which is added to the knob position.
    985   - IN/SIDE controls the input to the detector, as a mix/crossfade between the left/right inputs (which are processed by IN GAIN, then summed), and the sidechain input.
    986 
    987 Several of the settings can take fairly extreme values (e.g. OUT GAIN); this allows the module to be used as a distortion effect.
    988 
    989 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the L input.
    990 
    991 _When <a href="#bypassing">bypassed</a>:_ passes left and right inputs unmodified to the corresponding outputs.
    992 
    993 #### <a name="clpr"></a> CLPR
    994 
    995 CLPR is a compact (6HP) [clipper](https://en.wikipedia.org/wiki/Clipping_%28audio%29).  Its controls behave the same as the corresponding controls on PRESSOR.
    996 
    997 In contrast to LMTR, CLPR chops a signal at a voltage threshold corresponding to the selected amplitude, significantly distorting the signal.
    998 
    999 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the L input.
   1000 
   1001 _When <a href="#bypassing">bypassed</a>:_ passes left and right inputs unmodified to the corresponding outputs.
   1002 
   1003 #### <a name="lmtr"></a> LMTR
   1004 
   1005 LMTR is a compact (6HP) [limiter](https://en.wikipedia.org/wiki/Dynamic_range_compression).  Its controls behave the same as the corresponding controls on PRESSOR.  Controls for attack and release times are on the context menu.
   1006 
   1007 In contrast to CLPR, LMTR does not distort the signal very much; it just reduces the amplitude of the signal to keep it below the threshold.
   1008 
   1009 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the L input.
   1010 
   1011 _When <a href="#bypassing">bypassed</a>:_ passes left and right inputs unmodified to the corresponding outputs.
   1012 
   1013 #### <a name="nsgt"></a> NSGT
   1014 
   1015 NSGT is a compact (6HP) [noise gate](https://en.wikipedia.org/wiki/Noise_gate).  Its controls behave the same as the corresponding controls on PRESSOR.  Controls for attack and release times are on the context menu.
   1016 
   1017 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the L input.
   1018 
   1019 _When <a href="#bypassing">bypassed</a>:_ passes left and right inputs unmodified to the corresponding outputs.
   1020 
   1021 #### <a name="cmpdist"></a> CMPDIST
   1022 
   1023 A distortion effect based on a window comparator.  One or two input signals are used, at inputs A and B (if you only want to use one input, note that input B is normalled to +5V).  The inputs are scaled by the A and B knobs and their corresponding bipolar (+/-5V) CV inputs.  At the same time, a "window" voltage is set by the WINDOW knob and unipolar (0-10V) CV.
   1024 
   1025 The comparator calculates the following:
   1026   - If the scaled A voltage is greater than B by at least the amount of the WINDOW voltage, then we're in the GT (greater than) state.
   1027   - If A less than B by at least the WINDOW voltage, we're in LT (less than) state.
   1028   - Otherwise, A and B are within WINDOW volts of each other, and we're in EQ state.
   1029 
   1030 The outputs GT, LT and EQ follow the state:
   1031   - If GT, the GT output is +5V, and -5V otherwise.
   1032   - If LT, the LT output is -5V, and +5V otherwise (which is inverted from what it should logically be; this makes the output interesting).
   1033   - If EQ, the EQ output is +5V, and -5V otherwise.
   1034 
   1035 The MIX output combines the other outputs according to the GT MIX, EQ MIX and LT MIX knobs, which are simply attenuverters (rather than proper VCAs).  GT MIX and LT mix have bipolar CVs.
   1036 
   1037 The MIX output is also subject to the DRY/WET setting, where the dry signal is comprised of the A and B scaled inputs, each processed by the A DRY and B DRY VCAs.  DRY/WET has a bipolar CV.
   1038 
   1039 **Note:** this module is intended for audio-rate use, as a distortion effect; if you want a proper window comparator for use with CV, take a look at <a href="#cmp">CMP</a>.
   1040 
   1041 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the A input.
   1042 
   1043 _When <a href="#bypassing">bypassed</a>:_ no output.
   1044 
   1045 
   1046 ### <a name="random"></a> Noise/Random, Sample and Hold
   1047 
   1048 ![Noise/random screenshot](doc/www/noise.png)
   1049 
   1050 #### <a name="noise"></a> NOISE
   1051 
   1052 A noise source, in types blue (f), white, pink (1/f), red (aka brown, 1/f^2) and Gauss (normal with mean 0 and variance 1).
   1053 
   1054 Additionally, NOISE has an absolute value circuit.  Patch audio into ABS to get positive CV.  For example, patch white noise into ABS to get uniform values in the range 0-10V.
   1055 
   1056 _Polyphony:_ For the noise outputs, the number of polyphonic channels is set on the context (right-click) menu.  Independently, the ABS circuit is <a href="#polyphony">polyphonic</a>, with polyphony defined by the IN input.
   1057 
   1058 _When <a href="#bypassing">bypassed</a>:_ no output.
   1059 
   1060 #### <a name="samplehold"></a> S&H
   1061 
   1062 A dual sample-and-hold and trigger-and-hold.  Sampling may be triggered by CV (on the rising edge of a trigger or gate) or button press.
   1063 
   1064 If nothing is connected to an IN port, sampling for that channel is normalled to an internal white noise source with range 0-10V. Alternative options for the normal source noise type and range are available on the context (right-click) menu.  The normal source selection applies to both channels.
   1065 
   1066 Each channel can be independently toggled into track-and-hold mode with the corresponding TRK button.  In this mode, when the input at GATE is high, or the button is held, the input is copied to the output.  When the gate goes low, the input is sampled and held until the next gate.
   1067 
   1068 Each channel may also be have its output inverted with the INV button.
   1069 
   1070 The GATE input on the lower section is normalled to GATE in the top section (but a press on the top button does not trigger the lower section).
   1071 
   1072 The GLIDE context menu option applies linear glide (slew limitation, smoothing) to the outputs.  The time value, which defaults to 0, determines how long the output will take to change (slew) 10V.  This option is ignored in track-and-hold mode.
   1073 
   1074 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the GATE input in each section.  If the bottom GATE is patched, the two sections will independently take their channels from their respective GATE inputs; if only the top GATE is patched, the bottom section normals to the top input and both sections have the same number of channels.  The polyphony port can be changed to IN on the context menu (this change applies to both top and bottom sections of the module; IN does not normal to the bottom section, and both sections will set their channels independently, from whatever is patched to their own IN).
   1075 
   1076 _When <a href="#bypassing">bypassed</a>:_ no output.
   1077 
   1078 #### <a name="walk2"></a> WALK2
   1079 
   1080 WALK2 provides two channels of chaotic output, where the output voltage moves as a random walk.  The two outputs are drawn as a trace, in X and Y, on the display.  It may also be configured as an X/Y controller.
   1081 
   1082 For each channel:
   1083  - RATE (knob and CV) controls how sedately, or wildly, the CV moves around.  If CV is in use, it is attenuated by the knob.
   1084  - OFFSET (knob and CV) adds or subtracts up to 5V from the base +/-5V output.  If the offset CV is in use, it is attenuverted by the knob.
   1085  - SCALE (knob and CV) attenuates the output; if CV is in use, it is attenuated by the knob.
   1086 
   1087 DIST outputs a third CV, ranging over 0-10V, derived from X and Y channel outputs.  
   1088 
   1089 The TRIG input can be set to one of three actions by the TRIG selector below it:
   1090   - JUMP: on each trigger at TRIG, both channels will jump to a random value.
   1091   - S&H: on each trigger at TRIG, the value of the random generator on each channel is sampled and held.
   1092   - T&H: while there is a high gate voltage at TRIG, the random generator output is passed to each channel's output; when the gate drops, the last value is held.
   1093 
   1094 The display can be interacted with directly:
   1095   - A click on the display will jump the outputs to the corresponding value.
   1096   - Clicking and dragging will force the outputs to track the mouse.
   1097 Using these in combination with the S&H mode, where the values will hold until something changes them, makes WALK2 to into a handy X/Y controller.
   1098 
   1099 All discontinuous output jumps, caused by any of these means, are subject to a small amount of slew limitation, to avoid pops.
   1100 
   1101 Various options on the context (right-click) menu allow customization of the display (set the range of the display to +/-10V instead of the default +/-5V; hide the grid dots; set the color of the trace).
   1102 
   1103 _Polyphony:_ The module is monophonic (note that WALK is polyphonic).
   1104 
   1105 _When <a href="#bypassing">bypassed</a>:_ no output.
   1106 
   1107 #### <a name="walk"></a> WALK
   1108 
   1109 WALK is a single-channel random walk, identical to one channel of WALK2, in 3HP.  It has a JUMP input rather than a TRIG input, but the same S&H and T&H modes are available on the context menu.  
   1110 
   1111 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the RATE input.  The polyphony port can be changed to OFFSET, SCALE or JUMP on the context menu.
   1112 
   1113 _When <a href="#bypassing">bypassed</a>:_ no output.
   1114 
   1115 
   1116 ### <a name="sequencers"></a> Sequential Switches and Sequencers
   1117 
   1118 ![Sequencers screenshot 1](doc/www/sequencers1.png)
   1119 
   1120 #### <a name="eightone"></a> 8:1
   1121 
   1122 8:1 is a sequential switch and voltage-addressed switch (multiplexer) at once -- it routes 8 inputs to 1 output according to either a clock or CV input (or both).
   1123 
   1124 As a sequential switch, a trigger at the clock input advances the input selection -- which input is routed to the output.  Like a sequencer, it can be reset with a trigger at RESET; the number of inputs to cycle through may be set with the STEPS knob; and the direction is set with the FWD/REV switch.
   1125 
   1126 As a multiplexer, it routes an input to the output under control of the SELECT knob and CV.  A -10-10V CV, divided into 16 equal divisions of 1.25V, controls the input selection.  A CV between +/-1.25V does nothing; a voltage of 1.25-2.49V will add 1 step to the selection, a voltage between -1.25V and -2.49V will subtract one step, and so on.  This value is summed with the knob setting; for example, setting the knob to 4 and inputting a 2.6V CV will send input 6 to the output.  When the knob-plus-CV value exceeds 8, it wraps around.
   1127 
   1128 Both functions may be used simultaneously: the SELECT+CV value is added to the sequential/clocked value, wrapping around.  Note that by default the STEPS value only affects the sequential value; for example, using a clock input and setting STEPS to 2 will yield an alternation between two adjacent inputs, but this pair can be selected with the SELECT knob or CV.  The context (right-click) menu option "Wrap select at steps" changes this, such that the SELECT+CV value wraps at the value of STEPS.  In this case, for example, if STEPS is 2 and SELECT+CV is 1, the sequence will alternate between steps 1 and 2, but on a reset, the sequence will reset to step 2.
   1129 
   1130 If option "Reverse step on negative clock" is enabled, negative or inverted clock pulses (e.g. a pulse from 0V to -5V) will step backwards.  This is still affected by the FWD/REV switch; if the switch is at REV, then a positive clock steps backwards and a negative clock forwards.  This negative-clock behavior can be used to achieve voltage control over the sequence direction (the utility module <a href="#inv">INV</a> can help here).
   1131 
   1132 If option "Select on clock mode" is selected, then the select value (knob and CV) is checked and used to modify the active step only when a clock is received, rather than continuously.
   1133 
   1134 Option "Triggered select mode" changes how the SELECT feature works, replacing the continuous voltage selection with a second internal sequence that offsets (adds to) the primary sequential switch step.  In this mode, the SELECT input expects trigger pulses, which advance the secondary sequence, while the SELECT knob sets the length of the secondary sequence (and a trigger at RESET will reset it). Thus different clocks and step lengths can be used to create complex output step patterns. "Select on clock mode" has no effect if "Triggered select mode" is enabled.
   1135 
   1136 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the CLOCK input.  This can be set to the SELECT CV input on the context menu.
   1137 
   1138 _When <a href="#bypassing">bypassed</a>:_ passes input 1 unmodified to the output.
   1139 
   1140 #### <a name="oneeight"></a> 1:8
   1141 
   1142 1:8 is the opposite of 8:1 -- it routes a single input to 1 of 8 outputs.  The control circuit behavior (CLOCK, SELECT, etc) is the same.
   1143 
   1144 _Polyphony:_ Same as 8:1.
   1145 
   1146 _When <a href="#bypassing">bypassed</a>:_ passes the input unmodified to output 1.
   1147 
   1148 #### <a name="addrseq"></a> ADDR-SEQ
   1149 
   1150 ADDR-SEQ is an 8-step sequencer where the step values are set by 8 knobs (with default output range of +/-10V).  It has the same clocked or voltage-addressed control circuit as 8:1 and 1:8.  It can be expanded to more steps, 8 at a time, with <a href="#addrseqx">ASX</a>.
   1151 
   1152 The output range of the knobs may be set on the context (right-click) menu to a variety of bipolar (e.g. +/-5V) and unipolar ranges (e.g. 0-5V).
   1153 
   1154 _Polyphony:_ Same as 8:1.
   1155 
   1156 _When <a href="#bypassing">bypassed</a>:_ no output.
   1157 
   1158 #### <a name="addrseqx"></a> ASX
   1159 
   1160 ASX is a chainable expander for <a href="addrseq">ADDR-SEQ</a>, adding 8 steps to the base sequence.
   1161 
   1162 When ASXs are added to an ADDR-SEQ, ADDR-SEQ's STEPS and SELECT knobs (and select CV input) work over the total number of steps, including the expanders.  The knob dials will still read 1-8, but the knob will set the step length (or step selection) over the full count of steps.  The parameter tooltips, if enabled, will show the real values.
   1163 
   1164 Each ASX in a chain must be positioned to the right of, and adjacent to, the previous ASX in the chain, or the base ADDR-SEQ module.  See <a href="#expanders">notes on expanders</a>.
   1165 
   1166 ![Sequencers screenshot 2](doc/www/sequencers2.png)
   1167 
   1168 #### <a name="pgmr"></a> PGMR
   1169 
   1170 PGMR is a four-step programmer, or sequencer with the ability to select the current step manually or by CV.  It is expandable with PGMRX, to add four more steps.  Multiple PGMRXs can be chained on, to add arbitrarily many steps, four at a time.
   1171 
   1172 For each step, four knobs A, B, C, D control the voltage that will go to the corresponding output when that step is selected.  As with ADDR-SEQ, the output range of the knobs can be set on the context menu.
   1173 
   1174 The current step can be selected many ways:
   1175   - By pressing the button, or sending a trigger to the SELECT input, for a given step.
   1176   - By inputs to CLOCK and/or SELECT, subject to the FWD and S.O.C. ("Select On Clock") toggles.  The behavior of these is the same as it is on <a href="#eightone">8:1</a> (and 1:8 and ADDR-SEQ), with the exception that the voltage range to the SELECT input is divided by the number of steps present on PGMR and all its connected PGMRX instances (where the division is always by 8 -- 16 if you consider negative voltages -- on 8:1).
   1177 
   1178 The leftmost bottom output emits a trigger whenever the step changes.  The outputs below each channel selector emit a trigger when that step is selected.
   1179 
   1180 If context-menu option "Save last selected step to patch" is enabled, PGMR will remember the last selected step in the patch, and restore it on patch load.  This is the last step selected by pressing a step button, or triggering a step -- any effect from CLOCK or SELECT always follows the current state of the patch as it runs.
   1181 
   1182 Any PGMRX expanders must be positioned to the right of, and ajacent to, the base PGMR module, or the previous PGMRX in the chain.  See <a href="#expanders">notes on expanders</a>.
   1183 
   1184 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the CLOCK input.  This can be set to the SELECT CV input on the context menu.
   1185 
   1186 _When <a href="#bypassing">bypassed</a>:_ no output.
   1187 
   1188 #### <a name="pgmrx"></a> PGMRX
   1189 
   1190 A chainable expander for PGMR.  Each instance adds four more steps to the base sequence.
   1191 
   1192 Each PGMRX in a chain must be positioned to the right of, and ajacent to, the previous PGMRX in the chain, or the base PGMR module.  See <a href="#expanders">notes on expanders</a>.
   1193 
   1194 
   1195 ### <a name="visualizers"></a> Visualizers
   1196 
   1197 ![ANALYZER screenshot](doc/www/visualizers.png)
   1198 
   1199 #### <a name="vu"></a> VU
   1200 
   1201 A stereo signal level visualizer/meter.  The L channel is sent to both displays if if nothing is patched to R.  Inputs to L and R are copied to the L and R outputs.
   1202 
   1203 _Polyphony:_ Monophonic, but if an input is polyphonic, its channels are summed, and summed value is used to compute the level displayed (independently for the left and right inputs).
   1204 
   1205 _When <a href="#bypassing">bypassed</a>:_ passes left and right inputs unmodified to the corresponding outputs.
   1206 
   1207 #### <a name="analyzer"></a> ANALYZER
   1208 
   1209 A four-channel spectrum analyzer.
   1210 
   1211 Features:
   1212   - Range setting: smoothly scrolls the displayed frequency range, from just the lower 10% at full counter-clockwise, to the entire range (up to half the sampling rate) at noon, to the upper 20% at full clockwise.
   1213   - Smooth setting: controls how many analysis frames will be averaged to drive the display.  A higher setting reduces jitter, at the expense of time lag.  For convenience, the knob setting is time-valued, from zero to half a second (internally this is converted to an integer averaging factor based on the sample rate and other settings).
   1214   - Quality setting: changes the FFT window size.  Higher settings yield finer frequency resolution, at a higher CPU cost.  The levels and sizes are: GOOD (1024 samples), HIGH (2048 samples) and ULTRA (4096 samples).  If Rack's sample rate is 96khz or higher, the sizes are doubled.
   1215   - Window setting: sets the window function applied to the input to the FFT.  The options are Kaiser, Hamming and none/square.  The default, Kaiser, is probably best for most purposes.
   1216   - Each channel has a THRU output, which passes the corresponding input through unchanged.
   1217   - On the context (right-click) menu, the display vertical (amplitude) range can be set to extend down to -120dB (the default is -60dB); alternately it can be set to to display linearly, with the amplitude expressed as a percentage, where 100% is equivalent to 0dB.
   1218   - By default the frequency axis has a logarithmic plot; this can be set to linear on the context menu.
   1219   - When one clicks and holds on the display, the display freezes, and:
   1220     - The frequency analysis bin under the mouse pointer is highlighted.
   1221     - An overlay box is displayed, with details about the bin number and frequency range, and the level in decibels for each signal at that frequency range.
   1222     - Dragging the mouse left and right will update the highlight and overlay.
   1223     - While the mouse is held, the left and right keyboard keys can be used to change the analysis being displayed, up or down.  Moving the mouse resets any bin offset introduced this way.  This can be used to get to a specific bin in cases where the mouse tracking resolution is larger than the bin width (which can happen at higher frequencies).
   1224 
   1225 _Polyphony:_ Monophonic, with two exceptions:
   1226   - If an input is polyphonic, its channels are summed, and the spectra of the summed signal is displayed.
   1227   - A polyphonic input is copied unchanged (channels intact) to THRU.
   1228 
   1229 #### <a name="analyzerxl"></a> ANALYZER-XL
   1230 
   1231 ![ANALYZER-XL screenshot](doc/www/visualizers2.png)
   1232 
   1233 An eight-channel, 42HP version of ANALYZER, with edge-to-edge-screen design.  Options corresponding to ANALYZER's panel controls are available on the context (right-click) menu.  An extra "Quality" setting, "Ultra+" is available; this uses an FFT size of 16384 (or 32768 if Rack's sample rate is 96khz or higher).
   1234 
   1235 **Note:** Most of the surface of ANALYZER-XL is its display, and clicking the mouse on the display will trigger the freeze function described in the notes on <a href="analyzer">ANALYZER</a>.  This may be confusing if you're trying to click and drag on the module to move it.  To move the module, click near the left edge, for example on the module's name.
   1236 
   1237 _Polyphony:_ Monophonic, but if an input is polyphonic, its channels are summed, and the spectra of the summed signal is displayed.
   1238 
   1239 #### <a name="ranalyzer"></a> RANALYZER
   1240 
   1241 ![RANALYZER screenshot](doc/www/visualizers3.png)
   1242 
   1243 RANALYZER is a frequency response analyzer: it passes a test signal to another module, expecting the output of that module to be patched back, and then displays the frequency spectrum of the response relative to the test signal.
   1244 
   1245 **This module is primarily useful to plugin developers**, especially when developing filters.  Of course anyone may use it, to investigate the response of some module, or to tune a filter bank, or what have you.
   1246 
   1247 By default, will produce a one-shot test signal, emitted at SEND, upon receipt of a trigger (manual or CV) at the TRIG inputs.  The duration of the test signal is always 16384 samples (32768 if Rack's sample rate is 96K or higher) -- the duration in time will depend on Rack's current sample rate.  The same number of samples is collected from RETURN, if it is patched.  Both signals are converted to the frequency domain and displayed (test in green, response in magenta), along with an analysis trace (orange), which shows the difference between the response and the test signals, in the frequency domain, in decibels.  The context-menu option "Display traces" controls which of the traces are displayed.
   1248 
   1249 A window function is optionally applied to the signals as they are converted to the frequency domain; this cleans up noise that otherwise shows up in the signal plots as an artifact of the conversion.  It also slightly distorts the displayed signals.  The default "taper" window minimizes the distortion; Hamming and Kaiser windows are also available.  The window can be selected or disabled on the context menu.  The window is not applied to the test signal before it is emitted at SEND.
   1250 
   1251 The test signal is a swept sine wave (or "chirp", see also <a href="#chirp">CHIRP</a>), with an exponential (if the EXP toggle is on) or linear sweep.  The start and end frequencies for sine sweep are set by the FREQ1 and FREQ2 knobs, each with a range in hertz from 1 to a bit less than the Nyquist rate (half the sampling rate); if FREQ1 is less than FREQ2 the sweep is upwards in frequency, downwards otherwise.
   1252 
   1253 Patching an input to TEST overrides the swept sine generator; the TEST input is used as the test signal.
   1254 
   1255 If the LOOP toggle is enabled, the module continuously outputs, collects and displays the test, response and analysis signals.  Regardless of whether the collection cycle is triggered or looped, a pulse is emitted at the TRIG output when the cycle begins, and at the EOC output when it ends.
   1256 
   1257 The R. DELAY (response delay) control allows sample-accurate alignment of the test and response signals for analysis.  When SEND is patched directly to the module to be analyzed, and that module's output is patched directly back to RETURN, and the analyzed module does not impose an internal sample delay, then the returned signal will be received by RANALYZER two samples later, relative to the test sample RANALYZER emits.  More complicated patches between SEND and RETURN, or modules under test which have internal sample delays, can increase this, in which case R. DELAY may be set to whatever this actual sample delay is.  In practice, getting this exactly right will likely not be very important.
   1258 
   1259 The context-menu option "Trigger on load", if enabled, will auto-trigger the test cycle when the module loads or when the patch loads.  This has no effect if LOOP is enabled when the patch loads.
   1260 
   1261 The display's frequency and amplitude ranges and plot types (logarithmic vs linear) can be set to a few different values on the context menu.
   1262 
   1263 **Note:** Most of the surface of RANALYZER is its display, and clicking the mouse on the display will trigger the freeze function described in the notes on <a href="analyzer">ANALYZER</a>.  This may be confusing if you're trying to click and drag on the module to move it.  To move the module, click near the left edge, for example on the module's name.
   1264 
   1265 _Polyphony:_ Monophonic.
   1266 
   1267 
   1268 ### <a name="poly"></a> Polyphony Utilities
   1269 
   1270 ![Polyphony utilities screenshot 1](doc/www/poly1.png)
   1271 
   1272 #### <a name="mono"></a> MONO
   1273 
   1274 MONO mixes down the channels of a polyphonic cable to a single-channel mono output.  It is an alternative to the SUM module that comes with VCV Rack, but adds a basic onboard compressor, to even out the level differences when only a few, or many, channels on the input are sounding.  The COMP control sets the amount of compression; at zero there is no effect and the behavior of this module is essentially equivalent to Rack's SUM.  As with SUM, the LEVEL control simply attenuates the output.  The output, post-LEVEL, is saturated (soft-clipped) at +/-12V.
   1275 
   1276 _When <a href="#bypassing">bypassed</a>:_ no output.
   1277 
   1278 #### <a name="arp"></a> ARP
   1279 
   1280 ARP is a performance-oriented arpeggiator, where the arpeggiated notes come from polyphonic pitch and gate inputs.  It is designed to patched directly to Rack's MIDI-CV (with polyphony enabled) and be played with a MIDI keyboard.  As below, it can be controlled by other modules as well, though this needs to be done carefully.
   1281 
   1282 When a gate goes high on a poly channel of the GATE input, the pitch of the corresponding poly channel from the V/OCT input is added as a note to the arpeggio. (Thus, if ARP is patched to MIDI-CV, pressing a key on your MIDI controller adds a note to the arpeggio.)
   1283 
   1284 The arpeggio is played back under control of the input at CLOCK, which is required for the module to do anything, at the rate of one note per clock pulse.
   1285 
   1286 MODE controls how the arpeggio plays back:
   1287   - UP: play the current notes in ascending pitch order.
   1288   - DN (down): play the notes in descending pitch order.
   1289   - PD (pendulum): play the notes up, then down, without repeating the minimum and maximum notes.
   1290   - PR (pendulum repeat): play the notes up, then down, repeating the min and max notes.
   1291   - IO (in order): play the notes in the order they were played into the module.
   1292   - RD (random): play random notes from the arpeggio; notes may repeat.
   1293   - SH (shuffle): on each arpeggio, play each note once, but in random order.  Repeated notes may still occur, but only when the last note of a sequence happens to be the same as the randomly-selected first note of the next sequence.
   1294 
   1295 The GATE knob sets the output gate length for each played note, as a proportion of the time between the last two clock pulses.  The minimum gate pulse is 1ms; if the knob is turned all the way up, the gate does not drop between notes.  Using an irregular clock, or starting and stopping the clock, will confuse the calculation of the clock rate and produce odd results.  To avoid these problems, if they come up, the context menu option "Max gate length" may be set to "Fixed": in this mode, the gate length is set by the GATE knob to a value from 1ms up to 500ms, without reference to the clock.
   1296 
   1297 HOLD latches the arpeggio, such that it keeps playing even when all input gates are low.  Once all gates are low, a new gate will start adding notes to a new arpeggio.  Notes will be added to the current arpeggio as long as any gate is high.
   1298 
   1299 A trigger at the RESET input will reset the playback of the current arpeggio on the next received clock.  
   1300 
   1301 By default, new notes recorded by the module are incorporated into the playing arpeggio only when the arpeggio restarts on its first note.  On the context (right click) menu, the "Use new notes" setting can be changed such that notes have immediate effect.  
   1302 
   1303 The outputs are always monophonic -- patch ARP into ASSIGN to play an arpeggio through a poly voice.
   1304 
   1305 **To control ARP from modules other than MIDI-CV**, you'll at minimum need to create a polyphonic pitch signal (with Rack's MERGE or something else) and connect it to V/OCT.  Then you'll need gates:
   1306   - With a monophonic gate input, whenever the gate goes high, the pitches of the arpeggio will be set per the poly channels on the V/OCT input, reading in order from channel 1.  So if the gate goes high while V/OCT is getting a four-channel poly input with voltages corresponding to C3, E3, G3 and B3, the arpeggio will be set to those four notes.
   1307   - With a polyphonic gate input, the effect is like pressing a key on a MIDI controller to trigger a gate on a poly channel.  ARP will see a new note using the pitch of the corresponding poly channel on V/OCT.  *You will get strange results if the V/OCT and GATE inputs have a different number of poly channels.*
   1308 
   1309 Note that the HOLD toggle and "Use new notes" menu setting still apply however you control ARP.  If not playing from a keyboard, it will usually make sense to toggle HOLD on and set "Use new notes" to "Immediately".  
   1310 
   1311 _When <a href="#bypassing">bypassed</a>:_ no output.
   1312 
   1313 #### <a name="assign"></a> ASSIGN
   1314 
   1315 ASSIGN is a mono-to-poly voice assigner and poly-to-poly voice reassigner (where the in and out channel counts may be different).  Mono vs poly operation is defined the poly channel count on the GATE input.
   1316 
   1317 One use of the module is to play a (monophonic) sequence through a polyphonic voice, such that envelope tails may ring out.
   1318 
   1319 With mono inputs, on each gate received at GATE, the current pitch at V/OCT is assigned to a poly channel at the V/OCT output, and a gate is output on the same channel at the GATE output.  (The output gate will drop when the input gate does.)  Voices are assigned by increasing channel number, up to the number of channels set by the CHAN knob, at which point channels are reused in order starting with channel 1.  A trigger at the RESET input resets the next assignment to channel 1.
   1320 
   1321 With polyphonic inputs, when a gate goes high on an input channel, the gate and corresponding pitch are assigned to an output channel.  Up to the number of channels defined by the CHAN knob may be output at once.  The module attempts to reuse free channels; if none are free the oldest assignment is replaced.
   1322 
   1323 _When <a href="#bypassing">bypassed</a>:_ no output.
   1324 
   1325 #### <a name="unison"></a> UNISON
   1326 
   1327 UNISON allows for unison-mode play of a polyphonic voice, where monophonic pitch and gate inputs are copied out to multiple polyphonic channels, as set by the CHAN knob.
   1328 
   1329 DETUNE allows detuning the pitches sent out to the poly channels up to half a semitone (50 cents).  DETUNE may take a CV, which if present is attenuated by the knob position.
   1330 
   1331 The behavior of DETUNE depends on the number of output channels:
   1332   - With one channel, the unaltered input pitch is sent to the one output channel.
   1333   - With two channels, one channel is tuned up by the full detune amount, while the other is tuned down the full amount.
   1334   - With three channels, one channel gets the input pitch, while the other two are tuned up and down the full detune amount.
   1335   - With four channels, a channel gets each of: up and down the full amount and up and down half the amount.
   1336   - And so on, such that the detune amounts are evenly spread, and one channel gets the unaltered pitch if and only if the channel count is odd.
   1337 
   1338 _When <a href="#bypassing">bypassed</a>:_ no output.
   1339 
   1340 ![Polyphony utilities screenshot 2](doc/www/poly2.png)
   1341 
   1342 #### <a name="polycon"></a> POLYCON16
   1343 
   1344 POLYCON16 allows fixed voltages to be sent directly to some number of channels, by channel number, of a polyphonic output.  The number of output channels is set by the CHAN knob, unless an input is present at the CHAN input, in which case the channel count is taken from that input, and the knob is ignored.
   1345 
   1346 This can be used to introduce a bit of fixed variation across the channels of a poly voice.
   1347 
   1348 The context menu option range allows the output voltages to be set from several bipolar and unipolar ranges.  Note that when a unipolar range is used, 0V will be output when the knob is fully counter-clockwise, even though the knobs are drawn with a bipolar dial (such that 0V is usually at noon).
   1349 
   1350 _When <a href="#bypassing">bypassed</a>:_ no output.
   1351 
   1352 #### <a name="polycon8"></a> POLYCON8
   1353 
   1354 A compact version of POLYCON16, that only works with polyphony channels 1-8.  The channel count must be set on the context (right-click) menu.
   1355 
   1356 _When <a href="#bypassing">bypassed</a>:_ no output.
   1357 
   1358 #### <a name="polyoff16"></a> POLYOFF16
   1359 
   1360 POLYOFF16 allows for the independent offset and scaling of voltages on each channel of a polyphonic signal.  It can also be used as a replacement for Rack's MERGE, which combines monophonic signals into a polyphonic signal, but here with per-channel offset and scale controls.
   1361 
   1362 The mode of operation is determined by the presence of an input at IN.  With an input:
   1363   - The number of output polyphony channels is set equal to the number of channels on the input, and the CHAN knob is ignored.
   1364   - The voltage of each polyphony channel on the input is processed by the corresponding OFFSET and SCALE knobs.
   1365   - The offset for each channel may be CV-controlled by a (monophonic) input at at its corresponding CV port; the CV inputs expect +/-5V and are attenuverted by the OFFSET knob.
   1366 
   1367 With no input at IN:
   1368   - The output channels are set by the CHAN knob.
   1369   - A monophonic voltage may be provided at each channel's IN port; this is processed by the channel's OFFSET and SCALE before being merged into the polyphonic output.
   1370   - With no input to a channel, the output voltage is just set by the channel's knobs.
   1371 
   1372 The module has the same "Range" context-menu options as POLYCON16, here altering the OFFSET voltages.
   1373 
   1374 The context-menu option "Order of operations" sets the order in which OFFSET and SCALE are applied to each channel.  The default is to scale, then offset.  This behavior was the opposite prior to version 1.1.36.  See <a href="#offset">OFFSET</a> for more detail on this; the behavior is the same here.
   1375 
   1376 _When <a href="#bypassing">bypassed</a>:_ no output.
   1377 
   1378 #### <a name="polyoff8"></a> POLYOFF8
   1379 
   1380 A half-width version of POLYCON16, that only works with polyphony channels 1-8.
   1381 
   1382 _When <a href="#bypassing">bypassed</a>:_ no output.
   1383 
   1384 #### <a name="polymult"></a> POLYMULT
   1385 
   1386 POLYMULT will turn a mono signal into a polyphonic signal, with a given number of channels, where each channel gets a copy of the input voltage.  The number of channels is set by the CHAN knob, unless an input is present at the CHAN input, in which case:
   1387   - If the signal at CHAN is polyphonic, the channel count is taken from that signal, and the knob is ignored.
   1388   - If the signal at CHAN is monophonic, it acts as a CV (0-10V), selecting the channel count up to the maximum set by the knob.
   1389 
   1390 Each OUT output is identical.  To simply make copies of an already-polyphonic signal, use the regular <a href="#mult">MULT</a> module.  If the input is a polyphonic singal, only the first channel is used to produce the outputs.
   1391 
   1392 _When <a href="#bypassing">bypassed</a>:_ no output.
   1393 
   1394 
   1395 ### <a name="pitch"></a> Pitch CV Utilities
   1396 
   1397 Utilities related to processing pitch CVs (1 volt / octave CVs, for controlling the pitch of oscillators).
   1398 
   1399 ![Pitch utilities screenshot](doc/www/pitch.png)
   1400 
   1401 #### <a name="detune"></a> DETUNE
   1402 
   1403 A 1V/octave pitch processor, for controlling a detuned oscillator pair.  A reference pitch in raised and lowered by the number of cents (hundredths of a semitone) specified by the knob and CV, and emitted at OUT+ and OUT-.  The input pitch is emitted at THRU.
   1404 
   1405 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the V/OCT input.
   1406 
   1407 _When <a href="#bypassing">bypassed</a>:_ passes V/OCT unmodified to each of the three outputs.
   1408 
   1409 #### <a name="stack"></a> STACK
   1410 
   1411 A 1V/octave pitch processor for stacking oscillators.  The SEMIS, OCTAVE and FINE knobs determine an interval (up or down) to apply to the input pitch and send to OUT.  The input pitch is sent unmodified to THRU, for ease of chaining multiple STACKs to control multiple oscillators, e.g. to create chords.
   1412 
   1413 The CV input expects +/-5V; the value modifies the interval set by the knobs in the amount of one semitone per tenth volt.  If QZ (quantize) is active, the CV-controlled interval is quantized to the nearest semitone.  This specialized CV is output at the THRU port, with a value set by the knobs and CV in, when there is no input pitch.
   1414 
   1415 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the V/OCT input.
   1416 
   1417 _When <a href="#bypassing">bypassed</a>:_ passes V/OCT unmodified to both THRU and OUT.
   1418 
   1419 #### <a name="reftone"></a> REFTONE
   1420 
   1421 A tuner that outputs a selectable (Western, chromatic) pitch as CV (1V/octave, for controlling an oscillator) or as a pure sine tone.  The base pitch is selected with the PITCH and OCTAVE knobs, while the FINE knob allows the output to be fine-tuned up or down a full semitone.  The LED-style display indicates the selected pitch, octave and fine tuning (in cents), and the corresponding frequency (in hertz).
   1422 
   1423 _Polyphony:_ Monophonic.
   1424 
   1425 _When <a href="#bypassing">bypassed</a>:_ no output.
   1426 
   1427 
   1428 ### <a name="utilities"></a> Utilities
   1429 
   1430 ![Utilities screenshot](doc/www/utilities.png)
   1431 
   1432 #### <a name="bool"></a> BOOL
   1433 
   1434 A boolean logic utility.  Inputs are considered true if the input voltage is greater than 1V.  The top section takes two inputs and computes AND, OR and XOR at the outputs.  The lower section computes the negation of its input.  Output is 5V if an output is true, 0V otherwise.
   1435 
   1436 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the first/topmost input. The NOT circuit is independently polyphonic based on its input.
   1437 
   1438 _When <a href="#bypassing">bypassed</a>:_ no output.
   1439 
   1440 #### <a name="cmp"></a> CMP
   1441 
   1442 CMP is a window comparator.  It takes two inputs, A and B, which normal to 0V.  Each is summed with the value of its corresponding offset knob and clipped to +/-12V.  The four outputs indicate the relative values of A and B:
   1443 
   1444  - A>=B will output high if A is greater than or exactly equal to B.
   1445  - A<B will output high if A is less than B.
   1446  - EQ will output high if the difference between A and B are less than or equal to the window voltage.
   1447  - NOT will output high if EQ is low.
   1448 
   1449 The WINDOW knob specifies the window voltage.  LAG specifies a time of up to one second by which a change in the output will lag a change in the inputs states; if the input state switches back before the lag expires, the output does not change. WINDOW and LAG each take a unipolar (0-10V) voltage, each of which is attenuated by the corresponding knob.
   1450 
   1451 The OUTPUT switch sets the high and low voltage values for the outputs: 0V low/+10V high, or -5V low/+5V high.
   1452 
   1453 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the A input.
   1454 
   1455 _When <a href="#bypassing">bypassed</a>:_ no output.
   1456 
   1457 #### <a name="cvd"></a> CVD
   1458 
   1459 A simple delay designed for use with CV (though it works fine with audio).  Use it to delay triggers or gates, create a flip-flop that resets itself after a time, make a sequence run for a while then stop, double up an envelope, or what have you.
   1460 
   1461 The large TIME knob sets the delay time, in seconds, as scaled by the small knob (up to 0.1, 1 or 10 seconds); TIME takes a 0-10V CV, attenuated by the knob.  Reducing time truncates the internal delay buffer.  The DRY/WET knob sets the mix of the original and delayed signals at the output, with a +/-5V CV input.
   1462 
   1463 CVD may be used for lag/latency correction; using parameter entry (by right-clicking the TIME knob) is handy here, to set a precise delay.  You can get sample-accurate delays by dividing the desired number of delay samples by Rack's current sample rate, and setting TIME to that number (leave the time scale knob at 1).
   1464 
   1465 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the IN input.
   1466 
   1467 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
   1468 
   1469 #### <a name="flipflop"></a> FLIPFLOP
   1470 
   1471 A boolean memory utility with two independent channels.  A high voltage at TRIGGER will cause the state of a channel to change from A to B.  A subsequent trigger will flip it back.  Output is 5V at whichever of A and B is selected, 0V at the other.  A trigger voltage at RESET sets the channel back to state A.
   1472 
   1473 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the channels at the TRIG input, independently for the two sections of the module.
   1474 
   1475 _When <a href="#bypassing">bypassed</a>:_ no output.
   1476 
   1477 #### <a name="inv"></a> INV
   1478 
   1479 A dual signal inverter, with CV or manual control, and optional latching.  In each section separately, the signal at IN is inverted and sent to OUT when the button is held an input voltage at GATE is high, and passed to OUT unchanged otherwise.
   1480 
   1481 If LATCH is enabled, a button press or high voltage toggles the state of the inverter.  A context menu option "Save latched state to patch" will, if latching is enabled, save the latched state to the patch and restore it on patch load.
   1482 
   1483 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the channels at the IN input, independently for the two sections of the module.
   1484 
   1485 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT independently in each channel.
   1486 
   1487 #### <a name="manual"></a> MANUAL
   1488 
   1489 A manual trigger/gate with 8 outputs.  A constant +5V is sent from each output for as long as the TRIG button is held; 0V is output otherwise.  The high output voltage may be set to +10V on the context menu.
   1490 
   1491 MANUAL may be set to output a trigger pulse (the high output voltage for 10ms) on patch load (akin to a Max/Msp loadbang).  This is off by default; enable clicking "Trigger on load" on the module's context (right-click) menu.  The pulse is emitted 100ms after the patch starts processing samples.
   1492 
   1493 _Polyphony:_ Monophonic.
   1494 
   1495 _When <a href="#bypassing">bypassed</a>:_ no output; disables "Trigger on load".
   1496 
   1497 #### <a name="fourman"></a> 4MAN
   1498 
   1499 A version of MANUAL with four independent trigger buttons with separate outputs.
   1500 
   1501 The "Trigger on load" and "Output" options, as on MANUAL, apply to all four outputs if enabled.
   1502 
   1503 _Polyphony:_ Monophonic.
   1504 
   1505 _When <a href="#bypassing">bypassed</a>:_ no output.
   1506 
   1507 #### <a name="mult"></a> MULT
   1508 
   1509 A 3 HP multiple (signal splitter or duplicator).  There are two 1-to-3 channels.  There is also a 1-to-6 mode: if nothing is patched to the second channel's input, the input to the first channel is copied to all six outputs.
   1510 
   1511 _Polyphony:_ Polyphonic inputs are duplicated (channels intact) at their corresponding outputs.
   1512 
   1513 _When <a href="#bypassing">bypassed</a>:_ no output.
   1514 
   1515 #### <a name="offset"></a> OFFSET
   1516 
   1517 An offset and scaler.  The OFFSET and SCALE knobs have CV inputs (unipolar, 0-10V).  There are two operating modes, as set by the "Order of operations" context (right-click) menu option:
   1518 
   1519   - Scale, then offset (the default): the output is `(input * scale) + output`.  With no input connected, the output is just `offset`.
   1520 
   1521   - Offset, then scale: the output is `(input + offset) * scale`.  With no input connected, the output is `offset * scale`.
   1522 
   1523 Note that prior to version 1.1.36, there was no mode setting, and the behavior was to offset, then scale.  This behavior change might affect older patches.
   1524 
   1525 By default, the output is capped at +/-12 volts (this is a standard in Rack).  A context menu option allows this limit to be disabled.
   1526 
   1527 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the channels of the IN input.
   1528 
   1529 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
   1530 
   1531 #### <a name="slew"></a> SLEW
   1532 
   1533 A slew limiter - when the input changes rapidly, the output changes less rapidly, lagging the input.
   1534 
   1535 The rising and falling slew rates and shapes are set independently.  The RISE and FALL time knobs are calibrated to set the time the output would need to catch up to a 10V change in the input.
   1536 
   1537 The RISE and FALL shape knobs affect the movement of the output as it catches up to the input (the shape it would draw on a scope). The shapes vary between log, linear and exponential curves.
   1538 
   1539 RISE and FALL each have a unipolar (0-10V) CV input affecting the corresponding slew rate.
   1540 
   1541 If SLOW is enabled, the slew rates for both RISE and FALL are 10x slower what they would otherwise be, based on the knobs and CVs.
   1542 
   1543 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the channels of the IN input.
   1544 
   1545 _When <a href="#bypassing">bypassed</a>:_ passes IN unmodified to OUT.
   1546 
   1547 #### <a name="sums"></a> SUMS
   1548 
   1549 An arithmetic logic utility.  The top section outputs the sum, difference, maximum and minimum of its input signals (unpatched inputs send a 0V signal into each computation).  The lower section negates (reverses the sign of) its input.
   1550 
   1551 By default, the output is capped at +/-12 volts (this is a standard in Rack).  A context menu option allows this limit to be disabled.
   1552 
   1553 _Polyphony:_ <a href="#polyphony">polyphonic</a>, with polyphony defined by the first/topmost input.  The NEG circuit is independently polyphonic based on its input.
   1554 
   1555 _When <a href="#bypassing">bypassed</a>:_ no output.
   1556 
   1557 #### <a name="switch"></a> SWITCH
   1558 
   1559 A signal-routing module with two through channels.  If the button is held or the GATE input is high, the HIGH input for each channel is routed to the corresponding OUT.  Otherwise, each LOW input is routed to each OUT.
   1560 
   1561 If LATCH is enabled, a button click or trigger pulse at GATE will toggle the output to HIGH; a second click or trigger resets it to LOW.
   1562 
   1563 If the context menu option "Save latched state to patch" is enabled, and latching is on, the latched state will be preserved in the patch and restored on patch load.  Otherwise the module be in LOW state on patch load.
   1564 
   1565 _Polyphony:_ If polyphonic input is present at GATE, then the module is polyphonic in the standard way, independently switching the independent polyphonic channels on the high/low inputs (the button will switch all channels).  Additionally, if the input at GATE is not present or monophonic, but polyphonic cables are are present at any high/low inputs, and such an input is switched to the output, it is duplicated to the output with channels intact.
   1566 
   1567 _When <a href="#bypassing">bypassed</a>:_  passes LOW unmodified to OUT independently in each channel.
   1568 
   1569 #### <a name="lgsw"></a> LGSW
   1570 
   1571 LGSW is a version of <a href="#switch">SWITCH</a> with two gate inputs and onboard logic.
   1572 
   1573 If nothing is patched to either of the gate inputs, or if just one is patched (either one), the behavior of the module is identical to SWITCH (the logic section has no effect).
   1574 
   1575 If both gate inputs are in use, then the logic will evaluate to true according to the gate states and the logic mode:
   1576   - OR: true if either gate is high.
   1577   - AND: true if both gates are high.
   1578   - XOR: true if exactly one of the gates is high.
   1579   - NOR: true if neither of the gates is high.
   1580   - NAND: true if both gates are low.
   1581 
   1582 When LATCH is off, and both gates are in use, the module outputs the HIGH input whenever the logic is true or the button is held.
   1583 
   1584 When LATCH is on, and both gates are in use, the latch will toggle when the logic state changes, or when the button is pressed.
   1585 
   1586 The logic mode can be set by CV.  Using a CV for the logic overrides whatever selection was made with the small mode-select button.  A O-5V CV will select the mode as:
   1587   - OR: less than 1V.
   1588   - AND: 1V but less than 2V.
   1589   - XOR: 2V but less than 3V.
   1590   - NOR: 3V but less than 4V.
   1591   - NAND: 4V or more.
   1592 
   1593 _Polyphony:_ Same as <a href="#switch">SWITCH</a>, except that the polyphony channel count is set by the topmost gate input only.
   1594 
   1595 _When <a href="#bypassing">bypassed</a>:_ no output.
   1596 
   1597 ### <a name="misc"></a> Miscellaneous
   1598 
   1599 ![Miscellaneous modules screenshot](doc/www/misc.png)
   1600 
   1601 #### <a name="blank3"></a> BLANK3
   1602 
   1603 A 3HP blank panel.
   1604 
   1605 #### <a name="blank6"></a> BLANK6
   1606 
   1607 A 6HP blank panel.
   1608 
   1609 
   1610 ## <a name="polyphony"></a> Note on Polyphony
   1611 
   1612 Most modules in this collection support VCV Rack's polyphony feature according to Rack's <a href="https://vcvrack.com/manual/VoltageStandards.html#polyphony">polyphony standards</a>.
   1613 
   1614 Generally this means that a module with polyphonic support can run up to 16 independent internal "channels".  The number of channels a module will run is defined by the polyphony of the signal (cable) present at a particular, designated input port.  (This will be the pitch input of an oscillator, or the gate input of an envelope, and so on.)  When the input at that port carries more than one channel, the module's outputs will carry the same number of channels.
   1615 
   1616 With secondary inputs (CV inputs), the behavior is usually:
   1617   - If the input signal is monophonic, that single value is used by each channel in the module.
   1618   - If the input is signal is polyphonic, each processing channel will use the value of the corresponding channel of the CV input.  If the CV input does not have as many channels as the module is processing, higher channels will see a zero input from the CV.
   1619 
   1620 Knobs, faders and switches apply equally to all modules channels.  Where a module has indicator lights, these usually display an average value across the active module channels.  (This indicator behavior isn't specified by the standard.)
   1621 
   1622 A few modules are strictly monophonic.  In this case, a polyphonic input will be handled in one of two ways:
   1623   - The polyphonic channels will be summed (typically if the input is designed for audio).
   1624   - The value of the first channel will be used, ignoring others (typically if the input is designed for CV).
   1625 
   1626 See the documentation for each module for notes on any divergence from these basic rules.  Each module's documentation will also indicate which input port defines the module's polyphony.
   1627 
   1628 Other notes:
   1629   - With some modules, it's not obvious which input should define the module's polyphony -- but it is always the case that the channels will be taken from just one input.  For example, with stereo modules with left and right inputs, the left input defines the polyphony of the module.  With mixers like UMIX and MATRIX88, the first input is used.  With some modules, the input to use can be set on the context (right-click) menu.  Each module's documentation will describe which port or optional ports are used for polyphony.
   1630   - Modules with no inputs may still support polyphonic outputs; in this case the polyphony is set on the context (right-click) menu.  NOISE is an example.
   1631   - Some modules are not polyphonic in a strict sense, but have non-standard polyphonic features (see the channel spread feature on MIX4 and MIX8).
   1632 
   1633 Finally, please note that with the addition of polyphony, the term "channels" can have several meanings in this documentation.  Polyphonic modules have up to 16 internal processing "channels", defined by the polyphonic "channels" of their inputs, and carrying over to the polyphonic "channels" of their outputs.  But, elsewhere, MIX8 is an "8-channel" mixer; stereo modules will have left and right "channels"; VCA is a dual module with two independent "channels" (each of which may be polyphonic); ANALYZER has four input "channels" (in that it will display the spectra of four different inputs simultaneously); and so on.
   1634 
   1635 
   1636 ## <a name="expanders"></a> Note on Expanders
   1637 
   1638 A few modules in this collection have expanders.  These will generally do nothing unless they are paired with the base module they're meant to expand.
   1639 
   1640 To pair an expander with its base, the expander **must** be positioned **to the right** of the base module, and **adjacent to** (touching) the base module.  That's all that's required; there is no button or context menu switch to pair modules.  Conversely, there's no button or option that disables the pairing of a base and expander if they're correctly positioned.
   1641 
   1642 Rack allows left expanders as well as right, but to simplify things we've chosen not to use them, allowing only right expansion.  Rack doesn't support expanders above or below the expanded module.
   1643 
   1644 Some expanders may be chainable: multiple instances can be added to continue expanding the base.  In this case, the expanders must all be to the right of the base, and all touching.
   1645 
   1646 
   1647 ## <a name="bypassing"></a> Note on Bypassing
   1648 
   1649 Rack adds a "Bypass" option to the context (right-click) menu on every module.  By default, this fully disables the module (while allowing it to remain patched), such that the module produces no output (or more precisely, constantly outputs 0V).  For some modules, however, it makes more sense to pass the module's unmodified input to the output.
   1650 
   1651 Most Bogaudio modules implement bypassing according these general rules:
   1652   - Modules that generate a signal (VCOs, LFOs, noise/random generators, envelope generators), or combine signals (mixers, logic), typically produce no output.
   1653   - Modules that modify a signal (filters, effects, VCAs, attenuators) typically pass their input to the output.
   1654 
   1655 There are various exceptions and special or ambiguous cases; see the documentation for each module for details on that module's behavior.
   1656 
   1657 
   1658 ## <a name="alternate_panels"></a> Alternate Panels
   1659 
   1660 ![alternate panels image](doc/www/alternate_panels.png)
   1661 
   1662 There are three sets of alternate panels for the modules:
   1663   - Light
   1664   - Dark
   1665   - Dark (low-contrast)
   1666 
   1667 For nearly all modules (ANALYZER-XL is an exception), the panel to use can be set on the module's "Panel" context menu.  Also, a global default can be set for the plugin, with the "Default to..." panel menu options.
   1668 
   1669 When new modules are added to a patch, they are set to use the default panel design (which is Light, unless the default has been changed to something else).  When the default is changed, all modules set to use the default panels will update.  
   1670 
   1671 The default panel set is used when the modules are displayed in Rack's module browser (though, the module browser may not update immediately when the default changes; restarting Rack will force it to).
   1672 
   1673 When a new default panel set is selected, the module places a file named `Bogaudio.json` in your Rack user directory (e.g. `~/Documents/Rack` on Mac), to save the preference.
   1674 
   1675 ## Other Notes
   1676 
   1677 #### <a name="resumeloop"></a> Loop Behavior on Patch Load
   1678 
   1679 Modules Shaper, Shaper+, DADSRH, DADSHR+ and DGATE can each be set to loop.  These modules will automatically being running (looping) when the patch loads if they were looping when the patch was saved.
   1680 
   1681 This behavior can be disabled on a per-module basis by right-clicking the module and unchecking "Resume Loop on Load".
   1682 
   1683 ![Resume Loop on Load menu screenshot](doc/www/resumeloop.png)
   1684 
   1685 
   1686 ## Issues and Feedback
   1687 
   1688 Bug reports and feedback are welcome: please use the [issue tracker](https://github.com/bogaudio/BogaudioModules/issues).
   1689 
   1690 
   1691 ## Acknowledgements
   1692 
   1693 Uses [FFTReal](https://github.com/cyrilcode/fft-real) under the DWTFYWT Public License.
   1694 
   1695 The Github Actions auto-build scripts under [.github/](.github) are originally from [SubmarineFree](https://github.com/david-c14/SubmarineFree) -- thanks @david-c14 and @dewb -- find a detailed explanation [here](https://github.com/david-c14/SubmarineFree/wiki/Cross-compiling-using-github-actions).
   1696 
   1697 Thanks to [@Eurikon](https://github.com/Eurikon) for the low-contrast panel design, and all who contributed to the alternate-panels development on [#47](https://github.com/bogaudio/BogaudioModules/issues/47).