Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QAudioEngine Class Reference

\inmodule QtSpatialAudio More...

#include <qaudioengine.h>

+ Inheritance diagram for QAudioEngine:
+ Collaboration diagram for QAudioEngine:

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< QStringbindableObjectName ()
 
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).
 
QThreadthread () 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 >
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 >
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 QObjectListchildren () 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< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () 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
QObjectsender () 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< QObjectDatad_ptr
 

Detailed Description

\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.

Member Enumeration Documentation

◆ OutputMode

\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.

Constructor & Destructor Documentation

◆ QAudioEngine() [1/3]

QAudioEngine::QAudioEngine ( )
inline

Definition at line 24 of file qaudioengine.h.

◆ QAudioEngine() [2/3]

QAudioEngine::QAudioEngine ( QObject * parent)
inlineexplicit

Definition at line 25 of file qaudioengine.h.

◆ QAudioEngine() [3/3]

QAudioEngine::QAudioEngine ( int sampleRate,
QObject * parent = nullptr )
explicit

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.

References QAudioEnginePrivate::bufferSize, QAudioEnginePrivate::resonanceAudio, sampleRate(), and QAudioEnginePrivate::sampleRate.

+ Here is the call graph for this function:

◆ ~QAudioEngine()

QAudioEngine::~QAudioEngine ( )

Destroys the spatial audio engine.

Definition at line 386 of file qaudioengine.cpp.

References stop().

+ Here is the call graph for this function:

Member Function Documentation

◆ distanceScale()

float QAudioEngine::distanceScale ( ) const

Definition at line 575 of file qaudioengine.cpp.

References QAudioEnginePrivate::distanceScale.

◆ distanceScaleChanged

void QAudioEngine::distanceScaleChanged ( )
signal

Referenced by setDistanceScale().

+ Here is the caller graph for this function:

◆ masterVolume()

float QAudioEngine::masterVolume ( ) const

Definition at line 471 of file qaudioengine.cpp.

References QAudioEnginePrivate::masterVolume.

◆ masterVolumeChanged

void QAudioEngine::masterVolumeChanged ( )
signal

Referenced by QQuick3DAudioEngine::QQuick3DAudioEngine(), and setMasterVolume().

+ Here is the caller graph for this function:

◆ outputDevice()

QAudioDevice QAudioEngine::outputDevice ( ) const

Definition at line 452 of file qaudioengine.cpp.

References QAudioEnginePrivate::device.

◆ outputDeviceChanged

void QAudioEngine::outputDeviceChanged ( )
signal

Referenced by QQuick3DAudioEngine::QQuick3DAudioEngine(), and setOutputDevice().

+ Here is the caller graph for this function:

◆ outputMode()

QAudioEngine::OutputMode QAudioEngine::outputMode ( ) const

Definition at line 422 of file qaudioengine.cpp.

References QAudioEnginePrivate::outputMode.

◆ outputModeChanged

void QAudioEngine::outputModeChanged ( )
signal

Referenced by QQuick3DAudioEngine::QQuick3DAudioEngine(), and setOutputMode().

+ Here is the caller graph for this function:

◆ pause

void QAudioEngine::pause ( )
inlineslot

Pauses playback.

Definition at line 70 of file qaudioengine.h.

◆ paused()

bool QAudioEngine::paused ( ) const

Definition at line 523 of file qaudioengine.cpp.

References QBasicAtomicInteger< T >::loadRelaxed(), and QAudioEnginePrivate::paused.

+ Here is the call graph for this function:

◆ pausedChanged

void QAudioEngine::pausedChanged ( )
signal

Referenced by setPaused().

+ Here is the caller graph for this function:

◆ resume

void QAudioEngine::resume ( )
inlineslot

Resumes playback.

Definition at line 71 of file qaudioengine.h.

◆ roomEffectsEnabled()

bool QAudioEngine::roomEffectsEnabled ( ) const

Returns true if room effects are enabled.

Definition at line 547 of file qaudioengine.cpp.

References QAudioEnginePrivate::roomEffectsEnabled.

◆ sampleRate()

int QAudioEngine::sampleRate ( ) const

Returns the sample rate the engine has been configured with.

Definition at line 430 of file qaudioengine.cpp.

References QAudioEnginePrivate::sampleRate.

Referenced by QAudioEngine().

+ Here is the caller graph for this function:

◆ setDistanceScale()

void QAudioEngine::setDistanceScale ( float scale)

Definition at line 561 of file qaudioengine.cpp.

References QAudioEnginePrivate::distanceScale, distanceScaleChanged(), emit, and qWarning.

+ Here is the call graph for this function:

◆ setMasterVolume()

void QAudioEngine::setMasterVolume ( float volume)

Definition at line 462 of file qaudioengine.cpp.

References vraudio::ResonanceAudio::api, emit, QAudioEnginePrivate::masterVolume, masterVolumeChanged(), and QAudioEnginePrivate::resonanceAudio.

+ Here is the call graph for this function:

◆ setOutputDevice()

void QAudioEngine::setOutputDevice ( const QAudioDevice & device)

Definition at line 440 of file qaudioengine.cpp.

References vraudio::ResonanceAudio::api, device, QAudioEnginePrivate::device, emit, outputDeviceChanged(), qWarning, and QAudioEnginePrivate::resonanceAudio.

+ Here is the call graph for this function:

◆ setOutputMode()

void QAudioEngine::setOutputMode ( OutputMode mode)

Definition at line 409 of file qaudioengine.cpp.

References vraudio::ResonanceAudio::api, Qt::BlockingQueuedConnection, emit, Headphone, QMetaObject::invokeMethod(), QAudioEnginePrivate::outputMode, outputModeChanged(), QAudioEnginePrivate::outputStream, and QAudioEnginePrivate::resonanceAudio.

+ Here is the call graph for this function:

◆ setPaused()

void QAudioEngine::setPaused ( bool paused)

Definition at line 513 of file qaudioengine.cpp.

References emit, QBasicAtomicInteger< T >::fetchAndStoreRelaxed(), QAudioEnginePrivate::outputStream, paused, QAudioEnginePrivate::paused, and pausedChanged().

+ Here is the call graph for this function:

◆ setRoomEffectsEnabled()

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.

References enabled, QAudioEnginePrivate::resonanceAudio, vraudio::ResonanceAudio::roomEffectsEnabled, and QAudioEnginePrivate::roomEffectsEnabled.

◆ start

void QAudioEngine::start ( )
slot

Starts the engine.

Definition at line 479 of file qaudioengine.cpp.

References vraudio::ResonanceAudio::api, QAudioEnginePrivate::audioThread, Headphone, QMetaObject::invokeMethod(), QAudioEnginePrivate::masterVolume, QAudioEnginePrivate::outputMode, QAudioEnginePrivate::outputStream, QAudioEnginePrivate::resonanceAudio, QThread::start(), and QThread::TimeCriticalPriority.

+ Here is the call graph for this function:

◆ stop

void QAudioEngine::stop ( )
slot

Stops the engine.

Definition at line 498 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().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ QAudioEnginePrivate

friend class QAudioEnginePrivate
friend

Definition at line 74 of file qaudioengine.h.

Member Data Documentation

◆ DistanceScaleCentimeter

constexpr float QAudioEngine::DistanceScaleCentimeter = 1.f
staticconstexpr

Definition at line 53 of file qaudioengine.h.

◆ DistanceScaleMeter

constexpr float QAudioEngine::DistanceScaleMeter = 100.f
staticconstexpr

Definition at line 54 of file qaudioengine.h.

Property Documentation

◆ distanceScale

QAudioEngine::distanceScale
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.

◆ masterVolume

QAudioEngine::masterVolume
readwrite

Sets or returns volume being used to render the sound field.

Definition at line 20 of file qaudioengine.h.

◆ outputDevice

QAudioEngine::outputDevice
readwrite

Sets or returns the device that is being used for playing the sound field.

Definition at line 19 of file qaudioengine.h.

◆ outputMode

QAudioEngine::outputMode
readwrite

Sets or retrieves the current output mode of the engine.

See also
QAudioEngine::OutputMode

Definition at line 18 of file qaudioengine.h.

◆ paused

QAudioEngine::paused
readwrite

Pauses the spatial audio engine.

Definition at line 21 of file qaudioengine.h.

Referenced by setPaused().


The documentation for this class was generated from the following files: