il Live Coding puro, from Scratch, partendo da un editor vuoto o quasi vuoto, si colloca a un estremo dello spettro delle possibilità, mentre la Musica Generativa, si colloca all'altro estremo. Il Live Coding puro è l'idea che possiamo creare musica da zero, scrivendo codice, partendo da un editor vuoto o quasi; la Musica Generativa d'altro canto insegue l'idea che i computer possano fare musica interamente da soli, senza supervisione. Entrambi gli ideali sono impossibili da raggiungere; personalmente penso che il modo migliore di creare musica con il Live Coding durante una Performance Live, possa trovarsi in mezzo ai due estremi dello spettro delle possibilità; quando compongo in studio e uso lo strumento del Live Coding, però, parto sempre da un editor vuoto o quasi; come in questo video;

non è necessario un pubblico per fare Live Coding; penso che la migliore musica creata con il Live Coding provenga probabilmente da persone che fanno Live Coding da soli, che sviluppano un'idea in studio ad uno stato avanzato, per presentarla magari successivamente a un pubblico, per divertirsi, elaborando strategie per fare Live Coding con quell'idea ben realizzata e elaborata.

la sensazione preferita che cerco comunque è quella di esplorare nuove idee in intimità, magari anche durante un'intensa e rumorosa esibizione dal vivo. Il Live Coding from Scratch è rischioso, ma quando funziona è fantastico; questa cosa lho provata in studio tantissime volte; il sistema REBOP che sto creando, mi ha dato la possibiltà di snellire molto il linguaggio SuperCollider, tra i più verbosi e prolissi, per adattarlo anche alle mie esigenze compositive; a tendere questo sistema mi permetterà di muovermi sempre di più verso l'ideale del Live Coding from Scratch;

esiste però anche un pubblico a cui stai proponendo le tue idee musicali; il Live Coding from Scratch è divertentissimo per il Live Coder, che sta esplorando in ogni momento nuove possibilità, ma per chi ascolta/osserva può risultare noioso se diventa un processo troppo lento e ripetitivo;

Brian Eno paragona la Musica Generativa alla semina dei semi, che sono lasciati crescere da soli, e suggerisce che rinunciando al controllo dei nostri processi, li lasciamo "suonare nel vento"; contrasto fortemente questo concetto; sostengo l'umanizzazione della Musica Generativa, in cui il codice non viene lasciato solo a vagare attraverso il suo paesaggio sonoro auto-descrittivo, ma viene violato, tagliato e modellato per fare appunto Live Coding o nel caso di noi Rebopper.. REBOP Coding;






Sabato 21 dicembre 2019
presso il CSOA Forte Prenestino
Via Federico Delpino - Roma (RM)
Av.A.Na. festeggia i 25 anni, come tradizione il 21 dicembre,
LiveCoding o meglio REBOP Coding by Bz Akira Santjago;

il performer scrive e esegue il codice che viene decodificato dalla macchina e produce un risultato sonoro. La performance musicale, quindi, consiste in un dialogo continuo tra uomo e macchina, in una sorta di rapporto direttore d'orchestra <-> esecutore in cui il primo non ha mai il pieno controllo sul secondo. Il codice sorgente viene continuamente modificato e valutato dal musicista per variare i risultati musicali. Il Live Coder o meglio nel mio caso Rebopper (quindi REBOP Coding per ragioni che leggerete sotto), di conseguenza, per il fatto di essere sul palco di fronte a un pubblico, che può anche leggere ciò che sta scrivendo e/o valutando, è il vero e proprio artefice del prodotto finale e la sua è una composizione musicale improvvisata; nel mio caso il tutto è arricchito da gif animate legate al brano musicale creato in quel momento e da una prosa a tema sociale improvvisata come commento all'idea musicale;

le mie composizioni non sono semplici e minimali e le sequenze che definisco sono sicuramente più melodiche di tante altre cose che ho sentito nel mondo musicale del Live Coding; ma il problema principale è che uso un linguaggio estremamente prolisso, SuperCollider, forse il piu prolisso tra i vari linguaggi in uso nel panorama del Live Coding; in mancanza di tempo, questo mi impone di partire da template prefabbricati in studio per poi combinare le varie sequenze durante il Live; ho creato queste sequenze in ore e ore di sessioni di Live Coding e il tempo a disposizione per questa Live era pochissimo, la sessione sarebbe durata 4 ore se fossi partito da zero; nel mondo del Live Coding, c'è chi parte dall'editor vuoto e chi parte da template e algoritmi prefabbricati e poi combina e modifica le sequenze come ho fatto in questa sessione Live (link TOPLAP); con Tidal, altro linguaggio di programmazione, una canzone delle mie la scrivi con 5 linee di codice; era comunque la mia prima esperienza con il Live Coding e sto creando il sistema REBOP proprio per snellire il linguaggio; questo per rispondere al "sapientone" che mi critica nel video qui sotto; ha ragione lui, il mio non è Live Coding, uso il Live Coding come strumento di composizione; il mio è REBOP Coding, visto che aggiungo anche immagini e prosa improvvisata a tema sociale come commento all'idea musicale; e la chiudiamo qui;



non la chiudiamo qui; per essere seri, e fregandosene dei rosicamenti altrui, il mio REBOP Coding è Live Coding come si può serenamente desumere dalle tante testimonianze di Live Coder della community TOPLAP; il problema è che questi discorsi allontanano le persone dal provare il Live Coding e sopratutto dal provare a creare un proprio stile di programmazione;



Alcune testimonianze dal Forum di TOPLAP (Forum Internazionale e Ufficiale della Community di Live Coding) :

"It depends on the audience and purpose of the performance, but for Algorave-style performances I prepare code for nearly everything. I typically prepare small 5-minute compositions that I can improvise with. However, I also do completely improvised stuff in live streams and in front of live audiences if the performance demands it.

The “live” part of my performance consists of:

Improvisation of the pre-written compositions
Transitions between the pre-written compositions"

---

"I prepare almost everything in my sets currently, for a few reasons:

I write songs that kind of have to be performed in vaguely predictable sections to work
Ixi uses the arrangement of the text/whitespace in physical space to determine time, so a single typo can throw you into a different time signature (this is great great great for songwriting, but super risky for live performance).
typing while singing is quite hard. :wink:
The only version of ixi that works on my computer is super unstable so however much I pre-prepare there’s always an element of risk anyway.
Probably 90% of it is pre-typed and just evaluated live"

---

"yes, I definitely think this some holds people back from jumping into the live coding community and making the music with code that best suits their own performance style/song structure. Part of the reason I wanted to start this discussion! And to be fair, I would argue that some of my favorite and most prominent live coders today definitely have structured tracks that they return to in most of their sets, regardless of how much of them they type live!"

---

"I think I respect the way that live programmers feel happy playing live, what I do not like is when you talk about “good practices” when you play from skratch, I think this demerits the practices of other live programmers who have other processes. I feel good by composing and “typed live”, for a long time I stopped thinking that things are better because they seem to be more complex, in any way, making music, under any medium, it is always a challenge, the challenge of ordering sound on time. Would it be great to eliminate these ideas about whether it is live encoding or not? Both processes are live coding from my point of view."




Léon Theremin era un Hacker, un inventore sovietico, famoso per la creazione dell'omonimo Theremin, uno dei primi strumenti musicali elettronici. Nel 1919 stava lavorando, nel laboratorio del noto fisico Ioffe, con particolari dispositivi di sua ideazione atti a misurare la densità dei gas nel vuoto; ben presto si accorse che in certe condizioni si produceva un fischio che variava di frequenza avvicinando o allontanando la mano dai circuiti. Forte della sua esperienza di qualche anno prima in campo militare, con amplificatori e oscillatori che utilizzavano valvole termoioniche ed interessato dai possibili risvolti pratici del fenomeno, continuò a fare esperimenti fino ad inventare un vero e proprio strumento musicale cui diede il nome di eterofono.

r[\pianovel].value(b.value("f3+c6 ,off ,c3+c4 ,as4+ds4+fs3+c1  ,f3+f2 ,a3,f1 ,d2 "),z.value("f3+c6 ,off ,c3+c4 ,as4+ds4+fs3+c1  ,f3+f2 ,a3,f1 ,d2 ")*0.5, 1);

r[\bz_bass].value(b.value("f3 ,f2 ,f2 ,f1 ,f3 ,f3 ,f1 ,f2 "),z.value("f3 ,f2 ,f2 ,f1 ,f3 ,f3 ,f1 ,f2 ")*0.5);
    16.wait;
    r[\bz_slap].value(b.value("f1 ,f1 ,off ,f1 ,f1,f1,f1 ,f1 ,f1 "),z.value("f1 ,f1 ,off ,f1 ,f1,f1,f1 ,f1 ,f1 ")*0.5);

~bzbass[5] = \filter -> {arg sig; (3111.33*sig.distort/(1+ (2231.23*sig.abs))).distort*0.25};

r[\pianovel].value(b.value("f4+f5 ,e4+e5 ,ds4+ds5 ,d4+d5  ,cs4+cs5 ,c4+c5,b4+b5 ,as4+as5 "),z.value("f3+c6 ,e5+e4 ,c3+c4 ,as4+ds4+fs3+c1  ,f3+f2 ,a3,f1 ,d2 ")*0.5, 1);

//Space Theremin sound from:
//Mitchell Sigman (2011) Steal this Sound. Milwaukee, WI: Hal Leonard Books
//under GNU GPL 3 as per SuperCollider license

(
~spacetheremin=Pfx(
    Pmono(
        \spacetheremin,
        \amp,Prand([0.4,0.45,0.5,0.55,0.5],inf),
        \midinote,Prand([0,2,3,5,6,8,9,11]+60,inf),
        \dur,Prand([1.0,1.5,0.5,0.75,1.25,2.0,0.57],inf),
        \lagTime,Pstutter(7,Pn(Pseries(0.05,0.05,8),inf)),
        \lfoRate,Pstutter(9,Pn(Pseries(6,0.5,5),inf)),
        \cutoff,Pstutter(11,Prand([1000,1500,2000,3000],inf))
    ),
    \spacereverb
)
)





può una frase musicale trasformasi in un'opera di Fiber Art Iperbolico? i gradi di una scala, di una composizione LiveCoding REBOP, essere usati come base per la creazione di una forma di Crochet Iperbolico? Evidentemente si, grazie alla Super Artista Rita Cavallaro! REBOP Fiber Iperbolico!

(
    var a,b,c;
    a=Pseq([Pser([0,1,2,3,4,5,6,7],12),Pser([1,1,1],12)],1);
    //c=Pseq([Pser([7,7,0,0,3,3,7,7].reverse,12),Pser([7,7,7],12)],1);
    c=Pseq([Pser([7,7,0,0,3,3,7,7].reverse,12)],2);
    b=Pseq([Pseq([7,6,5],2),Pseq([7,7,7],2),Pseq([7,6,5],2),Pseq([7,7,7],2)],1);
    ~piano = Pbind(\instrument,\pianovel,\scale,Scale.major,\root,5,\octave,[3,5],\degree,Pseq([Pn(a,3),Pn(c,2),Pn(b,1)],inf),\dur,Pbjorklund2(3,8)/4,\amp,1,\rel, 0.3,\pan, -0.7);
    ~piano.play;
)


questo articolo è stato creato attraverso Cut-Up letterari e rielaborazioni creative del concetto di Cut-Up comportamentale, che in questo testo chiamerò REBOP comportamentale; REBOP : Realtime Exploration Beyond Ordinary Possibilities;

I REBOP comportamentali sono paragonabili ai Cut-Up artistici e letterari, in cui testi e materiali esistenti vengono smontati e riassemblati in modi nuovi. I dadaisti tagliavano a pezzi giornali e libri di poesia e creavano nuovi componimenti estraendo a caso i ritagli da un cappello; similmente, il Rebopper comportamentale (un artista del Cut-Up comportamentale) applica forbici e colla a un testo sociale o personale e riconfigura banali aspetti dell'esistenza in modi straordinari. Un REBOP comportamentale non è tanto una randomizzazione della vita quanto un punto di partenza per territori "inesplorati"; come tale, può richiedere un'attenta riflessione. Scegliere le modifiche più promettenti da fare è una scienza rigorosa, se non esatta.

Nella forma più elementare di REBOP comportamentale, si associa una determinata alterazione ad un aspetto della vita che finora sembrava ordinario: per esempio: decidi di mangiare a scrocco per un mese intero, oppure ti dedichi a scalare tutti gli alberi della zona, o ti impegni a mandare ogni giorno una cartolina alla tua famiglia per un anno. Queste alterazioni fanno concentrare l’attenzione su attività che si davano per scontate, acuiscono la consapevolezza, rendono più sciolta la mente e svelano nuove possibilità.

Quando ti avventuri fuori dal giro della vita quotidiana, entri temporaneamente in un mondo parallelo dove sei una persona diversa e impari cose che, se prima erano banali, adesso sono nuove di zecca.

I REBOP comportamentali non sono cose strane ed esoteriche come il loro nome potrebbe far sembrare. In tradizioni che risalgono all’alba della civiltà, guerrieri e sciamani li hanno praticati come forma di ricerca visionaria. Imitazione di animali, danze estatiche, rituali di sfinimento, deprivazione sensoriale, dolore: sono tecniche di antica tradizione per la sperimentazione psichica e sociale.

Anche nella nostra prosaica epoca si partecipa ad attività simili, in misura variabile: digiunare durante il mese del Ramadan, costruire un fortino di cuscini in salotto e rifiutarsi di uscire per tutta la sera, andare a una festa di Halloween vestito da Frank Zappa e passare tutta la notte nel personaggio; bere per un mese solo pompelmo, dormire 3 ore a notte per una settimana, decidere di non guardare film, serie-tv per un anno, non parlare con nessuno per un giorno, tutti questi sono REBOP comportamentali, per quanto alcuni inconsapevoli o poco originali. Molte persone hanno esperienze di prima mano con semplici REBOP alimentari: diventare vegani, per esempio, fa guardare al cibo in una luce nuova, cambia le abitudini sociali e spesso ha come risultato un aumento di interesse per la cucina o il giardinaggio. Non ci resta che mettere a punto una pratica intenzionale di REBOP comportamentali fini a se stessi, come strumenti di educazione, ispirazione e liberazione.

Non c’è bisogno che i REBOP comportamentali siano grandiosi; anzi, i più coinvolgenti raramente sembrano attraenti sulla carta. Dedicarsi a cose futili come attaccare discorso con uno sconosciuto ogni mattina forse non sembrerà un grande cambiamento di vita, ma gli effetti cumulativi possono essere sorprendenti. REBOP comportamentali più estremi possono creare conflitti con i propri concittadini. I REBOP comportamentali possono dare l’impressione di essere terreno elettivo di artisti, performer e altri privilegiati, ma è un errore liquidarli come tali. Preso sul serio, il REBOP comportamentale è un esercizio di espansione del sé, una pratica fondamentale per i rivoluzionari tanto quanto il mutuo soccorso o l’autodifesa.

Esempi di REBOP comportamentali :

Fate due liste: cose che vi annoiano e cose di cui avete paura. La prima dovrebbe essere facile da compilare, mentre la seconda può essere difficile ammetterla persino a se stessi. Prendete una voce a caso da ogni lista. Inventatevi un esercizio che le combini entrambe: per esempio, se avete scelto "prendere i mezzi pubblici" dalla lista noiosa e "parlare in pubblico" dalla lista paurosa, potreste sfidarvi a pronunciare un discorso sulla metropolitana ogni settimana. Tenete un diario delle vostre esperienze e delle vostre interazioni.

Scegliete un'attività che intimamente vi è sempre parsa assurda o ingiusta e che siete costretti a praticare, per pressioni culturali, convenienza o per comodità, e rifiutatevi di farla, anche se si rivela complicato. Può sensibilizzarvi a tragedie che prima erano invisibili, dopo qualche mese da vegani, entrerete in una pelletteria e vi sembrerà il negozio di un profanatore di tombe, o può mostrare ai vostri concittadini gli eccessi della società, come nel caso dell'asceta che porta con sé tutti i rifiuti che produce. Concedetevi un rapporto particolare con un luogo associandolo a un'attività specifica. Per esempio, potreste decidere che ogni volta che vi trovate in una determinata città, siete un corridore che si alza all'alba e fa jogging tutto il tempo.




il REBOP "incoraggia la creatività per se stessi piuttosto che per il consumo culturale". Non produce alcuna opera completa, quindi non esiste nulla da diciamo consumare e valutare. Il REBOP crea sempre composizioni parziali quindi mai complete; non crea opere musicali da consumare passivamente; quello che viene creato con il REBOP (che poi è solo una fotografia di una piccola parte dell'intero processo), può certamente essere condiviso open source, può essere quindi fonte di ispirazione e di studio, può essere analizzato e esplorato, ma ha già esaurito la sua funzione primaria : quella di portare il compositore in uno stato meditativo intenso; il REBOP è un processo di Esplorazione Realtime e dall'Hacking, dal LiveCoding, dal Reverse Engineering, dalla Composizione Algoritmica e dalla Sintesi del Suono, a tendere, si allargherà per pervadere e comprendere ogni momento e aspetto della vita quotidiana, in termini Situazionisti;

(
var c,e;
var bassAmp = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]*0.6;
c=Pseq([4,0,0,4,4,0,0,0,4,0,0,0,4,4,3.5,0]*1,1);
e=Pseq([0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,3.5]*1,1);
Pbindef(~bzbass2,\instrument,\bz_bass,\scale,Scale.yu,\root,5,\octave,2,
\degree,Pseq([Pn(c,3),Pn(e,3)],inf),\dur,1/2,\amp,Pseq(bassAmp,inf),\rel,
0.3,\pan,-0.3);
Pbindef(~bzbass2).play;
)
(
var c,e;
var synth2Amp = [ 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1 ]*0.2;
c=Pseq([4,0,0,4,4,0,0,0,4,0,0,0,4,4,3.5,0]*1,1);
e=Pseq([0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,3.5]*1,1);
Pbindef(~synth2,\instrument,\sinfb,\scale,Scale.yu,\root,5,\octave,5,
\degree,Pseq([Pn(c,3),Pn(e,3)],inf),\dur,1/2,\amp,Pseq(synth2Amp,inf),\rel,
1.9,\pan,-0.7,\fb,1.7);
Pbindef(~synth2).play;
)

(
var c,e;
var bassAmp = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]*0.3;
c=Pseq([4,0,0,4,4,0,0,0,4,0,0,0,4,4,3.5,0]*1,1);
Pbindef(~flute,\instrument,\flute,\scale,Scale.yu,\root,5,\octave,4,
\degree,Pseq([Pn(c,3)],inf),\dur,1/2,\amp,Pseq(bassAmp,inf),\rel,
0.3,\pan,0.7);
)

(
var c,e;
var bassAmp = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]*0.2;
c=Pseq([4,0,4,4,4,0,4,4,4,0,4,4,4,4,3.5,0]*1,1);
e=Pseq([0,3.5,3.5,4]*1,4);
c=Pseq([0,1,3.5,3,4,5,6,7,0,1,3.5,3,4,5,6,7]*1,2);
e=Pseq([4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4]*1,1);
Pbindef(~xx,\instrument,\synth,\scale,Scale.yu,\root,5,\octave,3,
\degree,Pseq([Pn(c,3),Pn(e,3)],inf),\dur,1/4,\amp,Pseq(bassAmp,inf),\rel,
0.3,\pan,0.3);
)

(
~b=Pbind(\instrument,\bz_bass,\scale,Scale.yu,\root,5,\octave,2,\degree,Pseq([0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,3.5]*1,inf),\dur,1/2,\amp,0.5);
~b.play;
)

(
//var kickAmps = [ 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ]*0.3;
var kickAmps = [ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]*0.3;
Pbindef(~k2, \instrument, \bplay, \buf, d["k"][0], \dur, 1/4, \amp,  Pseq(kickAmps, inf),
\rate, 1,\pan, 0.1);
Pbindef(~k2).play
)
(
var kickAmps = [ 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ]*0.3;
~k1=Pbind( \instrument, \bplay, \buf, d["k"][1], \dur, 1/4, \amp,  Pseq(kickAmps, inf),
\rate, 1,\pan, -0.3);
~k1.play;
)

(
//var snareAmps = [0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0 ]*0.2; // 16 beats
var snareAmps = [ 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1 ]*0.15; // 16 beats
//var snareAmps = [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ]*0.1; // 16 beats
~sn = Pbind(\instrument,\bplay,\buf,d["s"][0],\dur,1/4,\amp,Pseq(snareAmps,inf),\pan,-0.1);
~sn.play;
)

(
//var hatAmps = [ 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0 ]*0.1; // 16 beats
var hatAmps = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]*0.1; // 16 beats
~h = Pbind(\instrument,\bplay,\buf,d["ch"][0],\dur,1/4,\amp,Pseq(hatAmps,inf),\pan,0.3);
~h.play;
)

(
//var hatAmps = [ 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0 ]*0.1; // 16 beats
var hatAmps = [ 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0 ]*0.1; // 16 beats
~h2 = Pbind(\instrument,\bplay,\buf,d["ch"][3],\dur,1/4,\amp,Pseq(hatAmps,inf),\pan,-0.3);
~h2.play;
)


(
var voAmps = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]*0.4; // 16 beats
~v = Pbind(\instrument,\bplay,\buf,d["voices"][2],\dur,120,\amp,Pseq(voAmps,inf),\pan,0.3);
~v.play;
)
(
var voAmps = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]*0.4; // 16 beats
~v1 = Pbind(\instrument,\bplay,\buf,d["voices"][4],\dur,120,\amp,Pseq(voAmps,inf),\pan,0.3);
~v1.play;
)






REBOP : Realtime Exploration Beyond Ordinary Possibilities

Il REBOP nasce dalle mie esperienze di composizione algoritmica con SuperCollider e con l'OpenGL GLSL e da alcune consapevolezze raggiunte durante i vari esperimenti; il REBOP "incoraggia la creatività per se stessi piuttosto che per il consumo culturale". Non produce alcuna opera completa, quindi non esiste nulla da diciamo consumare e valutare. Il REBOP crea sempre composizioni parziali, quindi, mai complete; non crea opere musicali e non da consumare, oltretutto nella maggiorparte dei casi come succede sempre più spesso, passivamente; quello che magari viene creato con il REBOP (che poi è solo una fotografia di una piccola parte dell'intero processo), può certamente essere condiviso Open Source, può essere quindi fonte di ispirazione e di studio, può essere analizzato e esplorato, ma ha già esaurito la sua funzione primaria : quella di portare il compositore in uno stato meditativo intenso, che è poi la funzione primaria dell'intero processo del REBOP; il REBOP è un viaggio esplorativo di Codifica Live, Realtime, Just In Time Programming, verso nuove e non ordinarie possibilità, compositive e non; il REBOP non è un fine ma un mezzo; il REBOP dalla Composizione Realtime, a tendere, si allargherà per pervadere e comprendere ogni momento e aspetto della vita quotidiana, in termini situazionisti;

Per i nostri scopi, "meditativo" non ha nulla a che fare con l'entrare in trance, elevarsi, fuggire dalla realtà, non ha nulla a che fare con l'auto-aiuto, con il superare malattie mentali o capire come gli algoritmi o la codifica "estendano" la mente. Queste potrebbero essere conseguenze secondarie estemporanee anche non desiderabili. Né il REBOP tratta di bellezza o di godimento di un'esperienza pura ed estetica. "Meditativo", in questo testo, ha a che fare con il coltivare la consapevolezza del momento presente.

Se il nostro intento è generare opere musicali durante la codifica e l'esplorazione realtime, qualsiasi idea su come confezionarle, venderle o distribuirle o su cosa fare affinchè risultino interessanti a un ipotetico pubblico anche virtuale, ci allontana inevitabilmente dal momento presente. Se, durante il REBOP, i nostri pensieri vagano assorbiti dalle preoccupazioni su come presentare e rappresentare il nostro lavoro in futuro, allora abbiamo lasciato nuovamente il momento presente.

Confrontare il lavoro che si sta creando con altri lavori precedenti, ci porta dal presente al passato. Abbiamo bisogno di capire come l'intenzione di creare opere musicali influenzi il potenziale meditativo della nostra esperienza.

I compositori sperimentali non sono in genere interessati a prescrivere un oggetto temporale definito i cui materiali, strutture e relazioni siano calcolati e disposti in anticipo, ma sono più eccitati dalla prospettiva di delineare una situazione in cui possono verificarsi suoni e melodie, un processo di generazione di suoni, uno spazio magari delimitato da certe "regole non regole" compositive.

Oltre a lasciare andare le idee sull'opera musicale durante gli eventi di codifica e esplorazione realtime, faremmo anche bene a lasciare andare le nostre idee sulla musica. Se l'obiettivo durante la codifica REBOP meditativa è lasciare andare il giudizio, allora una musica definita come "ordinata", "gradevole", "espressiva" o "bella" non ci offre nulla. La musica generata durante il REBOP può comunque essere ordinata, gradevole, espressiva, per alcuni e per il compositore stesso, ma questo non è lo scopo del REBOP, come non lo sono venderla o ottenere apprezzamenti; per la codifica REBOP esplorativa, dobbiamo spostare l'enfasi dagli oggetti musicali alle attività musicali; porre attenzione al processo REBOP e lasciare andare gli oggetti musicali, semplicemente osservarli;

Quando spostiamo il nostro pensiero dagli oggetti musicali e iniziamo a osservare attività, relazioni e eventi, riduciamo la necessità di raggiungere o ottenere, e creiamo spazio per sperimentare.
Per il Rebopper qualsiasi scoperta può essere "vera"; un Rebopper considera qualsiasi ipotesi o analisi e misura le sue conseguenze pratiche per determinare ciò che può migliorare l'esperienza.

I praticanti del Pali-language Theravada (Buddhisti) usano il canto specificamente per coltivare la consapevolezza e non descrivono i suoni che producono come "musica".

Il REBOP ci chiede di rimanere nel momento, il che richiede meno sforzo quando vediamo un processo di codifica e esplorazione realtime come un'attività che non deve produrre certe cose o conformarsi a regole immaginarie come quelle che definiscono le opere musicali.

Strettamente legato al free jazz e spesso associata a musicisti come John Zorn, Anthony Braxton e Derek Bailey, l'improvvisazione libera è nota per la sua mancanza di regole. I Rebopper  possono iniziare con l'editor vuoto o da un codice preparato in anticipo e gradualmente allontanarsene; scartano completamente le nozioni di lavoro musicale e lasciano cadere i giudizi sugli oggetti musicali per porre attenzione al processo di esplorazione e codifica REBOP;

Non dobbiamo mai giudicare un'esperienza di codifica e esplorazione realtime come un fallimento, un successo o peggio come qualcosa di neutrale. La realtà è che "solo prestare attenzione" è tanto difficile quanto semplice. Va contro il nostro condizionamento culturale il fatto che la produzione musicale non porti alcuna informazione e che non significhi nulla. Ma se codificare REBOP diventa un'esperienza meditativa che coltiva la consapevolezza, allora possiamo iniziare riconoscendo come le nostre idee sulle opere musicali, sulla musica e sull'interpretazione influenzino le nostre esperienze. Per fortuna, è difficile aggrapparsi a idee che contraddicano l'esperienza personale, quindi anche solo vivere un piccolo momento di un evento di codifica e esplorazione realtime senza giudizio può avere un impatto duraturo e positivo e portarci a consapevolezze altre.

il REBOP è un'esplorazione in tempo reale al di là delle ordinarie possibilità; quali sono le mie ordinarie possibilità come artista, musicista mashupper? con il REBOP sto esplorarando altre possibilità compositive e non attraverso la composizione algoritmica e il live coding ('on-the-fly programming','just in time programming', 'conversational programming', 'slow coding', 'realtime coding'); ma è una composizione appunto fatta per altri scopi, come appunto coltivare la consapevolezza del momento presente; il REBOP è intelligenza giocosa, è improvvisazione, spontaneità, è esplorazione, hacking; cè molto REBOP anche nello SnowCrash Project anche se apparentemente questo non risulta evidente;

Il termine REBOP (prima versione del più conosciutò BEBOP) è un'onomatopea che imita una brevissima frase di due note usata talvolta nell'ambito del jazz come "segnale" per terminare un brano;

Diverse parti del testo sono frutto della traduzione e della rielaborazione di frammenti dell'articolo "Meditative Live Coding and Musicological Hindrances" di Matthew Tift Lullabot




// This is a rework of https://www.shadertoy.com/view/lsfGzr,
// created by @paulofalcao, with sound, by Radical Ed
// License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License


#define time iTime

float makePoint(float x,float y,float fx,float fy,float sx,float sy,float t, float w){
   float xx=x+sin(t*fx)*sx*tan(fx*t)*log(fx*t);
   float yy=y+cos(t*fy)*sy*tan(fy*t)*log(fy*t);
   return 5.0*abs(sin(25.0*t/337.0))/sqrt(xx*xx+yy*yy)+log(w/4.0);
}

void mainImage( out vec4 fragColor, in vec2 fragCoord ) {

   vec2 p=(fragCoord.xy/iResolution.x)*2.0-vec2(1.0,iResolution.y/iResolution.x);


 
   // create pixel coordinates
   vec2 uv = fragCoord.xy / iResolution.xy;

   // the sound texture is 512x2
   int tx = int(uv.x*512.0);
 

   // second row is the sound wave, one texel is one mono sample
   float wave = texelFetch( iChannel0, ivec2(tx,1), 0 ).x;
 
   vec2 translate = vec2(cos(iTime),sin(iTime));
 
 
 
   p=p*7.0*abs(sin(iTime));
   p += translate*1.35*sin(iTime);
 
   float x=p.x;
   float y=p.y;
 
   vec3 col = vec3( 0.0, 0.0, 0.0);

    // add wave form on top
   //col += smoothstep( 0.0, 0.15, abs(wave- uv.x)/2.0 );
 
    //if (wave > 0.4) { wave = 0.4 ;}
 

   float a=
   makePoint(x + col.x,y + col.y,2.0,2.9,0.3,0.3,time, wave);
   a=a+makePoint(x + col.x,y + col.y,1.9,2.0,0.4,0.4,time, wave);
   a=a+makePoint(x + col.x,y + col.y,0.8,0.7,0.4,0.5,time, wave);
   a=a+makePoint(x + col.x,y + col.y,2.3,0.1,0.6,0.3,time, wave);
   a=a+makePoint(x + col.x,y + col.y,0.8,1.7,0.5,0.4,time, wave);
   a=a+makePoint(x + col.x,y + col.y,0.3,1.0,0.4,0.4,time, wave);
   a=a+makePoint(x + col.x,y + col.y,1.4,1.7,0.4,0.5,time, wave);
   a=a+makePoint(x + col.x,y + col.y,1.3,2.1,0.6,0.3,time, wave);
   a=a+makePoint(x + col.x,y + col.y,1.8,1.7,0.5,0.4,time, wave);
   
 
   float b=
   makePoint(x + col.x,y + col.y,1.2,1.9,0.3,0.3,time, wave);
   b=b+makePoint(x + col.x,y + col.y,0.7,2.7,0.4,0.4,time, wave);
   b=b+makePoint(x + col.x,y + col.y,1.4,0.6,0.4,0.5,time, wave);
   b=b+makePoint(x + col.x,y + col.y,2.6,0.4,0.6,0.3,time, wave);
   b=b+makePoint(x + col.x,y + col.y,0.7,1.4,0.5,0.4,time, wave);
   b=b+makePoint(x + col.x,y + col.y,0.7,1.7,0.4,0.4,time, wave);
   b=b+makePoint(x + col.x,y + col.y,0.8,0.5,0.4,0.5,time, wave);
   b=b+makePoint(x + col.x,y + col.y,1.4,0.9,0.6,0.3,time, wave);
   b=b+makePoint(x + col.x,y + col.y,0.7,1.3,0.5,0.4,time, wave);
 

   float c=
   makePoint(x + col.x,y + col.y,3.7,0.3,0.3,0.3,time, wave);
   c=c+makePoint(x + col.x,y + col.y,1.9,1.3,0.4,0.4,time, wave);
   c=c+makePoint(x + col.x,y + col.y,0.8,0.9,0.4,0.5,time, wave);
   c=c+makePoint(x + col.x,y + col.y,1.2,1.7,0.6,0.3,time, wave);
   c=c+makePoint(x + col.x,y + col.y,0.3,0.6,0.5,0.4,time, wave);
   c=c+makePoint(x + col.x,y + col.y,0.3,0.3,0.4,0.4,time, wave);
   c=c+makePoint(x + col.x,y + col.y,1.4,0.8,0.4,0.5,time, wave);
   c=c+makePoint(x + col.x,y + col.y,0.2,0.6,0.6,0.3,time, wave);
   c=c+makePoint(x + col.x,y + col.y,1.3,0.5,0.5,0.4,time, wave);
 
 
   vec3 d=vec3(a,b,c)/22.0;
 
 
   fragColor = vec4(d.x*2.0,d.x,d.x,1.0);
}
Tecniche interattive e composizione algoritmica. Un'introduzione

1. Introduzione

Le tecniche interattive e la composizione algoritmica in tempo reale assumono una grande importanza nelle opere, mie e di altri compositori, in cui l'elaboratore è al centro della produzione di eventi musicali.

Questo documento intende esporre in modo semplice anche se per forza di cose incompleto, l'utilizzo che si è fatto di tecniche interattive e per la composizione algoritmica in tempo reale ed in generale fornire al lettore una panoramica sull'argomento qui trattato.

Si intende anche delineare, in modo sintetico, le necessità che hanno spinto, in precedenza, altri compositori ad utilizzare tecniche interattive nei lori pezzi, assieme ad una breve panoramica di precedenti realizzazioni di questo tipo.

2. Uno sguardo al passato

Per prima cosa definiamo il concetto di composizione algoritmica.

Si definisce come algoritmico quel processo musicale che si svolge, prevalentemente mediante elaboratore digitale, in base ad un ben determinato schema che viene utilizzato per la generazione delle strutture musicali. L'oggetto del comporre, in questo caso, non sono gli eventi sonori in senso stretto (altezze, durate, timbro), ma il processo stesso di composizione.

Per composizione algoritmica si intende quindi la composizione, a partire da qualche materiale preesistente, mediante tecniche definite, con o senza l'uso dell'elaboratore elettronico di materiale musicale originale o riconducibile al materiale di partenza.

I primi esempi di composizione algoritmica si possono ravvisare nel XVIII secolo, quando si diffuse tra compositori come Bach, Haydn e Haendel il divertimento di comporre musica mediante l' utilizzo dei dadi.

Nel 1757 Kirnberger pubblicò la guida alla composizione delle polonaise e dei minuetti con l'aiuto dei dadi.

Si deve inoltre a W.A. Mozart la pubblicazione di un manuale per la composizione di Valzer con l'aiuto dei dadi.

Il manuale conteneva una tabella ad otto linee (corrispondenti alle otto battute della composizione) e sei colonne (corrispondenti alle facce di un dado). In ogni casella di questa tabella si trovava una sequenza di note della durata di una battuta.

Le otto battute si ottenevano gettando il dado otto volte e scegliendo le note corrispondenti alla casella individuata dal numero ottenuto in base al lancio dei dadi e dalla battuta in costruzione. Il numero delle possibili composizioni è dato da :

6

8

= 1.679.616


L'abilità del compositore stava nel preparare la tabella in modo che ogni combinazione di note scritta in una casella potesse gradevolmente proseguire con una qualsiasi combinazione di note contenuta in una successiva casella.

Nel nostro secolo, uno tra i primi compositori ad utilizzare tecniche di composizione algoritmica è senza dubbio John Cage.

In John Cage, le tecniche di composizione algoritmica si potrebbero definire IN TEMPO DIFFERITO, in quanto consistevano per lo più di istruzioni date ai performers per selezionare o generare elementi più o meno estesi della composizione come ad esempio i fogli che compongono il brano o per generare dal nulla gli eventi sonori stessi.

Solo più tardi, quando la tecnologia lo ha reso possibile (vedi elaboratori digitali) John Cage, affiancato dal programmatore Andrew Culver ha realizzato delle vere e proprie composizioni algoritmiche che, comunque, forse per abitudine, non erano destinate all'utilizzo in tempo reale.

Erano dei veri e propri generatori di materiale musicale ma non solo; venivano generati anche parametri relativi alla disposizione di sedie e luci, ed altro.

3. La composizione algoritmica

Un utilizzo originale di tecniche compositive di tipo algoritmico si deve al compositore greco Iannis Xenakis. Inizialmente attivo nell'area dell'architettura (fu collaboratore di Le Corbusier), egli elabora un personale utilizzo di processi naturali, teorie fisiche e matematiche (termodinamica, calcolo combinatorio) per creare delle collezioni di eventi sonori individuali che concorrono in modo aleatorio ad un'esplosione fonica globale.

Stimolato dalle originali idee di Dennis Gabor (Gabor, 1947) egli tende a lavorare sia a livello maro che micro-strutturale per 'nuvole' di eventi sonori, trascurando il particolare per interessarsi piuttosto della globalità dell'opera.

Il ruolo dell'elaboratore nella composizione algoritmica è fondamentale in quanto ci permette di passare da un processo che avviene PRIMA della trascrizione degli eventi musicali su spartito o della realizzazione del nastro magnetico, alla generazione degli eventi sonori in tempo reale con una eventuale interazione tra esecutore ed elaboratore.

Il tema dell'interazione tra esecutore ed elaboratore è centrale, in quanto grazie alle nuove tecnologie si è superata la dicotomia nastro-esecutore tipica della musica elettronica dal suo nascere fino ai primi anni Ottanta.

Sicuramente è grazie all'elaboratore personale che la composizione algoritmica ha avuto quello sviluppo che tuttora noi osserviamo; la disponibilità di tale tecnologia anche al di fuori dei grossi centri di elaborazione e la contemporanea disponibilità di sintetizzatori operanti secondo lo standard MIDI, ha consentito anche ai singoli compositori di realizzare sistemi per la composizione algoritmica.

Aver portato il computer fuori dai grossi centri di ricerca, oltre ad una ovvia democratizzazione del mezzo (accessibilità, economicità), ha permesso di superare il tipico connubio nastro esecutore o alle performance per solo nastro o per solo elaboratore.

Comunque, dai grossi centri di ricerca sono venuti gli stimoli maggiori per la realizzazione di sistemi in tempo reale, anche se, storicamente, in quei centri, la ricerca musicale si è sviluppata prevalentemente verso l'aspetto timbrico.

Contemporaneamente a queste ricerche, che avvenivano principalmente nei grossi centri di ricerca, si è visto un fiorire di software musicale per elaboratori personali e principalmente per i computers Apple Macintosh ed Atari serie ST che vanno dai semplici sequencers (Vision, Cubase, Notator) ai più complessi programmi per le gestione di eventi sonori con metodologie algoritmiche (Jam Factory, M!) ai veri e propri ambienti di programmazione, dedicati e non alle applicazioni musicali (Formula , HTMSL, HyperLisp, Max ) agli editors di campionamenti e timbri di sintetizzatori (TurboSynth, Alchemy, Galaxy).

Vogliamo qui ricordare i compositori Larry Polansky e Tod Machover che, seguendo strade e tecnologie diverse, per il primo il linguaggio HMSL e le scale microtonali, per il secondo l'utilizzo di DataGloves e del linguaggio HyperLisp, hanno realizzato veri e propri capolavori del genere.

Un ruolo importantissimo nella ricerca sui sistemi in tempo reale è stato espletato dall'IRCAM, centro parigino di ricerca fondato e diretto per molti anni dal compositore francese Pierre Boulez, autore a sua volta di importanti opere che utilizzano sistemi in tempo reale. All'IRCAM nei primi anni Ottanta Giuseppe di Giugno ha realizzato le sue macchine della serie 4, e sempre all'IRCAM il linguaggio MAX è stato concepito.

Si vuole inoltre ricordare l'importante contributo del compositore e ricercatore Rober Rowe che realizza, per le proprie esigenze compositive un programma per Macintosh denominato "Cypher".

4. Tecniche compositive

Iniziamo qui una breve introduzione alle tecniche compositive che, di norma vengono impiegate nei processi di composizione algoritmica. Il problema principale è quello di generare 'dal nulla' degli eventi musicali.

Abbiamo visto nella parte introduttiva un semplice esempio di processo musicale che dà luogo alla generazione di eventi sonori, in quel caso strutturati nella forma di valzer.

In generale, è possibile implementare ogni meccanismo mentale a sua volta descrivibile mediante una sequenza di operazioni elementari sotto forma di un algoritmo. E' così possibile utilizzare come fonte di partenza delle equazioni matematiche che descrivono dei fenomeni caotici, naturali e non, come pure realizzare alcuni algoritmi che trasformino materiale musicale preesistente applicando le operazioni tipiche della teoria dodecafonica.

Altri formalismi spesso utilizzati sono quelli che fanno uso di catene di Markov come pure ogni altro tipo di equazione differenziale che porti ad una generazione stocastica di eventi, interpretati poi musicalmente.


5. Tecniche interattive

Ciò che rende la Computer Music attuale così stimolante è però la possibilità di interazione tra l'elaboratore e l'esecutore.

Nel caso di performances ci sarà interazione tra il computer ed il performer, nel caso di installazioni ci sarà interazione tra il computer e l'audience. Le tecniche interattive ci permettono quindi di realizzare situazioni sonore sempre vive e diverse a causa della diversità di interazione tra il computer e ciò che egli accetta come input dall'esterno.

Possiamo difatti distinguere tre diverse fasi in un sistema per la Computer Music Interattiva:

La prima è la fase di 'sensing' o di ascolto nella quale si analizzano e memorizzano eventi che hanno origine da 'strumenti' (devices) controllati dai performers o dai sensori che catturano eventi esterni come il movimento dell'audience o un cambiamento della temperatura ambientale.

La seconda fase è quella di 'processing' o di elaborazione, quando le informazioni raccolte durante la prima fase vengolo elaborate dal sistema ed eventualmente trasformate. Ai dati in input possono aggiungersi dati che vengono generati durante questa fase senza nessuna relazione con la prima.

La terza fase e quella di 'response' o di risposta del sistema quando il risultato musicale dell'intero processo viene, mediante schede sonore o sintetizzatori e campionatori MIDI realizzato per l'ascolto sonoro.

Le tre fasi vengono delineate in questo modo perchè corrispondono a diversi tipi di devices da utilizzare: nella prima fase controllers midi come tastiere, pedali, pitch trackers, nella seconda un'unità di elaborazione (personal computer o dispositivo dedicato) nella terza sintetizzatori, campionatori, schede sonore.

Tra i vari dispositivi di input ricordiamo inoltre i DataGloves ed in particolare l'economico Powerglove della Nintendo che permettono al performer di interagire in modo 'virtuale' con il computer rendendo possibile l'elaborazione di informazioni relative alla posizione nello spazio del guanto, alla sua torsione ed alla flessione delle dita.

Inoltre resta aperta la possibilità di collegare al computer, con apposite interfacce realizzate allo scopo, una serie di devices come sensori all'infrarosso e ad ultrasuoni, ricevitori radio, telecamere, etc.

6. Un utilizzo personale

Sin da quando queste tecnologie si sono rese disponibili, il mio interesse verso di esse fu notevole, a partire dalle idee del compositore Mauro Graziani da lui ben esposte nel Bollettino del LIMB.

In "Isole" tale approccio è solo accennato: per la scarsa disponibilità di software/hardware adatto allo scopo avevo deciso di adottare per l'occasione alcuni nastri ed un sequencer.

La disponibilità, nel 1991 di Max mi ha aperto sicuramente nuove strade, portandomi alla realizzazione di FELE, installazione interattiva multimediale dove faccio uso di un sistema interattivo in tempo reale con composizione algoritmica degli eventi.

In "Fele" ho utilizzato per la parte di 'sensing' dei sensori all'infrarosso e alle microonde che rilevando i movimenti dell'audience, rendevano il campo sonoro realizzato continuamente mutevole ed interessante.

Per la parte di processing ho deciso di utilizzare algoritmi che fanno uso di tabelle dove ho memorizzato alcune curve di marea. Da meccanismi di alea controllata riesco a ricavare, in base a queste tabelle, gli eventi sonori, definiti di volta in volta secondo macroparametri identificativi ma, come singoli eventi, sempre diversi.

In "Chaos Logos Kronos", utilizzerò per la parte di sensing una tastiera MIDI con pedali e switch ed un Powerglove che controllerà diversi parametri esecutivi tra cui il cambio di stato del pezzo.

In Sky Waves, invece, ho utilizzato per la parte di sensing dei ricevitori radio ad onde corte che inviano all'elaboratore centrale dati meteo trasmessi da una serie di stazioni meteo sparse in una certa zona.







L'abitudine ti ha portato a non creare di volta in volta risposte originali e pertinenti a un dato momento. Non creando le tue risposte, ma aspettandoti di fatto che esse scaturiscano in modo passivo, passi la tua vita in stato di ipnosi, programmato a rispondere agli stimoli in base ai dati raccolti nei tuoi primissimi anni di vita; Rivoluzione come sconvolgimento di automatismi, abitudini e/o funzioni fisiologiche;


(
    var a,b,c,d;
    a=Pseq([Pseq([0,0,0,0,0],1),Pseq([1,1,1,-1,-1],1)],1);
    b=Pseq([Pseq([1,1,1,1,1],1),Pseq([4,-1,4,-1,-1],1)],1);
    c=Pseq([Pseq([0,0,0,0,0],1),Pseq([0,0,0,0,0],1)],1);
    d=Pseq([Pseq([-1,-1,-1,-1,-1],1),Pseq([2,2,2,1,1],1)],1);
    Pbindef(~bzbass,\instrument,\bz_bass,\scale,Scale.yu,\root,5,\octave,3,
        \degree,Pseq([Pn(a,2),Pn(b,2),Pn(a,2),Pn(b,2),Pn(c,2),Pn(d,2),Pn(c,2),Pn(d,2)],inf),\dur,Pbjorklund2(5,9)/3,\amp,0.4,\rel, 0.3,\pan, -0.3);
)


(
    var a,b,c,d;
    a=Pseq([Pseq([0,0,0,0,0],1),Pseq([1,1,1,-1,-1],1)],1);
    b=Pseq([Pseq([1,1,1,1,1],1),Pseq([4,-1,4,-1,-1],1)],1);
    c=Pseq([Pseq([0,0,0,0,0],1),Pseq([0,0,0,0,0],1)],1);
    d=Pseq([Pseq([-1,-1,-1,-1,-1],1),Pseq([2,2,2,1,1],1)],1);
    //~synth =
    Pbindef(~x, \instrument,\synth,\scale,Scale.yu,\root,5,\octave,Pseq([2,3],inf),
    \degree,Pseq([Pn(a,2),Pn(b,2),Pn(a,2),Pn(b,2),Pn(c,2),Pn(d,2),Pn(c,2),Pn(d,2)],inf),\dur,Pbjorklund2(5,9)/3,\amp,0.3,\rel, 0.3,\pan, 0.3);
)

(
    var a,b,c,d;
    c=Pseq([0,0,0,0,0,0,0,0],1);
    d=Pseq([-1,-1,-1,-1,-1,-1,-1,-1,2,2,2,2,2,2,2,2,-1,-1,-1,-1,-1,-1,-1,-1,2,2,2,2,2,2,2,1],1);
    Pbindef(~bzbass2, \instrument,\bz_bass,\scale,Scale.yu,\root,5,\octave,2,
    \degree,Pseq([Pn(c,4),Pn(d,1)],inf),\dur,Pbjorklund2(8,9)/3,\amp,0.4,\rel,
    0.3,\pan,-0.3);
)
Alcune Strategie potrebbero essere:

Destructive/Analytical Programming : Rimuovi parti di codice esistente per esplorare come ciascuna parte rimossa contribuisce all'intero processo. In generale, la programmazione conversazionale interattiva può essere uno strumento utile per imparare come funziona il codice esistente.

Proxy Refactoring : riorganizza il codice esistente: se si tratta di un singolo Proxy, trasforma i suoi componenti in singoli Proxy, in modo che vengano esposti per modifiche indipendenti. Se il codice è composto da Proxy più piccoli, uniscili in un numero minore, più grandi. A causa di una diversa struttura di dipendenza, in ogni fase, le modifiche alle singole parti generano diversi cambiamenti sonori.

Time-Warping :  Utilizzare un singolo parametro che rappresenti il ​​Tempo (o il conteggio) per parametrizzare vari processi, che possono essere funzioni stateless o routine stateful. Di conseguenza, ogni processo è una funzione diretta del Tempo.

Switchboard Programming : Avvia processi multipli continui, quindi controlla quelli che diventano udibili commutando gli algoritmi.

Parameter Modification: Avvia un processo, quindi modifica ciascuno dei suoi parametri almeno una volta.

Mixed Mode Parameter Tweaking: consente di passare dalla modifica dei parametri alla riscrittura dei processi audio che questi parametri controllano. Lo stesso parametro può assumere un altro significato durante una revisione. Task o input esterni possono continuamente variare i parametri, mentre la loro interconnessione viene riscritta.

Purloined Letters: prendi il codice di un co-musicista e modificalo; diversi Esploratori possono decidere di creare set di variazioni parallele dello stesso codice di partenza.

Topic Exploration: concorda un argomento da esplorare e crea suoni partendo da questo Topic.

Tandem Programming: programmando da terminale, riscrivi un singolo processo audio in rete. In alternativa, più Live Coder possono programmare variazioni di un singolo flusso di input.

Conversational Sonification: Scegli alcune fonti di dati come argomento per la Sonificazione; prova a creare diverse rappresentazioni sonore per la stessa fonte di dati, discutendo il dominio e le implicazioni epistemologiche.

Chat Model: Conversazione terminale, raffinamento e sviluppo iterativo tramite dialogo con il programma.

Ex Nihilo, editor di testo vuoto/canvas: inizia con l'editor vuoto e aggiungi le cose nel più breve tempo possibile. Nelle situazioni Multicoders, inizia con un documento vuoto e scrivi il codice per diluire i suoni dell'intero gruppo.

Isolation Exercises

Typing Practice : (il record mondiale di velocità di digitazione al momento si attesta su una media di 12 caratteri al secondo).

Memory: tenere a mente tutti i processi e i dettagli (specialmente senza alcun promemoria grafico durante la codifica dal vivo) può essere di aiuto negli esercizi di pratica della memoria.

Algorithmic Building Blocks: prendi spunto dai meccanismi linguistici di incapsulamento/ricorsione/iterazione e ciclo condizionale a algoritmi specifici per l'ordinamento o l'organizzazione dei dati.

Mathematical Constructs: potrebbero essere di ispirazione particolari problemi matematici discreti come riff per mostrare l'engagement algoritmico: il problema 3x + 1, la radice quadrata di Babylonian, teorie dei numeri (cioè setacci, sommari Goldbach, algoritmi di numeri primi ecc.), teoria dei gruppi (simmetrie, catene di permutazione).

Computer Music Constructs: sintesi del suono e tecniche di composizione algoritmica, rappresentazioni da accordature non standard (ad esempio Just Intonation to x-limit) per parametrizzazioni timbriche, mappature musicali incluso conoscenza della psicoacustica e della cognizione musicale.

Attention and Awareness: mentre l'automatismo può aiutare per una migliore gestione delle proprie risorse potenziali, allenare la concentrazione può portare enormi benefici. La meditazione e la riflessione possono anche avere un ruolo nella gestione dello stress e dell'ansia da concerto, anche se il sovraccarico di adrenalina tende ad essere ridotto per gli artisti esperti dopo che hanno accumulato ore e ore di performance.

Fonti : Improvising Formalisation Conversational Programming and Live Coding, Julian Rohrhuber and Alberto de Campo; Live Coding Practice, Click Nilson




John Howard Carpenter (Carthage, 16 gennaio 1948) è un regista, sceneggiatore, compositore, musicista, attore, produttore cinematografico e montatore statunitense.

la Freak Track è composta Realtime, generando, valutando e modificando codice;

(
    ~sinfb = Pbind(\instrument,\daf_bass,\scale,Scale.major,\root,2,\octave,[3,4],
    \degree,Pseq([7,1,3,1],inf),\dur,Pbjorklund2(5,8)/4,\amp,0.15,\fb,0.1,\rel,
    0.3);
    ~feedback = {SinOsc.kr(0.1,-1,1).range(0,1.713)};
    ~sinfb.set(\fb,~feedback);
    ~sinfb.play(quant:0.1);
    ~h.play;
    ~k.play;
    ~k2.play;
)

(
    var i=2;
    ~sinfb = Pbind(\instrument,\daf_bass,\scale,Scale.major,\root,2,\octave,[3,4],
    \degree,Pseq([1,Pfunc({i=i+1;if (i==18) {i=17}; i}),1,Pfunc({i=i+1;if (i==18)
    {i=17}; i})],inf),\dur,Pbjorklund2(5,8)/4,\amp,0.15,\fb,0.1,\rel,
    0.3);
    ~feedback = {SinOsc.kr(0.1,-1,1).range(0,1.713)};
    ~sinfb.set(\fb,~feedback);
    ~sinfb.play;
    ~h.play;
    ~k.stop;
    ~k2.stop;
    ~piano.stop(1);
    ~piano2.stop(1);

)

(
    ~sinfb = Pbind(\instrument,\daf_bass,\scale,Scale.major,\root,2,\octave,[3,4],
    \degree,Pseq([1,1,1,1],inf),\dur,Pbjorklund2(5,8)/4,\amp,0.15,\fb,0.1,\rel,
    0.3,\pan, -0.7);
    ~feedback = {SinOsc.kr(0.1,-1,1).range(0,1.713)};
    ~sinfb.set(\fb,~feedback);
    ~sinfb.play(fadeTime:0);
    ~h.play;
    ~chords.play(fadeTime:0);
)


(
    ~piano = Pbind(\instrument,\pianovel,\scale,Scale.major,\root,2,\octave,[5,6],
    \degree,Pseq([Pseq([1,2,3,4,5,6,7,8,9].reverse,3),Pseq([2,3,4,5,6,7,8,9].reverse,1),
    Pseq([1,2,3,4,5,6,7,8,9],4),Pseq([1,1,1,1,1,1,1,1,1],4)], inf),\dur,Pbjorklund2(5,8)/4,\amp,1.5,\rel,
    0.3,\pan, 0.7);
    ~piano.play;
)

(
(
~chords = Pbind(\instrument,\bpfsaw,
\dur,Pwhite(4.5,7.0,inf),
\degree,Pseq([
\D,
\F,
\A,
].chordProg,inf),
\detune, Pexprand(0.0001,0.1,inf),
\cfmin,100,
\cfmax,1500,
\rqmin,Pexprand(0.02,0.15,inf),
\atk,Pwhite(2.0,4.5,inf),
\rel,Pwhite(6.5,10.0,inf),
\ldb,6,
\amp,Pwhite(0.8,2.0),
\out,0)
);
~chords.play;
)



Dal 14 al 17 febbraio si è tenuto un importante Algorave: 84 ore di musica non-stop in quella che è stato probabilmente la più grande manifestazione musicale totalmente online di sempre. Il 14 febbraio è stato il quindicesimo anniversario della nascita di TOPLAP, la comunità internazionale online di musicisti attivi nel live coding, ovvero musicisti che improvvisano musica programmando in tempo reale.

Come racconta un post pubblicato sul sito della community, il 14 febbraio del 2004, meno di una decina di live coder si trovarono ad Amburgo per incontrarsi e conoscersi. Persone provenienti da diverse parti del mondo, pionieri di un metodo di fare musica che ancora molti osteggiano, anche se la community conta ora più di 2000 persone iscritte alla chat collettiva di TOPLAP.

Un movimento che si è gradualmente ampliato, quindi, mantenendo come tratto distintivo l’idea di usare il computer come un vero e proprio strumento musicale da sfruttare in performance improvvisate e live. Il secondo aspetto caratteristico di TOPLAP è nei primi due punti del manifesto: totale apertura della conoscenza musicale, degli strumenti utilizzati e del processo creativo. I live coder di TOPLAP mostrano lo schermo al pubblico in modo che tutti possano vedere come programmano. Un modo per ricostruire la gestualità della performance musicale, che vari esperti individuano come fondamentale per la fruizione della musica. Una messa in mostra che non deve però scadere in ostentazione della tecnica perché, come scritto nel manifesto, “non deve essere necessario per il pubblico capire il codice per apprezzarlo, tanto come non è necessario saper suonare una chitarra per apprezzare la visione di una performance chitarrristica”.

Se la pratica di produrre musica con i computer improvvisando è ben più antica e risale almeno agli anni ’80, il merito di TOPLAP è stato quello di organizzare la sottocultura del live coding e di creare gli strumenti, anche se rudimentali, per mettere in comunicazione gli artisti, arrivando a una definizione piuttosto precisa del movimento.

La rapida crescita di TOPLAP, soprattutto negli ultimi anni, è un fenomeno da non sottovalutare e che, anzi, può offrire ai musicisti una nuova opportunità per rilanciare il significato dei live nell’era delle registrazioni digitali, che ci hanno abituato a una musica che produce opere immutabili nel tempo, che restano sempre uguali, oggi come dieci anni fa.

7 motivi per i quali il live coding crescerà
Il live coding continuerà a evolversi, a crescere, e resterà uno dei più interessanti movimenti musicali di questo secolo. Mentre proviamo a spiegare il perché, è possibile ascoltare in sottofondo qualche video tra quelli che ho selezionato privilegiando la varietà stilistica:Alexandra Cárdenas – street code, Andrew Sorensen – jazz, Ganzfeld – sperimentale, Shelly Knots – sperimentale, Benoît and the Mandelbrots – etnica/sperimentale, Sam Aaron – dance.

1. I Live Coder vengono da due controculture e ne hanno creata una nuova
Il live coding nasce, in breve, dall’incontro di due sottoculture: quella degli hacker e quella della musica elettronica, con frequenti riferimenti alla cultura rave. Nonostante la community sia concorde nel ritenere la cultura rave come una sola delle tante componenti del live coding, il risultato è la perfetta unione delle due: ci sono gli ideali di condivisione della conoscenza e il rifiuto delle gerarchie. L’organizzazione riprende gli strumenti “da nerd” che si pongono in alternativa all’accentramento di internet, mentre le discussioni estetiche rifiutano il pensiero dominante delle accademie (o il presunto tale). «La scena del live coding – scrive Alexandra Cárdenas – è un prototipo di comunità utopica dove chiunque può contribuire, sia che suoni da un giorno che da dieci anni. È una questione politica, che ha a che fare con l’integrazione delle diversità in comunità diverse». Sul sito della International Conference on Live Coding, che raccoglie la componente accademica del movimento, si fa esplicito riferimento al rifiuto di ogni commento verbale o atteggiamento offensivo relativo a “genere, identità ed espressione di genere, orientamento sessuale, disabilità, aspetto fisico, corporatura, razza, religione”. Ci vorrebbe tempo per un’analisi accurata della cultura live coding, data la mole delle testimonianze e delle tracce lasciate in rete durante questi 15 anni, tra mailing-list, chat, wiki, repository e siti web.

2. I Live Coder sono sia popular che accademici
Buona parte della community dei live coder ha un’esperienza nel mondo accademico, spesso in contesti vicini alla ricerca in nuove tecnologie musicali. In un certo senso, tanto più sono elevate le conoscenze scientifiche del live coder, tanto più questi è avvantaggiato nel tentativo di raggiungere nuove soluzioni espressive, perché già oggi il live coding sfrutta tecniche allo stato dell’arte della produzione e delle interfacce musicali. In altre parole, molti live coder si creano autonomamente gli strumenti e le librerie di cui hanno bisogno. Questa vicinanza con l’ambiente musicologico e al contempo con il mondo popular della dance music è decisamente singolare per il periodo storico in cui viviamo, in cui la musica “accademica” è ancora circoscritta a un piccolo gruppo elitario di addetti ai lavori, proprio come nel secolo scorso. Sembra, insomma, che nel mondo del live coding il gusto popolare stia finalmente ritrovando aspetti comuni alla musica più “studiata”.

3. Il Live Coding è live
L’aspetto di improvvisazione del live coding è la sua caratteristica essenziale. Ancora una volta, è in controtendenza rispetto alla cultura dominante, in cui le registrazioni in studio sono il principale mezzo per fruire musica. Ultimamente però, i grandi servizi di streaming stanno stimolando un nuovo modo di percepire la traccia registrata: non andiamo più a comprare un disco al negozio per aggiungerlo alla nostra collezione, ma piuttosto accendiamo lo smartphone e scegliamo una canzone in un catalogo enormemente più grande di quello del vecchio negozio di dischi. Non abbiamo più la necessità di filtrare la musica che ascoltiamo in base alla descrizione, né dobbiamo adeguarci a riascoltare lo stesso disco perché in casa abbiamo un elenco limitato. Non siamo più portati, insomma, a riascoltare in continuazione la stessa musica, ma piuttosto a cercarne di nuova; perde forza il fattore che ha scatenato moltissimi cambiamenti culturali nelle pratiche musicali del Novecento. L’improvvisazione nel live coding, oltre a essere perfettamente coerente con la controcultura live coding, potrebbe rivelarsi l’arma giusta per inserirsi in questo nuovo contesto sociale dove si ascolta una canzone e la si dimentica (quasi) immediatamente.

4. Il Live Coding apre nuovi scenari senza distruggere il passato
Le possibilità tecniche che offre la computer music sono virtualmente infinite. Eppure, forse anche forte dell’esperienza della prima musica elettronica (per esempio quella di Schaeffer e Stockhausen), di fronte a così tante nuove possibilità, il live coding non si è posto in totale rottura con il linguaggio musicale in uso, ma ha deliberatamente scelto di richiamarsi a generi ben definiti. In realtà, i live coder spaziano su tutti i generi musicali esistenti, dalla dance al jazz e al pop fino alla musica più avanguardistica. Anche in questo, in effetti, è innovativo: è un non-genere musicale, che non basa la sua identità sulle strutture semantico-musicali che servono alle case discografiche per settorizzare il mercato, bensì sul mezzo della sua produzione. Se c’è un elemento del linguaggio onnipresente nel live coding è probabilmente la ripetizione di pattern e insieme la casualità nella loro generazione, il che rimanda alla musica minimalista; questo però è dovuto ai limiti delle attuali librerie per la composizione algoritmica e non alla pratica del live coding di per sè. In generale, il live coding si pone nell’ottica di innovare qualcosa di esistente, anziché distruggerlo, e non ha alcuna pretesa di fare qualcosa di migliore rispetto al passato.

5. Il live coding è multimediale
Forse l’aspetto migliore del live coding è la sua multimedialità. L’attività musicale è spesso collegata ad attività di arti visive, sempre live coded. Musicisti e digital artist si uniscono per creare performance a più livelli, a volte – raramente in realtà – con messaggi testuali espliciti proiettati sullo schermo. In alcune occasioni i live coder interagiscono anche con attori, altri musicisti o altro. La performance non è limitata all’uso del computer, che si pone più come una cabina di regia che come vero e proprio strumento.

6. Il Live Coding non ha virtualmente limiti espressivi
Dagli anni ’50 a oggi, la computer music ha creato una grande quantità di strumenti, pratici e teorici. Oggi sappiamo come possiamo produrre suoni di ogni tipo con un computer, simulando timbri di oggetti reali o inventandone di nuovi. Sappiamo come modificare i parametri di esecuzioni musicali per ottenere espressività ed emotività differenti e sappiamo anche come creare automaticamente musica in modo simile all’uomo. Ok, quest’ultimo punto è vero solo in parte, ma è abbastanza comune lasciare che il computer produca autonomamente musica che rispetti particolari vincoli, come la musica che scrive l’uomo. Quello che voglio dire è che l’implementazione di algoritmi simili in un sistema per il live coding non è impensabile, sebbene difficile per una community piccola e iper-frammentata come quella di TOPLAP.

7. Il Live Coding è ancora un neonato
Nonostante sia nata 15 anni fa e sebbene sia cresciuta enormemente, TOPLAP è ancora piuttosto piccola. Le tecnologie musicali sono in costante crescita ma la community si è finora concentrata sulle possibili interfacce, sperimentando linguaggi di programmazione visuali, ibridi e testuali, soffermandosi in particolare sui linguaggi di programmazione funzionali. Personalmente, per quel poco che ho provato, credo che il live coding possa fare grandi salti di qualità implementando altre tecnologie (come quelle citate al punto precedente), che prescindono dall’interfaccia usata. I metodi esistenti nella computer music sono utilizzabili nei contesti live coding per via del fatto che non è necessario lo sviluppo di un’intera interfaccia grafica e il mantenimento di compatibilità tra componenti complessi come invece nei software commerciali per la produzione musicale. Un esempio di progetto di ricerca che vuole portare questo genere di innovazioni in contesti musicali real-time è MIMIC.

Ciò che è mancato finora è stata una grande mente musicale che sapesse fare un grande uso delle tecnologie e che fosse in grado di presentarle al mondo come un nuovo metodo capace di interagire con altri soggetti espressivi (musicisti, attori, performer, etc.), senza porre il live coding come alternativa agli approcci tradizionali. Senza voler offendere gli attuali live coder, nella mia ricerca ho sentito solo una manciata performance che raggiungevano alti livelli artistici, e non a causa della difficoltà tecnica – che verrà comunque lentamente abbattuta. Insomma, musicisti, fatevi avanti perché qui c’è terreno per voi! Fonte : Link
È difficile scrivere una definizione semplice per qualcosa così vario come l'hacking; ha a che fare con la giocosità, l'intelligenza e l'esplorazione. Hacking significa esplorare i limiti di ciò che è possibile, con uno spirito di giocosa intelligenza. Le attività che mostrano intelligenza giocosa hanno un "hack value";

Entrare in un computer è una cosa diversa.  Preferisco chiamare questa cosa "cracking", perché quando dico che sono un "hacker", non significa che mi diverto a violare la sicurezza dei sistemi informatici e voglio che le persone lo capiscano. Basta con questo stereotipo dell'hacker drogato, depresso e dissociato, che penetra sistemi informatici e spia profili facebook, cagatoci in testa dal Mainstrem con i vari Mr.Robot (per i rintronati che continuano ad associarmi a Mr.Robot); l'hacker è una persona lucida, curiosa, giocosa, creativa e virtuosa;

Gli hacker fanno quello che fanno perché lo amano. Non lo fanno per soldi, ci sono davvero dentro. Qualunque sia la loro passione, programmazione, poesia, arte, composizione videomusicale, elettronica, live coding, musica, imparano il più possibile, creano, rielaborano, migliorano, e poi condividono con il mondo.

"L'hacker è una persona che trae piacere dalla sfida intellettuale di scavalcare o aggirare creativamente dei limiti;"

"gli hacker credono che gli insegnamenti fondamentali sui sistemi – e sul mondo – possano essere appresi smontando le cose, analizzandone il funzionamento e utilizzando la conoscenza per creare cose nuove e più interessanti; sono artisti, scienziati matti in continua esplorazione, pronti a mettere in discussione qualsiasi cosa, senza paura;"

What are hackers from bz akira santjago on Vimeo.

"Vagabondare per il labirinto di laboratori e magazzini, in cerca dei misteri della commutazione telefonica nelle stanze piene di apparecchiature, seguendo sentieri di fili o di relè nei condotti sotterranei dell'aria condizionata... per qualcuno, era un comportamento normale, e non c'era bisogno di giustificare l'impulso di aprire una porta senza permesso, se dietro quella porta si fosse percepito un rumore sospetto irresistibilmente attraente. E allora, se non ci fosse stato nessuno a proibire fisicamente l'accesso a qualunque cosa stesse provocando quel rumore affascinante, a impedire di toccare la macchina, ecco che avreste cominciato a sfiorare gli interruttori e a osservare le reazioni, a girare una vite, sganciare un pannello, rimuovere qualche diodo e provare qualche connessione. Peter Samson e i suoi amici erano cresciuti in una particolare relazione col mondo, all'interno della quale le cose acquisivano significato solo se si scopriva come funzionavano. E come avrebbe potuto capirlo se non mettendoci le mani sopra?" Il Tech Model RailRoad Club, Hackers, Steven Levy;

"L'hacker è una persona che trae piacere dalla sfida intellettuale di scavalcare o aggirare creativamente dei limiti;"

"gli hacker credono che gli insegnamenti fondamentali sui sistemi – e sul mondo – possano essere appresi smontando le cose, analizzandone il funzionamento e utilizzando la conoscenza per creare cose nuove e più interessanti;"

"produciamo nuovi concetti, nuove percezioni e nuove sensazioni, che hackeriamo da dati vecchi e/o non ancora elaborati. Qualsiasi sia il codice che hackeriamo, sia esso linguaggio di programmazione, lingua poetica, matematica o musica, curve o colori, noi siamo coloro che astraggono i mondi nuovi. Qualsiasi sia il modo in cui scegliamo di rappresentarci - come ricercatori o autori, artisti o biologi, chimici o musicisti, filosofi o programmatori - ognuna di queste soggettività è un frammento di una classe che diviene, a poco a poco, consapevole di sé in quanto tale."

Stallman : "It is hard to write a simple definition of something as varied as hacking, but I think what these activities have in common is playfulness, cleverness, and exploration. Thus, hacking means exploring the limits of what is possible, in a spirit of playful cleverness. Activities that display playful cleverness have hack value."