空間音頻概述

Qt Spatial Audio API 提供瞭允許創建 3D 聲音場景的許多類。它由位於 3D 空間中發齣聲音的對象,和可以使用一個或多個房間建模的環繞幾何體定義。最後,可以將收聽者放置在此聲場的特定位置和特定取嚮。

可以使用 C++ 和 QML API 兩者。

創建聲音場景

To create the sound scene, one first instantiates a QAudioEngine . This engine processes input sound data and geometries to create a realistic representation of the sound scene as it would be experienced by a person placed at a specific location inside the scene.

The QAudioEngine::OutputMode property can be used to optimize the output either for headphones using binaural (virtual 3D) rendering or for a stereo or surround speaker configuration.

The output device can be selected using QAudioEngine::outputDevice 特性。

Once the engine is set up, we can place various sound objects into the scene by creating QSpatialSound objects and specifying a url to a sound file using the QSpatialSound::source 特性。

QAudioListener can be used to define the position and orientation of a person listening to the sound scene. At max one listener per engine can be used. If no listener is specified, the engine assumes that the listener is at the origin of the coordinate system facing into a positive z direction, with positive y pointing upwards.

In addition to sound sources and a listener, you can define a geometry that influences how the sound is being experienced by the listener through a set of QAudioRoom objects. Rooms are rectangular and support a wide variety of materials for each wall giving a different experience with different sound reflections and reverb. Room effects will get applied if the listener is located inside one of the rooms. If he is inside multiple rooms, the room with the smallest geometrical volume will take precedence.

If you need some stereo overlay that is independent of the position and orientation of the listener (such as background music or a voice-over), you can use QAmbientSound to create the sound overlay.

For a small QWidget based example showcasing one audio source that can be moved around in a room, have a look at the 空間音頻平移範例 .

參考文檔編製

C++ 類

QAmbientSound

立體聲疊加聲音

QAudioEngine

管理 3D 聲場

QAudioListener

定義由 QAudioEngine 定義聲場的收聽人的位置和取嚮

QAudioRoom

QSpatialSound

3D 空間中的聲音對象

QML 類型

AmbientSound

立體聲疊加聲音

AudioEngine

管理 3D 場景中的聲音對象

AudioListener

定義由 AudioEngine 定義聲場的收聽人的位置和取嚮

AudioRoom

SpatialSound

3D 空間中的聲音對象