pTq

pTq è un progetto di composizione algoritmica.
Una delle esecuzioni degli script di Python ha dato luogo alla composizione di una partitura per pianoforte e toypiano, come una delle tante versioni possibili, considerando le tante decisioni da prendere durante la progressione degli algoritmi. 

Il progetto è articolato in una sequenza di script interdipendenti, eseguiti secondo una progressione definita. Ogni script implica impostazioni di diversi parametri in gioco, valori che possono essere personalizzati, secondo due modalità:
parametri fissati all’interno dell’algoritmo, modificabili nello script, tenendo conto di alcune limitazioni;
parametri impostabili al prompt, come scelte libere o scelte guidate da alternative proposte durante l’esecuzione dello script.

Il processo, nel suo complesso, può essere così sinteticamente riassunto:

1) VETTORI
• creazione e salvataggio del vettore input. Il vettore input è un vettore numerico costituito da altezze (pitch) secondo la numerazione del protocollo MIDI. Del vettore viene definita al prompt la numerosità e i singoli valori delle note. I vettori input possono essere anche più di uno.
• creazione e salvataggio dei vettori derivati (retrogrado, rovescio, rovescio del retrogrado).
• creazione e salvataggio di un vettore strumentale personalizzato, oltre a quelli di default già memorizzati. I vettori strumentali contengono indicazioni circa gli strumenti selezionati per la partitura finale.
Il materiale iniziale viene esteso attraverso algoritmi che preservano e trasformano il profilo intervallare del vettore di partenza, garantendo una coerenza armonica riconoscibile lungo l’intero processo.

2) MATRICI
• creazione di una matrice a partire da un vettore selezionato tra quelli creati precedentemente. Per la matrice, (di un numero di righe pari all’organico desiderato e un numero di colonne pari alla dimensione del vettore selezionato) vengono proposte varie metodologie a seconda di come viene disposto il materiale iniziale e come vengono riempite le righe.
• seguono alcuni script di servizio per comprimere o espandere la matrice selezionata tra quelle create, e alcuni script di controllo e correzione di errori, riguardo i limiti dei pitch MIDI e il range dei vari strumenti selezionati.

3) GENERAZIONE DI LISTE DI ACCORDI
• un gruppo di script dedicati alla generazione di file MIDI leggibili da software di notazione:
• generazione di liste di accordi, estratti, a gruppi di 5 note, attingendo ad una matrice riveduta e corretta generata precedentemente. Gli accordi sono in questa fase composti da 5 note per le 5 dita di ogni mano vista la destinazione pianistica imposta al lavoro.
• generazione di liste numeriche random che questa volta esprimono durate (in sedicesimi). Queste liste vengono associate alle precedenti liste delle altezze associando durate a ogni gruppo di 5 note (accordi) e definendo le pause (di durate da 0 a un massimo definibile nello script) che intercorrono tra un accordo e il successivo.
• correzione di eventuali elementi problematici delle liste precedenti (accordi pianisticamente ineseguibili, raddoppi, incroci…)
• generazione di uno o più insiemi di altezze (riferito a un “modo” o a un insieme nella concezione di Allen Forte), salvataggio di questi insiemi e poi conversione delle liste di altezze entro l’insieme selezionato.
• ulteriori correzioni di errori, in modo automatico o manuale. La matrice arriva qui alla sua definizione finale.

4) GENERAZIONE MIDI
• la matrice finale risultante viene ridotta nel range delle altezze (pitch) secondo otto modalità, salvando le otto liste generate, in modo da avere nello sviluppo successivo, sezioni della composizione con range diversi, che ad esempio progressivamente aprano, o comunque modifichino, in sezioni successive, il range della partitura pianistica, dando direzionalità al pezzo.
• generazione di file MIDI dalle liste con diversi range.

5) SCRIPT DI SUPPORTO
• script di utilities, utilizzabili in qualsiasi fase del processo, contenenti algoritmi per visualizzare vettori e matrici, anche in versioni notali;
• un file di testo contenente la Cronologia dei file creati nelle varie fasi del progetto;
• un grafico workflow che visualizza l’intero diagramma di flusso del progetto.