Sonificazione con PureData per Android: dai sensori ai segnali al suono

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sonificazione con PureData per Android: dai sensori ai segnali al suono"

Transcript

1 UNIVERSITÀ DI PISA Facoltà di Ingegneria Corso di Laurea Triennale in Ingegneria Informatica Tesi di Laurea Sonificazione con PureData per Android: dai sensori ai segnali al suono Relatori: Prof. Marco Avvenuti Ing. Mario G.C.A. Cimino Ing. Daniel Cesarini Anno Accademico 2011/2012 Candidato: Fabio Carrara

2 ii

3 Ringraziamenti Ai miei genitori, a mio zio Paolo e ai miei familiari più vicini, che mi hanno trasmesso le loro passioni e mi hanno permesso di arrivare fin qui. Uno speciale ringraziamento ai miei relatori, in particolare a Ing. Daniel Cesarini, che ha reso l ambiente di lavoro e di studio durante questa tesi piacevole e costruttivo. iii

4 iv

5 Sommario Grazie all avvento del pervasive computing, che vede un sempre maggior numero di dispositivi di calcolo inseriti nella vita quotidiana, sono possibili applicazioni che interagiscono con l ambiente circostante e con l uomo, attraverso l elaborazione e lo scambio di molte informazioni. Ne sono un esempio dispositivi come smartphones e tablets, che mettono a disposizione potenza di calcolo e sensori mobili. La loro diffusione ha permesso agli sviluppatori di rendere fruibili queste applicazioni, dette context-aware. Il potente sistema uditivo umano permette la ricezione di informazioni veicolate attraverso il suono, anche quando questo non è formato da fonemi. È possibile sfruttare questa proprietà per trasmettere informazioni tramite la sonificazione, cioè la generazione di suono parametrica. Questa tesi propone uno strumento di sonificazione e di analisi di dati utilizzabile da applicazioni mobili sviluppate per Android. Il software chiave che offre questi servizi è Pure Data, ambiente di programmazione per l elaborazione di segnali digitali, con enfasi sui segnali sonori. v

6 vi

7 Indice 1 Introduzione Struttura della tesi Potenzialità della sonificazione Auditory Display Sonificazione: una definizione Funzionalità ed esempi pratici Analisi esplorativa dei dati: sonificazione dei parametri metereologici Audificazione: analisi di onde sismiche Divertimento: gestione di uno spazio uditivo virtale per videogiochi Generazione di feedback: sincronizzazione di tracce accelerometriche Aumento della percezione umana: il caso Neil Harbisson 9 3 Il software Pure Data Funzionamento di Pure Data Finestra principale e patches Elementi del linguaggio Passaggio e ordine dei messaggi Meccanismi di astrazione Array numerici Formato del file patch Estensioni al linguaggio Internals, externals e librerie Meccanismo di inclusione vii

8 viii INDICE Struttura del codice C di un external Pure Data su Android: libpd Architettura degli wrapper Java di libpd Inclusione di libpd su Android Package io Package service Package utils Problematiche e limitazioni Assenza di real-time Latenza tra ingresso e uscita Prototipi ed esempi di applicazione realizzati Sonificazione parametrica: PdPatchRunner Estensione del servizio orientata al flusso di dati: PdSonifier Sonificazione applicata al monitoraggio di attività umane: PdFun Scooter Engine Simulator Orientation Device Guess Game Maracas Shake Magnetic Field Sonification Theremin-Like Instrument Conclusioni Sviluppi futuri A Codice Pure Data dei programmi di sintesi sonora 57 A.1 Patch presenti in PdPatchRunner A.1.1 Modulazione in frequenza A.1.2 Rimbalzi sonori A.2 Patch presenti in PdFun A.2.1 Simulatore di un motore di piccola cilindrata A.2.2 Device orientation guess A.2.3 Maracas shake A.2.4 Magnetic field sonification A.2.5 Theremin-Like instrument A.3 Programmi di signal processing

9 INDICE 1 A.3.1 Stimatore dell indice di correlazione di Pearson A.3.2 Analisi e sonificazione off-line della correlazione di tracce accelerometriche A.3.3 Rilevamento del colpo on-line e sonificazione A.4 Lista degli oggetti utilizzati nelle patches B Codice degli externals Pure Data sviluppati 75 B.1 [variance] B.2 [pearson], [pearson~] C Codice di PdFun 89 C.1 Attività principale: GameListActivity.java C.2 ScooterEngineActivity.java C.3 OrientationGuessActivity.java

10 2 INDICE

11 Capitolo 1 Introduzione Il suono e la percezione uditiva sono parte integrante della vita umana, sono onnipresenti nel nostro ambiente, ci invadono e ci condizionano ogni giorno. Il nostro sistema uditivo è in grado di estrarre informazioni dal suono, permettendoci di comunicare attraverso la voce, di percepire situazioni di pericolo, di apprezzare l estetica di un brano musicale. Lo scopo di questo studio è stato di fornire ad applicazioni mobili sviluppate per Android la possibilità di sfruttare il suono come veicolo di informazioni. Grazie allo sviluppo di reti di sensori wireless e dispositivi dotati di sensori, è possibile sviluppare applicazioni che elaborano molti dati provenienti dall ambiente in cui queste sono utilizzate. Queste applicazioni si dicono content-aware, cioè consapevoli del contesto in cui vengono utilizzate. La sonificazione di dati, cioè la generazione di suono dipendentemente dal valore di questi, è in grado di riproporre all utente in maniera intuitiva il contenuto informativo estratto tramite i sensori. Gli scopi della sonificazione possono essere molteplici, dalla semplice esplorazione dei dati alla audificazione al controllo di un feedback. La diffusione di dispositivi come smartphones e tablets, che dispongono di potenza di calcolo mobile, hanno reso possibile l ebalorazione e la sonificazione di dati provenienti da tali sensori anche in contesti dove un supporto fisso non è utilizzabile. In questo contesto, dopo una panoramica sulla sonificazione e il suo utilizzo, questa tesi presenta uno studio sul software necessario per generare suono, disponibile per una delle piattaforme mobili più diffuse, cioè Android. 3

12 4 CAPITOLO 1. INTRODUZIONE Il software chiave in questa trattazione della sonificazione per dispositivi mobili è Pure Data, un ambiente di programmazione visuale per l elaborazione di segnali digitali, con l accento sulla elaborazione di segnali audio. Questo software è facilmente integrabile su piattaforme mobili grazie anche ad un progetto ausiliario, libpd, che mira a far diventare Pure Data una libreria multipiattaforma. Sono riportati come esempi delle piccole applicazioni per piattaforma Android sviluppate durante lo studio che mostrano il funzionamento della sonificazione in dettaglio e le possibilità di applicazione che questa offre nella context-aware computing. 1.1 Struttura della tesi Dopo questo capitolo di introduzione, nel capitolo 2 è riportata una panoramica sulle potenzialità offerte dalla sonificazione, affiancata da esempi reali di utilizzo. Nel capitolo 3 è descritto brevemente il software che permette di manipolare e generare suono in modo parametrico: Pure Data. In particolare è esposto il suo linguaggio, le sue potenzialità, i suoi limiti e la sua possibilità di estensione. Nel capitolo 4 è mostrata la struttura e l utilizzo degli wrapper Java della libreria libpd, che permettono il funzionamento dell ambiente Pure Data su piattaforma Android. Nel capitolo 5 sono riportati gli esempi di applicazione realizzati, con rispettive strutture e algoritmi di sonificazione. Nel capitolo 6 si espongono le conclusioni tratte alla fine di questo studio, comprendenti rapporti di testing, problematiche e limitazioni nel funzionamento. Nell appendice A sono riportati i programmi Pure Data che implementano la sonificazione nelle applicazioni sviluppate. Nell appendice B è riportato il codice di alcune estensioni Pure Data, come esempio arricchimento di Pure Data con costrutti scritti dall utente. Nell appendice C è riportato il codice Java delle applicazioni realizzate.

13 Capitolo 2 Potenzialità della sonificazione In questo capitolo verrà trattata la tecnica della sonificazione e verranno esposte le sue potenzialità in vari ambiti. Si riporteranno esempi di impiego in diverse ricerche ed applicazioni. 2.1 Auditory Display In molti casi, non ci accorgiamo quante informazioni riusciamo a ricevere percependo del suono. Il complesso sistema uditivo umano ci fornisce uno strumento di analisi del suono molto potente. Oltre alla parola, possiamo estrarre molte informazioni dal suono, come le emozioni espresse da un eventuale interlocutore. Siamo in grado di percepire sfumature e piccoli cambiamenti, che permettono per esempio ad un meccanico di avvertire un problema al motore che altrimenti non sarebbe stato percepito. Possiamo estrarre un particolare flusso di informazioni da segnali audio molto complessi, come focalizzarci sul suono di una particolare voce in un posto affollato o su un particolare strumento musicale tra tutti i componenti di un orchestra [8]. In una interazione uomo-macchina, guidata principalmente dalla vista, possiamo affiancare anche un canale sonoro, migliorando l esperienza dell utente, specialmente in situazioni dove un canale visivo può essere sconveniente. L uso del suono, solitamente non verbale, per trasmettere informazioni all utente è detto Auditory Display. Più precisamente si pone come obiettivo 5

14 6 CAPITOLO 2. POTENZIALITÀ DELLA SONIFICAZIONE di far percepire meglio tramite il suono i cambiamenti che avvengono in una struttura dati in esame. L impiego dell Auditory Display per semplici funzioni è già diffuso: si pensi alle funzioni di allarme, di avvertimenti o notifiche diffuse su cellulari e PC. Comunque alcune forme Auditory Display possono arrivare ad aumentare le percezioni dell uomo, anche se spesso, per funzioni che permettono questo tipo di informazione molto ricca, sorge la necessità di un potente sistema real-time di elaborazione e generazione di segnali audio dipendente dai dati, nonchè un tempo di adattamento, non sempre breve, del sistema uditivo umano all Auditory Display. 2.2 Sonificazione: una definizione Un sottotipo di Auditory Display è costituita dalla sonificazione. Essa si prefigge di rappresentare delle informazioni mappandole in suono. Una delle ultime definizioni del termine sonificazione, data da Hermann, è la seguente: generazione del suono dipendente dai dati, se la trasformazione è sistematica, oggettiva e riproducibile. (Hermann 2011 [8]) Queste tre proprietà sono la chiave di una generazione sonora affinchè possa veicolare informazioni in maniera esatta. Nonostante gli studi già in anni passati di questa tecnica, la tecnologia recente ci permette di poter adoperarla in sistemi dove i tempi di reazione devono essere molto brevi. Inoltre la miniaturizzazione e la mobilità della potenza di calcolo, che ormai è onnipresente e diffusa nell ambiente in cui viviamo, ci permettono di utilizzare questa tecnica in molti ambiti, prima impensabili. 2.3 Funzionalità ed esempi pratici Andiamo a mostrare brevemente una serie di applicazioni reali della sonificazione di dati, sia in contesti di analisi off-line che real-time, che hanno

15 2.3. FUNZIONALITÀ ED ESEMPI PRATICI 7 ispirato particolarmente lo studio della sua implementazione. Ogni esempio riporta una funzionalità generale che è offerta dalla tecnica della sonificazione Analisi esplorativa dei dati: sonificazione dei parametri metereologici Una delle funzionalità della sonificazione di dati è l analisi qualitativa di un insieme di dati da esplorare. Spesso questo tipo di sonificazione mappa dati in proprietà sonore, come frequenza, intensità, timbro. Data la possibilità del nostro orecchio di percepire piccoli cambiamenti nelle caratteristiche del suono, questa tecnica ci permette di ascoltare proprietà dei dati. I suoni generati da questo mappaggio sono detti grafici audio. È spesso utilizzata per l analisi statistica di grandi insieme di dati in poco tempo, al fine di ricavare un idea qualitativa sull andamento di un insieme di dati da esplorare, per poi scegliere che tipo di analisi successiva effettuare e su quale sottoinsieme di dati. Per illustrare questa tecnica, è presentato un esempio di analisi esplorativa da uno studio non pubblicato sulla percezione di grafici metereologici, tratto da [8]. In questo studio, dati provenienti da osservazioni metereologiche di Lincoln, nel Nebraska, sono stati usati per creare dei grafici audio; uno per ogni mese di osservazione. Il suono generato consiste nella successione di gruppi di quattro note MIDI di violini: ogni gruppo presenta la temperatura massima e minima di un giorno e l altezza della nota è proporzionale al valore della temperatura. Nei giorni in cui si sono osservate precipitazioni, sono aggiunte, sulla quarta nota, da una a tre note di pianoforte, che indicano la quantità di precipitazione. L ascolto di queste tracce permette di estrapolare qualitativamente le caratteristiche del tempo nel mese di analisi e di percepire eventuali anomalie Audificazione: analisi di onde sismiche La sonificazione permette di rendere ascoltabili delle informazioni che solitamente vengono ricevute attraverso altri mezzi. La tecnica che consiste nella

16 8 CAPITOLO 2. POTENZIALITÀ DELLA SONIFICAZIONE trasformazione di informazione al fine di renderla ascoltabile dall orecchio umano è detta audificazione. Un esempio di audificazione in campo sismologico, tratto da [12], consiste nella compressione tempo-frequenziale di onde sismiche registrate dai sismografi. Questa trasformazione permette di traslare il contenuto frequenziale di onde sismiche, spesso con frequenze troppo basse per essere udite, nelle frequenze ascoltabili ( Hz). Attraverso l audificazione i sismologi sono in grado in maniera abbastanza precisa di trarre informazioni su lunghi periodi di registrazioni sismiche in poco tempo, riconoscendo particolari proprietà sonore del suono generato. Per esempio, sono in grado di riconoscere la distanza dell epicentro (dalla riverberazione del suono), la regione di rilevamento (dal timbro), la presenza di rumore di fondo e il tipo di movimento tettonico Divertimento: gestione di uno spazio uditivo virtale per videogiochi Spesso il suono è parte integrante dell intrattenimento, come il gioco, lo sport e l arte, insieme, ma non obbilgatoriamente, ad altri canali di informazione, come quello visivo. Nel campo sportivo, la sonificazione è recentemente utilizzata come percezione di comportamenti non sincroni in sport di squadra. Ha mostrato benefici come feedback real-time in sport competitivi come il canottaggio, dove la mancata sincronizzazione dei movimenti è percepita dagli atleti attraverso un suono. Nel campo artistico la sonificazione non poteva non essere considerata uno strumento chiave della computer music. Nuove forme di musica sono nate con l utilizzo della sonificazione, come la composizione algoritmica, dove l importanza non è sulla informazione veicolata, ma sull estetica del suono generato. Nel campo dell intrattenimento, quasi la totalità dei giochi elettronici sono accompagnati dal suono. Di alcuni giochi classici, come la Torre di Hanoi, sono state presentate versioni puramente sonore, prive di interfacce visive. Nei recenti videogiochi l esperienza dell utente è arricchita con suoni con proprietà dipendenti dall ambientazione del gioco; tramite il controllo di

17 2.3. FUNZIONALITÀ ED ESEMPI PRATICI 9 alcuni parametri (volume, riverberazione, panning 1 ) dei rumori di fondo, si dà all utente l idea di trovarsi in uno spazio virtuale con particolari proprietà Generazione di feedback: sincronizzazione di tracce accelerometriche Spesso l ascolto del suono è preferibile in ambienti in cui il canale visivo è occupato da altri compiti o risulta scomodo. Inoltre in alcuni casi un segnale sonoro può essere più intuitivo e più facilemente interpretabile. Una funzione che la sonificazione supporta è la generazione di feedback sonori in applicazioni di controllo umano. Un operatore umano può essere facilitato dal suono per redirigere le proprie azioni al giusto fine nella catena di controllo di un processo. Presentiamo un esempio, tratto da [13], nel quale gli studiosi si sono prefissi di mantenere sincronizzati dei movimenti prodotti da più persone, tramite l uso di un feedback sonoro musicale. Attraverso degli smartphone provvisti di accelerometri, le tracce accelerometriche provenienti da tutti i dispositivi vengono trasmesse ad un elaboratore centrale. Questo calcola la somiglianza tra le tracce e riproduce una traccia musicale dipendente da questo parametro. Se il valore di somiglianza è alto, i movimenti sono fortemente sincronizzati e il suono riprodotto è pulito e chiaro. Se invece i movimenti registrati sono poco o per niente sincronizzati, l indice di somiglianza calcolato è basso e la musica riprodotta risulta distorta da una trasformazione tempo-variante. L utente è quindi spronato a sincronizzarsi attivamente con gli altri utenti, al fine di minimizzare la distorsione della traccia e raggiungere un suono pulito Aumento della percezione umana: il caso Neil Harbisson La sonificazione è in grado di supplire alla mancata possibilità di percezione o attuazione in pazienti con disagi come la cecità, l afonia o l assenza di tatto. Particolari segnali acustici possono aiutare il paziente cieco ad orientarsi in uno spazio, o aiutare i pazienti con difficoltà di comunicazione. 1 il mixaggio di tracce audio nei diversi canali disponibili per la riproduzione.

18 10 CAPITOLO 2. POTENZIALITÀ DELLA SONIFICAZIONE L evoluzione di queste applicazioni ha permesso non solo di migliorare lo stile di vita del malato, ma anche di aumentare le percezioni e i sensi oltre il limite umano. Riportiamo di seguito il caso di Neil Harbisson ([7]), artista spagnolo affetto sin dalla nascita da acromatopsia, cioè la completa incapacità di percepire i colori. In collaborazione con Adam Montandon e Peter Kese, Harbisson ha sviluppato un dispositivo dotato di spettrografo che gli permette di ascoltare lo spettro della luce, riuscendo così a distunguere i diversi colori. Il dispositivo è installato sulla nuca e riproduce un timbro complesso con componenti frequenziali proporzionali a quelle della luce analizzata; il suono viene poi trasmesso per trasmissione ossea all apparato uditivo, creando una sinestesia tra vista e udito. Questo tipo di percezione sinestetica ha inciso moltissimo sulla sua vita e sulla sua arte. Oltre ad essersi riappropriato del concetto di colore come è percepito dall umanità (affermando di aver cominciato a sognare a colori ), Harbisson lo ha esteso, dato che tale dispositivo gli permette di percepire anche spettri luminosi non percepibili dall occhio umano, come gli infrarossi e gli ultravioletti. Posso percepire se ci sono rilevatori di movimento in una stanza o se mi stanno puntando con un telecomando, oppure posso percepire se una giornata di sole è adatta per abbronzarsi oppure ci sono troppi raggi ultravioletti, dannosi per la pelle. (Neil Harbisson 2012 [7]) L estensione delle percezioni umane può portare ad un aumento della nostra conoscenza, che è limitata dai nostri sensi e coadiuvata da strumenti esterni al nostro corpo che ci permettono di percepire oltre i limiti umani.

19 Capitolo 3 Il software Pure Data In questo capitolo viene mostrato brevemente il funzionamento del software di digital sound processing Pure Data, il suo linguaggio e le sue possibilità di estensione. Pure Data (o Pd) [3] è un ambiente di programmazione real-time per l elaborazione di segnali digitali, specialmente audio, video e grafici. Inizialmente sviluppato da Miller S. Puckette negli anni novanta come miglioramento del software di DSP 1 Max/MSP [2] [10], Pure Data e le sue estensioni sono attualmente mantenute da una comunità di sviluppatori che negli anni hanno contribuito alla crescita di questo software open source. 3.1 Funzionamento di Pure Data Pure Data è un linguaggio di programmazione orientato al flusso di dati: in un programma Pure Data (detto patch) le funzioni sono oggetti che svolgono certe operazioni, mentre la logica del programma è definita tramite il tracciamento dei collegamenti tra i vari oggetti; durante la programmazione viene costruito graficamente un grafo orientato i cui nodi sono costituiti da oggetti (dove i dati vengono elaborati) e i cui archi rappresentazio i collegamenti attraverso i quali i dati fluiscono da un oggetto all altro Finestra principale e patches Durante l esecuzione di Pd, è mostrata una finestra principale dal titolo Pd e zero o più finestre secondarie che mostrano i programmi Pd (o patches) 1 Digital Sound Processing 11

20 12 CAPITOLO 3. IL SOFTWARE PURE DATA aperti (Figura 3.1). La finestra principale permette di monitorare gli eventi audio e di modificare le opzioni audio globali. Nella parte inferiore della finestra è riportato il log di messaggi ed errori provenienti dalle patches aperte o da Pd stesso. Da questa finestra è possibile aprire (o creare) patches e di modificarle durante la loro esecuzione, rendendo l ambiente di programmazione real time. Figura 3.1: Finestra principale di Pd (dietro) e finestra di una patch aperta (davanti) Elementi del linguaggio I dati elementari gestiti da Pd sono detti atoms; questi possono essere: floats, numeri con un valore rappresentato su 32-bit in virgola mobile; symbols, stringhe di lettere non contenenti spazi bianchi;

21 3.1. FUNZIONAMENTO DI PURE DATA 13 pointers, che rappresentano una certa posizione in una struttura dati. Tutti i numeri (anche gli interi), sono gestiti da Pd come floats. Ogni stringa dell utente che non può essere ricondotta ad un float, viene interpretata come symbol. Un programma Pd è composto dalle seguenti entità: oggetti. Sono visualizzati sul programma tramite le object box, scatole dal bordo rettangolare che hanno il compito di interpretare il testo che l utente scrive al loro interno al fine di creare un unità di elaborazione che esegue le azioni desiderate. Il testo inserito viene diviso in atoms: il primo definisce la classe dell oggetto e gli altri, se presenti, formano gli argomenti di creazione dell oggetto. Se un oggetto può ricevere dati da altri oggetti è dotato di uno o più inlets, visibili come piccoli rettangolini neri posti sul bordo superiore della rappresentazione dell oggetto. Ugualmente se l oggetto è in grado di fornire dati per altri oggetti sono dotati di outlets, rappresetati dagli stessi rettangolini neri posti sul bordo inferiore dell oggetto (Figura 3.4). Gli oggetti si dividono in oggetti controllo, che svolgono la loro funzione alla risposta di eventi sporadici, e in oggetti tilde (tilde objects) che lavorano al sample rate, producendo solitamente campioni audio. Figura 3.2: osc : oggetto tilde Pd che produce un segnale audio sinusoidale alla frequenza data come argomento di creazione; la frequenza può essere modificata in real-time mediante ricezione di messaggi. messaggi. Sono l elemento di scambio tra oggetti; ogni oggetto con uno o più inlets può ricevere messaggi e ogni oggetto con uno o più outlets può inviarne. Un messaggio è composto da una lista di atoms in cui differenziamo due parti: un selettore (il primo atom della lista) e zero o più argomenti (il resto della lista). Dato che gli oggetti possono reagire in modi differenti a seconda dei messaggi che riceve, il selettore è un symbol (una stringa) che ha il compito di scegliere la giusta reazione

22 14 CAPITOLO 3. IL SOFTWARE PURE DATA dell oggetto al messaggio. Gli argomenti sono invece il contenuto del messaggio. Un messaggio particolare molto usato in Pd è un bang: questo è composto dal selettore bang e da nessun contenuto; è spesso usato come messaggio di trigger per operazioni. È possibile introdurre messaggi scritti dall utente nel flusso di dati di una patch attraverso le message box, rappresentate graficamente tramite scatole con il bordo destro a bandiera. Le message box contengono il messaggio che l utente ha scritto al loro interno al momento della creazione; hanno un inlet e un outlet: quando una message box riceve un messaggio dal suo inlet o riceve un click del mouse, spedisce attraverso il suo outlet il messaggio che contiene. Figura 3.3: Alcuni messaggi, da sinistra a destra (nella forma selettore argomenti): float 5, symbol mysymb, bang, list 1 2 three, list sym1 sym2, mysel 34 symb. Spesso la rappresentazione dei messaggi in Pd omette il selettore per tutti quelli standard, come float e list. elementi GUI. Sono tutti quegli elementi che non sono statici (come gli oggetti o le message box) e rispondono ad eventi di input da parte dell utente. Alcuni di questi sono: number box, symbol box, toggle, bang, vertical slider, horizontal slider, array. La particolarità degli elementi GUI è quella di mostrare e di poter modificare dinamicamente il loro contenuto, rendendoli elementi di controllo di un programma Pd. Per esempio una number box contiene un float ed ha un inlet e un outlet: il contenuto può essere modificato tramite il mouse o tramite messaggi ricevuti dall inlet; ogni volta che il suo contenuto è aggiornato, questo è spedito tramite il suo outlet. commenti. Sono commenti testuali che l utente può inserire liberamente sul piano di lavoro della patch. connessioni. Specificano il percorso dei dati uscenti da un elemento verso l ingresso di altri elementi. Sono rappresentate da segmenti tra object boxes, message boxes ed elementi GUI che collegano outlets e inlets. È possibile creare dei percorsi solo da outlets verso inlets (e non vice-

23 3.1. FUNZIONAMENTO DI PURE DATA 15 Figura 3.4: Elementi GUI disponibili in Pd. Grazie a questi elementi è possibile controllare graficamente il comportamento delle patch. versa). Inoltre sono distinguibili due tipi di connessioni (vd. Figura 3.1) che si differenziano per il flusso di dati che le attraversa: signal connection, che trasporta dati che vengono elaborati solitamente da tilde objects con il ritmo di campioni (float) al secondo (sample rate) trattandosi di campioni audio, control connection, attraverso il quale i dati vengono fatti scorrere e vengono elaborati il più velocemente possibile. Figura 3.5: Una semplice patch Pure Data: al click della message box il messaggio da essa contenuto viene recapitato all oggetto sommatore (costruito con argomento 13), che elabora il dato e lo consegna alla number box, che lo mostra al suo interno Passaggio e ordine dei messaggi Un messaggio è composto da un selettore seguito da un numero arbitrario di argomenti. Ogni volta che un messaggio viene passato ad un inlet di un elemento (solitamente oggetti, ma sono ammessi tutti gli elementi che possono ricevere un messaggio), questo ne controlla il selettore: se è riconosciuto come valido, viene eseguita un azione corrispondente a quel selettore. Spesso alla ricezione di un messaggio si ha come conseguenza la spedizione di un altro messaggio attraverso i prossimi elementi del grafo. L ordine di

24 16 CAPITOLO 3. IL SOFTWARE PURE DATA passaggio dei messaggi segue la regola della visita in profondità di un grafo. Consideriamo per esempio il seguente grafo: In questo esempio, quando la message box A viene sollecitata, manderà un messaggio alle message box B e C, in ordine non deterministico (dipenderà dall ordine di connessione degli oggetti, non ricostruibile). Il messaggio A non è propagato finchè non sono propagati tutti i messaggi nati da esso. Il messaggio C non è propagato finchè non è propagato D. Non è quindi possibile avere una sequenza di propagazione A-C-B-D dato che A attende che C sia totalmente propagato (in profontità). Le sequenze possibili di messaggi sono quindi A-B-C-D o A-C-D-B. Nel caso in cui si rende necessario un ordinamento temporale dei i messaggi in uscita, è possibile utilizzare particolari oggetti disponibili in Pd (come gli oggetti trigger o select). Questo tipo di propagazione dei messaggi non evita il formarsi di loop infiniti nella propagazione di messaggi. Per esempio consideriamo un oggetto float: questo oggetto ha il compito di immagazzinare un float e di porlo in output quando sollecitato. Per questo scopo ha due inlets; quello sulla sinistra che risponde a due selettori: float e bang. Quando questo inlet riceve un messaggio della forma float 34, questo riconosce il selettore float, immagazzina l argomento (34) e lo porge subito in output attraverso il suo unico outlet. Se invece riceve un messaggio della forma bang, allora porge in output il numero che aveva precedentemente immagazzinato. Dato che questo inlet quando sollecitato spedisce un messaggio in output, è detto hot inlet. L inlet sulla destra invece riconosce solo il selettore float e quando riceve un messaggio immagazzina il numero in esso contenuto senza porlo in output. Per questo è detto cold inlet.

25 3.1. FUNZIONAMENTO DI PURE DATA 17 Con pochissime eccezioni, tutti gli oggetti Pd con più di un input hanno questa differenza tra gli inlets. Questo tipo di distinzione tra hot inlet e cold inlet è necessaria per evitare condizioni di loop infiniti. Figura 3.6: Due esempi di costrutti ciclici (contatori): quello sulla destra genera un loop infinito. In figura 3.6 sono mostrati esempi di costrutti ciclici (contatori): nel caso sulla sinistra, ogni volta che il messaggio bang arriva all oggetto float ( f, abbreviazione per float), questo trasmette il suo contenuto all oggetto sommatore, che lo restituisce all oggetto float, immagazzinandolo tramite il cold inlet. Dato che l inlet non è reattivo, il contenuto viene immagazzinato nell oggetto, ma non portato in output. Nel caso sulla destra invece si ha un costrutto non corretto: se il messaggio 1 viene inviato, i due sommatori entrano in un loop di propagazione dei messaggi che non ha termine, portando così a una condizione di stack overflow. Questo perchè esiste un ciclo tra hot inlets (inlet reattivi) Meccanismi di astrazione Pure Data offre due meccanismi di astrazione per creare sottoprogrammi (sub-patches), chiamati one-off subpatch e abstraction. In tutti e due i casi, l astrazione creata apparirà nella patch come una object box. One-off subpatching Se creiamo una nuova object box e scriviamo al suo interno pd nomesubpatch, questo creerà una one-off subpatch e verrà aperta una nuova finestra nel quale è possibile stabilire il comportamento del sottoprogramma. Dentro al sottoprogramma è possibile usare gli oggetti inlet, inlet, outlet, outlet che creano i rispettivi inlet e outlet per la object box che contiene il sottoprogramma; in questo modo è possibile passare parametri e restituire risultati. È possibile duplicare le subpatch e modificare in modo indipendente ogni copia. La particolarità della one-off subpatch è che questa è salvata nello stesso file della patch principale.

26 18 CAPITOLO 3. IL SOFTWARE PURE DATA Figura 3.7: Esempio di una one-off subpatch. Il sottoprogramma può essere modificato dalla propria finestra (sulla destra). Abstraction subpatching Per creare una abstraction, è necessario salvare il sottoprogramma come patch a sè stante, per esempio con nome abstraction1.pd ; una volta disponibile questo file, è possibile richiamare il nome del file senza estensione dentro una object box per richiamare l astrazione creata. Questa tipo di sottoprogramma può essere modificata in modo indipendente dalle patch che la usano: le modifiche effettuate al file abstraction1.pd si rifletteranno in tutte le patch che lo includono. Figura 3.8: Esempio di un abstraction: il comportameto dell oggetto abstraction1 è definito dentro il file abstracion1.pd Per fare un analogia con il linguaggio di programmazione C, le one-off subpatches corrispondono ai blocchi di codice tra parentesi graffe, mentre le abstractions corrispondono a funzioni.

27 3.1. FUNZIONAMENTO DI PURE DATA Array numerici Pure Data permette di allocare array lineari (o tabelle) di floats di 32-bit. Questo tipo di strumento è molto usato nella sintetizzazione di suono, attraverso per esempio la riproduzione di una particolare forma d onda salvata come campioni audio dentro una tabella. Se la dimensione scelta dell array è N, gli indici per accedere al suo contenuto vanno da 0 a N 1. La lettura o la scrittura in un array sono demandati a specifici oggetti: tabread, tabwrite (più le versioni per dati di controllo e per segnali, che non riportiamo). Figura 3.9: Un array in Pd (sulla sinistra), la lettura del terzo elemento dell array, restituito in output dal oggetto tabread (al centro), la scrittura del valore 0.5 nel terzo elemento tramite l oggetto tabwrite (sulla destra). È possibile usare tabwrite con un messaggio dal selettore list con due elementi (come mostrato in figura) oppure usare il secondo inlet per fornire l indice, e il primo per fornire il contenuto ed effettuare la scrittura. Per questo tipo di elemento è possibile abilitare il salvataggio del suo contenuto all interno del file patch in cui è utilizzato attraverso l opzione save contents nelle sue proprietà. È consigliabile però salvare il contenuto di array, specialmente se formato da campioni audio, dentro separati file audio in formato WAV o AIFF e di caricare questi file dentro gli array al momento dell inizializzazione. Questa operazione dovrebbe essere effettuata prima dell inizio dell elaborazione audio, dato che l allocazione di memoria e le operazioni di I/O sul disco possono generare overruns o underruns del buffer audio Formato del file patch Il salvataggio di una patch creata con Pd genera un file con estensione pd. Questo file contiene in formato testuale (Figura 3.10) le informazioni che servono per ricreare oggetti e connessioni presenti al momento del salvataggio,

28 20 CAPITOLO 3. IL SOFTWARE PURE DATA ma non per ripristinare lo stato degli oggetti ed elementi GUI: ogni volta che si apre una patch, lo stato dei vari elementi è resettato. Figura 3.10: File di testo generato (sulla destra) dal salvataggio della patch mostrata sulla sinistra. Nonostante il formato del file pd sia abbastanza criptico e non facilmente modificabile tramite editor di testo, questa scelta è stata presa dagli sviluppatori di Pd per mantenere la compatibilità delle patches con software simili (Max/MSP) e per adottare un formato facilmente stampabile su carta. Le difficoltà di modifica e di leggibilità sono superate dal fatto che il software Pure Data, essendo open source, è facilmente reperibile ed installabile su molte piattaforme, non rendendo necessaria la modifica manuale dei file pd. 3.2 Estensioni al linguaggio Pure Data offre la possibilità all utente di creare nuove classi di oggetti con comportamenti specifici, attraverso l impiego di un interfaccia pubblica definita in C. Date le caratteristiche del suo linguaggio visuale, Pd è costruito seguendo il paradigma object-oriented. Sfortunatamente il linguaggio C non permette un implementazione elegante (almeno non quanto il C++) del concetto di classe; per questo sono stati creati altri strumenti che permettono l impiego della stessa interfaccia in altri linguaggi, come C++, Fortran, Python e molti altri Internals, externals e librerie In Pd si differenziano due tipi di classi: internal È una classe di oggetti che è compilata in Pd. Molti oggetti primitivi come gli operatori logico-artimetici (+, *, /, mod, >, etc..) ed oggetti di uso frequente (trigger, send, receive, tabwrite, osc, pha-

29 3.2. ESTENSIONI AL LINGUAGGIO 21 sor ) sono internals. staticamente. Il loro caricamento in memoria è effettuato external È una classe di oggetti che non è compilata in Pd; ma viene caricata dinamicamente durante l esecuzione se è richiesta. Una volta che un external è stato caricato in memoria, non è più distinguibile da un internal. Uno o più externals possono essere compilati in un unico file binario. Questa collezione di oggetti è detta libreria. I file di libreria sono semplicemente librerie caricabili dinamiche con estensione dipendente dalla piattaforma per cui sono state compilate (.pd linux,.pd darwin,.dll, etc..). La forma più semplice di libreria è quella composta da un solo external con nome coincidente a quello della libreria (libreria mylib che contiene la dichiarazione della classe di oggetti mylib) Meccanismo di inclusione Pd supporta due modalità di inclusione di librerie. Supponiamo di voler includere una libreria con nome mylib ; questo è possibile: attraverso l opzione da riga di comando: -l mylib, creando un oggetto mylib. Nel primo caso, tutti gli externals della libreria sono caricati all avvio di Pd. Questo metodo è consigliato nel caso di librerie che contengono più externals. Nel secondo caso Pd controllerà che la classe mylib sia già stata caricata. In caso negativo, Pd cercherà in tutti i percorsi dichiarati nella variabile di ambiante path un file chiamato mylib.pd linux (o con l estensione dell ambiente di esecuzione). Se il file è trovato, verranno caricati tutti gli externals contenuti nella libreria chiamando la funzione mylib setup(). Una volta caricati, Pd cercherà di istanziare la classe mylib, anche se la classe con tale nome può non essere contenuta nella libreria mylib Struttura del codice C di un external Per scrivere un external è richiesta una certa interfaccia, questa è definita nel file m pd.h. È quindi necessario includere questo file.

30 22 CAPITOLO 3. IL SOFTWARE PURE DATA #include "m_pd.h" Ricalcando il paradigma object-oriented, una classe è composta da un insieme di dati, detto dataspace, e da un insieme di operazioni di manipolazione, detto methodspace. Per prima cosa, dobbiamo definire un puntatore al tipo t class che conterrà la classe che andremo a generare. Poi definiamo il dataspace della nostra classe: static t_class *myobject_class; typedef struct _myobject { t_object x_obj; /*... altri campi necessari al mio oggetto... */ t_myobject; Il primo e unico campo obbligatorio del dataspace deve essere del tipo t object, necessario a Pd per gestire la visualizzazione grafica dell oggetto e altre strutture dati come inlets e outlets. A questa struttura posso aggiungere poi tutti i campi necessari al funzionamento del mio oggetto. Definiamo ora il methodspace dell oggetto. Ogni volta che un istanza dell oggetto riceve un messaggio, viene invocato un metodo. Un metodo è definito come una funzione void con almeno il primo parametro del tipo del dataspace da noi definito. Per esempio la seguente funzione può essere una definizione valida di un metodo per la risposta alla ricezione di messaggi di selettore bang : void myobject_bang(t_myobject *x) { // Possibile modifica del data space // attraverso il puntatore x. /*... */ Metodi di risposta ad altri messaggi possono avere intestazioni diverse, in particolare hanno solitamente come parametri il contenuto dei messaggi ricevuti. Alcuni esempi di intestazione 2 : 2 L elenco completo è reperibile in [14]

31 3.2. ESTENSIONI AL LINGUAGGIO 23 void myobject_float(t_myobject *x, t_floatarg f); void myobject_symbol(t_myobject *x, t_symbol *s); void myobject_list(t_myobject *x, t_symbol *s, int argc, t_atom* argv); Al momento abbiamo definito dataspace e methodspace della nostra classe. Possiamo ora implementare le funzioni myobject new() e myobject setup(). La prima è il costruttore di un oggetto; viene richiamata ogni volta che la nostra classe viene istanziata. La seconda viene chiamata da Pd per generare la nostra classe, abbinando ad un nome simbolico (myobject) un certo dataspace, methodspace, costruttore ed eventuale distruttore. void *myobject_new() { t_myobject *x = (t_myobject) pd_new(myobject_class); // altre inizializzazioni necessarie al nostro oggetto /*... */ return (void*) x; void myobject_setup() { myobject_class = class_new( // simbolo a cui associare la nuova classe gensym("myobject"), // il costruttore della classe (t_newmethod) myobject_new, // il distruttore, qui non definito 0, // la dimensione del dataspace sizeof(t_myobject), // tipo di visualizzazione grafica scelta per l oggetto CLASS_DEFAULT, // successivi argomenti sono per definire il tipo // degli argomenti di creazione dell oggetto,

32 24 CAPITOLO 3. IL SOFTWARE PURE DATA // lo 0 termina la lista. In questo caso non // ci sono argomenti di creazione. 0); // associazione del methodspace: associo il metodo // myobject_bang in risposta ai messaggi dal selettore "bang". class_addbang(myobject_class, myobject_bang); Una volta compilato per la piattaforma desiderata 3, l external può essere incluso nelle patch Pure Data tramite uno dei metori di inclusione elencati in Per un esempio concreto di sorgente C di un external si rimanda all appendice B. 3 Per una corretta documentazione, compilazione e pacchettizzazione, si consiglia di partire da questo scheletro (scaricabile anche tramite Subversion checkout): https:// pure-data.svn.sourceforge.net/svnroot/pure-data/trunk/externals/template

33 Capitolo 4 Pure Data su Android: libpd In questo capitolo è mostrata la struttura e il funzionamento di libpd, un progetto che mira a far diventare Pure Data una libreria di sintesi audio multipiattaforma. libpd 1 offre piccoli strati di software che permettono l interfacciamento a Pure Data da molti linguaggi di programmazione, come Java, Objective C e Python, supportando quindi l inclusione in piattaforme mobili come Android e ios. In particolare si è approfondita la struttura del software che permette l interfacciamento con Java e delle classi che permettono di integrare Pure Data come un servizio Android. Come esposto in [5], libpd permette una separazione netta tra la progettazione sonora e l applicazione in cui questa è necessaria. Questo risultato è stato raggiunto con il grande sforzo di separare il signal processing di Pure Data da tutti i suoi elementi grafici, come la visualizzazione degli oggetti e la GUI. 4.1 Architettura degli wrapper Java di libpd Attraverso l uso di JNI 2, sono stati definiti metodi nativi in Java che si interfacciano, attraverso del middleware, alle funzioni scritte in C offerte dalla libreria libpd. È quindi possibile sfruttare la potenza di signal processing di Pd invocando questi metodi nativi. Mostriamo ora la struttura del middleware Java (Figura 4.1): 1 2 Java Native Interface: framework di programmazione che permette ad applicazioni Java di interfacciarsi con funzioni scritte in C, C++ o assembler. 25

34 26 CAPITOLO 4. PURE DATA SU ANDROID: LIBPD Figura 4.1: Diagramma UML delle classi del middleware Java di interfacciamento a libpd. (Gli elementi senza bordo con sopra un cerchietto rappresentano le interfacce.)

35 4.1. ARCHITETTURA DEGLI WRAPPER JAVA DI LIBPD 27 PdBase È lo wrapper elementare di libpd. È incaricato di riproporre la stessa interfaccia proposta dalla libreria, gestendo la conversione dei tipi tra Java e C. Inoltre provvede alla sincronizzazione tra threads, offrendo tutti i metodi pubblici synchronized. Offre metodi per l inizializzazione parametrica di Pd e per l elaborazione di segnali. Tra i molti metodi offerti da PdBase ne mettiamo in evidenza alcuni: openaudio(int inputchannels, int outputchannels, int samplerate); Inizializza il motore audio di Pd con i parametri forniti. Questa operazione deve essere effettuata prima di chiamare i metodi di signal processing. process(int ticks, float[] inbuffer, float[] outbuffer); È il cuore del signal processing. Questo metodo elabora ticks blocchi di dati (solitamente un blocco in Pd è formato da 64 campioni se non configurato diversamente), utilizzando come segnale di input inbuffer (che può essere anche vuoto o non significativo) e ponendo l output dell elaborazione in outbuffer. Il risultato dell elaborazione, se si tratta di audio, può essere instradato verso l hardware audio per la riproduzione attraverso le chiamate che il sistema operativo offre. openpatch(file file); Permette di aprire un patch Pd salvata in file e di settare così l elaborazione audio desiderata. sendband(string symbol); sendfloat(string symbol, float f); sendmessage(...);... Alcuni dei metodi offerti che permettono di inviare informazioni di controllo (come bangs, floats, messaggi, eventi MIDI, etc.) a Pd. NativeLoader, NativeLibraryLoadError la classe NativeLoader è un insieme di funzioni di utilità per la scelta della giusta piattaforma e per il caricamento del corretto codice nativo. La classe di errore NativeLibraryLoadError è una specializzazione di UnsatisfiedLinkError, una cui istanza viene sollevata in caso di errori di caricamento. Questi elementi sono utilizzati da PdBase in fase di inizializzazione di Pd.

36 28 CAPITOLO 4. PURE DATA SU ANDROID: LIBPD PdReceiver Interfaccia minima che deve essere implementata da oggetti che desiderano ricevere messaggi da Pd. Per ricevere messaggi, dobbiamo sottoscriverci a uno o più simboli Pd, tramite la chiamata al metodo subscribe() di PdBase, e registrare un ricevitore che implementa questa interfaccia a PdBase tramite il metodo setreceiver(). Ogni volta che un messaggio è diretto verso i simboli a cui siamo sottoscritti, verranno invocati i metodi del ricevitore implementati dall utente. PdMiniReceiver Ugualmente a PdReceiver, un oggetto può ricevere eventi MIDI da Pd implementando questa interfaccia, sottoscrivendosi ai simboli che gli interessano e registrando un ricevitore MIDI presso PdBase attraverso il metodo setmidireceiver(). PdDispatcher Questa classe astratta è una realizzazione parziale dell interfaccia PdReceiver, al fine di gestire, tramite il design pattern Observer, lo smistamento dei messaggi provenienti da Pd verso più destinazioni interessate solo a particolari messaggi. Più ascoltatori possono registrarsi presso un PdDispatcher tramite il metodo addlistener(), che ha come parametri il simbolo da cui l ascoltatore vuole ricevere un messaggio e un oggetto che implementa PdListener. Ogni volta che un messaggio arriva al PdDispatcher, questo ne controlla il simbolo da cui proviene; verranno chiamati i metodi corrispettivi di tutti i PdListener che sono stati associati a quel simbolo. Per istanziare un PdDispatcher è necessario implementare il metodo print(), che viene richiamato ogni volta che un messaggio viene spedito ad un oggetto [print] in una patch Pd in esecuzione. Il contenuto del messaggio da stampare verrà passato come parametro al metodo implementato. 4.2 Inclusione di libpd su Android Come esposto in [5], il sistema operativo Android non permette (o non permetteva nelle sue versioni precedenti) di connettersi dal codice nativo C ai dispositivi di input e output audio. Questo problema, che ha portato alla maturazione di libpd isolando il signal processing dal resto, è stato risolto sviluppando degli wrapper Java che gestiscono i dispositivi audio tramite le API offerte da Android. L insieme di questi wrappers è mantenuto in un sottoprogetto di libpd chiamato pd-for-android. Mostriamo ora la struttura

37 4.2. INCLUSIONE DI LIBPD SU ANDROID 29 e l utilizzo di questo software. Per facilità di esposizione, tratteremo singolarmente i tre package in cui il software è diviso (io, service, utils), partendo da quello più vicino alle API di gestione dei dispositivi audio, fino a quello più ad alto livello utilizzato dalle applicazioni, seguendo un approccio bottom-up Package io Figura 4.2: Diagramma UML delle classi del package io. Date le diversità dei device con cui Android deve interfacciarsi, è stato necessario lo sviluppo di una classe che invocasse le API Android con parametri dipendendi dal dispositivo, in modo da minimizzare la latenza (per quanto è possibile a livello di applicazione) e creare una più stretta possibile sincronizzazione dell I/O audio.

38 30 CAPITOLO 4. PURE DATA SU ANDROID: LIBPD Per questi compiti sono disponibili diverse classi wrappers e classi di utilità: AudioWrapper Questa classe nasconde la complessità di operare con campioni audio codificati PCM offrendo un interfaccia simile a quella offerta dal server audio JACK 3. Al momento della sua istanziazione, è necessario implementare il metodo process() e specificare i parametri audio, come numero dei canali di ingresso e uscita, sample rate e dimensioni del buffer. La grandezza effettiva del buffer verrà scelta come la minima grandezza del buffer multipla di quella specificata ammessa dalla piattaforma. Quando si invoca il metodo start(), questo wrapper farà partire un thread che ciclicamente preleverà segnali audio dal buffer del microfono se richiesto (tramite un oggetto AudioRecordWrapper), elaborerà l output chiamando il metodo process() implementato dallo sviluppatore, e scriverà questo output nel buffer diretto al dispositivo audio di output (tramite un oggetto AudioTrack). AudioRecordWrapper È uno wrapper per la classe offerta dal sistema AudioRecord per l acquisizione di segnali audio da dispositivi di input audio come microfono o line-in. Questa classe è nata con l intento di isolare e risolvere problemi di audio input che possono presentarsi in specifici dispositivi. AudioParameters È una classe di utilità che fornisce i migliori parametri audio (massimo numero di canali audio in ingresso e uscita, massima sample rate) supportati per la piattaforma corrente. Questi parametri sono determinati eseguendo al caricamento statico della classe dei test con varie configurazioni. VersionedAudioFormat È una classe di utilità che fornisce i giusti parametri per la selezione del formato dell audio dipendentemente dalla versione di Android che si sta utilizzando. Questo per rendere il codice portabile anche nelle versioni più vecchie di Android. Questo strato di software nasconde la gestione device-dependant, grazie all interfaccia offerta da AudioWrapper. In questo modo ogni applicazione 3 JACK Audio Connection Kit:

39 4.2. INCLUSIONE DI LIBPD SU ANDROID 31 di elaborazione audio può operare non preoccupandosi delle differenze tra i dispositivi su cui questa verrà distribuita. La classe PdAudio gestisce una istanza di AudioWrapper che usa Pure Data come metodo di elaborazione dei segnali audio. Per fare questo, PdAudio crea una istanza di classe anonima estesa da AudioWrapper implementando il metodo astratto process(...) tramite una chiamata a PdBase.process(...): public class PdAudio { private static AudioWrapper audiowrapper = null; [...] public synchronized static void initaudio([...]) { [...] audiowrapper = new AudioWrapper([...]) protected int process(short[] inbuffer, short[] outbuffer) { Arrays.fill(outBuffer, (short) 0); return PdBase.process([...], inbuffer, outbuffer); [...] Inoltre PdAudio si preoccupa contestualmente della corretta inizializzazione della libreria Pd dipendentemente dai parametri audio scelti dallo sviluppatore Package service Nella programmazione di applicazioni Android si distinguono grossolanamente due tipi di contenitori di flussi di esecuzione: le attività (Activity), che hanno una interfaccia grafica e sono eseguite solo in foreground, e i servizi (Service), che non hanno interfaccia grafica ed eseguono in background. In questo package sono presenti le classi che permettono di usare Pure Data nelle applicazioni Android come servizio locale all applicazione. Utilizzando un servizio, più attività nella stessa applicazione possono usufruire dell elaborazione audio offerta dal servizio.

40 32 CAPITOLO 4. PURE DATA SU ANDROID: LIBPD Figura 4.3: Diagramma UML delle classi del package service.

41 4.2. INCLUSIONE DI LIBPD SU ANDROID 33 Con l aggettivo locale si intende che il servizio ha la stessa vita dell applicazione e che è eseguito su un thread dello stesso processo dell applicazione che lo richiede. È possibile anche implementare un servizio remoto che esegue su un processo diverso da quella dell applicazione; questi servizi sono più veloci e flessibili, possono essere usati da più applicazioni in modo parallelo, ma richiedono un notevole overhead e un aumento della complessità del codice di gestione. La classe fondamentale contenuta in questo package è PdService, che implementa l interfaccia Service offerta da Android. Nonostante la possibilità di implementare un servizio di tipo remoto, gli sviluppatori hanno optato per un servizio locale, dato che i vantaggi offerti dal primo erano pochi e non in grado di giustificare i costi ([5]). Ogni volta che un applicazione richiede la creazione di un servizio Pd- Service, un istanza del servizio è creata e inizializzata in modo asincrono rispetto all attività che ha richiesto l attivazione. Quando il servizio è inizializzato, questo restituisce all attività un oggetto che implementa IBinder, attraverso la quale interfaccia l attività può comunicare con il servizio. Pd- Service internamente definisce un tipo PdBinder estensione di Binder che offre il metodo getservice(), che restituisce un riferimento all istanza stessa del servizio; in questo modo l attività può invocare direttamente i metodi dell istanza di PdService. I metodi initaudio(), startaudio() e stopaudio() offerti da PdService consentono, tramite la classe PdAudio, corrispettivamente di inizializzare un thread che elabora audio con Pure Data, di farlo partire e di interromperlo. La classe PdPreferences è una estensione della classe PreferenceActivity offerta da Android. Contiene un modulo comprendente una interfaccia grafica che lo sviluppatore può includere nella propria applicazione per permettere all utente di modificare i principali parametri audio con cui Pure Data è inizializzato, come il sample rate e il numero dei canali Package utils Questo piccolo package contiene due classi di utilità. La classe PdUiDispatcher è una sottoclasse di PdDispatcher che permette di eseguire le chiamate ai metodi implementati nel thread in cui

42 34 CAPITOLO 4. PURE DATA SU ANDROID: LIBPD Figura 4.4: Diagramma UML delle classi del package utils. sono stati creati (solitamente il thread UI principale dell applicazione) e non nel thread audio gestito da Pure Data. La classe Properties non ha metodi, ma solo attributi inizializzati staticamente che contengono informazioni sulla CPU e sulla versione di Android in uso. È utilizzata da PdService per caricare delle estensioni compilate native di Pure Data dipendentemente dal tipo di CPU in uso. 4.3 Problematiche e limitazioni Assenza di real-time Nella realizzazione di libpd, gli sviluppatori hanno dovuto estrarre dal codice di Pure Data la parte che gestisce il signal processing, togliendo tutta la gestione dell interfaccia grafica che permetteva di modificare in tempo reale la patch in esecuzione. In libpd è stata persa la possibilità, presente originalmente in Pure Data, di modifica on-line dei programmi in esecuzione da parte dell utente, dato che la libreria non offre chiamate che permettono di modificare connessioni ed oggetti. È quindi necessario scrivere il programma Pure Data off-line, e poi caricare il file patch definitivo nel progetto Android in cui si vuole utilizzarlo. Una soluzione potrebbe essere integrare l interfaccia di libpd con delle chiamate per la gestione degli oggetti e delle connessioni delle patch aperte,

43 4.3. PROBLEMATICHE E LIMITAZIONI 35 mediante la rifattorizzazione del codice usato in Pure Data per la gestione della GUI; ma questa soluzione prevede un grosso lavoro di studio sul sorgente di Pure Data e sulla sua integrazione in libpd Latenza tra ingresso e uscita Questo strato di software capace di integrare il signal processing di Pure Data è posizionato a livello applicazione. Nonostante le accortezze prese nelle classi wrapper per minimizzare la latenza considerando il dispositivo in uso, a questo livello non è possibile ridurre la latenza audio attuale che si aggira sui valori di diverse centinaia di millisecondi. Sono riportati nella tabella 4.1 i valori di latenza media misurati tra input e output audio mediante l applicazione PureDataLatencyTester 4 su varie configurazioni di dispositivi. I tempi di latenza indicati sono misurati nel seguente modo: vengono emessi, tramite l esecuzione di un programma Pure Data, dei segnali acustici che lo stesso programma ha il compito di rilevare nel segnale proveniente dal microfono del dispositivo. La rilevazione viene effettuata dall oggetto bonk, che rileva picchi di potenza nei segnali dati come input. Il tempo di latenza stimato è il tempo intercorso tra l emissione del segnale acustico e la sua rilevazione. Nei campi di applicazione in cui l esigenza di un feedback sonoro in tempo reale è molto stretta, questa latenza può portare ad eccessivo ritardo e quindi ad un degradamento del servizio offerto. I tempi di latenza sembrano però scendere nei nuovi dispositivi, dotati di hardware migliore e di versioni di Android più recenti. Possiamo notare come le performance di libpd sono elevate in ios, dato il supporto nativo di codice C, in cui libpd è scritto, e quindi l assenza del software di interfacciamento, necessario in Android, che introduce maggior parte della latenza misurata. 4

44 36 CAPITOLO 4. PURE DATA SU ANDROID: LIBPD Tabella 4.1: Latenza media misurata tra input audio e output audio in libpd. Dispositivo Versione SO Latenza media Inq Cloud-touch ms Samsung Galaxy Tab ms Acer Iconia A ms HTC Legend ms HTC Sensation ms Samsung Galaxy S ms Samsung Nexus S ms Evo 4g ms Samsung Infuse ms Samsung Droid Charge ms LG Optimus GT ms Nexus One ms Asus Transfromer ms LG Optimus 2x ms HTC Desire ms SE Experia ARC ms Nexus S 4.0 (beta) 380ms Samsung Galaxy S Plus ms Samsung Galaxy S II ms Samsung Galaxy Tab ms Acer Liquid MT ms Misura di riferimento effettuata su piattaforma ios (pd-for-ios) ipod Touch 2g ios ms

45 Capitolo 5 Prototipi ed esempi di applicazione realizzati In questo capitolo verranno esposti i prototipi realizzati durante lo studio dell ambiente Pure Data e la sua integrazione in Android. 5.1 Sonificazione parametrica: PdPatchRunner La prima applicazione realizzata, chiamata PdPatchRunner, consiste in una interfaccia di controllo per una collezione di esempi di sonificazione parametrica programmati in Pure Data. L applicazione si snoda in due frammenti (Figura 5.2): selezione della patch Il frammento principale è quello di selezione degli esempi. Viene mostrata una lista di programmi Pure Data con informazioni descrittive sui suoi parametri e sul suono che questi generano. La lista viene popolata in base alle informazioni presenti in file XML collocati nella cartella di progetto assets/patch metadata (Figura 5.1). Una volta che l utente sceglie un esempio dalla lista, viene inizializzato il secondo frammento, passandogli come parametro la patch selezionata. gestione della patch Una volta che la patch è stata scelta, questo frammento pensa ad avviare il servizio Pure Data e ad aprire il file patch desiderato, presente in assets/patches. Viene inoltre costruita una interfaccia che permette di cambiare i parametri che Pure Data utilizza 37

46 38CAPITOLO 5. PROTOTIPI ED ESEMPI DI APPLICAZIONE REALIZZATI <patch file="freqmodulation.pd" title="frequency Modulation"> <sink id="basefrequency" minvalue="220" maxvalue="660" defaultvalue="440" unit="hz" /> <sink id="modulationfrequency" minvalue="0" maxvalue="50" defaultvalue="5" unit="hz" /> <sink id="modulationindex" minvalue="1" maxvalue="100" defaultvalue="10" unit="" /> <description> Esempio di modulazione di un segnale sinusoidale in frequenza. </description> </patch> Figura 5.1: Esempio di descrittore di patch XML.

47 5.1. SONIFICAZIONE PARAMETRICA: PDPATCHRUNNER 39 per generare il suono. I parametri modificabili, i loro valori massimi, minimi e le loro unità di misura sono indicate nel file XML che descrive la patch. Figura 5.2: Frammenti dell applicazione: selezione della patch (a sinistra) e gestione della patch in esecuzione (al centro). A destra la patch Pure Data in esecuzione. Inoltre vengono gestiti gli eventi provenienti dal sistema Android che possono alterare il ciclo di vita dell applicazione. Nel caso in cui il sistema chieda la distruzione o la messa in pausa dell applicazione, questa provvede correttamente a fermare il servizio Pure Data e a rilasciare le risorse audio se necessario. Di seguito mostriamo il codice per la gestione di tali public void onstop() { super.onstop(); PdController.stopAudio(); public void onstart() { super.onstart(); PdController.startAudio();

48 40CAPITOLO 5. PROTOTIPI ED ESEMPI DI APPLICAZIONE public void onpause() { PdController.stopDSP(); public void onresume() { PdController.startDSP(); mdsptogglebutton.setchecked(true); super.onresume(); L oggetto PdController è uno wrapper per il servizio PdService scritto ad-hoc per questa applicazione; ha il solo compito di facilitare la lettura del programma. 5.2 Estensione del servizio orientata al flusso di dati: PdSonifier Nel trattare campioni provenienti da sensori si ha a che fare con flussi di dati che vogliamo consegnare in modo continuo al servizio che li analizza o li sonifica in real-time. Il normale meccanismo di instradamento offerto da libpd, consiste nella spedizione di un singolo messaggio Pure Data (tramite i metodi PdBase.sendMessage(), PdBase.sendFloat(), etc..) verso un particolare oggetto della patch in esecuzione (solitamente un oggetto [receive symbol name]). Questa operazione è necessaria ogni volta che è disponibile un dato dal sensore. È necessaria la scrittura di un gestore che, non appena sono disponibili nuovi dati, pensi a instradarli con tale meccanismo. Il progetto PdSonifier estende il servizio PdService offerto da libpd implementando un semplice meccanismo di instradamento di flussi di dati verso uno o più simboli Pure Data in ricezione. La classe che implementa il servizio esteso è SonificationService. Per creare e gestire un istanza di questo servizio si usa lo stesso procedimento

49 5.2. ESTENSIONE DEL SERVIZIO ORIENTATA AL FLUSSO DI DATI: PDSONIFIER41 usato per PdService, di cui riportiamo solo l oggetto ServiceConnection in Figura 5.3. private SonificationService sonificationservice = null; private final ServiceConnection sonificationserviceconnection = new ServiceConnection() public void onserviceconnected(componentname name, IBinder service) { sonificationservice = ((SonificationService.LocalBinder) service).getservice(); // inizializzo flussi da sonificare /*... */ sonificationservice.startaudio(); public void onservicedisconnected(componentname name) { Figura 5.3: Definizione di un gestore di connessione al servizio SonificationService da passare come parametro alla bindservice(). Questa classe offre i seguenti metodi aggiuntivi: Metodi per la gestione del processing audio di Pd public void startdsp(); public void stopdsp(); public void toggledsp(); public void isdspon(); public void openpatch(file patchfile) throws IOException; Questi metodi permettono di gestire lo stato del DSP (Digital Sound Processing) di Pure Data indipendentemente dall acquisizione o dal rilascio delle risorse audio.

50 42CAPITOLO 5. PROTOTIPI ED ESEMPI DI APPLICAZIONE REALIZZATI Inoltre questi metodi sollevano eventi di inizio e fine elaborazione alla patch in esecuzione, in modo da permettergli di eseguire l operazione di ducking, che consiste nel portare a zero il segnale audio in uscita in modo continuo e non repentino, al fine di evitare la riproduzione di spiacevoli clicks generati dall interpolazione effettuata dallo hardware audio. Il metodo openpatch() permette di sostituire la patch in esecuzione sollevando correttamente gli eventi di ducking alla patch entrante e a quella uscente. Se vogliamo aprire più patches contemporaneamente, possiamo ricorrere al metodo openpatch() offerto da PdBase. Metodi per la gestione delle risorse audio public void startaudio(boolean duckin); public void stopaudio(boolean duckout); public void toggleaudio(); public void isaudioon(); Questi metodi gestiscono l acquisizione e il rilascio delle risorse audio del sistema e contestualmente l inizializzazione e la gestione dello stato dell elaborazione, mediante chiamate ai metodi citati sopra. Il primo metodo permette di acquisire la risorsa audio dal sistema e di inizializzare, se necessario, i parametri dell elaborazione sonora (come sample rate, numero canali, etc..); il secondo permette l operazione inversa, cioè il rilascio delle risorse. I parametri boolean di entrambi indicano al servizio se sollevare o no gli eventi di inizio o fine elaborazione alla patch in esecuzione. Metodi per l instradamento di flussi di floats public StreamSonifierHandler newstreamsonifier(inputstream inputstream, String[] destinations); public StreamSonifierHandler newstreamsonifier(inputstream inputstream); public StreamSonifierHandler newstreamsonifier(string[] destinations); public StreamSonifierHandler newstreamsonifier(); Il metodo newstreamsonifier e le sue varianti consentono di creare un nuovo oggetto di tipo StreamSonifierHandler, un gestore di sonificazione

51 5.3. SONIFICAZIONE APPLICATA AL MONITORAGGIO DI ATTIVITÀ UMANE: PDFUN43 di un flusso. Questa classe eredita da Thread e fornisce un flusso di esecuzione ciclico che preleva dati da un InputStream con operazioni bloccanti e li instrada verso uno o più simboli di destinazione in Pd. (Figura 5.4) Il parametro inputstream permette di passare al gestore di sonificazione uno stream di dati da cui questo deve leggere e bloccarsi. Se questo è assente, verrà creato un gestore locale inizialmente privo di stream di input; attraverso il metodo getoutputstream() applicato al gestore, è possibile ricavare un riferimento ad un oggetto DataOutputStream e passare dati al gestore tramite il metodo writefloat() di questo oggetto. (Figura 5.5) Il formato dei dati passati nello stream deve essere quello di float su 4 byte network ordered; è consigliato l utilizzo del tipo wrapper DataOutputStream che ha il metodo writefloat() che permette di inserire dati in uno stream in questo formato. Il parametro destinations può essere un array di stringhe contenente i nomi dei simboli Pd di destinazione dei dati instradati dal gestore di sonificazione. Se è assente i dati non avranno destinazioni iniziali inizializzate e verranno letti e scartati. Si consiglia quindi di inizializzare una destinazione se non è tollerata la perdita di dati. Le destinazioni possono essere modificate durante l esecuzione chiamando i metodi adddestination() e removedestination() di StreamSonifierHandler. Per un esempio di creazione e utilizzo di un oggetto StreamSonifierHandler vedere Figura 5.6. Il progetto aggiunge ben poche funzionalità rispetto a quelle fornite da tutto il codice di gestione di Pure Data già scritto dagli sviluppatori di libpd,ma questo servizio è stato creato con l intenzione di contenere in futuro tutte le funzionalità che occorrono ad un applicazione di elaborazione dati provenienti da sensori che prevede la loro sonificazione real-time. 5.3 Sonificazione applicata al monitoraggio di attività umane: PdFun Questo progetto cerca di riassumere lo studio svolto in una serie di esempi a sè stanti, nei quali sono esposte solo alcune applicazioni al campo dell analisi e sonificazione di dati provenienti dal monitoraggio di attività umane attraverso sensori.

52 44CAPITOLO 5. PROTOTIPI ED ESEMPI DI APPLICAZIONE REALIZZATI public void run() { // finchè non mi interrompono continuo ad elaborare dati while (interrupted()!= true) { try { // aspetto di prelevare dati dallo stream float app = source.readfloat(); synchronized (lock) { // se ho dei simboli di destinazione settati, // instrado il dato a tutti // sennò consumo il dato per svuotare lo stream if (isactive) for (String symbol: sinks) { PdBase.sendFloat(symbol, volumes.get(symbol)[0]* app); catch (InterruptedIOException e) { try { source.close(); catch (IOException e1) { Log.e(TAG, e1.tostring()); break; catch (IOException e) { Log.e(TAG, e.tostring()); break; Figura 5.4: Implementazione del metodo run() di StreamSonifierHandler: ciclicamente leggo in app un float proveniente dallo stream source, lo moltiplico per un fattore di amplificazione/attenuazione volumes.get(symbol)[0] e lo instrado verso ogni destinazione presente nell array symbols.

53 5.3. SONIFICAZIONE APPLICATA AL MONITORAGGIO DI ATTIVITÀ UMANE: PDFUN45 StreamSonifierHandler xaxisaccelsonification = ss.newstreamsonifier(); xaxisaccelsonification.adddestination("frequency"); xaxisaccelsonification.adddestination("amplitude"); DataOutputStream pushdatahere = xaxisaccelsonification.getoutputstream(); while (interrupted()!= true) { pushdatahere.writefloat(math.random()); Thread.sleep(500); Figura 5.5: Creazione e utilizzo di un gestore di sonificazione locale : ss è un riferimento ad un istanza di SonificationService. InputStream tobesonified = risorsa.getinputstream(); StreamSonifierHandler xaxisaccelsonification = ss.newstreamsonifier(tobesonified, new String[] {"Frequency", "Amplitude"); Figura 5.6: Creazione e utilizzo di un gestore di sonificazione di un flusso dato come parametro: ss è un riferimento ad un istanza di SonificationService.

54 46CAPITOLO 5. PROTOTIPI ED ESEMPI DI APPLICAZIONE REALIZZATI L attività principale che viene eseguita all avvio dell applicazione è una interfaccia che mostra la lista degli esempi e ne gestisce l avvio (Figura 5.7). Non si notano particolarità in questo modulo dell applicazione; il codice è riportato in Appendice C. Figura 5.7: Activity principale: lista degli esempi. Gli esempi sono implementati come sottoclassi di Activity. Ogni esempio gestisce l istanza di un servizio SonificationService (vd. 5.2) che utilizza per sonificare dati provenienti da sorgenti diverse. In tutti gli esempi le sorgenti dei dati sono i sensori interni presenti nel dispositivo, ai quali abbiamo acceduto mediante l uso delle API fornite dal sistema Android. In linea di principio, niente vieta di sostituire tali sorgenti con altre sorgenti di dati come sockets o files, che per esempio possono essere utilizzati rispettivamente per l analisi e/o la sonificazione on-line o off-line di dati provenienti da ambienti esterni Scooter Engine Simulator Questo esempio mostra una possibilità di rappresentazione audio di un accelerazione, misurata in questo caso dall accelerometro interno al dispositivo. L attività che implementa questo esempio è ScooterEngineActivity, il cui layout è riportato in figura 5.8.

55 5.3. SONIFICAZIONE APPLICATA AL MONITORAGGIO DI ATTIVITÀ UMANE: PDFUN47 Figura 5.8: Layout di ScooterEngineActivity.

56 48CAPITOLO 5. PROTOTIPI ED ESEMPI DI APPLICAZIONE REALIZZATI Durante l inizializzazione di questa attività, viene creato un servizio SonificazionService e, una volta connesso, viene registrata la funzione OnSensorChanged() come gestore di eventi provenienti dal sensore di accelerazione. Ogni volta che questa funzione viene richiamata, viene scritto il nuovo valore proveniente dal sensore nella pipe di uno StreamSonifierHandler precedentemente creato, che pensa ad instradare i valori alla patch Pure Data aperta. La patch Pure Data che gestisce la sonificazione, riportata in A.2.1, è Motorino.pd, collocato nella cartella di progetto assets/patches. Questa riceve sul simbolo gas, tramite un oggetto [r gas], i valori dell accelerazione. Attraverso un oggetto [vline~], generatore di rampe, ed altri oggetti logici, viene generato un segnale che modula in ampiezza e in frequenza il suono del motore. Questo segnale è l interpolazione tramite spezzate dei valori dell accelerazione maggiori di una certa soglia dinamica. La soglia è posta inizialmente a zero; ogni volta che arriva un campione di valore maggiore del valore della soglia, quest ultima si porta a tale valore per poi decrescere linearmente a zero con una certa pendenza. Se durante la decrescita arriva un nuovo campione minore del valore attuale della soglia, questo viene scartato. Se il nuovo campione è maggiore del valore attuale della soglia, quest ultima risale a quel valore per poi riscendere a zero in un arco di tempo dipendente dal valore di picco. Tramite trasformazioni lineari di questo segnale, è possibile pilotare oggetti che gestiscono la frequenza del suono (frequenza dell oggetto [osc~]) e degli scoppi del motore (frequenza dell oggetto [phasor~], che genera un segnale a dente di sega che modula in ampiezza il suono del motore, producendo gli scoppi). In conclusione, l utente è in grado di capire l entità dell accelerazione che ha impresso al suo dispositivo ascoltando la sua familiare sonificazione come un motore di piccola cilindrata Orientation Device Guess Game Questo esempio mostra come è possibile sonificare dati al fine di generare un feedback utile all utente per raggiungere un qualche scopo o migliorare le sue prestazioni.

57 5.3. SONIFICAZIONE APPLICATA AL MONITORAGGIO DI ATTIVITÀ UMANE: PDFUN49 L attività OrientationGuessActivity implementa un semplice gioco, il cui scopo è quello di guidare l utente ad ottenere un particolare orientamento del dispositivo, scelto casualmente, mediante l uso di segnali acustici. In fase di inizializzazione, viene creato e connesso un servizio SonificationService, ma non viene utilizzato uno StreamSonifierHandler per instradare i dati dei sensori verso Pd. Bensì si utilizza il metodo inizialmente offerto da libpd per comunicare con Pd. Il gestore di eventi del sensore OnSensorChanged() viene richiamato ogni volta che un nuovo orientamento del dispositivo viene rilevato; tramite il metodo PdBase.sendList() viene mandato un messaggio list al simbolo CurrentOrientation della patch in esecuzione contenente i tre valori assiali degli angoli di rotazione del dispositivo. La patch (riportata in A.2.2) che gestisce il gioco è orientation guess.pd, collocata nella cartella di progetto assets/patches. Questa ha il compito di scegliere casualmente un orientamento, cioè tre valori angolari nei tre assi. Ogni volta che il simbolo CurrentOrientation riceve una lista di tre floats, viene calcolato l errore dell orientamento corrente rispetto a quello scelto, sommando i valori assoluti delle differenze dei tre valori angolari. Tramite un valore inversamente proporzionale a questo errore, viene modulato in ampiezza un tono puro sinusoidale, creando una sequenza di beeps a frequenza variabile. Inoltre, l angolo di azimuth viene usato per effettuare un diverso mixaggio del segnale audio verso i due canali stereo disponibili, al fine di creare una sorgente virtuale di suono, in modo che l utente possa più facilmente percepire verso quale direzione orientare il dispositivo. La patch pensa anche a spedire verso il simbolo android una percentuale di avvicinamento all obiettivo, che viene ricevuta dalla attività e mostrata a schermo (Figura 5.9). La ricezione di messaggi da Pd è resa possibile dalla registrazione, tramite il metodo PdBase.setReceiver(), di un PdReceiver, i cui metodi sono stati implementati col codice necessario per l aggiornamento della percentuale mostrata sul layout. Quando l errore tra l orientamento scelto dall utente e quello prefissato dalla patch Pure Data è sotto una certa soglia, vengono emessi tre segnali acustici in sequenza per avvertire l utente che ha raggiunto l obiettivo.

58 50CAPITOLO 5. PROTOTIPI ED ESEMPI DI APPLICAZIONE REALIZZATI Figura 5.9: Layout di OrientationGuessActivity: la percentuale mostrata è calcolata dalla patch Pure Data.

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

UML Component and Deployment diagram

UML Component and Deployment diagram UML Component and Deployment diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania I diagrammi UML Classificazione

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica A.A. 2007-08 CORSO DI INGEGNERIA DEL SOFTWARE Prof. Giulio Destri http://www.areasp.com (C) 2007 AreaSP for

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Mini manuale di Audacity.

Mini manuale di Audacity. Mini manuale di Audacity. Questo mini manuale è parte del corso on-line Usare il software libero di Altrascuola. Il corso è erogato all'interno del portale per l'e-learning Altrascuola con la piattaforma

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Ricapitoliamo. Ricapitoliamo

Ricapitoliamo. Ricapitoliamo Ricapitoliamo Finora ci siamo concentrati sui processi computazionali e sul ruolo che giocano le procedure nella progettazione dei programmi In particolare, abbiamo visto: Come usare dati primitivi (numeri)

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore)

Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Manuale d uso Apache OpenMeetings (Manuale Utente + Manuale Amministratore) Autore: Matteo Veroni Email: matver87@gmail.com Sito web: matteoveroni@altervista.org Fonti consultate: http://openmeetings.apache.org/

Dettagli

Definizione e struttura della comunicazione

Definizione e struttura della comunicazione Definizione e struttura della comunicazione Sono state date molteplici definizioni della comunicazione; la più semplice e comprensiva è forse questa: passaggio di un'informazione da un emittente ad un

Dettagli

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT IT PROCESS EXPERT 1. CARTA D IDENTITÀ... 2 2. CHE COSA FA... 3 3. DOVE LAVORA... 4 4. CONDIZIONI DI LAVORO... 5 5. COMPETENZE... 6 Quali competenze sono necessarie... 6 Conoscenze... 8 Abilità... 9 Comportamenti

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

DAL SUONO AL SEGNO GRAFICO

DAL SUONO AL SEGNO GRAFICO Teoria musicale - 2 DAL SUONO AL SEGNO GRAFICO IL FENOMENO FISICO DEL SUONO Il suono è un fenomeno fisico generato dalla vibrazione di un corpo e percepito dal nostro sistema uditivo. La vibrazione viene

Dettagli

Modello OSI e architettura TCP/IP

Modello OSI e architettura TCP/IP Modello OSI e architettura TCP/IP Differenza tra modello e architettura - Modello: è puramente teorico, definisce relazioni e caratteristiche dei livelli ma non i protocolli effettivi - Architettura: è

Dettagli

CAMPO DI ESPERIENZA: IL SE E L ALTRO

CAMPO DI ESPERIENZA: IL SE E L ALTRO CAMPO DI ESPERIENZA: IL SE E L ALTRO I. Il bambino gioca in modo costruttivo e creativo con gli altri, sa argomentare, confrontarsi, sostenere le proprie ragioni con adulti e bambini. I I. Sviluppa il

Dettagli

END-TO-END SERVICE QUALITY. LA CULTURA DELLA QUALITÀ DAL CONTROLLO DELLE RISORSE ALLA SODDISFAZIONE DEL CLIENTE

END-TO-END SERVICE QUALITY. LA CULTURA DELLA QUALITÀ DAL CONTROLLO DELLE RISORSE ALLA SODDISFAZIONE DEL CLIENTE END-TO-END SERVICE QUALITY. LA CULTURA DELLA QUALITÀ DAL CONTROLLO DELLE RISORSE ALLA SODDISFAZIONE In un mercato delle Telecomunicazioni sempre più orientato alla riduzione delle tariffe e dei costi di

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP Università degli Studi di Pisa Facoltà di Scienze Matematiche,Fisiche e Naturali Corso di Laurea in Informatica Michela Chiucini MIB PER IL CONTROLLO DELLO STATO DI UN SERVER

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

BIENNIO DI SECONDO LIVELLO IN DISCIPLINE MUSICALI MUSICA ELETTRONICA E TECNOLOGIE DEL SUONO

BIENNIO DI SECONDO LIVELLO IN DISCIPLINE MUSICALI MUSICA ELETTRONICA E TECNOLOGIE DEL SUONO BIENNIO DI SECONDO LIVELLO IN DISCIPLINE MUSICALI MUSICA ELETTRONICA E TECNOLOGIE DEL SUONO Requisiti d'ammissione Dal Regolamento didattico del Conservatorio di Como Ex Art. 24: Ammissione ai corsi di

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Controllare un nastro trasportatore fischertechnik con Arduino

Controllare un nastro trasportatore fischertechnik con Arduino TITOLO ESPERIENZA: Controllare un nastro trasportatore fischertechnik con Arduino PRODOTTI UTILIZZATI: OBIETTIVO: AUTORE: RINGRAZIAMENTI: Interfacciare e controllare un modello di nastro trasportatore

Dettagli

UPPLEVA. 5 anni di GARANZIA. Soluzioni integrate di mobili, smart TV e sistema audio. Tutto in uno.

UPPLEVA. 5 anni di GARANZIA. Soluzioni integrate di mobili, smart TV e sistema audio. Tutto in uno. UPPLEVA Soluzioni integrate di mobili, smart TV e sistema audio. Tutto in uno. 5 anni di GARANZIA INCLUSA NEL PREZZO I televisori, i sistemi audio e gli occhiali 3D UPPLEVA sono garantiti 5 anni. Per saperne

Dettagli

Bus di sistema. Bus di sistema

Bus di sistema. Bus di sistema Bus di sistema Permette la comunicazione (scambio di dati) tra i diversi dispositivi che costituiscono il calcolatore E costituito da un insieme di fili metallici che danno luogo ad un collegamento aperto

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Integrated Development Environment (IDE) DevC++ 4.9.9.2

Integrated Development Environment (IDE) DevC++ 4.9.9.2 Integrated Development Environment (IDE) DevC++ 4.9.9.2 Manuale utente Data ultima revisione: 22/10/2008 Fondamenti di informatica Università Facoltà Corso di laurea Politecnico di Bari 1 a Facoltà di

Dettagli

CAMPO DI ESPERIENZA: IL SE E L ALTRO

CAMPO DI ESPERIENZA: IL SE E L ALTRO CAMPO DI ESPERIENZA: IL SE E L ALTRO I. Il bambino gioca in modo costruttivo e creativo con gli altri, sa argomentare, confrontarsi, sostenere le proprie ragioni con adulti e bambini. I I. Sviluppa il

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

Web Conferencing Open Source

Web Conferencing Open Source Web Conferencing Open Source A cura di Giuseppe Maugeri g.maugeri@bembughi.org 1 Cos è BigBlueButton? Sistema di Web Conferencing Open Source Basato su più di quattordici componenti Open-Source. Fornisce

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Guida rapida all uso di ECM Titanium

Guida rapida all uso di ECM Titanium Guida rapida all uso di ECM Titanium Introduzione Questa guida contiene una spiegazione semplificata del funzionamento del software per Chiputilizzare al meglio il Tuning ECM Titanium ed include tutte

Dettagli

TELECOMUNICAZIONI (TLC) Generico sistema di telecomunicazione (TLC) Trasduttore. Attuatore CENNI DI TEORIA (MATEMATICA) DELL INFORMAZIONE

TELECOMUNICAZIONI (TLC) Generico sistema di telecomunicazione (TLC) Trasduttore. Attuatore CENNI DI TEORIA (MATEMATICA) DELL INFORMAZIONE TELECOMUNICAZIONI (TLC) Tele (lontano) Comunicare (inviare informazioni) Comunicare a distanza Generico sistema di telecomunicazione (TLC) Segnale non elettrico Segnale elettrico TRASMESSO s x (t) Sorgente

Dettagli

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64

Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 Le telecamere Installate verranno connesse ad Unità di elaborazione multiplexer per la gestione e la verifica di gruppi omogenei di 4-8-16-32-48-64 telecamere. I sistemi di acquisizione ed archiviazione

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

TeamViewer 8 Manuale Meeting

TeamViewer 8 Manuale Meeting TeamViewer 8 Manuale Meeting Rev 8.0-12/2012 TeamViewer GmbH Kuhnbergstraße 16 D-73037 Göppingen www.teamviewer.com Indice 1 Informazioni su TeamViewer... 5 1.1 Informazioni sul software... 5 1.2 Informazioni

Dettagli

Guida. Vista Live. Controllo. Riproduzione su 24 ore. Ricerca avanz. Le icone includono: Mod. uscita. Icona. Un sensore di allarme.

Guida. Vista Live. Controllo. Riproduzione su 24 ore. Ricerca avanz. Le icone includono: Mod. uscita. Icona. Un sensore di allarme. Guida operatore del registratore TruVision Vista Live Sull immagine live dello schermo vengono visualizzati laa data e l ora corrente, il nome della telecamera e viene indicato se è in corso la registrazione.

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Unified Process. Prof. Agostino Poggi

AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Unified Process. Prof. Agostino Poggi AOT Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Unified Process Prof. Agostino Poggi Unified Process Unified Software Development Process (USDP), comunemente chiamato

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Elementi di UML (7): Diagrammi dei componenti e di deployment

Elementi di UML (7): Diagrammi dei componenti e di deployment Elementi di UML (7): Diagrammi dei componenti e di deployment Università degli Studi di Bologna Facoltà di Scienze MM. FF. NN. Corso di Laurea in Scienze di Internet Anno Accademico 2004-2005 Laboratorio

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

Dettagli

Funzioni di base. Manualino OE6. Outlook Express 6

Funzioni di base. Manualino OE6. Outlook Express 6 Manualino OE6 Microsoft Outlook Express 6 Outlook Express 6 è un programma, incluso nel browser di Microsoft Internet Explorer, che ci permette di inviare e ricevere messaggi di posta elettronica. È gratuito,

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Guida all utilizzo del dispositivo USB

Guida all utilizzo del dispositivo USB Guida all utilizzo del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1. Glossario... 3 2. Guida all utilizzo del dispositivo USB... 4 2.1 Funzionamento del

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.

Dettagli

nasce il futuro v secolo a. c. agorà virtuale

nasce il futuro v secolo a. c. agorà virtuale dell e-learning nasce il futuro v secolo a. c. Con Agorà, nell antica Grecia, si indicava la piazza principale della polis, il suo cuore pulsante, il luogo per eccellenza di una fertilità culturale e scientifica

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Cos è l Ingegneria del Software?

Cos è l Ingegneria del Software? Cos è l Ingegneria del Software? Corpus di metodologie e tecniche per la produzione di sistemi software. L ingegneria del software è la disciplina tecnologica e gestionale che riguarda la produzione sistematica

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Metodi e Strumenti per la Caratterizzazione e la Diagnostica di Trasmettitori Digitali RF ing. Gianfranco Miele g.miele@unicas.it

Metodi e Strumenti per la Caratterizzazione e la Diagnostica di Trasmettitori Digitali RF ing. Gianfranco Miele g.miele@unicas.it Corso di laurea magistrale in Ingegneria delle Telecomunicazioni Metodi e Strumenti per la Caratterizzazione e la Diagnostica di Trasmettitori Digitali RF ing. Gianfranco Miele g.miele@unicas.it Trasmettitore

Dettagli

INDUSTRY PROCESS AND AUTOMATION SOLUTIONS. Lo strumento universale per la messa in esercizio e la diagnosi

INDUSTRY PROCESS AND AUTOMATION SOLUTIONS. Lo strumento universale per la messa in esercizio e la diagnosi Con Vplus, BONFIGLIOLI VECTRON offre uno strumento per la messa in esercizio, la parametrizzazione, il comando e la manutenzione. VPlus consente di generare, documentare e salvare le impostazioni dei parametri.

Dettagli

Le interfacce aptiche per i beni culturali

Le interfacce aptiche per i beni culturali Le interfacce aptiche per i beni culturali Massimo Bergamasco 1, Carlo Alberto Avizzano 1, Fiammetta Ghedini 1, Marcello Carrozzino 1,2 1PERCRO Scuola Superiore Sant Anna, Pisa 2IMT Institude for Advanced

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Trasmissione Seriale e Parallela. Interfacce di Comunicazione. Esempio di Decodifica del Segnale. Ricezione e Decodifica. Prof.

Trasmissione Seriale e Parallela. Interfacce di Comunicazione. Esempio di Decodifica del Segnale. Ricezione e Decodifica. Prof. Interfacce di Comunicazione Università degli studi di Salerno Laurea in Informatica I semestre 03/04 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ 2 Trasmissione

Dettagli

Meetecho s.r.l. Web Conferencing and Collaboration tools. Guida all installazione e all uso di Meetecho beta

Meetecho s.r.l. Web Conferencing and Collaboration tools. Guida all installazione e all uso di Meetecho beta Web Conferencing and Collaboration tools Passo 1: registrazione presso il sito Accedere al sito www.meetecho.com e registrarsi tramite l apposito form presente nella sezione Reserved Area. In fase di registrazione

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA Supponiamo di voler eseguire una istantanea del nostro desktop, quella che in gergo si chiama Screenshot (da screen, schermo, e shot, scatto fotografico).

Dettagli

Serduino - SERRA CON ARDUINO

Serduino - SERRA CON ARDUINO Serduino - SERRA CON ARDUINO 1 Componenti Facchini Riccardo (responsabile parte hardware) Guglielmetti Andrea (responsabile parte software) Laurenti Lorenzo (progettazione hardware) Rigolli Andrea (reparto

Dettagli

LA REGISTRAZIONE DEI FILE AUDIO.WAV IN CONTEMPORANEA CON LE MISURE FONOMETRICHE.

LA REGISTRAZIONE DEI FILE AUDIO.WAV IN CONTEMPORANEA CON LE MISURE FONOMETRICHE. Pagina 1 di 5 LA REGISTRAZIONE DEI FILE AUDIO.WAV IN CONTEMPORANEA CON LE MISURE FONOMETRICHE. A. Armani G. Poletti Spectra s.r.l. Via Magellano 40 Brugherio (Mi) SOMMARIO. L'impiego sempre più diffuso

Dettagli

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1 Tutorial Configuration Managment Configurare il servizio EC2 su AWS Pagina 1 Sommario 1. INTRODUZIONE... 3 2. PROGRAMMI NECESSARI... 4 3. PANNELLO DI CONTROLLO... 5 4. CONFIGURARE E LANCIARE UN ISTANZA...

Dettagli

WEB Conference, mini howto

WEB Conference, mini howto Prerequisiti: WEB Conference, mini howto Per potersi collegare o creare una web conference è necessario: 1) Avere un pc con sistema operativo Windows XP o vista (windows 7 non e' ancora certificato ma

Dettagli

B.P.S. Business Process Server ALLEGATO C10

B.P.S. Business Process Server ALLEGATO C10 B.P.S. Business Process Server ALLEGATO C10 REGIONE BASILICATA DIPARTIMENTO PRESIDENZA DELLA GIUNTA REGIONALE UFFICIO SISTEMA INFORMATIVO REGIONALE E STATISTICA Via V. Verrastro, n. 4 85100 Potenza tel

Dettagli

Percorsi di matematica per il ripasso e il recupero

Percorsi di matematica per il ripasso e il recupero Giacomo Pagina Giovanna Patri Percorsi di matematica per il ripasso e il recupero 1 per la Scuola secondaria di secondo grado UNITÀ CMPIONE Edizioni del Quadrifoglio à t i n U 1 Insiemi La teoria degli

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

Equilibrio Termico tra Due Corpi

Equilibrio Termico tra Due Corpi Equilibrio Termico tra Due Corpi www.lepla.eu OBIETTIVO L attività ha l obiettivo di fare acquisire allo sperimentatore la consapevolezza che: 1 il raggiungimento dell'equilibrio termico non è istantaneo

Dettagli

Introduzione. E un sistema EAI molto flessibile, semplice ed efficace:

Introduzione. E un sistema EAI molto flessibile, semplice ed efficace: Overview tecnica Introduzione E un sistema EAI molto flessibile, semplice ed efficace: Introduce un architettura ESB nella realtà del cliente Si basa su standard aperti Utilizza un qualsiasi Application

Dettagli

ipod shuffle Manuale Utente

ipod shuffle Manuale Utente ipod shuffle Manuale Utente 1 Indice Capitolo 1 3 Informazioni su ipod shuffle Capitolo 2 5 Nozioni di base di ipod shuffle 5 Panoramica su ipod shuffle 6 Utilizzare i controlli di ipod shuffle 7 Collegare

Dettagli

Manuale Software. www.smsend.it

Manuale Software. www.smsend.it Manuale Software www.smsend.it 1 INTRODUZIONE 3 Multilanguage 4 PANNELLO DI CONTROLLO 5 Start page 6 Profilo 7 Ordini 8 Acquista Ricarica 9 Coupon AdWords 10 Pec e Domini 11 MESSAGGI 12 Invio singolo sms

Dettagli

GUIDA RAPIDA emagister-agora Edizione BASIC

GUIDA RAPIDA emagister-agora Edizione BASIC GUIDA RAPIDA emagister-agora Edizione BASIC Introduzione a emagister-agora Interfaccia di emagister-agora Configurazione dell offerta didattica Richieste d informazioni Gestione delle richieste d informazioni

Dettagli

Procedura corretta per mappare con ECM Titanium

Procedura corretta per mappare con ECM Titanium Procedura corretta per mappare con ECM Titanium Introduzione: In questo documento troverete tutte le informazioni utili per mappare correttamente con il software ECM Titanium, partendo dalla lettura del

Dettagli

REAL WORLD AND VIRTUAL WORLD ARCHITECTURE FOR INTERCONN INTERCONNECTING FIRST AND SECOND LIFE

REAL WORLD AND VIRTUAL WORLD ARCHITECTURE FOR INTERCONN INTERCONNECTING FIRST AND SECOND LIFE REAL WORLD AND VIRTUAL WORLD ARCHITECTURE FOR INTERCONNECTING FIRST AND SECOND LIFE Università degli studi di Catania Facoltà di Ingegneria 26 Gennaio 2009 Sommario 1 Introduzione 2 Middleware Middleware:

Dettagli

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+... Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad

Dettagli

Oscilloscopi serie WaveAce

Oscilloscopi serie WaveAce Oscilloscopi serie WaveAce 60 MHz 300 MHz Il collaudo facile, intelligente ed efficiente GLI STRUMENTI E LE FUNZIONI PER TUTTE LE TUE ESIGENZE DI COLLAUDO CARATTERISTICHE PRINCIPALI Banda analogica da

Dettagli

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata Giampiero Carboni Davide Travaglia David Board Rev 5058-CO900C Interfaccia operatore a livello di sito FactoryTalk

Dettagli

Setup e installazione

Setup e installazione Setup e installazione 2 Prima di muovere i primi passi con Blender e avventurarci nel vasto mondo della computer grafica, dobbiamo assicurarci di disporre di due cose: un computer e Blender. 6 Capitolo

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Processi di business sovra-regionali relativi ai sistemi regionali di FSE. Versione 1.0 24 Giugno 2014

Processi di business sovra-regionali relativi ai sistemi regionali di FSE. Versione 1.0 24 Giugno 2014 Processi di business sovra-regionali relativi ai sistemi regionali di FSE Versione 1.0 24 Giugno 2014 1 Indice Indice... 2 Indice delle figure... 3 Indice delle tabelle... 4 Obiettivi del documento...

Dettagli

Questo dispositivo, inoltre, è modulare; è quindi possibile scegliere i moduli e personalizzare la configurazione più adatta per le proprie esigenze.

Questo dispositivo, inoltre, è modulare; è quindi possibile scegliere i moduli e personalizzare la configurazione più adatta per le proprie esigenze. MONITOR DEFIBRILLATORE LIFEPAK 12 Il Monitor Defibrillatore LIFEPAK 12 è un dispositivo medicale che nasce per l emergenza e resiste ad urti, vibrazioni, cadute, polvere, pioggia e a tutte quelle naturali

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina Cosa è il DSS L elevato sviluppo dei personal computer, delle reti di calcolatori, dei sistemi database di grandi dimensioni, e la forte espansione di modelli basati sui calcolatori rappresentano gli sviluppi

Dettagli

UNIVERSITA DI PISA FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA ANNO ACCADEMICO 2004-2005 TESI DI LAUREA

UNIVERSITA DI PISA FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA ANNO ACCADEMICO 2004-2005 TESI DI LAUREA UNIVERSITA DI PISA FACOLTA DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA ELETTRONICA ANNO ACCADEMICO 2004-2005 TESI DI LAUREA SVILUPPO DI METODI DECONVOLUTIVI PER L INDIVIDUAZIONE DI SORGENTI INDIPENDENTI

Dettagli

Dipartimento del Tesoro

Dipartimento del Tesoro Dipartimento del Tesoro POWER POINT AVANZATO Indice 1 PROGETTAZIONE DELL ASPETTO...3 1.2 VISUALIZZARE GLI SCHEMI...4 1.3 CONTROLLARE L ASPETTO DELLE DIAPOSITIVE CON GLI SCHEMI...5 1.4 SALVARE UN MODELLO...6

Dettagli

IL SAMPLE AND HOLD UNIVERSITÀ DEGLI STUDI DI MILANO. Progetto di Fondamenti di Automatica. PROF.: M. Lazzaroni

IL SAMPLE AND HOLD UNIVERSITÀ DEGLI STUDI DI MILANO. Progetto di Fondamenti di Automatica. PROF.: M. Lazzaroni UNIVERSITÀ DEGLI STUDI DI MILANO FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI Corso di Laurea in Informatica IL SAMPLE AND HOLD Progetto di Fondamenti di Automatica PROF.: M. Lazzaroni Anno Accademico

Dettagli