Audio per i giochi

Informazioni sullo sviluppo e l'incorporamento di musica e suoni nel gioco DirectX e sull'elaborazione dei segnali audio per creare suoni dinamici e posizionali.

Per la programmazione audio, è consigliabile usare la libreria XAudio2 in DirectX o le API Grafici audio di Windows Runtime. Qui si usa XAudio2. XAudio2 è una libreria audio di basso livello che fornisce una base di elaborazione e missaggio di segnali per i giochi e supporta una varietà di formati.

È anche possibile implementare suoni semplici e riprodurre musica con Microsoft Media Foundation. Microsoft Media Foundation è progettato per la riproduzione di file multimediali e flussi audio e video, ma può anche essere usato nei giochi. È particolarmente utile per le scene cinematografiche o per i componenti non interattivi del gioco.

Concetti generali

Ecco alcuni concetti di programmazione audio usati in questa sezione.

  • I segnali sono l'unità di base della programmazione audio, proprio come i pixel nella grafica. I processori di segnali digitali (DSP) che li elaborano sono come i pixel shader dell'audio del gioco. Possono trasformare i segnali, combinarli o filtrarli. Programmando in base ai DSP, è possibile modificare gli effetti sonori e la musica del gioco con il livello di complessità necessario.
  • Le voci sono i compositi di submix di due o più segnali. Esistono 3 tipi di oggetti voce XAudio2: sorgente, submix e mastering. Le voci sorgente operano sui dati audio forniti dal client. Le voci sorgente e submix inviano l'output a una o più voci submix o mastering. Le voci submix e mastering mixano l'audio da tutte le voci che le alimentano e operano sul risultato. Le voci mastering scrivono dati audio su un dispositivo audio.
  • Il mixaggio è il processo di combinare diverse voci distinte, ad esempio gli effetti e l'audio di fondo riprodotti in una scena, in un singolo flusso. Il submix è il processo di combinazione di diversi segnali distinti, ad esempio i suoni componenti di un rumore del motore e la creazione di una voce.
  • Formati audio. La musica e gli effetti sonori possono essere archiviati in un'ampia gamma di formati digitali per il gioco. Esistono formati non compressi, come WAV, e formati compressi come MP3 e OGG. Più un campione è compresso, in genere a causa della relativa velocità in bit (minore è la velocità in bit maggiore è la perdita a causa della compressione), peggiore sarà la sua fedeltà. La fedeltà può variare tra schemi di compressione e velocità in bit, quindi fare esperimenti per trovare la combinazione migliore per il gioco.
  • Frequenza di campionamento e qualità. I suoni possono essere campionati a frequenze diverse e i suoni campionati a una velocità inferiore sono meno fedeli. La frequenza di campionamento per la qualità CD è 44,1 Khz (44.100 Hz). Se per un suono la fedeltà elevata non è importante, è possibile scegliere una frequenza di campionamento inferiore. Le frequenze più elevate possono essere appropriate per le applicazioni audio professionali, ma probabilmente sono necessarie solo se il gioco richiede un'alta fedeltà audio di qualità professionale.
  • Sorgenti sonore. In XAudio2, le sorgenti sonore sono fonti che emettono un suono, che può essere un semplice rumore di fondo momentaneo o un jukebox all'interno del gioco che riproduce un pesante brano rock. È possibile specificare le sorgenti in base alle coordinate geografiche.
  • Listener audio. Un oggetto listener audio è spesso il giocatore, o probabilmente un'entità basata sull'intelligenza artificiale in un gioco più avanzato, che elabora i suoni ricevuti da un listener. È possibile eseguire il submix del suono nel flusso audio per la riproduzione sul lettore oppure è possibile usarlo per eseguire un'azione specifica nel gioco, ad esempio risvegliare una protezione basata sull'intelligenza artificiale contrassegnata come oggetto listener.

Considerazioni relative alla progettazione

L'audio è una parte estremamente importante della progettazione e dello sviluppo di un gioco. Molti giocatori possono richiamare un gioco mediocre elevato a leggendario solo per via di una colonna sonora memorabile, di un lavoro vocale e di un mix audio ottimi o di una produzione audio stellare. La musica e il suono definiscono la personalità di un gioco e stabiliscono il motivo principale che definisce il gioco e lo distingue da altri giochi simili. Le attività di progettazione e sviluppo del profilo audio del gioco saranno ben ripagate.

L'audio 3D posizionale può aggiungere un ulteriore livello di immersione oltre a quello fornito dalla grafica 3D. Se si sta sviluppando un gioco complesso che simula un mondo o che richiede uno stile cinematografico, valutare l'uso delle tecniche audio posizionali 3D per regalare al giocare un'esperienza totalmente immersiva.

Roadmap dello sviluppo di audio DirectX

Risorse concettuali di XAudio2

XAudio2 è la libreria di missaggio audio per DirectX ed è destinata principalmente allo sviluppo di motori audio ad alte prestazioni per i giochi. Per gli sviluppatori di giochi che vogliono aggiungere effetti sonori e musica di fondo ai propri giochi moderni, XAudio2 offre un grafico audio e un motore di missaggio con bassa latenza e supporto per buffer dinamici, riproduzione sincrona accurata di campioni e conversione implicita della frequenza della sorgente.

Argomento Descrizione

Introduzione a XAudio2

L'argomento fornisce un elenco delle funzionalità di programmazione audio supportate da XAudio2.

Guida introduttiva a XAudio2

Questo argomento fornisce informazioni sui concetti chiave di XAudio2, sulle versioni di XAudio2 e sul formato audio RIFF.

Concetti comuni relativi alla programmazione audio

Questo argomento fornisce una panoramica dei concetti audio comuni con cui uno sviluppatore audio deve avere familiarità.

Voci XAudio2

Questo argomento contiene una panoramica delle voci XAudio2, usate per il submix, l'uso e il mastering dei dati audio.

Callback di XAudio2

Questo argomento illustra i callback di XAudio2, usati per evitare interruzioni nella riproduzione audio.

Grafici audio di XAudio2

Questo argomento illustra i grafici di elaborazione audio di XAudio2, che accettano un set di flussi audio dal client come input, li elaborano e restituiscono il risultato finale a un dispositivo audio.

Effetti sonori di XAudio2

L'argomento illustra gli effetti sonori di XAudio2, che accettano dati audio in ingresso ed eseguono alcune operazioni su di essi (ad esempio un effetto riverbero) prima di passarli.

Streaming di dati audio con XAudio2

Questo argomento illustra lo streaming audio con XAudio2.

X3DAudio

questo argomento illustra X3DAudio, un'API usata con XAudio2 per creare l'illusione di un suono proveniente da un punto nello spazio 3D.

Guida di riferimento alla programmazione XAudio2

Questa sezione contiene il riferimento completo per le API XAudio2.

Risorse procedurali di XAudio2

Argomento Descrizione

Procedura: inizializzare XAudio2

Informazioni su come inizializzare XAudio2 per la riproduzione audio creando un'istanza del motore XAudio2 e creando una voce mastering.

Procedura: caricare file di dati audio in XAudio2

Informazioni su come popolare le strutture necessarie per riprodurre dati audio in XAudio2.

Procedura: riprodurre un suono con XAudio2

Informazioni su come riprodurre dati audio caricati in precedenza in XAudio2.

Procedura: usare voci submix

Informazioni su come impostare gruppi di voci per inviare l'output alla stessa voce submix.

Procedura: usare i callback vocali sorgente

Informazioni su come usare i callback vocali sorgente di XAudio2.

Procedura: usare i callback del motore

Informazioni su come usare i callback del motore XAudio2.

Procedura: creare un grafico di elaborazione audio di base

Informazioni su come creare un grafico di elaborazione audio, costruito da una singola voce mastering e da una singola voce sorgente.

Procedura: aggiungere o rimuovere in modo dinamico voci da un grafico audio

Informazioni su come aggiungere o rimuovere voci submix da un grafico creato seguendo la procedura descritta in Procedura: creare un grafico di elaborazione audio di base.

Procedura: creare una catena di effetti

Informazioni su come applicare una catena di effetti a una voce per consentire l'elaborazione personalizzata dei dati audio per quella voce.

Procedura: creare un oggetto XAPO

Informazioni su come implementare IXAPO per creare un oggetto XAPO (audio processing object) di XAudio2.

Procedura: aggiungere il supporto dei parametri di runtime a un oggetto XAPO

Informazioni su come aggiungere il supporto dei parametri di runtime a un oggetto XAPO implementando l'interfaccia IXAPOParameters.

Procedura: usare un oggetto XAPO in XAudio2

Informazioni su come usare un effetto implementato come oggetto XAPO in una catena di effetti XAudio2.

Procedura: usare XAPOFX in XAudio2

Informazioni su come usare uno degli effetti inclusi in XAPOFX in una catena di effetti XAudio2.

Procedura: trasmettere in streaming un suono da disco

Informazioni su come trasmettere in streaming dati audio in XAudio2 creando un thread separato per leggere un buffer audio e per usare i callback per controllare tale thread.

Procedura: integrare X3DAudio con XAudio2

Informazioni su come usare X3DAudio per fornire i valori volume e tono per le voci XAudio2, nonché i parametri per l'effetto riverbero predefinito di XAudio2.

Procedura: raggruppare metodi audio come set di operazioni

Informazioni su come usare i set di operazioni XAudio2 per rendere effettivo un gruppo di chiamate a metodi contemporaneamente.

Debug di glitch audio in XAudio2

Informazioni su come impostare il livello di registrazione di debug per XAudio2.

Risorse di Media Foundation

Media Foundation (MF) è una piattaforma multimediale per la riproduzione di audio e video in streaming. È possibile usare le API di Media Foundation per trasmettere in streaming audio e video codificati e compressi con una varietà di algoritmi. Non è progettato per scenari di gioco in tempo reale, ma offre strumenti potenti e un ampio supporto codec per l'acquisizione e la presentazione più lineari di componenti audio e video.

Argomento Descrizione

Informazioni su Media Foundation

Questa sezione contiene informazioni generali sulle API di Media Foundation e sugli strumenti disponibili per supportarle.

Media Foundation: concetti essenziali

Questo argomento presenta alcuni concetti che è necessario comprendere prima di scrivere un'applicazione Media Foundation.

Architettura di Media Foundation

Questa sezione descrive la progettazione generale di Microsoft Media Foundation, nonché le primitive multimediali e la pipeline di elaborazione usate.

Acquisizione audio/video

Questo argomento descrive come usare Microsoft Media Foundation per eseguire l'acquisizione di audio e video.

Riproduzione audio/video

Questo argomento descrive come implementare la riproduzione audio/video nell'app.

Formati multimediali supportati in Media Foundation

Questo argomento elenca i formati multimediali supportati da Microsoft Media Foundation in modo nativo. Le terze parti possono supportare formati aggiuntivi scrivendo plug-in personalizzati.

Codifica e creazione di file

Questo argomento descrive come usare Microsoft Media Foundation per eseguire la codifica audio e video e creare file multimediali.

Codec Windows Media

Questo argomento descrive come usare le funzionalità dei codec audio e video di Windows Media per produrre e usare flussi di dati compressi.

Guida di riferimento alla programmazione di Media Foundation

Questa sezione contiene informazioni di riferimento per le API di Media Foundation.

Esempi di Media Foundation SDK

Questa sezione elenca le app di esempio che spiegano come usare Media Foundation.

Tipi di supporti XAML di Windows Runtime

Se si usa l'interoperabilità DirectX-XAML, è possibile incorporare le API multimediali XAML di Windows Runtime nelle app UWP usando DirectX con C++ per scenari di gioco più semplici.

Argomento Descrizione

Windows.UI.Xaml.Controls.MediaElement

Elemento XAML che rappresenta un oggetto che contiene audio, video o entrambi.

Audio, video e fotocamera

Informazioni su come incorporare audio e video di base nell'app UWP (Universal Windows Platform).

MediaElement

Informazioni su come riprodurre un file multimediale archiviato in locale nell'app UWP.

MediaElement

Informazioni su come trasmettere in streaming un file multimediale con bassa latenza nell'app UWP.

Trasmissione multimediale

Informazioni su come usare il contratto Play To per trasmettere in streaming contenuti multimediali dall'app UWP a un altro dispositivo.

Riferimento