Dev Delexander — Algomorph Beta 3 — Builds Now Available for Testing

Here I’ll share thoughts on modules I’m currently working on.

Today, that’s Algomorph Beta 3. I’ve just released new builds on GitHub for Linux, Mac, and Windows.

What’s changed? What hasn’t changed?

Because of significant changes on the backend, this new version is incompatible with old presets and patches. To avoid breaking existing patches, the plugin has a new slug. This means that installing Beta 3 will not overwrite Beta 2. If you want to delete the old version of Algomorph, you will need to manually delete the FM-Delexander folder from your Rack plugins directory. This way, you have a chance to migrate or archive the old patches beforehand. If you need the old build (Beta 2), it can still be found on GitHub.

Algomorph is now available in two sizes: “Algomorph” and “Algomorph Pocket”.

Full-size Algomorph has gained 3 additional inputs. These inputs, together with the original Morph CV and Clock (trigger) inputs, are all now user-assignable multi-mode inputs.

Depending on what setting is chosen (via the context menu, or via one of the several packaged factory presets), these inputs can accept triggers for expanded sequencing control (Reset, Run, and Reverse Clock), CV modes for control over things like Morph CV attenuversion, Modulator audio output attenuversion, Sum audio output attenuversion, and also auxiliary audio input modes for additional inputs to be mixed into existing operators, or the Wildcard Modulator option which routes to all Modulation outputs (but not the Sum outputs).

Optionally, those auxiliary inputs can even be set to multiple modes simultaneously…

Full-size Algomorph has also gained two additional outputs. One is a new “Modulator Sum” which complements the existing “Carrier Sum”. The other is a Phase output, which tracks the current state of Algomorph relative to the three saved Algorithms.

That Phase output is particularly interesting because of another significant change: the internal cap on Morph has been removed. This means, for starters, that the Morph Knob always has an effect across its full range of motion even if a constant +5V is currently present at a Morph CV input.

Standard Morph CV in Algomorph is scaled such that an increase in 5 Volts is equal to a change from one algorithm to another. Mapped to the Morph Knob, you have a 10 volt range of motion and access to all 3 algorithms. However, that mapping doesn’t give you access to everything. There’s more: the range of motion that the knob cannot cover, which includes the transition directly between the algorithms sitting at 8 o’clock and 4 o’clock on the knob.

This means then that 15 volts are required altogether in order to traverse the full linear space of morphing between all three algorithms. It is this 15 volt space that is then re-scaled to 0-10V and emitted from Algomorph’s Phase output.

So, this all can be exploited in several ways, including stacking multiple separate Morph CV inputs, selecting Double or Triple Morph strength, or using an “Ampliverter” knob or input in order to multiply existing Morph CV by up to 3x. At triple strength, -5V = 0V = +5V. That is, every 5 volts corresponds to 360 degrees of Morph.

Once you’ve done all that, try connecting the Phase output to the input of a phase clock (like ZZC Clock). Algomorph is now functioning as a phase-summer and/or phase-multiplier. Trigger output from that clock can now be used as an interesting source of rhythm which is related to that of the modulation at Algomorph’s inputs.

The phase output defaults to 0-10V, but in the context menu it can be changed to +/-5V. This latter setting is handy for chaining to a second Algomorph’s Morph CV input, for example.

Full-size Algomorph also gains a Morph CV attenuverter. This new knob is located at the center of the Morph Knob: an arrangement inspired-by (but reverse-to) the double-knobs featured on some Happy Nerding Eurorack modules. But, it’s also more than that…

This new little knob is actually an Auxiliary Knob which can be set to one of 11 modes. Each mode is implemented as a separate parameter behind the scenes, and your choice of mode only affects which knob is currently shown. This is the same as the implementation of the LPG knobs on Macro Oscillator 2 in the Audible Instruments plugin. This means that each “Auxiliary Knob mode” can be individually mapped for simultaneous CV or MIDI control.

Algomorph Pocket loses the Clock input of Algomorph Beta 2, but it gains an extra audio input (a Wildcard Modulator) and an additional Morph CV input (now with configurable strength from 1x-3x).

The Wildcard Modulator idea originated as a mode from full-size Algomorph. The audio that arrives at this input is sent to all four modulation outputs. Try adding a 5th operator tuned to a sub-octave ratio and sending it to this input with careful (or enveloped) attenuation. Or run it hot… Full-size Algomorph features Wildcard Modulator Gain as one of its Auxiliary Knob modes, capable of settings up to 2x.

Algomorph Pocket’s knob also has some smarts of its own. When one of the CV inputs is connected, the knob changes from a Morph Knob to a Morph CV Attenuverter. Again, this is implemented as separate parameters on the back end, so each “mode” is separately and simultaneously controllable via parameter mapping.

For both modules, the strength of the click filters can now be adjusted from the context menu. In Algomorph Pocket, there is also a context menu setting to adjust the gain of the Modulator outputs (5 settings from -24dB to +24dB). In full-size Algomorph, this functionality is instead offered via a dedicated Auxiliary Knob mode.

For the display (graph visualizer) there have also been a few updates. Another 285 graphs have been added to the visualizer’s repertoire, corresponding to graphs for 1-, 2-, and 3-operator algorithms. This means that the display now properly shows when an operator has been disabled. It also now shows a big question mark if the chosen algorithm can’t be visualized (like if it has no obvious carriers).

Speaking of algorithms which lack obvious carriers: now, users can forcibly mark operators as carriers by clicking on their corresponding modulator button (as long as no operator is currently selected: if that were the case, then clicking a modulator button would instead create a connection line).

I struggled for a long time with how to visually indicate that an operator was a forced-carrier. I started with using additional colors, but found I couldn’t configure a working color scheme that wouldn’t exclude use by color-blind individuals. I tried using blinking, but it amounted to a whole lot of blinking when you factor in the blinking involved in Edit Mode and the potential blinking that can result from VU lighting. It was modules from Instruo that gave me the stroke of inspiration to add moving indicators within the existing ring lights.

I was so pleased with this addition, I back-ported it to the Algorithm lights. Now, the Base Algorithm is indicated by a rotational indicator, while the algorithm/morph-state that you are actually hearing is what determines the brightness of the rings themselves. I think this is far clearer to parse than the old solution which involved relative differences in brightness.

If forcing modulators to also act as carriers isn’t weird enough, there is also now an optional alternate mode of operation for the operator connection logic. This mode can be accessed from the contextual menu as “Alter Ego Mode”. In this mode, there are two significant changes:

  • Creating a horizontal connection line between an operator button and a modulator button no longer disables the corresponding operator. Instead, audio is happily routed horizontally.
  • Algomorph no longer performs any automatic detection of carriers. If an operator is not forcibly marked as a carrier, is not acting as a modulator, and is not being modulated, then Algomorph’s visualizer will treat it as disabled.

There was a bug in the original release of Algomorph Beta 2 (since fixed in a recent maintenance update) which caused the Morph Knob not to respond to module randomization (thanks @unlessgames for help with this one!) Now, with full-size Algomorph, there are really a whole lot of knobs which respond to randomization (they’re just all mostly hidden). To make it less daunting to manage, certain Auxiliary Knob modes have had their response to randomization turned off.

Still, sometimes you might not want to randomize any of those knobs at all, and rather only randomize the algorithms (or a single algorithm). To facilitate this, I’ve added a new dedicated Algorithm Randomization menu. This menu can be accessed by right clicking on the connection area between the operator and modulator buttons: the place where all the connection lights light up.

I think that covers just about everything. The brightness of the glowing ink has been reduced; before, it was embarrassingly brighter than the module’s lights! Visual settings (like enabling/disabling glowing ink, or VU response in the lighting) can now be save as defaults, so they will persist between modules and resets. For full-size Algomorph, the Auxiliary Input modes can also be saved as-default. Undo/redo has been added across every user action. A lot of refactoring and restructuring has gone into the code on the back end.

When I started making Algomorph, all the way back in March or so, it began only as a napkin sketch for an FM algorithm module: 4 inputs, 5 outputs, 8 buttons, and light-up connection lines. The concept at the time didn’t even store multiple algorithms, let alone allow for morphing! As I’ve developed the module, released betas, received feedback, fixed bugs, added features, and done a lot of testing of my own, my own idea for what the module could be was constantly morphing itself.

I also put a lot of thought into what the module should be, which has had a sizable impact on the current design. For one thing, there have been multiple features that were once fully implemented in development versions but have since been removed, like some auxiliary input and knob modes. Another perhaps more clear example can be seen in the design of the new Algomorph Pocket and how it differs from the identically sized Algomorph Beta 2.

I spend a lot of time daydreaming about making a physical Algomorph module, to center a small FM rack, and the design of full-size Algomorph reflects this. I think that touch-screen use in VCV Rack can also improve as a side-effect of this design direction. At present, there is a “Display Button” on the panel which does nothing. In the future, it would be used to access an on-screen menu with configuration options (as an alternative to the contextual menu), as well as providing access to alternate visualizations or the ability to turn the display off.

I’m eager to hear thoughts from anyone interested to test.

Merry morphing.


Previous threads about Algomorph, for reference:

14 Likes

Wow. Great work. Looking forward to trying it out. Thanks very much.

2 Likes

i just installed this and have only played around with it for 20min or so but great work, thank you for providing it for free. you can tell a lot of thought has gone into it. all the menu options are great. looks nice as well.

1 Like

In my view it’s “paying it forward” in thanks for all of the great work that’s been done by open source developers in this community and adjacent communities. I definitely wouldn’t have been able to make these modules if I didn’t have all of that code for reference.

5 Likes

I released a small update. In the last version, the Wildcard Modulator was being added to the Modulator Sum output four times over. That’s a little wacky, and I think the Mod Sum output is more interesting without the Wildcard Mod anyways (it’s easier to add than remove, and it’s already modulating all the other modulators too), so now in the current version the Wildcard Mod has been removed from the Mod Sum entirely.

In case that has broken anybody’s patches, there’s a new option in the context menu which re-enables adding the Wildcard Mod to the Mod Sum: but only once this time.

Either way, because of the fact that summing all the Mod outputs by hand would incur the original 4x Wildcard Mod behavior, the Mod Sum output carries a unique mix of audio which is morph-dependent and therefore not so easily derived without Algomorph’s help. I try to use that as a litmus test for adding new features to these modules, though sometimes convenience wins out (like with some of the gain and attenuversion features).

Given that the carrier sum is de-facto the “sound” of an FM algorithm, turning attention instead to the sum of all modulators is interesting. It’s a kind of inside-out perspective on any given FM algorithm. Try oscillating back and forth between carrier sum and modulator sum, or mixing in a bit of the modulator sum on high-velocity notes or accented beats.

Been following this for a while. I cant wait for the final version! :slight_smile:

1 Like

Thanks for saying so! It means a lot.

Right now I’m in the middle of some unexpected major life changes, including a move halfway across the country, and it’s looking like it may be a while before I’m settled in. So unfortunately for now I won’t have the time I’d like to spend in order to wrap things up for a release on the Rack Library.

In the mean time, I’ll still be checking in here and there listening for any feedback, ideas, requests, and the like. So far things have been relatively quiet since that one time I released a crashing build of Beta 1, and I’m hoping this is a good sign! :slightly_smiling_face:

Happy new year, everyone.

2 Likes

Great updates to the already really fun previous Beta builds. Hope life bends back into better pace for you. Thanks! Will do some testing in next days and report back if anything is amiss/should be changed/etc…

1 Like