Upload
trinhkiet
View
213
Download
0
Embed Size (px)
Citation preview
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
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.
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
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çãorevelasefrequentementeextenuante,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. 11 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.11Ligaçõ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.12Umpatchfacilmentepodeteresteaspecto
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.13). 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.13Inversã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.14Esquema
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.21VariationsV(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.22CenasdaVirtOpera,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.23AdobeCS3: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.24Diagramadefluxodeumcircuitode
modulaçãoemanel
Fig.25OmesmocircuitoimplementadoemMax
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 JeanMarc 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.26DavidRokeby:VeryNervous
System
Fig.27Mó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.28AjaneladeediçãodeIntegra
Fig.29Sybil
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.210PureData
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.211Janeladeediçã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.212EyesWeb
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.31Módulob.blocks
31
Fig.32Secçõ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.33Cabeç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.34Interiordeumpatchb.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.35Omó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.36Subpatch
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.37Mododeediçã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.38Organizaçã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(JeanMarcPelletier,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
JeanMichel 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.41Polligital.Fichatécnicaeimagens
46
ACERTTondela
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.43ACERT‐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.42ACERT‐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.46patch“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).MultimediaformWagnertovirtualreality.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);
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.jitlibrarybyJeanMarcPelletier,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
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