Re: How to put chords on a score automatically

2007-11-14 Thread Tao Cumplido
If only the notes given are taken into account the first chord can only be 
C.
Em6 should have a C# in it.

But I agree, the following chords result in really strange chord names 
although they are just inversions.
If the root (and the root in a chord doesn't need to be the lowest note) 
was clear to LilyPond such errors wouldn't occur.
For example if the first chord in the example by Mats was just a voicing 
for a chord the following chords could be possible: C, Am7, FMaj7, Dm11, 
Bb7/b9/#11/13

Also LilyPond generates some very strange chord names.
The problem is that there is no standard for Chord Symbol notation.
But I have never seen in my life things like Bmb6 or C8, at least not in 
any Jazz score (and believe me, I have seen many) but it can well be that 
this symbols exist in Pop music, I have really no idea.


just my 2ยข

regards,

Tao


> 
>  Original-Nachricht 
> Datum: Tue, 13 Nov 2007 17:48:48 -0800 (PST)
> Von: "Rick Hansen (aka RickH)" <[EMAIL PROTECTED]>
> An: lilypond-user@gnu.org
> Betreff: Re: How to put chords on a score automatically
> 
> 
> 
> 
> Mats Bengtsson-4 wrote:
> > 
> > 
> > 
> > Rick Hansen (aka RickH) wrote:
> >>
> >> Such a program could not make the assumption that the root of the 
> chord
> >> is
> >> always being sung by the bass or any other voice, or being sung at 
> all. 
> >> But
> >> if the lp syntax allowed "marking" what note is the current chord root 
> at
> >> any point in time, then it could generate possible names for the 
> harmony
> >> at
> >> that point in time.  Otherwise I could see a lot of wrong and weird 
> chord
> >> names being generated by an algorithm that is not being told what is 
> the
> >> root note.  Also the root of the chord may not always appear in the
> >> score,
> >> its common to remove the root or the 5th as they are more "expendable"
> >> than
> >> the 3rd or 7th, because the 3rd and 7th dedermine maj/min or dominant
> >> leading tones, often the root is even more expendable than the 5th for
> >> deletion.  So what this algorithm would really need is an "invisible
> >> staff"
> >> that allows you to just name to root notes and duration thereof, this
> >> staff
> >> is never printed, nor would it participate in midi, etc. it's just 
> there
> >> to
> >> tell the algorithm what the current root is at that pont in time, then
> >> the
> >> real notes in the score are used to come up with a suitable chord 
> name.
> >>
> >> BTW your idea sounds like a very cool idea, as I dont know of any
> >> notation
> >> program that can also do harmony analysis.  It would be a quick way to
> >> generate the names, then go back and correct the "wrong" ones.  Nice.
> >>   
> > LilyPond already does what you describe, see the example in 
> "Introducing 
> > chord names"
> > in the manual. The following example shows how to do the same if you
> > haven't
> > entered the music as chords (i.e. using <...>), but have a separate 
> > identifier for
> > each "voice".
> > 
> > \version "2.10.0"
> > one = \relative c''{g a g c}
> > two = \relative c'{e f d e}
> > three = \relative c'{c c b c}
> > 
> > \score{
> > <<
> > \new ChordNames << \one \two \three >>
> > \new Voice << \one \two \three >>
> >  >>
> > }
> > 
> > /Mats
> > 
> > 
> > 
> > ___
> > lilypond-user mailing list
> > lilypond-user@gnu.org
> > http://lists.gnu.org/mailman/listinfo/lilypond-user
> > 
> > 
> 
> 
> The ambiguity still remains, is the first chord in this example Em6 or C? 
> Either could be correct.  The second chord is probably Am6 but it could 
> also
> be F or Dm7 (with the root omitted).  On and on, all these are valid 
> names
> for the notes in your example.  IOW an algorithm that is not told the
> correct root cant make any assumption.  In the key of C the third chord 
> in
> the example would obviously be Bm7b5 (the naturally occuring chord of the
> leading tone) but it could also be G (the natural chord of the 5th tone). 
> Too many mistakes are possible and in most music half the chords would be
> wrong, it may work well for nursury rhymes, but not for more complex 
> music.
> 
> Now if each note can simply be marked as the root then the 

Re: How to put chords on a score automatically

2007-11-13 Thread Rick Hansen (aka RickH)



Mats Bengtsson-4 wrote:
> 
> 
> 
> Rick Hansen (aka RickH) wrote:
>>
>> Such a program could not make the assumption that the root of the chord
>> is
>> always being sung by the bass or any other voice, or being sung at all. 
>> But
>> if the lp syntax allowed "marking" what note is the current chord root at
>> any point in time, then it could generate possible names for the harmony
>> at
>> that point in time.  Otherwise I could see a lot of wrong and weird chord
>> names being generated by an algorithm that is not being told what is the
>> root note.  Also the root of the chord may not always appear in the
>> score,
>> its common to remove the root or the 5th as they are more "expendable"
>> than
>> the 3rd or 7th, because the 3rd and 7th dedermine maj/min or dominant
>> leading tones, often the root is even more expendable than the 5th for
>> deletion.  So what this algorithm would really need is an "invisible
>> staff"
>> that allows you to just name to root notes and duration thereof, this
>> staff
>> is never printed, nor would it participate in midi, etc. it's just there
>> to
>> tell the algorithm what the current root is at that pont in time, then
>> the
>> real notes in the score are used to come up with a suitable chord name.
>>
>> BTW your idea sounds like a very cool idea, as I dont know of any
>> notation
>> program that can also do harmony analysis.  It would be a quick way to
>> generate the names, then go back and correct the "wrong" ones.  Nice.
>>   
> LilyPond already does what you describe, see the example in "Introducing 
> chord names"
> in the manual. The following example shows how to do the same if you
> haven't
> entered the music as chords (i.e. using <...>), but have a separate 
> identifier for
> each "voice".
> 
> \version "2.10.0"
> one = \relative c''{g a g c}
> two = \relative c'{e f d e}
> three = \relative c'{c c b c}
> 
> \score{
> <<
> \new ChordNames << \one \two \three >>
> \new Voice << \one \two \three >>
>  >>
> }
> 
> /Mats
> 
> 
> 
> ___
> lilypond-user mailing list
> lilypond-user@gnu.org
> http://lists.gnu.org/mailman/listinfo/lilypond-user
> 
> 


The ambiguity still remains, is the first chord in this example Em6 or C? 
Either could be correct.  The second chord is probably Am6 but it could also
be F or Dm7 (with the root omitted).  On and on, all these are valid names
for the notes in your example.  IOW an algorithm that is not told the
correct root cant make any assumption.  In the key of C the third chord in
the example would obviously be Bm7b5 (the naturally occuring chord of the
leading tone) but it could also be G (the natural chord of the 5th tone). 
Too many mistakes are possible and in most music half the chords would be
wrong, it may work well for nursury rhymes, but not for more complex music.

Now if each note can simply be marked as the root then the algorithm could
work correctly, when the root is being omitted of course that mark would
have to be even more explicit by naming a non-printing note as well.



-- 
View this message in context: 
http://www.nabble.com/How-to-put-chords-on-a-score-automatically-tf4783962.html#a13738521
Sent from the Gnu - Lilypond - User mailing list archive at Nabble.com.



___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Re: How to put chords on a score automatically

2007-11-13 Thread Mats Bengtsson



Rick Hansen (aka RickH) wrote:


Such a program could not make the assumption that the root of the chord is
always being sung by the bass or any other voice, or being sung at all.  But
if the lp syntax allowed "marking" what note is the current chord root at
any point in time, then it could generate possible names for the harmony at
that point in time.  Otherwise I could see a lot of wrong and weird chord
names being generated by an algorithm that is not being told what is the
root note.  Also the root of the chord may not always appear in the score,
its common to remove the root or the 5th as they are more "expendable" than
the 3rd or 7th, because the 3rd and 7th dedermine maj/min or dominant
leading tones, often the root is even more expendable than the 5th for
deletion.  So what this algorithm would really need is an "invisible staff"
that allows you to just name to root notes and duration thereof, this staff
is never printed, nor would it participate in midi, etc. it's just there to
tell the algorithm what the current root is at that pont in time, then the
real notes in the score are used to come up with a suitable chord name.

BTW your idea sounds like a very cool idea, as I dont know of any notation
program that can also do harmony analysis.  It would be a quick way to
generate the names, then go back and correct the "wrong" ones.  Nice.
  
LilyPond already does what you describe, see the example in "Introducing 
chord names"

in the manual. The following example shows how to do the same if you haven't
entered the music as chords (i.e. using <...>), but have a separate 
identifier for

each "voice".

\version "2.10.0"
one = \relative c''{g a g c}
two = \relative c'{e f d e}
three = \relative c'{c c b c}

\score{
<<
\new ChordNames << \one \two \three >>
\new Voice << \one \two \three >>
>>
}

   /Mats



___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Re: How to put chords on a score automatically

2007-11-12 Thread Rick Hansen (aka RickH)
 \new Lyrics \with{ alignAboveContext = "upper" } \lyricsto
> "tenorDivisi" \tenorwords
> 
>\lyricsto "lead" \context Lyrics = "stanza-1" {
>%\set stanza = "1."
>\stanzaa }
> 
>\context Staff = "lower"  { \clef "F^8"<<
>\global
>\bari
>\bass
>>>}
>\new Lyrics \with { alignAboveContext = "lower" } \lyricsto
> "bariDivisi" \bariwords
> \new Lyrics \with { alignBelowContext = "lower" } \lyricsto
> "bassDivisi" \basswords
>>>
> 
> 
> 
> 
> \layout{
> indent = 0.0\pt
> \context {
> \ChordNames
> \override ChordName  #'style = #'american
> chordChanges = ##t
> }
> }
> \midi {
> \context {
>   \Score
>   tempoWholesPerMinute = #(ly:make-moment 60 2)
>   }
> }}
> 
> 
> On 10/11/2007, Rune Zedeler <[EMAIL PROTECTED]> wrote:
>>
>> Father Gordon Gilbert skrev:
>>
>>
>> > My question is this:  As I arrange this, I want to have the chords I am
>> > creating displayed
>>
>> I am not sure I understand.
>> Something like this?
>>
>> %%% BEGIN %%%
>> \version "2.10.0"
>>
>> sop = { g' a' }
>> alt = { e' f' }
>> bas = { c' d' }
>>
>> {
>><<
>>  \new ChordNames << \sop \alt \bas >>
>>  \new ChoirStaff <<
>>\new Staff \sop
>>\new Staff \alt
>>\new Staff \bas
>>  >>
>>>>
>> }
>> %%% END %%%
>>
>> -Rune
>>
> 
> 
> 
> -- 
> Fr. Gordon Gilbert
> Penetanguishene, ON
> 
> ___
> lilypond-user mailing list
> lilypond-user@gnu.org
> http://lists.gnu.org/mailman/listinfo/lilypond-user
> 
> 


Such a program could not make the assumption that the root of the chord is
always being sung by the bass or any other voice, or being sung at all.  But
if the lp syntax allowed "marking" what note is the current chord root at
any point in time, then it could generate possible names for the harmony at
that point in time.  Otherwise I could see a lot of wrong and weird chord
names being generated by an algorithm that is not being told what is the
root note.  Also the root of the chord may not always appear in the score,
its common to remove the root or the 5th as they are more "expendable" than
the 3rd or 7th, because the 3rd and 7th dedermine maj/min or dominant
leading tones, often the root is even more expendable than the 5th for
deletion.  So what this algorithm would really need is an "invisible staff"
that allows you to just name to root notes and duration thereof, this staff
is never printed, nor would it participate in midi, etc. it's just there to
tell the algorithm what the current root is at that pont in time, then the
real notes in the score are used to come up with a suitable chord name.

BTW your idea sounds like a very cool idea, as I dont know of any notation
program that can also do harmony analysis.  It would be a quick way to
generate the names, then go back and correct the "wrong" ones.  Nice.


-- 
View this message in context: 
http://www.nabble.com/How-to-put-chords-on-a-score-automatically-tf4783962.html#a13713334
Sent from the Gnu - Lilypond - User mailing list archive at Nabble.com.



___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Re: How to put chords on a score automatically

2007-11-10 Thread Father Gordon Gilbert
Rune -

Your example works on its own, and is roughly what I'm looking for, but when
I try to incorporate that syntax into my own (2.11.32) score, it doesn't
work.  I'd like to see the chordnames at the top of the choirstaff so I can
check my work.

My score is such that I can't really boil it down to a minimum example, but
here is the whole thing so you can see what I'm doing.  (Keep in mind that
it's not finished -- but it does compile at this stage.  And having used
templates from previous works it's probably got a whole bunch of sloppy
code.)

Thanks for any help you can give.

Fr. Gordon_

\header {
filename = "AmazingGrace-Sweet-Ads.ly"
enteredby = "Gordon Gilbert"
composer = "Traditional American Melody"
poet = "words: Rev'd John Newton, 1779"
arranger = "arr. Gordon Gilbert 2007"
date=""
title = "Amazing Grace"
subtitle = "Arr. for Barbershop Chorus"
metre = ""
meter = \metre
copyright = "Public Domain - Permission granted to perform this
arrangement in a not-for-profit setting"
style = "Hymn"

}

\version "2.11.23"
\paper{
#(set-paper-size "letter")
}

global= {
\time 3/4
\key g \major



}

tenor = \context Voice = "tenor"  \relative c' {
   \voiceOne
   \override NoteHead #'color = #green
\override Stem #'color = #green
\override Beam #'color = #green {
\partial 4 r4
b'2 d8 b d2 dis4 e2 c4 b2
a4 b2 d4 e2 e4 fis2 e4 ^ "like" d4( ^ "me" c)
b4 b2 d4 d2 b4 c4.( e8 e c) b2
a4 b2 d4 d cis c b4( d) c4 ^ "I" b2 ^ "see"
r4
b4 c \times 2/3 {d8( c b)} d2 dis4 e( d) c4 b4 c
a4 b2 \times 2/3 {d8( c b)} e4( fis) g4 fis4( g) ( e4 d c)
b4 d2 \times 2/3 {d4 e8} f2 d4 c2 c4 b2
a4 b4 c d4 d( cis) c b2 c4 b2
r4
b2 ^ \markup \italic {"Bluesy"} d4 d2 d4 ees2 c4 b2
a4 b2 d4 ees2 ees4 f2 e4 d2
d4 b2 d4 d2 b4 c4.( ees8 ees c) b2
a4 b2 d4 d cis c b2.
e2. d e b2
 \new Voice = tenorDivisi { \voiceOne
 \transpose g b'
 {
\override NoteHead #'color = #green
\override Stem #'color = #green
\override Beam #'color = #green {
r4 r b4 b r4 r d'4 d'4 dis' e'2. c'4 b2. r4
r d' e' e'4 fis'4 fis'4 fis' g' a' g' fis' e'
d'( e'4 f'2 ~ f'4) f'4 d'2. d'4 g'2. d'4 c'2. c'4 b a
b2. d'4 c'( d' e') g' g'2
a'2 gis'1

 }}
   }}
 }


lead = \context Voice = "lead"  \relative c'  {
\voiceTwo
\override NoteHead #'color = #red
\override Stem #'color = #red
\override Beam #'color = #red {
\partial 4 d4
g2 b8( g) b2 a4 g2 e4 d2
d4 g2 b8( g) b2 a4 d2. ~ d2
b4 d4.^ "x"( b8) d( b) g2 d4 e4.( g8) g( e) d2
d4 g2 b8( g) b2 a4 g2 ( fis4 g2)
%verse 2
d4
g2 \times 2/3 {b8( a g)} b2 a4 g2 e4 d2
d4 g2 \times 2/3 {b8( a g)} b2 \times 2/3 {a4( b8)} d2. ~ d2
b4 d2 \times 2/3 {b8( a g)} b2 \times 2/3{b4( a8)} g2 \times 2/3 {e4(
d8)} d2
\times 2/3 {d4( e8)} g2 \times 2/3 {b8( a g)} b2 a4 g2. ~ g2
%verse 3
d4
g2 b8( g) b2 a4 g2 e4 d2
d4 g2 b8( g) b2 a8( b) d2. ~ d2
b4 d4.^ "x"( b8) d( b) g2 d4 e4.( g8) g( e) d2
d4 g2 b8( g) b2 a4 g2.
%bridge
a ^ \markup \italic {"Bridge"} b g fis2
%verse 4
\key b \major
\transpose g b'
{
d4 \time 4/4
g2. b8( g) b2. a4 g2. e4 d2.
d4 g2. b8( g) b2. a8( b) d'1 ~ d'2.
b4 d'2 ~ d'8( b8) d'( b) g2. d4 e2 ~ e8 ( g8) g( e) d2.
d4 g2. b8( g) b2. a4 g2 g2
b1 ^ \markup \italic {"Tag"}
a4 ^ \fermata b ^ \fermata c' ^ \fermata
r8 ^ \fermata d'8 d'1  d' ^ \fermata
}
\bar "||"
}
}

bari = \context Voice = "bari" \relative c''   {
\voiceOne
\override NoteHead #'color = #blue
\override Stem #'color = #blue
\override Beam #'color = #blue {
\partial 4 d,4
g2 g4 g2 fis4 g2 a4 g2
a4 b2 b4 cis2 a4 d2 a4 ^ "like" a2 ^ "me"
g4 g2 g4 d2 g4 c2 a4 g2
a4 b2 g4 fis4. g8 fis4 g4( b) a ^ "I" g2 ^ "see"
d4
g2 g4 d'2 b4 c2 a4 g2
a4 b2 b4 a2 a4 d2 a4 a2
g4 b2 b4 d2 b4 c2 a4 g2
a4 b2 g4 fis4. e8 fis4 g2. ~ g2
d4
f2 ^ \markup \italic {"Bluesy"} f4 c'2 b4 bes2 bes4 g2
a4 f'2 f4 g2 g4 d2 a'4 a2
g4 f2 f4 d2 b4 bes2 a4 g2
a4 d2 f,4 fis4. e8 fis4 g2.
cis2. g b dis2
\new Voice = bariDivisi { \voiceOne
 \transpose g b'
 {
\override NoteHead #'color = #blue
\override Stem #'color = #blue
\override Beam #'color = #blue {
r4 r f f r r b b
fis bes2. c'4 b?2.
r4 r d' d' e' fis'2. e'4 d'


}}}

}
}

bass = \context Voice = "bass" \relative c'  {
\voiceTwo
\override NoteHead #'color = #magenta
\override Stem #'color = #magenta
\override Beam #'color = #magenta {
\partial 4 d4
d2 b4 d2 b4 c2 e4 g2
fis4 e2 e4 a2 cis,4 d2 e4 _ "like " fis( _ "me " e)
d b2 d4 g,2 d'4 c2 e4 g2
fis4 e2 e4 d e fis g2 d4 _ "I" g,2 _ "see"
d'4
g,4 b d4 g4 d4 b c4. d8 e fis g2
fis4 e2 e4 a,4 b c4 b2.( a2) d4
g2 g4 g2 b4 c2 a4 g4( g

Re: How to put chords on a score automatically

2007-11-10 Thread Rune Zedeler

Father Gordon Gilbert skrev:


My question is this:  As I arrange this, I want to have the chords I am 
creating displayed


I am not sure I understand.
Something like this?

%%% BEGIN %%%
\version "2.10.0"

sop = { g' a' }
alt = { e' f' }
bas = { c' d' }

{
  <<
\new ChordNames << \sop \alt \bas >>
\new ChoirStaff <<
  \new Staff \sop
  \new Staff \alt
  \new Staff \bas
>>
  >>
}
%%% END %%%

-Rune


___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


How to put chords on a score automatically

2007-11-10 Thread Father Gordon Gilbert
Hi list,

I'm working on a four-part score for barbershop chorus.  It has four
separate voices of course, and words to the lead line, as well as words to
various parts of other voices.

My question is this:  As I arrange this, I want to have the chords I am
creating displayed  so I can see where the parts should go.  Is there a way
to have LilyPond display the chords I have created in these disparate
voices?   I know that the chords thus formed are not very smart (i.e. it
can't recognise inversions) but that's OK -- I will remove these when the
arrangement is complete.  BTW, I *did* search through the Manual to see if
there was something there, but could not find it -- if it *is* there, I will
be happy to read the relevant entries, once they are pointed out.

Thanks,

Fr. Gordon Gilbert+

-- 
Fr. Gordon Gilbert
Penetanguishene, ON
___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user