b400v virtual synthesizer (2020)


Screenshot of the B400V virtual synthesizer, designed by Ryan Gaston.

B400V is a bi-timbral polyphonic synthesizer inspired in part by the Buchla 400, Touché, and Thunder. It uses a combination of nonlinear waveshaping, FM, timbre modulation, arbitrary envelope shapes, extensive MIDI data conditioning, and per-parameter triggerable randomization to help me overcome my general aversion to polyphonic synthesizers.

I originally developed B400V after stumbling across original documentation for the Buchla 400 and Touché—two instruments that had long been a source of mystery/intrigue/inspiration to me. Naturally, at the time, I didn’t have access to either instrument…but as I learned more about how they worked simply by reading about them, I started to wonder about how they might sound. I picked out the concepts from each instrument that were most interesting to me, and began sketching out similar structures in Max/MSP during my daily train commute. Eventually, I emerged with a patch that had a fair bit of sonic overlap with these instruments, but a general workflow that suited my specific values re: interaction and performability.

At the time, I had also just acquired a Sensel Morph—which felt like the first MIDI controller I had ever owned that provided effective per-keypress expressive data. I treated B400V in part as a way of exploring polyphonic MIDI control in a way I never had before; it was as much a way of exploring new synthesis ideas as it was a way of really digging into ways to make MIDI work for me.

B400V has two independent layers, each of which contain six identical voices. Each layer can be edited independently, and can be triggered/controlled via direct MIDI input, via MIDI “effects” (more on that in a bit), via the built-in arpeggiator, or via external CV signals applied through a DC-coupled audio interface.

Each voice includes two oscillators: one audio oscillator, and one modulation oscillator. The modulation oscillator may affect the frequency and/or timbre of the main oscillator, and may run at audio or sub-audio rates. The modulation oscillator always tracks the primary oscillator at a user-definable frequency ratio.

“Timbre” control is generated through use of pre-set and user-definable lookup tables. The primary oscillator produces a sine wave whose amplitude is controlled via the Timbre control; the scaled sine wave is used to look up values from the currently selected table. Depending on the contents of the table, a number of timbral effects can be achieved, ranging from the gradual accentuation of high-order harmonics to the introduction of discontinuous audio effects. The modulation oscillator performs “Timbre Modulation” by amplitude modulating the sine wave prior to the lookup table.

The oscillator sound is passed into a resonant lowpass filter, and then into a gate—which, in the style of a lowpass gate, can operate as a lowpass filter, VCA, or combination thereof. The audio signal then goes through a per-voice stereo panning process.

The final version of B400V featured user-definable envelope shapes for frequency, timbre, modulation ratio, modulation index, filter cutoff frequency, and gate level. Eight envelope shapes could be saved for each of these destinations on a per-preset basis; envelope shape selection and global timescale could be controlled via MIDI or internal randomization.

Screenshot of an early version of the B400V virtual synthesizer, designed by Ryan Gaston.

Screenshot of an early version of the B400V virtual synthesizer.

One of the important aspects of B400V is the MIDI effect generator—which assesses incoming MIDI data and uses it to generate strings of MIDI note events which can be used to trigger B400V’s synthesis structures. Possible types of effects include note rearticulations, additive rearticulated transpositions, per-keypress incremental transpositions, randomized transpositions, and similar transformations of velocity values. Certain parameters of the MIDI effect process could be randomized with every incoming keypress, or with each outgoing note event…leading to quite complex relationships between user input gesture and the resulting response. Each of the two layers could be addressed from separate sources, so that one might be triggered via keypresses directly, and the other from the effect generator or external CV inputs.

Nearly every parameter in B400V could be independently randomized; randomization targets are defined using red “LED buttons” near the associated control. Randomization is discrete, triggered by a selected stimulus—in practice, this stimulus was typically an incoming keypress or outgoing note data from the MIDI effect generator, however, external CV and a specific MIDI CC could also be used as the randomization trigger.

In some versions of the B400V app, external audio could be used as a control source, substituting MIDI or CV and using pitch/envelope detection to derive pitch and timing information. External audio could, in some versions, be processed via frequency shifters, variable-width bandpass filters, and injected into the per-voice filter/gate.

Screenshot detailing the dual-layer operation of the B400V virtual synthesizer, designed by Ryan Gaston.

Image detailing dual layer editing on B400V

In most versions of the app, the final audio passed through a complex effect network. Originally designed just to give some extra depth to the internal sound generator, this section eventually evolved into a quite interesting extension of the instrument itself. In includes a chorus/delay with dedicated modulation oscillator, one reverb dedicated to simulating early reflections, one reverb dedicated to simulating late reflections, and a peculiar feedback path that employs bandpass filtering and dynamic frequency shifting to stabilize and focus feedback such that peculiar self-oscillation becomes possible. By using compression-like lookahead envelope following techniques to alter processing variables within the feedback loop(s), continuously evolving reverberant tones become possible.

As with the primary synthesis structure, many aspects of this output processing block may be randomized and dynamically controlled. This can yield everything from the sounds of scraped metallic plates to frequency-shifted delays, trailing chorus, and much more.

Ultimately, many concepts from B400V were modified for use in other projects. The output effect section has been adapted for use in many other applications, including the Memory Collage Scrambler and Multi-Delay + Latching Glitch Processor; the basic synthesis structure was expanded considerably and eventually became the basis of map01 Delta Scan Mapping Interface, map02 Delta Scan Mapping Interface + Windowed Temporal Drag Processor, and other devices in the Mapper series.