"Ai selvaggi, ai bizzarri, ai meravigliosi.

A coloro che cavalcano le onde del mare e perdono di vista la riva.
A chi si libera delle regole, dell'etichetta, delle catene e parte alla ricerca della verità del proprio cuore.
A tutti i pezzi del puzzle scombinati, che non vengono invitati a partecipare al gioco della società, che restano indietro per imparare il proprio modo di volare, che nella sacra solitudine abbelliscono i cieli con le ali piene di libertà e la grazia del loro destino nato dall'anima incendiata.
Per i rari esseri ultraterreni che percorrono la strada meno affollata, che affrontano l'avventura con scopo e passione.
Ai ribelli, agli originali, alla solitudine che alimenta il loro spirito.
A chi non si conforma, nè torna indietro e non si fa da parte.
Per quelli che non sono nati per adattarsi ma per camminare gloriosamente altrove.
Per la tribù dei disturbatori che pensano fuori dagli schemi e sognano sui bordi dell'infinito.
A coloro che danzano anche se non conoscono i passi, che cantano anche se sono stonati e fuori sintonia.
Ai risvegliati il cui scopo è alimentare la propria anima e non morire di fame, il cui mantra è il battito del tamburo del proprio cuore e le infinite possibilità che scintillano all'orizzonte.
A quelli che hanno il coraggio di essere aperti, d'amare e vivere.
Ai maghi, ai mistici, agli incompresi.
Ai saggi che si muovono tra l'ombra e la luce.
A coloro che ululano alla Luna Piena e danzano nudi nei ruscelli.
A coloro che seguono la bussola dei loro cuori e credono nella stella polare del loro spirito.
Per chi ha il coraggio di cadere, di rompersi e frantumarsi.
Ai cacciatori di tempeste , a voi anime antiche che camminate su questa Terra.
Allo spirito selvaggio, queste parole sono per te." Anonimo

non è una mascherina, è un bavaglio da banditi;







“Signori io non vi ho mentito, avete visto coi vostri stessi occhi i mostri viventi del nostro serraglio. Voi ne avete riso o provato ribrezzo, tuttavia se lo avesse voluto la natura beffarda, anche voi potreste essere come loro. Non hanno chiesto loro di venire a questo mondo, eppure sono qui tra noi. Si riconoscono in un codice che nessuno ha mai scritto. Offendetene uno, e si sentiranno offesi tutti quanti”.

(Freaks – Tod Browning, 1932)

La vendetta dei Freak venuti dallo Spazio Esterno sarà atroce; il confine tra normale e anormale è labile: ma il vero mostro, è colui e colei che si professa sano e che si è perfettamente adattato alla società patologica in cui viviamo;



Esempio di Live Coding o Live Composition from scratch o quasi :

il REBOP, oltre ad essere un approccio esistenziale alla vita, è un sistema che ho creato, utilizzando il linguaggio SuperCollider, per la composizione Live e per il Live Coding; utilizzo il sistema REBOP operando a cuore aperto sulla composizione, che non smette mai di suonare e che reagisce ai cambiamenti nel codice, in tempo reale, man mano che lo modifico e/o ne creo di nuovo; scrivi codice, generi musica, cambi il codice, cambia la musica e cambiano i suoni; pian piano nasce una nuova composizione; dietro ogni lavoro videomusicale di REBOP Coding (che ora appunto include anche il Live MashUp con la composizione video Realtime, in tempo reale) ci sono ore e ore di Live Composition o Realtime Composition con il sistema REBOP; è esplorare suoni e melodie per arrivare a una nuova composizione a cui associo generalmente immagini e concetti per esprimere nuove idee; poi attraverso il Live Coding, che nel mio caso si chiama REBOP Coding, espongo le mie creazioni, dal vivo, durante le performance, in tempo reale;





"Per soffocare in anticipo ogni rivolta, non bisogna essere violenti. I metodi del genere di Hitler sono superati. Basta creare un condizionamento collettivo così potente che l'idea stessa di rivolta non verrà nemmeno più alla mente degli uomini.

L' ideale sarebbe quello di formattare gli individui fin dalla nascita limitando le loro abilità biologiche innate.

In secondo luogo, si continuerebbe il condizionamento riducendo drasticamente l'istruzione, per riportarla ad una forma di inserimento professionale. Un individuo ignorante ha solo un orizzonte di pensiero limitato e più il suo pensiero è limitato a preoccupazioni mediocri, meno può rivoltarsi.

Bisogna fare in modo che l'accesso al sapere diventi sempre più difficile e elitario. Il divario tra il popolo e la scienza, che l'informazione destinata al grande pubblico sia anestetizzata da qualsiasi contenuto sovversivo.




Il Babau è nel folklore italiano e di altre regioni europee, un mostro immaginario dalle caratteristiche non ben definite che viene tradizionalmente evocato per spaventare i bambini ("se non la smetti chiamo il Babau!").

"a) si dichiara emergenza globale un contagio la cui letalità è assolutamente in linea con le influenze stagionali. Si gonfiano ovunque i numeri dei decessi conteggiando i morti per qualsiasi altra motivazione, dall'infarto al tumore, come morti per covid19." Stefano Re






Articolo 21

Tutti hanno diritto di manifestare liberamente il proprio pensiero con la parola, lo scritto e ogni altro mezzo di diffusione. La stampa non può essere soggetta ad autorizzazioni o censure.

Articolo 32

Nessuno può essere obbligato a un determinato trattamento sanitario se non per disposizione di legge. La legge NON PUÒ IN NESSUN CASO violare i limiti imposti dal rispetto della persona umana.






Quando un certo Errore comincia a essere commesso da un bel po' di persone, diviene un Errore Sociale, un Errore di Sistema; indotto da chi ci vuole docili e manipolabili, divisi in noi stessi, alienati e disconnessi dall'Universo;





affermare che non si è interessati al diritto alla privacy perché non si ha nulla da nascondere è come dire che non si è interessati alla libertà di parola perché non si ha nulla da dire.

e cosi, chi rinuncia alla libertà per raggiungere la sicurezza, non merita né la libertà né la sicurezza.


la caratteristica dell'improvvisazione nel Live Coding contraddice molte delle ipotesi fondamentali su cui si basano le leggi sul Copyright; la caratteristica di fissità dell'opera d'arte, nel Live Coding non è presente, essendo ogni opera parziale e diversa in ogni performance; questa contraddizione può essere utilizzata per resistere alle gabbie legali ed economiche che oggi cercano in ogni modo di imprigionare i beni culturali digitali e l'arte digitale in generale; il Live Coding può sviluppare una posizione critica e forte contro gli squilibri e le ingiustizie del regime della proprietà intellettuale e contro ogni nozione obsoleta di proprietà culturale esclusiva; integrando le emergenti pratiche artistiche con le critiche alla proprietà intellettuale, questa forma di arte e resistenza può fare molto per opporsi a queste leggi e per proporre interessanti alternative;





a parte la crisi sanitaria evidente, anche negli scorsi anni, dovuta a decenni di politiche neoliberiste votate dai soliti arroganti, e a parte l'atteggiamento di alcune persone che, in preda alla paura e al panico (indotto dai media), chiedono a gran voce, ulteriori smantellamenti dello Stato di Diritto (che si spera siano relativi solo a questo Stato di Eccezione), come il ritorno al fascismo e l'uso dell'esercito e dei mitra per risolvere la situazione; la cosa più aberrante di questa vicenda, è, a mio parere, l'impossibilità di poter anche solo "iniziare" qualsiasi tipo di ragionamento che in qualche modo si discosti dalla narrazione imposta e comunemente accettata, a meno che non si voglia essere aggrediti verbalmente con violenza o in altri casi denunciati; a prescindere dalla questione sanitario-epidemiologica, il punto è l'introduzione dello psicoreato, il reato di opinione; allora ho immaginato.. e se i Panda fossero come pensieri? il pensiero in Quarantena permanente;

"Il tentativo è quello di convincere l’opinione pubblica, sapientemente manipolata da un clima di isteria, ad accettare l'introduzione del reato di opinione: una forma di psicoreato orwelliano secondo cui verrebbe punita non più l’azione ma la libertà di espressione e ancora prima di pensiero. Non si potrà più pensare male: i propri pensieri e le proprie emozioni dovranno allinearsi al pensiero comune, globale, globalizzato. Sarà semplicemente vietato pensare fuori dal coro: la mente di tutti noi sarà definitivamente sotto controllo. Apparentemente, per una buona causa." (Enrica Perucchietti)

mi chiedo, quando ci sarà l'introduzione del reato di ironia?





Viene finalmente svelato l’intento oscuro della battaglia contro le Fake News: reprimere il dissenso e censurare l’informazione alternativa, impedendo alle persone non solo di esprimersi, ma persino di pensare. Si sta cercando di introdurre il reato d'opinione e di censurare l'informazione indipendente. La battaglia contro le Fake News intende reprimere il dissenso per introdurre lo psicoreato; chi ha diffuso, però, in passato, Fake News per creare casus belli e fare le guerre e chi diffonde ora, come un untore, false notizie per contagiare la massa con il virus della paura e del panico?





Peperu Revolution - REBOP Coding by Mr. Rebop aka Bz Akira Santjago aka Radical Ed;




Deve farti davvero schifo la tua vita, se perdi tempo a giudicare la mia. (Anonimo)

L’amore guarda attraverso un telescopio; l’invidia, attraverso un microscopio. (Josh Billings)

Il cane chiuso nel recinto abbaia a quello che scorrazza liberamente. (Marty Rubin)

gli "Gnaw-Gnaw" Puppet rosicano, perchè glie rode il culo;



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.








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."




Il genere umano si trova improvvisamente attaccato da pomodori senzienti, decisi a conquistare il mondo. In seguito al fallimento di tutti i tentativi di debellare la minaccia da parte del governo statunitense, il detective Mason Dixon (David Miller) scoprirà che i pomodori non sopportano una canzone, dal titolo Amore in pubertà, in grado di indebolirli e metterli in fuga, e in virtù di ciò riuscirà a porre fine all'invasione.

var melody="a3+c4+f4   ,4-a3,c4+e4+g4   ,4-c4";
w.noteOff(0, m[\a3], 100);
w.noteOn(0, m[\a3], 100);
durno=z.value(melody);
notes=b.value(melody);
16.wait;
r[\bz_bass].value(b.value("a3 ,a4 ,a3 ,3-a3 ,2-a4,2-a3")-24,z.value("a3 ,a4 ,a3 ,3-a3 ,2-a4,2-a3")*0.5,0.5);
16.wait;
r[\pianovel].value(notes,durno*0.5, 0.7);

r[\pianovel].value(notes,durno*0.5, 0.7);
r[\bz_bass].value(b.value("a3 ,a4 ,a3 ,3-a3 ,2-a4,2-a3")-24,z.value("a3 ,a4 ,a3 ,3-a3 ,2-a4,2-a3")*0.5,0.5);
r[\bz_slap].value(b.value("a3 ,a3 ,off ,3-a3 ,2-a3,2-a3")-36,z.value("a3 ,a3 ,off ,3-a3 ,2-a3,2-a3")*0.5,0.1);
~bzbass[5] = \filter -> {arg sig; (3111.33*sig.distort/(1+(2231.23*sig.abs))).distort*0.15};

r[\bz_bass].value(b.value("f2 ,f3 ,f2 ,3-f2 ,2-f1,2-f2"),z.value("f2 ,f3 ,f2 ,3-f2 ,2-f1,2-f2")*0.5,0.5);
r[\bz_slap].value(b.value("f2 ,f3 ,off ,3-f2 ,2-f1,2-f2")-12,z.value("f2 ,f3 ,off ,3-f2 ,2-f1,2-f2")*0.5,0.1);





San Fernando, California. Due becchini stanno sotterrando la moglie di un uomo anziano quando, ad un certo punto sentono un rumore strano. Decidono così di lasciare il cimitero, ma vengono uccisi dalla donna defunta che stavano sotterrando, ora risorta. Intanto Jeff Trent e Danny, due piloti aerei in servizio, avvistano un disco volante nei cieli.

Nelle settimane successive, diversi titoli dei giornali segnalano continuamente avvistamenti di UFO. L'esercito, sotto il comando del colonnello Thomas Edwards, attacca le astronavi in cielo. I militari riescono a scacciare via gli alieni che tornano alla loro "Space Station 7" per rigenerarsi. Qui il comandante Eros informa il sovrano alieno che non sono riusciti a mettersi in contatto con i governi terrestri. Il sovrano decide quindi di attuare il "Piano 9": tramite onde elettromagnetiche riporteranno in vita i morti.

melody="c3+e3+g3 ,c2 ,e2 ,a2+c2+e2 ,c2 ,e2 ,a3+c3+e3 ,c2+e2,a3,";
melody = melody ++ "c3+e3+g3 ,c2 ,e2 ,a2+c2+e2 ,c2 ,a4 ,a4 ,a4,a4";
durno=z.value(melody);
notes=b.value(melody);
r[\pianovel].value(notes,durno*0.5, 0.5);
r[\bz_bass].value(b.value("c2 ,c2 ,c2 ,c2 ,c2 ,c2 ,g2 ,g2,a2"),z.value("c2 ,c2 ,c2 ,c2 ,c2 ,c2 ,g2 ,g2,a2")*0.5,0.5);
r[\bz_slap].value(b.value("c2 ,c2 ,off ,c2 ,c2 ,off ,g1 ,g1,g1")-12,z.value("c2 ,c2 ,off ,c2 ,c2 ,off ,g1 ,g1,g1")*0.5,0.2);

melody="c2 ,c2 ,c2 ,c2 ,c2 ,c2 ,g2 ,g2,a2";
durno=z.value(melody);
notes=Pseries(m[\c4], -2, 8).asArray.postln;
r[\pianovel].value(notes,durno*0.5, 0.5);
r[\bz_bass].value(notes-12,durno*0.5,0.6);




Durante il suo girovagare il Blob penetra in un cineteatro, dove raggiunge la cabina delle proiezioni e ne fagocita il giovane addetto. I numerosi spettatori fuggono all'impazzata verso l'esterno del locale, disperdendosi disordinatamente per le strade della cittadina.

r[\bz_bass].value(b.value("f2 ,d2 ,f3 ,off ,d2 ,d2 ,off ,d2 "),z.value("f2 ,d2 ,f3 ,off ,d2 ,d2 ,off ,d2 ")*0.5,0.5);

~midiPad = Pbind(   \type, \midi, \midicmd, \noteOn, \midiout, w, \chan, 1, \scale,Scale.minor, \midinote, Pseq([m[\f4]],1) , \octave, 4, \dur, 12, \legato, 0.4);
16.wait;
~midiPad = Pbind(   \type, \midi, \midicmd, \noteOn, \midiout, w, \chan, 1, \scale,Scale.minor, \midinote, Pseq([m[\c4]],1) , \octave, 4, \dur, 12, \legato, 0.4);
16.wait;
r[\pianovel].value(b.value("f4 ,e4 ,ds4 ,d4 ,cs4 ,c4 ,b4 ,as4 ,f4 ,e4 ,ds4 ,d4 ,cs4 ,c4 ,b4 ,as4 ,f4 ,e4 ,ds4 ,d4 ,cs4 ,c4 ,b3 ,as3 ,a3 ,gs3 ,g3 ,fs3 ,f3 ,e3 ,ds3 ,d3 "),z.value("f4 ,e4 ,ds4 ,d4 ,cs4 ,c4 ,b4 ,as4 ,f4 ,e4 ,ds4 ,d4 ,cs4 ,c4 ,b4 ,as4 ,f4 ,e4 ,ds4 ,d4 ,cs4 ,c4 ,b3 ,as3 ,a3 ,gs3 ,g3 ,fs3 ,f3 ,e3 ,ds3 ,d3 ")*0.5, 0.8);
32.wait;
r[\pianovel].value(b.value("f4 ,e4 ,ds4 ,d4 ,cs4 ,c4 ,b4 ,as4 ").pyramid,z.value("f4 ,e4 ,ds4 ,d4 ,cs4 ,c4 ,b4 ,as4 ")*0.5, 0.8);
r[\strumento].value(\noisy,b.value("f2 ,d2 ,f3 ,off ,d2 ,d2 ,off ,d2 ")+12,z.value("f2 ,d2 ,f3 ,off ,d2 ,d2 ,off ,d2 ")*0.5, 0.5);
32.wait;



link ShaderToy : https://www.shadertoy.com/view/WddGWN

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

 
    float x = fragCoord.x;
    float y2 = fragCoord.y;
 
    vec2 p = fragCoord.xy / iResolution.yy;
    vec2 q = fragCoord.xy / iResolution.yy;
 
    vec2 translate = vec2(cos(iTime),sin(iTime));
    vec2 translate2 = vec2(sin(iTime),cos(iTime));
 
 
    if (sin(iTime)>0.)
    p += translate*1.35*fract(sin(iTime)*1.0);
    else
    p += translate2*1.35*fract(sin(iTime)*1.0);
 
    vec2 pix = fragCoord.xy*p;
    vec3 col = texture(iChannel0,floor(pix/17.0)*8.0/iResolution.xy).rgb;
    vec3 col2 = texture(iChannel2, floor(pix/8.0)*8.0/iResolution.xy).rgb;
    vec3 col3 = texture(iChannel1, floor(pix/8.0)*8.0/iResolution.xy).rgb;

    fragColor = vec4(0.1+col3.x+col.x*tan(iTime)+col2.x*1.8,0.3+col3.y+col2.y+col.y*cos(iTime),0.3+col3.z+col.z*sin(iTime)+col2.z,1);
 
}




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.






la Freak Track è improvvisata e registrata Live; è un piccolo estratto di un Live Coding REBOP di 2 ore;

il REBOP ha a che fare con la giocosità, l'intelligenza e l'esplorazione. Significa esplorare i limiti di ciò che è possibile, con uno spirito di giocosa intelligenza;

SynthDef(\atari2600, {|out= 0, gate= 1, tone0= 5, tone1= 8, freq0= 10, freq1= 20, rate= 1, amp= 1, pan= 0|
    var e, z;
    e= EnvGen.kr(Env.asr(0.01, amp, 0.05), gate, doneAction:2);
    z= Atari2600.ar(tone0, tone1, freq0, freq1, 15, 15, rate);
    Out.ar(out, Pan2.ar(z*e, pan));
}).add;

(

var melody="b3 ,b2 ,b1 ,b0 ,b1,b2,b3 ,b1,b1,b0 ";

var durno=z.value(melody);
var snotes=i.value(melody);
var notes=b.value(snotes);

r[\pianovel].value(notes,durno*0.5, 1);

~k.stop(5);

)(

var rhythm="mm ,mm ,mm ,mm ,mm,mm,mm ,mm,mm,mm ";
var durno=z.value(rhythm);

var notes=Pwhite(m[\f3], m[\f4]).asArray.postln;
r[\pianovel].value(notes,durno*0.5,1);
)
~bzbass[5] = \filter -> {arg sig; (3111.33*sig.distort/(1+(2231.23*sig.abs))).distort*0.15}; //






Questo è solo uno dei tanti possibili Manifesti REBOP o un Non-Manifesto;

Il termine REBOP (successivamente usato nella forma BEBOP) è un'onomatopea che imita una brevissima frase di due note usata talvolta come "segnale" per terminare un brano jazz;

Il REBOP incoraggia la creatività per se stessi piuttosto che per il consumo culturale;

Il REBOP crea sempre composizioni parziali, quindi, mai complete;

il REBOP non è un fine ma un mezzo;

i veri Rebopper in genere bevono solo pompelmo (a parte nelle notti di luna piena);

La musica non può essere prigioniera dell'attrezzatura musicale. La tecnologia ha sempre offerto alla musica nuovi mezzi ampliando così le possibilità di espressione dell'artista e contribuendo all'evoluzione del linguaggio musicale;





 "Il Live Coding è una pratica di improvvisazione in cui l’esecuzione strumentale - per usare un'espressione curiosa nel contesto ma non erronea - consiste nello scrivere codice dal vivo per controllare i processi di generazione e elaborazione del suono. Il Live Coding, ormai possibile anche in altri ambienti software, nasce proprio con SuperCollider;" Andrea Valle

la Freak Track è registrata Live, è un piccolo estratto di un Live Coding REBOP di 2 ore in treno;

(
~sinfb = Pbind(\instrument,\sinfb,\scale,Scale.chromatic(\et12),
    \degree,Pseq((0..12).pyramid.mirror,inf),\octave,Pseq([5],inf),\dur,0.125/2,\amp,0.3,\fb,
0.8,\rel,0.1);
~sinfb.play;
)


(
var bnotes=m.atAll(#[c1,c2,c2,c1,off,g1,e1,c1]).asArray;
//var bnotes=m.atAll(#[c2,b1,a1,g2,f1,e1,d1,c1].reverse).asArray;

a=Pseq(bnotes,1);

~ba = Pbind(\instrument,\bplay,\buf,d["b"][6],\dur,0.5,\amp,Pseq(((bnotes / 127) > 0).asInteger,inf)*0.2, \pan,-0.3,\rate,Pn(a.midicps/65.40639132515));
~ba.play;


~x=Pbind(\type, \rest, \beat, Pfuncn({ p.clock.beats.postln }, 3), \dur, 1);
)

(
var f;
var bnotes=m.atAll(#[c3,b2,a2,g2,f2,e2,d2,c2].reverse).asArray;

f=Pseq(bnotes,1);


~pianoChop = Pbind(\instrument,\pianovel,\dur,0.25,\atk,0,\sus,0.04,\rel,0,\pos,Pexprand(0.2,0.5),\rate,2,\midinote, Pseq([f],inf)*2,\dur,1/2,\amp,Pseq(((bnotes / 127) > 0).asInteger,inf)*1.3,\pan,0.1);

~pianoChop.play;
//~pianoChop.stop;

~x=Pbind(\type, \rest, \beat, Pfuncn({ p.clock.beats.postln }, 3), \dur, 1);
)





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, oltretutto nella maggiorparte dei casi 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, 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;

(
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;



// 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);
}


#define PERIOD 2.
#define REPETITIONS 2

const float PI = 3.1415926535;


float box(in vec2 _st, in vec2 _size){
    _size = vec2(0.5) - _size*0.5;
    vec2 uv = smoothstep(_size,
                        _size+vec2(0.001),
                        _st);
    uv *= smoothstep(_size,
                    _size+vec2(0.001),
                    vec2(1.0)-_st);
    return uv.x*uv.y;
}

float cross2(in vec2 _st, float _size){
    return  box(_st, vec2(_size,_size/4.)) +
            box(_st, vec2(_size/4.,_size));
}

vec3 shadeBlob(vec2 p, float index, float value, float scale)
{
    float screenRatio = iResolution.x / iResolution.y;
    vec2 pc = vec2(0.1 + (screenRatio - 0.2) * value, index);
 
    float d = length(pc - p) / 0.015*scale/(1.37+abs(sin(iTime)));
 
    return vec3(3. * vec3(0.5, 0.5, 0.7) / (max(d * d, 1.)));
}

float step_interp(float x) {
    return step(0.5, x);
}

float linear_interp(float x) {
    float c = clamp(x, 0., 1.);
 
    return c;
}

float cosine_interp(float x) {
    float c = clamp(x, 0., 1.);
 
    return 0.5 * (1. - cos(PI * c));
}

float smoothstep_interp(float x) {
//    return smoothstep(0., 1., x);

    float c = clamp(x, 0., 1.);
 
    return c * c * (3. - 2. * c);
}

float quintic_interp(float x) {
    float c = clamp(x, 0., 1.);
 
    return c * c * c * ((6. * c - 15.) * c + 10.);
}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 p = fragCoord.xy / iResolution.yy;
    vec2 q = fragCoord.xy / iResolution.xy;
 
    int tx = int(p.x*128.0);
    int ty = int(p.y*128.0);
 
    // per lo Spectrum Audio
    float wave = texelFetch( iChannel0, ivec2(ty,1), 0 ).x;
    vec3 spec = vec3(wave/0.5);
 
 
    // per lo Spectrum Audio
    //vec4 spec = vec4(0.1,0.1,0.1,0.1);
 
    vec2 translate = vec2(cos(iTime),sin(iTime));
    vec2 translate2 = vec2(sin(iTime),cos(iTime));
    //p += translate*0.35*sin(iTime);
    q += translate2*1.35*sin(iTime);
 
    float t = abs(2. * fract(iTime / PERIOD) - 1.);
 
 
    // Background pattern
 
 
 
    vec3 col = vec3(0.0);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1, spec.x/0.4);
    col += shadeBlob(p, 0.4, linear_interp(t)*0.1, spec.x/0.4);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1, spec.x/0.4 );
    col += shadeBlob(p, 0.6, smoothstep_interp(t)*0.1, spec.x/0.4);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1, spec.x/0.4);
 
    //col += shadeBlob(p, 0.3, smoothstep_interp(t)*spec.x+0.2, 0.1/0.1);
    col += shadeBlob(p, 0.4, linear_interp(t)*0.1+0.05, spec.x/0.4);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.05, spec.x/0.4);
    //col += shadeBlob(p, 0.6, smoothstep_interp(t)*spec.z+0.2, 0.1/0.1);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.05, spec.x/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.1, spec.x/0.4);
    //col += shadeBlob(p, 0.4, linear_interp(t)*spec.y+0.1, 0.1/0.1);
    //col += shadeBlob(p, 0.5, cosine_interp(t)*spec.z+0.1, 0.1/0.1);
    col += shadeBlob(p, 0.6, smoothstep_interp(t)*0.1+0.1, spec.x/0.4);
    //col += shadeBlob(p, 0.7, quintic_interp(t)*spec.z+0.1, 0.1/0.1);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.2, spec.y/0.4);
    col += shadeBlob(p, 0.4, linear_interp(t)*0.1+0.2, spec.y/0.4);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.2, spec.y/0.4);
    col += shadeBlob(p, 0.6, smoothstep_interp(t)*0.1+0.2, spec.y/0.4);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.2, spec.y/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.25, spec.x/0.4);
    //col += shadeBlob(p, 0.4, linear_interp(t)*spec.y+0.25, 0.1/0.1);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.25, spec.x/0.4);
    //col += shadeBlob(p, 0.6, smoothstep_interp(t)*spec.z+0.25, 0.1/0.1);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.25, spec.x/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.3, spec.x/0.4);
    //col += shadeBlob(p, 0.4, linear_interp(t)*spec.y+0.25, 0.1/0.1);
    //col += shadeBlob(p, 0.5, cosine_interp(t)*spec.z+0.25, 0.1/0.1);
    //col += shadeBlob(p, 0.6, smoothstep_interp(t)*spec.z+0.25, 0.1/0.1);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.3, spec.x/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.4, spec.x/0.4);
    col += shadeBlob(p, 0.4, linear_interp(t)*0.1+0.4, spec.x/0.4);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.4, spec.x/0.4);
    col += shadeBlob(p, 0.6, smoothstep_interp(t)*0.1+0.4, spec.x/0.4);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.4, spec.x/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.45, spec.x/0.4);
    //col += shadeBlob(p, 0.4, linear_interp(t)*spec.y+0.45, 0.1/0.1);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.45, spec.x/0.4);
    //col += shadeBlob(p, 0.6, smoothstep_interp(t)*spec.z+0.45, 0.1/0.1);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.45, spec.x/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.5, spec.x/0.4);
    col += shadeBlob(p, 0.4, linear_interp(t)*0.1+0.5, spec.x/0.4);
    //col += shadeBlob(p, 0.5, cosine_interp(t)*spec.z+0.5, 0.1/0.1);
    col += shadeBlob(p, 0.6, smoothstep_interp(t)*0.1+0.5, spec.x/0.4);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.5, spec.x/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.6, spec.x/0.4);
    col += shadeBlob(p, 0.4, linear_interp(t)*0.1+0.6, spec.x/0.4);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.6, spec.x/0.4);
    col += shadeBlob(p, 0.6, smoothstep_interp(t)*0.1+0.6, spec.x/0.4);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.6, spec.x/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.65, spec.x/0.4);
    //col += shadeBlob(p, 0.4, linear_interp(t)*spec.y+0.65, 0.1/0.1);
    //col += shadeBlob(p, 0.5, cosine_interp(t)*spec.z+0.65, 0.1/0.1);
    //col += shadeBlob(p, 0.6, smoothstep_interp(t)*spec.z+0.65, 0.1/0.1);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.65, spec.x/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.7, spec.x/0.4);
    col += shadeBlob(p, 0.4, linear_interp(t)*0.1+0.7, spec.x/0.4);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.7, spec.x/0.4);
    col += shadeBlob(p, 0.6, smoothstep_interp(t)*0.1+0.7, spec.x/0.4);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.7, spec.x/0.4);
 
    col += shadeBlob(p, 0.3, smoothstep_interp(t)*0.1+0.8, spec.x/0.4);
    col += shadeBlob(p, 0.4, linear_interp(t)*0.1+0.8, spec.x/0.4);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.8, spec.x/0.4);
    col += shadeBlob(p, 0.6, smoothstep_interp(t)*0.1+0.8, spec.x/0.4);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.8, spec.x/0.4);
 
    //col += shadeBlob(p, 0.3, smoothstep_interp(t)*spec.x+0.8, 0.1/0.1);
    //col += shadeBlob(p, 0.4, linear_interp(t)*spec.y+0.8, 0.1/0.1);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.85, spec.x/0.4);
    //col += shadeBlob(p, 0.6, smoothstep_interp(t)*spec.z+0.8, 0.1/0.1);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.85, spec.x/0.4);
 
    //col += shadeBlob(p, 0.3, smoothstep_interp(t)*spec.x+0.8, 0.1/0.1);
    //col += shadeBlob(p, 0.4, linear_interp(t)*spec.y+0.8, 0.1/0.1);
    col += shadeBlob(p, 0.5, cosine_interp(t)*0.1+0.9, spec.x/0.4);
    col += shadeBlob(p, 0.6, smoothstep_interp(t)*0.1+0.9, spec.x/0.4);
    col += shadeBlob(p, 0.7, quintic_interp(t)*0.1+0.9, spec.x/0.4);
 
 
 
    col += 1.0 -  smoothstep( 0.0, 0.15, abs(wave - q.x) );
 
    //col = pow(col, vec3(1.3));
    //col2 = pow(col2, vec3(0.45));
 
    fragColor = vec4(col, 1.0);
}



Clicca sul link qui sotto e metti le mani davanti alla webcam :

https://www.shadertoy.com/view/WtjGDz

// This is a rework of https://www.shadertoy.com/view/lssGDj,
// created by movAX13h, with sound, by Radical Ed

float character(int n, vec2 p)
{
p = floor(p*vec2(4.0, -4.0) + 2.5);
    if (clamp(p.x, 0.0, 4.0) == p.x)
{
        if (clamp(p.y, 0.0, 4.0) == p.y)
{
        int a = int(round(p.x) + 5.0 * round(p.y));
if (((n >> a) & 1) == 1) return 1.0;
}
    }
return 0.0;
}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
 
    {
     
     // 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 pix = fragCoord.xy;
vec3 col = texture(iChannel0, floor(pix/8.0)*8.0/iResolution.xy).rgb;

float gray = 0.3 * col.r + 0.59 * col.g + 0.11 * col.b;

int n =  4096;                // .
if (gray > 0.2) n = 65600;    // :
if (gray > 0.3) n = 332772;   // *
if (gray > 0.4) n = 15255086; // o
if (gray > 0.5) n = 23385164; // &
if (gray > 0.6) n = 15252014; // 8
if (gray > 0.7) n = 13199452; // @
if (gray > 0.8) n = 11512810; // #

vec2 p = mod(pix/4.0, 2.0) - vec2(1.0);
 
if (iMouse.z > 0.5) col = gray*vec3(character(n, p));
else col = col*character(n, p);

fragColor = vec4(col+ 1.0 -  smoothstep( 0.0, 0.15, abs(wave - uv.y) ), 1.0);
}




#define PERIOD 2.
#define REPETITIONS 2

const float PI = 3.1415926535;


float box(in vec2 _st, in vec2 _size){
    _size = vec2(0.5) - _size*0.5;
    vec2 uv = smoothstep(_size,
                        _size+vec2(0.001),
                        _st);
    uv *= smoothstep(_size,
                    _size+vec2(0.001),
                    vec2(1.0)-_st);
    return uv.x*uv.y;
}

float cross2(in vec2 _st, float _size){
    return  box(_st, vec2(_size,_size/4.)) +
            box(_st, vec2(_size/4.,_size));
}

vec3 shadeBlob(vec2 p, float index, float value, float scale)
{
    float screenRatio = iResolution.x / iResolution.y;
    vec2 pc = vec2(0.1 + (screenRatio - 0.2) * value, index);
   
    float d = length(pc - p) / 0.015*scale/0.3;
   
    return vec3(3. * vec3(0.2, 0.5, 0.7) / (max(d * d, 1.)));
}

float step_interp(float x) {
    return step(0.5, x);
}

float linear_interp(float x) {
    float c = clamp(x, 0., 1.);
   
    return c;
}

float cosine_interp(float x) {
    float c = clamp(x, 0., 1.);
   
    return 0.5 * (1. - cos(PI * c));
}

float smoothstep_interp(float x) {
//    return smoothstep(0., 1., x);

    float c = clamp(x, 0., 1.);
   
    return c * c * (3. - 2. * c);
}

float quintic_interp(float x) {
    float c = clamp(x, 0., 1.);
   
    return c * c * c * ((6. * c - 15.) * c + 10.);
}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 p = fragCoord.xy / iResolution.yy;
    vec2 q = fragCoord.xy / iResolution.yy;
   
    int tx = int(p.x*128.0);
   
    // per lo Spectrum Audio
    float wave = texelFetch( iChannel0, ivec2(tx,1), 0 ).x;
    vec3 spec = vec3(wave);
   
    vec2 translate = vec2(cos(iTime),sin(iTime));
    vec2 translate2 = vec2(sin(iTime),cos(iTime));
    p += translate*0.35*sin(iTime);
    q += translate2*1.35*sin(iTime);
   
    float t = abs(2. * fract(iTime / PERIOD) - 1.);
    //int sel = int(6. * fract(time / (float(REPETITIONS) * PERIOD) / 6.));
    int sel = 5;
   
    // Background pattern
   
    vec3 col = vec3(0.0 + 0.000 * mod(floor(p.x * 10.0) + floor(p.y * 10.0), 2.0));
    vec3 col2 = vec3(0.0 + 0.000 * mod(floor(q.y * 5.0) + floor(q.x * 5.0), 2.0));
    //vec3 col = vec3(0.0,0.0,0.0,0.0));
   
   
    col += shadeBlob(p, 0.1, smoothstep_interp(t)*spec.x+0.5, wave/3.0);
    col2 += shadeBlob(q, 0.3+spec.z, linear_interp(t)*spec.y+0.5, wave/3.0);
    col += shadeBlob(p, 0.5+spec.x, cosine_interp(t)*spec.z+0.7, wave/3.0);
    col2 += shadeBlob(q, 0.7, smoothstep_interp(t)*spec.z+0.1, wave/3.0);
    col += shadeBlob(p, 0.9-spec.y, quintic_interp(t)*spec.z+0.3, wave/3.0);
   
   
    col = pow(col, vec3(0.45));
    col2 = pow(col2, vec3(0.45));
   
    fragColor = vec4(col+col2, 1.0);
}





#define PERIOD 2.
#define REPETITIONS 2

uniform float time;
uniform vec2 resolution;
uniform vec2 mouse;
uniform vec3 spectrum;

const float PI = 3.1415926535;


float box(in vec2 _st, in vec2 _size){
    _size = vec2(0.5) - _size*0.5;
    vec2 uv = smoothstep(_size,
                        _size+vec2(0.001),
                        _st);
    uv *= smoothstep(_size,
                    _size+vec2(0.001),
                    vec2(1.0)-_st);
    return uv.x*uv.y;
}

float cross(in vec2 _st, float _size){
    return  box(_st, vec2(_size,_size/4.)) +
            box(_st, vec2(_size/4.,_size));
}

vec3 shadeBlob(vec2 p, float index, float value, float scale)
{
    float screenRatio = resolution.x / resolution.y;
    vec2 pc = vec2(0.1 + (screenRatio - 0.2) * value, index);
 
    float d = length(pc - p) / 0.015*scale/0.3;
 
    return vec3(3. * vec3(0.2, 0.5, 0.7) / (max(d * d, 1.)));
}

float step_interp(float x) {
    return step(0.5, x);
}

float linear_interp(float x) {
    float c = clamp(x, 0., 1.);
 
    return c;
}

float cosine_interp(float x) {
    float c = clamp(x, 0., 1.);
 
    return 0.5 * (1. - cos(PI * c));
}

float smoothstep_interp(float x) {
//    return smoothstep(0., 1., x);

    float c = clamp(x, 0., 1.);
 
    return c * c * (3. - 2. * c);
}

float quintic_interp(float x) {
    float c = clamp(x, 0., 1.);
 
    return c * c * c * ((6. * c - 15.) * c + 10.);
}

void main(void)
{
    vec2 p = gl_FragCoord.xy / resolution.yy;
    vec2 q = gl_FragCoord.xy / resolution.yy;
 
    vec3 spec = .1+spectrum;
 
    vec2 translate = vec2(cos(time),sin(time));
    vec2 translate2 = vec2(sin(time),cos(time));
    p += translate*0.35*sin(time);
    q += translate2*1.35*sin(time);
 
    float t = abs(2. * fract(time / PERIOD) - 1.);
 
 
    vec3 col = vec3(0.0 + 0.000 * mod(floor(p.x * 10.0) + floor(p.y * 10.0), 2.0));
    vec3 col2 = vec3(0.0 + 0.000 * mod(floor(q.y * 5.0) + floor(q.x * 5.0), 2.0));
 
 
    col += shadeBlob(p, 0.1, smoothstep_interp(t)*spec.x+0.5, spec.x/0.1);
    col2 += shadeBlob(q, 0.3+spec.z, linear_interp(t)*spec.y+0.5, spec.z);
    col += shadeBlob(p, 0.5+spec.x, cosine_interp(t)*spec.z+0.7, spec.z/0.3);
    col2 += shadeBlob(q, 0.7, smoothstep_interp(t)*spec.z+0.1, spec.x/0.6);
    col += shadeBlob(p, 0.9-spec.y, quintic_interp(t)*spec.z+0.3, spec.z/0.9);

 
    col = pow(col, vec3(0.45));
    col2 = pow(col2, vec3(0.45));
 
    gl_FragColor = vec4(col+col2, 1.0);
}







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);
)