check point
Analisi del Sistema Delta Engine
sono ancora scarso e ora non ho voglia di perdere tempo a capire come rendere l’immagine piu grande, ma tranquillo è un svg, puoi zoommare quanto vuoi.
Panoramica del Sistema
Il Delta Engine è un sistema di composizione algoritmica basato su Csound che genera strutture sonore secondo regole matematiche e processi non lineari. Il suo approccio è basato sulla generazione di eventi sonori attraverso “comportamenti” che definiscono parametri come ritmo, durata, frequenza e spazializzazione.
Componenti Principali
1. Sistema di Intonazione
- Utilizza un sistema di intonazione pitagorica con frequenze generate tramite una serie di quinte
- La funzione
GenPythagFreqs
genera queste frequenze in base a una frequenza fondamentale, intervalli e ottave
2. Gestione dei Comportamenti
- I comportamenti sono unità di controllo che definiscono come vengono generati gli eventi sonori
- Ogni comportamento ha parametri propri: ritmi, durate, ampiezze, frequenze e posizioni spaziali
- I valori di ritmo controllano sia la temporizzazione che la scelta delle frequenze
3. Eventi Sonori
- Generati dai comportamenti e rappresentano le unità audio effettive
- Includono parametri come attacco, durata, ampiezza, frequenza e posizione spaziale
- Utilizzano sintesi basata su oscillatori con modulazione spaziale
4. Sistema di Memoria Compositiva
- Traccia la “densità” della composizione nel tempo
- Analizza la sovrapposizione di eventi e usa queste informazioni per influenzare i nuovi eventi
- Utilizza funzioni non lineari per generare sequenze ritmiche derivate
5. Sistema di Analisi
- Monitora in tempo reale gli eventi attivi e raccoglie dati statistici
- Esporta dati di analisi per visualizzazione e post-processing
- Include analisi di sovrapposizione, distribuzione armonica e comportamento temporale
Flusso Principale dell’Esecuzione
1. Inizializzazione
- Definizione di costanti, tabelle e parametri globali
- Generazione delle frequenze pitagoriche
- Inizializzazione delle strutture di analisi
2. Generazione dei Comportamenti
- Lettura dei parametri iniziali dalle tabelle
- Validazione dei parametri tramite la funzione
Validator
- Scheduling di comportamenti nel tempo
3. Esecuzione dei Comportamenti
- Calcolo dei ritmi e degli attacchi
- Applicazione di funzioni non lineari per estendere sequenze ritmiche
- Scheduling di eventi sonori nel tempo
4. Analisi in Tempo Reale
- Monitoraggio della sovrapposizione degli eventi
- Analisi della distribuzione armonica e spettrale
- Memorizzazione della storia compositiva
5. Finalizzazione
- Esportazione dei dati di analisi
- Generazione di visualizzazioni tramite script Python
Caratteristiche Chiave del Design
1. Utilizzo Non Convenzionale del Ritmo
- I valori di “ritmo” non sono pattern ritmici tradizionali ma rapporti temporali
- Vengono usati sia per calcolare temporizzazioni che per accedere a specifiche frequenze
- Esempio: un ritmo [3,4,5] genera eventi separati da durataArmonica/3, durataArmonica/4, durataArmonica/5
2. Sistema di Feed-Forward
- La densità corrente influenza la generazione di nuovi eventi
- Il sistema si adatta alla propria evoluzione nel tempo
3. Architettura Modulare
- Separazione tra generazione di comportamenti ed eventi
- Utilizzo di UDO (User Defined Opcodes) per funzionalità specifiche
Specifiche Tecniche e Dettagli Implementativi
Sistema di Ritmi e Frequenze
- Ritmi come Rapporti: Il sistema utilizza i valori di ritmo (come 3,4,5) non come pattern ritmici tradizionali ma come rapporti temporali tra eventi consecutivi
- Doppia Funzione: I ritmi determinano:
- Il tempo tra gli eventi (attacchi):
durataArmonica/ritmo
- L’indice per accedere alla tabella delle frequenze
- Il tempo tra gli eventi (attacchi):
- Accesso alle Frequenze: L’indice per accedere alle frequenze viene calcolato come:
indice = Ottava * INTERVALLI + (Registro * INTERVALLI / REGISTRI) + RitmoCorrente
Estensione Non Lineare dei Ritmi
Quando i ritmi predefiniti vengono esauriti, il sistema utilizza una funzione non lineare per generare nuovi valori:
i_RitmoCorrente NonlinearFunc i_Vecchio_Ritmo
La funzione NonlinearFunc
implementa una trasformazione sinusoidale:
iResult = abs(iX*2 * sin(iX * iPI/2 + iX) + 1/(iX+0.001))
Sistema di Memoria e Adattamento
Il sistema tiene traccia della propria evoluzione temporale:
- Analizza eventi attivi ogni 0.1 secondi (10Hz)
- Memorizza la storia compositiva ogni secondo (1Hz)
- Utilizza questa storia per influenzare nuovi eventi:
i_OverlapFactor = suggestDurationFactor(iLookbackTime, iCurrentTime, i_RitmoCorrente) i_DurEvento = (i_DurataArmonica/i_RitmoCorrente) * i_OverlapFactor
Struttura dei File Principali
- main.csd: Punto di ingresso principale
- UDOs/:
- utils.udo: Funzioni di utilità generali
- pfield_*.udo: Calcoli per i vari parametri (ampiezza, frequenza, ecc.)
- GenPythagFreqs.udo: Generazione di frequenze pitagoriche
- validator.udo: Validazione dei parametri
- calcDurationFactor.udo: Calcolo adattivo delle durate
- orc/:
- Comportamento.orc: Definizione dei comportamenti
- eventoSonoro.orc: Generazione del suono
- Analizzatore.orc: Sistema di analisi in tempo reale
- MACROS/:
- first.orc: Definizione di costanti e tabelle globali
- debug.orc: Funzioni di debug e logging
Osservazioni e Considerazioni sul Progetto
Il Delta Engine rappresenta un approccio sofisticato alla composizione algoritmica, dove:
-
Autoregolazione: Il sistema può adattarsi alla propria evoluzione, creando una forma di feedback compositivo.
-
Ruolo del Caos: L’uso di funzioni non lineari introduce elementi caotici controllati nella generazione ritmica.
-
Spazializzazione Integrata: La posizione spaziale è un parametro compositivo intrinseco.
-
Approccio Matematico: Il sistema si basa su relazioni matematiche più che su concetti musicali tradizionali.
L’attuale implementazione mostra un sistema funzionale ma con potenziale per ulteriori sviluppi, particolarmente nell’area di mapping tra parametri matematici ed esiti musicali percettivamente rilevanti.
E questa è la versione del reporitory allo stato di lavoro del diario.