Linguaggi e codici
- Un linguaggio di programmazione, in informatica, è un linguaggio formale, dotato al pari di un qualsiasi linguaggio naturale di un lessico, di una sintassi e di una semantica ben definiti.   Wiki
-
Per poter realizzare musica utilizzando un computer dobbiamo conoscere in modo approfondito due linguaggi molto differenti tra loro:
- Il linguaggio musicale con i suoi simboli e le sue regole.
- Il linguaggio informatico attraverso il quale realizzerete le vostre idee musicali ( Lisp, C++, Smalltalk, etc.)
F.Chopin - Sonata n°2 Op.35
Live coding session
Quando questi due linguaggi s’incontrano, non seguono strade indipendenti ma sono interlacciati tra loro attraverso diverse tipologie di relazioni. E’ necessario dunque cercare dei punti in comune per creare un metalinguaggio che permetta la comunicazione tra l’aspetto musicale e quello informatico. Un buon punto di partenza potrebbe essere prendere in considerazione due tra le diverse definizioni date dal vocabolario della lingua italiana della parola codice
.- Sequenza di segni (numeri, cifre o altro) atta ad identificare qualcuno o qualcosa.
- codice di avviamento postale. Un luogo è identificato da una sequenza numerica.
- codice a barre. Identifica un prodotto commerciale e il suo prezzo, è rilevato da lettori elettronici.
- codice fiscale. Insieme di numeri e lettere che costituiscono l’identità del contribuente per l’anagrafe tributaria.
L'immagine qui sopra illustra come nel linguaggio musicale occidentale moderno, per identificare le altezze dei suoni possiamo utilizzare diversi simboli appartenenti a diversi codici. Più simboli corrispondono a una sola altezza. E’ possibile tradurre l’informazione da un codice all’altro. Il teorico musicale dirà ”gli intervalli di una scala di Do maggiore” e penserà ad un sistema intervallare relativo. Il musicista Jazz dirà ”C3” e penserà ai sistemi di tablature degli accordi. Il fisico acustico dirà ”l’insieme delle frequenze armoniche” e penserà a un sistema di corpi elastici vibranti. L’informatico dirà ”un array” e penserà ad allocazioni di memorie variabili, mentre il producer penserà ai trattini di un piano roll da inviare a banchi di suoni. L’altezza sarà sempre se stessa e una sola. Il suono ancora di più.
- Sistema di segni e di regole per la loro combinazione, convenzionalmente assunto.
- codice cifrato. Sistema comunicativo concordato tra membri di un’organizzazione per non farsi capire dagli altri.
- codice di trasmissione. Con un codice segreto o con un codice convenzionale internazionale.
Così come è possibile tradurre le altezze in sequenze numeriche è possibile anche trasformare le regole di un linguaggio musicale in algoritmi e in operazioni matematiche, che sono invece processi appartenenti al linguaggio informatico. Prendiamo come esempio una trasposizione delle altezze (tecnica comune a diversi linguaggi musicali come contrappunto, dodecafonia, armonia, etc.). Si può tradurre con la funzione:
trasposizione = y + n
Dove la lettera y è un valore variabile mentre la lettera n è un valore costante. Ogni qualvolta modifichiamo il valore della variabile y (che musicalmente corrisponde di volta in volta a una nuova nota della sequenza) sommiamo al suo valore il valore di n (fattore di trasposizione) come illustrato nella figura sottostante, ottenendo come risultato la sequenza trasposta (in questo caso una quarta sopra).
-
Il concetto di algoritmo venne formalizzato nel secolo scorso per risolvere il problema matematico della ”decisione” (Entscheidungsproblem) posto da David Hilbert nel 1928. E’ raccomandabile dunque affrontare la programmazione di algoritmi dedicati alla creazione musicale tenendo presente che, nella maggior parte dei casi, non devono avere una funzione strettamente deterministica. Se volete scrivere esattamente nota per nota una melodia con armonie prestabilite che la sostengono, non è necessario programmare un algoritmo, potrebbe essere anzi controproducente farlo. Se invece volete che il software esegua un’improvvisazione più o meno libera scegliendo tra diversi campi armonici costanti o variabili, oppure se volete costruire un brano iperstrutturalista dove la micro forma si espande nella macro forma e la struttura è troppo complessa per essere pensata e scritta a mano, un algoritmo potrebbe essere la soluzione migliore.
-
Premesso che la maggior parte dei software musicali a nostra disposizione oggigiorno può fare (quasi) tutto (Csound, Super Collider, Pure Data, Max, Ableton Live, Logic, etc.), bisogna tener presente che ognuno di loro possiede caratteristiche proprie, esattamente come gli strumenti acustici. Queste caratteristiche fanno si che un software sia più orientato a compiere determinate operazioni piuttosto che altre (alcuni sono ottimizzati per l’elaborazione del suono in tempo reale, altri per la sintesi, altri per la realizzazione di brani acusmatici, altri per la composizione algoritmica, altri ancora per l’interazione audiovideo, etc.). E’ quindi importante conoscere e saper scegliere il software più appropriato per ogni singolo progetto musicale e che il software e il linguaggio di programmazione utilizzato sono solo uno strumento attraverso il quale realizzare al meglio un’idea musicale. La progettazione e la programmazione di un algoritmo non devono essere o diventare l’idea musicale stessa (tranne che in rarissimi casi).
- [...]