Module ideas

cson is another very-human-readable serialized format, even more IMO than yaml. I wish it was more popular.


You linked to my comments :slight_smile: If you are talking about patch stats, I’m all for it. Better summarize as a module idea.

Patch browser module

Similarly to how the MB from Stoermelder works, one can imagine a patch browser module as well. When clicked it opens a floating widget, with the patches folder, showing list of patches.

When one is selected, a summary is shown with

  • a screenshot (rendered on the fly)
  • number of modules and cables in patch
  • creation and modification time
  • if the patch contains Fundamental Notes, the text from it shows up as a description
  • warning about missing modules

The listing of patches can be ordered by some of the former properties.

A couple of actions that would be useful

  • save/load/clone patches
  • filter patches by what module(s) they contain

There’s also a “Stats” tab, with overall statistics. Below some examples of what to get out from patch files only

  • Activity timeline similar to the activity curve on github, based on the timestamps of the files
  • Total number of patches, modules and cables used
  • Approximate area covered by modules in squaremeters, and overall cable length in meters
  • Most used modules
  • Most used cable color

additional stuff

  • show Strip save files in a similar fashion
  • when a patch is selected find similar patches based on the modules used.
  • change folder

Here it is. Sorry for the wait:

I didn’t make this on stream but i did make the previous example here It’s unedited though.


This is all great stuff. I’m in.

yesterday Andrew was playing piano on Dexed Vst on his live stream, I m not sure if someone mentioned it here, but

FM Algorithm

it could be a module with four to six VCOs inputs and fm output, four to six envelopes options (Knobs and/ or CV) and Audio out

the workflow:

  • Select the number of CVOs in the patch

  • for every VCO you should connect the VCO audio signal OUT and the FM input.

  • for every VCO connect a Gate and tweak the envelopes.

  • select the FM algorithm to use.

  • play a Synthwave song

edited: could be possible make it capable to load DX7 patches?

1 Like

Someone is already doing this.

1 Like

cool , super nice!

thanks for the link!

also the now ancient “dexter” from valley is exactly this, isn’t it?

can you feed the dexter with external VCOs?

super late reply, but I get a lofi distortion effect vaguely like “disintegration loops” by using red noise (from fundamental Noise module) to control the drive amount on a VCF. Passing the noise through a wave shaper, and/or a VCA controlled by BogAudio Walk gets a very nice, controllable effect.

In general, modulating sound processors with filtered noise is a way to add grit.


Yeah I’m also interested on this, or some other module that does FM taking arbitrary carrier and modulation signals. I’ll start to code if there aren’t :slight_smile:

I don’t think it’s possible to modulate an arbitrary carrier. the FM is induced while you you are generating the carrier. I must be misunderstanding here.

Most FM modules take an arbitrary (external) modulator. FM OP is the most popular. (although my Kitchen Sink does more :wink:

1 Like

Yeah, you can AM/RM any two arbitrary signals, but the frequency modulation happens inside the synthesis of the carrier.


Isn’t FM Linear type (i.e. affect frequency directly) a sort of FM? What if I modulate a frequency shifter so? Couldn’t be considered a sort of Linear FM? :stuck_out_tongue:

well, true. since frequency is just the integral of the phase you can get FM by modulating the phase of something. I kind of doubt that you can modulate most frequency shifters at audio rate and get anything good to happen, but you can try. bottom line - your reasoning sounds correct, but I’m skeptical that it a path to a good sounding module. But who knows, maybe?

1 Like


TLDR: A sample player / DJ player thing like those by Pioneer, Denon, Native Instruments, etc… I’m probably omitting some stuff in the description below, but it’s a nice starting point. The main inspiration for this module is the ability to setup a DJ workflow in VCV Rack with complicated send/return effects chains that can be beat synced to the track that’s playing.


  1. Sample (external data): The song to play; loaded probably through drag and drop / right-click like how most samplers in the library currently function. However, an ability to load from RekordBox, Engine Prime, and etc. libraries would be useful in the future (i.e., with the addition of some a media browser so you can use the module to load songs more easily).
    • Sample Lock (Boolean Switch): an additional right-click context menu option that prevents changing the sample when the song is currently playing.
  2. Sample BPM (Numeric Keyboard Input): The BPM of the sample is analyzed by an algorithm first, but there also needs to be a way to change the BPM manually.
  3. Sample Alignment (Rotary Encoder Knob): The position of sample playback on the BPM grid is analyzed by an algorithm to automatically detect beats in the sample and align the sample in the grid. However, there also needs to be a way to change the alignment of the sample within the grid manually.
  4. Sample Position (Rotational Encoder / Click Sensor): i.e., “needle drop”. Select a point in the sample to play from. This is usually accomplished by displaying the entire waveform and either using a rotational encoder or touch sensor. Both can be done for VCV Rack to provide flexibility.
    • Sample Position Lock (Boolean Switch): an additional right-click context menu option that prevents changing the sample position when the song is currently playing.
  5. Play / Pause (Trigger Switch): Start the sample playback & stop the sample playback.
    1. Vinyl Brake (Knob): an additional parameter can control a vinyl break effect when playback is paused; measured in units of time.
    2. Motor Lag (Knob): an additional parameter can control a reverse vinyl break effect when playback is started; measured in units of time.
  6. Cue (Trigger Switch): Standard cue functionality from players. Jumps to the beginning of the song or wherever the cue-point is set if a cue-point exists
  7. Reverse (Boolean Switch): Reverse sample playback (inverts sample).
  8. Playback Rate (Slider): Control the rate that sample playback occurs at. There is usually an accompanying parameter for controlling the maximal bounds of the rate slider. playback rate is measured in % of BPM and the maximal bounds are typically log2, i.e., 2%, 4%, 8%, 16%, 50%, 100%. IMO replacing the (50%, 100%) tuple with (32%, 64%, 128%) would be nice.
  9. Sample Key / Pitch (TBD): Control the key / pitch of the sample without altering the BPM. This is usually accomplished through algorithms that I’m not currently familiar with. There are many ways to implement this including: (1) a pair of trigger switched, (2) a single encoder knob, or (3) a custom graphical interface).
  10. Jog Wheel (Rotary Encoder): Scrubs through the sample the same way putting your hand on a vinyl would, i.e., for scratching, beat matching, wind-backs, and mangling.
    • the far edge of the jog wheel usually functions as a “nudge” that is used to apply more subtle adjustments to sample playback rate, typically for beat-matching between songs
  11. Performance Pads (Momentary Boolean Switch): 8 buttons that act as performance pads for various sub-features related to sample playback. Some common performance features are:
    1. Roll: Loop for 1/64, 1/32, 1/16, 1/8, 1, 2, 4, 8 beats while the switch is held.
    2. Loop: Create arbitrary loops that can be quantized. The first press for a slot creates the start of the loop point. The second press creates the stop of the loop point and activates the loop. Subsequent presses disable / enable the loop. If the loop becomes activated by the user while the sample position is outside the loop, the sample position will obviously jump to the beginning of the loop; however, if the loop becomes activated by the user while the sample position is within the bounds of the loop, the sample position will proceed until it reaches the end of the loop.
      • quantization level can be set through right-click context menu, i.e., whether it’s on and the granularity: 1/64, 1/32, 1/16, etc…
    3. Hot Cue: Create arbitrary jump points in the sample. The first press of a slot creates an arbitrary hot-cue point in the sample. Subsequent presses change the sample position to that slot’s cue point.
  12. Auto-Loop (Boolean Switch / Discrete Encoder Knob): This functions very similarly to the loop and roll features. The boolean switch is used to activate/deactivate a loop in the song at the current beat. The encoder knob controls the duration of the loop in beats, i.e., 1/64, 1/32, 1/16, etc…
    • Beat Jump (Shift Modifier): When the auto-loop is activated, beat jump changes the start position of the loop. On a lot of players this is accomplished by using a “shift” modifier and extending the functionality of the auto-loop’s encoder. This can be done in VCV Rack as well, or a dedicated knob / pair of trigger switches can be used if it works better that way.


Pretty much all the parameters can have CV inputs with attenu-verters. There is one important dedicated input that I can think of though:

  1. Clock: Synchronizes the sample playback to other clocks / players.
    • A boolean switch (i.e., the infamous “sync” switch) will be needed for controlling whether the player listens to the clock input.


  1. Sample: the result of sample playback after applying loops, reverse, etc. through the player
  2. Sample Playback: a gate that goes high when the sample is playing and low when it stops. I think it should follow the envelope of the motor lag / break as well.
  3. Clock: BPM signal for syncing other modules to the player. The clock output is active irrespective of sample playback state, i.e., as long as there is a sample loaded, the clock output will send the BPM signal.
  4. Cue: Sends a trigger any time a cue event occurs.
  5. Hot-Cue: Sends a trigger any time a hot-cue event occurs
  6. Performance Loop: gate that goes high when a performance loop is starting and low half-way through the loop
  7. Auto-Loop: Same as performance loop, but for the auto-looper


Most of the boolean options will have an associated light.

Sample Widget

An additional widget is necessary to show the sample playback. This can be as complicated as the developer would want. There are plenty of excellent examples out there between hardware players and software DJ tools. The most important part, IMO, is to have zoom, show the beat grid clearly, and maybe color code different spectral components (lows, mids, highs).


A rough sketch:


There are a couple of specific algorithms for this module that need worked out, namely, the (1) beat detection algorithm / BPM analyzer, and (2) the key-shifting algorithm.


Did you ever find an expansion module for this?

I came up with this idea a while back when I was bored in math class and played around with my calculator making cool graphs and realized that you can make equations for all the standard sound waves. So here is my idea;

Module name: graphing oscillator

A module that can turn mathematical formulas into sound waves by imputing a equation and chosing a period range that the sound waves would cycle through like 0-360 if you are using degrees or 2pi for radians.

Features: All the standard operations including exponents and roots Should include sin and arcsin at minimum so that all the standard sound waves can be construed Could include constants so that you could make easy adjustments

Design: Would preferably look like a graphing calculator Could have knobs and CV for frequency, constants, and period ranges.

If you are familiar with TI calculators you could include ipart() and fpart() aswell depending on how hard it would be to implement

1 Like and can do this.


it has not happened to you when you are patching then you disconnect a cable and you want have a place to put the tip to connect it later back in your patch?


two rows of Input and output that allow connect cables momentarily , it can allow stick names and if you press a button (or sending a trigger/ gate) the cables will reconnect automatically in the desired place