Análise de livro: Getting Started with C++ Audio Programming for Game Development (Packt Publishing)

BookCppAudioProgramming

Esse é um livro introdutório para desenvolvedores C++ (intermediário) que querem iniciar em programação de áudio, mais especificamente usando FMOD. O autor começa apresentando no primeiro capítulo alguns conceitos universais de áudio, como volume, pitch, frequência, bit depth e formatos de arquivos de áudio. Em seguida, introduz o FMOD e explica como adiciona-lo a um projeto (Visual Studio C++), como iniciar o FMOD, carregar e reproduzir áudio e verificar erros. Após essa introdução do FMOD, há um projeto para criar um simples gerenciador de áudio através de uma classe C++. No capítulo 3, o autor expande o gerenciador para incluir controle de áudio, isto é, playback, controle de volume, pitch, panning, agrupamento de canais.

Com o básico de áudio explicado, o autor parte para áudio 3D e como trabalhar com áudio posicional, reverb e efeitos no FMOD. Ao trabalhar com áudio posicional, o desenvolvedor precisa lidar com oclusão e obstáculos que afetam a maneira como o áudio é percebido pelo jogador. Este é um tópico que poderia ser explorado com mais detalhes pelo autor, pois ele comenta sobre o assunto em apenas duas páginas. O mesmo vale para efeitos via DSP (processamento de sinais digitais), que é comentado nas 3 últimas páginas do mesmo capítulo de áudio 3D.

A ferramenta FMOD Designer também é apresentada. É uma ótima ferramenta da Firelight Technologies (desenvolvedora do FMOD) para aqueles que são mais focados em design. O autor explica como criar eventos simples de som (como efeitos de passos e vidro quebrando), evento multi-trilha (passos interativos, motor de carro) e música interativa, além de como chamar os eventos via código. Para projetos maiores ou que precisam de algo além do controle básico de áudio, essa ferramenta é obrigatória (ou ao menos valerá muito a pena usa-la).

O último capítulo envolve programação de áudio em baixo nível, isto é, como trabalhar com os bytes de um arquivo de som digital – carregar, tocar, alterar propriedades, etc. Embora FMOD ainda seja usado para o controle de áudio, o leitor tem uma visão “por trás dos panos” sobre APIs de áudio de alto nível.

Com ~100 páginas, esse é um bom livro introdutório para desenvolvedores que não estão familiarizados com programação de áudio, principalmente porque não há muitos livros sobre o assunto (há alguns que focam em programação DirectSound/XACT, mas essas tecnologias parecem estar mortas -ou estão morrendo- e são apenas para plataforma Microsoft). É um livro de C++, mas desenvolvedores de outras linguagens (como C#) também podem se beneficiar do conteúdo, uma vez que o FMOD suporta outras linguagens. A decisão do autor em usar o FMOD é boa também: é uma tecnologia multiplataforma, suporta vários formatos de áudio e é adotado em vários jogos de sucesso, por empresas e game engines (como Unity e UE3). Eu já trabalhei em um jogo multiplataforma usando FMOD para áudio e os resultados foram muito bons.

Para iniciar com programação de áudio, acho que o conteúdo e tamanho do livro estão OK, embora o autor poderia se aprofundar mais em áudio 3D e efeitos via DSP (e incluir código de áudio 3D na classe gerenciadora de áudio; o código-fonte só está disponível para os capítulos 2, 3 e 6).

Vale a pena mencionar que o FMOD Studio não é discutido no livro e, para qualquer tarefa não relacionada a áudio (gerenciamento de janela, render e input), o autor usa o SFML (Simple and Fast Multimedia Library).

Gostaria de ver outro livro do autor/editora com assuntos mais avançados de programação de áudio, como mais detalhes sobre como trabalhar com áudio 3D (e suas implicações), efeitos DSP em tempo real, áudio dinâmico e performance. Seria bom também ver um projeto que inclui FMOD Designer (ou FMOD Studio) e código, não apenas exemplos no livro.

Be Sociable, Share!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>