Showing posts with label Apresentação. Show all posts
Showing posts with label Apresentação. Show all posts

Friday, July 27, 2012

Apresentando: OpenFrameworks


O OpenFrameworks é uma plataforma de programação open source baseada em C++. Comparativamente, é muito mais rápida do que o Processing, pois ao compilar, o C++ é diretamente convertido para linguagem de máquina, enquanto o Java precisa ser compilado para bytecode, para então poder passar por uma máquina virtual e então ser entendido pela máquina. 
Isso faz com que o OF seja muito empregado em processamento de vídeo em performances artísticas, quando há o uso de visão computacional, sendo necessárias precisão e velocidade de processamento e de acesso à memória. 
O OF foi criado e é mantido por Zach Lieberman, Theodore Watson, e Arturo Castro, (este último, eu já tive a oportunidade de participar de um workshop com ele).
O OpenFrameworks é na verdade um toolkit para experimentação com a linguagem C++ simplificada, e, para usá-lo, é necessário um IDE "comum", como o Xcode, o Visual Studio, ou o CodeBlocks. Com isto, o OF não é tão simples e intuitivo como o Processing, já que seu uso requer conhecimentos sobre o IDE utilizado.

OpenFrameworks rodando no Xcode (Mac).

Por ser baseado em C++, as sintaxes são menos amigáveis ao usuário, o que complica um pouco o aprendizado de quem está ingressando no mundo da programação.
O caminho "natural" cursado pelos desenvolvedores criativos, segundo minha observação pessoal, se dá de modo que o primeiro contato acontece com o Processing, e, quando o desenvolvedor se sente mais confortável com a programação, ele migra para o OpenFrameworks.

O OF traz uma série de vantagens como:
  • Velocidade
  • Comunidade ativa
  • Muitos Addons
  • Bibliotecas poderosas em C++
  • Facilidades em publicar em IOS e (com o OF 007) em Android
Mas tem desvantagens que complicam a vida de iniciantes como
  • Sintaxe de mais baixo nível
  • Não publica para web
Como o Processing, o OpenFrameworks é muito empregado para desenvolvimento de aplicações interativas, jogos, instalações artísticas e design. 

Informações sobre o OF podem ser acessadas no site oficial do OpenFrameworks http://www.openframeworks.cc/ aonde é possível acessar um Wiki dedicado http://wiki.openframeworks.cc/index.php?title=Main_Page.

O modo de "instalar" varia para cada plataforma. Na verdade, não se instala o OF, mas sim baixa-se uma série de exemplos e addons que são abertos nos IDEs de cada plataforma.
Para criar um aplicativo do zero, é necessário ir na pasta ./apps/myApps, copiar a pasta emptyExample, criar uma pasta e colar a pasta emptyExample nela. É necessário que haja essa hierarquia de 2 níveis, por exemplo ./apps/exemplo/meuExemplo. 
Isso é um pouco complicado, mas entendendo isso, é mais fácil encarar o OF.

O download pode ser feito aqui: http://www.openframeworks.cc/download/. Basta seguir as instruções de setup, nos "setup guides".


O Arturo Castro criou um gerador de projetos de OF que facilita muito a vida ao iniciar um projeto novo e adicionar Addons.

Project Generator para Windows: 

Project Generator para Mac


Tuesday, July 17, 2012

Apresentando: Pure Data


O Pure Data, comumente chamado de PD, é um ambiente de programação em tempo real baseado em C, mas com interface visual. Foi criado inicialmente para trabalhar com áudio, mas também integrou processamento visual. Ele foi desenvolvido por Miller Puckette no IRCAM.
O PD é open source e gratuito, facilmente instalável.

A interface visual à primeira vista é estranha para quem trabalha com linhas de código e tem costume com fluxos de controle bem delimitados. A principio, o programa é caótico e parece rodar tudo ao mesmo tempo, com emaranhados de ligações, lembrando os antigos sintetizadores. É justamente desse sistema de ligações é que deriva o termo patch, como são chamados os arquivos de PD.

Patching real

Patch do PD

O PD é poderoso para o processamento de áudio e é certamente a primera opção para esse fim, mas, para gráficos, ainda é uma opção secundária, embora em franco desenvolvimento.

Conceitualmente, é possível fazer qualquer coisa no PD, já que é relativamente fácil extendê-lo ao desenvolver classes de objetos (externals) e bibliotecas. Inclusive, o PD possui duas versões, o Vanilla e o Extended, sendo o último uma reunião de extensões e bibliotecas feitas por colaboradores.

Existem bibliotecas que possibilitam a comunicação entre o PD e o Arduíno, possibilitando a integração entre software e hardware e eletrônica. Além disso, por meio de OSC (Open Sound Control), é muito simples a integração entre o PD e qualquer outra plataforma de programação, como Processing e OpenFrameworks. Isso possibilita a complementaridade entre as linguagens, de forma que o Processing ou o OF possam funcionar como o motor visual, enquanto o PD realize o papel de motor de áudio.
Através do protocolo MIDI, é possível conectar o pd a qualquer VST ou dispositivo que comunique através deste protocolo.

O futuro aponta para uma integração mais efetiva, de forma que o PD possa ser uma biblioteca para as demais plataformas. Nesse sentido, já existe o libpd: http://libpd.cc/.


O concorrente direto do PD é o Max/msp, que é um software proprietário.


Mais infomações: 

Monday, July 16, 2012

Apresentando: Processing


O Processing é uma linguagem e ambiente de programação open source e grátis, baseada em Java, mas com sintaxe simplificada, o que é ideal para ao primeiro contato com o mundo da programação.
O projeto foi iniciado por Casey Reas e Ben Fry, integrantes do MIT Media Lab em 2001 e agora conta com milhares de colaboradores e usuários em todo mundo.
A versão mais atual é a 2.0a6 (alfa) e a versão estável é a 1.5.1.  O download pode ser feito aqui: http://processing.org/download/.
O Processing é extremamente prático: fácil de instalar, facil de adicionar bibliotecas, conta com um site muito bem estruturado (http://processing.org/), referências bem documentadas, além de ter um IDE extremamente limpo.


Uma de suas maiores virtudes em relação às linguagens de programação comerciais é que o Processing apresenta respostas (visuais ou sonoras) imediatas: basta escrever o código e clicar no botão "run". A compilação é geralmente muito rápida e o resultado aparece na janela que é aberta. Isso torna o aprendizado muito mais fácil e intuitivo.

Uma pergunta pertinente é "o que o Processing faz?". Uma resposta é: tudo o que a imaginação permitir, de meros esboços a jogos completos, aplicativos, instalações artísticas interativas, trabalhos em audio e video, entre outros.

Um porém: o Processing é conhecido por ter limitações importantes: a principal é a lentidão na velocidade de processamento, já que ele roda em uma máquina virtual. Outro gargalo são as bibliotecas, pois algumas vezes o que é cogitado não é alcançado devido a ausência de uma determinada biblioteca que execute alguma função muito específica, mas nada impede que programadores mais avançados escrevam novas bibliotecas que suplantem as necessidades.

Aliás, um ponto forte do Processing é a comunidade, que colabora desenvolvendo bibliotecas, compartilhando códigos, partilhando dúvidas e respondendo perguntas.

Características do Processing:
  • Apesar do IDE limpo, também pode ser compilado no Eclipse ou mesmo em algum outro IDE Java.
  • Possibilita exportar os sketches facilmente para web por javascript. Apesar de exportar para web, as bibliotecas de áudio ainda são limitadas para esse fim. 
  • Exporta diretamente para dispositivos móveis com sistema operacional Android.
  • Com o Iprocessing e o Xcode, é possível exportar para IOS.




Para quem quiser saber a fundo sobre o Processing, uma boa descrição sobre o projeto está na página oficial http://processing.org/.
Há uma breve descrição histórica no Wikipedia http://pt.wikipedia.org/wiki/Processing_(linguagem_de_programa%C3%A7%C3%A3o).

O concorrente direto do Processing é o OpenFrameworks, que falarei mais detalhadamente em outro post. O OF é indiscutivelmente mais rápido que o Processing, pois ele é baseado em C++.

Para quem quiser ver o que o Processing faz, basta ver os vídeos inserido aqui: http://processing.org/exhibition/

Uma forma muito boa de aprender é pelo livro Learning Processing, a Beginner's Guide to Programming Images Animation and Interaction, de Daniel Shiffman.
http://www.learningprocessing.com/

Dúvidas? Poste um comentário!