Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
|
\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. | |
Public Slots inherited from QObject | |
void | deleteLater () |
\threadsafe | |
Signals | |
void | outputModeChanged () |
void | outputDeviceChanged () |
void | masterVolumeChanged () |
void | pausedChanged () |
void | distanceScaleChanged () |
Signals inherited from QObject | |
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 |
Public Member Functions inherited from QObject | |
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. | |
bool | moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL) |
Changes the thread affinity for this object and its children and returns true on success. | |
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::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
void | killTimer (Qt::TimerId id) |
template<typename T > | |
T | findChild (QAnyStringView aName, 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 (QAnyStringView 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 > | |
T | findChild (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. | |
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. | |
Properties inherited from QObject | |
QString | objectName |
the name of this object | |
Friends | |
class | QAudioEnginePrivate |
Additional Inherited Members | |
Static Public Member Functions inherited from QObject | |
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) |
Protected Member Functions inherited from QObject | |
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) | |
Protected Attributes inherited from QObject | |
QScopedPointer< QObjectData > | d_ptr |
Related Symbols inherited from QObject | |
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 375 of file qaudioengine.cpp.
QAudioEngine::~QAudioEngine | ( | ) |
Destroys the spatial audio engine.
Definition at line 386 of file qaudioengine.cpp.
float QAudioEngine::distanceScale | ( | ) | const |
Definition at line 575 of file qaudioengine.cpp.
|
signal |
float QAudioEngine::masterVolume | ( | ) | const |
Definition at line 471 of file qaudioengine.cpp.
|
signal |
QAudioDevice QAudioEngine::outputDevice | ( | ) | const |
Definition at line 452 of file qaudioengine.cpp.
|
signal |
QAudioEngine::OutputMode QAudioEngine::outputMode | ( | ) | const |
Definition at line 422 of file qaudioengine.cpp.
|
signal |
|
inlineslot |
Pauses playback.
Definition at line 70 of file qaudioengine.h.
bool QAudioEngine::paused | ( | ) | const |
Definition at line 523 of file qaudioengine.cpp.
|
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 547 of file qaudioengine.cpp.
int QAudioEngine::sampleRate | ( | ) | const |
Returns the sample rate the engine has been configured with.
Definition at line 430 of file qaudioengine.cpp.
void QAudioEngine::setDistanceScale | ( | float | scale | ) |
Definition at line 561 of file qaudioengine.cpp.
void QAudioEngine::setMasterVolume | ( | float | volume | ) |
Definition at line 462 of file qaudioengine.cpp.
void QAudioEngine::setOutputDevice | ( | const QAudioDevice & | device | ) |
Definition at line 440 of file qaudioengine.cpp.
void QAudioEngine::setOutputMode | ( | OutputMode | mode | ) |
Definition at line 409 of file qaudioengine.cpp.
void QAudioEngine::setPaused | ( | bool | paused | ) |
Definition at line 513 of file qaudioengine.cpp.
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 536 of file qaudioengine.cpp.
|
slot |
Starts the engine.
Definition at line 479 of file qaudioengine.cpp.
|
slot |
Stops the engine.
Definition at line 498 of file qaudioengine.cpp.
|
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 22 of file qaudioengine.h.
|
readwrite |
Sets or returns volume being used to render the sound field.
Definition at line 20 of file qaudioengine.h.
|
readwrite |
Sets or returns the device that is being used for playing the sound field.
Definition at line 19 of file qaudioengine.h.
|
readwrite |
Sets or retrieves the current output mode of the engine.
Definition at line 18 of file qaudioengine.h.
|
readwrite |
Pauses the spatial audio engine.
Definition at line 21 of file qaudioengine.h.