- Qt 5.15
- Qt Multimedia
- C++ Classes
- QSoundEffect
- Qt 5.15.11 Reference Documentation

# QSoundEffect Class

The QSoundEffect class provides a way to play low latency sound effects. More...

Header: | #include <QSoundEffect>
qmake: | QT += multimedia
Instantiated By: | SoundEffect

- List of all members, including inherited members

## Public Types

enum | Loop { Infinite }
enum | Status { Null, Loading, Ready, Error }

## Properties

- category : QString
- loops : int
- loopsRemaining : const int
- muted : bool

- playing : const bool
- source : QUrl
- status : const Status
- volume : qreal

## Public Functions

| QSoundEffect(const QAudioDeviceInfo &audioDevice, QObject *parent = nullptr)
| QSoundEffect(QObject *parent = nullptr)
virtual | ~QSoundEffect()
QString | category() const
bool | isLoaded() const
bool | isMuted() const
bool | isPlaying() const
int | loopCount() const
int | loopsRemaining() const
void | setCategory(const QString &category)
void | setLoopCount(int loopCount)
void | setMuted(bool muted)
void | setSource(const QUrl &url)
void | setVolume(qreal volume)
QUrl | source() const
Status | status() const
qreal | volume() const

## Public Slots

void | play()
void | stop()

## Signals

void | categoryChanged()
void | loadedChanged()
void | loopCountChanged()
void | loopsRemainingChanged()
void | mutedChanged()
void | playingChanged()
void | sourceChanged()
void | statusChanged()
void | volumeChanged()

## Static Public Members

QStringList | supportedMimeTypes()

## Detailed Description

This class allows you to play uncompressed audio files (typically WAV files) in a generally lower latency way, and is suitable for "feedback" type sounds in response to user actions (e.g. virtual keyboard sounds, positive or negative feedback for popup dialogs, or game sounds). If low latency is not important, consider using the QMediaPlayer class instead, since it supports a wider variety of media formats and is less resource intensive.

This example shows how a looping, somewhat quiet sound effect can be played:

     QSoundEffect effect;
     effect.setSource(QUrl::fromLocalFile("engine.wav"));
     effect.setLoopCount(QSoundEffect::Infinite);
     effect.setVolume(0.25f);
     effect.play();

Typically the sound effect should be reused, which allows all the parsing and preparation to be done ahead of time, and only triggered when necessary. This assists with lower latency audio playback.

     MyGame()
         : m_explosion(this)
     {
         m_explosion.setSource(QUrl::fromLocalFile("explosion.wav"));
         m_explosion.setVolume(0.25f);

         // Set up click handling etc.
         connect(clickSource, &QPushButton::clicked, &m_explosion, &QSoundEffect::play);
     }
     private:
     QSoundEffect m_explosion;

Since QSoundEffect requires slightly more resources to achieve lower latency playback, the platform may limit the number of simultaneously playing sound effects.

## Member Type Documentation

### enum QSoundEffect::Loop

Constant | Value | Description
--- | --- | ---
`QSoundEffect::Infinite` | `-2` | Used as a parameter to setLoopCount() for infinite looping

### enum QSoundEffect::Status

Constant | Value | Description
--- | --- | ---
`QSoundEffect::Null` | `0` | No source has been set or the source is null.
`QSoundEffect::Loading` | `1` | The SoundEffect is trying to load the source.
`QSoundEffect::Ready` | `2` | The source is loaded and ready for play.
`QSoundEffect::Error` | `3` | An error occurred during operation, such as failure of loading the source.

## Property Documentation

### category : QString

This property contains the category of this sound effect.

Some platforms can perform different audio routing for different categories, or may allow the user to set different volume levels for different categories.

This setting will be ignored on platforms that do not support audio categories.

Access functions:

QString | category() const
void | setCategory(const QString &category)

Notifier signal:

void | categoryChanged()

### loops : int

This property holds the number of times the sound is played. A value of 0 or 1 means the sound will be played only once; set to SoundEffect.Infinite to enable infinite looping.

The value can be changed while the sound effect is playing, in which case it will update the remaining loops to the new value.

Access functions:

int | loopCount() const
void | setLoopCount(int loopCount)

Notifier signal:

void | loopCountChanged()

### loopsRemaining : const int

This property contains the number of loops remaining before the sound effect stops by itself, or QSoundEffect::Infinite if that's what has been set in loops.

Access functions:

int | loopsRemaining() const

Notifier signal:

void | loopsRemainingChanged()

### muted : bool

This property provides a way to control muting. A value of `true` will mute this effect.

Access functions:

bool | isMuted() const
void | setMuted(bool muted)

Notifier signal:

void | mutedChanged()

### playing : const bool

This property indicates whether the sound effect is playing or not.

Access functions:

bool | isPlaying() const

Notifier signal:

void | playingChanged()

### source : QUrl

This property holds the url for the sound to play. For the SoundEffect to attempt to load the source, the URL must exist and the application must have read permission in the specified directory.

Access functions:

QUrl | source() const
void | setSource(const QUrl &url)

Notifier signal:

void | sourceChanged()

### status : const Status

This property indicates the current status of the sound effect from the QSoundEffect::Status enumeration.

Access functions:

Status | status() const

Notifier signal:

void | statusChanged()

### volume : qreal

This property holds the volume of the sound effect playback, from 0.0 (silence) to 1.0 (full volume).

Access functions:

qreal | volume() const
void | setVolume(qreal volume)

Notifier signal:

void | volumeChanged()

## Member Function Documentation

### QSoundEffect::QSoundEffect(const QAudioDeviceInfo &audioDevice, QObject *parent = nullptr)

Creates a QSoundEffect with the given audioDevice and parent.

### QSoundEffect::QSoundEffect(QObject *parent = nullptr)

Creates a QSoundEffect with the given parent.

### `[signal]` void QSoundEffect::categoryChanged()

The `categoryChanged` signal is emitted when the category property has changed.

Note: Notifier signal for property category.

### `[signal]` void QSoundEffect::loadedChanged()

The `loadedChanged` signal is emitted when the loading state has changed.

### `[signal]` void QSoundEffect::loopCountChanged()

The `loopCountChanged` signal is emitted when the initial number of loops has changed.

Note: Notifier signal for property loops.

### `[signal]` void QSoundEffect::loopsRemainingChanged()

The `loopsRemainingChanged` signal is emitted when the remaining number of loops has changed.

Note: Notifier signal for property loopsRemaining.

### `[signal]` void QSoundEffect::mutedChanged()

The `mutedChanged` signal is emitted when the mute state has changed.

Note: Notifier signal for property muted.

### `[slot]` void QSoundEffect::play()

Start playback of the sound effect, looping the effect for the number of times as specified in the loops property.

### `[signal]` void QSoundEffect::playingChanged()

The `playingChanged` signal is emitted when the playing property has changed.

Note: Notifier signal for property playing.

### `[signal]` void QSoundEffect::sourceChanged()

The `sourceChanged` signal is emitted when the source has been changed.

Note: Notifier signal for property source.

### `[signal]` void QSoundEffect::statusChanged()

The `statusChanged` signal is emitted when the status property has changed.

Note: Notifier signal for property status.

### `[slot]` void QSoundEffect::stop()

Stop current playback.

### `[signal]` void QSoundEffect::volumeChanged()

The `volumeChanged` signal is emitted when the volume has changed.

Note: Notifier signal for property volume.

### `[virtual]` QSoundEffect::~QSoundEffect()

Destroys this sound effect.

### QString QSoundEffect::category() const

Returns the current category for this sound effect.

Some platforms can perform different audio routing for different categories, or may allow the user to set different volume levels for different categories.

This setting will be ignored on platforms that do not support audio categories.

Note: Getter function for property category.

See also setCategory().

### bool QSoundEffect::isLoaded() const

Returns whether the sound effect has finished loading the source().

### bool QSoundEffect::isMuted() const

Returns whether this sound effect is muted

Note: Getter function for property muted.

### bool QSoundEffect::isPlaying() const

Returns true if the sound effect is currently playing, or false otherwise

Note: Getter function for property playing.

### int QSoundEffect::loopCount() const

Returns the total number of times that this sound effect will be played before stopping.

See the loopsRemaining() method for the number of loops currently remaining.

Note: Getter function for property loops.

See also setLoopCount().

### void QSoundEffect::setCategory(const QString &category)

Sets the category of this sound effect to category.

Some platforms can perform different audio routing for different categories, or may allow the user to set different volume levels for different categories.

This setting will be ignored on platforms that do not support audio categories.

If this setting is changed while a sound effect is playing it will only take effect when the sound effect has stopped playing.

Note: Setter function for property category.

See also category().

### void QSoundEffect::setLoopCount(int loopCount)

Set the total number of times to play this sound effect to loopCount.

Setting the loop count to 0 or 1 means the sound effect will be played only once; pass `QSoundEffect::Infinite` to repeat indefinitely. The loop count can be changed while the sound effect is playing, in which case it will update the remaining loops to the new loopCount.

Note: Setter function for property loops.

See also loopCount() and loopsRemaining().

### void QSoundEffect::setMuted(bool muted)

Sets whether to mute this sound effect's playback.

If muted is true, playback will be muted (silenced), and otherwise playback will occur with the currently specified volume().

Note: Setter function for property muted.

See also isMuted().

### void QSoundEffect::setSource(const QUrl &url)

Set the current URL to play to url.

Note: Setter function for property source.

See also source().

### void QSoundEffect::setVolume(qreal volume)

Sets the sound effect volume to volume.

The volume is scaled linearly from `0.0` (silence) to `1.0` (full volume). Values outside this range will be clamped.

The default volume is `1.0`.

UI volume controls should usually be scaled nonlinearly. For example, using a logarithmic scale will produce linear changes in perceived loudness, which is what a user would normally expect from a volume control. See QAudio::convertVolume() for more details.

Note: Setter function for property volume.

See also volume().

### QUrl QSoundEffect::source() const

Returns the URL of the current source to play

Note: Getter function for property source.

See also setSource().

### Status QSoundEffect::status() const

Returns the current status of this sound effect.

Note: Getter function for property status.

### `[static]` QStringList QSoundEffect::supportedMimeTypes()

Returns a list of the supported mime types for this platform.

### qreal QSoundEffect::volume() const

Returns the current volume of this sound effect, from 0.0 (silent) to 1.0 (maximum volume).

Note: Getter function for property volume.

See also setVolume().