Sobre o Pure Data
Para essa disciplina, você precisará instalar o software PureData (a.k.a. Pd), na distribuição original (a.k.a. Vanilla) e versão ≥0.50-2: https://puredata.info/downloads/pure-data
Se você usa Ubuntu 20.04, basta rodar no Terminal "sudo apt install puredata".
Assim que instalar o Pd, abra-o e faça um teste de som, acessando o menu Mídia->Testar Áudio e MIDI e em seguida clicando na primeira caixinha com o texto "80" (dB).
Há muito material introdutório na rede sobre Pd, especialmente em https://puredata.info/docs.
A lista abaixo traz algumas recomendações específicas. Especialmente o capítulo 2 do Guia do Andy Farnell são as melhores 15 páginas introdutórias que você encontrará sobre esse software.
- Cartão de referência (1 página) com objetos muito importantes: https://puredata.info/docs/manuals/pdrefcards/pd-refcard-en.pdf
- Guia de Pure Data do livro Designing Sound de Andy Farnell: http://aspress.co.uk/ds/pdf/pd_intro.pdf
- Manual FLOSS do Pd: https://en.flossmanuals.net/pure-data/_full/
- Tutorial do Rafael Hernandez:
- Vídeo-aulas com Miller Puckette, criador do Pd: http://pd-la.info/pd-media/miller-puckette-mus171-videos/
Além do Pd, usaremos algumas bibliotecas externas que são fáceis de instalar a partir de sua própria interface. Abra o Pd (puredata no terminal), acesse o menu "Ajuda", opção "Procurar por externals", e busque as bibliotecas cyclone, ggee, iemguts, iemlib, ofelia, windowing e zexy, sempre escolhendo a versão mais nova disponível.
A biblioteca ofelia oferece uma interface entre o Pd e a linguagem de scripting Lua, um recurso que usaremos bastante. Sua instalação pode trazer algumas pequenas dificuldades, por isso leia as dicas abaixo.
No Linux/Raspbian, é essencial instalar as dependências dessa biblioteca. Para isso, rode os seguintes comandos no terminal (o diretório abaixo pode ser encontrado no menu Arquivo->Preferências->Caminho de busca):
cd ~/.local/lib/pd/extra/ofelia/scripts/nome_da_sua_distribuição
sudo ./install_codecs.sh
sudo ./install_dependencies.sh
Para testar sua instalação, crie um novo arquivo no Pd e dentro dele crie um novo objeto com o nome ofelia. O objeto deve aparecer dentro de um retângulo inteiriço (não-tracejado), com duas marquinhas nos cantos superior e inferior esquerdos. Se esse teste não funcionar, você pode rastrear a causa do problema fazendo
cd ~/.local/lib/pd/extra/ofelia
ldd ofelia.pd_linux | grep "not found"
e instalar com sudo apt install cada uma das bibliotecas não encontradas.
No Windows, se acontecer da biblioteca não carregar, abra o executável vc_redist no diretório do ofelia para instalar os Microsoft Visual C++ Redistributable packages. Se os exemplos em vídeo não funcionarem, tente instalar o K-Lite Codec Pack.A biblioteca ofelia permite o uso da linguagem textual Lua (https://www.lua.org/portugues.html) dentro de patches Pd. Para quem já programou em Python, C, Java, Octave/Matlab ou essencialmente qualquer outra linguagem textual de uso geral, aprender Lua é antes de mais nada familiarizar-se com algumas pequenas diferenças sintáticas. Os links a seguir podem ajudar:
- Uma introdução à programação em Lua: https://www.lua.org/doc/jai2009.pdf
- Lua Quick Guide: https://www.tutorialspoint.com/lua/lua_quick_guide.htm
- Programming in Lua (1st edition): https://www.lua.org/pil/contents.html
A linguagem Pure Data pode ser estendida por várias outras bibliotecas, algumas das quais teremos a oportunidade de usar durante o curso. Uma referência útil para se ter à mão é a lista de externals/bibliotecas para Pd: https://puredata.info/docs/ListOfPdExternals/
Em certo ponto do curso, lidaremos com o recurso de metaprogramação (dynamic patching no jargão Pd). Para isso, as referências a seguir serão úteis:
Descrição do formato de arquivo .pd: https://puredata.info/docs/developer/PdFileFormat
Lista de mensagens internas: https://puredata.info/community/pdwiki/PdInternalMessages
O material avançado a seguir não será usado nessa disciplina, mas pode servir para aqueles que desejem aprofundar seus conhecimentos nessa linguagem. Para implementações grandes ou numericamente pesadas, é interessante construir objetos externos ao Pd escritos em C. Algumas referências úteis para isso são:
https://github.com/flschiavoni/pd-external-tutorial/
https://github.com/pure-data/externals-howto