Skip to main content

Harmony issues

Posted

Hey hey,

Can someone help me with the workflow in Synfire?

I included two mp3's. The first is the original take and the second is the rendered output based on the harmonizers chord recognition and the figures generated.

I grouped the symbols manually, set the harmonizer for complex and made sure that the chords were changing at the right points.

I know its not Synfires MO to match the take exactly, but the entire character has been lost in the translation here.

What am I missing? I did have some trouble choosing the harmonic contexts -- I cant visually identify what notes are being played (no piano roll) to select the correct chord and listening to candidate chords over this material is a bit difficult.

How do I find the harmonies that will result in the original material being heard? I know I can use static pitches, but that sort of defeats the point right?

Thanks,
Casey

(http://www.colorstampede.com/p01.mp3)
(http://www.colorstampede.com/p02.mp3)


Mon, 2009-03-30 - 19:10 Permalink

Hi Casey,

Just a quick thought. This doesn't really answer your question but it sounds to me that the pitch range of the notes is a problem too. Have you tried tagging the notes with different "Playing Ranges" so that the lower notes stay low and the higher notes stay high? You might have to alter the corresponding ranges in your instrument too. Also, it might be worth playing with the Interpretation/range parameter - maybe unticking the "octave" box too.

Tim

Mon, 2009-03-30 - 20:04 Permalink

Hi Casey,

without the phrase file at hand, it's difficult to guess, but these harp-like glissandi play a very large portion of a scale (if not the entire scale) in short time, so determining a chord is highly ambigous, even for a human.

1) As Tim noted, the playing range needs to be changed, if you want the result to use the same range as the take. Pitch range is a major aspect of musical character. It sounds like the Interpretation breaks the segment apart to make them fit into a rather narrow range.

2) Be sure to include a whole glissado/stroke in a single segment. The figure recognition tends to break down long segments into smaller ones if they exceed a certain number of symbols. Edit a segment in a way that makes it look like you think it should. Keep segments simple.

3) As this example is more about scales rather than chords, use chords with lots of extensions, e.g. minor 9th, 13th, etc. IMO it does not make much sense to use this particular take as a model for harmony. You could use it to guess the key and then design a progression for that passage based on that.

In general, the idea behind figures is to have reusable abstractions to play with. Figure recogniton is fine for getting a lot of working material into the system quickly, but it is not very good at reproducing original takes at the detail level. This is much like with photo to vector graphics conversion: From a distance the vectors looks like the picture, but the closer you get the more artifacts you will recognize.

Andre

Mon, 2009-03-30 - 23:50 Permalink

I've included the file

I tried those suggestions with very little noticeable difference.

I'd like to clarify what Im after and maybe someone might have some advice that will lead me in the right direction.

For my purposes I see two main modes of composition using synfire. The first is to start from scratch with no preconceptions and take advantage of Synfires happy accidents. I like this method and have used it to great effect.

The second use, which is what I am try to achieve here is to take a completed part, not just its harmonic context and melodic shape, but its atmosphere and je ne se qua, and build upon it with other instruments and lines. Sometimes I do know exactly what I want. If getting it means jumping through a few hoops with Synfire, then thats fine but I want to make sure I can at least get it in the ball park. As this piece stands it has lost the essence of the original.

I understand why glissando parts like this would be difficult but just take the first chord; its a Cmaj7 and thats it, nothing special. There are no other parts conflicting with it that would require a change in the voice leading and the harmonic context is correct. I adjusted the range but I wasn't able to alter the output. Why aren't the notes that I input considered if there are no other conflicts. Its not a case of Synfire assisting but rather altering arbitrarily -- something computers are not good at.

If I remember the notes in that first run are C, E, B, C, E, B, G, C. They are all grouped. Its pretty clear what that is.

For that first CMaj7, I could definitely just set the notes to static and rely on my ability to manually assign the harmonic context so that the other parts fall in line, but thats hardly ideal. Once I have the conditions set that will allow for a resonable reinterpretation of the performance I still want the flexibility of Synfires functions to adjust the original in targeted sections.

=====

The other issue I'm having, which is related; The suggestions that the harmonizer is giving me are either too basic (even with the complex setting) or incorrect I have to manually identify the chords. There is no easy way to see exactly what notes were played in the take or anywhere in Synfire. I recorded the part two weeks before bringing it into synfire and I honestly have no idea what I played. matching it by ear is very difficult with something like this.

It would be wonderful if I could select a group of symbols and see a little list of the notes from the take (as notes and not midi numbers).

EDIT: Or perhaps a method to select the notes from a take that are decidedly part of the harmonic context and insert that chord in the correct position. I know its still more an art than a science but it might help. Still though I don't understand why its doing what its doing with the part I made.

(GlissHelp.cognac)
glisshelp_168.cognac

Attachments

Tue, 2009-03-31 - 16:15 Permalink

Well here's an odd thing .... I downloaded your file, changed all the notes to horizontal scale and ended up with the attached file. Ok, it's not the same as the original but it does sound pretty close.

The differences between this and your original seem reasonably logical. For instance in bar 13 you have the notes: C2 F2 B2 E3 whereas synfire output E2 C2 B2 G3 for me - an inversion of your F69 chord with a slightly more open voicing and the 9 rather than the root but it strikes me as being a reasonable choice especially as I chose horizontal scale notes rather than chord notes - interesting that synfire kept the "B".

Anyway, how come we get different results? The only change I made was to the instrument - I just used synfire's default piano.

Curious!

Tim

PS This thread has got me trying to access chromatic notes again and I still can't (easily). I intend posting on the "requests" thread soon.

PPS I believe we've discussed problems with the harmonizer not offering "correct" chords in the past. I think Andre suggested the solution was just to type the chords into the progression manually ... but that's not much help if you're hoping for "better" suggestions!

Tim's version of GlissHelp (GlissHelpTim.mp3)
glisshelptim_490.mp3

glisshelptim_490.mp3
Attachments

Tue, 2009-03-31 - 19:32 Permalink

EDIT: I didn't see the mp3... that p02 was way off for sure. I really didn't get to trying to fix the bulk of it I was just focused on the first chord. As it is, the difference between your GlissHelpTim and the p01 is still a bit too much to swallow, though I imagine it's to do with my lame harmonization. I do very much appreciate your help though.

When you say you ended up with the attached file, do you mean the p02 example? Thats what I got when I switched them all to [h]... I get similar results from the h,v and c modes... I haven't been able to get anything similar to the p01 file except with p symbols

If is set the key to C Major, the Chord to Cmaj 7 and the symbols to either the [h], [v], or [c] setting I get these notes

E0 E1 B1 C2 G2

Here are the notes when on [p] mode

C1 E1 B1 C2 E2

Are you getting different results on that first chord? I know its a nuance but to my ears it is a big difference.

I would expect the rest of my harmonies to not match up as well, mainly because I didn't yet put a serious effort into figuring out the correct harmony myself. That first chord is asking the real question --

if all the conditions are correct, why isn't synfire playing back what I put in? Just by looking at the figure editor I can see that those intervals are not correct. There is no reason the first interval should be a leap by an octave.

If the variation parameter was stuck on always on it would be a bug... How is this different?

As for the ps's

Second and carried to greater access to chromatic notes... Perhaps even a entirely new symbol type for the purpose.

It would be nice if the harmonizer worked better but that is a very minor problem compared to this. How were you getting the midi note names by the way? Is there anything in the interface that lists them? I have been slowing the tempo and just finding them by ear, which is not that most efficient method.

My main concern in all of this is; if I cant get synfire to play back what I write, under any conditions, it becomes very difficult to rely on it professionally. There is an octave to explain.

Tue, 2009-03-31 - 22:58 Permalink

One way I have used, is to extract the output of a figure to the take, and you can see the notes that way. Go into the raw take area of the phrase editor, right click on take, and select extract from output (the exact name escapes me right now.) You can see if the notes match up close to the take in a sort of roundabout way by doing that (and undoing it.)

There is (was?) a bug that I had submitted under Feature Requests where if you undo the extract operation and make any change to the figure and then click "OK" that the original take is destroyed, even though you "undid" the extraction.

I would love a way to see the actual pitch of symbols in a context (rather than "relative") outside of the take area, but that is the only way I have found to do it..

Edit: I just ran a quick figure recognition on the take with a huge G7 chord and the notes seem to mostly match up across the whole passage, minus 2 or 3 that probably have the wrong octave. See if this output is a bit more malleable in other contexts?? (I didn't bother changing the flubbed notes, grouping/anchors, or interpretation/playing ranges, but that can all be done after the fact.)

Edit#2: Ok I dropped the default note for the middle playing range and teh notes come up nearly exact. Minus a couple flubs, but those are playing ranges again I think.. I've only spent 10 mins on this. It comes up with the same notes in the take for especially that first part even with just CMaj7. I just did the G7 with extensions as a quick hack for the whole thing. I didn't bother tweaking individual sections, etc.

Updated the file too.

Rough figure recognition #2. (GlissHelp Keith.cognac)
glisshelp_keith_131.cognac

Tue, 2009-03-31 - 23:42 Permalink

Sounds like Keith might have the answer with his G7 chord ... but that doesn't explain why a Cmaj7 doesn't allow repreoduction of the notes you started with.

For the record, I'm identifying notes by exporting to a midi file and then importing into cubase (I think the octave numbers are one higher than normal that way). I used to wade through by ear but got bored, especially when I hit chords I couldn't manage (which happened rather frequently)!

I'm still getting slightly different results to you though. With notes set to [h] and a C maj7 chord I got. E1 B1 B2 C3 G3 which is close to your EEBCG but not the same! I think your original file had CEBCE which is different to both (sigh!)

I've also tried setting the interpretaion to the preset "near bypass" but that doesn't seem to work either.

As you say, synfire seems to pretty arbitrary about the intervals it's choosing and how come it doesn't even start on the same chord note? - changing the inversion of a gliss/arpeggio seems harsh!

Sorry I can't help more ...

Tim

Tue, 2009-03-31 - 23:43 Permalink

@Tim: My suggestion to type in chords manually referred to a case where, as I understood it, the goal was to convert songs from a song book. I mean, if the chords are in front of you printed on paper, there is no need to use the harmonizer.

I agree the harmonizer could need more fine-tuning and testing. Knowing that figure recognition and harmonization both are challenging and ambigous disciplines with lots of screws and knobs to fiddle with (i.e. no 100% correct results defined), we designed the software framework around them in a way that supports continued refinement and future development. With more user feedback, we will be able to apply the necessary tweaks and adjustments over time.

@Casey: You can see the pitches of a take in the phrase editor. Just select the symbols individually (see screenshot below).

Thanks for sharing your example take. I played around with it a bit. First off, it seems there is a bug with figure recognition that loses segment grouping when no specific symbol type was pre-tagged for them. IAW: The black segments get broken apart. If you tag them blue or green or whatever color, they will be preserved. That needs to be fixed (AR368).

I got better rendering results after tagging segments with colors and using the "Pattern Recognition" algorithm. See attached file.

(pitchinfo.png)

(GlissHelp.cognac)
glisshelp_147.cognac

Tue, 2009-03-31 - 23:44 Permalink

Thanks, thats a nice tip.

I was more thinking in terms of a a list display of the selected notes [A0, Bb3, C-1 etc]. Are you just looking at the positions of the symbols on the grid to ascertain the notes in the take? Is the [p] symbols centerline always c3?

My real concern is that the harmony is in fact correct and Synfire is being arbitrary.

I feel very comfortable letting synfire work magic on the arrangement, and I would only expect the line to change when deviating from the logical harmonic context.

To me the initial line or melody should be attainable, as designed, and it seems that it is just not.

What i want to know is; is it me(likely)? Or is synfire really incapable of playing C1 E1 B1 C2 E2 ? If its me how can I avoid this headache in the future? I lost an entire day that I should have been composing on this... I wont be able to attend to the score for another week now. I cant afford for it to happen again.

The [P] works but it is all or nothing which is not acceptable.

Wed, 2009-04-01 - 00:01 Permalink

What i want to know is; is it me(likely)? Or is synfire really incapable of playing C1 E1 B1 C2 E2 ? If its me how can I avoid this headache in the future? I lost an entire day that I should have been composing on this... I wont be able to attend to the score for another week now. I cant afford for it to happen again.

When I run this first part through with CMaj7 I get the correct notes I think... (ie: they match up exactly with the original take when extracted from the converted figure back into the take..)

You can try with my version of the file by changing the harmony parameter to CMaj7 (check the scale though) and clear the figure and re-run figure recognition with pattern rec and ~3 voices... You'll have to make it CMaj7(9) for the part at bar 2 though.

Edit: I did this for bar 2 with CMaj7(9) and it matches with the input also. This is using default Microsoft GM device Acoustic Piano, middle playing range dropped one octave.

Edit#2: I saw these notes in the take editor as C2 not C1 (you mentioned C1.) When I set the first figures to the lower playing range (same default device, lower range is not edited) they came out as C1, etc. Sonar is weird in that C1==C2 in most other programs, so maybe Nuendo is the same way. The file indicated C2, and default middle playing range was steering toward C3 in that case...which is why I dropped the middle range 1 octave.

Wed, 2009-04-01 - 00:19 Permalink

Is the [p] symbols centerline always c3?
Yes. However, the lines are just a rough orientation. You see the exact pitch of a symbol after selecting it.

I feel very comfortable letting synfire work magic on the arrangement, and I would only expect the line to change when deviating from the logical harmonic context.

I wish that was possible! It took me months of research to realize that I was hunting after the perpetuum mobile. Harmonization is not a science, nothing that is computable and could be proven correct. Analysis is as much a creative decision as is composition and rendering. That's why a figure rendered against the harmonized progression will always deviate from the take. Apart from very simple, stiff examples, there is no loss-free conversion forth and back.

It might be possible to get closer to the desired behavior by adding some hacks, e.g. by adding invisible meta information to the figure that helps restore the original take under certain circumstances. Sort of "play the take unless harmony changed by more than 1%" -- albeit I doubt that would be a good solution.

If your take is a melody and is important, e.g. a lead vocal line with lyrics, use static pitches and compose the arrangement around it. Use dynamic figures to create 2nd, 3rd and 4th voice as needed. That works very good. I'm currently doing this with an old song of mine for testing.

If your take is more of an accompaniment or ornament, edit the figure to look right from a visual perspective (i.e. shape and symbol types should match your musical intention) and let Synfire do the rendering for you.

[quote]What i want to know is; is it me(likely)? Or is synfire really incapable of playing C1 E1 B1 C2 E2 ?

Sure can it do that. I would say the automatic voice leading gets in your way here. Try turning that off (use strategy "Bypass").

Andre

Wed, 2009-04-01 - 00:46 Permalink

[quote="Tim UK"] ... but that doesn't explain why a Cmaj7 doesn't allow repreoduction of the notes you started with.

It seemed to map 1:1 with the take in my testing when using Cmaj7 at bar 1 and Cmaj7(9) at bar 2 after setting the playing range down an octave (from the default.)

Wed, 2009-04-01 - 01:05 Permalink

Another thing to keep in mind (especially with bass notes) is the segment strength of the anchor. I think the default for bass notes is "strong" for example, and often my bass notes are anchors by themselves (eg: unconnected to each other.)

You'll get the most flexibility by using "weak" if you want to scrutinize (in my experience anyway.) With bass notes, they are very strongly locked to only chord tones by default, regardless of the bass note set in the progression. Medium and weak will let you have more flexibility.

Wed, 2009-04-01 - 01:54 Permalink

I didnt see a number of these posts. Thank you all very much for your help. These tips are really clearing up a lot.

Andre: That seems to work better. I like parts of the new one more than the original. This is totally workable.

I have read the manual twice now But a lot of this is still nebulous to me.

I am unclear what you did to work around the bug. Is the action to give the symbols in the take the colorings? And recreate the figures. Is that correct?

The tag solution doesn't sound awful to me. Something to say, this is the harmonic context for these notes... "trust me." I thought about it a bit and i realize this is just a convenient way of setting the notes to [p] when ever the harmonic context is confirmed. There is the possibility that variations could be hard coded to different contexts, always, of course, with the option to over ride.

I think my main hesitation with setting parts to [P] is that one has to dig down through containers in search of stray [p] at every juncture when the harmonic context is changed. I would much rather deal with a little dialog informing me that altering the Harmonic context will unlock the notes than having to manually go through 30 figures every time I change a chord.

The only instance I would ever use a [P] note, other than for percussion and sfx, is when I am completely aware of its function in the harmonic context at the point that I set it. This isn't to say [P] notes would automatically switch when the harmonic context changes, but to have the option would be great.

Being able to manually confirm that a specific group of notes are appropriate for a specific context doesn't seem like a bad thing. This is all flying car nonsense for sure, but perhaps the system could be trained over time using these confirmations in a future iteration of synfire.