domenica 12 marzo 2023

Trasformazioni di un disegno melodico e spazio immaginativo

Gli ingredienti "puri" della musica, cioè quelli non legati ad elementi letterari o ad azioni sceniche, possono sembrare banali ma sono spesso essenziali nella logica interna di un brano e sono di fatto strettamente legati alla sua "bellezza". Parlarne è un po' come descrivere i colori usati in un quadro o le forme riprodotte in una statua. Ma in fondo sono questi elementi a fare un bel quadro o una bella statua. In genere sono cose che hanno a che fare con idee astratte ma molto attraenti, come ad esempio la simmetria o la sua  rottura. Ripetizioni e variazioni e le loro relazioni dialettiche sono spesso alla base dell'espressione artistica, soprattutto (ma non solo) se questa si sgancia in un modo o nell'altro da significati precisi, come succede praticamente sempre nella musica strumentale.

In questo breve post ho tentato di riunire alcune trasformazioni con cui si può elaborare un disegno melodico, solo uno degli ingredienti del discorso musicale. Trovo che lo sforzo spesso non facile di riconoscere queste elaborazioni all'interno di un brano sia alquanto interessante per un appassionato di musica.

Per disegno melodico si intende una successione di note nel tempo, caratterizzato non tanto dalle specifiche note scelte (altezze, ovvero frequenze fondamentali) né dal loro timbro (spettro delle frequenze) bensì dalla sequenza di intervalli che le separano (differenza tra le altezze, ovvero rapporti tra le frequenze) e dalle loro durate temporali (che possono comprendere eventuali pause).

Tenendo presente la definizione data di disegno melodico è possibile enumerare le possibili (e più importanti) trasformazioni applicabili ad esso. Da notare che molte di queste trasformazioni e delle loro combinazioni sono possibili grazie ad una specifica simmetria dello spazio sonoro su cui si lavora, la simmetria per traslazioni in altezza (frequenza), garantita dall'accordatura del "temperamento equabile".

1. Traslazione nello spazio sonoro - il disegno melodico viene eseguito spostando in alto o in basso la nota di inizio.

2. Traslazione nel tempo - il disegno melodico viene eseguito in tempi diversi durante lo sviluppo di un brano.

3. Inversione (riflessione rispetto ad un'altezza/frequenza) - tutti gli intervalli del disegno melodico vengono eseguiti rovesciati, un intervallo ascendente diventa il corrispondente intervallo discendente e viceversa.

4. Retrogradazione (riflessione rispetto ad un tempo) - il disegno melodico viene eseguito alla rovescia, dall'ultima alla prima nota.

5. Aumentazione (trasformazione di scala temporale, dilatazione) - tutte le note del disegno melodico vengono eseguite raddoppiando le loro durate o più in generale aumentandole di una durata fissa. 

6. Diminuzione (trasformazione di scala temporale, contrazione) - tutte le note del disegno melodico vengono eseguite dimezzando le loro durate o più in generale diminuendole di una durata fissa. 

7. Frammentazione - viene eseguito solo un frammento del disegno melodico.

8. Ricomposizione - esecuzione di frammenti consecutivi in ordine diverso dall'originale.

Tutte le trasformazioni elencate possono ovviamente essere combinate assieme in qualunque modo. Inoltre tutte le trasformazioni elencate possono contenere "eccezioni", possono essere cioè eseguite come "trasformazioni imperfette". Le imperfezioni più comuni sono quelle necessarie a mantenere il disegno melodico trasformato nell'ambito di una certa tonalità. Altre imperfezioni sono legate ad esigenze che nascono dalla dimensione verticale del brano (combinazione di più disegni melodici o dello stesso disegno melodico o di sue particolari trasformazioni) o da quella orizzontale (combinazioni ritmiche del disegno melodico con altri elementi del brano).

Le combinazioni di trasformazioni del disegno melodico arricchito delle tante eventuali imperfezioni può generare un altro disegno melodico, indipendente dal primo, sebbene imparentato con esso. 

Lo spazio immaginativo si alimenta proprio grazie a tutti i possibili utilizzi di queste trasformazioni e di tutte le loro possibili imperfezioni, da cui nascono nuove idee.


domenica 5 marzo 2023

ChatGPT

Negli ultimi tempi ogni tanto "parlo" con ChatGPT, chiedendogli cose che mi passano per la testa. Più che altro sono curioso di vedere come risponde, come organizza il discorso. Si tratta di un'intelligenza artificiale che elabora il linguaggio naturale, ed effettivamente lo fa molto bene. Lui stesso si definisce come "un assistente virtuale basato su una grande rete neurale artificiale addestrata con una vasta quantità di dati testuali" (parole sue).

Questi sistemi mi fanno sempre pensare ai vecchi scritti di Alan Turing (ne ho già scritto qui diversi anni fa), in cui il grande scienziato individuava con un certo anticipo gli elementi essenziali che hanno portato a questi risultati. Non conviene chiedere alla macchina di eseguire alla perfezione e senza errori delle procedure perfettamente deterministiche perché queste procedure, benché macinate con velocità e precisione impressionanti non manifestano un vero comportamento intelligente. E' invece essenziale che la macchina possa avere comportamenti inizialmente mossi dal caso e successivamente perfezionarli attraverso un bagaglio di esperienze fatte di tentativi ed errori, come succede in noi intelligenze naturali. Niels Bohr diceva che un esperto in una qualche disciplina è colui che ha fatto in quella disciplina tutti gli errori possibili. In un certo senso occorre rinunciare ad avere un algoritmo completamente sotto il nostro controllo e introdurre invece in esso degli elementi aleatori su un grande numero di gradi di libertà che messi a contatto con un "ambiente" (i dati) gli permettano di evolvere in un modo per noi non del tutto deducibile. In pratica occorre pensare ad algoritmi che abbiano le classiche caratteristiche dei sistemi complessi.

Poi ci si può chiedere quanto un algoritmo del genere, che conversa con me usando un livello di complessità linguistica del tutto simile alla mia, sia "cosciente" di quello che dice, cioè "consapevole" degli argomenti di cui sta parlando (non riesco a togliere le virgolette a queste parole).

Un elaboratore di linguaggio funziona essenzialmente facendo correlazioni statistiche sulle parole, cioè scrive una parola che abbia la probabilità più alta di essere scritta subito dopo una serie di altre parole scritte precedentemente. Le correlazioni statistiche utilizzate vengono ricavate da una lunga fase di apprendimento, fatta esaminando un numero molto elevato di testi scritti. Ovviamente per essere veramente efficacie la correlazione deve poter essere fatta a più livelli. Se scrivo casa come ultima parola il calcolo probabilistico della parola successiva dovrà considerare molti livelli a ritroso, cioè molte parole prima dell'ultima. In questo le reti neurali possono essere molto ben addestrate.

Queste correlazioni però non vengono effettuate tra le parole, ma tra numeri in cui tutto il flusso di informazione è stato opportunamente trasformato per l'elaborazione dell'algoritmo. Il sistema macina simboli senza significato (per lui) se non quello puramente numerico (oggetti da sottoporre a calcolo matematico). Tra l'altro un elaboratore di linguaggio opportunamente addestrato può essere interrogato in numerose lingue, tutte quelle che hanno fatto parte del suo addestramento. In questo senso la parola casa per il sistema che la elabora non può avere nessun significato, almeno non certo quel significato che le può naturalmente attribuire un essere umano.

Quindi potremmo dire che la macchina "non capisce quello che sta dicendo", cioè non ha alcuna vera consapevolezza dell'argomento di cui sta parlando, nonostante la complessità nell'articolazione del linguaggio che riesce a raggiungere (molto più elevata della maggior parte  delle persone che scrivono, a giudicare dalle esperienze che faccio negli ambienti di lavoro). Questa cosa tutto sommato non è poi così sorprendente poiché la cosiddetta coscienza di fatto viene costruita da un vissuto, che un essere vivente certamente ha, sin dalla nascita. Per vissuto intendo un'interazione continua e complessa con l'ambiente, neanche lontanamente paragonabile al "vissuto" che può avere una macchina addestrata con migliaia di testi trasformati in numeri. Una macchina è senza una vera coscienza del mondo in cui vive semplicemente perché non lo vive, almeno non nel modo in cui lo viviamo noi che ci attribuiamo una coscienza.

E' chiaro quindi che la macchina utilizza la parola casa ma non può avere nessuna vera consapevolezza del significato di questa parola, prima di tutto perché la trasforma in numeri, e poi soprattutto perché non ha nessun tipo di vissuto che le faccia capire cosa sia una casa. Un qualunque essere umano capisce bene il significato della parola casa e ogni volta che la usa la riveste di questo significato perché è nato, vissuto e vive all'interno di un ambiente chiamato casa, conosce la sua casa, conosce la casa dei suoi simili, non fa altro che vedere esempi di case in tutta la sua vita.

Il fatto curioso però è questo: se io dovessi chiedere ad un mio simile che cosa è una casa, al fine di verificare se lui ne capisce il significato, la risposta che lui mi potrebbe dare non sarebbe altro che una serie di parole statisticamente correlate, le parole più probabili che si possono tirar fuori in un qualsiasi discorso in cui si parli del concetto di casa. Ma queste parole sarebbero più o meno le stesse di quelle che potrebbe utilizzare anche il nostro elaboratore di linguaggio. E dunque chi mostra più "coscienza"? E soprattutto come si fa a riconoscerla o a distinguerla?