faculdade de engenharia da universidade do … · coordenador do departamento de música da escola...

73
FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO MESTRADO EM MULTIMÉDIA PLATAFORMA MODULAR PARA A PROTOTIPAGEM EM SISTEMAS MULTIMÉDIA INTERACTIVOS Rui Miguel Silva Sampaio Dias Dissertação submetida para satisfação parcial do grau de Mestre em Multimédia Dissertação realizada sob a orientação do Professor Doutor Carlos Guedes, Professor Coordenador do departamento de Música da Escola Superior de Música e das Artes do Espectáculo do Porto e sob a co‐orientação do Professor Doutor Eurico Carrapatoso, Professor Auxiliar do Departamento de Engenharia Electrotécnica e de Computadores da Faculdade de Engenharia da Universidade do Porto Porto 2009

Upload: trinhkiet

Post on 09-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

FACULDADEDEENGENHARIADAUNIVERSIDADEDOPORTO

MESTRADOEMMULTIMÉDIA

PLATAFORMAMODULARPARAAPROTOTIPAGEMEMSISTEMAS

MULTIMÉDIAINTERACTIVOS

RuiMiguelSilvaSampaioDias

DissertaçãosubmetidaparasatisfaçãoparcialdograudeMestreemMultimédia

DissertaçãorealizadasobaorientaçãodoProfessorDoutorCarlosGuedes,Professor

CoordenadordodepartamentodeMúsicadaEscolaSuperiordeMúsicaedasArtesdo

EspectáculodoPortoesobaco‐orientaçãodoProfessorDoutorEuricoCarrapatoso,

ProfessorAuxiliardoDepartamentodeEngenhariaElectrotécnicaedeComputadoresda

FaculdadedeEngenhariadaUniversidadedoPorto

Porto2009

2

3

Agradecimentos

AoProfessorDoutorCarlosGuedes,caroprofessor,colegaeamigo,comquemcontinuoaaprender tanto hoje como quando o conheci em 2002, como seu aluno de composiçãoelectroacústicanaEscolaSuperiordeMúsicaedasArtesdoEspectáculodoPorto, epeloenormeapoioeconfiançaquesempremetransmitiu.

Ao Professor Doutor Eurico Carrapatoso, pela dedicação e disponibilidade, e pelamenteabertanestaáreatãoheterogénea.

AoProfessorDoutorPedroRebelo,doSonicArtsResearchCenterdeBelfast,pelassugestõespertinentes.

Aos meus superiores na Escola Superior de Artes Aplicadas de Castelo Branco, ondeleccionodesde2005,oProfessorFernandoRaposo,director,eoProfessorJoséRaimundo,coordenador do departamento demúsica, pelo apoio e pela completa autonomia quemederamnagestãodomeutempo.

Aosparticipantesnostestesaoprotótipo:

Aos meus alunos do curso de Multimédia da Escola Superior de Artes e Design deMatosinhosquemefizeramestarcertodautilidadedomeuprojecto,eparticularmenteaoGuilherme Gomes, Leonardo Guedes, Manuel Fardilha e Ricardo Gomes, autores dainstalaçãoPolligital.

Aosmeuscarosamigos JoséTavares, JoséMarqueseCláudioAlvesdaAssociaçãoACERT,emTondela,peladisponibilidadequetiveramepeloafincadointeressenestesassuntosdasnovastecnologias.

ÀminhacolegaAnaLeiteportertidoaboafédequererusarosmeusobjectos,aindaemfasetãoprecoce.

Aosmeuspaisportodooapoioquemetêmdadonosúltimos34anose11meses.AomeuirmãoZéeàsminhasirmãsLiseteeSusana,porestaremlá.

DedicadoàIsabeleaosmeusfilhosNunoeSofia.

4

5

ÍNDICE

Agradecimentos.....................................................................................................................................3ÍNDICE .......................................................................................................................................................51. INTRODUÇÃO..................................................................................................................................71.1. Motivação......................................................................................................................................................... 71.1.1. Dogeral... ......................................................................................................................................................71.1.2. ...aoparticular ...........................................................................................................................................81.1.3. Dosproblemas... .........................................................................................................................................91.1.4. ...àsolução ................................................................................................................................................ 12

1.2. Objectivos ..................................................................................................................................................... 132. ENQUADRAMENTO .................................................................................................................... 152.1. Aplicações ..................................................................................................................................................... 152.1.1. Sistemasmultimédiainteractivosemcontextosartísticoseculturais .......................... 152.1.2. Sistemasmultimédiainteractivosparaaplicaçõescomerciais ......................................... 162.1.3. Sistemasmultimédiainteractivosemaplicaçõeslúdicaseeducativas ......................... 172.1.4. Sistemasmultimédiainteractivosemcontextosacadémicos............................................. 17

2.2. OambientedeprogramaçãoMax....................................................................................................... 192.2.1. Extensões ................................................................................................................................................... 202.2.2. ExtensõesMSP ......................................................................................................................................... 202.2.3. ExtensõesJitter........................................................................................................................................ 212.2.4. Extensõescriadaspelopróprioutilizador .................................................................................. 212.2.5. Outrasextensõesexistentes ............................................................................................................... 22

2.3. Outrosambientesgráficosdeprogramação.................................................................................. 263. IMPLEMENTAÇÃO:abibliotecaMaxBuildingBlocks ..................................................... 293.1. Introdução .................................................................................................................................................... 293.2. Convençõesgerais..................................................................................................................................... 293.3. Arquitectura ................................................................................................................................................ 303.3.1. Constituiçãodeummódulo ............................................................................................................... 303.3.2. Patchinterno ........................................................................................................................................... 31

3.4. Documentação ............................................................................................................................................ 363.4.1. Sistemadeajuda .................................................................................................................................... 363.4.2. Exemplos .................................................................................................................................................... 37

3.5. Módulos ......................................................................................................................................................... 383.5.1. ProcessamentodeImagem................................................................................................................ 383.5.2. AnálisedeImagem ................................................................................................................................ 403.5.3. Processamentodesom......................................................................................................................... 413.5.4. AnálisedeSom......................................................................................................................................... 423.5.5. Comunicação............................................................................................................................................ 423.5.6. Funçõesglobais....................................................................................................................................... 44

4. TESTES ........................................................................................................................................... 455. CONCLUSÕES................................................................................................................................ 505.1. Verificações.................................................................................................................................................. 505.2. Futurosdesenvolvimentos.................................................................................................................... 51Coda.............................................................................................................................................................................. 526. Referências................................................................................................................................... 53Anexo:Manualdereferência.......................................................................................................... 55

6

7

1. INTRODUÇÃO

Esta dissertação insere‐se no contexto da programação para novos média e sistemas

multimédiainteractivos.

Serão ilustradas e contextualizadas as áreas de acção implicadas, identificados os

problemas que constituíram osmotivos e questões de base para esta dissertação, e será

apresentada a implementação de um protótipo para uma possível solução para os

problemas,recorrendoaumdospacotesdesoftwaremaisutilizadosparaaprogramação

destetipodesistemas.

A solução que será apresentada, funcional e resultante da pesquisa levada a cabo para a

presentedissertação,poderátrazerbenefíciosdirectosnaimplementaçãodeprojectosem

áreascomosistemasdigitaisinteractivos,liveperformance,sínteseeprocessamentodesom

emtemporeal,composição,composiçãoemtemporeal,videojamming,comunicaçãomidi,

improvisação,dispositivosde interface (controladoresesensores), comunicaçãoemrede,

artegenerativaeprogramaçãoemtemporeal.

1.1. Motivação

1.1.1. Dogeral...

Da minha experiência profissional, artística e pedagógica, revelou‐se a necessidade de

desenvolverumaplataformaflexível,coerenteeacessívelparaaprogramaçãoemsistemas

multimédia interactivos, que permitisse, por um lado, uma maior fluência e rapidez no

desenvolvimentodeprojectosnestaáreaparaprogramadoresexperientes,eporoutrolado

uma utilização simplificada e mais intuitiva para utilizadores pouco experientes, e com

poucosconhecimentostécnicos.

Estanecessidadeprende‐seespecialmentecomofactodesteserumcampoiminentemente

multidisciplinar,ondesecruzamváriasáreasdeconhecimento,oquetornaextremamente

difícilodomíniodetodososaspectosenvolvidos.Paraalémdisso,desenvolverumprojecto

8

nestecampoéumexercíciodecriatividadeeoriginalidade,eestádirectamenterelacionado

comoconhecimentodosrecursostécnicosdisponíveis.

Desenvolver um projecto num determinado domínio passa por escolher e utilizar a(s)

ferramenta(s) apropriada(s) para esse domínio. Para realizar uma animação 3D para o

cinema,porexemplo,énecessárioutilizarumprograma3D,desenvolvidoecompletamente

optimizado para a criação de gráficos 3D, tal como, para gravar um grupomusical num

estúdio,porexemplo,énecessáriousarumsequenciadorououtroprogramadegravação

próprio,desenvolvidoeoptimizadoparaesseefeito.

Pelo contrário, desenvolver um projecto no campo dos sistemasmultimédia interactivos

requerautilizaçãodeferramentasnãoespecíficas,quepermitamlidarcomváriostiposde

recursos, uma vez que cada projecto pode ter características e componentes

completamentediferenteseporissosetornaimpossívelsituarnumdeterminadodomínio

específico.

1.1.2. ...aoparticular

O ambiente de programaçãoMax, da empresaCycling’74 (www.cycling74.com), tem sido

umdosmaisrelevantesnaáreadesistemasdigitaisinteractivoseperformanceemtempo

real,econtacomumagrandecomunidadedeutilizadoresdasmaisvariadasáreas.

Tratando‐se de um ambiente gráfico, o ambienteMax proporciona de raiz uma interface

intuitivaeacessível,relativamentealinguagensdeprogramaçãoporcódigo,cujasintaxee

leituraobrigamgeralmenteaumacurvadeaprendizagemmaislenta.

Com a capacidade de ser expandido com inúmeras bibliotecas de objectos desenvolvidas

porváriosutilizadoreseinstituições,oMaxdisponibilizarecursosparaprocessamentode

som, vídeo, MIDI, interfaces gráficas, OSC, OpenGL, dispositivos de interface,

microcontroladores,rede,etc.

OprotótipoconcebidonoâmbitodestadissertaçãofoidesenvolvidoemMax,epretendeser

uma contribuiçãopara omelhoramento e simplificação dodesenvolvimentode projectos

nesteambiente,nocontextodossistemasmultimédiainteractivos.

9

1.1.3. Dosproblemas...

Apesardesermais intuitivoeacessível,oMax foi inicialmentepensadocomouma forma

gráfica e modular de programar em C, e, como tal, concebido para ser o mais aberto

possívelenãolimitativoparaoutilizador.Paraisto,asfunçõesbásicasdisponibilizadassão,

tal comoemqualquer linguagemdeprogramação,umconjuntodeprimitivas, epor si só

nãorealizamoperaçõescompletas.Istoé,sãoutilizadasparapoderemsercombinadaspelo

programador,deformaaconstruirasuaprópriarotinaoufunçãoespecífica.

Esta é uma característica importante e uma das razões para que o Max rapidamente se

tenhatornadoumareferênciaecontinuadoacresceraofimde23anosdeexistência.

Noentanto,alémdessasprimitivas,aestruturadeumprogramaéconstituídageralmente

por um conjunto de pequenos procedimentos e subrotinas que são mais comuns, e

utilizadascommuitafrequência,emváriasaplicaçõesdistintas.

Assim,eapesardasvantagensinerentesaumaconcepçãoabertaeabrangentecomoado

Max,aprogramaçãorevela­sefrequentementeextenuante,pelarepetiçãoaqueobriga

notrabalhocomprocedimentosrelativamentecomuns.

Estefactoprende‐se,ameuver,comdoisaspectosque,àmedidaqueoníveldeutilizaçãoe

aquantidadeecomplexidadedosrecursosimplicadosforamaumentando,sevêmtornado

problemáticas:

1º­interfacedeutilizador

Sendoumambientegráfico,umprograma(habitualmentedesignadoporpatch)édefinido

porligações(patchcords)entreosváriostiposdeelementosqueoconstituem.

Noentanto,podemosdistinguirdois tiposde ligações, aindaquevisualmentepossamser

exactamenteiguais:

• ligaçõesestruturais,quedefinemaestruturadoalgoritmo

• ligaçõeslocais,quedefinemparâmetrosemensagensdecontroloparaosobjectos.

Umpatch tem, geralmente,muitasmais ligações locais doque estruturais.Numpatch de

média ou grande complexidade este aspecto pode tornar o patch muito complicado

visualmenteemuitodifícildeperceberefazeralterações.

10

NaFig. 1­1 podemos ver umpequenopatch de processamento de vídeo. Em a) vemos o

patchnormal,comtodasasligaçõesemensagens,epodemoscontardezoitoelementos.No

entanto, os elementos estruturais do algoritmo, que constituem a estrutura dataflow,

podem ser reduzidos a apenas 5, como se pode ver em b). Todos os outros treze são

parâmetros eordensde comandoparadefinir e controlaros cincoelementos estruturais

(verc)).

Fig.1­1Ligaçõesestruturaiseligaçõeslocais

Não é por isso difícil chegar a algo assim que, como se pode ver, torna muito difícil o

debuggingemanutençãodocódigodoprograma:

Fig.1­2Umpatchfacilmentepodeteresteaspecto

11

OMaxtemimplementadosalgunsrecursospara fazer faceaesteproblema.Osobjectose

patchcordspodemserescondidos,secçõesdopatchpodemserencapsuladas,e,apartirda

versão 5, o modo de apresentação (ver pág. 27) veio facilitar imenso a organização do

patch,aocriarumavisualizaçãoindependenteparaolayoutdecontrolo.

Noentanto,oproblemadasligaçõeslocaispermanece,umavezqueéprecisocolocá­

laseorganizá­las,todasasvezesqueasqueremosusar.

Nota:aversão5introduziuaindaváriosmelhoramentosaníveldeinterfaceefacilidadede

utilização, como por exemplo atalhos de teclado para criar os vários objectos, múltiplos

níveis de undo, etc. que já há bastante tempo vinham sendo pedidas na comunidade de

utilizadores.

Alémdisso,desdeaversão4.xfoiadicionadaacapacidadedeusarjavaejavascriptdentro

doMax.

UmaadiçãoespecialmenteútiléoMaxToolbox,deNathanaëlLécaudé,quepermite,através

de atalhos de teclado, fazer automaticamente as ligações entre os objectos, bem como

distribui‐loshorizontaleverticalmente.

2º­modularidade

Esteaspectoestárelacionadocomtodaaconcepçãodebasedesteambiente.Apesardeser

umambientedeprogramaçãoenãouma linguagem,oMaxestámuitopróximoaindado

nível de uma linguagem de programação de baixo nível, no que diz respeito à

universalidadedas funçõesquedisponibiliza.Ouseja,amaiorpartedosobjectosnãosão

pensadosparafinsespecíficos,massimdeumaformagenérica.

ParainverterascoresdeumaimagemcomosobjectosJitter,por

exemplo,énecessáriousaroobjectojit.op,comooperadorabsdiff

eumvalorde1 (verFig.1­3). Se,paraumutilizadorexperiente

isto pode não ser grande problema, para utilizadores médios e

principiantes,istopodesermuitodifícildedescobrir.Umobjecto

comonomedejit.invertoujit.negative,seriamuitomaispráticoe

intuitivo. Contudo, isto iria contra todas a ideia de base da

concepçãodoMax(eJitter,nestecaso),porqueesteobjectoficaria

associadoauma funçãoespecífica– inverteras cores–enquanto

Fig.1­3Inversãodecor

comoobjectojit.op

12

que a combinação jit.op‐absdiff‐1 pode ser usada paramuitas outras finalidades, mesmo

sendoexactamenteomesmoprocesso.

Nãosepodedizerqueesteaspectosejaumproblema,massimumacaracterística,coerente

comofactodequepodeserutilizadoemáreascompletamentedistintaseporissonãodeve

ser específico. É com as bibliotecas externas que podemos encontrar funções mais

especializadas,comobjectosconcebidosparadeterminadasfinalidadesespecíficas.

Contudo, desenvolver um projecto multimédia interactivo pode ser muito

complicado porque obriga a conhecer e saber implementar todos os processos

envolvidos,ouaconheceregerirváriostiposdebibliotecasnomesmopatch,oque,

emcertoscasos,podeseraindamaiscomplicado.

1.1.4. ...àsolução

Surge então a necessidade de construir uma plataforma de mais alto nível, para a

programação em sistemas multimédia interactivos, que disponibilize, de forma

coerente e acessível, recursos frequentemente utilizados e permitam simplificar a

programaçãoemMax.

Na construção de uma determinada aplicação há funções e procedimentos que são

específicos e concebidos apenas para a criação dessa aplicação, e que não seria possível

preverounão faria sentidonuma linguagemdeprogramação.Noentanto, a estruturade

um programa é constituída geralmente por um conjunto de pequenos (ou não)

procedimentosesubrotinasquesãoutilizadascommuitafrequência,emváriasaplicações

distintas.

Paraumprogramadormenosexperiente,estassubrotinassão frequentementeobstáculos

intransponíveis,querequeremumaaprendizagemmaisprofundadasintaxeeconvenções

doprograma,equeporvezespodemserbastantecomplexasdeimplementar.Aofacilitaro

acessoacertostiposderecursos,eassimcentrarosalunosnaconcepçãodaaplicaçãoaque

sedestina,tornaestesrecursosnãosómaisfáceisdeensinarcomomaisapelativosparaos

alunos, uma vez que conseguem ver mais rapidamente os resultados, e assim também

perceberdeformamaisclaraofuncionamentodestas.

13

Éna identificação e implementação destas subrotinas, quemuitas vezes são quase

aplicaçõesporsisó,quesecentraestetrabalho,porserpertinenteeútilparareduziro

temponecessárioparaaprogramaçãodeaplicaçõesemMax.

Umasoluçãointegradaecoerentequeabordeesteproblemairátornar‐seumaferramenta

útil, quer em situações profissionais para utilizadores mais experientes, para que não

tenham de estar constantemente a “inventar a roda”, quer, num plano pedagógico, para

ajudaraleccionaçãoeutilizaçãodosoftwareemquestão.

Essasoluçãodevetambémabordaroproblemada interface,minimizandooueliminando,

semprequepossível,oproblemadasligaçõeslocais.

Assim, a solução aqui proposta é a criação de uma biblioteca de abstracções com

interfaces gráficas que foquem vários procedimentos de utilização recorrente, e

disponibilizem ao utilizador vários recursos multimédia optimizados para uma

utilização mais rápida e simplificada, especialmente direccionada para a

prototipagemdestetipodesistemas.

1.2. Objectivos

O objectivo principal deste trabalho é o desenvolvimento de uma

solução que permita simplificar e facilitar a programação em

Max/MSP/Jitter.

Esta solução é uma biblioteca de abstracções com interface gráfica,

intituladaMaxBuildingBlocks.

Estabibliotecacriaráumaplataformademaisaltonívelespecialmente

pensada para a programação em sistemas multimédia interactivos,

que, no entanto, coabitemperfeitamente comos objectosMax, e que

não comprometam a performance nem a versatilidade dos recursos

originais.

As abstracções estão agrupadas por tópicos, em colecções relativas à análise e

processamento de imagem, análise e processamento de áudio, comunicação e funções

globais.

Fig.1­4Esquema

conceptualdaplataforma

b.blocks

14

Umavezqueastodasasabstracçõestêmasuaprópriainterface,oproblemadasligações

locaisficaresolvido,paragrandepartedasutilizaçõesdosmódulos.

A Fig. 1‐5 mostra o mesmo patch da Fig. 1‐1 (pág. 7),

implementadocomosb.blocks.

Oscomandosmaiscomunsestãodisponíveisevisíveis.Desta

forma o utilizador fica imediatamente a saber quais são os

parâmetrosprincipais,enãotemdecriarcaixasdemensagem

nemfazernenhumaligaçãoparaosutilizar.

Fig.1‐5exemplodepatchde

processamentodevídeocom

módulosb.blocks

15

2. ENQUADRAMENTO

A utilização de tecnologias digitais interactivas tem vindo a aumentar visivelmente em

várias áreas distintas, possibilitando novas abordagens e paradigmas para a criação de

novas soluções para contextos artísticos, aplicações comerciais, aplicações lúdicas e

educativasetambémparacontextosacadémicos.Abaixoserãodescritoseilustradosestes

tópicos.

2.1. Aplicações

2.1.1. Sistemasmultimédiainteractivosemcontextosartísticoseculturais

A existência de projectos interdisciplinares nas artes tem já antecedentes no séc. XIX,

nomeadamente com o conceito de obra de arte total (Gesamtkunstwerk), idealizado pelo

compositorRichardWagner (in Packer & Jordan, 2002), e no séc. XX, comosmovimentos

artísticosdaprimeirametadedoséculo,edeumaformamaisconcretaesistematizadana

décadade60comoHappeningemovimentoFluxus.

Em 1965, para o projecto multidisciplinar

Variations V, do compositor John Cage, com

GordonMumma e David Tudor, criado para a

companhia de dança do coreógrafo Merce

Cunningham, foi criado por um sistema que

utilizava vários sensores fotoeléctricos e

antenas colocadas no palco, para detectar a

passagem e proximidade dos bailarinos, para

geraroumodificarsons(Winkler, 1995).

O recurso às tecnologias digitais permitiram o

desenvolvimentodetodaumanovacategoriadeprojectos,comoamúsicacomelectrónica

emtemporealeovídeojamming,entremuitosoutros.

As aplicações podem ser tão simples como por exemplo o controlo de dispositivos de

iluminaçãopeladetecçãodesom,atésituaçõesdeenormecomplexidadecomoporexemplo

Fig.2­1VariationsV(1965)

16

aVirtOpera(art+com, 2002)umaóperadocompositorAndréWerner,naqualtodoocenário

e os figurinos são virtuais e gerados em tempo real, com um sistema interactivo

desenvolvidopelaempresaalemãart+com(www.artcom.de).

Fig.2­2CenasdaVirtOpera,deAndréWerner,ondesepodemverocenárioefigurinosvirtuais

2.1.2. Sistemasmultimédiainteractivosparaaplicaçõescomerciais

O recurso a este tipo de sistemas em aplicações comerciais é já uma realidade que tem

vindo a crescer significativamente. Apesar de serem de uma forma geral ainda

relativamentesimples,facilmentesepoderáverificarqueoaspectodainteractividadecom

o utilizador ou o público se pode revelar uma

grandemais valia, nomeadamente emáreas como

omarketingeapublicidade.

Num plano internacional podemos ver como

exemplosacampanhadelançamentodopacotede

software Creative Suite 3 da empresa Adobe, em

que foi instalado um ecrã de projecção numa

vitrinada lojaVirginMegastore naUnionSquare emNovaYork,quemostravagráficose

imagens interactivas, que surgiam de acordo com os movimentos das pessoas que

passavamnarua.

Em Portugal destacam‐se as empresas Ydreams

(ydreams.com),deLisboa,eEdigma(edigma.com),deBraga.

Ambasdesenvolvemprodutoseoferecemserviçosinovadores

com recurso às novas tecnologias de interacção, realidade

virtual, realidade aumentada, comunicação, interfaces, entre

outros, com aplicações emmarketing, publicidade, educação,

divulgaçãoecomunicação.

Fig.2­3AdobeCS3:instalaçãomultimédia

interactiva

17

2.1.3. Sistemasmultimédiainteractivosemaplicaçõeslúdicaseeducativas

A aplicação deste tipo de sistemas na indústria dos jogos para computadores e consolas

será semdúvidaumdosmais significativosedemaiorvisibilidadenomercado,umavez

que o desenvolvimento de jogos e dispositivos de interface têm implicações criativas e

técnicasmuito semelhantes à criação de sistemas digitais interactivos.Nomeadamente, o

desenvolvimentodenovassoluçõesdeinterfacehomem‐máquina,pontocentralemmuitas

das aplicações interactivas desenvolvidas todas as áreas, sempre foi pratica corrente no

desenvolvimentodejogos.

Comoexemplosdemodelosdeinteracçãorecentesnaindústriadosjogostemososistema

EyetoynaconsolaPlaystationdaSonyeoscontroladoresWiimoteeNunchuckdaNintendo.

Noentanto,umavezquesetratadeaplicaçõesparaumgrandepúblico,tornaimpossívelo

desenvolvimentodesituaçõesespecíficasepersonalizadas,deixandoassimdeladoumdos

aspectosmaisinteressantesdaspotencialidadesdossistemasinteractivos.

2.1.4. Sistemasmultimédiainteractivosemcontextosacadémicos

À semelhançadoque sepodeverificarnumâmbito internacional, assistiu‐senosúltimos

anos ao aparecimento, em vários cursos do ensino superior público e privado, de

disciplinas que abordam conteúdos específicos na área dos sistemas multimédia

interactivos.

Sãoexemplosdissoasseguintesinstituiçõesdeensino:

• FaculdadedeEngenhariadaUniversidadedoPorto

• Escola Superior deMúsica e das Artes do Espectáculo do Instituto Politécnico do

Porto

• EscolaSuperiordeArteseDesigndeMatosinhos

• EscolaSuperiordeArtesAplicadasdeCasteloBranco

• UniversidadedaBeiraInterior

• EscoladeArtesdaUniversidadeCatólica,NúcleoRegionalNorte

18

A inclusão destes conteúdos mostra claramente a relevância destes, junto do panorama

profissionaleartísticodeváriasáreasdeactividadeprofissionalactuais.Tambémofactode

se trataremde conteúdos frequentemente interdisciplinares e transversais a várias áreas

de conhecimentoe competências técnicas, faz comque façamsentidoemvárias áreasde

ensino,comoasartesdaimagem,música,tecnologiasinformáticas,electrónica,teatro,luze

som,produção,etc.

19

2.2. OambientedeprogramaçãoMax

O ambiente de programaçãoMax foi criado em 1986 porMiller Puckette no Institute de

Recherche et Coordination Acoustique/Musique (IRCAM), em Paris, como ferramenta de

criação de música interactiva, possibilitando o controlo total de comunicação com o

protocoloMIDI(MusicalInstrumentsDigitalInterface).

“Maxisagraphicalmusicprogrammingenvironmentforpeoplewhohavehit the limits of the usual sequencer and voicing programs for MIDIequipment.”

(Puckette, 1988)Em1991tornou‐seumprodutocomercial,distribuídopelacompanhiaOpcodeSystems,com

desenvolvimentodePucketteeDavidZicarelli,edesde2000passouaserdesenvolvidoe

comercializadopela empresaCycling ’74, emSanFrancisco, criada em1997porZicarelli.

Desde então foram também criadas as expansões ou bibliotecas MSP (Max Signal

Processing) para processamento de áudio e Jitter para processamento de matrizes,

optimizadoparaacriaçãoetratamentodevídeo,gráficos2De3D.

OnomedoprogramaéumahomenagemaMaxMathews,investigadornoslaboratóriosBell

epioneirodamúsicaporcomputador.

Baseado na linguagemde programaçãoC, o ambienteMax é uma linguagemdataflow1, e

consistenumainterfacegráfica,quepermitecriaraplicaçõescomplexas ligandopequenas

“caixas”quedesempenhamfunçõesespecíficas.Grandepartedessasfunçõessãoprimitivas,

semelhantesàquelasencontradasemtodasaslinguagensdeprogramação,comooperações

matemáticas, objectos que implementam estruturas de repetição, estruturas de selecção,

etc. e outras menos comuns, adaptadas a toda a lógica e particularidades específicas do

Max.EssaspequenascaixassãocombinadasdeformaqueumprogramaemMax(patchou

patcher)émuitosemelhanteaumfluxograma,tornandomaisfácilqueraconcepçãodeum

programa,queroseudebugging.

1Dataflow é umaarquitecturade softwareque temporbaseoparadigmao fluxodosdados e daactualizaçãoautomáticadetodasasvariáveis,semprequealgumaoutramuda.

20

OMaxéumaferramentadeprogramaçãodealtonível,emqueosprogramassão“escritos”

comobjectosgráficosemvezdetexto(Zicarelli & Taylor, 2006).

A inclusão de várias bibliotecas de expansão torna o Max numa ferramenta poderosa e

intuitiva, uma vez que o funcionamento integrado e coerente entre os vários tipos de

objectos numa mesma interface vem simplificar e potenciar a criação para contextos

multimédia.

Tambémdesdeaversão4.6,oMaxpermiteaprogramaçãoemJavaeJavascriptdentrodos

próprios patches, o que veio alargar enormemente as possibilidades, uma vez que há

procedimentos–principalmenteosrelativosaestruturasderepetição–quesãomaisfáceis

deimplementaremprogramaçãoporcódigo,etemaindaembutidaumaliguagemsimples

descriptingparacriar,movereligarobjectos,enviarmensagensremotas,etc.

2.2.1. Extensões

Talcomoemtodasaslinguagensdeprogramação,asfuncionalidadesdebasedoambiente

de programação Max podem ser expandidas através da adição de novas bibliotecas ou

objectos isolados, que podem vir aperfeiçoar funções já existentes, ou podem adicionar

funcionalidadescompletamentenovas.

2.2.2. ExtensõesMSP

Fig.2­4Diagramadefluxodeumcircuitode

modulaçãoemanel

Fig.2­5OmesmocircuitoimplementadoemMax

21

AextensãoMSP,éumconjuntodeobjectosdedicadosàanálise,sínteseeprocessamentode

sinal áudio. Tendo o Max surgido num ambiente dedicado à performance e composição

musical,asuafinalidadeinicialfoiadepermitirprogramarsistemasparaaperformanceao

vivo e controlar dispositivos musicais externos, por comunicação MIDI. A evolução da

capacidade de processamento dos computadores pessoais tornou possível a criação de

ferramentas para o processamento de sinal áudio, bastante mais exigente

computacionalmentequeoprocessamentodemensagensMIDI.

As funções dos objectosMSP vão desde operações básicas como a leitura e gravação de

ficheirosáudio,oprocessamentodeefeitoscomodelay,reverb,filtros,modelosdesíntese

desomatéoperaçõesmaiscomplexascomosíntesegranular,FFTemtemporeal, síntese

pormodelosfísicos,entreoutros.

O funcionamento MSP implica toda uma arquitectura de processamento de dados à

velocidadeáudio,que,aocontráriodacomunicaçãodemensagenseeventosMax–quesó

sãoprocessadosquandochamados–funcionacontinuamente,desdequeéligadoosistema

áudiodoMax,quefazacomunicaçãocomaplacadeáudiodocomputador.

Os objectos MSP distinguem‐se graficamente dos objectos normais do Max por terem

sempre um ~ no final do nome das funções (exemplo: gate~), e os patchcords que

interligamobjectosMSPsãotracejados.

2.2.3. ExtensõesJitter

Jitter é uma colecção de objectos para o processamento de dados em formato dematrizes,altamenteoptimizadoparaprocessamentodevídeo,gráficosegráficos3D.TodososnomesdosobjectosJittercomeçamporjit.(exemplo:jit.xfade).Ospatchcordssão

tambémdistintosdosdoMaxeMSP.

2.2.4. Extensõescriadaspelopróprioutilizador

Paraalémdasbibliotecasdeobjectosmencionadas,oMaxpermitetambémquefacilmente

o utilizador crie as suas próprias colecções de objectos, disponibilizando para isso os

seguintesrecursos:

22

• patch ‐ programa gráfico construído na interface do Max, que requer o software

paraserexecutado.

• subpatch–patchutilizadodentrodeumobjectopoupatcher,quepermitequeum

fragmentodeumpatchseja“encapsulado”paraumamelhorarrumação,repetiçãoe

organizaçãodasváriassecçõesdeumprograma.

• abstraction–patchprogramadoemMaxmasutilizadoporoutropatch,naformade

umobjectode função.Umavezqueé tambémeleumpatchprogramadoemMax,

permite que a qualquer momento o utilizador o abra e faça alterações. Estas

alteraçõesreflectir‐se‐ãoemtodasasalegoriasaestaabstracção

• external–funçãoexternaprogramadanalinguagemC.Talcomoasabstracções,são

utilizadasempatchescomoobjectosdefunçãoexternos.Noentanto,porteremsido

programadosforadoMaxecompilados,estesnãopodemserabertoseeditadosem

Max.

São ainda disponibilizados ao utilizador dois métodos para a criação das suas próprias

aplicações:

• Application–procedimentoparaacriaçãodeaplicações,quetransformaumpatch

Maxnumaaplicaçãofechadaeindependente.Umaaplicaçãocriadanesteformatojá

inclui(internamente)oleitorMaxRuntime,necessárioparacorreroprograma.

• Collective–soluçãohíbridaentreopatcheaaplicação.Éumprogramafechado,não

editável,mas que necessita doMaxRuntime (ver abaixo) para ser executado. Um

programa exportado neste formato tem a vantagem de ser muito mais pequeno,

comparativamente à opção application, uma vez que o leitor necessário para a

execuçãodoprogramanãoficaincluídonoficheiro.

2.2.5. Outrasextensõesexistentes

AlémdasextensõesMSPeJitter,criadasecomercializadaspelaprópriaCycling’74,existem

váriasoutrasqueabordamdiversasfuncionalidades,criadasporváriosprogramadorespor

todoomundo,esãonamaioriagratuitas.

Abaixoserãoilustradasalgumasdasmaispertinentesparaapresentedissertação.

23

cv.jit(http://www.iamas.ac.jp/~jovan02/cv/)

A colecção cv.jit, de Jean­Marc Pelletier, é uma implementação em Max da biblioteca

OpenCV,umabibliotecadevisãocomputacionalopensourceescritaemCeC++paravários

sistemasoperativos (http://opencv.willowgarage.com/wiki/, acedido em28de Setembro

de 2009). É uma extensão da colecção Jitter com cerca de 60 objectos, especificamente

criadosparaaimplementaçãodealgoritmosdeanálisedeimagem.

Nota:Algunsdosobjectosb.blocksutilizamobjectoscv.jit,peloque,paraseremutilizados,

estabibliotecatemdeestarinstalada

SoftVNS(http://homepage.mac.com/davidrokeby/softVNS.html)

Criado pelo artista David Rokeby, o Soft VNS é uma

biblioteca altamente especializada em análise e

processamentodevídeo, inicialmentedesenvolvidaparaa

suainstalaçãoVeryNervousSystem,de1986.

Jamoma(http://jamoma.org/)

Jamoma é uma plataforma estruturada de

desenvolvimento e controlo de módulos de alto nível no

ambienteMax(Place T. , Lossius, Jensenius, & Peters, 2008)

(Place & Lossius, 2006).

Desenvolvido inicialmente por Trond Lossius

(www.trondlossius.no) e Timothy Place

(http://community.electrotap.com/tim/), foi apresentada

em 2006, com o objectivo de criar um standard para a

programação e partilha de patches. Desde então evoluiu

para uma plataforma para a pesquisa e performance em

arteinteractiva,queconsisteemquatroferramentas:

• JamomaModular–abibliotecaoriginaldemódulos

Fig.2­6DavidRokeby:VeryNervous

System

Fig.2­7MódulosJamoma

24

paraMax;

• JamomaDSP–um interfacepara aprogramaçãode aplicações emC++, orientada

paraprocessamentodeáudioemtemporeal;

• Jamoma Multicore – uma extensão para o Jamoma DSP para a criação de

representaçõestopográficasdeáudio;

• Jamoma Tools – uma colecção de utilitários para automatizar o processo de

desenvolvimentoedistribuiçãodeprojectosemMax,entreoutros;

Este projecto distingue‐se dos anteriores exemplos por ser (entre outras coisas) uma

bibliotecadepatchescominterfacegráfica,eporissoserprovavelmenteomelhorexemplo

parailustraranecessidadeporpartedosutilizadoresMax,dedesenvolverferramentasde

maisaltonívelemambienteMax.

Integra(www.integralive.org)

Integra é um projecto em desenvolvimento no Conservatório de Birmingham

(http://www.conservatoire.bcu.ac.uk/)comoobjectivodecriarumnovosoftwareparaa

composiçãoeaperformancemusicalcomelectrónicaemtemporeal.

Nãose trataassimdeumabibliotecaouobjectopara

Max,masdeumaaplicação,programadaemMax/MSP.

É uma interface gráfica que permite, de uma forma

muito intuitiva, criar graficamente um patch,

adicionando componentes e fazendo ligações entre

eles. Cada elemento tem um painel de controlo que

surge sempre namesma posição à esquerda, quando

se selecciona o módulo correspondente na área

principal.

Sybil(http://www.hud.ac.uk/mh/music/sybil/index.htm)

Sybil é a sigla para Synthesis By Interactive Learning.

Trata‐se de uma ferramenta interactiva para assistir

Fig.2­8AjaneladeediçãodeIntegra

Fig.2­9Sybil

25

aooensinodasínteseeprocessamentodesom(Clarke, Watkins, Adkins, & Bokowiec, 2004).

Sybil é composto por módulos desenvolvidos em Max/MSP e disponibilizados como

pequenas aplicações independentes, cadaumadedicada a um tema específicona áreade

síntesedesomoucomposiçãoelectroacústica.

26

2.3. Outrosambientesgráficosdeprogramação

Apesardeseromaisdesenvolvido,oMaxnãoéoúnicoambientegráficodeprogramação

para desenvolvimento de aplicações multimédia interactivas no panorama actual. Os

programas abaixo ilustrados inserem‐se no mesmo campo de acção do Max e têm

abordagensmuitosemelhantes.

Pd(PureData)(http://puredata.info/)

OPd(PureData)éumambientegráficodeprogramaçãodesenvolvidooriginalmentepor

Miller Puckette – o criador original doMax. É emmuitos aspectos semelhante aoMax, e

compartilha inclusivamente alguns objectos e patches comuns. Ao contrário do Max, no

entanto, o Pd é de utilização livre e gratuita, e é desenvolvido por uma comunidade de

programadores,seguindoosprincípiosdosoftwarelivre.Ocódigodebaseéaindamantido

porPuckette.

Tal comooMax, foi Inicialmente concebido

para a área da música por computador, e

mais recentemente expandido para

conteúdosmultimédia.

Ofactodeserdedistribuiçãogratuitatorna‐

o particularmente atractivo para

principiantesoupara autilizaçõesde curta

duração,eofactodeserdecódigoabertoé

um factor especialmente interessante para

uma comunidade de programadores que

sejam capazes de tirar partido, expandir e

melhoraradistribuiçãooriginal.

Noentanto, sergratuitoeaberto temcontrapartidas importantes,nomeadamentenoque

diz respeitoàdocumentaçãoeusabilidade,oque, comparativamenteaoMax,o tornaum

ambientemenosamigáveleacessível.

Nota: Paraefeitosdestadissertação, foiponderadaa ideiadoprotótipo serdesenvolvido

emPd,pelofactodenãosersoftwarecomercial.Contudo,pesandoosprósecontrasentreo

Fig.2­10PureData

27

softwarelivreporumladoeosoftwarecomercial,muitomelhordocumentadoecomuma

interfacebastantemaisfácildeusar,apesardasaparentessemelhanças,pareceu‐memais

apropriadooptarpeloMax.

Mais ainda, numa perspectiva didáctica, bastante pertinente para este projecto, a minha

experiêncialectivacomalunosquenãosãodeáreasdeengenhariainformática,equevêm

maioritariamente de áreas artísticas, nomeadamente da música por computador, artes

digitais,produçãoaudiovisualemultimédia‐quesãoaliásbastanterepresentativosdotipo

de utilizadores que constituem a comunidade Max ‐ tem revelado que a facilidade de

utilização do Max, na perspectiva da ergonomia da interface (especialmente desde o

lançamento da versão 5), bem como a excelente documentação e sistema de ajuda , são

elementosdegrandeimportância.

Isadora

(http://troikatronix.com/isadora.html)

OambientegráficoIsadora,daempresaTroikatronix(troikatronix.com),desenvolvidopor

Mark Coniglio, foi inicialmente criado para o trabalho desenvolvido com a companhia de

dançaTroikaRanch(www.troikaranch.org),dacoreógrafaDawnStoppiello.

Tendo partido de um intenso trabalho voltado para a performance artística com novos

media,oambienteIsadoraestáextremamentebempensadoparaessefim,eespecialmente

optimizadoparaamanipulaçãodevídeodigitalemtemporeal.Aformacomooambiente

estáorganizadopermitequemuito facilmente sepossa fazermudançasdepatches entre,

por exemplo, cenasdiferentesnumaperformance.Esta é curiosamenteuma situaçãoque

nosoutrosambientespodeserporvezesbastanteproblemática.

Disponibiliza um conjunto de

maisdeumacentenademódulos

(actors), que podem ser

combinados em patches na

janela de edição principal

(stage). Estesmódulos têm uma

representação visual dos seus

parâmetros e permitem a

alteração dos mesmos

directamentenomódulo,peloqueFig.2­11JaneladeediçãodoprogramaIsadora

28

asuautilizaçãoébastantefácil.

Ao contráriodoMaxedoPd, o Isadoranãodisponibilizamuitos recursosdebaixonível,

nãosendo,porisso,tãoflexível.Porutilizarblocosdefunçõespré‐definidascominterface

gráfica,oIsadorafoiumadasreferênciasprincipaisparaaconcepçãodabibliotecab.blocks.

EyesWeb

(http://www.infomus.org/EyesWeb/EywPlatform.html)

AplataformaEyesWeb foidesenvolvidanoâmbito

dos projectos de investigação em sistemas

multimodais interactivos no InfoMus Lab –

Laboratório de informática musical, da

UniversidadedeGénova,emItália.Éutilizadoem

muitas aplicações e projectos de carácter

científico, bem como para performance e

instalaçõesinteractivas,eimplementasofisticados

algoritmosdeanálisedeimagem. Fig.2­12EyesWeb

29

3. IMPLEMENTAÇÃO:abibliotecaMaxBuildingBlocks

3.1. Introdução

A colecção Max Building Blocks (abreviada para b.blocks) consiste numa biblioteca de

abstracções para o ambiente de programação Max. Algumas abstracções apresentam

soluçõesparadeterminadosprocedimentosefuncionalidadescomplexas,enquantooutras

sãobasicamenteinterfacesgráficasparaobjectosjáexistentes.

A biblioteca está dividida por áreas de utilização, orientadas para algumas das funções

frequentemente utilizadas para contextos multimédia interactivos, sendo: análise e

processamentodeimagem;análiseeprocessamentodesom;comunicação;funçõesglobais.

Ao contráriodeumasolução terminadaehermética,pretende‐sequeestabiblioteca seja

dinâmica,expansíveleabrangenteparaalémdoqueéapresentadoparaafinalidadedesta

dissertação. Contudo, o presente estado deve constituir já uma boa base de trabalho,

suficientemente robustae flexívelpara serutilizadaa curtoprazo, e lançarasbasespara

futurosaperfeiçoamentoseexpansões.

3.2. Convençõesgerais

Tendocomoobjectivoumautilizaçãoeintegraçãofácildabibliotecaempatchescomoutros

objectos,querporutilizadoresmaisexperientescomoporutilizadoresmenosexperientes,

os blocos são construídos usando, sempre que possível, convenções nativas do ambiente

Max.Assim,etambémporumaquestãodecoerênciaeabertura,todosostermos,funções,

parâmetros,descriçõesedocumentação,estãoeminglês.

Todasasabstracçõesb.blockssãonomeadosdeacordocomafunçãoquedesempenham,e

sempreprecedidospor “b.”, assimcomo,porexemplo,osobjectosdabiblioteca Jitter são

sempreprecedidospor“jit.”.

Paraefeitosdestadissertaçãoeprotótipo,adesignaçãomódulorefere‐seaumaabstracção

cominterfacegráfico.Ouseja,umpatchprogramadoemMaxparaser instanciadodentro

30

deoutrospatches, tal comoumaabstaction (ver2.2.5 ‐Outrasextensõesexistentes),mas

embpatchers.

3.3. Arquitectura

Cada abstracção consiste numpatchMaxpré‐programadoque, tal comouma abstracção,

estápreparadoparaserusadodentrodeoutrospatches.Noentanto,talcomofoiexplicado

acima (ver 3.2: Convenções gerais), ao contrário das abstrações e objectos externos,

utilizados em caixas de objecto normais, as abstracções b.blocks são programados para

seremutilizadosdentrodeobjectosbpatcher,quepermitemacederevisualizaro interior

dopatchassociado.

Esteéumaspectoessencialdabibliotecab.blocks,umavezque,paraalémdedisponibilizar

as funções, tem como objectivo disponibilizar uma interface gráfica para as mesmas, de

forma a que o utilizador possa utilizar as funções de

formarápidaeintuitiva.

Um módulo b.blocks surge num patch Max como um

pequenoobjectorectangulardecorcinzenta.Cadaum

tem uma aparência própria, uma vez que o tipo de

controlos e mostradores utilizados dependem dos

parâmetrosassociadosàsuafunçãoespecífica.

3.3.1. Constituiçãodeummódulo

Cadamóduloéconstituídoporduassecçõesprincipais:ocabeçalhoeaáreadoscontrolos

paraosparâmetros.TalcomoéconvençãoemMax,emcimasituam‐seasentradas(inlets)e

embaixoassaídas(outlets).

Fig.3­1Módulob.blocks

31

Fig.3­2Secçõesdeummódulo

Cabeçalho

O cabeçalho contém duas áreas, sendo a da

esquerda destinada ao nome do bloco, e a da

direita reservada três pequenos botões,

comunsatodososmódulos,definidospelaletra

inicialdafunçãoaquesedestinam(eminglês).

Assim, a letra r (remote), activada por defeito, diz respeito ao controlo dos parâmetros

atravésdeoutrosmódulosoumensagensdecontroloenviadasremotamente.Seestebotão

estiverdesactivado,omódulonãorecebemensagensremotasdecontrolo.Obotãoi(info),

permitevisualizarumalistacomosinputs,outputsemensagensqueomóduloreconhece.

Obotãoh(help),dáacessoaopatchdeajudadomódulo.

Corpo

A área do corpo do módulo contém todos os controlos e indicadores relativos aos

parâmetrosespecíficosdomódulo.

Osmódulos estão concebidosde formaaqueoutilizadorpossa acederdirectamente aos

parâmetrosnecessáriosparaexecutarafunçãoaquecadamódulosedestina.Noentanto,

alémdoscontrolosvisíveis,algunsmódulospermitemacederaoutrasfunções,atravésde

mensagensenviadaspelosinlets.

3.3.2. Patchinterno

UmavezqueacolecçãofoiinteiramenteprogramadaemMax,cadamóduloéumpatchMax

que, apesar de programado para ser usado dentro de um bpatcher, pode também ser

Fig.3­3Cabeçalho

32

instanciado dentro de um objecto p (patcher), ou aberto directamente no ficheiro

correspondente.

Os módulos foram programados tendo em conta que num mesmo patch podem ser

instanciadosmaisdeumavez.Para tal,não foramutilizadosobjectossend ereceive,para

enviodemensagensinternas,umavezqueissofariacomqueumvaloroumensagemfosse

recebidaportodososmódulossemelhantes.Comoresultado,ospatchespodemporvezes

terváriospatchcordsquenãopuderamserevitados.Apesardisto,foisempredadaespecial

atençãoaqueospatchessemantivessemomaisclaroelógicosquantopossível.Paraisso,e

apesardasdiferençasentreosváriospatches,aestruturageralésemelhanteepodemser

reconhecidosfacilmentealgunspontoscomuns.

Fig.3­4Interiordeumpatchb.blocks

Napartesuperiordopatchsituam‐seasentradas,onomedomóduloeuminterruptorgeral

queodesactiva.Oobjecto comonomeéelepróprioumaabstracção chamadab.header,

instanciadadentrodeumbpatcher.Ob.headersurgeemtodosospatchesb.blocks,edefine

onomeetamanhodecadaum.Alémdisso,incluitambémosbotõesqueseencontramdo

lado direito do cabeçalho. Ao serem instanciados, são utilizados três argumentos nas

33

propriedades do bpatcher. O primeiro argumento define o nome do patch a instanciar,

enquanto o segundo e terceiro argumentos definem, respectivamente, o seu tamanho

horizontalevertical.

Desta forma a aparência é mantida coerente em toda a biblioteca, e facilita o

desenvolvimento e actualizações uma vez que qualquer alteração feita no ficheiro global

b.headersevaireflectiremtodososmódulos.

Fig.3­5Omódulob.header

O painel cinza à esquerda serve de background aomódulo e o seu tamanho é ajustados

automaticamente para cada um. Sobrepostos estão quatro botões. À esquerda está o #1,

quenomomentoemqueomóduloécriado,assumeonomedopatchinstanciado.Grande

parte dosmódulos podem ser activados ou desactivados com um clique no seu nome. À

direitaencontram‐seostrêsbotõesexplicadosatrás.

O subpatch “p #1 #2 #3” que se vê por baixo dos três botões (r‐i‐h) executa as acções

controladas pelos botões i e h, dando acesso, respectivamente, à janela flutuante de

informaçõessobreosinputs,outputsemensagensreconhecidaspelomódulo,eaopatchde

ajuda(help).

34

Fig.3­6Subpatch

Os três inlets, aquimarcados a azul, recebemas ordens enviadaspelobotãodonomedo

móduloepelosbotõesi‐h.

Desde o lançamento, em Maio de 2008, da

versão5dosoftware,oMaxtemdoismodosde

visualização completamente independentes: o

modo de edição, já existente nas versões

anteriores, e o modo de apresentação,

completamente novo. O modo de edição é o

modoutilizadoparaaprogramaçãonormaldo

patch, onde estão as ligações (patchcords) e

todos os objectos que constituem o patch. O

modo de apresentação permite ver apenas os

objectos seleccionados para esta visualização,

semqualquertipodeligaçãoentreeles.

Istopermitequesejapossívelconstruiropatch

sem preocupações relativamente ao layout

final,umavezque,umavezseleccionadospara

aparecerem no modo de apresentação, os

objectospodemserreposicionadoseescalados

Fig.3­7Mododeedição(emcima)emodode

apresentação(embaixo).

35

àvontade,semqualquerinterferêncianofuncionamentodopatch.

A biblioteca b.blocks utiliza amplamente esta funcionalidade. Cada módulo tem os seus

objectos de interface visíveis no modo de apresentação e o patch organizado de forma

lógica,deacordocomosobjectospresenteserespeitando,semprequepossível,alógicado

fluxodedados.

36

3.4. Documentação

3.4.1. Sistemadeajuda

Tal como todos os objectos da distribuiçãoMax, todos ospatchesb.blocks têm um patch

correspondentedeajuda.Ospatchesdeajudasãoprogramasfuncionais,quedemonstram

todasouasprincipais característicase funçõesdecadamódulo,eque, tal comonaajuda

dosobjectosMax,podemserutilizados,alteradosecopiados.

Os patches de ajuda são acedidos usando o pequeno botãoh (help), que se encontra no

cantosuperiordireitodetodososmódulos.

Fig.3­8Organizaçãodeumpatchdeajuda

Napartesuperiorencontra‐seocabeçalho,comonomedomóduloeumadescriçãomuito

sucinta da sua função. Logo abaixo surge uma descrição mais detalhada. A área maior

abaixo da descrição é onde está o patch exemplificativo das funções principais. No lado

direito encontram‐seumapequena lista com itens relacionados, quepodemser objectos,

outrosmódulosoupatchesrelevantes.Ositenspodemserusadosdirectamentecomolinks

37

de acesso directo ao ficheiro de ajuda do item correspondente. Abaixo deste encontra‐se

umalistacominformaçãodosinlets,outletsemensagensqueomóduloreconhece.

3.4.2. Exemplos

Demodo a facilitar a aprendizagem da colecção, foram criados patches exemplificativos,

que demonstram o funcionamento básico de alguns dos módulos e tentam,

simultaneamente, ilustrar algumas das áreas abrangidas pela colecção e servir como

tutoriaisparaasprimeirasutilizaçõesdabiblioteca.

38

3.5. Módulos

Osmódulosb.blocksestãodivididosemcategorias,seleccionadasporabrangeremumvasto

leque de possibilidades, geralmente associadas aos sistemas digitais multimédia

interactivos.

Ascategoriassão:

• Imagem(processamento/análise);

• áudio(processamento/análise);

• comunicação(incluicontroladoresexternos);

• funçõesglobais;

Além dos objectos nativos do Max, MSP e Jitter, foram utilizados alguns objectos de

bibliotecasexternas,nomeadamente:

• bibliotecacv.jit(Jean­MarcPelletier,http://www.iamas.ac.jp/~jovan02/cv/)

• CNMAT(http://cnmat.berkeley.edu/downloads)

• Objectoaka.wiiremote(MasayukiAkamatsu,http://www.iamas.ac.jp/~aka/max/)

3.5.1. ProcessamentodeImagem

b.brcosa

Interfaceparaoobjectojit.brcosa.

Permiteajustarobrilho(brightness),

contraste(contrast)esaturação(saturation)

daimagem.

b.colorfilter

Deixapassarapenasacorseleccionadaou

todasascoresmenosaseleccionada.

39

b.crop

Cortatudooqueestáforadaregião

seleccionada.

b.framediff

Subtracçãodecadaframepelaframe

anterior.

b.grab

Interfaceparaoobjectojit.qt.grab.

Capta a imagem de uma câmara de vídeo

queestejaligadaaocomputador.

Permitedefiniraresolução

b.movie

Interfaceparaoobjectojit.qt.movie.

Reprodução de qualquer ficheiro de vídeo

suportadopeloQuicktime.

b.negative

Inverteascoresdaimagemdeentradapara

oseunegativo.

b.videomixer

MisturadeduasentradasdevídeoAeB.

Permitedefinirooperador.

b.window

Interfaceparaoobjectojit.window.

Cria uma janela e envia para lá o vídeo de

entrada. Permite definir o tamanho e o

nomeda janela, emostrar o vídeo em ecrã

inteiro(fullscreen).

40

3.5.2. AnálisedeImagem

b.centroid Interfaceparaoobjectocv.jit.centroids,

dabibliotecacv.jit.

Medeobrilhoemtodosospixéisde

cadaframeparadeterminaras

coordenadasdeumponto,que

correspondeàmédiadessesvalores.

Calculatambémasomadobrilhode

todosospixéisemcadaframe(mass).

b.colortrack Detecta o ponto médio de uma

determinadacoremcadaframe.

Permite definir uma tolerância e fazer

interpolação.

b.features Interface para o objecto cv.jit.features,

dabibliotecacv.jit.

Determina pontos de alto contraste na

imagem.

b.hotspots Permitedefiniraté8áreasdetamanhos

diferentesnumplanobidimensional.

b.presence Permitecapturarumaframeparafazer

subtracção de background e detecção

depresença.

Podeadaptar‐sedinamicamente.

41

3.5.3. Processamentodesom

OsobjectosdeprocessamentodesomsãoconstruídoscomabibliotecaMSP,etalcomoos

objectosMSP,osmódulosb.blocksdeáudiotêmum~nofimdonome.

b.brickwall~ Filtropassa‐bandaFFTdecorte

abruptonospontosdefinidos.Os

valoressãodefinidosembandasde

frequência(bins).

b.envelope~ Gerador de envolvente. Pode ser

usadoemáudioe/ouemdados.

b.freqsplit~ Cadeia de filtros FFT para separar

umsinaláudioem2,3ou4regiões

de frequências diferentes, definidas

pelos splitpooints. Os valores são

definidos em bandas de frequência

(bins).

b.gain~ Controlo de ganho com dois canais

emparelhadosouindependentes.

42

b.osc~ Gerador de sinal com quatro tipos

de onda diferentes (sinusoidal,

triangular, quadrada e dentes de

serra).

A amplitude pode ser controlada

internaouexternamente.

b.pan~ Distribuidor de dois canais para

duassaídas(panorâmica).

3.5.4. AnálisedeSom

b.analizer~

Interface para o objecto

analizer~ de Tristan Jehan,

integrado na biblioteca

desenvolvida na CNMAT, em

Berkeley(EUA).

3.5.5. Comunicação

Este grupo de módulos contempla comunicação MIDI (Musical Instrument Digital

Interface),ecomunicaçãocomcontroladoresexternos.

43

b.hi Interfaceparaoobjectohi(human

interface),paradispositivosde

interfaceexternos.

b.midiin Visualizadordeentradadetodootipo

de mensagens MIDI (Musical

InstrumentDigitalInterface).

Permite filtrar a entrada por porta e

porcanal.

b.midiout Permite o envio de vários tipos de

mensagensMIDI.

b.wacom Interface para o objecto wacom, de

Jean­Michel Couturier, incluído na

bibliotecaCNMAT,parareceberdados

deumamesadigitalizadoraWacom.

44

b.wiiremote Interfaceparaoobjectoaka.wiiremote,

() para comunicação com o

controlador bluetoothWii Remote, da

Nintendo.

3.5.6. Funçõesglobais

Estasfunçõesnãoestãoassociadasanenhumcontextoespecífico.

b.presets Gestãoearmazenamentoglobalde

memóriasdoestadodetodosos

objectosb.blockspresentesnopatch.

b.variance Gera números aleatórios à volta de

um valor central, com interpolação.

Os números podem ser gerados de

formamanualouautomática.

45

4. TESTESDurante o período em que decorreu a construção do protótipo b.blocks para esta

dissertação,foramdisponibilizadosalgunsdosmódulos,emsituaçõesdistintas.

ESADMatosinhos

AprimeirafoinaEscoladeArteseDesigndeMatosinhos,ondeleccioneiadisciplinaAtelier,

aosalunosdo4ºanodocursodeArtesDigitaiseMultimédia.FoiapresentadaemMarçode

2009umainstalaçãointeractivapelosalunosGuilhermeGomes,LeonardoGuedes,Manuel

FardilhaeRicardoGomes,programadaemMax/MSP/Jitter,ondeforamusadosalgunsdos

objectosb.blocks,paraanáliseeprocessamentodevídeo.

Fig.4­1Polligital.Fichatécnicaeimagens

46

ACERT­Tondela

EmMaio2009deiumpequenoworkshopdeapenasumdiae

meio, na associação ACERT, em Tondela, onde três

participantes, José Tavares, José Marques e Cláudio Alves,

profissionais da área do espectáculo e dos audiovisuais,

puderamexperimentaralgunsdosmódulos.Depoisde terem

uma pequena introdução geral ao Max, disponibilizei os

módulos, sem dar praticamente nenhuma explicação do seu

funcionamento. Até ao fim do workshop os participantes

fizeramosprotótiposparaduasinstalaçõesinteractivas,sendo

uma com desenho através de detecção de cor, e uma com

captaçãodevídeodirecto,processadoemtemporeal.

Fig.4­3ACERT‐Protótipocomgráficosemtemporeal

Comoexemplo ilustrativodautilizaçãodosobjectosb.blocks,naFig. estáumdospatches

criadospelosparticipantesnesteworkshop, seguidodeumpatch –programadopormim

para efeitos desta dissertação – que executa exactamente as mesmas funções, sem a

utilizaçãodosobjectosb.blocks.

Fig.4­2ACERT‐protótipo

comprocessamentode

vídeo

47

Fig.4‐4ACERT‐patchdegeraçãointeractivadegráficos.

Fig.4‐5ACERT‐reproduçãodopatchdaFig.4‐4semutilizaçãodosb.blocks.

48

Os rectângulos vermelhosmostram as secções dopatch que correspondem aosmódulos

b.blocksutilizados.

Comautilizaçãodosb.blocks,aleituradopatchtorna‐seconsideravelmentemaissimples,

nomeadamenteporque,devidoàsmensagenslocais,quedefinemosparâmetros,osegundo

patch fica mais confuso visualmente. Recorrendo à encapsulação (subpatches) com o

objecto“p”(oupatcher),esteproblemafacilmentepoderiaserresolvido.

O aspecto mais relevante, contudo, é o facto de que várias das operações utilizadas

dificilmentepoderiamtersidofeitasporumutilizadorcompoucaexperiência,emesmoa

utilizaçãodesecçõesencapsuladasnãoétãoóbviaduranteoprocessodedesenvolvimento

de um patch como é depois de concluído, pelo que também neste aspecto os b.blocks

facilitam a programação, por apresentarem rotinas previamente pensadas, com os

parâmetros correspondentes imediatamente acessíveis. Isto evita o tempo perdido à

procuradamensagemouformataçãocorrecta,atéparautilizadoresavançados.

49

FEUP–AnaLeite

Alguns objectos foram ainda utilizados pela Ana Leite, minha colega no programa de

Mestrado em Multimédia, para o desenvolvimento do protótipo “Pinturas Sonoras”,

integrantedasuadissertação.

Fig.4­6patch“PinturasSonoras”.

50

5. CONCLUSÕES

Aafluênciacrescentede interessenasnovas tecnologiasenovosmedia fazemcomqueo

campo da multimédia e sistemas interactivos esteja em ascensão. Pela diversidade de

vertenteseáreasdeacçãoquepodemserenvolvidas,talcomoasinúmeraspossibilidades

de aplicação destes sistemas em áreas muito diversificadas, torna‐se naturalmente

necessário o desenvolvimento de ferramentas cada vez mais eficazes e poderosas, mas

tambémmaisversáteiseacessíveis.

Acriaçãoedesenvolvimentodeambientesgráficos,maisintuitivoseversáteis,permitiua

uma grande quantidade de utilizadores participarem activamente nesta área, e com isso

trazernovasideias,paradigmasedesafiostécnicos.

Tal como o hardware, o software tem também de acompanhar as necessidades de uma

comunidade de utilizadoresmais vasta e frequentemente não especializada, num campo

onde a complexidade dos recursos utilizados pode ser muito grande, e a atenção à

facilidadedeutilização,ausabilidadeeergonomiatêmumarelevânciacadavezmaior.

RelativamenteaoambientedeprogramaçãoMax,aimportânciaquefoidadaaaspectosde

“cosmética” e de interface, principalmente relativa à facilidade de utilização, no

desenvolvimentodaversão5–delongeamudançamaisradicalqueoMaxsofreu,desdea

primeira versão – são reflexos das necessidades dos utilizadores relativamente a estas

questões, e marca, quanto a mim, um ponto interessante de cruzamento entre a

comunidadecientíficaeacomunidadeartística.

OaparecimentoderecursoscomooMaxToolbox,eoJamoma,sãotambémrepresentativos

dacrescentenecessidadederesolverproblemasdeinterfaceemelhoraraexperiênciade

programaçãoemMax.

5.1. Verificações

Asexperimentaçõesdescritasnocapítuloanteriorrevelaramque,mesmoemestadomuito

inicial, os objectos b.blocks cumpriram o objectivo de serem eficazes, sendo

simultaneamentepráticosefáceisdeutilizaredeintegrarcomoutrosobjectosMax.

51

O feedback dos utilizadores deu bastantes pistas para o melhoramento dos módulos, e

ideiasparaaconstruçãodeoutros.

Verifiquei também que este é um projecto ambicioso, e, para corresponder à ideia de

abrangênciaefacilidadedeutilização,énecessáriomuitotrabalhoemuitaexperimentação.

5.2. Futurosdesenvolvimentos

Umabibliotecadeste tipoéumtrabalhocontínuodeactualizaçãoeaperfeiçoamento,que

deve acompanhar as evoluções do Max e o aparecimento de novas tecnologias e

dispositivosquepossamserutilizadoscomesteambiente.

Acurtoprazoserãodesenvolvidosmaismódulosb.blocks,nomeadamente:

• Síntesedesom;

• processamentodesom;

• comunicaçãoporOpenSoundControl(http://opensoundcontrol.org/);

• comunicaçãocomaplacaArduíno(www.arduino.cc);

• aperfeiçoamentodosistemadepresets;

• aperfeiçoamentodosistemadecontroloremotopordispositivosexternos;

Com o objectivo de dar seguimento de forma sólida e continuada, os seguintes aspectos

serãofundamentais:

• Utilização da biblioteca por mais utilizadores, de meios e níveis de experiência

diferentes.Oseufeedbackseráessencialparaodesenvolvimentodestabiblioteca.

• Colaborações de outros programadores que possam contribuir e aperfeiçoar

módulosdeáreasespecíficas.

• Distribuição pela comunidade internacional de utilizadores Max, no fórum da

Cycling’74

52

Coda

A interactividade está para ficar. Desde sistemas de segurança e domótica ao

entretenimento e arte, estas tecnologias estão cada vez mais presentes, e o estudo da

relaçãohomem‐máquinaestátransformaromodocomonosrelacionamoscomatecnologia

paraumarelaçãomaistransparenteenatural.

Comasimplificaçãodaprogramaçãoparasistemasmultimédiainteractivos,quemsabese

veremosnum futuro próximo a empresaApple a lançar como seu sistemaoperativoum

produtonestecampo.TalvezoiInteract?

53

6. Referências

art+com.(2002).medialstageandcostumedesign.Obtidoem27deSetembrode2009,de

art+com:

http://www.artcom.de/index.php?option=com_acprojects&page=6&id=29&Itemid=115&d

etails=0&lang=en

Clarke,M.,Watkins,A.,Adkins,M.,&Bokowiec,M. (2004). Sybil: Synthesisby Interactive

Learning.InternationalComputerMusicConference.Miami:ICMC.

CNMAT. (s.d.).University of California at Berkeley CNMAT. Obtido em 28 de Setembro de

2009, de Center for New Music and Audio Technologies (CNMAT):

http://cnmat.berkeley.edu/downloads

EyesWeb Open Platform. (s.d.). Obtido em 27 de Setembro de 2009, de InfoMus Lab:

http://www.infomus.org/EyesWeb/EywPlatform.html

EyesWeb Project. (s.d.). Obtido em 26 de Setembro de 2009, de InfoMus Lab:

http://www.infomus.org/EywMain.html

Gomes, G. (2009). sofisma. Obtido em 25 de Setembro de 2009, de

http://sofisma.eu/newsletter/#polligital

Maxobjectsdatabase.(s.d.).Obtidoem28deSetembrode2009,deMaxobjectsdatabase:

http://maxobjects.com/

net, m. a. (s.d.).media art net. Obtido em 26 de September de 2009, de media art net:

http://www.medienkunstnetz.de/mediaartnet/

Packer,R.,&Jordan,K.(2002).Multimedia­formWagnertovirtualreality.Norton.

Place,T.,&Lossius,T.(2006).Jamoma:amodularstandardforstructuringpatchesinMax.

ProceedingsoftheInternationalComputerMusicConference.NewOrleans:ICMC.

Place, T., Lossius, T., Jensenius, A. R., & Peters, N. (2008). Flexible control of composite

parametersinMax/MSP.ProceedingsoftheInternationalComputerMusicConference2006.

Belfast.

54

Puckette,M.S.(1988).Maxreferencemanual.

Pure Data Portal. (s.d.). Obtido em 26 de September de 2009, de Pure Data Portal:

http://puredata.info/

Rokeby, D. (s.d.). David Rokeby. Obtido em 26 de Setembro de 2009, de David Rokeby:

http://homepage.mac.com/davidrokeby/home.html

Troikatronix home. (s.d.). Obtido em 26 de Setembro de 2009, de Troikatronix:

http://troikatronix.com/

Winkler, T. (1995). Making Motion Musical: Gesture Mapping Strategies for Interactive

ComputerMusic.InternationalComputerMusicConference.

Zicarelli,D.,&Taylor,G.(2006).MaxFundamentals.Cycling'74.

55

Anexo

b.blocks:Manualdereferência

Aspáginasseguintesapresentamumformatopilotoparaadocumentaçãodereferência

detalhadadealgunsdosobjectosb.blocksmaisdesenvolvidos.

Osímbolo$éusadopararepresentarovalorpretendidocomoenviodamensagem

correspondente.Ovalorpodeserdeváriostipos:

$i‐númerointeiro(int);

$f–númerodecimal(float);

$s–texto(symbol);

56

57

MódulosdeAnáliseeProcessamentode

Imagem

58

b.brcosa

Graphicalinterfaceforthejit.brcosaobject.Adjuststhebrightness,contrastandsaturationofavideoinput.GUI

Name Type Range Description1 brightness float any Brightnessvalue.2 contrast float any Contrastvalue.3 saturation float any Saturationvalue.

Inlets Name Type Range Description1 matrixinput,

brightness,messages

Matrix,float,symbol

any Inputforthevideomatrixstream.Afloatwilladjustthebrightnessvalue.Inputforallthemessages.

2 contrast float any Contrastvalue.3 saturation float any Saturationvalue.Outlets Name Type Range Description1 matrixoutput Matrix VideomatrixoutputMessagesFormat Range Descriptionbrightness$f any Brightnessvalue.Valuesabove1increasebrightness,

whilevaluesbelow1willdecreaseit.contrast$f

any Contrastvalue.Valuesabove1increasecontrast,whilevaluesbelow1willdecreaseit.

Saturation$f any Saturationvalue.Valuesabove1increasesaturation,whilevaluesbelow1willdecreaseit.

59

b.colorfilter

b.colorfilterallowstheselectionofonecolorwithatolerancefactor,andblacksoutallothercolors.Alternatively,theinversebuttonwillblackoutonlytheselectedcolorrange.GUI

Name Type Range Description1 Inverse toggle 2 Pickcolor toggle Opensorclosesthe

colorpickerwindow

Name Type Range Description1 screen Aclickonthescreen

willselectthecolorinthemouseposition

2 colorpicker

Thecolorcentervalue

3 presets Colorpresets4 freeze toggle Freezestheinput

imagesothatchoosingacoloriseasier

5 rgbindicators

Visualindicatorsforthecurrentlyselectedcolorrange

6 rgbcolor float 0.‐1. Colorcenterrgbvalues7 rgb

tolerancefloat 0.‐1. Colorrgbtolerance

valuesInlets Name Type Range Description1 Matrix,

messagesMatrix Inputforthevideomatrixstream.

Outlets Name Type Range Description1 filtered

outputMatrix Videomatrixoutput

2 selectedcolor list Colorvaluesofthecolorselectedinthecolorpicker.

MessagesFormat Range Descriptioncolor$f$f$f

0.‐1. Brightnessvalue.Valuesabove1increasebrightness,whilevaluesbelow1willdecreaseit.

tol$f$f$f 0.‐1. Contrastvalue.Valuesabove1increasecontrast,whilevaluesbelow1willdecreaseit.

60

b.crop

Cropstheimageoutsidetheselectedarea.GUI

Name Type Range Description1 region toggle Openstheregionselection

window

Name Type Range Description1 screen Theinputimageand

theselectionboxwillbeshownhere

2 presets Regionpresets3 Left,top,

right,bottom

int 0‐? Selectionofthecropregion

4 freeze toggle Freezestheinputimage

6 mask int 0‐255 Masktransparencylevel

Inlets Name Type Range Description1 Matrix,

messagesMatrix Inputforthevideomatrixstream.

Outlets Name Type Range Description1 output Matrix CroppedoutputMessagesFormat Range Descriptioncrop$i$i$i$i

0‐? Cropregion.Fourvaluestoinputthelefttoprightandbottomcoordinates.

61

b.framediff

Subtractsthecurrentframewiththelastframe.Theoutputwillshowonlythechangedpixels.GUI

Name Type Range DescriptionTherearenoparameters.Onlythenamebuttonwillwork.

Inlets Name Type Range Description1 matrixinput Matrix Inputforthevideomatrixstream.Outlets Name Type Range Description1 matrixoutput Matrix VideomatrixoutputMessagesFormat Range Descriptionnone

62

b.grab

Graphicalinterfaceforthejit.qt.grabobject.Grabsvideofromanyquicktimecompatibleexternaldigitizer.GUI

Name Type Range Description1 digitizer Menu 2 driver Menu 3 settings Button 4 dimensions Menu 5 open/close toggle 6 b/w toggle 7 mirror toggle

Inlets Name Type Range Description1 matrixinput,

messagesMatrix,symbol

Inputforthevideomatrixstream.Inputforallthemessages.

Outlets Name Type Range Description1 matrixoutput Matrix Videomatrixoutput.2 Message

outputSymbol Messagesfromtheinternaljit.qt.grabobject.

MessagesFormat

Range Description

open Openstheselecteddigitizerclose Closesthecurrentdigitizerdim$i$i 0‐? Videomatrixdimensions.mirror$i 0/1 Flipstheimagehorizontallybw$i Convertstheimagetoblackandwhite(lumakey)bang Manuallytriggeraframeb.grabwillreceiveanyothermessagetothejit.qt.grabobject,soallthemessagesofthisobjectcanbeused.

63

b.movie

Amovieplayerbasedonthejit.qt.movieobject.Readsanyquicktimecompatiblevideoformat.GUI

Name Type Range Description1 filename label Currentfilename2 read button Opendialoguewindow3 start/stop toggle Start/stopmovie4 mirror Menu Fliptheimage

horizontally5 b/w toggle Convertto

monochrome(luminance)

6 position slider Inlets Name Type Range Description1 bang,

messagesBang,symbol

Abangoutputsoneframe.Inputforallthemessages.

Outlets Name Type Range Description1 matrixoutput Matrix Videomatrixoutput.2 Message

outputSymbol Messagesfromtheinternaljit.qt.movieobject.

MessagesFormat Range Descriptionbw$i 0/1 Togglesblackandwhite(monochrome)modedim$i$i 0‐? Videomatrixdimensions.mirror$i 0/1 Togglesmirror(horizontalflip)modestart Startsthecurrentlyloadedmoviestop Stopsthecurrentlyloadedmovieb.moviewillreceiveanyothermessagetothejit.qt.movieobject,soallthemessagesofthisobjectcanbeused.

64

b.negative

Invertsthecolorstoobtainthenegativecolorimage.GUI

Name Type Range DescriptionTherearenoparameters.Onlythenamebuttonwillwork.

Inlets Name Type Range Description1 matrixinput Matrix Inputforthevideomatrixstream.Outlets Name Type Range Description1 matrixoutput Matrix VideomatrixoutputMessagesnone

65

b.videomixer

Mixerfortwojittermatrixinputsusingjit.op.Allowsdifferentblendingoperators.GUI

Name Type Range Description1 op menu Mathematicaloperator2 MixA/B slider 0‐127 Mixamount3 center button

Inlets Name Type Range Description1 bang,

messagesBang,symbol

Abangoutputsoneframe.Inputforallthemessages.

Outlets Name Type Range Description1 matrixoutput Matrix Videomatrixoutput.2 Message

outputSymbol Messagesfromtheinternaljit.qt.movieobject.

MessagesFormat Range Descriptionbw$i 0/1 Togglesblackandwhite(monochrome)modedim$i$i 0‐? Videomatrixdimensions.mirror$i 0/1 Togglesmirror(horizontalflip)modestart Startsthecurrentlyloadedmoviestop Stopsthecurrentlyloadedmovie

66

b.window

Wraperforthejit.windowobject.Createsajitterfloatingwindow.GUI

Name Type Range Description1 size menu Windowsize2 name toggle Editthewindowname3 escapekey toggle 0/1 Ifon,usingtheescape

keywillopenorclosethefullscreenmode

4 thru toggle 0/1 Ifon,theinputmatrixwillbesentouttheoutlet.

Inlets Name Type Range Description1 Matrixinput,

messagesMatrix,messages

Thematrixtobesenttothefloatingorfullscreenwindow.

Outlets Name Type Range Description1 matrixoutput Matrix Inputmatrixoutput,ifthruison.Messagesb.windowwillreceiveanyothermessagetothejit.windowobject,soallthemessagesofthisobjectcanbeused.

67

b.centroid

Basedonthecv.jit.centroidsobject,fromthecv.jitlibrarybyJean­MarcPelletier,b.centroidcalculatesthehorizontalandverticalcentroidoftheinputimage,andalsothemass.GUI

Name Type Range Description1 center pictslider Centroidhorizontal

andverticalvalue2 horizontal float 0.‐1. Horizontalvalue3 vertical float 0.‐1. Verticalvalue4 Interp. int 0–inf. Interpolationforthe

centroidcoordinates5 mass slider 0–inf. Massvalue(slider)6 max. int Massmaximumvalue7 auto toggle Automaticallyfindthe

massmaximumvalue8 massvalue int Massvalue(int)

9 binary toggle Useablackandwhite(binary)imageinsteadofgreyscale

10 thresh. float Thresholdforthebinaryimage

Inlets Name Type Range Description1 Matrixinput,

messagesmatrix,symbol

Imagetobeanalysed.Inputforallthemessages.

Outlets Name Type Range Description1 matrixoutput Matrix Videomatrixoutput.2 Centroid

coordinates(xy)Floatlist

0.–1. Thecentroidhorizontalandverticalcoordinates,inafloatlist.

3 Centroidcoordinates(xy)

Intlist 0–n Thecentroidhorizontalandverticalcoordinates,inaintlist.

4 Currentmass int Massvalue5 Masspeak int MasspeakvalueMessagesFormat Range Descriptionbinary$i 0/1 Togglesbinary(blackandwhite)modedim$i$i 0‐? Videomatrixdimensions.mirror$i 0/1 Togglesmirror(horizontalflip)modestart Startsthecurrentlyloadedmoviestop Stopsthecurrentlyloadedmovie

68

69

MódulosdeProcessamentodeSom

70

71

b.brickwall

AnFFTbrickwallfilter.Onlythefrequenciesinsidethedefinedbinrangepassthru.Binscorrespondtofftfrequencybands.GUI

Name Type Range Description1 high int 0‐255 Highbin(frequency

band)number2 low int 0‐255 Lowbin(frequency

band)numberInlets Name Type Range Description1 Signalinput audio ‐ Audiosignaltobefiltered.2 Lowbinnumber/

messagesInt/symbol

0‐255‐

Lowbinnumber

3 Highbinnumber Int 0‐255 HighbinnumberOutlets Name Type Range Description1 Signaloutput Audio ‐ FilteredsignaloutputMessagesFormat Range Descriptionhigh$i Int Highbinnumberlow$i$i Int Lowbinnumber

72

b.envelope

Ageneralpurposeenvelopegenerator.Canbeusedforcontroloraudio.GUI

Name Type Range Description1 trigger bang ‐ Triggertheenvelope2 Preset Preset 0‐8 Envelopepresets3 envelope Function ‐ Envelopecurve4 Timeslider Slider Currenttime5 Time(x)

valueInt 0‐? Currenttime

6 Value(y) float ?‐? Currentvalue7 Max Float ‐ Maximumvalue8 Min float ‐ Minimumvalue9 dur Int 0‐? Envelopeduration

Inlets Name Type Range Description1 bang,

messagesBang,symbol

Abangtriggerstheenvelope.Inputforallthemessages.

Outlets Name Type Range Description1 Yvalue(float) float ‐ Yvalue(float)2 Yvalue(signal) signal ‐ Yvalue(signal)3 Envelope List ‐ OutputinlineformatMessagesFormat Range Descriptiondur$i 0‐? Envelopeduration(miliseconds)min$i 0‐? Minimumenvelopevaluemax$i 0/1 Maximumenvelopevaluepreset$i ‐ Envelopepresetnumber

73

b.freqsplit

Anaudiosplitter.Splitstheinputsignalinupto4frequencyregions.GUI

Name Type Range Description1 Splitpoints Radio 1‐3 Numberofsplitpoints2 Splitpoint1 Int 0‐255 Binnumberatsplitpoint13 Splitpoint2 Int 0‐255 Binnumberatsplitpoint24 Splitpoint3 int 0‐255 Binnumberatsplitpoint3

Inlets Name Type Range Description1 Audioinput signal ‐ Audiosignaltobeprocessed2 Splitpoint1/

messagesInt/Symbol

0‐255 Binnumberatsplitpoint1

3 Splitpoint2 int 0‐255 Binnumberatsplitpoint24 Splitpoint3 Int 0‐255 Binnumberatsplitpoint3Outlets Name Type Range Description1 Output1 signal ‐ Frequenciesbelowsplitpoint12 Output2 signal ‐ Frequenciesbetweensplitpoints1and23 Output3 signal ‐ Frequenciesbetweensplitpoints2and34 Output4 signal ‐ Frequenciesabovesplitpoint2MessagesFormat Range Descriptionsplitpoint1$i 0‐255 Binnumberatsplitpoint1splitpoint1$i 0‐255 Binnumberatsplitpoint2splitpoint1$i 0‐255 Binnumberatsplitpoint3