QAudioEngine 类
QAudioEngine управляет трёхмерным звуковым полем. Подробнее...
Менье | #include <QAudioEngine> |
CMake | find_package(Qt6 REQUIRED COMPONENTS SpatialAudio) target_link_libraries(mytarget PRIVATE Qt6::SpatialAudio) |
qmake | QT += spatialaudio |
继承 | QObject |
Объявленный тип
enumerate | OutputMode { Panoramic, Stereo, Headphone } |
Свойства
|
|
Объявленные функции
QAudioEngine() | |
QAudioEngine(QObject *parent) | |
QAudioEngine(int sampleRate, QObject *parent = nullptr) | |
virtaul | ~QAudioEngine() |
float | distanceScale() const |
float | masterVolume() const |
QAudioDevice | outputDevice() const |
QAudioEngine::OutputMode | outputMode() const |
bool | paused() const |
bool | roomEffectsEnabled() const |
int | sampleRate() const |
void | setDistanceScale(float scale) |
void | setMasterVolume(float volume) |
void | setOutputDevice(const QAudioDevice &device) |
void | setOutputMode(QAudioEngine::OutputMode mode) |
void | setPaused(bool paused) |
void | setRoomEffectsEnabled(bool enabled) |
Объявленные слоты
Сигналы
void | distanceScaleChanged() |
void | masterVolumeChanged() |
void | outputDeviceChanged() |
void | outputModeChanged() |
void | pausedChanged() |
Подробное описание
您可以使用一个QAudioEngine实例来管理三维声音场。声音场是由几个QSpatialSound对象定义的,这些对象定义了在三维空间中指定位置的声音。您还可以使用QAmbientSound添加立体声覆盖。
您可以使用QAudioListener来定义听声音场的人相对于声音源的位置。如果听者离声音源更远,声音源将更难以听见。它们也将根据听者和声音源之间的方向映射到相应的扬声器和耳机。
QAudioEngine提供了两种输出模式。第一种模式将声音场渲染到一组扬声器上,无论是立体声扬声器对还是环绕配置。第二种模式在通过耳机收听声音场时提供沉浸式的3D声音体验。
声音定位的感觉主要受两个因素的影响。第一个因素是左右耳之间声音波的时间差异。第二个因素来源于不同方向的声音如何通过我们的耳朵和头部产生不同类型的反射。有关详细信息,请参阅https://en.wikipedia.org/wiki/Sound_localization。
空间音频引擎通过头部相关传输函数(HRTF,请参阅https://en.wikipedia.org/wiki/Head-related_transfer_function)模拟了这些时间差异和反射。这些函数模拟了普通人的耳朵和头部对这些效果的影响。它为大多数人在使用耳机时提供了良好的沉浸式3D声音定位体验。
该引擎相当灵活,允许您定义房间属性和混响设置来模拟不同类型的房间。
声音源还可以被遮挡,从而减弱来自这些声音源的声音。
音频引擎使用默认为厘米的坐标系。坐标轴与3D中使用的典型坐标系对齐。正x指向右,正y指向上,正z指向后方。
成员类型文档
enum QAudioEngine::OutputMode
常量 | 值 | 描述 |
---|---|---|
QAudioEngine::Surround | 0 | 将声音映射到输出设备的扬声器配置。这通常是一个立体声或环绕扬声器设置。 |
QAudioEngine::Stereo | 1 | 将声音映射到输出设备的立体声扬声器配置。这将忽略任何额外的扬声器,仅使用左右通道来创建声音场的立体声渲染。 |
QAudioEngine::Headphone | 2 | 使用耳机空间化在通过耳机收听声音场时创建3D音频效果 |
属性文档
distanceScale : float
定义空间音频引擎使用的坐标系的缩放比例。默认情况下,所有单位均为厘米,与Qt Quick 3D使用的默认单位一致。
将距离缩放设置为QAudioEngine::DistanceScaleMeter以获取米为单位。
访问函数
float | distanceScale() const |
void | setDistanceScale(float scale) |
通知信号
void | distanceScaleChanged() |
masterVolume : float
设置或返回用于渲染声音场的音量。
访问函数
float | masterVolume() const |
void | setMasterVolume(float volume) |
通知信号
void | masterVolumeChanged() |
outputDevice : QAudioDevice
设置或返回用于播放声音场的设备。
访问函数
QAudioDevice | outputDevice() const |
void | setOutputDevice(const QAudioDevice &device) |
通知信号
void | outputDeviceChanged() |
outputMode : OutputMode
设置或检索引擎的当前输出模式。
访问函数
QAudioEngine::OutputMode | outputMode() const |
void | setOutputMode(QAudioEngine::OutputMode mode) |
通知信号
void | outputModeChanged() |
另请参阅 QAudioEngine::OutputMode.
paused : bool
暂停空间音频引擎。
访问函数
bool | paused() const |
void | setPaused(bool paused) |
通知信号
void | pausedChanged() |
成员函数文档
QAudioEngine::QAudioEngine()
[显式]
QAudioEngine::QAudioEngine(QObject *parent)
[显式]
QAudioEngine::QAudioEngine(int sampleRate, QObject *parent = nullptr)
构造一个带有父对象(如果有的话)的空间音频引擎。
该引擎将以sampleRate指定的采样率运行。如果没有提供采样率,则默认采样率为44100(44.1kHz)。
在此采样率下未提供的音频内容将在引擎处理时自动重新采样到sampleRate。默认采样率在大多数情况下是足够的,但如果你大部分音文件都以不同的采样率采样,你可以定义不同的率,以避免一些重新采样的CPU开销。
[虚函数 noexcept]
QAudioEngine::~QAudioEngine()
销毁空间音频引擎。
[槽函数]
void QAudioEngine::pause()
暂停播放。
[槽函数]
void QAudioEngine::resume()
恢复播放。
bool QAudioEngine::roomEffectsEnabled() const
如果启用了房间效果,则返回true。
另请参阅 setRoomEffectsEnabled.
int QAudioEngine::sampleRate() const
返回引擎已配置的采样率。
void QAudioEngine::setRoomEffectsEnabled(bool enabled)
启用房间效果,如回声和混响。
如果enabled为true,则启用房间效果。仅当您创建一个或多个QAudioRoom对象,并且听者至少在一个房间内部时,房间效果才会应用。如果听者位于多个房间中,将使用体积最小的房间。
另请参阅 roomEffectsEnabled.
[槽函数]
void QAudioEngine::start()
启动引擎。
[槽函数]
void QAudioEngine::stop()
停止引擎。
© 2024 Qt公司有限公司。本文件中包含的文档贡献归其各自所有者所有。本文件中提供的文档根据自由软件基金会公布的GNU自由文档许可版1.3的条款进行许可。GNU自由文档许可由自由软件基金会发布。Qt及其相关标志是Qt公司有限公司在芬兰及/或其他国家/地区的商标。所有其他商标均为其各自所有者的财产。