Skip to main content

Snippet Default Harmony - Update to Track Latest Harmony

Posted

Hi.

Suppose I'm trying manage Snippet Harmony during playback, with a layout like this:

 

So long as I have one of the Harmony snippets active (ala F in col 1 above) then I get that harmony applied as desired.

The problem that arises is this  -  

If I simply now click on a new Harmony in col 2 then I have two harmony snippets "running" at once.   (this is an argument for being able to mark columns as "one-stops-other")

However, if I first Stop the harmony snippet in col 1 then I get immediate reversion to the default Harmony (i.e. found just to the right of H).  In some cases one might want this behavior, but in the general case I do not.

The behavior I'm going for is:  "Keep the last Harmony selected in effect until instructed otherwise".

In the current paradigm, I think what this would require is for the default Harmony (i.e. found just to the right of H) to be repeatedly updated to keep in sync with the latest Harmony specifically selected.

This could be an option, either the current behavior or "constant update" behavior  (with the default Harmony being reverted to the stored default when you Stop).

--

P.S.  I understand I could put the 8 items in col 2 under into col 1 under the first 8 items there, but that's not a good general solution because

  1.  The maximum is 16, and I may (will) want more than that
  2.   Items below the first 8 are off the screen and require scrolling

 

 


Mon, 2024-02-05 - 11:52 Permalink

The logic that each group can play one snippet at a time is essential. Extending that to multiple assignable groups, only because of layout considerations, complicates things very much.

You will also be disappointed if you want to use harmony snippets like a palette. The ability to look ahead to the next chord enables voice leading. You'd lose that altogether. The rendered output becomes less smooth, melodic lines are torn apart, etc. 

Mon, 2024-02-05 - 14:54 Permalink

Thanks for your reply.

I have to split it ... <g>

You will also be disappointed if you want to use harmony snippets like a palette. 

If I couldn't use harmony snippets like a palette, I'd be completely disappointed.  This is perhaps the #1 reason I have Synfire!      Fact is though that I can and do.  This is yet another area where individual preferences and goals will differ - sometimes radically.   

I am thrilled that I can "recast" a complete multi-instrumental performance into new harmony basically at will.  If I could do this in my DAWs, I would have little in the way of further need.    With this suggestion, I'm just trying to smooth out the process.

The ability to look ahead to the next chord enables voice leading. You'd lose that altogether. The rendered output becomes less smooth, melodic lines are torn apart, etc. 

This is a very good point, and I appreciate you bringing it up, as it was not really in front of my mind.  Certainly it is something I will need to, and will, keep in mind  -  in particular when evaluating single-chord  vs.  multi-chord Harmony as to usage.

Here's a thing for me - most of my work is in "chunks".  When changing from one chunk to another, I generally want contrast.   Put another way, when crossing chunk boundaries, voice-leading is not my concern at that moment.

 

Mon, 2024-02-05 - 14:54 Permalink

Setting aside my aside re: XOR of columns, let me return to the central idea of this request.

How about giving us an option to "Keep the last Harmony selected in effect until instructed otherwise"?

As an option, this wouldn't take anything away from anybody, but it would enable a desireable approach to live performance and composition that is just out-of-reach with the current implementation.
 

Mon, 2024-02-05 - 16:05 Permalink

Set the change probability for the harmony column to 0%. That will keep the current selection until you manually change it.

You can also unschedule the last harmony and schedule the next at the same time.

Mon, 2024-02-05 - 16:58 Permalink

This is yet another area where individual preferences and goals will differ - sometimes radically

Absolutely. This is also the pain with making tools for chaotic creative workflows (a DAW on the other hand is mostly a sound engineering tool). Baking specific workflow or genre preferences into a UI drastically narrows the audience, which already is a small niche. If it is a set of simple tools that can be combined, it will serve a much wider audience.

Tue, 2024-02-06 - 16:23 Permalink

Startup is a problem here, unless Harmony is joined with Performance in memory slots in advance.

This is because the memory slots not only instantiate the snippets that are chosen and saved in the memory, but also null out the columns where nothing was chosen at the time the memory was saved.

The problem also exists when it is only desired to change the Performance on the fly, while keeping the harmony (for now) the same.    Unless you have saved every Performance (set of non-harmony snippets) with Harmony A, and then again saved every Performance with Harmony B, etc. etc. etc. then you are stymied.

Of course it is not possible to do that even if you wanted to because the matrix is limited in size.

The promise of Music Prototyping is that harmony and performance have been deconstructed and are separately manipulable.    In some respects this is true of Synfire, but not here in the Snippets matrix, and that is a real problem, a real limitation (not a "niche" case, if I may say so).

I am trying to suggest how to fix this with minimal effort and minimal change (to the best of my current knowledge, which is obviously not as deep as Cognitone's!).

Possibilities include:

1.  Changing the operation of the Matrix so that last invoked Harmony always remains in effect until explicitly changed.    This is perhaps most disruptive, but maybe not.   Only Cognitone can say.

2.  Changing the operation of Snippets memories so that when invoked they only schedule the snippets that were explicitly running (green arrow) at the time the memory was saved, leaving the other columns unaffected.    IOW, the other columns are not nulled out (shut off).

3.  Changing the operation/relationship of default Harmony so that it is updated by on-the-fly harmony commands during matrix operation.   Then, if other harmonies are turned off by memories (as now) the default Harmony, having been updated, continues the user's last selection of harmony.

4.  Some other way to do it?    


Any of the above could be the mechanism, I think, and any of the above could be optional if "the exact way it is now" truly has a use-case and a constituency.

Somehow though, Harmony and Performance need to decoupled and individually controllable by the user, in realtime, with saving and recall, else the promise of 'Make Arrangement from Last Session" in particular, and Music Prototyping in general cannot be realized vis-a-vis the Snippets matrix.   That would be a tragedy, IMO.

All this is in support of both live performance and composing via the Snippets matrix.

Indeed, composing via the Snippets matrix (quickly populated from Libraries) is perhaps the quickest possible way to compose with Synfire.   It is very satisfying, right up until one hits roadblocks such as the one under discussion here.

Please consider this "feedback from the field" not as some crank call for personal accommodation, but as a serious plea for core capability that will be a major enabler for all.    

Thank you.

 

Tue, 2024-02-06 - 16:48 Permalink

A memory recall should restore the exact set of snippets that was saved. Stopping inactive ones is a vital part of that. Otherwise slots will quickly fill up with chaos. There are styles with few instruments that are always playing. And there are styles with many instruments of which only a few are playing at a time. The grid must work for all of them.

It may be useful to have an option to exclude harmony when a memory slot is recalled, though. Could be as simple as holding SHIFT.

Concerning live chord input, I'd rather find a way to use the Palette for that. It's the standard tool for navigating chords. Snippets should carry harmony that's intended to be used as a progression (may still contain a single chord) because that's where they will eventually land when you convert to arrangement.
 

Tue, 2024-02-06 - 17:19 Permalink

Concerning live chord input, I'd rather find a way to use the Palette for that. It's the standard tool for navigating chords. Snippets should carry harmony that's intended to be used as a progression (may still contain a single chord) because that's where they will eventually land when you convert to arrangement.

I love the Synfire palettes, ever since the days of Harmony Navigator.   Having a palette be "live" wrt. the Snippets matrix would be very cool as a thing unto itself.

However, it wouldn't change the need to work cleanly (somehow) with Harmony-only snippets in the matrix.

Reasons:

  1.  Palettes are the universe of harmony.  The Snippets matrix, as built by the user, will contain only the harmonies pre-selected by the user for that piece.  It is nice to be able to choose from the universe while playing live (though very demanding in the moment, both physically and mentally), while It is essential to be able to choose quickly, easily, and accurately from a preselected, organized set.
  2.  Unlike the Snippets matrix, the palettes will never be mappable to hardware controllers (e.g. Launchpad, nanoPad, and everything similar to those).    You do want to go there eventually, right?   (I sure hope so!)

 

Tue, 2024-02-06 - 17:25 Permalink

A memory recall should restore the exact set of snippets that was saved. Stopping inactive ones is a vital part of that. Otherwise slots will quickly fill up with chaos. There are styles with few instruments that are always playing. And there are styles with many instruments of which only a few are playing at a time. The grid must work for all of them.

I take the concern, and see how it applies to the case of performing instrument snippets.

I don't think it applies in the same way to harmony-only snippets, or a column of such.  Or at least it doesn't necessarily have to.

Regardless, changing the way memories are recalled is only one possible approach here.   Maybe not the one ultimately to be desired.

 

 

Tue, 2024-02-06 - 17:27 Permalink

It may be useful to have an option to exclude harmony when a memory slot is recalled, though. Could be as simple as holding SHIFT.

Very interesting.   I will think about that.   It might work out well.

 

 

Fri, 2024-02-16 - 22:49 Permalink

- Snippets: Hold SHIFT to exclude harmony snippets from memory recall

Thanks for going ahead and implementing this in 2.4.3.    I'm already finding it quite useful!

Sat, 2024-02-17 - 11:22 Permalink

If a small improvement takes 10 minutes to add and makes a difference for a majority of use cases, it's a no brainer.