JK's CV Canvas

Type: Module

Category: Oscillators

Updated: Jan 11, 2021

Manufacturer: JKphobic


Create your own custom control signals! JK's CV Canvas lets you draw up to four different control signals, control their playback in various ways, and output them to use in whatever way you like. While primarily created as a "draw your own LFO" module, you're also given control over looping and start/stop/reset controls, allowing some extra flexibility to use this as a custom envelope control even as a sort of "free time" sequencer.

Basics: left-click to draw on any of the four canvas areas with your mouse, hit play in that color's control area, hook up the out to whatever you want to control. It's that easy...but there's plenty more and you can read below for full details/instructions.

Demo video

Line Readers

Each corner of the module contains a line reader which is linked to the similarly colored line in the central window. Each has the same controls.

  • Loop Points ("Range"): Colored knobs set the loop points. Start and end are arbitrary as the leftmost point becomes start while the rightmost becomes end. Input jacks, with associated attenuators, allow for CV control of the loop points.
  • Rate: The white knob sets line read rate, which can be positive or negative (rightward or leftward). A CV input and attenuator are availiable here as well. For reference, note that, when the knob is set to 100% and the loop points are fully at either end, it takes 1 second to read the full line (i.e., the frequency is 1 Hz). Setting the rate value very low results in very slow playback, turning the drawn data into something more like automation control.
  • Start: Starts the line reader running. Can be triggered with CV input.
  • Stop: Stops line reader. Can be triggered with CV input.
  • Reset: Resets the read position to loop start. Can be triggered with CV input.
  • Lag: Smooths the output by limiting its rate of change.
  • Loop: Toggle to loop playback (default behavior). Turn off to enable one-shot mode. In one shot mode, the play button/trigger also resets play position.
  • Polarity: Define whether the line operates in bipolar (on) or unipolar (off) fashion. This also affects some of the special drawing functions below.
  • Attenuator: Sets the amplitude attenuation of the final voltage output.
  • Out: This is the thing where the things come out.


  • Left-click: Set a point.
  • Left-click and drag: Draw a line.
  • Left-click + Ctrl: Fine smooth. (Retains most of the drawn line but rounds off sharp corners.)
  • Left-click + Shift: Coarse smooth. (Heavy smoothing, turning entire line into more gradual curves.)
  • Left-click + Alt: Clear line. (Set to bottom for unipolar, center for bipolar.)
  • Right-click: Open drawing menu.

Drawing Menu Functions

Top Level Functions

Common useful operations.

  • Copy: Copy selected line.
  • Paste: Paste copied line. (Note: Copy and Paste functions also work between separate instances of CV Canvas.)
  • Clear: Clear all points to polarity-dependent zero. Same as Left-click + Alt.

Transform Sub-Menu

Operations that change the existing line in various ways.

  • Invert: Flip the line's points along the horizontal center.
  • Reverse: Flip the line's points along the vertical center.
  • Fine Smooth: Rounds sharp corners. Same as Left-click + Ctrl.
  • Coarse Smooth: Heavy smoothing. Same as Left-click + Shift.
  • Add Noise: Adjust each point up or down by a small random amount.

Load Sub-Menu

Load from a small selection of preset lines.

  • Ramp Up: Draw a straight line from 0 to 5.
  • Ramp Down: Draw a straight line from 5 to 0.
  • Triggers (4, 8, or 16): Zero the line, then set an equally-spaced number of points to 5.

Generate Sub-Menu:

Generate various types of random lines.

  • Uniform: Completely randomize every point in the line.
  • Brown: Draw a line by performing a random walk.
  • Sparse Dust: Zero the line, then add a handful of random points.
  • Dense Dust: Zero the line, then add a lot of random points.
  • Steps (4, 8, 16, or 32): Set a number of equally-sized/equally-spaced segments of the line to a random value. (Like a random sample-and-hold type of shape.)

Bottom controls

Finally, we get to the controls in the bottom central area of the module.

The play, stop, and reset buttons/jacks are global and will override the current state of each line reader.

The Clear All button does just as it says: it sets each line to polarity-dependent zero.

Post any comments, questions, concerns, feature requests, or bug reports on the forum or send an email here. And finally, have fun with it!


Feb 4, 21

I love it already!

I had no idea I needed a CV canvas until now, but I'm really glad this exists; having the ability to generate random steps, add noise to my weird homebrew curves and have 4 of them going at the same time at completely different speeds just feels like a CV gamechanger.

I highly recommend this module.