Á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 |
---|---|
O tópico fornece uma lista dos recursos de programação de áudio compatíveis com o XAudio2. |
|
Este tópico fornece informações sobre os principais conceitos do XAudio2, as versões do XAudio2 e o formato de áudio RIFF. |
|
Este tópico fornece uma visão geral dos conceitos comuns de áudio com os quais um desenvolvedor de áudio deve estar familiarizado. |
|
Este tópico contém uma visão geral das vozes XAudio2, que são usadas para submixar, operar e masterizar dados de áudio. |
|
Este tópico aborda os retornos de chamada do XAudio 2, que são usados para evitar interrupções na reprodução de áudio. |
|
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. |
|
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. |
|
Este tópico aborda o streaming de áudio com o XAudio2. |
|
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. |
|
Esta seção contém a referência completa para as APIs XAudio2. |
Recursos de "como fazer" do XAudio2
Tópico | Descrição |
---|---|
Saiba como inicializar o XAudio2 para reprodução de áudio criando uma instância do mecanismo XAudio2 e criando uma voz de domínio. |
|
Saiba como preencher as estruturas necessárias para reproduzir dados de áudio no XAudio2. |
|
Saiba como reproduzir dados de áudio carregados anteriormente no XAudio2. |
|
Saiba como definir grupos de vozes para enviar sua saída para a mesma voz de submix. |
|
Saiba como usar retornos de chamada de voz de origem XAudio2. |
|
Saiba como usar retornos de chamada do mecanismo XAudio2. |
|
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. |
Saiba como aplicar uma cadeia de efeitos a uma voz para permitir o processamento personalizado dos dados de áudio dessa voz. |
|
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. |
Saiba como usar um efeito implementado como um XAPO em uma cadeia de efeitos XAudio2. |
|
Saiba como usar um dos efeitos incluídos no XAPOFX em uma cadeia de efeitos XAudio2. |
|
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. |
|
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. |
|
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. |
|
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 |
---|---|
Esta seção contém informações gerais sobre as APIs do Media Foundation e as ferramentas disponíveis para dar suporte a elas. |
|
Este tópico apresenta alguns conceitos que você precisará entender antes de escrever um aplicativo 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. |
|
Este tópico descreve como usar o Microsoft Media Foundation para executar a captura de áudio e vídeo. |
|
Este tópico descreve como implementar a reprodução de áudio/vídeo em seu aplicativo. |
|
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.) |
|
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. |
|
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. |
|
Esta seção contém informações de referência para as APIs 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 |
---|---|
Elemento XAML que representa um objeto que contém áudio, vídeo ou ambos. |
|
Saiba como incorporar áudio e vídeo básicos em seu aplicativo UWP (Plataforma Universal do Windows). |
|
Saiba como reproduzir um arquivo de mídia armazenado localmente em seu aplicativo UWP. |
|
Saiba como transmitir um arquivo de mídia com baixa latência em seu aplicativo UWP. |
|
Saiba como usar o contrato Reproduzir em para transmitir mídia do seu aplicativo UWP para outro dispositivo. |