Polyrhythmic Subharmony Generator (Subharmonicon)

Polyrhythmic Subharmony Generator

This is an instrument heavily based on the Moog Subharmonicon, rebuilt for A4 after my older A3 version.

In short, it takes a fast clock and divides it 4 times by integers between 1-16 to create 4 slower clocks. These can be combined to generate polyrhythms. The combined clocks drive 2x4-step sequencers which go to two sets of oscillators. Each set contains a primary oscillator and 2 sub oscillators, which divide the pitch of the primary by integers between 1-16, producing interesting chords based on subharmonic intervals. Mixers, filters, VCAs and reverbs follow.

For more information on the polyrhythm and subharmony aspects, refer to the literature on the hardware.

Significant differences to the hardware:

  • Expanded Quantizer with ability to change root note, scale, and optionally tune the subs.
  • Expanded sequencer functionality (1-4 steps, forward reverse probability, modulation for each step).
  • Independent filter and amp sections for oscillator 1 and 2 (with ability to link controls).
  • Stereo width for oscillator 1 and 2.
  • Ability to decouple the gates from sequencer 1 and 2.
  • PWM setting replaced with a different oscillator shape (I wasn’t enjoying the PWM setting).
  • PWM input in the patch be replaced with oscillator sync (as I haven’t figured out how to PWM my splined square wave yet).
  • Patch Bay removed in favor of locating the I/O throughout the UI next to their source elements.
  • Gate logic (OR/XOR) modes (implemented in midi on hardware).
  • Reverb (uses a lot of CPU so turn the mix knobs off to spigot if not required).

Documentation

See in patch

Version History

Revision File Date Notes
4.0 Polyrhythmic_Subharmony_Generator_4.0.audulus4 (531.9 KB) 12/1/2023 Initial release
4.1 Polyrhythmic Subharmony Generator 4.1.audulus4 (532.6 KB) 14/1/2023 Added external clock input
4.2 Polyrhythmic Subharmony Generator 4.2.audulus4 (552.3 KB) 2/2/2023 Fixed just temperament quantizations (thanks RudigerMeyer!)

Demos

Open the patch and press Run. Turn on Osc2 Drone and add some reverb mix!

6 Likes

Hi. The uploaded patches are only showing as text, no link associated with the text.

2 Likes

Sorry about that, and thanks for the heads up. Should be working now

3 Likes

I would like to make my own sometime. I will have to get a little better at making patches on Audulus.

2 Likes

Nice work! Sounds great!

A small detail about the 2 just intonation settings in the quantizer – the ratios need to be made in the frequency domain, and then converted Hz2tOct. for them to give the correct results. I’ve made the changes in the following patch:

Polyrhythmic_Subharmony_Generator_4.0_ji.audulus4 (593.9 KB)

1 Like

Here’s the regular Quantizer Tile from the library with Just Intonation added for the last two settings if anyone’s interested.

Quantizer-tile-with-JI.audulus4 (59.5 KB)

1 Like

Actually I’ve been thinking that it would make sense to split the Scales from the Temperaments they might be passed through, and make a little ‘Temperaments’ Tile/Module with Werckmeister, Kirnberger, JI etc. That would enable the root of the scale and the temperament to be set differently and open up for exploring the sonic different areas of the temperaments.

As a quick tryout (with only JI added):
Scales-and-Temperament_tryout.audulus4 (112.3 KB)

1 Like

I appreciate this approach a lot – how I imagined moving forward with temperaments/microtunings, etc. with this quantizer setup.

How to approach temperaments extending beyond one octave?

2 Likes

Could temperaments simply be added to the quantizer module with the second method? (And why the .001 offset?)

1 Like

Btw, I love this subharmonicon module! So great…

@RudigerMeyer, here’s a module with quantizer + temperaments combined into one (and easily separated). What do you think?

I am admittedly conditioned by rock-and-roll, only dabbled with alt temperaments, nothing too adventurous, read about it more than I have experienced it. So mostly I recognize the value. I always feel like this area of exploration is futuristic…

Mostly I see what you did – a lovely way to make it happen here. Notes about this version:

  1. Uses the two stage setup like you mention, stage 1, scale+root, stage 2, temperaments, same format as your last post.

  2. Redid the conversions for your temperaments, you probably just hadn’t got there, otherwise heavy on CPU. Not sure if the extra input port per ratio was the intended method for changing root – have to take another path if so.

  3. Updated scales list to use Spigot node selector instead of muxes. (This because of recent discoveries: one, spigots will output the correct channel count for the current scale, whereas mux outputs the max channel count from all inputs; two, which also allows eliminating the extra channel count per scale submodule + port and the mux required for it; and three, potentially solves another issue I have seen recently where Channel Count node drops to 0 on a change, creating pops/clicks (not good…). Doesn’t happen all the time, though, might be a poly related issue. Still testing.)

Quantizer-Temperaments.audulus4 (272.8 KB)

2 Likes

That was just to get the second quantizer to select correctly – otherwise it was pushing down to one scale step below what was intended, so it had to be nudged up a bit. A quick fix.

1 Like

Ah yeah, I figured that out later with meters. I guess the log2 scaling or something… well, it works!

1 Like

Wow, that was quick. Nice!
Unfortunately I’ll only get to take a look at it this evening. Looking forward to that.

Yes, I’m sure the internals could be done more efficiently. Actually, those little ratio modules are something I’ve been using to ‘tune’ sequencer knobs directly – that way one can get perfect tunings on the fly without being constrained to a predetermined scale or temperament. And the input is so that they can be stacked together, I find that it works very well with something like the 5x5 sequencer, for example. So I simply re-used them to set up the proof of concept.

1 Like

Makes sense. Interesting, so you have a bank of ratios to dial in from?

1 Like

Yep. I’ll upload an example later today.

1 Like

Thanks @RudigerMeyer! Both for the heads up and the fix. I haven’t played with just temperaments much before so my ear obviously didn’t know what it was listening for :sweat_smile:. It now sounds much better.

I’ve added your fixed quantizer to a new version up top.

It might be cool to have some other temperaments in there, especially since the subharmonicon is such a good platform for exploring other note relationships. if you and @jersmi come up with an implementation you’re happy with, I’ll try and build it in :blush:

1 Like

Well, hopefully should just have to plug in some numbers – just need @RudigerMeyer’s expertise on what temperaments, best format, things as such…

Such a nice module to experiment with!

1 Like

I should be able to find some time on the weekend to fill them in.

1 Like

There were some things that weren’t connected up correctly internally – fixed in this patch with it hooked up to a sequencer.

Actually I think that it remains a good idea to keep them separate – or at least be able to toggle the temperament section on and off. Sometimes one might want to have the good old equally tempered 12EDO scales – as the scale module is in its current form – without colouring it further.

Quantizer-Temperaments-Seq.audulus4 (393.5 KB)

2 Likes

Here’s an example using the little ratio tuning modules connected directly to the knobs of the 5x5 sequencer, with some freely tuned micro deviations around them. Mix and match.

Quantizer-Free-Ratios_5x5-Tryout.audulus4 (407.2 KB)

And my tryout from yesterday with the scale and temperament tiles (still the old versions without your optimisations).

Quantizer-Temperaments_5x5-Tryout.audulus4 (364.6 KB)

1 Like