Top Banner
Introduzione a Processing Tecnologie digitali suono e immagine A.A. 2014-15 Vincenzo Lombardo
53

Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Feb 18, 2019

Download

Documents

truongmien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Introduzione a Processing

Tecnologie digitali suono e immagine A.A. 2014-15

Vincenzo Lombardo

Page 2: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Motivazioni per Processing: visual, movimento, interazione

•  Programmazione in contesto visual •  Linguaggio testuale (come i comuni linguaggi) •  Caratteristiche

–  Disegno vettoriale/raster –  image processing –  modelli di colore –  interazione mouse/tastiera –  network communication –  programmazione OO

•  Librerie aggiuntive –  generazione di suoni –  send/receive di dati –  import/export file 2D e 3D

Page 3: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Motivazioni per Processing: Software come mezzo espressivo

•  SW (qualità uniche): –  forme dinamiche e definizione comportamenti –  elaborazione/analisi gesti e interaction –  simulazione sistemi naturali e artificiali –  coordinazione/integrazione multimedia

•  Linguaggio come materiale di lavoro •  Sketchbook per lo sviluppo di idee creative •  Programmazione non tipica per informatici

(dopo Logo e Max)

Page 4: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Conoscenza del software

•  Conoscenza del software utile per l’espressione (nuove potenzialità): arte “arcana” della programmazione

•  Occorre essere “software literate”

•  Proprietà di chi possiede la conoscenza: –  Read: Accedere a materiali e tool creati da altri –  Write: Creare tool e materiali per altri

•  Software: processi che simulano e decidono

Page 5: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Open source

•  Poco usato nei software artistici

•  Adobe e Microsoft leader di mercato

Page 6: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Ambiente di Processing

•  Semplice TEXT EDITOR la scrittura del codice –  MESSAGE AREA –  TEXT CONSOLE –  TABS per gestione file –  TOOLBAR con bottoni per azioni comuni –  serie di MENU’

•  Esecuzione programmi in una finestra diversa (DISPLAY WINDOW)

Page 7: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Ambiente di Processing - Menu - Toolbar run/stop, new sketch, open, save, export - Tabs - Text editor Sketch - Message area Feedback save/export, display di errori - Console output di testo (es. print() e println())

Processing File Edit Sketch Tools Javascript Help

Display window

Mode

Javascript Java Applet

Sketch

Page 8: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

BOTTONI TOOLBAR

•  Run: Compila, apre display window, and runs •  Stop: Termina, non chiude la display window •  New: Crea nuovo sketch. •  Open: Menu per aprire file dallo sketchbook, un

esempio, o uno sketch dal disco o dalla rete •  Save: Salva sketch corrente nella sua locazione

corrente (anche “Save As” dal menu File) •  Export:

–  sketch corrente come Java applet in file HTML –  Si apre il folder dei file, si clicka su index.html per

caricare il software nel default Web browser.

Page 9: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Comandi da MENU

•  File: Comandi per gestire e esportare file •  Edit: Controlli per il text editor (Undo, Redo,

Cut, Copy, Paste, Find, Replace, etc.) •  Sketch: Run/stop dei programmi, aggiungere

media file e librerie di codice •  Tools: Assistenza nell’uso di Processing

(automated code formatting, crea fonts, etc.) •  Help: Reference files per linguaggio e ambiente

Processing File Edit Sketch Tools Javascript Help

Page 10: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Sketches

•  Tutti i progetti di Processing sono SKETCH •  Ogni SKETCH ha la sua cartella •  Il file principale di uno sketch ha lo stesso nome

della cartella e ci sta dentro

•  Esempio –  Sketch Sketch_123 –  Cartella Sketch_123 –  File principale nella cartella Sketch_123.pde –  PDE: Processing Development Environment.

Page 11: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Media file nella cartella

•  Altre cartelle nella cartella dello sketch: media e librerie di codice

•  “Add file” per aggiungere font e immagini (si crea la directory “data” – anche con drag dei media file nel text editor)

•  Tutti gli sketch nella Sketchbook location dalle Preferences

•  Più file (.pde o .java) in uno Sketch: si clicca sulla freccia a dx dei tab per un nuovo file

Page 12: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

EXPORT 2 Java Applet

•  Conversione in Java, compilazione in applet, gira in browser

•  Applet folder per Sketch Sketch_123: –  Index.html (con applet, link al sorgente, home Processing) –  Sketch_123.jar (classi core, codice Sketch_123, media “data”) –  Sketch_123.java (il file java compilato nella applet) –  Sketch_123.pde (l’originale, linkato da index.html) –  Loading.gif: un’immagine di caricamento nel browser

•  A ogni export, applet folder cancellata e riscritta: conviene cancellare media file non più utili da “data”

•  Si esportano anche Java application per Linux, Macintosh, and Windows (specificati nelle Preferences)

Page 13: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Visual HTML

•  HTML5: elemento <canvas> (creazione di entità web) –  open-web platform –  "Write once, deploy anywhere”

•  HTML5 Technologies –  Document Object Model (DOM – struttura per accedere/

manipolare docs HTML) –  Cascaded Style Sheet (CSS3 - definisce presentazione/

apparenza di docs HTML) –  Javascript

•  Include specifiche API: browser-based graphics, geolocation, local storage, video capabilities

Page 14: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Processing.js

•  Progetto fratello di Processing, per il web •  Progetti di data visualization, digital art,

interactive animation, educational graphs, video games, etc. con standard web e senza plug-in

•  Grafica in modalità immediata, in HTML5 Canvas

•  Codice Processing –  da Java-like a Javascript, inclusione in pagina web,

Processing.js classi core –  eseguito da HTML5 compatible browser (Firefox,

Safari, Chrome, Opera e IE)

Page 15: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

EXPORT 2 Javascript

•  Conversione in Javascript, gira in browser

•  Web export folder per Sketch Sketch_123: –  Index.html (con HTML5 canvas, link al sorgente) –  processing.js (classi core) –  Tutti i media di “data” –  Sketch_123.pde (l’originale, linkato da index.html)

Page 16: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Esempio

•  Processing progettato per disegnare elementi grafici nella display window

•  Linee, rettangoli (e quadrati), ellissi (e cerchi), curve varie

•  Stili grafici controllati •  Posizionamento con le coordinate

Page 17: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Prima di cominciare a disegnare

Page 18: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Computer screen

•  Dimensioni e tipo di superficie •  Griglia di pixel (molte dimensioni e risoluzioni)

–  HD: 2 Megapixel (1920 wide * 1080 high), –  HD-ready: 1,310,720 pixels (1280 w * 1024 h) –  Vecchi display: 786,432 pixels (1024 w * 768 h).

•  Risoluzione: –  Schermi: circa 100 dpi –  Stampanti: circa 1000 dpi

•  Carta fissa, schermi cambiano immagine molte volte al secondo

Page 19: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Display window size(width, height)

120x200 size(120, 200)

320x240 size(320,240)

240x240 size(240,240)

Page 20: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Display window coordinate

Page 21: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Linee, comando line()

•  Definite da 4 numeri: due coordinate per estremo

•  Origine angolo in alto a sx, coordinate aumentano verso il basso e verso dx

•  line(10, 80, 30, 40); // Linea sx •  line(20, 80, 40, 40); •  line(30, 80, 50, 40); // Linea di mezzo •  line(40, 80, 60, 40); •  line(50, 80, 70, 40); // Linea dx

Page 22: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Attributi visivi delle forme

•  Colore/livelli di grigio, ampiezza della linea, qualità del rendering

•  Esempio –  background(0); // background nero –  stroke(255); // linee bianche –  strokeWeight(5); // spessore linea 5 pixel –  smooth(); // smussare estremi delle linee –  line(10, 80, 30, 40); // linea sx –  line(20, 80, 40, 40); –  line(30, 80, 50, 40); // linea di mezzo –  line(40, 80, 60, 40); –  line(50, 80, 70, 40); // linea dx

Page 23: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Variabili

•  int x = 5; // posizione in orizzontale •  int y = 60; // posizione in verticale

•  (strokeWeight(5);) •  (smooth();)

•  line(x, y, x+20, y-40); // Linea da [5,60] a [25,20] •  line(x+10, y, x+30, y-40); // Linea da [15,60] a [35,20] •  line(x+20, y, x+40, y-40); // Linea da [25,60] a [45,20] •  line(x+30, y, x+50, y-40); // Linea da [35,60] a [55,20] •  line(x+40, y, x+60, y-40); // Linea da [45,60] a [65,20]

Page 24: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Esempio Tre linee oblique

Esercizio: Invertire specularmente le tre linee oblique.

Page 25: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Programma strutturato

•  Funzioni setup() e draw() (max 1+1): struttura studiata per animazione e interattività

•  Le variabili dichiarate fuori sono globali

•  Esecuzione 1.  Gira il codice fuori da setup() e draw() 2.  Gira una volta il codice di setup() 3.  Gira in loop il codice di draw() 4.  Alla fine di ogni loop, si disegna un frame nella

DISPLAY WINDOW

Page 26: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Esempio Tre linee oblique

Esercizio: verificare il funzionamento di draw() introducendo una variabile intera i (int i = 0;), che aumenta di 1 in draw (i++;) e disegnare le tre linee solo quando i è pari (if (i%2==0 {}).

Page 27: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Funzioni

•  Codice che esegue un certo compito •  Potenti, programmi flessibili

•  Esempio: funzione obliqua3() –  Disegna una sequenza di tre diagonali –  Due parametri, x e y per la posizione delle linee

Page 28: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Funzione obliqua3()

Page 29: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Animazione

Esercizio 1: Animare solo in senso orizzontale o in senso verticale. Esercizio 2: Disegnare più di un gruppo e fare in modo che uno dei due sia più veloce.

Page 30: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Interattività semplice

•  Quando un programma gira di continuo, Processing può memorizzare i dati dall’input

•  Ad esempio, mouse e tastiera

•  I dati memorizzati influenzano il risultato nella Display Window

Page 31: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Esempio interattività

Page 32: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Array

•  Finora variabili con un solo elemento •  Introduciamo i gruppi •  Esempio: 10 gruppi di linee richiedono 20

variabili (10x+10y) •  Uso di array: elenco di elementi con un solo

nome •  Struttura di controllo FOR per ciclare sugli

elementi in sequenza

Page 33: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Esempio animazione array

Page 34: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Programmazione Object Oriented

•  Strutturare il codice in objects, unità di codice che riuniscono dati e funzioni

•  Forte connessione tra gruppi di dati e funzioni che agiscono sui dati.

•  Esempio: –  obliqua3() diventa una definizione di classe –  Oggetti creati usando la classe come schema –  Variabili per posizionare le linee e settare gli attributi

visivi sono dentro la classe

Page 35: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Esempio Programmazione OO

Page 36: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Processing File Import

Page 37: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Esempio: numeri da file .txt

•  File TXT memorizza solo caratteri –  Numeri memorizzati come caratteri –  Caricati some stringhe, poi conversione a float o int

•  Funzione usata: loadStrings() –  String[] lines = loadStrings("numbers.txt"); –  loadStrings() crea array di stringhe delle sue linee

singole — un elemento per linea –  for (int i = 0; i < lines.length; i++) {println(lines[i]);}

•  File contenuto nel data folder dello SKETCH

Page 38: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Import file ALLEANZA 1.31 AUTOGRILL 0.37 BULGARI 0.35

Page 39: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Processing Shapes

Page 40: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Coordinate, primitive

•  point(), line(), triangle(), quad(), rect(), ellipse(), bezier()

•  background(), fill(), stroke(), noFill(), noStroke() •  strokeWeight(), strokeCap(), strokeJoin()

•  smooth(), noSmooth(), ellipseMode(), rectMode()

Page 41: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Coordinate

Page 42: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Forme primitive

Page 43: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Shapes e interattività (adattato da Rocchesso 2012)

void setup() { size(256, 256); background(0); } void draw() { stroke(255); strokeWeight(1); ellipseMode(CORNER); ellipse(72,100,110,130); fill(112); triangle(88,120,168,120,128,50); fill(0); stroke(255); line(114,180,mouseX,mouseY); line(mouseX,mouseY,140,180); line(114,180,140,180); // triangle(114,180,x,y,140,180); // nose((int) x, (int) y); stroke(255); strokeWeight(4); left_eye(); right_eye(); mouth() }

void nose (int x, int y) { beginShape(TRIANGLE); vertex(114,180); vertex(x, y);

vertex(140,180); endShape(); }

void left_eye() { line(104,146,104,154); line(100,150,108,150);

} void right_eye() {

line(150,146,150,154); line(146,150,154,150); }

void mouth() { bezier(116, 200, 124, 205, 132, 205, 140, 200);

}

Page 44: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Esercizi su Shapes e Processing

•  Esercizio 1: eliminare il problema della moltiplicazione dei nasi

•  Soluzione: aggiornare tutto il disegno in draw()

•  Esercizio 2: rendere il personaggio triste •  Soluzione: estremi bocca verso il basso,

lacrime dagli occhi

Page 45: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Suono in Processing.js

Basato su http://funprogramming.org/141-

Processing-js-with-sound-audio-I.html

Page 46: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Processing + Javascript

•  Librerie di suono non disponibili in Processing.js (che converte il codice Processing in JS, in modo invisibile per il programmatore)

•  Usare JavaScript per riprodurre i suoni –  JavaScript gira nel browser –  Processing.js si occupa della grafica, JavaScript

riproduce i suoi. –  Due linguaggi che comunicano

Page 47: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Design sound interaction

•  Sound sui bordi (differenziato orizzontale/verticale)

if (x<25 || x>200) { // play sound 0

if(javascript != null) {

javascript.playSoundKnock(); // play knock }

}

if (y<25 || y>200) {// play sound 1

if(javascript != null){

javascript.playSoundGuitar(); // play guitar

}

}

•  Sound in loop

Page 48: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Preparazione suoni

•  Menu tools: si crea un “custom template” –  Crea cartella “template” nella cartella sketch con

•  “template.html” con codice JavaScript per riproduzione suoni •  Libreria Processing.js

–  Si inseriscono nella cartella “template” •  libreria audio unzippata scaricata da: http://buzz.jaysalvat.com •  file audio da riprodurre (almeno in formato .mp3 e .ogg, per

essere sicuri che funzionino con browser diversi)

•  Editare file template.html –  Una nuova linea istruisce la pagina web a caricare la

libreria audio –  Altre linee preparano i file audio per la riproduzione

Page 49: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Editare file template.html

•  Una linea istruisce la pagina web a caricare la libreria audio •  Altre linee preparano i file audio per la riproduzione •  Bind con Javascript

<script src="processing.js" type="text/javascript"></script> <script src="buzz.min.js" type="text/javascript"></script> <script type="text/javascript"> var guitar = new buzz.sound( "guitar", {formats: [ "ogg", "mp3"]}); var knock = new buzz.sound( "knock", {formats: [ "ogg", "mp3"]}); var bound = false; <!-- bound true se PR e JS sono connessi; iniz. false -->

function bindJavascript() { var pjs = Processing.getInstanceById("@@id@@"); if (pjs != null) {pjs.bindJavascript(this); bound = true; } <!-- se non connessi, riprova tra 250 millisencondi --> if (!bound) setTimeout(bindJavascript, 250); } bindJavascript(); function playSoundKnock(){knock.play(); } function playSoundGuitar(){guitar.play(); } </script>

Page 50: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Comunicazione Processing-Javascript

•  Pomax guide: Fare in modo che lo sketch Processing veda Javascript

•  Lato Processing –  Si aggiunge una "interface", concetto OO –  Nel blocco "interface" dichiariamo le funzioni da chiamare lato JavaScript

(Esempio: due funzioni, per riprodurre due suoni differenti) –  Si fa il binding mediante oggetti

// Interface con il linguaggio Javascript, // mediante una classe di oggetti che espone le funzioni di interesse (sound playing) interface JavaScript { void playSoundKnock(); void playSoundGuitar(); } // legame vero e proprio tramite oggetto passato js void bindJavascript(JavaScript js) { javascript = js; } // oggetto della classe JavaScript javascript;

Page 51: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Esercizio

•  Esercizio 1: usare solo una funzione invece di due per riprodurre i due suoni, usando l’identificatore ID del suono come argomento (cioè, funzione sound(guitar) e sound(knock)).

•  Esercizio 2: Inserire un suono in loop (mediante attributo loop) continuo

Page 52: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Reference

Due opzioni: •  “Reference” da menu Help

–  Tenere aperto durante la programmazione –  www.processing.org/reference.

•  “Find in Reference” –  Nella text window evidenziare una parola –  Right-click (o Ctrl-click in Mac OS X) –  selezionare “Find in Reference” dal menu

Page 53: Introduzione a Processing - di.unito.itvincenzo/TecDigSuoImm12/Slide/1415_Processing... · Media file nella cartella • Altre cartelle nella cartella dello sketch: media e librerie

Bibliografia

•  Casey Reas e Ben Fry, “Processing: A programming handbook for Visual Designers and Artists”, MIT Press, 2007

•  Davide Rocchesso, Media Processing in Processing, www.academia.edu, 2014, https://www.academia.edu/2257633/Media_Processing_in_Processing.

•  http://funprogramming.org