![]() |
Qt 6.x
The Qt SDK
|
\inmodule QtSpatialAudio More...
#include <qaudioengine.h>
Public Types | |
enum | OutputMode { Surround , Stereo , Headphone } |
\value Surround Map the sounds to the loudspeaker configuration of the output device. More... | |
Public Slots | |
void | start () |
Starts the engine. | |
void | stop () |
Stops the engine. | |
void | pause () |
Pauses playback. | |
void | resume () |
Resumes playback. | |
![]() | |
void | deleteLater () |
\threadsafe | |
Signals | |
void | outputModeChanged () |
void | outputDeviceChanged () |
void | masterVolumeChanged () |
void | pausedChanged () |
void | distanceScaleChanged () |
![]() | |
void | destroyed (QObject *=nullptr) |
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked. | |
void | objectNameChanged (const QString &objectName, QPrivateSignal) |
This signal is emitted after the object's name has been changed. | |
Public Member Functions | |
QAudioEngine () | |
QAudioEngine (QObject *parent) | |
QAudioEngine (int sampleRate, QObject *parent=nullptr) | |
Constructs a spatial audio engine with parent, if any. | |
~QAudioEngine () | |
Destroys the spatial audio engine. | |
void | setOutputMode (OutputMode mode) |
OutputMode | outputMode () const |
int | sampleRate () const |
Returns the sample rate the engine has been configured with. | |
void | setOutputDevice (const QAudioDevice &device) |
QAudioDevice | outputDevice () const |
void | setMasterVolume (float volume) |
float | masterVolume () const |
void | setPaused (bool paused) |
bool | paused () const |
void | setRoomEffectsEnabled (bool enabled) |
Enables room effects such as echos and reverb. | |
bool | roomEffectsEnabled () const |
Returns true if room effects are enabled. | |
void | setDistanceScale (float scale) |
float | distanceScale () const |
![]() | |
Q_INVOKABLE | QObject (QObject *parent=nullptr) |
Constructs an object with parent object parent. | |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. | |
virtual bool | event (QEvent *event) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
Filters events if this object has been installed as an event filter for the watched object. | |
QString | objectName () const |
Q_WEAK_OVERLOAD void | setObjectName (const QString &name) |
Sets the object's name to name. | |
void | setObjectName (QAnyStringView name) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
QBindable< QString > | bindableObjectName () |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false . | |
bool | isWindowType () const |
Returns true if the object is a window; otherwise returns false . | |
bool | isQuickItemType () const |
Returns true if the object is a QQuickItem; otherwise returns false . | |
bool | signalsBlocked () const noexcept |
Returns true if signals are blocked; otherwise returns false . | |
bool | blockSignals (bool b) noexcept |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). | |
QThread * | thread () const |
Returns the thread in which the object lives. | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. | |
int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds. | |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
template<typename T > | |
T | findChild (const QString &aName=QString(), Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object. | |
template<typename T > | |
QList< T > | findChildren (const QString &aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. | |
template<typename T > | |
QList< T > | findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
const QObjectList & | children () const |
Returns a list of child objects. | |
void | setParent (QObject *parent) |
Makes the object a child of parent. | |
void | installEventFilter (QObject *filterObj) |
Installs an event filter filterObj on this object. | |
void | removeEventFilter (QObject *obj) |
Removes an event filter object obj from this object. | |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const |
bool | disconnect (const QObject *receiver, const char *member=nullptr) const |
void | dumpObjectTree () const |
Dumps a tree of children to the debug output. | |
void | dumpObjectInfo () const |
Dumps information about signal connections, etc. | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. | |
bool | setProperty (const char *name, QVariant &&value) |
QVariant | property (const char *name) const |
Returns the value of the object's name property. | |
QList< QByteArray > | dynamicPropertyNames () const |
QBindingStorage * | bindingStorage () |
const QBindingStorage * | bindingStorage () const |
QObject * | parent () const |
Returns a pointer to the parent object. | |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false . | |
Static Public Attributes | |
static constexpr float | DistanceScaleCentimeter = 1.f |
static constexpr float | DistanceScaleMeter = 100.f |
Properties | |
OutputMode | outputMode |
Sets or retrieves the current output mode of the engine. | |
QAudioDevice | outputDevice |
Sets or returns the device that is being used for playing the sound field. | |
float | masterVolume |
Sets or returns volume being used to render the sound field. | |
bool | paused |
Pauses the spatial audio engine. | |
float | distanceScale |
Defines the scale of the coordinate system being used by the spatial audio engine. | |
![]() | |
QString | objectName |
the name of this object | |
Friends | |
class | QAudioEnginePrivate |
Additional Inherited Members | |
![]() | |
static QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
\threadsafe | |
static QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
\threadsafe | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static bool | disconnect (const QMetaObject::Connection &) |
Disconnect a connection. | |
template<typename Func1 , typename Func2 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot) |
template<typename Func1 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero) |
![]() | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr. | |
int | senderSignalIndex () const |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. | |
bool | isSignalConnected (const QMetaMethod &signal) const |
virtual void | timerEvent (QTimerEvent *event) |
This event handler can be reimplemented in a subclass to receive timer events for the object. | |
virtual void | childEvent (QChildEvent *event) |
This event handler can be reimplemented in a subclass to receive child events. | |
virtual void | customEvent (QEvent *event) |
This event handler can be reimplemented in a subclass to receive custom events. | |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
QObject (QObjectPrivate &dd, QObject *parent=nullptr) | |
![]() | |
QScopedPointer< QObjectData > | d_ptr |
![]() | |
template< class T > T | qobject_cast (const QObject *object) |
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QObjectList | |
\macro Q_CLASSINFO(Name, Value) | |
\inmodule QtSpatialAudio
QAudioEngine manages a three dimensional sound field.
You can use an instance of QAudioEngine to manage a sound field in three dimensions. A sound field is defined by several QSpatialSound objects that define a sound at a specified location in 3D space. You can also add stereo overlays using QAmbientSound.
You can use QAudioListener to define the position of the person listening to the sound field relative to the sound sources. Sound sources will be less audible if the listener is further away from source. They will also get mapped to the corresponding loudspeakers depending on the direction between listener and source.
QAudioEngine offers two output modes. The first mode renders the sound field to a set of speakers, either a stereo speaker pair or a surround configuration. The second mode provides an immersive 3D sound experience when using headphones.
Perception of sound localization is driven mainly by two factors. The first factor is timing differences of the sound waves between left and right ear. The second factor comes from various ways how sounds coming from different direcations create different types of reflections from our ears and heads. See https://en.wikipedia.org/wiki/Sound_localization for more details.
The spatial audio engine emulates those timing differences and reflections through Head related transfer functions (HRTF, see https://en.wikipedia.org/wiki/Head-related_transfer_function). The functions used emulates those effects for an average persons ears and head. It provides a good and immersive 3D sound localization experience for most persons when using headphones.
The engine is rather versatile allowing you to define room properties and reverb settings to emulate different types of rooms.
Sound sources can also be occluded dampening the sound coming from those sources.
The audio engine uses a coordinate system that is in centimeters by default. The axes are aligned with the typical coordinate system used in 3D. Positive x points to the right, positive y points up and positive z points backwards.
Definition at line 15 of file qaudioengine.h.
\value Surround Map the sounds to the loudspeaker configuration of the output device.
This is normally a stereo or surround speaker setup. \value Stereo Map the sounds to the stereo loudspeaker configuration of the output device. This will ignore any additional speakers and only use the left and right channels to create a stero rendering of the sound field. \value Headphone Use Headphone spatialization to create a 3D audio effect when listening to the sound field through headphones
Enumerator | |
---|---|
Surround | |
Stereo | |
Headphone |
Definition at line 29 of file qaudioengine.h.
|
inline |
Definition at line 24 of file qaudioengine.h.
|
inlineexplicit |
Definition at line 25 of file qaudioengine.h.
Constructs a spatial audio engine with parent, if any.
The engine will operate with a sample rate given by sampleRate. The default sample rate, if none is provided, is 44100 (44.1kHz).
Sound content that is not provided at that sample rate will automatically get resampled to sampleRate when being processed by the engine. The default sample rate is fine in most cases, but you can define a different rate if most of your sound files are sampled with a different rate, and avoid some CPU overhead for resampling.
Definition at line 342 of file qaudioengine.cpp.
References QAudioEnginePrivate::bufferSize, QAudioEnginePrivate::resonanceAudio, sampleRate(), and QAudioEnginePrivate::sampleRate.
QAudioEngine::~QAudioEngine | ( | ) |
Destroys the spatial audio engine.
Definition at line 353 of file qaudioengine.cpp.
References stop().
float QAudioEngine::distanceScale | ( | ) | const |
Definition at line 542 of file qaudioengine.cpp.
References QAudioEnginePrivate::distanceScale.
|
signal |
float QAudioEngine::masterVolume | ( | ) | const |
Definition at line 438 of file qaudioengine.cpp.
References QAudioEnginePrivate::masterVolume.
|
signal |
Referenced by QQuick3DAudioEngine::QQuick3DAudioEngine(), and setMasterVolume().
QAudioDevice QAudioEngine::outputDevice | ( | ) | const |
Definition at line 419 of file qaudioengine.cpp.
References QAudioEnginePrivate::device.
|
signal |
Referenced by QQuick3DAudioEngine::QQuick3DAudioEngine(), and setOutputDevice().
QAudioEngine::OutputMode QAudioEngine::outputMode | ( | ) | const |
Definition at line 389 of file qaudioengine.cpp.
References QAudioEnginePrivate::outputMode.
|
signal |
Referenced by QQuick3DAudioEngine::QQuick3DAudioEngine(), and setOutputMode().
|
inlineslot |
Pauses playback.
Definition at line 70 of file qaudioengine.h.
bool QAudioEngine::paused | ( | ) | const |
Definition at line 490 of file qaudioengine.cpp.
References QBasicAtomicInteger< T >::loadRelaxed(), and QAudioEnginePrivate::paused.
|
signal |
|
inlineslot |
Resumes playback.
Definition at line 71 of file qaudioengine.h.
bool QAudioEngine::roomEffectsEnabled | ( | ) | const |
Returns true if room effects are enabled.
Definition at line 514 of file qaudioengine.cpp.
References QAudioEnginePrivate::roomEffectsEnabled.
int QAudioEngine::sampleRate | ( | ) | const |
Returns the sample rate the engine has been configured with.
Definition at line 397 of file qaudioengine.cpp.
References QAudioEnginePrivate::sampleRate.
Referenced by QAudioEngine().
void QAudioEngine::setDistanceScale | ( | float | scale | ) |
Definition at line 528 of file qaudioengine.cpp.
References QAudioEnginePrivate::distanceScale, distanceScaleChanged(), emit, and qWarning.
void QAudioEngine::setMasterVolume | ( | float | volume | ) |
Definition at line 429 of file qaudioengine.cpp.
References vraudio::ResonanceAudio::api, emit, QAudioEnginePrivate::masterVolume, masterVolumeChanged(), and QAudioEnginePrivate::resonanceAudio.
Referenced by QQuick3DAudioEngine::setMasterVolume().
void QAudioEngine::setOutputDevice | ( | const QAudioDevice & | device | ) |
Definition at line 407 of file qaudioengine.cpp.
References vraudio::ResonanceAudio::api, device, QAudioEnginePrivate::device, emit, outputDeviceChanged(), qWarning, and QAudioEnginePrivate::resonanceAudio.
Referenced by QQuick3DAudioEngine::setOutputDevice().
void QAudioEngine::setOutputMode | ( | OutputMode | mode | ) |
Definition at line 376 of file qaudioengine.cpp.
References vraudio::ResonanceAudio::api, Qt::BlockingQueuedConnection, emit, Headphone, QMetaObject::invokeMethod(), QAudioEnginePrivate::outputMode, outputModeChanged(), QAudioEnginePrivate::outputStream, and QAudioEnginePrivate::resonanceAudio.
Referenced by QQuick3DAudioEngine::setOutputMode().
void QAudioEngine::setPaused | ( | bool | paused | ) |
Definition at line 480 of file qaudioengine.cpp.
References emit, QBasicAtomicInteger< T >::fetchAndStoreRelaxed(), QAudioEnginePrivate::outputStream, paused, QAudioEnginePrivate::paused, and pausedChanged().
void QAudioEngine::setRoomEffectsEnabled | ( | bool | enabled | ) |
Enables room effects such as echos and reverb.
Enables room effects if enabled is true. Room effects will only apply if you create one or more \l QAudioRoom objects and the listener is inside at least one of the rooms. If the listener is inside multiple rooms, the room with the smallest volume will be used.
Definition at line 503 of file qaudioengine.cpp.
References enabled, QAudioEnginePrivate::resonanceAudio, vraudio::ResonanceAudio::roomEffectsEnabled, and QAudioEnginePrivate::roomEffectsEnabled.
|
slot |
Starts the engine.
Definition at line 446 of file qaudioengine.cpp.
References vraudio::ResonanceAudio::api, QAudioEnginePrivate::audioThread, Headphone, QMetaObject::invokeMethod(), QAudioEnginePrivate::masterVolume, QAudioEnginePrivate::outputMode, QAudioEnginePrivate::outputStream, QAudioEnginePrivate::resonanceAudio, and QThread::start().
Referenced by QQuick3DAudioEngine::getEngine().
|
slot |
Stops the engine.
Definition at line 465 of file qaudioengine.cpp.
References vraudio::ResonanceAudio::api, QAudioEnginePrivate::audioThread, Qt::BlockingQueuedConnection, QThread::exit(), QMetaObject::invokeMethod(), QAudioEnginePrivate::outputStream, QAudioEnginePrivate::resonanceAudio, and QThread::wait().
Referenced by ~QAudioEngine().
|
friend |
Definition at line 74 of file qaudioengine.h.
|
staticconstexpr |
Definition at line 53 of file qaudioengine.h.
|
staticconstexpr |
Definition at line 54 of file qaudioengine.h.
|
readwrite |
Defines the scale of the coordinate system being used by the spatial audio engine.
By default, all units are in centimeters, in line with the default units being used by Qt Quick 3D.
Set the distance scale to QAudioEngine::DistanceScaleMeter to get units in meters.
Definition at line 78 of file qaudioengine.h.
|
readwrite |
Sets or returns volume being used to render the sound field.
Definition at line 78 of file qaudioengine.h.
Referenced by QQuick3DAudioEngine::masterVolume().
|
readwrite |
Sets or returns the device that is being used for playing the sound field.
Definition at line 78 of file qaudioengine.h.
Referenced by QQuick3DAudioEngine::outputDevice().
|
readwrite |
Sets or retrieves the current output mode of the engine.
Definition at line 78 of file qaudioengine.h.
Referenced by QQuick3DAudioEngine::outputMode().
|
readwrite |
Pauses the spatial audio engine.
Definition at line 78 of file qaudioengine.h.
Referenced by setPaused().