2 minute read

Appunti su Matrici di Transizione per Delta-Engine

Concetto base

Ho finalmente capito come usare le matrici di transizione per strutturare l’evoluzione tra stati nel mio sistema. In sostanza, la matrice di transizione è una tabella di probabilità che mi dice quanto è probabile passare da uno stato all’altro.

Ogni stato nel sistema è una combinazione di:

  • Densità (Sparso/Medio/Denso)
  • Registro (Basso/Medio/Alto)
  • Movimento (Statico/Moderato/Dinamico)

Questo mi dà 3×3×3 = 27 stati possibili in totale. La matrice di transizione completa sarà quindi 27×27, con 729 valori di probabilità.

Implementazione in Csound

Per implementare questo in Csound, posso usare una singola tabella di funzione (ftgen) di 729 elementi. L’indice nella tabella per la probabilità di transizione da uno stato A a uno stato B sarebbe:

indice = (statoA * 27) + statoB

Dove statoA e statoB sono numeri da 0 a 26, che rappresentano i 27 stati possibili.

Schema di codifica degli stati

Per convertire tra le tre dimensioni e l’indice unico:

indice = (densityState * 9) + (registerState * 3) + movementState

E vice versa:

densityState = int(indice / 9)
remainder = indice % 9
registerState = int(remainder / 3)
movementState = remainder % 3

Definizione delle probabilità

Devo assegnare probabilità in modo che:

  1. La somma delle probabilità da uno stato qualsiasi a tutti gli altri sia 1 (o 100%)
  2. Stati “vicini” abbiano probabilità maggiori (per favorire transizioni graduali)

Pensando alla logica compositiva, potrei assegnare:

  • 40% per rimanere nello stesso stato (stabilità)
  • 40% per cambiare un solo parametro (evoluzione graduale)
  • 15% per cambiare due parametri (variazione moderata)
  • 5% per cambiare tutti i parametri (contrasto)

Esempio di calcolo:

  • Stato [0,0,0]: Sparso, Basso, Statico
  • Stato [0,0,1]: Sparso, Basso, Moderato (cambia 1 parametro)
  • Stato [1,1,0]: Medio, Medio, Statico (cambiano 2 parametri)
  • Stato [2,2,2]: Denso, Alto, Dinamico (cambiano 3 parametri)

Direzionalità compositiva

Potrei anche includere direzionalità nella matrice per creare archi compositivi. Per esempio, per un crescendo:

  • Aumentare le probabilità verso stati più densi
  • Aumentare le probabilità verso registri più alti
  • Aumentare le probabilità verso più movimento

Idee per esperimenti

Potrei creare diverse matrici di transizione per diverse sezioni della composizione:

  1. Matrice “esplorativa” - probabilità più uniformi
  2. Matrice “stabilizzante” - alta probabilità di rimanere nello stesso stato
  3. Matrice “contrastante” - alta probabilità per transizioni drastiche
  4. Matrice “direzionale” - che evolve verso un determinato stato target

Prossimo passo

  1. Implementare la funzione di inizializzazione della matrice di transizione
  2. Implementare la funzione per selezionare il prossimo stato in base alle probabilità
  3. Testare se le transizioni risultanti riflettono la logica compositiva desiderata
  4. Integrare con il generatore di comportamenti per realizzare gli stati target

Penso che questo approccio mi darà un buon equilibrio tra struttura e variabilità, consentendo al sistema di evolvere in modo musicalmente convincente ma comunque sorprendente.