Guida alla Notazione di LilyPond: 1.1.2 Modifica di più altezze

### 1.1.2 Modifica di più altezze

Questa sezione tratta il modo di modificare le altezze delle note.

#### Controlli di ottava

In modalità relativa è facile dimenticare un segno di cambiamento d’ottava. I controlli di ottava permettono di rilevare questi errori più facilmente: infatti, generano un avviso e correggono l’ottava se una nota si trova in un’ottava diversa dal previsto.

Per controllare l’ottava di una nota, occorre specificare l’ottava assoluta dopo il simbolo `=`. Questo esempio genererà un avviso (e cambierà l’altezza) perché la seconda nota è l’ottava assoluta `d''` invece di `d'`, come indicato dalla correzione di ottava.

>     \relative {
>       c''2 d='
>       e2 f
>     }

L’ottava in cui si trovano le note può essere controllata anche col comando `\octaveCheck altezza_di_controllo`. L’`altezza_di_controllo` è specificata in modo assoluto. Questo comando controlla che l’intervallo tra la nota precedente e l’`altezza_di_controllo` sia compresa in una quinta (ovvero secondo il normale calcolo della modalità relativa). Se il controllo fallisce, compare un avviso. Benché la nota precedente non sia modificata, le note successive sono relative al valore corretto.

>     \relative {
>       c''2 d
>       \octaveCheck c'
>       e2 f
>     }

Nelle due battute che seguono, il primo e il terzo `\octaveCheck` falliscono, mentre il secondo non fallisce.

>     \relative {
>       c''4 f g f

>       c4
>       \octaveCheck c'
>       f
>       \octaveCheck c'
>       g
>       \octaveCheck c'
>       f
>     }

#### Vedi anche

Frammenti di codice: Altezze.

Guida al funzionamento interno: RelativeOctaveCheck.

#### Trasposizione

Un’espressione musicale può essere trasposta con `\transpose`. La sintassi è

>     \transpose altezza_di_partenza altezza_di_arrivo espressione_musicale

Significa che `espressione_musicale` viene trasposto dell’intervallo compreso tra le altezze `altezza_di_partenza` e `altezza_di_arrivo`: qualsiasi nota che presenti un’altezza corrispondente all’`altezza_di_partenza` viene modificata in `altezza_di_arrivo`, e qualsiasi altra nota viene trasposta dello stesso intervallo. Entrambe le altezze sono inserite in modalità assoluta.

Nota: La musica all’interno di un blocco `\transpose` è assoluta a meno che il blocco non includa un `\relative`.

Prendiamo come esempio un brano scritto in Re maggiore. Possiamo trasportarlo in Mi maggiore; si noti come anche l’armatura di chiave venga trasposta automaticamente.

>     \transpose d e {
>       \relative {
>         \key d \major
>         d'4 fis a d
>       }
>     }

Se una parte scritta in Do (l’intonazione reale abituale) deve essere suonata su un clarinetto in La (per il quale un La viene rappresentato da un Do e dunque suona una terza minore più basso), la trasposizione sarà ottenuta con:

>     \transpose a c' {
>       \relative {
>         \key c \major
>         c'4 d e g
>       }
>     }

Si noti che `\key c \major` è specificato esplicitamente. Se non si specifica un’armatura di chiave, le note verranno trasposte ma non apparirà alcuna armatura.

`\transpose` fa distinzione tra altezze enarmoniche: sia `\transpose c cis` che `\transpose c des` traspongono un brano di un semitono più alto. La prima versione mostrerà i diesis e le note rimarranno sullo stesso grado della scala, mentre la seconda versione mostrerà i bemolle sul grado superiore della scala.

>     music = \relative { c' d e f }
>     \new Staff {
>       \transpose c cis { \music }
>       \transpose c des { \music }
>     }

`\transpose` può essere usato anche in un altro modo, ovvero per inserire note scritte per uno strumento traspositore. Gli esempi precedenti mostrano come inserire altezze in Do (o intonazione reale) e mostrare le note di uno strumento traspositore, ma è possibile anche il contrario: per esempio, se da un insieme di parti strumentali si volesse ricavare una partitura per il direttore. Così, per inserire la parte per una tromba in Si bemolle che inizia con un Mi (intonazione reale Re), si può scrivere:

>     musicInBflat = { e4 … }
>     \transpose c bes, \musicInBflat

Per stampare questa musica in Fa (ad esempio per riarrangiarla per corno) si può avvolgere la musica esistente in un altro `\transpose`:

>     musicInBflat = { e4 … }
>     \transpose f c' { \transpose c bes, \musicInBflat }

Per maggiori informazioni sugli strumenti traspositori, si veda Trasporto strumentale.

#### Frammenti di codice selezionati

#### Trasposizione delle altezze con numero minimo di alterazioni

Questo esempio usa del codice Scheme per imporre delle modifiche enarmoniche alle note che permettano di avere il numero minimo di alterazioni. In questo caso si applica la seguente regola:

Le doppie alterazioni devono essere eliminate

Si diesis -> Do

Mi diesis -> Fa

Do bemolle -> Si

Fa bemolle -> Mi

In questo modo vengono scelti i suoni enarmonici più semplici.

>     #(define (naturalize-pitch p)
>        (let ((o (ly:pitch-octave p))
>              (a (* 4 (ly:pitch-alteration p)))
>              ;; alteration, a, in quarter tone steps,
>              ;; for historical reasons
>              (n (ly:pitch-notename p)))
>          (cond
>           ((and (> a 1) (or (eqv? n 6) (eqv? n 2)))
>            (set! a (- a 2))
>            (set! n (+ n 1)))
>           ((and (< a -1) (or (eqv? n 0) (eqv? n 3)))
>            (set! a (+ a 2))
>            (set! n (- n 1))))
>          (cond
>           ((> a 2) (set! a (- a 4)) (set! n (+ n 1)))
>           ((< a -2) (set! a (+ a 4)) (set! n (- n 1))))
>          (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7))))
>          (if (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7))))
>          (ly:make-pitch o n (/ a 4))))

>     #(define (naturalize music)
>        (let ((es (ly:music-property music 'elements))
>              (e (ly:music-property music 'element))
>              (p (ly:music-property music 'pitch)))
>          (if (pair? es)
>              (ly:music-set-property!
>               music 'elements
>               (map naturalize es)))
>          (if (ly:music? e)
>              (ly:music-set-property!
>               music 'element
>               (naturalize e)))
>          (if (ly:pitch? p)
>              (begin
>                (set! p (naturalize-pitch p))
>                (ly:music-set-property! music 'pitch p)))
>          music))

>     naturalizeMusic =
>     #(define-music-function (m)
>        (ly:music?)
>        (naturalize m))

>     music = \relative c' { c4 d e g }

>     \score {
>       \new Staff {
>         \transpose c ais { \music }
>         \naturalizeMusic \transpose c ais { \music }
>         \transpose c deses { \music }
>         \naturalizeMusic \transpose c deses { \music }
>       }
>       \layout { }
>     }

#### Vedi anche

Guida alla notazione: Trasporto strumentale, Inversione, Trasposizioni modali, Ottava relativa, Retrogradazione.

Frammenti di codice: Altezze.

Guida al funzionamento interno: TransposedMusic.

#### Problemi noti e avvertimenti

La conversione relativa non avrà effetto sulle sezioni `\transpose`, `\chordmode` e `\relative` comprese all’interno di un blocco `\relative`. Per usare la modalità relativa all’interno di musica trasposta, occorre inserire un ulteriore blocco `\relative` all’interno di `\transpose`.

Il comando `\transpose` impedisce di stampare le alterazioni triple. Le sostituisce con un’altezza ‘enarmonicamente equivalente’ (per esempio, Re bemolle al posto di Mi triplo bemolle).

#### Inversione

Un’espressione musicale può essere invertita e trasposta in una singola operazione con:

>     \inversion altezza-di-riferimento altezza-di-arrivo espressione_musicale

L’`espressione_musicale` viene invertita intervallo per intervallo intorno all’`altezza-di-riferimento` e poi trasposta in modo che ci sia una corrispondenza tra `altezza-di-riferimento` e `altezza-di-arrivo`.

>     music = \relative { c' d e f }
>     \new Staff {
>       \music
>       \inversion d' d' \music
>       \inversion d' ees' \music
>     }

Nota: I motivi da invertire devono essere scritti in forma assoluta oppure devono essere prima convertiti in forma assoluta racchiudendoli in un blocco `\relative`.

#### Vedi anche

Guida alla notazione: Trasposizioni modali, Retrogradazione, Trasposizione.

#### Retrogradazione

Un’espressione musicale può essere invertita in modo da produrre il proprio retrogrado:

>     music = \relative { c'8. ees16( fis8. a16 b8.) gis16 f8. d16 }

>     \new Staff {
>       \music
>       \retrograde \music
>     }

#### Problemi noti e avvertimenti

`\retrograde` è uno strumento piuttosto semplice. Dato che molti eventi sono ‘riflessi’ (come in uno specchio) invece che scambiati, le modifiche manuali e i modificatori direzionali per gli estensori di apertura devono essere aggiunti ai corrispondenti estensori di chiusura: `^(` deve essere terminato da `^)`, ogni `\<` o `\cresc` deve essere terminato da `\!` o `\endcr`, ogni `\>` o `\decr` deve essere terminato da `\enddecr`. Comandi e modifiche che cambiano le proprietà con un effetto duraturo causeranno facilmente delle sorprese.

#### Vedi anche

Guida alla notazione: Inversione, Trasposizioni modali, Trasposizione.

#### Trasposizioni modali

In una composizione musicale basata su una scala, un motivo viene frequentemente trasportato in differenti modi. Può essere trasposto per iniziare in punti diversi della scala o può essere invertito rispetto a un punto cardine della scala. Può anche essere rovesciato per produrre il retrogrado, si veda Retrogradazione.

Nota: Le note che non si trovano all’interno della scala definita non vengono trasformate.

#### Trasposizione modale

Un motivo può essere trasposto entro una certa scala con:

>     \modalTranspose altezza-di-partenza altezza-di-arrivo scala motif

Le note di motif vengono spostate, se all’interno della scala, del numero di gradi della scala dati dall’intervallo tra altezza-di-arrivo e altezza-di-partenza:

>     diatonicScale = \relative { c' d e f g a b }
>     motif = \relative { c'8 d e f g a b c }

>     \new Staff {
>       \motif
>       \modalTranspose c f \diatonicScale \motif
>       \modalTranspose c b, \diatonicScale \motif
>     }

È possibile indicare una scala ascendente di qualsiasi lunghezza e con qualsiasi intervallo:

>     pentatonicScale = \relative { ges aes bes des ees }
>     motif = \relative { ees'8 des ges,4 <ges' bes,> <ges bes,> }

>     \new Staff {
>       \motif
>       \modalTranspose ges ees' \pentatonicScale \motif
>     }

Se usato con una scala cromatica, `\modalTranspose` ha un effetto simile a `\transpose`, con in più la possibilità di specificare i nomi delle note da usare:

>     chromaticScale = \relative { c' cis d dis e f fis g gis a ais b }
>     motif = \relative { c'8 d e f g a b c }

>     \new Staff {
>       \motif
>       \transpose c f \motif
>       \modalTranspose c f \chromaticScale \motif
>     }

#### Inversione modale

Una sequenza di note può essere invertita all’interno di una data scala intorno a una determinata nota cardine e quindi trasposto, in un’unica operazione, con:

>     \modalInversion altezza-cardine altezza-di-arrivo scala motif

Le note di motif vengono spostate dello stesso numero di gradi dalla nota dell’altezza-cardine all’interno della scala, ma nella direzione opposta, e il risultato viene poi spostato all’interno della scala per il numero di gradi dato dall’intervallo tra altezza-di-arrivo e altezza-cardine.

Dunque, per invertire intorno a una particolare nota della scala, è necessario usare il medesimo valore per altezza-cardine e altezza-di-arrivo:

>     octatonicScale = \relative { ees' f fis gis a b c d }
>     motif = \relative { c'8. ees16 fis8. a16 b8. gis16 f8. d16 }

>     \new Staff {
>       \motif
>       \modalInversion fis' fis' \octatonicScale \motif
>     }

Per invertire intorno a una nota cardine posta tra altre due note, si inverte intorno a una della note e poi si traspone di un grado della scala. Le due note specificate possono essere interpretate come parentesi del punto cardine:

>     scale = \relative { c' g' }
>     motive = \relative { c' c g' c, }

>     \new Staff {
>       \motive
>       \modalInversion c' g' \scale \motive
>     }

L’operazione combinata di inversione e retrogradazione produce la retrogradazione inversa:

>     octatonicScale = \relative { ees' f fis gis a b c d }
>     motif = \relative { c'8. ees16 fis8. a16 b8. gis16 f8. d16 }

>     \new Staff {
>       \motif
>       \retrograde \modalInversion c' c' \octatonicScale \motif
>     }

#### Vedi anche

Guida alla notazione: Inversione, Retrogradazione, Trasposizione.

#### LilyPond — Guida alla Notazione v2.24.4 (ramo stabile).