I’m excited to release the Pole Dancer filter, the first “beyond obnoxious” Zoxnoxious module to hit the Rack library. Library link here.
Pole Dancer approaches morphing filter design from a modular synthesis perspective. Rather than selecting a fixed filter mode, filter behavior itself becomes something that can be patched, crossfaded, sequenced, and modulated using standard Rack modules. The release includes four modules:
Pole Dancer: a morphing 4-pole filter
Personality: filter response generator and preset source
Morphscope: live filter response visualizer
Architect: advanced filter design and analysis tool
The core concept is a five-channel “Topology” signal carried over a polyphonic patch cable. Personality modules generate filter responses, while standard Rack utilities such as crossfaders, switches, sequencers, and slew limiters can manipulate them before they reach Pole Dancer.
To help visualize what’s happening, Morphscope provides live Bode magnitude/phase plots and pole/zero displays. For users interested in creating their own filter responses, Architect allows direct control of the underlying filter coefficients and integrates with Personality presets.
The visual design takes inspiration from classic Nuclear Instrumentation Modules (NIM), including BNC-style connectors, turns-counting cutoff controls, and instrumentation-style hardware details.
Good question. The audio path, in and out, is fully polyphonic. The Topology signal uses a 5-channel poly cable with those channels representing the filter definition. Each topology channel carries part of the filter response (dry, pole1, pole2, pole3, pole4), and together they define a single filter state. So all voices in a polyphonic audio path share the same filter topology. The upshot with this method is standard Rack modules such as crossfaders, switches, slew limiters, etc can manipulate filter structure directly.
Seeing a couple uses of this in the wild I’m noticing it really needs a bit more of a tutorial/examples. This filter is a bit of a rarity in that one pulls in multiple modules to define how the filter behaves.
Towards that end, I put together over a half dozen filter morph methods on patchstorage. Each row in the patch shows a slightly different effect. Unmute rows to solo.
This is brilliant! I have been casually watching your project from afar, but never really dug into it. This last demo opened my eyes to how awesome the Pole Dancer ecosystem is!
I am still not comfortable with the math behind filters, or how digital filters emulate hardware. I am very happy with my Venom Multimode (state variable) Filter, but I feel like I got lucky. I don’t have an intuitive feel for how everything works. The tools you have provided give me hope that with experimentation maybe I can develop some intuition. I realize the architecture of state variable filters and ladder filters are different, but I am assuming there are some universal concepts shared.
I have created a modified version of your patch that makes it much easier to use.
To implement this I replaced the Mutes module with a Merge, Venom Poly Mute (in Exclusive Pass mode), Venom Poly Prune, and Stoermelder CV-Map. Each row’s Play button activates a different Poly Mute channel button to select the row. The CV-Map controls the small indicator buttons on the PatchMasters.
I have added an 11th row that is functionally the same as the 10th, but uses a Poly Sample & Hold Shift Register to hold all eight personality topologies, which saves a lot of space.
I think there is a great opportunity for another module to add to your collection. A Personality Bank module can have 8 to 10 Personality selectors, each with its own topology output to the right. Each selector could be a rectangular box showing the currently selected preset for that output. Pressing the button would cycle through the presets, and right mouse click would let you select from a list. No need for multiple Personality modules to provide topologies for morphing!
No, your patch is brilliant! Thanks a ton for doing that, it shows it off much better and makes it a ton easier to use.
Re: Personality selection. This could be improved. It leverages Rack’s patch save/load. Downside is it only loads a single preset. If one wanted multiple Personalities in a module you’d have to have a “.vcvm” preset file that does that. Or hardcode the definitions in the module itself, which could be done. The other thing it Personality is unnecessarily wide- it really only needs the topology jack. The reason for the width is for the label of the filter type. The label is an editable field- so if you uses the Architect (right click Personality to instantiate) you can name the filter type. Or- hit random on Personality and you get a dancer name in that field.
Yeah, the description for my proposed personality bank was overly simplistic, with lots of implementation details to work out. But I hope you understand the general concept and use case.
Regarding implementation, I assume the existing personality module has hidden parameters (exposed by the Architect expander), and each preset stores the values for those parameters.
I should think the Personality Bank could have those same hidden parameters, and then each selector would have its own equivalent set of hidden parameters. Activating a selector would load the original parameter set, and then immediately transfer the values to the relevant selector parameters.
Or maybe a custom preset load routine could be written to redirect the load to the relevant parameters, without the need for a temporary transfer set.
This is all hypothetical. I haven’t really studied feasibility. But hopefully something could be created to give this type of functionality.
It’d actually in the “not difficult/almost trivial” level to do something like that, have multiple Topology Outputs in a module. I’d dump the VCV Rack presets and hardcode the coef values into the module itself.
It’s a paradigm shift/evolution from how I thought the module would be used. Originally I had Personality with the full set of Architect knobs. Then realized the pole mix levels aren’t performance controls, they’re set-once in the design phase and done. So Personality became a preset focused module, with the Architect expander. But thinking about I may have locked into two fallacies:
People will use Architect to design different filter mixes
There are interesting filter structures beyond the >50 already included
For (1): it’s really guru meditation to define the filter coefficients. Sure, it’s fun to play with in Architect, but really that statement may apply to about 3 people (me and maybe two others!). For (2), I grabbed nearly all the filter coefs from SSI’s doc and from Expedition Electronics website. That’s a lot. Maybe someone could do some shelf filters but really there’s not a lot of interesting ground that isn’t already covered.
So yeah- it could easily be justified to create a “Multiple Personality” (“Split Personality”?) module that has ~8 topology jacks. Hardcode the five coefs for each preset, and bam, it’s done. That likely fits with the more typical use case as well.
I like it! It was my initial thought to hard code all the existing configurations. But then I was seduced into the idea of allowing users to define their own presets. But I think you are correct - you already have defined more than any sane person will ever need for morphing. KISS wins again!