Archivio | Python RSS feed for this section

Riassunto del Blog 2007

3 Gen

 

Nel 2007 ho (stra)parlato di…

E’ successo che…

  • è nato bl0x, e non è durato neanche un’anno…
  • ho iniziato a sperimentare con l’arte generativa
  • ho scoperto i King Cimson
  • ho arrangiato un videoclip che è andato in onda su tele Lombardia; si trattava di un concorso. Il suddetto viedoclip è stato battuto da un piccione, sicuramente è meglio così.
  • la chiesa ha avuto qualche problema con i suoi dipendenti.
  • due guru dell’informatica “leggermente scopiazzoni” si sono confrontati;
  • Ho fatto la maturità e mi sono diplomato;
  • avvenimenti dopo il diploma e occupazione assillante;
  • ho sviluppato una fobia verso i nuovi baby-consumatori;
  • son stato in un paese folle ed al contempo fantastico;
  • girare per il mondo non ti ripaga di certe cose;
  • ho cercato in modo goffo di scrivere un (breve) pezzo pirandelliano ma alla fine ho preferito sperimentare amplificando i sensi;
  • mi sono iscritto all’università.
  • ho deciso che se facessi il giornalista sarei un giornalista musicale e mi piacerebbe farlo perché potrei scrivere cose tipo questa: zero sforzo/massimo cazzeggio;
  • ho trovato il mio guru;
Poi è arrivato il 2008.
Annunci

Esperimenti Visivi/3 – Formica Formica…

14 Feb


La cicala che imprudente tutta estate al sol cantò, provveduta di niente nell’inverno si trovò, senza più un granello e senza una mosca in la credenza.

Affamata e piagnucolosa va a cercar della Formica e le chiede qualche cosa, qualche cosa in cortesia, per poter fino alla prossima primavera tirar via: promettendo per l’agosto, in coscienza l’animale, interessi e capitale.

La Formica che ha il difetto di prestar malvolentieri, le dimanda chiaro e netto: “Che hai fatto fino a ieri?” “Cara amica a dire il giusto non ho fatto che cantare tutto il tempo. “Brava ho gusto; balla adesso, se ti pare.”

La cicala e la formica in versi
di Jeane de La Fontaine

Qualcuno rimarrà scnvolto dal fatto che abbia deciso di allevare formiche, trenta formiche per la precisione: No, non sono pazzo.
Ho deciso di allevare formiche a scopo di studio: ricreare un formicaio e capire come le formiche trovano ed accumulano il cibo. Cavoli… immagino di aver rovinato già l’atmosfera creata dai versi di de La Fontaine presi dal racconto di Esopo… ma chissenefrega!

Le nostre formiche sono esseri virtuali dell’ingombro di qualche kb al massimo.
Ho deciso di creare questo modello partendo da quello proposto dalla comunità di NodeBox utilizzando la libreria Ants.
Nel modello la formichina ha quattro semplici comportamenti:

  • Vagare alla ricerca di cibo
  • Seguire la traccia di feromone lasciata per ritrovare il cibo
  • Raccolgliere il cibo
  • Accumulare cibo nel formicaio
Per semplicità il formicaio, il cibo, le formiche e le tracce di fermoni sono state semplificate a forme geometriche.

Per scaricare il file cliccate sull’immagine a destra, è in formato .mov (716kb) e quindi per vederla dovete scaricarvi Quicktime.

In fondo nonostante sia una simulazione virtuale di un esserino minuscolo ci si accorge di quanto sia simile come comportamento all’uomo, in continua ricerca di risorse.
Qualche differenza, ovviamente, c’è; purtroppo non siamo capaci di accumulare così tanto come le formiche, siamo troppo poco ecocompatibili e il nostro sviluppo non si autosostiene… in poche parole consumiamo più di quel che produciamo, non siamo capaci di evolverci seguendo i ritmi della natura. In questo le formiche son più sagge di noi.

Esperimenti Visivi/2 – Casuale ma organizzato

5 Feb
Siamo partiti con una composizione abbastanza complessa, ma se volessimo fare qualcosa di più semplice? Vogliamo tanti cerchi, tanti cerchi a caso ed una scritta (questa non casuale). Questa volta l’immagine deve essere ferma.

(Cliccate sull’immagine per vedere, 1640×620 pixel, 422.1 KB)

L’immagine ha una risoluzione di 150dpi (molto comoda in editoria) ma il programma eseguibile ha una risoluzione di 75dpi (risoluzione dei monitor normali); durante l’esportazione da Pdf a Jpeg le dimensioni dell’originale sono raddoppiate, da 820×310 a 1640×620 pixel. Per scaricare il file Pdf originale cliccate pure qui (68KB).
Ed ecco il codice:

size(820,310)
colormode(CMYK)
fill(0,0,0,0)
rect(0,0,WIDTH,HEIGHT)
nofill()

for i in range(800):
stroke(random(),0,0,0,1)
s = random(10)
strokewidth(random(100))
oval(random(-100,(WIDTH)), random(HEIGHT), s, s)

for i in range(20):
stroke(0,0,0,0,random(.7,1))
s = random(40)
strokewidth(random(100))
oval(random(600,500), random(100,200), s, s)

fill(1,0,0,0,1)
font(‘Helvetica’)
text(‘Halftone’, random(520,580), random(150,180))
text(‘_Generative’, random(480,580), random(120,180))

Nel primo blocco viene definita la dimensione dell’output [size(820,310) ossia size(WIDTH,HEIGHT)] , Il sistema di colori, la forma ed il colore di riempimento (bianco);
Nel secondo blocco viene definito un insieme di 800 contorni (stroke) con uno spessore random [strokewidth(random(100))] e posizione casuale [stroke(random(),0,0,0,1)] diventerano un numero equivalente di oggetti ovali parametrici (cerchi) [oval(random(-100,(WIDTH)), random(HEIGHT), s, s)]; il parametro s è un valore casuale che varia entro in un intervallo da 0 a 10, numeri interi.
Il secondo blocco è quello che farà da sfondo alla scritta, è simile al precedente come concezione, salvo la definizione del colore dei cerchi e del relativo canale alpha [stroke(0,0,0,0,random(.7,1))], avremo così dei 20 cerchi bianchi semitrasparenti (la loro trasparenza faria tra 0.7 e 1).
L’ultimo blocco genera la scritta con una posizione casuale.
La dimensione dei cerchi colorati è correlata alla dimensione della finestra [size(820,310) ossia size(WIDTH,HEIGHT)].

Nel secondo blocco è stata sostituita la definizione oval con rect.

(Cliccate sull’immagine per vedere, 1640×620 pixel, 108.6 KB)

Per scaricare la composizione in Pdf cliccate qui (31KB).

Esperimenti Visivi/1 – Casuale ma organizzato

29 Gen

1) La casualità è una cosa che mi affascina terribilmente.

2) L’animazione è una delle forme espressive che preferisco, mi piace il concetto di movimento (di qualunque tipo).
3) Voglio organizzare la casualità.

Come posso fare?
Io non so disegnare se non tramite un righello ed una squadra.
Disegnare con righello e squadra vuol dire prendere le misure, prendere le misure vuol dire numeri. Qual’è quello strumento che utilizza numeri e calcola a velocità impressionante?
Il computer.
Ok.. i primi tentativi consistevano nel tirare linee a caso e fare forme geometriche a caso.
Scarsi risultati, io voglio un modo per generare casualità in modo “logico ed ordinato”.
E’ un controsenso? NO! La matematica moderna ci insegna che se una variabile è numero casuale otteniamo un numero infinito di soluzioni. L’importante è saperla scrivere l’equazione. Io e la matematica facciamo a pugni. E se scrivessi questa mia idea?
Del resto la matematica è un linguaggio.
Dopo varie ricerche ho trovato tre programmi, tre sistemi basati su linguaggi diversi per esprimermi.

Processing che usa come linguaggio Java, è multipiattaforma ed è estensibile.
Nodebox che usa come linguaggio Python, il programma esiste solo per mac.
QuartzComposer, è un sistema di librerie, non un vero linguaggio di programmazione ed è il responsabile dell’interfaccia grafica del mac, ed esiste solo per mac.
Il risultato della programmazione è un programma, appunto, che è un insieme di righe di testo scritto che dicono poco o niente. Eseguendo il programma si ottiene il risultato vero e proprio, un po come un concerto: la composizione è nello spartito, chi non sa leggerlo non ci capirà niente; il maestro e l’esecutore (che tecnicamente sono l’interprete e il computer) lo eseguono in modo da rendere accessibile uno spartito anche a 2000 persone alla volta, al pubblico in generale.
Una volta eseguito il codice è possibile salvarlo in due modi: se è un’animazione lo si salva come filmato; se è una rappresentazione fissa un immagine. L’audio merita un discorso a parte.

Ok, dopo questo sproloquio sui tre programmi, torniamo all’idea principale:
Formare un immagine, se possibile una serie di immagini in movimento che sia casuale ed ordinata allo stesso tempo.

Vai col Nodebox: Questo è l’inizio, sono partito incollando il codice di un esempio sul sito di nodebox, e poi l’ho modificato.

size(300, 300) #[dimensioni dell’immagine o dell’animazione finale]

def point(x=WIDTH, y=HEIGHT):

return (random(x),random(y)) #[viene creato un punto di cordinate random x,y]

def abstract(): #[viene data una definizione di astratto, o meglio, ivalori casuali per il punto sono casuali e vanno da 1 a 20, l’insieme oscilla in questo intervallo, quindi i numeri di questo insieme saranno casuali ma andranno dall’ 1 al 20.]

x, y = point()
beginpath(x,y)
for i in range(1,random(20)):
x, y = point(0,HEIGHT/i)
lineto(x,y)
endpath()

if random(100) > 80:
w = random(20,80)
oval(x-w*0.5,y-w*0.5,w,w) #[i cerchi hanno un centro posizionato nel punto 20,80 ed oscillano, si spostano casualmente prendendo come riferimento le cordinate iniziali.]

fill(1,1,1) #[colore dell’ovale]
rect(0,50,WIDTH,HEIGHT)
#[viene creato un rettangolo in posizione 0,50 di dimensioni casuali date dalla definizione data nella seconda riga]

stroke(0,-1.5,random(1.5,0.75),0.3)
#[viene definita una linea, di spessore 1 e il colore varia per intensità in un intervallo da 1 a 40 ma viene smorzata dalle costanti 0.15; 0,75; 0.04 e il fattore correttivo (scelto per tentativi) 24.7). Il colore si distribuisce in modo casuale tra il blu e il viola]
strokewidth(1)

for i in range(40):
fill(i-30,0,random(0.15*i,0.75*i),i-24.7 * 0.04*i)
abstract()

nofill() #[il bordo dell’immagine è una linea nera ed il colore è grigio scuro]
stroke(0.2,0.2,0.2)
strokewidth(1)
rect(0,0,WIDTH,HEIGHT)


fill(1,1,1,0.6)
#[la scritta, posizione ruotata di 90°, il font, le dimensioni, il testo.]
rotate(-90)
font(“Arial Bold”, 20)
text(“HALFTONE”, -10, 80)

Per capirlo mi sono aiutato leggendo una guida liberamente scaricabile dal sito di phyton, in italiano; le variazioni imposte da nodebox le ho controllate guardando il riferimento sul linguaggio nel sito di nodebox stesso. Il resto è stato fatto improvvisando, per tentativi.

Il risultato:

Il codice è lo stesso che ho scritto sopra. Il video è stato fatto eseguendo 300 volte lo script. Sono 15 immagini al secondo per 20 secondi. Molto veloce, forse troppo per vederli tutti… ma io conto sulla ppercezione subliminale. [ .mov 3.0 Mb ]


La versione verde, sono 10 secondi, 3 frame al secondo, quindi il rogramma è stato eseguito 30 volte. E’ più lenta e le trasparenze si vedono meno. Nel programma la definizione coi fattori di correzione per i colori è differente. [ .mov 937 kb ]

Per visualizzare correttamente i video dovete scaricare Quicktime®.
Mi scuso per il tecnicismo, ma penso sia importante spiegare bene le cose, in particolar mod
o se si tratta di processi astratti complicati come programmare con un linguaggio diverso da quello parlato. Spero di non avervi annoiato troppo
In seguito pubblicherò gli altri miei esperimenti, parlerò di processing e del mio preferito: Quartz!