Áudio para jogos

Saiba como desenvolver e incorporar música e sons em seu jogo DirectX e como processar os sinais de áudio para criar sons dinâmicos e posicionais.

Para programação de áudio, recomendamos usar a biblioteca XAudio2 no DirectX ou as APIs de gráficos de áudio do Tempo de Execução do Windows. Usamos o XAudio2 aqui. O XAudio2 é uma biblioteca de áudio de baixo nível que fornece uma base de processamento e mixagem de sinal para jogos e dá suporte a uma variedade de formatos.

Você também pode implementar sons simples e reprodução de música com o Microsoft Media Foundation. O Microsoft Media Foundation foi projetado para a reprodução de arquivos e fluxos de mídia, tanto de áudio quanto de vídeo, mas também pode ser usado em jogos e é particularmente útil para cenas cinematográficas ou componentes não interativos do seu jogo.

Visão rápida de conceitos

Aqui estão alguns conceitos de programação de áudio que usamos nesta seção.

  • Os sinais são a unidade básica da programação de som, análoga aos pixels nos gráficos. Os processadores de sinal digital (DSPs) que os processam são como os sombreadores de pixel do áudio do jogo. Eles podem transformar sinais, combiná-los ou filtrá-los. Ao programar para os DSPs, você pode alterar os efeitos sonoros e a música do seu jogo com o mínimo ou o máximo de complexidade necessário.
  • As vozes são as composições submisturadas de dois ou mais sinais. Há 3 tipos de objetos de voz XAudio2: vozes de origem, submix e masterização. As vozes de origem operam em dados de áudio fornecidos pelo cliente. As vozes de origem e submix enviam sua saída para uma ou mais vozes de submix ou masterização. As vozes de submixagem e masterização misturam o áudio de todas as vozes que as alimentam e operam no resultado. As vozes de masterização gravam dados de áudio em um dispositivo de áudio.
  • A mixagem é o processo de combinar várias vozes discretas, como os efeitos sonoros e o áudio de fundo que são reproduzidos em uma cena, em um único fluxo. A submixagem é o processo de combinar vários sinais discretos, como os sons componentes de um ruído do motor, e criar uma voz.
  • Formatos de áudio. Música e efeitos sonoros podem ser armazenados em uma variedade de formatos digitais para o seu jogo. Existem formatos não compactados, como WAV, e formatos compactados como MP3 e OGG. Quanto mais uma amostra é compactada - normalmente designada por sua taxa de bits, onde quanto menor a taxa de bits, mais com perdas a compactação - pior a fidelidade ela tem. A fidelidade pode variar entre esquemas de compactação e taxas de bits, portanto, experimente-os para descobrir o que funciona melhor para o seu jogo.
  • Taxa de amostragem e qualidade. Os sons podem ser amostrados em taxas diferentes, e os sons amostrados em uma taxa mais baixa têm uma fidelidade muito menor. A taxa de amostragem para qualidade de CD é de 44,1 Khz (44100 Hz). Se você não precisar de alta fidelidade para um som, poderá escolher uma taxa de amostragem mais baixa. Taxas mais altas podem ser apropriadas para aplicativos de áudio profissionais, mas você provavelmente não precisa delas, a menos que seu jogo exija som de fidelidade profissional.
  • Emissores de som (ou fontes). No XAudio2, os emissores de som são locais que emitem um som, seja um mero ruído de fundo ou uma faixa de rock rosnando tocada por uma jukebox no jogo. Você especifica emissores por coordenadas mundiais.
  • Ouvintes de som. Um ouvinte de som geralmente é o jogador, ou talvez uma entidade de IA em um jogo mais avançado, que processa os sons recebidos de um ouvinte. Você pode mixar esse som no fluxo de áudio para reprodução no player ou pode usá-lo para realizar uma ação específica no jogo, como despertar um guarda de IA marcado como ouvinte.

Considerações sobre o design

O áudio é uma parte tremendamente importante do design e desenvolvimento de jogos. Muitos jogadores podem se lembrar de um jogo medíocre elevado ao status de lendário apenas por causa de uma trilha sonora memorável, ou ótimo trabalho de voz e mixagem de som, ou produção geral de áudio estelar. A música e o som definem a personalidade de um jogo e estabelecem o principal motivo que define o jogo e o diferencia de outros jogos semelhantes. O esforço que você gasta projetando e desenvolvendo o perfil de áudio do seu jogo valerá a pena.

O áudio 3D posicional pode adicionar um nível de imersão além do fornecido pelos gráficos 3D. Se você estiver desenvolvendo um jogo complexo que simula um mundo ou que exige um estilo cinematográfico, considere usar técnicas de áudio posicional 3D para realmente atrair o jogador.

Roteiro de desenvolvimento de áudio DirectX

Recursos conceituais do XAudio2

XAudio2 é a biblioteca de mixagem de áudio para DirectX e destina-se principalmente ao desenvolvimento de mecanismos de áudio de alto desempenho para jogos. Para desenvolvedores de jogos que desejam adicionar efeitos sonoros e música de fundo a seus jogos modernos, o XAudio2 oferece um gráfico de áudio e um mecanismo de mixagem com baixa latência e suporte para buffers dinâmicos, reprodução síncrona com precisão de amostra e conversão implícita de taxa de origem.

Tópico Descrição

Introdução ao XAudio2

O tópico fornece uma lista dos recursos de programação de áudio compatíveis com o XAudio2.

Introdução ao XAudio2

Este tópico fornece informações sobre os principais conceitos do XAudio2, as versões do XAudio2 e o formato de áudio RIFF.

Conceitos comuns de programação de áudio

Este tópico fornece uma visão geral dos conceitos comuns de áudio com os quais um desenvolvedor de áudio deve estar familiarizado.

Vozes XAudio2

Este tópico contém uma visão geral das vozes XAudio2, que são usadas para submixar, operar e masterizar dados de áudio.

Retornos de chamada do XAudio2

Este tópico aborda os retornos de chamada do XAudio 2, que são usados para evitar interrupções na reprodução de áudio.

Gráficos de áudio do XAudio2

Este tópico aborda os grafos de processamento de áudio XAudio2, que usam um conjunto de fluxos de áudio do cliente como entrada, processam-nos e fornecem o resultado final a um dispositivo de áudio.

Efeitos de áudio XAudio2

O tópico aborda os efeitos de áudio XAudio2, que pegam dados de áudio de entrada e executam alguma operação nos dados (como um efeito de reverberação) antes de passá-los adiante.

Streaming de dados de áudio com XAudio2

Este tópico aborda o streaming de áudio com o XAudio2.

X3DAudio

este tópico aborda o X3DAudio, uma API usada em conjunto com o XAudio2 para criar a ilusão de um som vindo de um ponto no espaço 3D.

Referência de programação XAudio2

Esta seção contém a referência completa para as APIs XAudio2.

Recursos de "como fazer" do XAudio2

Tópico Descrição

Como inicializar o XAudio2

Saiba como inicializar o XAudio2 para reprodução de áudio criando uma instância do mecanismo XAudio2 e criando uma voz de domínio.

Como carregar arquivos de dados de áudio no XAudio2

Saiba como preencher as estruturas necessárias para reproduzir dados de áudio no XAudio2.

Como reproduzir um som com o XAudio2

Saiba como reproduzir dados de áudio carregados anteriormente no XAudio2.

Como usar vozes de submix

Saiba como definir grupos de vozes para enviar sua saída para a mesma voz de submix.

Como usar retornos de chamada de voz de origem

Saiba como usar retornos de chamada de voz de origem XAudio2.

Como usar retornos de chamada do mecanismo

Saiba como usar retornos de chamada do mecanismo XAudio2.

Como criar um gráfico básico de processamento de áudio

Saiba como criar um gráfico de processamento de áudio, construído a partir de uma única voz de masterização e uma única voz de origem.

Como adicionar ou remover dinamicamente vozes de um gráfico de áudio

Saiba como adicionar ou remover vozes de submix de um gráfico que foi criado seguindo as etapas em Como criar um gráfico de processamento de áudio básico.

Como criar uma cadeia de efeitos

Saiba como aplicar uma cadeia de efeitos a uma voz para permitir o processamento personalizado dos dados de áudio dessa voz.

Como criar um XAPO

Saiba como implementar o IXAPO para criar um XAPO (objeto de processamento de áudio) XAudio2.

Como adicionar suporte a parâmetros de tempo de execução a um XAPO

Saiba como adicionar suporte a parâmetros de tempo de execução a um XAPO implementando a interface IXAPOParameters.

Como usar um XAPO no XAudio2

Saiba como usar um efeito implementado como um XAPO em uma cadeia de efeitos XAudio2.

Como usar o XAPOFX no XAudio2

Saiba como usar um dos efeitos incluídos no XAPOFX em uma cadeia de efeitos XAudio2.

Como transmitir um som do disco

Saiba como transmitir dados de áudio no XAudio2 criando um thread separado para ler um buffer de áudio e usar retornos de chamada para controlar esse thread.

Como integrar o X3DAudio ao XAudio2

Saiba como usar o X3DAudio para fornecer os valores de volume e tom para vozes XAudio2, bem como os parâmetros para o efeito de reverberação interno do XAudio2.

Como agrupar métodos de áudio como um conjunto de operações

Saiba como usar conjuntos de operações XAudio2 para fazer com que um grupo de chamadas de método entre em vigor ao mesmo tempo.

Depurando falhas de áudio no XAudio2

Saiba como definir o nível de log de depuração para XAudio2.

Recursos da Media Foundation

A Media Foundation (MF) é uma plataforma de mídia para streaming de reprodução de áudio e vídeo. Você pode usar as APIs do Media Foundation para transmitir áudio e vídeo codificados e compactados com uma variedade de algoritmos. Ele não foi projetado para cenários de jogo em tempo real; em vez disso, ele fornece ferramentas poderosas e amplo suporte a codecs para captura e apresentação mais lineares de componentes de áudio e vídeo.

Tópico Descrição

Sobre o Media Foundation

Esta seção contém informações gerais sobre as APIs do Media Foundation e as ferramentas disponíveis para dar suporte a elas.

Media Foundation: Conceitos Essenciais

Este tópico apresenta alguns conceitos que você precisará entender antes de escrever um aplicativo Media Foundation.

Arquitetura do Media Foundation

Esta seção descreve o design geral do Microsoft Media Foundation, bem como as primitivas de mídia e o pipeline de processamento que ele usa.

Captura de áudio/vídeo

Este tópico descreve como usar o Microsoft Media Foundation para executar a captura de áudio e vídeo.

Reprodução de áudio/vídeo

Este tópico descreve como implementar a reprodução de áudio/vídeo em seu aplicativo.

Formatos de mídia com suporte no Media Foundation

Este tópico lista os formatos de mídia aos quais o Microsoft Media Foundation dá suporte nativo. (Terceiros podem oferecer suporte a formatos adicionais escrevendo plug-ins personalizados.)

Codificação e criação de arquivos

Este tópico descreve como usar o Microsoft Media Foundation para executar a codificação de áudio e vídeo e criar arquivos de mídia.

Codecs de mídia do Windows

Este tópico descreve como usar os recursos dos codecs de áudio e vídeo do Windows Media para produzir e consumir fluxos de dados compactados.

Referência de programação do Media Foundation

Esta seção contém informações de referência para as APIs do Media Foundation.

Exemplos de SDK do Media Foundation

Esta seção lista aplicativos de exemplo que demonstram como usar o Media Foundation.

Tipos de mídia XAML do Tempo de Execução do Windows

Se você estiver usando a interoperabilidade DirectX-XAML, poderá incorporar as APIs de mídia XAML do Tempo de Execução do Windows em seus aplicativos UWP usando DirectX com C++ para cenários de jogo mais simples.

Tópico Descrição

Windows.UI.Xaml.Controls.MediaElement

Elemento XAML que representa um objeto que contém áudio, vídeo ou ambos.

Áudio, vídeo e câmera

Saiba como incorporar áudio e vídeo básicos em seu aplicativo UWP (Plataforma Universal do Windows).

MediaElement

Saiba como reproduzir um arquivo de mídia armazenado localmente em seu aplicativo UWP.

MediaElement

Saiba como transmitir um arquivo de mídia com baixa latência em seu aplicativo UWP.

Transmissão de mídia

Saiba como usar o contrato Reproduzir em para transmitir mídia do seu aplicativo UWP para outro dispositivo.

Referência