CodeSounding library: trasformare codici sorgenti in computer generated music sounds (sonification)

SourceForge.net Logo

Demo

Guestbook

News

Wiki Home   Computer generated music sounds from a source code structure Download   Sonification examples Documentazione   How to make computer generated music sounds with CodeSounding java library

CodeSounding: trasformare la struttura dei file sorgenti in musica

CodeSounding può essere visto come un modo per creare computer-generated music, ovvero una libreria che applica una "sonification" al codice sorgente: il suono prodotto a runtime è funzione della struttura del codice sorgente da cui è stato ottenuto il programma stesso.

L'idea del progetto è nata per caso, durante una discussione su come generare "algoritmicamente" della musica glitch (alcuni esempi). Durante lo sviluppo del progetto mi son sorti dubbi di pitagorica memoria: è possibile che il processo mentale che elabora l'algoritmo e che infine "coagula", si fissa, nell'insieme di istruzioni che compongono il codice sorgente, possa considerarsi anche da una prospettiva sonora? Esistono regole che instaurano un isomorfismo tra ragionamento e senso estetico? Ora, certamente la matematica presenta tanti esempi di bellezza: una semplice occhiata ai frattali credo sia eloquente. Perchè un algoritmo informatico non si dovrebbe poter rappresentare in un modo così stupefacente? Sempre di matematica si tratta. E se fosse possibile udire la sfuggente proprietà detta "qualità del software"?
CodeSounding non ha certo la pretesa di rispondere a questa domanda provocatoria, piuttosto è un'umile proof of concept.

Codice sorgente Spartito

Tecnicamente, il processo di "sonification" consiste nell'elaborazione dei file sorgenti in modo da aggiungervi delle callback negli eventi "if, for" ecc. Questa operazione è chiamata token stream rewriting. Le operazioni di callback sono strutturate sul design pattern template: ciò permette di scegliere e configurare a runtime, cioè quando l'applicazione viene eseguita, l'algoritmo che genera la musica. Propriamente dunque la "sonification" non è effettuata sulla struttura statica del codice sorgente ma sulla dinamica dell'esecuzione.
Per il parsing dei sorgenti uso una grammatica ANTLR, mentre per generare la musica uso il linguaggio/notazione ABC (vedi i siti di Guido Gonzato e Chris Walshaw), la libreria jMusic o il server audio JACK.

News
~ Copyright © 2006 2010 - Roberto Mannai (robermann@gmail.com) ~