tutte le tabelle spiegate
Analisi Completa delle Tabelle in Delta-Engine
Introduzione
Delta-Engine è un sistema di composizione algoritmica basato su un meccanismo di transizione tra stati musicali. Il sistema utilizza numerose tabelle per memorizzare, manipolare e analizzare parametri musicali a diversi livelli di astrazione. Questo documento analizza in dettaglio tutte le tabelle definite nei file first.orc
e second.orc
, spiegando la loro funzione, il flusso di dati e le interrelazioni nel processo compositivo.
1. Sistema di Intonazione
gi_Intonazione ftgen 0, 0, 2001, -2, 0
- Scopo: Memorizza il sistema di frequenze pitagoriche generato all’inizio della composizione.
- Scrittura:
GenPythagFreqs.udo
attraverso l’opcodeGenPythagFreqs
che popola la tabella- Inizializzata in
Generatore
all’inizio della composizione
- Lettura:
pfield_freq.udo
attraverso l’opcodecalcFrequenza
per determinare le altezze- Usata indirettamente da
Comportamento.orc
per generare le note
- Dimensione: 2001 elementi per ospitare frequenze attraverso le ottave e gli intervalli definiti da
$INTERVALLI
e$OTTAVE
- Caratteristiche: Le frequenze vengono generate secondo un sistema di intonazione pitagorico, che utilizza il rapporto di 3/2 (quinta perfetta) per definire gli intervalli successivi.
2. Tabelle degli Eventi Sonori
gi_eve_attacco ftgen 0, 0, gi_NUMEVENTI, -2, 0
gi_eve_durata ftgen 0, 0, gi_NUMEVENTI, -2, 0
gi_eve_ampiezza ftgen 0, 0, gi_NUMEVENTI, -2, 0
gi_eve_frequenza1 ftgen 0, 0, gi_NUMEVENTI, -2, 0
gi_eve_frequenza2 ftgen 0, 0, gi_NUMEVENTI, -2, 0
gi_eve_posizione ftgen 0, 0, gi_NUMEVENTI, -2, 0
gi_eve_hr ftgen 0, 0, gi_NUMEVENTI, -2, 0
gi_eve_ifn ftgen 0, 0, gi_NUMEVENTI, -2, 0
gi_eve_comportamento ftgen 0, 0, gi_NUMEVENTI, -2, 0
- Scopo: Ciascuna tabella memorizza un parametro specifico per tutti gli eventi sonori individuali.
- Scrittura:
- Principalmente riempite dallo strumento
Comportamento
inComportamento.orc
durante la generazione gi_eve_attacco
riceve i tempi di attacco calcolati in base al ritmo correntegi_eve_durata
memorizza la durata di ogni evento, influenzata dasuggestDurationFactor
incalcDurationFactor.udo
gi_eve_ampiezza
immagazzina valori di ampiezza calcolati dacalcAmpiezza
inpfield_amp.udo
gi_eve_frequenza1/2
ricevono le frequenze calcolate dacalcFrequenza
inpfield_freq.udo
gi_eve_posizione
memorizza la posizione spaziale dell’eventogi_eve_hr
(harmonic ratio) memorizza il valore ritmico usato per la spazializzazionegi_eve_ifn
memorizza l’indice della funzione di forma d’ondagi_eve_comportamento
collega ogni evento al comportamento che l’ha generato
- Principalmente riempite dallo strumento
- Lettura:
- Lette da
eventoSonoro
ineventoSonoro.orc
per generare i suoni concreti - Analizzate continuamente da
Analizzatore
inAnalizzatore.orc
per monitorare sovrapposizioni - Lette da
AnalisiFinale
inAnalisiFinale.orc
per le statistiche finali - Lette da
logEventParams
indebug_log.orc
per la registrazione dei dati
- Lette da
- Dimensione:
gi_NUMEVENTI
(1000) elementi ciascuna, rappresentante la capacità massima di eventi - Caratteristiche: Queste tabelle rappresentano il livello più basso della gerarchia compositiva, memorizzando i parametri concreti di sintesi per ogni evento sonoro.
3. Tabelle dei Comportamenti
gi_comp_ATTACCO ftgen 0, 0, gi_NUMComportamenti, -2, 0
gi_comp_RITMO_LEN ftgen 0, 0, gi_NUMComportamenti, -2, 3
gi_comp_RITMO_VAL ftgen 0, 0, gi_NUMComportamenti*5, -2, 4,5,3
gi_comp_DURARMONICA ftgen 0, 0, gi_NUMComportamenti, -2, 10
gi_comp_DURATA ftgen 0, 0, gi_NUMComportamenti, -2, 20.0
gi_comp_AMPIEZZA ftgen 0, 0, gi_NUMComportamenti, -2, -20
gi_comp_OTTAVA ftgen 0, 0, gi_NUMComportamenti, -2, 3
gi_comp_REGISTRO ftgen 0, 0, gi_NUMComportamenti, -2, 4
gi_comp_POS_LEN ftgen 0, 0, gi_NUMComportamenti, -2, 3
gi_comp_POSIZIONE ftgen 0, 0, gi_NUMComportamenti*5, -2, 0,0,0
- Scopo: Definiscono i parametri per i generatori di comportamento musicale, che rappresentano pattern di alto livello.
- Scrittura:
- Inizializzate in
Generatore
con valori di base - Modificate da
BehaviorGenerator
inTransitionController.orc
attraversogenerateTransitionBehavior
- I parametri interpolati vengono generati dalle funzioni in
parameterInterpolation.udo
gi_comp_RITMO_VAL
egi_comp_POSIZIONE
contengono array di valori per ogni comportamento
- Inizializzate in
- Lettura:
- Lette da
GeneraComportamenti
inGeneraComportamenti.orc
- Validate da
Validator
invalidator.udo
prima dell’uso - Utilizzate indirettamente da
stateMapping.udo
per tradurre gli stati in parametri
- Lette da
- Dimensione:
gi_NUMComportamenti
(100) elementi, con tabelle di ritmo e posizione aventi capacità 5x - Caratteristiche: Rappresentano il livello intermedio della gerarchia compositiva, traducendo gli stati musicali astratti in parametri concreti di generazione sonora.
4. Tabelle del Sistema di Analisi
gi_analysis_active_events ftgen 0, 0, gi_analysis_buffer_size, -2, 0
gi_analysis_timepoints ftgen 0, 0, gi_analysis_buffer_size, -2, 0
- Scopo: Memorizzano dati di analisi in tempo reale degli eventi attivi per monitorare l’evoluzione della composizione.
- Scrittura:
- Aggiornate dallo strumento
Analizzatore
inAnalizzatore.orc
a k-rate (10Hz) gi_analysis_active_events
registra quanti eventi sono attivi in ogni istantegi_analysis_timepoints
registra i timestamp corrispondenti- Utilizza un buffer circolare definito da
gk_analysis_index
- Aggiornate dallo strumento
- Lettura:
- Lette da
AnalisiFinale
per generare statistiche e file CSV - Consultate da
recordCurrentState
intransControllerUtils.udo
per determinare lo stato corrente
- Lette da
- Dimensione:
gi_analysis_buffer_size
(100.000) elementi per un tracciamento esteso - Caratteristiche: Questo sistema permette di analizzare la densità di eventi nel tempo, fornendo feedback essenziale per il sistema di transizione di stato.
5. Tabelle della Memoria Compositiva
gi_memory_overlap ftgen 0, 0, gi_memory_size, -2, 0
gi_memory_events ftgen 0, 0, gi_memory_size, -2, 0
- Scopo: Memorizzano la storia temporale della composizione, fungendo da “memoria a lungo termine” del sistema.
- Scrittura:
- Aggiornate dallo strumento
Analizzatore
a intervalli regolari (ognigi_memory_resolution
secondi) gi_memory_overlap
registra la sovrapposizione di eventi nel tempogi_memory_events
conta il numero di eventi attivi
- Aggiornate dallo strumento
- Lettura:
- Consultate da
suggestDurationFactor
incalcDurationFactor.udo
per adattare le durate - Lette da
analyzeCompositionMemory
per analizzare periodi temporali - Esportate da
AnalisiFinale
in file CSV per analisi offline
- Consultate da
- Dimensione:
gi_memory_size
(480 elementi per 480 secondi con risoluzione di 1 secondo) - Caratteristiche: Questa memoria consente al sistema di adattare i nuovi eventi basandosi sulla storia compositiva, evitando sovrapposizioni eccessive o vuoti prolungati.
6. Tabelle di Tracciamento Armonico
gi_active_octaves ftgen 0, 0, $OTTAVE, -2, 0
gi_active_registers ftgen 0, 0, $REGISTRI, -2, 0
gi_octave_register_matrix ftgen 0, 0, $OTTAVE * $REGISTRI, -2, 0
gi_memory_harmonic_density ftgen 0, 0, gi_memory_size, -2, 0
gi_memory_octave_spread ftgen 0, 0, gi_memory_size, -2, 0
gi_memory_spectral_centroid ftgen 0, 0, gi_memory_size, -2, 0
gi_memory_spatial_movement ftgen 0, 0, gi_memory_size, -2, 0
gi_cumulative_octave_register_matrix ftgen 0, 0, $OTTAVE * $REGISTRI, -2, 0
- Scopo: Tracciano distribuzione armonica e caratteristiche di movimento per analizzare l’evoluzione spettrale della composizione.
- Scrittura:
- Aggiornate in tempo reale da
Analizzatore
inAnalizzatore.orc
active_octaves
/registers
: Contano eventi in ogni ottava/registrooctave_register_matrix
: Matrice distribuzione bidimensionale (10x10)- Le tabelle
memory_*
registrano metriche armoniche nel tempo cumulative_octave_register_matrix
: Accumula distribuzione nell’intera composizione
- Aggiornate in tempo reale da
- Lettura:
- Lette da
determineCurrentState
indetermineState.udo
per classificare lo stato - Utilizzate da
analyzeHarmonicMemory
incalcDurationFactor.udo
- Consultate da
predictNextState
inadaptiveStatePrediction.udo
- Esportate da
AnalisiFinale
per visualizzazioni
- Lette da
- Dimensione: Varie dimensioni basate su ottave (10), registri (10) o dimensione memoria (480)
- Caratteristiche: Queste tabelle forniscono informazioni dettagliate sulla distribuzione spettrale e il movimento spaziale, essenziali per le decisioni di transizione tra stati.
7. Sistema di Classificazione degli Stati
gi_density_thresholds ftgen 0, 0, 4, -2, 0, 3, 7, 1000
gi_register_thresholds ftgen 0, 0, 4, -2, 0, 0.3, 0.7, 1.001
gi_movement_thresholds ftgen 0, 0, 4, -2, 0, 0.2, 0.5, 1.001
gi_state_history_density ftgen 0, 0, gi_state_history_size, -2, 0
gi_state_history_register ftgen 0, 0, gi_state_history_size, -2, 0
gi_state_history_movement ftgen 0, 0, gi_state_history_size, -2, 0
gi_memory_state_density ftgen 0, 0, gi_memory_size, -2, 0
gi_memory_state_register ftgen 0, 0, gi_memory_size, -2, 0
gi_memory_state_movement ftgen 0, 0, gi_memory_size, -2, 0
gi_transition_matrix ftgen 0, 0, 27*27, -2, 0
- Scopo: Definiscono e tracciano il sistema di stati musicali e le loro transizioni.
- Scrittura:
*_thresholds
: Inizializzate staticamente infirst.orc
per definire confini tra statistate_history_*
: Aggiornate darecordCurrentState
intransControllerUtils.udo
memory_state_*
: Scritte daAnalizzatore
per tracciare gli stati nel tempotransition_matrix
: Inizializzata dainitTransitionMatrix
instateTransition.udo
e aggiornata daupdateTransitionMatrix
inadaptiveStatePrediction.udo
- Lettura:
*_thresholds
: Lette dadetermineCurrentState
indetermineState.udo
state_history_*
: Consultate daTransitionDecider
per decisioni di transizionetransition_matrix
: Letta daselectNextState
instateTransition.udo
- Tutte esportate da
SaveTransitionMatrix
eEnhancedSaveTransitionMatrix
per analisi
- Dimensione: Varie dimensioni (soglie=4, storia=10, memoria=480, matrice=729)
- Caratteristiche: Il cuore del sistema di composizione basato su stati, con 27 stati totali (3 livelli di densità × 3 livelli di registro × 3 livelli di movimento) e una matrice di transizione 27×27.
8. Tabelle del Controller di Transizione (da second.orc)
gi_tc_past_states ftgen 0, 0, 24, -2, 0
gi_tc_expected_state_table ftgen 0, 0, 100, -2, 0
gi_tc_actual_state_table ftgen 0, 0, 100, -2, 0
- Scopo: Supportano la valutazione della qualità delle transizioni e l’apprendimento adattivo.
- Scrittura:
past_states
: Popolata darecordCurrentState
intransControllerUtils.udo
expected_state_table
: Scritta dainitializeTransition
per prevedere il percorso di transizioneactual_state_table
: Aggiornata durante le transizioni darecordCurrentState
- Lettura:
- Lette da
assessTransitionQuality
per valutare l’efficacia delle transizioni - Consultate da
adaptTransitionParameters
per migliorare le future transizioni - Utilizzate da
predictNextState
inadaptiveStatePrediction.udo
per l’apprendimento adattivo
- Lette da
- Dimensione: Dimensioni variabili per diversi scopi di tracciamento (stati passati=24, punti di transizione=100)
- Caratteristiche: Implementano un sistema di apprendimento che migliora le transizioni nel tempo basandosi sui risultati passati.
9. Tabelle per l’Apprendimento Adattivo
gi_asp_transition_history ftgen 0, 0, 100*7, -2, 0
gi_asp_context_features ftgen 0, 0, 10, -2, 0
- Scopo: Supportano il sistema di apprendimento adattivo per migliorare le decisioni di transizione.
- Scrittura:
transition_history
: Aggiornata darecordTransition
inadaptiveStatePrediction.udo
context_features
: Memorizza caratteristiche del contesto musicale attuale
- Lettura:
- Utilizzate da
predictNextState
per selezionare stati target basati su esperienze passate - Consultate da
calculateContextSimilarity
per trovare contesti musicali simili
- Utilizzate da
- Dimensione: La storia delle transizioni memorizza 100 transizioni (7 valori ciascuna)
- Caratteristiche: Implementano un sistema di apprendimento per migliorare progressivamente le decisioni di transizione basandosi sui risultati passati.
Relazioni tra i Gruppi di Tabelle
Le tabelle in Delta-Engine formano una gerarchia interconnessa che opera a diversi livelli:
Livello Alto: Sistema di Stati
- Tabelle primarie:
gi_transition_matrix
,gi_*_thresholds
,gi_state_history_*
- Funzione: Definisce lo stato musicale globale e le regole di transizione
- Implementazione:
TransitionController.orc
,stateTransition.udo
,determineState.udo
- Processo: Determina quando e come effettuare transizioni tra stati musicali
Livello Intermedio: Parametri di Comportamento
- Tabelle primarie:
gi_comp_*
- Funzione: Traduce gli stati astratti in pattern musicali specifici
- Implementazione:
GeneraComportamenti.orc
,BehaviorGenerator
,stateMapping.udo
- Processo: Converte un determinato stato (es. “densità alta, registro medio, movimento statico”) in parametri concreti di generazione sonora
Livello Basso: Parametri degli Eventi
- Tabelle primarie:
gi_eve_*
- Funzione: Memorizza parametri per eventi sonori individuali
- Implementazione:
Comportamento.orc
,eventoSonoro.orc
- Processo: Crea eventi sonori concreti con parametri specifici di sintesi
Sistema di Feedback: Analisi e Adattamento
- Tabelle primarie:
gi_analysis_*
,gi_memory_*
,gi_asp_transition_history
- Funzione: Monitora l’output musicale e fornisce feedback per future decisioni
- Implementazione:
Analizzatore.orc
,AnalisiFinale.orc
,adaptiveStatePrediction.udo
- Processo: Analizza continuamente la composizione, impara dai risultati e adatta le future decisioni
Flusso dei Dati nel Sistema di Tabelle
- Lo strumento
Analizzatore
monitora continuamente gli eventi attivi, aggiornando le tabelle di analisi e memoria - Il
TransitionController
usa queste informazioni per determinare lo stato musicale corrente TransitionDecider
decide quando avviare una transizione verso un nuovo statoinitializeTransition
seleziona uno stato target e pianifica una traiettoria di transizioneBehaviorGenerator
genera comportamenti con parametri interpolati tra stato origine e destinazioneGeneraComportamenti
converte questi parametri in uno strumentoComportamento
Comportamento
genera molteplici eventi sonori, memorizzandoli nelle tabellegi_eve_*
eventoSonoro
legge queste tabelle per produrre il suono effettivoAnalizzatore
rileva questi nuovi eventi, completando il ciclo
Questo sistema circolare di generazione, analisi e adattamento permette a Delta-Engine di creare composizioni musicali complesse, coerenti ed evolutive attraverso il suo sofisticato meccanismo di transizione tra stati.