Estrazione delle parti

Indice generale

  1. Parte 1a: Gestione dello spartito
    1. Lezione 1 - Scrivere le note
    2. Lezione 2 - Uso delle variabili
  1. Parte 2a: Stile e output
    1. Lezione 3 - Make up della partitura
    2. Lezione 4 - Trasposizione & output
  1. Parte 3a: Gestione della partitura
    1. Lezione 5 - Sistemi multipli
    2. Lezione 6 - Estrazione delle parti
  1. Appendice: Script di riferimento
    1. Schema 20: Trasposizione & output
    2. Schema 26: Sistemi multipli
    3. Schema 33: estrazione delle parti

Lezione 6

Riproduzione grafica della chiave di Fa

Dedicheremo questo secondo approfondimento del nostro percorso all’estrazione di parti singole o blocchi di parti, a partire da un sistema basato su più pentagrammi.
Per realizzare questa operazione, utilizzeremo il sorgente da noi elaborato nelle lezioni precedenti.

Sarà necessario, quale azione preliminare, creare all’interno della nostra cartella di lavoro un nuovo file di LilyPond, che chiameremo primolily_score.ly.

Per aiutarci nella distinzione dei documenti, ci preoccuperemo di rinominare il file contenente il nostro script, chiamandolo primolily_music.ly.

Nota: I nomi dei files sono, ovviamente, indicativi e non soggetti a vincoli; essi, infatti, non esercitano nessun tipo di influenza sulla compilazione dei sorgenti.

Dovremo, ahimè, scorporare e riscrivere alcune parti del codice esistente in modo che – come suggerito dai nomi appena attribuiti ai documenti – il file primolily_music.ly contenga solamente la lista delle variabili e il file primolily_score.ly contenga l’intestazione della composizione e il blocco di istruzioni che definiscono la score.

Inizieremo riscrivendo o spostando porzioni di codice dal vecchio al nuovo documento; innanzitutto, copieremo nel nuovo file l’istruzione che identifica la versione del compilatore e, in esso, sposteremo anche il blocco di intestazione della composizione.

Importante: il numero di versione del programma dovrà corrispondere ed essere presente in entrambi i files.

Dopo aver prudenzialmente salvato i sorgenti, ci occuperemo della trasformazione del set di istruzioni – rintracciabili nel file primolily_music.ly – che definivano la precedente score in una nuova variabile, che andrà a costituire, in tal modo, l’ultima variabile della lista e che chiameremo – aggiungendo anche la riga appropriata destinata ai commenti – <music>.

Se, prima di alterarne la sintassi, osserviamo con attenzione il codice relativo al preesistente blocco della score, riconosceremo i due Staff già definiti, i quali giacciono ordinatamente l’uno sotto l’altro.
Nel nostro caso, gli Staff definiti sono solamente due; consideriamo, però, che in partiture di maggior complessità (immaginiamo, ad esempio, una partitura destinata ad una composizione per orchestra) il numero dei pentagrammi da gestire sarebbe destinato, inevitabilmente, a moltiplicarsi in maniera esponenziale; da questa riflessione, deriva l’importanza di cercare di comprendere a pieno i prossimi passi spiegati in questo approfondimento.

Lasceremo, quindi, così come stanno gli Staff già creati; sposteremo o riscriveremo nel nuovo file – avendo cura di eliminarle dalla precedente posizione – anche la riga che determina la score, l’istruzione che imposta la graffa di unione dei pentagrammi che compongono il sistema – con i relativi commenti – e tutte le righe del vecchio codice, a partire dal blocco del layout, fino all’ultima parentesi graffa che conclude lo script.

Ora faremo la conoscenza con un piccolo costrutto, che andrà posizionato e replicato prima di ciascuna delle righe contenenti l’istruzione

\new Staff <<

la quale – come abbiamo già avuto modo di sperimentare – dichiara l’apertura di ogni singolo nuovo pentagramma.

L’istruzione che studieremo e che rappresenta la ragione principale di questo approfondimento si chiama semplicemente

\tag

bello vero?
Il senso di tutto questo risulta essere estremamente intuitivo; attraverso la definizione e, successivamente, l’identificazione di un tag, infatti, il compilatore – analizzando i contenuti che etichettano ciascuno degli Staff presenti all’interno del sistema – sarà in grado di costruire scientificamente – in relazione alle richieste espresse dagli argomenti di chiamata che impareremo a conoscere fra poco – una score grafica e midi che potrà contenere rispettivamente una singola parte o più parti, estratte in base a dei criteri di tipo selettivo.

Nota: Ogni Staff può essere identificato da più tag e, a differenza delle variabili, i tag possono contenere all’interno della propria struttura anche valori di tipo numerico.

Creiamo quindi all’interno del file primolily_music.ly la nostra variabile <music>, integrando il codice esistente nel seguente modo:

Schema 27: variabile music

%nome variabile
music= {
	<<
%creazione dei tag per il violino
\tag #'violin
\tag #'score
%Definizione di un nuovo violino Staff
\new Staff <<
%Etichetta del rigo
\set Staff.instrumentName = "Vl"
%strumento midi
\set Staff.midiInstrument = "violin"
%Chiamata alle variabili global e partoned
\global
\partoned
>>
%creazione dei tag per il violoncello
\tag #'cello
\tag #'score
%Definizione di un nuovo violoncello Staff
\new Staff <<
%Etichetta del rigo
\set Staff.instrumentName = "Cl"
%strumento midi
\set Staff.midiInstrument = "cello"
%Chiamata alle variabili global e parttwod
\global
\parttwod
>>
>>
%Chiusura variabile: livello 1
}

Soffermiamoci, facendo particolare attenzione, alla struttura della nuova istruzione appena immessa nel sorgente. Abbiamo definito un tag comune alle due parti esistenti: il tag score, e due tag che le identifica in maniera univoca: il tag violin e il tag cello; ciò sta a significare che saremo in grado di ottenere, come elaborazione dell’output grafico e midi – in relazione al tipo di chiamata che decideremo di eseguire rispetto a questi tre elementi – tre possibili risultati:

  1. Un file contenente la partitura completa
  2. Un documento con la parte da destinare ad un potenziale violinista
  3. Un elaborato con la parte per il violoncellista

Nota: I primi due risultati saranno perfettamente sovrapponibili a quelli che avevamo già ottenuto mediante la realizzazione e la compilazione degli schemi 26 e 14, integrati nelle pagine “Make up della partitura” e “Sistemi multipli”.

Se dovessimo gestire una partitura più composita, articolata in sezioni di fiati, archi ecc., con i tag saremmo in grado di estrarre, oltre alla partitura completa, parti singole, piccole sezioni suddivise per organico o parti selezionate in relazione a criteri specifici di tipo personalizzato.

Se, per esempio, al fianco dei tag già immessi, inserissimo – relativamente ai nostri due pentagrammi – un’ulteriore etichetta chiamata <archi>, saremmo in grado di ottenere dall’interprete una score contenente – qualora fossero presenti nell’architettura della composizione – le sezioni dei violini primi, dei violini secondi, delle viole, dei celli e dei contrabbassi.

Certamente non riporteremmo mai l’etichetta <archi> all’interno della definizione di un eventuale staff destinato ad una parte per tromba che, invece, potremmo etichettare con i tag <score>, <tromba>, <fiati> e <ottoni>; in tal modo, saremmo in grado di richiamare la parte di tromba sia singolarmente, sia nella versione integrale della partitura, sia nella categoria dei fiati, sia nell’organico relativo alla sezione degli ottoni.

Definita la nostra variabile <music>, compileremo il sorgente il quale, essendo costituito – in virtù delle modifiche da noi apportate al codice – solamente da variabili, restituirà come risultato esclusivamente la finestra di log con il messaggio di avvenuta compilazione o, se presenti, la lista degli eventuali errori di sintassi.

Importante: indipendentemente dal fatto che questo file restituisca un risultato grafico tangibile o meno, esso andrà sempre e comunque salvato e ricompilato ad ogni aggiornamento del codice sorgente.

Sarà possibile, a questo punto, chiudere e abbandonare il file primolily_music.ly, per concentrarci sulla parte di script presente all’interno del documento primolily_score.ly; prima di farlo, però, concediamoci un ultimo richiamo al discorso relativo alla meccanica delle variabili.

A proposito della variabile music appena costituita, possiamo dire che essa riceve gli argomenti di tutte le altre variabili riportate nella lista contenuta nel documento primolily_music.ly. Essa, inoltre, attraverso il filtraggio delle informazioni operato al suo interno dai tag, passa gli argomenti, selezionati e interpretati, alla score che, senza ulteriori distrazioni, andremo immediatamente ad analizzare.

Per prima cosa, considerati gli spostamenti parziali di codice, i taglia e incolla ecc., sarà opportuno riassumere il codice scritto nel file primolily_score.ly, il quale, dopo gli ultimi cambiamenti effettuati, dovrebbe risultare strutturato in questo modo:

Schema 28: file della score

%versione del programma
\version "2.18.2"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Graffa di unione dei pentagrammi
\new StaffGroup <<
>>
	%Definizione del layout
	\layout{
		\context {
		\Score
		proportionalNotationDuration = #(ly:make-moment 1 8)
		%Chiusura context: livello 3
		}
	%Chiusura layout: livello 2
	}
	%Definizione del midi output
	\midi {
	%Chiusura midi output: livello 2
	}
%Chiusura score: livello 1
}

Completiamo questa porzione di sorgente aggiungendo le seguenti righe, in modo che lo script assuma la configurazione sottostante:

Schema 29: include e KeepWithTag

%versione del programma
\version "2.18.2"
%Chiamata al file primolily_music
\include "primolily_music.ly"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Graffa di unione dei pentagrammi
\new StaffGroup <<
%Richiama il tag selezionato
\keepWithTag #'
%Chiamata alla variabile music
\music
>>
	%Definizione del layout
	\layout{
		\context {
		\Score
		proportionalNotationDuration = #(ly:make-moment 1 8)
		%Chiusura context: livello 3
		}
	%Chiusura layout: livello 2
	}
	%Definizione del midi output
	\midi {
	%Chiusura midi output: livello 2
	}
%Chiusura score: livello 1
}

Osserviamo che, sotto l’istruzione che indica la versione del compilatore, compare un comando molto intuitivo:

\include "filename"

esso, infatti, istruisce l’interprete informandolo relativamente al nome e alla posizione del file ospitante le variabili utili alla realizzazione del progetto grafico della musica.

Notiamo anche che la nuova morfologia sintattica che costituisce la definizione della score richiama al suo interno la variabile music, da noi appena definita e collocata in fondo al file primolily_music.ly, che abbiamo chiuso dopo averne manipolato i contenuti.
Ciò che è interessante, però, è osservare che, oltre alla chiamata alla variabile music e al blocco del layout, troviamo un’istruzione che, in seguito alla compilazione e basandosi sul confronto con i tag presenti all’interno della variabile music, restituirà un risultato coerente: nel nostro caso – a seconda del tag che selezioneremo – la parte destinata al violino, quella destinata al violoncello o la partitura completa costituita da un sistema a due pentagrammi contenenti, a partire dall’alto verso il basso, la musica per violino e quella per il violoncello.

Nota: L’ordine grafico all’interno della partitura ottenuto dalla chiamata ai tag appropriati rispetterà l’ordine posizionale alto basso dei pentagrammi contenuti – nel nostro caso – nella variabile music.

Se, ad esempio, ponessimo lo Staff relativo alla parte di violino sotto quello destinato al violoncello, nella costruzione di una score a due pentagrammi, esso risulterebbe posizionato anche graficamente al di sotto del pentagramma riservato al violoncello.

Per sperimentare e apprezzare i risultati, accanto all’istruzione

\keepwithtag #'

lasciata momentaneamente priva di argomento, scriveremo la chiamata ai tag che ci interessano nelle tre declinazioni previste dalla variabile music, come riportato negli esempi seguenti:

Schema 30: estrarre la score

%versione del programma
\version "2.18.2"
%Chiamata al file primolily_music
\include "primolily_music.ly"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%Definizione del sistema dei pentagrammi
\score {
%Graffa di unione dei pentagrammi
\new StaffGroup <<
%Chiamata al tag score
\keepWithTag #'score
%Chiamata alla variabile music
\music
>>
	%Definizione del layout
	\layout{
		\context {
		\Score
		proportionalNotationDuration = #(ly:make-moment 1 8)
		%Chiusura context: livello 3
		}
	%Chiusura layout: livello 2
	}
	%Definizione del midi output
	\midi {
	%Chiusura midi output: livello 2
	}
%Chiusura score: livello 1
}
Riproduzione grafica della musica generata dallo schema 30

Schema 31: estrarre ilviolino

%versione del programma
\version "2.18.2"
%Chiamata al file primolily_music
\include "primolily_music.ly"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Chiamata all tag violin
\keepWithTag #'violin
%Chiamata alla variabile music
\music
	%Definizione del layout
	\layout{
		\context {
		\Score
		proportionalNotationDuration = #(ly:make-moment 1 8)
		%Chiusura context: livello 3
		}
	%Chiusura layout: livello 2
	}
	%Definizione del midi output
	\midi {
	%Chiusura midi output: livello 2
	}
%Chiusura score: livello 1
}
Riproduzione grafica della musica generata dallo schema 31

Nota: Nel caso dell’estrazione di una parte singola, l’istruzione

\new StaffGroup

sarà inutile e potrà essere tranquillamente omessa.

Schema 32: estrarre il violoncello

%versione del programma
\version "2.18.2"
%Chiamata al file primolily_music
\include "primolily_music.ly"
%***
%Intestazione della composizione
\header {
%Definisce il titolo della composizione
title = "INNO ALLA GIOIA"
%Definisce il nome dell'autore
composer = "by L. V. Beethoven"
%Definisce il fondo pagina.
tagline = ""
%Chiusura header: livello 1
}
%***
%Definizione del sistema dei pentagrammi
\score {
%Chiamata al tag cello
\keepWithTag #'cello
%Chiamata alla variabile music
\music
	%Definizione del layout
	\layout{
		\context {
		\Score
		proportionalNotationDuration = #(ly:make-moment 1 8)
		%Chiusura context: livello 3
		}
	%Chiusura layout: livello 2
	}
	%Definizione del midi output
	\midi {
	%Chiusura midi output: livello 2
	}
%Chiusura score: livello 1
}
Riproduzione grafica della musica generata dallo schema 32

Salvando e compilando il file, otterremo – in relazione alle tre opzioni possibili – tre diversi elaborati grafici e midi, per avere i quali non sarà necessario – come per il file precedente – salvare e compilare il sorgente ogni qualvolta si intenderà modificare il tag che eseguirà la chiamata ai relativi Staff definiti all’interno della variabile music.

Nota: per conservare la copia di ogni documento PDF, risultante da ogni successiva compilazione – come già ricordato in occasione del nostro primo incontro -, il relativo file PDF andrà rinominato o copiato in un’altra posizione prima di una nuova compilazione, poiché ogni nuova generazione del PDF di destinazione sovrascriverà le precedenti versioni.
Gli stessi criteri valgono nella gestione dei midi file.

Per concludere l’esposizione di questo argomento, proveremo a creare tre distinti documenti PDF basati sulla chiamata ai rispettivi tag da noi definiti nella variabile music contenuta nel file primolily_music.ly; chiameremo i documenti risultanti dalle successive tre compilazioni con i seguenti nomi:

  1. innolgioialscore.pdf
  2. innolgioialviolin.pdf
  3. innolgioialcello.pdf

Il primo documento dovrà contenere l’elaborazione grafica della partitura completa, il secondo file dovrà ospitare la parte in chiave di Sol per violino, mentre all’interno del terzo elaborato dovrà trovare posto la parte in chiave di Fa, destinata al violoncello.

Rimandiamo al sorgente completo degli script riferiti ai file <primolili_music.ly> e <primolily_score.ly> per un confronto. Abbiamo già anticipato qui sopra le riproduzioni grafiche risultanti dalla reinterpretazione del codice sorgente.

L’immagine utilizzata in questa pagina proviene dalle bacheche tematiche di Pinterest.

<Argomento precedente

Tavola dei contenuti

  1. Variabile music Schema 27
  2. File della score Schema 28
  3. Include e KeepWithTag Schema 29
  4. Estrarre la score Schema 30
  5. Estrarre il violino Schema 31
  6. Estrarre il violoncello Schema 32

Riferimenti