Squinktronix Harmony discussion thread

This will be a good place for test feedback and stuff.

I would like to add some more features to this module. The manual mentions that “it would be nice” to be able to set for a key besides CMaj :wink:

Some controls on what it does would be cool, although probably a bit subtle. An easy one would be to allow the ranges of the voices to be different. ATM they are limited to somone’s version of the standard vocal ranges for bass, tenor, alto, soprano. The results might even be audible!

Changing some of the rules, like allowing more inversions is easy, and possible, but probably the results wouldn’t be easy to notice - but maybe?

Oh, and a black notes on white paper option might look nice, for traditional people.

Anyway, looking for cool ideas.

If someone didn’t see it where I started my own thread, some sample patches.

I put some replies over there, too. Here’s a copy:

I think it would be “better” If I made the quantizer on my input expose other scales.

I have to confess I haven’t tried Arpeggiator after Harmony. Even though that’s why I made it. It might need some tweaks.

Some random thoughts:

In a case like this the mono gate (where you found the bug) should work. A monophonic gate should “sample” all the merged CV inputs. Note “should” :wink:

In a case like this you could turn on “hold”, then set “length” to like 8. Then it should hold onto the last two chords.

Yeah as they say in German “Es wäre nett!” You might be able to use the CMaj generator and some offsetting to get it to work for the natural modes, since the other 7 modes are ‘all the white notes’ but starting at a different root key. If you want to mess with the minor scales other than Aeolian/Natural minor, that might be a bit wonkier. I only know the music theory I picked up on the street corner, and my 2 years as a Music major. I never got as far as the music theory class, though I do own a copy of Piston’s “Harmony.” I own a copy of “Being & Time” too but I’m no philosopher.

I’m actually running the version I compiled where I fixed that bug, so ¯\(ツ)

does it not work? with a mono gate it should arpeggiate the four notes coming out of Harmony. Maybe a bug… ?

Well, several issues here. One is that the quantizer that’s in Harmony alredy knows how to do all the modes in all the keys. Look in ScaleQuantizer and Scales

second, yes, you can make most quantizers work in any diatonic key/mode by shifting the input and the output.

third, year are right that Harmony uses the rules for major keys. As you probably remember, Piston gets more complicated when he starts to talk about minor.

My theory, however, Is that even with the rulse for Major harmony, the results will probably sounds “good enough for rock and roll (or modular)”.

For example, in major the leading tone really wants to resolve up to the tonic. In minor I don’t think it has to. But if Harmony really wants the Minor 7th to resolve to the tonic it will sounds fine. So, I’ll try it, when it bubbles up to the top of the list.

Oh, also, if you look in testScaleQuantizer.cpp you will see that there are 6 tests, and two of them are for the keys of GMaj and GMin.

It seems to works differently depending on what I’m doing:

  1. No gate, but Hold set ‘On’
  2. Poly Gate, but Hold set ‘Off’
  3. Mono gate Hold ‘off’
  4. Mono gate Hold ‘On’ A good test case would be to try each of those.

Here’s a new iteration of the patch where I’m trying to use quantizers to force it to natural minor harmony.

SquinkyTronix-Demo.vcv (17.0 KB)

I’ll try a very basic patch with H and A and see what’s up. Now I really must “go to work”! (aka day job).

1 Like

Hey - I took your advice on harmony and added that feature you call "Polyphonic outputs channels 1-N”. That name is to me not super clear. But I guess it doesn’t matter - I don’t see a reason not to leave it on all the time.

Anyone have a better name for this feature? Edit - doh! I thought it was “one minus N”, but of course it’s “one through N”.

I have all this diatonic harmony working just fine in Seq++, so I’m just borrowing that an putting in in Harmony. Other than a bug or two it works fine.

1 Like

Hope to have a new test up soon.


Got the GPU usage down to just about nothing: FPS seems fine:


How many threads did you have selected for this test? I ask because as I test the multi-instanced Meander, I find that I get better FPS with 1 thread. Would you expect GPU utilization and CPU utilization are both lowest with 1 thread?

For Meander with 4 threads, one instance achieves 60 FPS but 2 drops it almost in half and additional instances don’t change FPS much.

There is a lot I do not know about threading.

Probably a better question would be if you have any lessons learned for maximizing FPS in modules with procedural panel graphics?

I started a new thread to reply to this.

1 Like

A link is helpful

1 Like


New test release of Harmony 3/26/2020.

You can download build for all three platforms here: Release Second test versions · squinkylabs/SqHarmony · GitHub

I still need some people to use this thing so I can get more good feedback. I will say a certain well-known personality did a preview for his Patreons. He did mention that is pretty much impossible to get bad sounding music from Harmony. But I’m sure it’s possible with some clever patching!

Bunch of new features now. From the changelog:

Added all the diatonic modes, and all 12 roots. Please read manual for caveats about this feature. Tweaked the panel layout to be slightly less bad. Poly outputs (1-N). Indicators below the port will tell how many channels are patched. Added controls for chord generation. Made score drawing in Harmony use less GPU resources. Added option for black notes on white paper in score section. Re-centered the score so it has less blank space at the top. Fixed pitches being generated outside correct bounds