2017-09-12 22:42:36 +02:00
<?xml version="1.0" encoding="UTF-8" ?>
2024-02-21 18:51:08 +01:00
<class name= "AudioStreamPlayer" inherits= "Node" keywords= "sound, music, song" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../class.xsd" >
2017-09-12 22:42:36 +02:00
<brief_description >
2023-09-17 22:38:40 +02:00
A node for audio playback.
2017-09-12 22:42:36 +02:00
</brief_description>
<description >
2023-09-17 22:38:40 +02:00
The [AudioStreamPlayer] node plays an audio stream non-positionally. It is ideal for user interfaces, menus, or background music.
2024-06-11 04:45:27 +02:00
To use this node, [member stream] needs to be set to a valid [AudioStream] resource. Playing more than one sound at the same time is also supported, see [member max_polyphony].
2023-09-17 22:38:40 +02:00
If you need to play audio at a specific position, use [AudioStreamPlayer2D] or [AudioStreamPlayer3D] instead.
2017-09-12 22:42:36 +02:00
</description>
<tutorials >
2021-11-15 10:43:07 +01:00
<link title= "Audio streams" > $DOCS_URL/tutorials/audio/audio_streams.html</link>
2024-03-25 02:20:59 +01:00
<link title= "2D Dodge The Creeps Demo" > https://godotengine.org/asset-library/asset/2712</link>
<link title= "Audio Device Changer Demo" > https://godotengine.org/asset-library/asset/2758</link>
<link title= "Audio Generator Demo" > https://godotengine.org/asset-library/asset/2759</link>
<link title= "Audio Microphone Record Demo" > https://godotengine.org/asset-library/asset/2760</link>
<link title= "Audio Spectrum Visualizer Demo" > https://godotengine.org/asset-library/asset/2762</link>
2017-09-12 22:42:36 +02:00
</tutorials>
<methods >
2017-09-21 05:31:36 +02:00
<method name= "get_playback_position" >
2021-07-30 15:28:05 +02:00
<return type= "float" />
2017-09-12 22:42:36 +02:00
<description >
2023-09-17 22:38:40 +02:00
Returns the position in the [AudioStream] of the latest sound, in seconds. Returns [code]0.0[/code] if no sounds are playing.
[b]Note:[/b] The position is not always accurate, as the [AudioServer] does not mix audio every processed frame. To get more accurate results, add [method AudioServer.get_time_since_last_mix] to the returned position.
2017-09-12 22:42:36 +02:00
</description>
</method>
2019-04-15 14:49:41 +02:00
<method name= "get_stream_playback" >
2021-07-30 15:28:05 +02:00
<return type= "AudioStreamPlayback" />
2019-04-15 14:49:41 +02:00
<description >
2023-09-17 22:38:40 +02:00
Returns the latest [AudioStreamPlayback] of this node, usually the most recently created by [method play]. If no sounds are playing, this method fails and returns an empty playback.
2019-04-15 14:49:41 +02:00
</description>
</method>
2023-01-27 19:25:49 +01:00
<method name= "has_stream_playback" >
<return type= "bool" />
<description >
2023-09-17 22:38:40 +02:00
Returns [code]true[/code] if any sound is active, even if [member stream_paused] is set to [code]true[/code]. See also [member playing] and [method get_stream_playback].
2023-01-27 19:25:49 +01:00
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "play" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 20:11:48 +02:00
<param index= "0" name= "from_position" type= "float" default= "0.0" />
2017-09-12 22:42:36 +02:00
<description >
2023-09-17 22:38:40 +02:00
Plays a sound from the beginning, or the given [param from_position] in seconds.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "seek" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2022-08-06 20:11:48 +02:00
<param index= "0" name= "to_position" type= "float" />
2017-09-12 22:42:36 +02:00
<description >
2023-09-17 22:38:40 +02:00
Restarts all sounds to be played from the given [param to_position], in seconds. Does nothing if no sounds are playing.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "stop" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2017-09-12 22:42:36 +02:00
<description >
2023-09-17 22:38:40 +02:00
Stops all sounds from this node.
2017-09-12 22:42:36 +02:00
</description>
</method>
</methods>
<members >
2019-06-29 12:38:01 +02:00
<member name= "autoplay" type= "bool" setter= "set_autoplay" getter= "is_autoplay_enabled" default= "false" >
2023-09-17 22:38:40 +02:00
If [code]true[/code], this node calls [method play] when entering the tree.
2017-09-12 22:42:36 +02:00
</member>
2021-06-05 21:24:24 +02:00
<member name= "bus" type= "StringName" setter= "set_bus" getter= "get_bus" default= "&"Master"" >
2023-09-17 22:38:40 +02:00
The target bus name. All sounds from this node will be playing on this bus.
[b]Note:[/b] At runtime, if no bus with the given name exists, all sounds will fall back on [code]"Master"[/code]. See also [method AudioServer.get_bus_name].
2017-09-12 22:42:36 +02:00
</member>
2021-08-28 06:51:03 +02:00
<member name= "max_polyphony" type= "int" setter= "set_max_polyphony" getter= "get_max_polyphony" default= "1" >
2023-09-17 22:38:40 +02:00
The maximum number of sounds this node can play at the same time. Calling [method play] after this value is reached will cut off the oldest sounds.
2021-08-28 06:51:03 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "mix_target" type= "int" setter= "set_mix_target" getter= "get_mix_target" enum= "AudioStreamPlayer.MixTarget" default= "0" >
2023-09-17 22:38:40 +02:00
The mix target channels, as one of the [enum MixTarget] constants. Has no effect when two speakers or less are detected (see [enum AudioServer.SpeakerMode]).
2017-09-12 22:42:36 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "pitch_scale" type= "float" setter= "set_pitch_scale" getter= "get_pitch_scale" default= "1.0" >
2023-09-17 22:38:40 +02:00
The audio's pitch and tempo, as a multiplier of the [member stream]'s sample rate. A value of [code]2.0[/code] doubles the audio's pitch, while a value of [code]0.5[/code] halves the pitch.
2018-02-19 10:47:16 +01:00
</member>
2024-04-18 16:50:34 +02:00
<member name= "playback_type" type= "int" setter= "set_playback_type" getter= "get_playback_type" enum= "AudioServer.PlaybackType" default= "0" experimental= "" >
The playback type of the stream player. If set other than to the default value, it will force that playback type.
</member>
2019-06-29 12:38:01 +02:00
<member name= "playing" type= "bool" setter= "_set_playing" getter= "is_playing" default= "false" >
2023-09-17 22:38:40 +02:00
If [code]true[/code], this node is playing sounds. Setting this property has the same effect as [method play] and [method stop].
2017-09-12 22:42:36 +02:00
</member>
2019-07-15 20:42:47 +02:00
<member name= "stream" type= "AudioStream" setter= "set_stream" getter= "get_stream" >
2023-09-17 22:38:40 +02:00
The [AudioStream] resource to be played. Setting this property stops all currently playing sounds. If left empty, the [AudioStreamPlayer] does not work.
2017-09-12 22:42:36 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "stream_paused" type= "bool" setter= "set_stream_paused" getter= "get_stream_paused" default= "false" >
2023-09-17 22:38:40 +02:00
If [code]true[/code], the sounds are paused. Setting [member stream_paused] to [code]false[/code] resumes all sounds.
[b]Note:[/b] This property is automatically changed when exiting or entering the tree, or this node is paused (see [member Node.process_mode]).
2018-07-26 11:56:21 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "volume_db" type= "float" setter= "set_volume_db" getter= "get_volume_db" default= "0.0" >
2023-09-17 22:38:40 +02:00
Volume of sound, in decibel. This is an offset of the [member stream]'s volume.
[b]Note:[/b] To convert between decibel and linear energy (like most volume sliders do), use [method @GlobalScope.db_to_linear] and [method @GlobalScope.linear_to_db].
2017-09-12 22:42:36 +02:00
</member>
</members>
<signals >
<signal name= "finished" >
<description >
2023-09-17 22:38:40 +02:00
Emitted when a sound finishes playing without interruptions. This signal is [i]not[/i] emitted when calling [method stop], or when exiting the tree while sounds are playing.
2017-09-12 22:42:36 +02:00
</description>
</signal>
</signals>
<constants >
2017-11-24 23:16:30 +01:00
<constant name= "MIX_TARGET_STEREO" value= "0" enum= "MixTarget" >
2023-09-17 22:38:40 +02:00
The audio will be played only on the first channel. This is the default.
2017-09-16 01:46:14 +02:00
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "MIX_TARGET_SURROUND" value= "1" enum= "MixTarget" >
2017-10-10 16:00:10 +02:00
The audio will be played on all surround channels.
2017-09-16 01:46:14 +02:00
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "MIX_TARGET_CENTER" value= "2" enum= "MixTarget" >
2017-10-10 16:00:10 +02:00
The audio will be played on the second channel, which is usually the center.
2017-09-16 01:46:14 +02:00
</constant>
2017-09-12 22:42:36 +02:00
</constants>
</class>