Skip to main content

Iterative Generation of Progressions

Posted

Thinking along the lines of "musical prototyping" (as is appropriate here, I believe), one form of prototype template would be the pattern of "harmonic rhythm" (HR), by which I mean simply the pattern of how often chords change, regardless of what the chords actually are.

Take this visual as an example for discussion - 

We see:

.5m    1.5m    1m    1m       (x2)
1m    1m    .5m    1m    
.5m .5m    1m    .5m    1.5m

for 16 measures total.

Now, *that* in itself is a pattern or template.

So what I think would be really helpful (and fun!) would be to be able to:

a)  have a library of such HR templates available for instantiation (and let the user add to this library)

b)  be able to tell the program, either for the whole instantiated template, or for just selected (highlighted) portions of it  -  "Fetch me some chords to audition!!"

The program could be as dumb as random in doing this, or better, it could apply what it knows about harmonic formulas to be a bit "smarter" in going about it.

Right now, the user can do what he/she wants with each of the 14 "blocks" shown above, provided he edits them one-by-one manually.   I'm advocating for automated assistance in making this process much quicker!

For example, select the 3 blocks in m11-m12.   Press F9.   Voila! - 3 new chords, love 'em or dump 'em.  Rinse and repeat.

Technically, I guessing this would not be all that hard to implement, and I think the new possibilities for high-speed workflow would likely more than justify the effort.

Cheers!

 

 

Attachments

Thu, 2019-01-03 - 21:21 Permalink

There's a command Paste Rhythm (EDIT menu) that does exactly that (or almost).

Just copy anything (literally) that has rhythm, select your target, do Paste Rhythm and voilà ... the target will assume the rhythm.

If you want Synfire to fill a rhythm with meaningful chords, copy a progression from the example harmony library and paste rhythm as explained above.

Thu, 2019-01-03 - 21:41 Permalink

Hi.  Thanks for your reply, but I can't say I follow the explanation.

First, I'm in HN2, not SynFire.   So if the capability described is not in HN2 then I can't see it or use it.

Now, I do notice that there is a Menu -> Edit item Paste Rhythm as you say, but it is greyed out and nothing I could find in a few minutes of trying would un-grey it.

FWIW, I've got a beginner's mind here with HN2 (though many decades with music, software, and music software).  The downside is I do not have any working mindset of "how things are done" here.   The upside is the same, in that my stumbles are (for awhile anyway) likely to be everyone's stumbles, and thus perhaps indicative of where things are not as straightforward as might be wished for.

I do wonder though if we are are on the same page conceptually here?   I'm talking about potential auto-assisted generation of chords in a progression - nothing to do with MIDI notes or musical rhythm values at all (except in the explained sense that the chords have lengths as per the lead sheet being worked with).

(In HN2 terms, a re-write of the Harmony vector?)

Fri, 2019-01-04 - 18:50 Permalink

Sorry, I confused HN with Synfire in this thread.

Paste Rhythm is enabled only if an object bearing some rhythm is on the clipboard. You need to copy such an object first, some Harmony parameter for example.

You can indeed use that to make any progression assume the rhythm of another.

 

Automatically generating chord progressions is a tempting idea. Although for pop songs and dance, you could as well pick a random progression from a song book and transpose it to the key you want, then apply your desired rhythm as explained above.

Of the complex progressions one would use for orchestral developments, ambient and jazz, there is an infinite number and these are best explored with the palette. There is no particular set of rules that I know of that could serve as a template for automatic synthesis of those. How good is a progression generator that gives you 6 million progressions, all of which you would need to sift through to find some that's cool for your song? That's exactly why we made the Palette, so you can follow your ear from the start.

I don't remember right now if there is a harmony library with "Standards" for HN2. You could use the one attached below.

Fri, 2019-01-04 - 23:22 Permalink

While it is true that the furthest extreme case of "please fill *all* these blanks from scratch" runs into the "6 million progressions" problem, I was more thinking that fill *this* slot (or a few) would be a good match for HN2's innate ideas of functional harmony as outlined in Appendix: Theory of Harmonic Functions.   

IOW, the context around the "blank" to be filled would much constrain the program to limit it's choices as per what it "knows" about functional harmony.  Perhaps I'm mistaken about that "knowing"?

I always look to software in the hope of fast, creative, fun, and surprising paths to creation.  From that POV, pressing a key and having a new "harmonic sound" generated for evaluation seems promising.

But I'm with you re: the Palette - that's what sold me on the program!

Fri, 2019-01-04 - 23:24 Permalink

Re: the .coglib file -  Will HN2 load that?  If so how?  

I searched the manual for "coglib" and it does not appear there.

Plus I looked around the Forum and was left with the impression that .coglib files are for SynFire only.

If you could state definitively here what is in a .coglib file, and whether/how HN2 can save/load such that would be great!
 

Sat, 2019-01-05 - 21:20 Permalink

Put the file in ~/Documents/Harmony Navigator 2/Libraries. I haven't tested, but HN2 should be able to open it. You'll see it listed in the menu next to the example library that comes with HN2.

Sat, 2019-01-05 - 22:07 Permalink

I placed the .coglib file as described, but I can't find it anywhere from inside the program when running HN2.

I don't know if it didn't open, or if I don't know where to look for the evidence that it did.