lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Roman Numeral placement


From: Stephen MacNeil
Subject: Re: Roman Numeral placement
Date: Wed, 22 Apr 2015 20:15:40 -0400

Thanks Harm,
I do think it would be cool -- i must say i only played a bit with it and yes in little examples :)

>Apart from the most simple cases and only in c-major. ;)

actually I got it to go in all keys :) a hack i do admit .. but it does the job.

anyway that as I said would be a great feature!

In other keys -- other then c-major --- you just have to find the I

%%%%%%%%% cut

\version "2.18.2"


diatonicScale = { cis d e fis gis a b }


chrd = \relative c'' { <a cis e> <gis b d> <fis a cis>2

}


multipleModalTransposes =

#(define-music-function (parser location m music)(ly:music? ly:music?)

(music-clone m

'elements

(map (lambda (pitch)

(ly:music-property

#{ \modalTranspose c $pitch $diatonicScale \context Bottom $music

#}

'element))

(event-chord-pitches m))))


multipleTransposes =

#(define-music-function (parser location m music)(ly:music? ly:music?)

(music-clone m

'elements

(map (lambda (pitch)

(ly:music-property #{ \transpose c $pitch $music #} 'element))

(event-chord-pitches m))))

%% more concise:

#(define (note-name->roman-number-markup pitch lowercase?)

"Return roman-number-string for @var{pitch}."

(vector-ref #("I" "ii" "iii" "IV" "V" "vi" "vii") (ly:pitch-notename pitch)))

\score {

\new PianoStaff

<<

\new ChordNames

\multipleTransposes

{ c }

\multipleModalTransposes

\diatonicScale \chordmode { \chrd }


\new Staff

\multipleTransposes

{ c }

{

\key a \major

\multipleModalTransposes

\diatonicScale \chrd

\break

\bar "||"

}


\new ChordNames

\with {

minorChordModifier = ""

%chordNameLowercaseMinor = ##t

majorSevenSymbol = "7+" %#whiteTriangleMarkup

chordRootNamer = #note-name->roman-number-markup

\remove "Staff_performer"

}

\repeat unfold 1

\multipleModalTransposes \diatonicScale \chordmode { \transpose c e {\chrd} }


\new Staff {

\clef bass

\multipleTransposes

{ c }

{

\key a \major

\multipleModalTransposes \diatonicScale \transpose c c,, \chrd

}

\bar "|."

}

>>


\layout {

\context {

\Staff

explicitKeySignatureVisibility = #end-of-line-invisible

printKeyCancellation = ##f

}

}

\midi { }

}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\version "2.18.2"


diatonicScale = { cis d e fis g a b }


chrd = \relative c' { <d fis a>4 d'8 cis <g b d>4 <a cis e>

}


multipleModalTransposes =

#(define-music-function (parser location m music)(ly:music? ly:music?)

(music-clone m

'elements

(map (lambda (pitch)

(ly:music-property

#{ \modalTranspose c $pitch $diatonicScale \context Bottom $music

#}

'element))

(event-chord-pitches m))))


multipleTransposes =

#(define-music-function (parser location m music)(ly:music? ly:music?)

(music-clone m

'elements

(map (lambda (pitch)

(ly:music-property #{ \transpose c $pitch $music #} 'element))

(event-chord-pitches m))))

%% more concise:

#(define (note-name->roman-number-markup pitch lowercase?)

"Return roman-number-string for @var{pitch}."

(vector-ref #("I" "ii" "iii" "IV" "V" "vi" "vii") (ly:pitch-notename pitch)))

\score {

\new PianoStaff

<<

\new ChordNames

\multipleTransposes

{ c }

\multipleModalTransposes

\diatonicScale \chordmode { \chrd }


\new Staff

\multipleTransposes

{ c }

{

\key d \major

\multipleModalTransposes

\diatonicScale \chrd

\break

\bar "||"

}


\new ChordNames

\with {

minorChordModifier = ""

%chordNameLowercaseMinor = ##t

majorSevenSymbol = "7+" %#whiteTriangleMarkup

chordRootNamer = #note-name->roman-number-markup

\remove "Staff_performer"

}

\repeat unfold 1

\multipleModalTransposes \diatonicScale \chordmode { \transpose c b {\chrd} }


\new Staff {

\clef bass

\multipleTransposes

{ c }

{

\key d \major

\multipleModalTransposes \diatonicScale \transpose c c,, \chrd

}

\bar "|."

}

>>


\layout {

\context {

\Staff

explicitKeySignatureVisibility = #end-of-line-invisible

printKeyCancellation = ##f

}

}

\midi { }

}


%%%%%%%%%%%%%%%%%%


good luck with the patch


Thanks

Stephen



On Wed, Apr 22, 2015 at 5:59 PM, Thomas Morley <address@hidden> wrote:
2015-04-22 19:24 GMT+02:00 Stephen MacNeil <address@hidden>:
> Harm , Thomas Morley and others
> I like to follow the discussions even if I don't understand/need something
> because I usually learn a lot and sometimes even adapt some ideas or code
> into something I can use later.
>
> In this thread I was amazed that the scheme created could interpret the
> chords!!!

Well, it does not!
Apart from the most simple cases and only in c-major. ;)

It may be doable to extend the ChordRootNamer to cover more keys and
let our chord-naming-engine do some additional work.
But it will likely be restricted to the simpelst use cases (as others
mentioned already)

> I tend to analyze music (almost daily). Usually I print it out and
> go over it and mark in what I need. When I saw this i instantly tried it on
> some of my scores and was amazed.
>
> Now where I was lost was -
> 1. is it possible to make it read polyphony? <<\top \\ \bottom>> without re
> writing it as a chord?
> 2. the ability to add it to any score as needed for analysis
> 3. to only transpose when needed to specific keys?
> 4. use not only pianoStaff but whatever the score uses

A summarizing answer:
For most questioned I'd answer: I don't know or I doubt
At least I don't have the time to work on it.

There's a patch of mine needing some rework and I didn't add a single
line of code to it for about 2 weeks ...

>
> Thanks
>
> Stephen
>
> And I really was impressed
> and liked how it listed the chord and numeral


Cheers,
  Harm


reply via email to

[Prev in Thread] Current Thread [Next in Thread]