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: | ||
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 | |||
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]] | |||