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?
The duration of a step is selectable by both a length value and tuple value and these are automatically based on the host tempo – no need to hook up a clock or sync signal.
There are four next outputs that allow for branching sequences, with six different options for how to decide which output is used each time.
Poly jacks allow communication between instances of Prong.
Four different probability modes are available for activating note/gate output.
Parameters are set by special hybrid selector components (see manual).
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:
Sequential (SEQ): Output runs in order from top-left to bottom-right.
Ping-Pong (PP1): Outputs run forward then backward without repeating ends.
Doubled Ends Ping-Pong (PP2): Outputs run forward then backward, repeating ends.
Random (RND): Output is randomly chosen.
Non-Repeating Random (RND*): Output is randomly chosen without repeating (if possible).
Weighted Random (WGT): Output is chosen randomly using the pre-assigned weight values of each jack: 8, 4, 2 and 1. This means, for example, that with jack 1 (with weight of 8) and jack 4 (with weight of 1) both connected to a cable, the next trigger is 8 times more likely to come from jack 1.
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:
Stop triggers. This is useful so that you can just trigger the stop jack/button on the initial Prong in the sequence and it will propagate through the rest of the chain, stopping the whole series no matter which is currently playing.
Change in status of the propagate note/gate toggle. Setting it to on or off will subsequently set all such toggles downstream from this one to the same setting.This setting determines whether or not the note and gate information is also transmitted by the comms jacks.
Note value (pitch) in typical voltage per octave scale. If the setting above is toggled you only need to connect to the final downstream Prong to get the note value of whichever Prong is currently active.
Gate signal (5 volts when high, 0 when low). The toggle affects this the same as for notes.
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.
Gate: Calculates on a per-gate basis. Each individual ratchet may or may not trigger depending on the odds.
Gate*: Same as above, but preserves the first gate/ratchet, ensuring it always triggers.
Step: Calculates on a per-step basis. The whole set of gates/ratchets will either trigger or not depending on the outcome of the probability check.
Step*: Same as above, but preserves the first gate/ratchet, ensuring it always triggers.
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.