Descrittori Armonici e Embedding nella Composizione Algoritmica
Un’esplorazione dei parametri che caratterizzano lo stato armonico di una composizione algoritmica e come rappresentarli in modo unificato.
Introduzione
Nei sistemi di composizione algoritmica, come Delta-Engine, la capacità di analizzare e caratterizzare lo stato armonico della musica generata è fondamentale per creare transizioni musicali coerenti e significative. In questo articolo, esploreremo tre descrittori armonici essenziali: harmonic density, octave spread e spectral centroid, e come questi possano essere unificati in un embedding armonico per facilitare comparazioni contestuali.
I Descrittori Armonici Fondamentali
Harmonic Density (Densità Armonica)
Definizione:
La densità armonica misura quanto densamente sono occupate le diverse combinazioni di ottave e registri in un dato momento musicale.
Calcolo in Delta-Engine:
Harmonic Density = Numero di celle attive / (Numero totale di ottave × Numero totale di registri)
Nel nostro sistema, una cella viene considerata “attiva” quando contiene almeno un evento sonoro. Il valore risultante è normalizzato tra 0 e 1, dove:
- 0 = nessuna attività (silenzio)
- 1 = ogni possibile combinazione ottava/registro contiene almeno un evento (saturazione completa)
Significato Musicale:
Una densità armonica alta indica una tessitura ricca e piena, mentre una densità bassa suggerisce una tessitura più rarefatta. Questo parametro influenza direttamente la percezione di “pienezza” o “saturazione” della composizione.
Octave Spread (Dispersione delle Ottave)
Definizione:
L’octave spread misura quanto gli eventi sonori sono distribuiti verticalmente attraverso le ottave disponibili.
Calcolo in Delta-Engine:
Octave Spread = 1 - (Numero di ottave attive / Numero totale di ottave)
Un’ottava è considerata “attiva” quando almeno una delle sue celle (indipendentemente dal registro) contiene eventi sonori.
Significato Musicale:
Un octave spread alto indica che gli eventi sono concentrati in poche ottave, creando una tessitura più “focalizzata” verticalmente. Un valore basso indica invece che gli eventi sono dispersi su molte ottave, creando una tessitura più “estesa” verticalmente. Questo parametro caratterizza l’ampiezza dello spettro verticale occupato dalla musica.
Spectral Centroid (Centroide Spettrale)
Definizione:
Il centroide spettrale rappresenta il “baricentro” frequenziale della composizione in un dato momento.
Calcolo in Delta-Engine:
Spectral Centroid = (Somma pesata delle posizioni) / (Numero totale di eventi) / (Dimensione totale della matrice)
Dove:
- La somma pesata multiplica ogni posizione nella matrice ottava/registro per il numero di eventi in quella posizione
- Il numero totale di eventi è la somma di tutti gli eventi attivi
- La dimensione totale della matrice è il prodotto del numero di ottave per il numero di registri
Significato Musicale:
Il centroide spettrale correla fortemente con la percezione di “brillantezza” o “oscurità” del suono. Un centroide alto indica una predominanza di eventi nelle ottave superiori, creando un suono più “brillante”. Un centroide basso indica invece una predominanza negli registri inferiori, creando un suono più “scuro” o “profondo”.
Creazione di un Embedding Armonico: Principi Fondamentali
Gli embedding sono rappresentazioni vettoriali che catturano le caratteristiche essenziali di un oggetto complesso (in questo caso, lo stato armonico della composizione) in uno spazio multidimensionale. Vediamo come possiamo creare embedding efficaci partendo dai nostri tre descrittori.
Approcci alla Creazione dell’Embedding
1. Embedding Diretto (Concatenazione)
Il modo più semplice per creare un embedding armonico è concatenare i tre descrittori in un vettore:
[harmonic_density, octave_spread, spectral_centroid]
Questo crea uno spazio tridimensionale dove ogni momento musicale è rappresentato da un punto specifico. Ogni dimensione cattura un aspetto diverso dello stato armonico:
- Harmonic density: la “quantità” di occupazione dello spazio armonico
- Octave spread: la “concentrazione” verticale degli eventi
- Spectral centroid: la “posizione” media verticale degli eventi
2. Embedding Pesato
Per riflettere meglio l’importanza relativa di ciascun descrittore nella percezione musicale, possiamo assegnare pesi diversi:
[w₁ × harmonic_density, w₂ × octave_spread, w₃ × spectral_centroid]
Dove w₁, w₂ e w₃ sono coefficienti che enfatizzano o de-enfatizzano determinate dimensioni. Ad esempio, se il centroide spettrale ha un impatto percettivo maggiore, potremmo assegnargli un peso più alto.
3. Embedding Non-lineare
La percezione musicale spesso non è lineare. Possiamo applicare trasformazioni non lineari ai descrittori per catturare meglio la percezione umana:
[f₁(harmonic_density), f₂(octave_spread), f₃(spectral_centroid)]
Dove f₁, f₂ e f₃ sono funzioni non lineari appropriate (logaritmi, potenze, sigmoid, ecc.).
4. Embedding Contestuale
Per catturare l’evoluzione temporale, possiamo includere informazioni su stati precedenti:
[stato_t, stato_t-1, stato_t-2, ...]
Dove ogni stato è a sua volta un vettore di descrittori. Questo approccio cattura non solo lo “stato” ma anche la “traiettoria” armonica.
Misurazione della Similarità
Una volta creati gli embedding, possiamo definire metriche di similarità per confrontare stati armonici diversi:
1. Distanza Euclidea
Misura la distanza geometrica tra due punti nello spazio dell’embedding:
Distanza = √(Σ(dim₁ - dim₂)²)
Similarità = 1 - (Distanza / DistanzaMassima)
2. Distanza Coseno
Misura l’angolo tra i vettori, ignorando la magnitudine:
Similarità = (A·B) / (||A|| × ||B||)
Utile quando l’importanza è nella direzione, non nella “quantità”.
3. Similarità Mahalanobis
Considera la correlazione tra dimensioni:
Distanza = √((x-y)ᵀS⁻¹(x-y))
Dove S è la matrice di covarianza. Particolarmente utile se le dimensioni sono correlate.
Considerazioni Specifiche per i Nostri Descrittori
- Harmonic Density:
- Ha un’alta correlazione con il numero di eventi complessivi
- Potrebbe beneficiare di una trasformazione logaritmica per enfatizzare differenze a basse densità
- È particolarmente utile per caratterizzare la “pienezza” complessiva
- Octave Spread:
- Complementa la density (è possibile avere alta spread con bassa density e viceversa)
- Caratterizza la distribuzione verticale indipendentemente dalla quantità
- Ha importanti implicazioni per la percezione della “larghezza” spettrale
- Spectral Centroid:
- Ha un forte impatto percettivo (brillantezza/oscurità)
- Spesso merita un peso maggiore nella similarità
- Cattura la posizione verticale media, indipendentemente dalla distribuzione
Applicazioni Pratiche nella Composizione Algoritmica
L’utilizzo di embedding armonici in sistemi come Delta-Engine consente:
- Transizioni Armoniche Coerenti:
- Identificare stati armonici simili per creare transizioni fluide
- Evitare salti bruschi tra stati percettivamente distanti
- Memoria Compositiva:
- Riconoscere pattern armonici ricorrenti
- Richiamare materiale armonicamente simile in momenti appropriati
- Apprendimento Adattivo:
- Valutare la qualità delle transizioni armoniche passate
- Adattare i parametri compositivi in base all’esperienza accumulata
- Diversità Controllata:
- Evitare la stagnazione mantenendo una certa distanza dagli stati recenti
- Bilanciare coerenza e varietà in modo matematicamente preciso
Conclusione
I descrittori armonici e gli embedding offrono un potente strumento per analizzare, confrontare e guidare l’evoluzione armonica in sistemi di composizione algoritmica. Attraverso la cattura multidimensionale dello stato armonico, possiamo creare sistemi che non solo generano musica, ma la generano con una comprensione coerente dell’evoluzione armonica e della percezione umana.
L’integrazione di questi concetti in sistemi come Delta-Engine rappresenta un passo importante verso composizioni algoritmiche che esibiscono una maggiore consapevolezza contestuale e una più ricca espressività musicale.