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
Make snippet readable (more or less)
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>. The format is:
 
<code><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> [<var>dots</var>]
[* <var>ratio-numerator</var> / <var>ratio-denominator</var>]
</code>
 
* Chords must be written in a long string.
* Note names and alterations must be written in Italian.
* Correspondences between alteration codes and engraved symbols are: d→sharp, dd→double sharp, b→flat, bb→double flat (you can change them in the snippet).
* Correspondences between modifier codes and engraved symbols are: "-" (minor)→en dash, "dim" (diminished)→"o", "semidim" (half diminished)→"ø" (you can change them in the snippet).
* <var>root other</var> 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).


<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 327: Line 344:
>>
>>
</lilypond>
</lilypond>
[[Category:Chords]]
[[Category:Correction wanted]]
[[Category:Snippet]]