The GameSoundEffect element allows playing short-lasting and looping sound effects in wav file format. More...
Import Statement: | import Felgo 4.0 |
Inherits: |
Playing GameSoundEffect has a very low latency and is therefore well suited for short notification sounds.
The sound is preloaded as soon as the source property is set and can then be started with low latency by calling play(). You can also set the loops property to implementing looping sounds.
For playing encoded audio files for example in MP3 format or with no latency requirements use the BackgroundMusic component. For videos use the Video component.
GameSoundEffect enhances the Qt component SoundEffect in the Qt Multimedia module with the following additions:
settings.soundEnabled
to true or false.This type 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 MediaPlayer or BackgroundMusic types instead, since they support a wider variety of media formats and are less resource intensive.
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 is easy to achieve with QML, since you can declare your GameSoundEffect instance and refer to it elsewhere.
Note: Since GameSoundEffect requires slightly more resources to achieve lower latency playback, the platform may limit the number of simultaneously playing sound effects.
For free sounds, we recommend the following websites:
These sites have a great search feature, as you can search by categories or tags. Most of the sounds are available for free if you add the license to your game. There also are low-price premium version of the sounds, which allows you to use them without any license note.
The wav format is the single format that is supported on all platforms. Try to follow the same Performance Hints mentioned in the BackgroundMusic component for maximum performance.
Note: If you target the Android platform, ensure that all wav files are 16 bit PCM (or higher) encoded. Convert all 8 bit wav files to 16 bit and rebuild the app.
Here is an example of playing a looping sound on mouse click:
import Felgo import QtQuick import QtMultimedia// required for SoundEffect.Infinite enum value for infinite looping GameWindow { MouseArea { anchors.fill: parent onClicked: clickSound.play() } GameSoundEffect { id: clickSound source: Qt.resolvedUrl("clickSound.wav") loops: SoundEffect.Infinite } }
autoPauseInBackground : bool |
Set this property to automatically pause this GameSoundEffect when the app is moved to background.
On mobile that happens if the user presses the home button and leaves the app. On desktop that happens when the app loses its focus or gets minimized.
By default, this value is true on mobile platforms and false on desktop platforms.
autoPlay : bool |
Set this property to play the sound effect automatically when this item is loaded, e.g. at application start.
By default, it is set to true. So when the settings.soundEnabled property is also set to true, the music is played after initialization of the Settings object.
See also GameWindowApplicationWindow::settings.
loops : int |
This property provides a way to control the number of times to repeat the sound on each play().
By default, loops is set to 1 and therefore plays the sound effect only once.
Set to SoundEffect.Infinite
to enable infinite looping.
Note: To have access to the SoundEffect.Infinite
enum, make sure to call import QtMultimedia 6
in the header of your QML file
loopsRemaining : int |
This property contains the number of loops remaining before the sound effect stops by itself, or SoundEffect.Infinite if that's what has been set in loops.
muted : bool |
This property provides a way to control muting. A value of true
will mute this sound. Otherwise, playback will occur with the currently specified volume.
The default value is false
.
playing : bool |
This property holds whether the sound is playing.
This property is read-only.
source : url |
This property holds the url for the sound to play. For the GameSoundEffect to attempt to load the source, the URL must exist and the application must have read permission in the specified directory. If the desired source is a local file, the URL may be specified by using either an absolute or a relative (to the file that declared the GameSoundEffect) path.
status : int |
This property indicates the current status of the GameSoundEffect as enumerated within GameSoundEffect. Possible statuses are listed below.
Value | Description |
---|---|
GameSoundEffect.Null | No source has been set or the source is null. |
GameSoundEffect.Loading | The GameSoundEffect is trying to load the source. |
GameSoundEffect.Ready | The source is loaded and ready for play. |
GameSoundEffect.Error | An error occurred during operation, such as failure of loading the source. |
volume : real |
This property holds the volume of the sound output, from 0.0 (silent) to 1.0 (maximum volume).
Note: The volume property affects ALL Sounds and the BackgroundMusic instances on Windows, but not on mobile platforms. So the last volume setting that is defined is used for all sounds in the application.
The default value is 1.
isLoaded() |
Returns whether the sound effect has finished loading the source.
play() |
Starts playback of the sound effect if the soundEnabled property in GameWindowApplicationWindow::settings is true, looping the effect for the number of times as specified in the loops property.
Sets the playing property to true.
See also stop().