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.udoattraverso l’opcodeGenPythagFreqsche popola la tabella- Inizializzata in
Generatoreall’inizio della composizione
- Lettura:
pfield_freq.udoattraverso l’opcodecalcFrequenzaper determinare le altezze- Usata indirettamente da
Comportamento.orcper generare le note
- Dimensione: 2001 elementi per ospitare frequenze attraverso le ottave e gli intervalli definiti da
$INTERVALLIe$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
ComportamentoinComportamento.orcdurante la generazione gi_eve_attaccoriceve i tempi di attacco calcolati in base al ritmo correntegi_eve_duratamemorizza la durata di ogni evento, influenzata dasuggestDurationFactorincalcDurationFactor.udogi_eve_ampiezzaimmagazzina valori di ampiezza calcolati dacalcAmpiezzainpfield_amp.udogi_eve_frequenza1/2ricevono le frequenze calcolate dacalcFrequenzainpfield_freq.udogi_eve_posizionememorizza la posizione spaziale dell’eventogi_eve_hr(harmonic ratio) memorizza il valore ritmico usato per la spazializzazionegi_eve_ifnmemorizza l’indice della funzione di forma d’ondagi_eve_comportamentocollega ogni evento al comportamento che l’ha generato
- Principalmente riempite dallo strumento
- Lettura:
- Lette da
eventoSonoroineventoSonoro.orcper generare i suoni concreti - Analizzate continuamente da
AnalizzatoreinAnalizzatore.orcper monitorare sovrapposizioni - Lette da
AnalisiFinaleinAnalisiFinale.orcper le statistiche finali - Lette da
logEventParamsindebug_log.orcper 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
Generatorecon valori di base - Modificate da
BehaviorGeneratorinTransitionController.orcattraversogenerateTransitionBehavior - I parametri interpolati vengono generati dalle funzioni in
parameterInterpolation.udo gi_comp_RITMO_VALegi_comp_POSIZIONEcontengono array di valori per ogni comportamento
- Inizializzate in
- Lettura:
- Lette da
GeneraComportamentiinGeneraComportamenti.orc - Validate da
Validatorinvalidator.udoprima dell’uso - Utilizzate indirettamente da
stateMapping.udoper 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
AnalizzatoreinAnalizzatore.orca k-rate (10Hz) gi_analysis_active_eventsregistra quanti eventi sono attivi in ogni istantegi_analysis_timepointsregistra i timestamp corrispondenti- Utilizza un buffer circolare definito da
gk_analysis_index
- Aggiornate dallo strumento
- Lettura:
- Lette da
AnalisiFinaleper generare statistiche e file CSV - Consultate da
recordCurrentStateintransControllerUtils.udoper 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
Analizzatorea intervalli regolari (ognigi_memory_resolutionsecondi) gi_memory_overlapregistra la sovrapposizione di eventi nel tempogi_memory_eventsconta il numero di eventi attivi
- Aggiornate dallo strumento
- Lettura:
- Consultate da
suggestDurationFactorincalcDurationFactor.udoper adattare le durate - Lette da
analyzeCompositionMemoryper analizzare periodi temporali - Esportate da
AnalisiFinalein 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
AnalizzatoreinAnalizzatore.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
determineCurrentStateindetermineState.udoper classificare lo stato - Utilizzate da
analyzeHarmonicMemoryincalcDurationFactor.udo - Consultate da
predictNextStateinadaptiveStatePrediction.udo - Esportate da
AnalisiFinaleper 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.orcper definire confini tra statistate_history_*: Aggiornate darecordCurrentStateintransControllerUtils.udomemory_state_*: Scritte daAnalizzatoreper tracciare gli stati nel tempotransition_matrix: Inizializzata dainitTransitionMatrixinstateTransition.udoe aggiornata daupdateTransitionMatrixinadaptiveStatePrediction.udo
- Lettura:
*_thresholds: Lette dadetermineCurrentStateindetermineState.udostate_history_*: Consultate daTransitionDeciderper decisioni di transizionetransition_matrix: Letta daselectNextStateinstateTransition.udo- Tutte esportate da
SaveTransitionMatrixeEnhancedSaveTransitionMatrixper 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 darecordCurrentStateintransControllerUtils.udoexpected_state_table: Scritta dainitializeTransitionper prevedere il percorso di transizioneactual_state_table: Aggiornata durante le transizioni darecordCurrentState
- Lettura:
- Lette da
assessTransitionQualityper valutare l’efficacia delle transizioni - Consultate da
adaptTransitionParametersper migliorare le future transizioni - Utilizzate da
predictNextStateinadaptiveStatePrediction.udoper 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 darecordTransitioninadaptiveStatePrediction.udocontext_features: Memorizza caratteristiche del contesto musicale attuale
- Lettura:
- Utilizzate da
predictNextStateper selezionare stati target basati su esperienze passate - Consultate da
calculateContextSimilarityper 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
Analizzatoremonitora continuamente gli eventi attivi, aggiornando le tabelle di analisi e memoria - Il
TransitionControllerusa queste informazioni per determinare lo stato musicale corrente TransitionDeciderdecide quando avviare una transizione verso un nuovo statoinitializeTransitionseleziona uno stato target e pianifica una traiettoria di transizioneBehaviorGeneratorgenera comportamenti con parametri interpolati tra stato origine e destinazioneGeneraComportamenticonverte questi parametri in uno strumentoComportamentoComportamentogenera molteplici eventi sonori, memorizzandoli nelle tabellegi_eve_*eventoSonorolegge queste tabelle per produrre il suono effettivoAnalizzatorerileva 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.