Squinktronix Development Blog

Harmony II is now in the library. There is an announcement with a link to a demo video. Demo is here:

6 Likes

I have a new module up for test. It’s called “Visualizer”. It’s a chord visualizer, of course. Screen shot below should be pretty self explanatory.

The test release is here

A preliminary manual is here

8 Likes

I like this visualizer (and you know it), it’s nice looking and it can be useful for ear training sessions!

some 7ths are missing (there are 7 tertian 7ths in total Seventh chord - Wikipedia) can’t help with 9ths, sorry

my suggestions:

  1. consider horizontal spacing of the accidentals. on D# F# A# the sharps are overlapping (Musescore has excellent engraving skills to take a look at, I don’t remember if you use it)
  2. let us choose between flats and sharps, PLEASE :smiley: for my studies’ sake (C D# G is very hard to watch, and not comprehensive in a tonic environement)
  3. eliminate ionian/dorian and so on, it adds only confusion IMHO

Thank you!

So, if I can summarize your requests and comment on them:

  1. It is clearly true that Visualizer does not recognize any seventh chords that do not have a perfect fifth. While I doubt many users of VCV care about these chords, it does seem like something that I could add without too much difficulty.

  2. Yes, stacked accidentals can run into each other. While this module will never be nearly as good at scoring as a dedicated engraving program (!), It’s something I can consider. You can “cheat”, of course, by selecting a different key signature. See examples below.

  3. Yes, the enharmonic spelling is not great. I am unsure, however, what you are requesting. Is it a) allow setting of each note separately for harp/flat? b) have a global override that would force all accidentals to be spelled with sharps or flats? c) since it currently picks sharps in a sharp key and flats in a flat key, do you want to be able to specify what to do in a “no accidentals” key, like C Major? d) are you requesting that it “just be smarter” with enharmonic spelling? (just for experimentation, you can see what happens if you specify a different key signature. For example your chord would be C E- G in C minor.

  4. I will not eliminate the other diatonic modes.

Most important - what do you consider the priority of these enhancements? If I can’t do all of them (and I can’t!).

Thanks again!

oops - I forgot the images before!

if there’s no sharps, put the first sharp here.
if there’s one sharp, put the second sharp here and move the first one a little bit on the left.
and so on…
that’s just what seems to me as a simple suggestion, not asking for correct semiography, even if that would be not that complicated.

a) no, that would be a nightmare
b) maybe it works, it seems easy and functional
c) yes, that would be smart
d) that would be the best scenario

if it can help you thinking:
basic chords (triads and sevenths) are made ONLY by minor and major 3rds
major 3rd + minor 3rd = major chord
minor 3rd + major 3rd = minor chord
minor 3rd + minor 3rd = diminished chord (triad, not to be confused with the seventh chord)
major 3rd + major 3rd = augmented chord
this is why the notes in the C chords are ALWAYS C E G (there are no A D F, at least in a triad or in a seventh) and you will never find C D# G
the first note (tonic) is the one that cannot change, so C is always C
E can be Eb or E
G can be Gb or G or G#

I know this is modular and not an harmony course, but that staff is so nice looking :smiley:
the choise is yours…[cit.]

LOL I was looking for some real estate to put the input midi note numbers somewhere :broccoli:

2
0
1

you’re welcome :wink:

1 Like

unfortunate example, because in D# minor (crazy choice) the leading note is C##. I’m running away now, tomorrow I’ll take a look to what happens if you play a D natural, that should be a C##

btw, I do know a little bit more music theory than Visualizer does :wink: I know those chords aren’t spelled correctly. The trick is to (perhaps) find something easy/doable that will improve this a lot. I know how triads “should” be spelled, but that display is just showing everything coming in, which is usually not just a triad. Perhaps there is an easy algorithm that will work for many cases (like stacked triads to make 3,4,5 note chords…

sure, I just see the task as a musician first!

since this module perfectly recognizes the chord (with inversions) I would force it to output (i.e. when recognizing C major):
Eb instead of D#
Gb instead of F#
G# instead of Ab

dont’ know if it’s doable at the moment

1 Like

It sounds like an interesting challenge. I’ll see how far I get…

2 Likes

I re-wrote the enharmonic spelling stuff. It seemed like a fun challenge. Also I didn’t realize how horrified people would be who read music!

I’m going on a camping trip, but I’ll be able to put out another test build sometime next week.

2 Likes

Ok, I finally posted a version of Visualizer that has (I hope) reasonable enharmmonic spelling. It was a huge re-write of some stuff, but it was a challenge I just couldn’t resist. It now should be realtively easy for me to tweak this stuff, so please note anything that’s weird.

There is also a context menu for sharps / flats. How that affect a) the choice of keysig b) the spelling of identified chords, and c) the spelling in the score window is yet to be documented. Suffice to say that most of the work has been focused on getting the spelling in the score window to be reasonable.

let me know how it works, if you get a change to try it.

release can be found here

3 Likes

oh, and it’s still quite possible for sharps and flats to overlap and look ugly. I’ll get to that next time. This version is probably the same as before in that respect.

enharmony works great know, very nice job!
now fixing overlapping accidentals is less rilevant as everything is more clear

“flat” symbol is unicode available, could you implement it in the key root menu? just to say…

just 1 more thing to fix (if possible): I choose Eflat (major) key root, I feed the module the correct notes, on the score everything is correct, but the name of the chord is still D# and not E- (or E♭)

then I found something thats looks like a bug, somehow the module “hangs” notes in its memory if you change the key root:

insert C E G and select C major → it displays C major → OK
insert a 4th note (i.e. B natural) → it displays C major seventh → OK
change the notes D F# A C# and select D major → it displays D major seventh → OK

when you take away a cable something strange happens:

  • if you take away the last one (C# in this case) the module displays 3 notes but calls the chord “seventh”
  • if you take away one the other cables the module still displays 4 notes (don’t care for now that it doesn’t display some text)

I tried feeding gates as well (monophonic or 3/4 polyphonic) but it didn’t work.

p.s. I am not familiar with the PES protocol, is there a way to create a polyphonic cable on the PES format in the same way as I do above in the pictures?

thank you for your excellent job :+1:

vcv rack 2.5.2 on win 10

Of course all the music symbols are in Unicode. My score window is Unicode. The question is whether the Robato font I’m using has flat in it. I’ll check. Good idea.

Sounds like a bug with removing the notes. I’ll see if I can repro.

I have unit test for the gate, so I think it works. Could you give me a specific case that doesn’t work?

Tx for the quick feedback!

Yes, I need to apply the rich spelling to the chord name!

Most of my modules support PES. Also grande modules do.

Btw, I do a lot of testing using my Harmony II module. It makes it super easy. Of course it would be a good idea to use other modules!

I also use impromptu four view as something to compare to.

If you unplug an interior input to the merge module, what does it do? Put in a middle c? Maybe part of this is an artifact of that testing? I’ll have to try it.

I was not testing the gates themselves, I just tried to see if was related to the notes

yes, bullseye

So the behavior for interior missing cables with merge is just how merge works - Visualizer is (I think) working correctly in this case. But I am able to reproduce your bug with removing the last cable, or at least some other bug in that case. I’ll look into that and fix it.

My intention with the gate input is that it will make Visualizer still work if you patch it to the output of the VCV MIDI CV module. But I keep losing the physical (USB-B) cable for my keyboard so I can’t test that yet.

1 Like

yeah, pretty bad bug, any time polyphony on the input is reduced. Pretty easy fix.

1 Like