Customized Italian-style chords: Difference between revisions

m Lemzwerg moved page Customized italian style chords to Customized Italian style chords without leaving a redirect: Misspelled title
mNo edit summary
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
Implements a personalized way to write chords (in italian). The format is: (root)(root alteration)(root modifier)(root other)_(bass)(bass alteration).(duration)(dots)*(ratio numerator)/(ratio denominator) -Chords must be written in a long string. -Note names and alterations must be written in italian. -Correspondances between alteration codes and engraved symbols are: d=sharp, dd=double sharp, b=flat, bb=double flat (you can change them in the snippet). -Correspondances between modifier codes and engraved symbols are: "-" (minor)=en dash, "dim" (diminished)="o", "semidim" (half diminished)="ø" (you can change them in the snippet). -(root other) is free text. -The chord duration follows the standard lilypond format, you can also add dots and a fraction for the ratio multiplier. -If a bass is present, the chord is written in fractional form with numerator=root and denominator=bass (like italian style music sheets).
This snippet implement a personalized way to write chords (in Italian) using a command called <code>\AccordiMio</code>, which can be used in <code>\lyricsmode</code>. A single chord has the following format (to be written without spaces between the elements); except <var>root</var>, all elements are optional.
 
<var>root</var>
<var>root-alteration</var>
<var>root-modifier<var>
<var>root-other</var>
_
<var>bass</var>
<var>bass-alteration</var>
.
<var>duration</var>
 
Example: <code>soldd-7_rebb.4</code>
 
* Chords must be written in a long string.
* Note names and alterations must be written in Italian.
* For convenience, <code>s</code> is also recognized as a value of <var>root</var>, indicating a skip.
* Correspondences between alteration codes and engraved symbols are: <code>d</code>→sharp, <code>dd</code>→double sharp, <code>b</code>→flat, <code>bb</code>→double flat (you can change them in the snippet).
* Correspondences between modifier codes and engraved symbols are: <code>-</code> (minor)→en dash, <code>dim</code> (diminished)→“o”, <code>semidim</code> (half diminished)→“ø” (you can change them in the snippet).
* <var>root-other</var> is free text.
* <var>duration</var> follows the standard LilyPond format, you can also add dots and a fraction for the ratio multiplier.
* If <var>bass</var> is present, the chord is written in fractional form with numerator=root and denominator=bass (like Italian-style music sheets).


<lilypond version="2.24">
<lilypond version="2.24">
%Il formato dell'accordo è <radice>_<basso>.<durata con eventuali punti di valore>*<num>/<den>.
% Il formato dell'accordo è <radice>_<basso>.<durata con eventuali punti di valore>*<num>/<den>.
%music-map prende la musica come se fosse un albero e ci applica <funzione> in modo gerarchico a partire dalle foglie.
% music-map prende la musica come se fosse un albero e ci applica <funzione> in modo gerarchico a partire dalle foglie.
%I parametri passati via via a <funzione> dunque partono dalle singole foglie (LyricEvent) per poi passare al livello superiore (SequentialMusic)
% I parametri passati via via a <funzione> dunque partono dalle singole foglie (LyricEvent) per poi passare al livello superiore (SequentialMusic)
%che comprende la lista dei LyricEvent (le singole foglie sono passate di nuovo ma questa volta raggruppate in una lista).
% che comprende la lista dei LyricEvent (le singole foglie sono passate di nuovo ma questa volta raggruppate in una lista).
%Se modifico un livello basso, ritrovo la modifica a tutti i livelli superiori.
% Se modifico un livello basso, ritrovo la modifica a tutti i livelli superiori.
%Nel mio caso ho un unico evento di tipo LyricEvent che è la stringa contenente tutti gli accordi.
% Nel mio caso ho un unico evento di tipo LyricEvent che è la stringa contenente tutti gli accordi.
%Da questa stringa devo isolare i singoli accordi e aggiungerli in una lista di LyricEvent (opportunamente modificati).
% Da questa stringa devo isolare i singoli accordi e aggiungerli in una lista di LyricEvent (opportunamente modificati).
%La lista dei LyricEvent poi va sostituita nel livello superiore SequentialMusic sotto la voce 'elements.
% La lista dei LyricEvent poi va sostituita nel livello superiore SequentialMusic sotto la voce 'elements.
%Visto che con la prima chiamata costruisco la lista e con la seconda sostituisco 'elements di SequentialMusic,
% Visto che con la prima chiamata costruisco la lista e con la seconda sostituisco 'elements di SequentialMusic,
%ho bisogno di una variabile globale che mi memorizzi la lista tra la prima e la seconda chiamata.
% ho bisogno di una variabile globale che mi memorizzi la lista tra la prima e la seconda chiamata.
%
%
%Per capire bene come funziona music-map si può aggiungere all'inizio e alla fine della funzione il debug
% Per capire bene come funziona music-map si può aggiungere all'inizio e alla fine della funzione il debug
%  (display "MUSIC IN\n")
%  (display "MUSIC IN\n")
%  (display (ly:music-property stringa-in 'name))
%  (display (ly:music-property stringa-in 'name))
Line 312: Line 333:


Accordi = \new Lyrics { \override LyricText.font-name = "JazzChords"
Accordi = \new Lyrics { \override LyricText.font-name = "JazzChords"
     \lyricmode { \AccordiMio {
     \lyricmode { \AccordiMio { "
        "  soldd-7_rebb.4   s.8 do  
      soldd-7_rebb.4
redim7 misemidim7"
      s.8
    }
      do  
      redim7
      misemidim7
    " }
   }
   }
}
}
Line 326: Line 350:
   \Parole
   \Parole
>>
>>
\layout {
  line-width = 12\cm
  ragged-right = ##f
}
</lilypond>
</lilypond>
[[Category:Chords]]
[[Category:Correction wanted]]
[[Category:Snippet]]