Reuniões do projeto melhor que puredata [suspensas]

Reuniões de treinamento para o pessoal novo que quer aprender música em jogos.

Hoje (2/3/2016), na reunião com

[ol][li]Wil do BCC[/li]
[li]Rica do BCC[/li]
[li]Fernando do BMAC[/li]
[li]Thiago da Pura[/li]
[li]Juan da Aplicada[/li][/ol]

Depois de revisar e discutir vários aspectos sobre trilhas sonoras de jogos, foi decidido que esse grupo fará um projeto em duas partes:

[ol][li]Uma ferramenta à-la Pure Data, só que melhor[/li]
[li]Um micro-jogo para prova conceitual da ferramenta acima[/li][/ol]

E as reuniões serão agora de quintas-feiras, das 15h às 17h, a partir da semana que vem.

Bom, eu super gostei da ideia de fazer uma nova ferramenta a-la puredata, porem não sei tanto de programação quanto o resto do grupo (serio, eu sei só o básico). Então eu gostaria que vocês me dessem algumas direções do que estudar pra poder realmente fazer parte do projeto e não retardar muito o andamento. :slight_smile:

Sem problemas, Fernando. Por enquanto, eu recomendo que todos do grupo leiam um pouco mais sobre computação musical. Um livro recomendado pelo professor Macelo Queiroz é o Elements of Computer Music, do F. Richard Moore. Mais especificamente sobre o Pure Data tem o Designing Sound, do Andy Farnell. Inclusive, tem este texto dele que fala sobre áudio processual e como isso pode ser explorado em jogos.

Sobre programação em geral, antes de mais nada, recomendo que vocês prestem atenção em MAC0110 (afinal de contas, vocês têm os melhores professores do Brasil ensinando (teoricamente), melhor aproveitar(???)). De resto, eu posso gastar um pouco das nossas reuniões para rever os princípios conforme for necessário. Acredito que todos vão precisar de algum preparo, de um jeito ou de outro.

Além disso, vamos inevitavelmente usar o Git, então peço que vocês já instalem e configurem ele nas suas máquinas (as do laboratório e da rede linux já têm).

Atualizando o fórum do projeto:
Semana passada nós revisamos alguns conceitos de programação que vamos precisar e decidimos fazer o programa em c++. Foi basicamente isso.

Falta agora decidir o que vamos fazer esta quinta (17/03).

Nós também mais ou menos decidimos em tentar usar um modelo de programação funcional para o formato dos arquivos de “áudio dinâmico”.

Para a próxima reunião, seria legal já tentarmos começar a implementar alguma coisa. Vai ser meio puxado, mas suspeito que seja mais engajante do que ficarmos só discutindo e revisando. Vou tentar deixar um código meio preparado, mas não garanto nada =).

Blz, alguma recomendação de leitura pra próxima reunião?

Se você conseguir uma cópia do Game Programming Gems vol. 2, recomendo a leitura do capítulo 6.4 “Interactive Processing Pipeline for Digital Audio”. Tudo bem se não entender a parte do código, eu também não entendi. O Importante é entender o pipeline que o cara propõe.

Hoje tentamos fazer um programinha em C++ que tocasse uma simples onda senoidal usando OpenAL. Sugeri usar a estratégia de aprender pelo copy&paste (no caso usando um trecho de código do meu projeto de mestrado) mas não foi muito frutífero. No fim, deixamos para tentar de novo na semana que vem. Dessa vez, a lição de casa é dar uma estudada no OpenAL para no dia tentarmos fazer de novo o mesmo só que começando do zero e escrevendo em C.

iai gente! alguem vai vir na quinta-feira?
na quarta eu venho para o game programming e confirmo pra vocês mas quase certeza eu venho!

Não vou poder ir esta quinta :frowning:

Hoje discutimos mais sobre a arquitetura geral da ferramenta, e tivemos as seguintes ideias:

[ol][li]Representação em árvore das computações (uma “função” onde os galhos são parâmetros e a raiz é a saída). A árvore é um patch.[/li]
[li]Existem objetos/vértices que representam parâmetros (editáveis em tempo de criação pelo editor visual - valores armazenados no arquivo texto).[/li]
[li]Objetos/vértices que representam variáveis (editáveis em tempo de execução pelo motor através de comandos da API emitidos pelo jogo).[/li]
[li]Os arquivos - representando patches - tem em seus headers a declaração do número e tipo de parâmetros, tipo de retorno e declaração de variáveis e parâmetros (que serão herdados por arquivos que o incluam [ver abaixo]).[/li]
[li]Mecanismo de inclusão de arquivos (subpatches) por outros arquivos.[/li]
[li]O motor terá uma representação interna do arquivo, onde as variáveis são atribuídas valores (default ou pela API). A representação consiste em um objeto árvore que lida com os objetos-vertices (funções) e conexões (que tem um tipo de dado, compatível com a saída e entrada dos objetos que conecta).[/li][/ol]

Para a semana que vem, ler este tutorial básico de C++ e ler sobre Lazy Evaluation.

Eaí pessoas? Como foi o levantamento de features???

Bom, vou fazer uma reapresentação do projeto, já que entrou bastante gente no USPGameDev desde a última atualização do projeto aqui no fórum.
Atualmente os integrantes do grupo são:

  1. Wil do BCC
  2. Fernando do BMAC
  3. Thiago da Pura
  4. Juan da Aplicada
  5. Rica do BCC

A ideia do projeto é desenvolver uma ferramenta ao estilo do Pure Data, uma pegada de programação visual voltada pra música, só que no nosso caso “música dinâmica”, capaz de mudar conforme o jogo acontece. E, depois de criada essa ferramente, fazer um joguinho pra provar que a ferramenta funciona.
Até agora decidimos fazer a ferramenta em c++ e foi discutido algumas features que o programa deve ter:
- Ler arquivos
- Reproduzir arquivos
- Editar arquivos (Edição)

  • Criar / Deletar objetos
  • Conectar objetos
  • Alterar parâmetros
  • Salvar arquivo
  • Criar subpatches
  • (?) Criar objetos
    - API (Reprodução)
  • Reproduzir t segundos de áudio
  • Gerar t segundos de samples
  • Alterar variáveis

- Sintaxe

  • Estrutura/Padrões dos arquivos
  • Quais são os objetos?
    - Leitura
  • Estrutura/Padrões dos objetos (semântica)
  • Parsing
  • Un-parsing
    - Reprodução
  • Geração de sampĺes
  • Reprodução de samples
    - Edição
  • Manipulação de objetos
  • GUI
    - API
  • Alteração de variáveis
  • Reprodução de samples
  • Produção de samples

É isso, qualquer dúvida só perguntar ai. As reuniões continuam sendo às quintas [15:00-17:00].