Five modules come out of hiding in 2.19, and two things that were quietly wrong got fixed. The fixes are the more useful half of this release if you already have the plugin, so they are written up properly below rather than left as a changelog line.
Sound sources
Wheel is a drone instrument after the hurdy-gurdy. One rosined wheel bows every string at once, and that is the whole idea: the wheel is not perfectly round, its rosin is uneven, and it has a seam where it was joined, so every revolution imposes the same ripple on all six voices together. Six oscillators with six LFOs sound like an organ. Six sharing one slightly irregular modulator sound like one object being played by one person. The trompette’s buzzing bridge is the rhythm section, and hurdy-gurdy rhythm is counted in strokes per turn of the wheel.
Kit is a struck membrane, modelled mode by mode. A drum head is a 2D wave equation on a disc and its solutions are the Bessel modes, so rather than run a mesh over the disc, Kit runs one resonator per mode. That puts every parameter you would want to play in plain sight: strike position becomes a per-mode gain, and muffling becomes the same calculation used subtractively. Ten instruments in the menu, from tom to tabla, and you play the head with the mouse.
Sigma is an additive voice after the Crumar GDS. Nothing generates a waveform or filters anything away: the output is a sum of sines, and every macro is a curve across the partial index rather than a single value. Velocity morphs between two complete spectra instead of scaling one, so a quiet note is a different timbre and not a quieter copy. 16, 32 or 64 partials, sixteen voices, 21 presets.
Sequencing
Trace is a paper loop and four brushes. You draw four CVs onto moving paper, or let the patch draw them, and four read heads play them back. The transport is uncoupled from the brush, which is what separates it from a curve editor: the paper moves whether you are drawing or not, so left of NOW you are editing what just played, right of it you are composing the future, and on it you are performing. Ink is a second dimension, so every lane carries both a value and a weight.
Expanders
OP MORPH sits to the right of Operator and puts the DX7 routing on screen as a matrix, with a field of sixteen of them to travel across. A DX7 algorithm is really a table of modulation and output weights, and once it is a table it is something you can interpolate. Both axes of the field wrap, so you can travel in one direction forever without a routing discontinuity. Four of the fifteen possible modulation edges appear in none of the 32 stock algorithms, and you can reach them here.
Meter locks to a host clock properly now
If you sync Meter to a DAW over MIDI clock, this one matters.
Meter was smoothing the incoming tempo by averaging BPM. Averaging BPM biases the result high whenever the tick intervals are uneven, because the mean of 1/T is not 1/mean(T), and host MIDI clock quantized to the audio block is exactly that: alternating long and short intervals around the true one. With 512-sample blocks, the bias alone walked the clock an eighth note away from the host inside eight seconds. The smoothing now runs on the period.
Two related things were wrong for their own reasons:
Alignment counts ticks now rather than snapping to the nearest one. MIDI clock says nothing about which tick is a beat, so counting is the only way to know. At 24 PPQN the ticks are 20 ms apart, and a host jittering by a fair share of that walks a nearest-tick lock onto its neighbour, where it sits perfectly content one whole tick out.
A reset arms a downbeat instead of firing one. A reset usually arrives while the transport is stopped, because a DAW sends Stop and then Start. The downbeat belongs to the sample playback actually resumes on. One MIDI Stop drives both the reset cable and whatever holds RUN, so Meter was still running when the reset landed and spent beat 1 there.
Custom scales travel between modules now
A SCALE CV of 1V per scale names one of nineteen canonical entries and nothing else. Not a custom mask, not a Scala file, not a scale whose period is not an octave.
Key already solved the transport: its SCALE output is polyphonic, carrying the index on channel 0, the period on channel 1, and the degrees behind them. But every module receiving it read channel 0 only, so they all heard the nearest canonical summary. Pelog arrived as Phrygian.
Nine modules are now wired to read the whole bus: Note, Chance, Fugue, MetaFugue, Muse, Loom, Slide, Chime and Key. Set a Scala file or a non-octave scale on Key and it arrives intact everywhere else. Wheel reads the same bus, so it was born with this.
Two smaller things came with it. Note sizes its matrix bands to the scale rather than always drawing thirteen rows and dimming the unused ones, and it relays the whole bus on its own SCALE output instead of being where the key stops. And Note, Chance and Key now report the scale actually in force rather than the canonical index, which had been announcing “Chromatic” over a Scala scale in the one place you look to find out what key you are in.
Everything else
Static analysis is clean across the plugin’s own sources, with no cppcheck or clang-tidy findings.
Everything is free on the VCV Rack Library. Browse the full set at VCV Rack Modules.