Prong

Complex polyrhythms. Unusual compound time signatures. Probabilistic branching sequences. 


These ideas can be a lot of fun. Sometimes they can even be compositionally useful.


Prong provides a way to experiment with a variety of rhythmic and generative structures by letting you build a custom sequencer, module-by-module. Each Prong instance is a step in your sequence. Your very own customized sequence.


But there’s a sea of similar sequencing/utility modules out there, so what are some features that give Prong its own identity? 



While no single aspect of the module is all that groundbreaking or special, the unique combination of features might just be an interesting way to change up your workflow, spark new ideas, or lead to some happy accidents.

Basic Operation

To start, the module receives a previous trigger (above 2.5 volts) via jack or button press and begins outputting its note value and gate(s) depending on the various parameters. It continues for a duration of time dependent on host tempo and the length and tuplet settings. Finally, the note and gate zero out, and the module sends a next trigger out of one of four possible jacks, depending both on chosen select mode and which/how many of these jacks are actually connected.


It’s as simple as that…but the fun really begins when you start chaining them together.


All of this and more is elaborated below.

Components And Their Functions

A Note On “Selectors”

Before getting into specific parameters, we have to take a moment to talk about what we might as well unimaginatively call selectors. A selector is a hybrid control useful for selecting (get it?) from a set of predefined options in a few different ways while still offering all the standard Voltage Modular behavior as well. The intention is to provide flexibility, convenience, and an easy way to know selected values at a glance. 


A selector consists of a top label, indicating the name of the parameter, and a bottom label, indicating the chosen value/setting. The bottom label is backed by an invisible knob, so clicking and dragging on the bottom label will change the parameter just as it would with a typical knob, and it also means all the usual interactions and right-button menu options are still available. The top label offers additional convenience in that you can left click to increment the parameter to the next selection/value or you can right-click to view a drop menu of all possible selections from which you can choose one.

Previous/Play Block

The green previous input jack accepts a trigger signal (from a preceding Prong instance, or from anywhere else) to initiate operation of the module. The play button triggers the same, albeit manually. The auto-retrigger toggle sets the module to automatically retrigger itself at the end of its step without having to route feedback cables – sometimes useful, sometimes not.

Stop/Reset Block:

The red stop input jack accepts a trigger signal, which immediately ceases operation of the module. It also doubles as a reset for internal counters/indices, such as the sequential/ping-pong modes below. The associated button allows a manual operation of this functionality. A stop trigger is also propagated through a connected comms out jack (more on this below).

Next/Output Trigger Block:

This section provides four output jacks, each of which may output a trigger signal depending on various circumstances. The primary intention is to trigger the operation of the next Prong instance in the chain/sequence, but of course these triggers could be used with any other module as well. After receiving a previous trigger and running for the specified duration (see below), the module will attempt to send a next trigger to one of these jacks. 


The select mode selector defines how the output jack is chosen. It provides the following options:

Comms Section:

Near the center of the module are a pair of poly jacks (and a toggle) that can be used to link together instances of Prong so that certain information or events can be communicated. It’s not strictly necessary in all cases, but it often makes things simpler or more convenient, especially when using a large number of Prong instances.


A minimum polyphony of 4 is required for full operation of the comms jacks. The jacks convey the following information:


It needs to be noted that this signal propagation does result in cumulative sample delay. In typical practice, this should rarely matter and will have no negative effect, but it’s important to be aware of in cases where sample-perfect events are expected or required.


Also note as a general practice that, while a series of Prongs are expected to eventually (if desired) loop back on itself from next jacks to previous jacks, comms connections should only progress downstream, without feeding back to any previous Prong instance.

Parameters:

Now we move on to the group of selectors below the comms ports where we define what actually occurs during the module’s active operation.


Length sets how long the module will wait after receiving a previous signal before sending a next signal. The values range from 32nd notes to 4 full bars. Tempo is pulled automatically from the host (Voltage Modular itself in standalone mode, or the DAW if used as a plugin). Whenever the term step is used, it is referring to the full operation from previous to next whose time duration is set by this and the next control.


Tuplet sets a modifier to the duration set above. This includes various applications of dotting notes on the longer end (technically not called tuplets, deal with it), and odd divisions of time on the shorter end. Note the duration ratios are arranged from longest to shortest, thus the quintuplet and septuplet ratios are expressed as 5:2 and 7:2 respectively rather than the more conventional 5:4 and 7:4 or 7:8.


The Ratchets box provides two number selectors. The first, denoted by #, lets you choose how many (evenly spaced) retriggerings of the output gate should occur during the full length of the module’s operation (defaulting, naturally, to a minimum of 1). The second value, denoted by ?, lets you define an additional possible number of ratchets (defaulting to 0) to activate. This value is chosen once each time the module as a whole is activated by a previous trigger. In other words, the number of actually occurring ratchets will randomly fall in the range of the first value to the first value plus the second value, inclusive.


The probability box lets you select both the odds that output gate/notes will be triggered, but also the mode by which the odds affect the triggering of the ratchets. There are four modes.


Finally, we come to the note and gate output portion of the module. The note and oct selectors determine the output voltage that gets sent to the note output jack. This value returns to 0 (despite that also being a valid note value) when a step completes. 


The gate selector sets the duration of any output gates as a percentage of the available length. This means it is adjusted/shortened appropriately as the number of ratchets increases, and there is no need to worry about overlapping gates. Note, finally, that gate length is still reduced based on the number of ratchets, even if those ratchets fail their probability check.


And that’s it. Play around, watch the demos and tutorial when they are up, and try to have fun.