Polyrhythmic Subharmony Generator (Subharmonicon)

I see you took out the divide by 12 at the end – looks like that’s the only change? I am seeing an issue where the VCO freaks out audio when changing root – I think it is because the quantizer output before temperament can jump to *12 signal as roots get higher? Hmm, what to do about that… could possibly wrap notes around in the quantizer, but that’d mean using temperaments would require the quantizer to use that setting, I don’t like limiting things like that, likely a better answer…

1 Like

Ah, I see the little ratio modules – simple and effective, brilliant!

Regarding keeping the temperaments separate – done. Even if they are combined into one module, keep submodules separate.

And I’d simply expect one of the temperament settings to be a “pass through” 12EDO setting, just another temperament in the list.

2 Likes

I agree. Equal temperament is a temperament after all

2 Likes

Alright, if I did actually solve the little math issues, then this is a completed thought! Please double check.

@RudigerMeyer – I assume the input on your ratio submodule has a purpose – in this case I noticed the conversions from o2hz then hz2o does a *440 then /440, which then becomes simply log2(ratio) (and sending it 0 outputs -inf – don’t do that!). In this case since this is inserted at the end, we can just make lists of ratios like in the subgroups for Just 12 and Just 7.

Super easy to operate and compatible with the quantizer! Then one more bonus – this version of the Temperaments module does a floor(x*12)/12 calculation on the input (essentially converting anything it receives to chromatic/12 EDO). then does the temperament shift, which means it should work fine on its own to quantize anything you throw at it in 1/oct range.

This all looks so straightforward now, but this stuff was a mystery (to me anyway) just a few days ago… The secret was the log2 conversion and order of operations, great tip, @RudigerMeyer! :man_dancing:

Quantizer-Temperaments-Seq-fixed.audulus4 (170.2 KB)

1 Like

The caveat here, I guess, would be that this is strictly for temperaments within one octave… or is there something about the word “temperament” that only means dividing up the octave? And I think somewhere along the way here there could be a question about temperaments tuned to one root but played in another root?

Encountering some “attempts to call a nil value” …

If you look at the bottom of the code area is sometimes gives you a hint where, but it’s usually a mispelled or incorrectly declared variable.

1 Like

Ok, I started adding some extra tunings. This is very much a WIP, there are lots of things to consider. I think it’s important for the Temperaments/Tunings module to have a Root note selector as well. For example if we have quarter-comma Meantone (which is the last of the tunings that I’ve added) built around A, then if we move to a root (for the scale) far away from that, D# for example, then the scale will have a different character from when it is closer to A, the root of the Meantone tuning. Compare for example the Ionian set to D with that at D#.

I’ll hopefully find some time to continue with it tomorrow, and also clarify my thoughts around it, but for now:

Quantizer-Temperaments-Seq-fixed_RM-WIP.audulus4 (235.7 KB)

(See also the ‘attempt to call a nil value’ in your previous version. I’ve just used the old scale quantizer and made a fix for the temperaments tile.)

1 Like

The Lua errors are likely from using text_bounds to center text, new to version 4.0.5. Apologies, I just wasn’t considering beta vs release date…

Anyway, awesome!!
Is just adding a root parameter in the temperaments module enough of a start? Like, what’s on the list of things to consider?

Aah, good to know!

Ok, here’s what I’ve reached, I think it’s working as it should!

To start off with I think we should call it ‘Tunings’ rather than ‘Temperaments’ since e.g. Just Intonation is a ‘pure’ tuning that hasn’t been ‘tempered’ in any way. Temperaments like 1/4-comma meantone are essentially compromises made to accommodate for the practicality of using a keyboard with 12 keys to the octave.

And following that I’m thinking if sticking to tunings that are contained within the octave – at least to start off with. Perhaps another module can follow with non-octave scales.

Taking the 12 key keyboard as a point of departure I’ve also reduced the tunings to 12 note chromatic tunings – subsets like the Just 7 or Pentatonic Maj/min can be achieved in conjunction with the scale quantizer. (Some of the subsets are still in the module if anyone wants to hook them up.)

Most importantly though I’ve added a root selector to the Tunings module. This doesn’t alter the incoming scale step, but rather selects the root from which the (tempered) tuning is being calculated. E.g. an incoming A# will always output an A#, but its precise tuning will differ depending on the selected tuning: e.g. A# in Just Intonation will differ depending on whether the root from which the JI is calculated is A or A# – or any of the other scale degrees.

As another example one can think of playing an Ab major scale on a keyboard with a 1/4-comma meantone tuning that has A as it’s root and the sounding result will be quite different from playing that same Ab scale with Ab as the root for the tuning.

Quantizer-Tunings_RM-WIP.audulus4 (245.1 KB)

I’ll add some tunings soon.

Added the Werckmeister temperaments, but there are some octave issues to solve: apparent in Werckmeister III and IV with certain scale – root combinations.

Octave problem fixed (again):
Quantizer-Tunings_RM-WIP_fix.audulus4 (254.7 KB)

Nice work! I appreciate very much the comments about the tunings… the concepts are getting more complicated, as expected…

So back to the subharmonicon’s tunings – these would be the 12EDO, another one for 7EDO, just temp 12 and just temp 7 (because the subh’s “8” scales include the root and +1 octave, is that right?) Make a quantizer with those four and done?

Need to sit with those penta maj/min alternatives in there, how they would integrate with the quantizer in its present form – as more scales in the quantizer list, or a separate module in series like the tunings?

– these would be the 12EDO, another one for 7EDO, just temp 12 and just temp 7 (because the subh’s “8” scales include the root and +1 octave, is that right?) Make a quantizer with those four and done?

Yes, that should be it – with C as the root for the JI since the rest of the Subharmonicon is based around C.

I’m not sure why they called it JI8 – as you say, probably because of the 7 notes plus the octave. I called it 7 since there are seven notes in the scale – or is there something I’m missing ? – I don’t have a Subharmonicon to check.

Yeah the JI8 is just 7+the octave. I don’t know why either.

Great work @RudigerMeyer ! I’ll hopefully have some time in the next few days to take a deeper look.

I think for this instrument though I’d like to keep it with more tuning options than the original 4. This project for me was about expanding on what the subharmonicon could be, not just reproducing it as is. Hence the dual filters, separate envelopes, oscillator pan, reverb etc. It’s also why I started with the quantiser from the module library rather than just updating the one I had from the A3 version which was just the original 4, with a selectable root (bc who wants something locked to C?). I don’t think it needs that whole bank of 24 scales that I have now. Thats overkill. But chromatic, maj/min, pentatonic, a few others, bonus temperaments, selectable root, that makes for something highly usable and fun to explore.

1 Like

Yes. As it is you can achieve those tunings with a combination of the setting the scale root and the tuning root. For example the ‘pure’ minor pentatonic (as suggested by Clarence Barlow: 6/5 4/3 3/2 9/5 ) can be achieved with the both the scale and the root set to the same pitch – A, for example. The ‘pure’ major pentatonic can be achieved but setting the tuning root a 4th above the scale root. If the scale has a root of A then the tuning should be set to D – which gives 1/1 10/9 5/4 3/2 5/3.

With a Pythagorean tuning the major seconds are all the same 9/8, but the minor second is a more complex ratio 32/27.

Of course all the scales could be created as ratios, but since there are so many possibilities it can quickly get unwieldy.

I think you’re on the right track – being able to select the root, and then a selection of scales. Just Intonation makes the most sense as the extra tuning over and above equal temperament since it fits so closely with the concept of the thing. Keeping it usable and fun to explore, as you say :blush:.

1 Like

Ok, here’s a patch with Kirnberger and Vallotti & Young added. That’s perhaps enough for now.

WIth the exception of the Carlos these are of course all traditional tunings/temperaments and it could be interesting to add or make another version with more modern and experimental tunings.

I think the traditional ones are a fine place to start though since they fit well in with a 7 + 5 12-key keyboard and tonal music theory, which many are familiar with.

Quantizer-Tunings_RM.audulus4 (280.2 KB)