Those are indeed good tips. Other things to consider include the fact that
we can't assume the left hand is playing the root - what we generate should
probably include the root in the bass. Perhaps in a separate voice to make
it easy to remove. Also, we generally don't want to get into a situation
where we have an extension rather than a chord tone as the next-lowest note
after the root.
I actually think we could likely get good results with a relatively
simplist algorithm based on treating the piano kind of like a guitar, but
one tuned to something like say C-G-C-E-A-D, always putting the root on the
bottom, a chord tone next, and striving to keep low "fret" numbers for the
remaining notes.
Marc
On Tue, Mar 15, 2016 at 12:54 PM David Cuny <davidfc...@gmail.com> wrote:
> > 3. Where possible, resolve the remaining notes using stepwise motion (up
> or down).
>
> I forgot one other really obvious bit: *not* moving a voice is preferred
> to moving it. So:
>
> 3a. Keep notes common between chords.
> 3b. Where possible, resolve the remaining notes by step.
>
> Because of the rule to resolve things in a downward direction, you'll find
> that chords over time tend to creep downward. The solution is to apply the
> "keep notes in the middle register" rule to correct this.
>
> In any event, piano chord voicing really is a different thing than SATB
> voicing.
>
> -- David
>
> On Tue, Mar 15, 2016 at 11:37 AM, David Cuny <davidfc...@gmail.com> wrote:
>
>> >> There are a number of algorithms that could be used to generate the
>> >> voicings.
>>
>> > Would please you have some pointers in this regard?
>> > More than the algorithmic stage I am not sure how the solution itself
>> > would be characterized, though (ie: what does it actually do,
>> > harmony-wise?).
>>
>> Non-developer jumping in again. ;-)
>>
>> Rules for chord voicings are different than SATB rules, since they have
>> different goals:
>>
>> * Notes should not be too low, or the intervals will be muddy/indistinct.
>> * Notes should not be too high, or they will collide with the melody.
>> * Notes should move as little as possible, so they don't distract from
>> the melody. Stepwise motion is preferred.
>> * Active tensions (7ths and suspensions) should generally be resolve via
>> downward step.
>> * Four is a good maximum for a right-hand voicing. For chords with more
>> notes, you can drop less essential notes:
>> 9th: drop the root, because the left hand is playing it anyway.
>> Maj11th: drop the root (it's in the left hand) and the 3rd (it's a
>> dissonance against the 11th). You can generally treat a G11 as Dm7/G.
>> Min11th: treat as min7 or min9
>> 13th: These are more complex:
>> * Always include 3rd and 7th
>> * Never include the 11th (unless it’s the #11)
>> * Include 9th and 13th whenever possible
>> * Avoid a minor second at the top of the chord, since it's a strong
>> dissonance.
>>
>> These rules ignore what's in the melody - things get more complex if you
>> start taking that into account.
>>
>> You can implement the above rules with the following algorithm:
>>
>> 1. Choose the notes of the chord, having no more than 4 notes (lookup
>> tables are good, especially since you can also flag tension notes).
>> 2. Where possible, resolve tensions (7ths or suspensions) of the prior
>> chord using downward, stepwise motion.
>> 3. Where possible, resolve the remaining notes using stepwise motion (up
>> or down).
>> 4. Keep the remaining notes in the middle register - roughly E3 to G4.
>> 5. If there's a half-step between the top two notes of the chord, drop
>> the one not resolving a tension down an octave.
>>
>> -- David
>>
>>
>>
>> On Tue, Mar 15, 2016 at 1:02 AM, Tobia Tesan <tobia.te...@gmail.com>
>> wrote:
>>
>>> On 15/03/2016 04:18, Marc Sabatella wrote:
>>>
>>> Thanks for you reply, Marc.
>>> > I think from previous discussions there seems to be general agreement
>>> > that the way forward is for any chord playback syste, to simply
>>> > generate actual notes on an actual staff, the user could then edit or
>>> > make that staff invisible etc.
>>>
>>> Ah, is it so?
>>> I think I have completely misunderstood you, then; sorry about that.
>>> In practice, this doesn't change a whole lot, though, I guess that
>>> instead of a "render to midi" pipeline stage you would get a "render to
>>> staff" stage.
>>>
>>> > There are a number of algorithms that could be used to generate the
>>> > voicings.
>>>
>>> Would please you have some pointers in this regard?
>>> More than the algorithmic stage I am not sure how the solution itself
>>> would be characterized, though (ie: what does it actually do,
>>> harmony-wise?).
>>>
>>> > It has also been suggested we *integrate* with Impro-visor for more
>>> > sophisticated playback, and I'm open to that as well.
>>>
>>> Could you elaborate a bit on that?
>>> What sort of "integration", exactly?
>>>
>>> Thank you very much.
>>>
>>> --
>>> Tobia Tesan
>>> <tobia.te...@gmail.com>
>>> <sip:tobia.te...@ekiga.net>
>>> +39 393 4427709
>>> "I have not failed.
>>> I've just found 10000 ways that won't work."
>>> -- Thomas Edison
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Transform Data into Opportunity.
>>> Accelerate data analysis in your applications with
>>> Intel Data Analytics Acceleration Library.
>>> Click to learn more.
>>> http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
>>> _______________________________________________
>>> Mscore-developer mailing list
>>> Mscore-developer@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/mscore-developer
>>>
>>
>>
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
> _______________________________________________
> Mscore-developer mailing list
> Mscore-developer@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mscore-developer
>
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
_______________________________________________
Mscore-developer mailing list
Mscore-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mscore-developer