:github_url: hide .. meta:: :keywords: sound, music, song .. _class_AudioStreamPlayer: AudioStreamPlayer ================= **Успадковує:** :ref:`Node` **<** :ref:`Object` Вузол для відтворення аудіо. .. rst-class:: classref-introduction-group Опис -------- Вузол **AudioStreamPlayer** відтворює аудіопотік непозиційно. Він ідеально підходить для інтерфейсів користувача, меню або фонової музики. Щоб використовувати цей вузол, для :ref:`stream` потрібно встановити дійсний ресурс :ref:`AudioStream`. Також підтримується відтворення кількох звуків одночасно, див. :ref:`max_polyphony`. Якщо вам потрібно відтворити аудіо в певній позиції, замість цього використовуйте :ref:`AudioStreamPlayer2D` або :ref:`AudioStreamPlayer3D`. .. rst-class:: classref-introduction-group Посібники ------------------ - :doc:`Звукові потоки <../tutorials/audio/audio_streams>` - `2D демонстрація Dodge The Creeps `__ - `Демонстрація зміни аудіопристроїв `__ - `Демонстрація аудіогенератора `__ - `Демонстраційний запис аудіо з мікрофона `__ - `Демонстрація візуалізатора аудіоспектру `__ .. rst-class:: classref-reftable-group Властивості ---------------------- .. table:: :widths: auto +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`bool` | :ref:`autoplay` | ``false`` | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`StringName` | :ref:`bus` | ``&"Master"`` | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`int` | :ref:`max_polyphony` | ``1`` | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`MixTarget` | :ref:`mix_target` | ``0`` | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`float` | :ref:`pitch_scale` | ``1.0`` | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`PlaybackType` | :ref:`playback_type` | ``0`` | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`bool` | :ref:`playing` | ``false`` | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`AudioStream` | :ref:`stream` | | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`bool` | :ref:`stream_paused` | ``false`` | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`float` | :ref:`volume_db` | ``0.0`` | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ | :ref:`float` | :ref:`volume_linear` | | +----------------------------------------------------+----------------------------------------------------------------------+---------------+ .. rst-class:: classref-reftable-group Методи ------------ .. table:: :widths: auto +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_playback_position`\ (\ ) | +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------+ | :ref:`AudioStreamPlayback` | :ref:`get_stream_playback`\ (\ ) | +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has_stream_playback`\ (\ ) | +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------+ | |void| | :ref:`play`\ (\ from_position\: :ref:`float` = 0.0\ ) | +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------+ | |void| | :ref:`seek`\ (\ to_position\: :ref:`float`\ ) | +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------+ | |void| | :ref:`stop`\ (\ ) | +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Сигнали -------------- .. _class_AudioStreamPlayer_signal_finished: .. rst-class:: classref-signal **finished**\ (\ ) :ref:`🔗` Видається, коли звук закінчується відтворення без перерв. Цей сигнал *не* видається під час виклику :ref:`stop()` або під час виходу з дерева під час відтворення звуків. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Переліки ---------------- .. _enum_AudioStreamPlayer_MixTarget: .. rst-class:: classref-enumeration enum **MixTarget**: :ref:`🔗` .. _class_AudioStreamPlayer_constant_MIX_TARGET_STEREO: .. rst-class:: classref-enumeration-constant :ref:`MixTarget` **MIX_TARGET_STEREO** = ``0`` Аудіо буде відтворюватися тільки на першому каналі. Це значення за умовчанням. .. _class_AudioStreamPlayer_constant_MIX_TARGET_SURROUND: .. rst-class:: classref-enumeration-constant :ref:`MixTarget` **MIX_TARGET_SURROUND** = ``1`` Аудіо відтворюватиметься на всіх каналах об’ємного звуку. .. _class_AudioStreamPlayer_constant_MIX_TARGET_CENTER: .. rst-class:: classref-enumeration-constant :ref:`MixTarget` **MIX_TARGET_CENTER** = ``2`` Аудіо відтворюватиметься на другому каналі, який зазвичай є центральним. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описи властивостей ------------------------------------ .. _class_AudioStreamPlayer_property_autoplay: .. rst-class:: classref-property :ref:`bool` **autoplay** = ``false`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_autoplay**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_autoplay_enabled**\ (\ ) Якщо ``true``, цей вузол викликає :ref:`play()` при вході в дерево. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_bus: .. rst-class:: classref-property :ref:`StringName` **bus** = ``&"Master"`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_bus**\ (\ value\: :ref:`StringName`\ ) - :ref:`StringName` **get_bus**\ (\ ) Назва цільової шини. Усі звуки з цього вузла відтворюватимуться на цій шині. \ **Примітка:** Під час виконання, якщо не існує шини з вказаною назвою, усі звуки повертатимуться до ``"Master"``. Дивіться також :ref:`AudioServer.get_bus_name()`. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_max_polyphony: .. rst-class:: classref-property :ref:`int` **max_polyphony** = ``1`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_max_polyphony**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_max_polyphony**\ (\ ) Максимальна кількість звуків, які цей вузол може відтворювати одночасно. Виклик :ref:`play()` після досягнення цього значення відрізає найстаріші звуки. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_mix_target: .. rst-class:: classref-property :ref:`MixTarget` **mix_target** = ``0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_mix_target**\ (\ value\: :ref:`MixTarget`\ ) - :ref:`MixTarget` **get_mix_target**\ (\ ) Цільові канали міксу. Не має ефекту, якщо виявлено два або менше динаміків (див. :ref:`SpeakerMode`). .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_pitch_scale: .. rst-class:: classref-property :ref:`float` **pitch_scale** = ``1.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_pitch_scale**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_pitch_scale**\ (\ ) Висота та темп звуку як множник частоти дискретизації :ref:`stream`. Значення ``2.0`` подвоює висоту звуку, тоді як значення ``0.5`` зменшує висоту вдвічі. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_playback_type: .. rst-class:: classref-property :ref:`PlaybackType` **playback_type** = ``0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_playback_type**\ (\ value\: :ref:`PlaybackType`\ ) - :ref:`PlaybackType` **get_playback_type**\ (\ ) **Експериментальний:** Ця властивість може бути змінена або усунута у наступних версіях. Тип відтворення потокового програвача. Якщо встановлено інше значення, ніж значення за замовчуванням, цей тип відтворення буде примусово. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_playing: .. rst-class:: classref-property :ref:`bool` **playing** = ``false`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_playing**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_playing**\ (\ ) Якщо ``true``, цей вузол відтворює звуки. Налаштування цієї властивості має той самий ефект, що й :ref:`play()` і :ref:`stop()`. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_stream: .. rst-class:: classref-property :ref:`AudioStream` **stream** :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_stream**\ (\ value\: :ref:`AudioStream`\ ) - :ref:`AudioStream` **get_stream**\ (\ ) Ресурс :ref:`AudioStream` для відтворення. Якщо налаштувати цю властивість, усі звуки, що відтворюються в даний момент, зупиняються. Якщо залишити пустим, **AudioStreamPlayer** не працюватиме. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_stream_paused: .. rst-class:: classref-property :ref:`bool` **stream_paused** = ``false`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_stream_paused**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **get_stream_paused**\ (\ ) Якщо ``true``, звуки призупиняються. Якщо встановити :ref:`stream_paused` на ``false``, усі звуки відновлюються. \ **Примітка:** Ця властивість автоматично змінюється під час виходу з дерева або входу в нього, або цей вузол призупинено (див. :ref:`Node.process_mode`). .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_volume_db: .. rst-class:: classref-property :ref:`float` **volume_db** = ``0.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_volume_db**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_volume_db**\ (\ ) Гучність звуку, в децибелах. Це зміщення обсягу :ref:`stream`. \ **Примітка:** Для перетворення між децибелами та лінійною енергією (як це робить більшість повзунків гучності), використовуйте :ref:`volume_linear` або :ref:`@GlobalScope.db_to_linear()` і :ref:`@GlobalScope.linear_to_db()`. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_property_volume_linear: .. rst-class:: classref-property :ref:`float` **volume_linear** :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_volume_linear**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_volume_linear**\ (\ ) Гучність звуку, як лінійна величина. \ **Примітка:** цей учасник змінює :ref:`volume_db` для зручності. Повернене значення еквівалентно результату :ref:`@GlobalScope.db_to_linear()` на :ref:`volume_db`. Налаштування цього члена еквівалентно встановленню :ref:`volume_db` для результату :ref:`@GlobalScope.linear_to_db()` для значення. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описи методів -------------------------- .. _class_AudioStreamPlayer_method_get_playback_position: .. rst-class:: classref-method :ref:`float` **get_playback_position**\ (\ ) :ref:`🔗` Повертає позицію в :ref:`AudioStream` останнього звуку в секундах. Повертає ``0.0``, якщо звуки не відтворюються. \ **Примітка:** Позиція не завжди точна, оскільки :ref:`AudioServer` не змішує аудіо в кожному обробленому кадрі. Щоб отримати точніші результати, додайте :ref:`AudioServer.get_time_since_last_mix()` до повернутої позиції. \ **Примітка:** Цей метод завжди повертає ``0.0``, якщо :ref:`stream` є :ref:`AudioStreamInteractive`, оскільки він може одночасно відтворювати кілька кліпів. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_method_get_stream_playback: .. rst-class:: classref-method :ref:`AudioStreamPlayback` **get_stream_playback**\ (\ ) :ref:`🔗` Повертає останній :ref:`AudioStreamPlayback` цього вузла, зазвичай останній, створений :ref:`play()`. Якщо звуки не відтворюються, цей метод завершується помилкою та повертає порожнє відтворення. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_method_has_stream_playback: .. rst-class:: classref-method :ref:`bool` **has_stream_playback**\ (\ ) :ref:`🔗` Повертає ``true``, якщо будь-який звук активний, навіть якщо :ref:`stream_paused` встановлюється до ``true``. Дивись також :ref:`play` і :ref:`get_stream_playback()`. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_method_play: .. rst-class:: classref-method |void| **play**\ (\ from_position\: :ref:`float` = 0.0\ ) :ref:`🔗` Відтворення звуку з початку або заданого ``from_position`` за секунди. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_method_seek: .. rst-class:: classref-method |void| **seek**\ (\ to_position\: :ref:`float`\ ) :ref:`🔗` Перезапускає всі звуки, які потрібно відтворити, починаючи з заданого ``to_position`` за секунди. Нічого не робить, якщо звуки не відтворюються. .. rst-class:: classref-item-separator ---- .. _class_AudioStreamPlayer_method_stop: .. rst-class:: classref-method |void| **stop**\ (\ ) :ref:`🔗` Зупиняє всі звуки з цього вузла. .. |virtual| replace:: :abbr:`virtual (Зазвичай, цей метод перевизначається користувачем, щоб він мав вплив.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (Цей метод не має побічних ефектів. Не змінює ніяку змінну екземпляра об'єкта.)` .. |vararg| replace:: :abbr:`vararg (Цей метод приймає будь-яке число аргументів після описаних тут.)` .. |constructor| replace:: :abbr:`constructor (Цей метод використовується для побудови типів.)` .. |static| replace:: :abbr:`static (Цей метод не потребує екземпляра для виклику, його можна викликати безпосередньо за допомогою назви класу.)` .. |operator| replace:: :abbr:`operator (Цей метод описує дійсний оператор для взаємодії з цим типом як з лівим операндом.)` .. |bitfield| replace:: :abbr:`BitField (Це значення є цілим числом, складеним у вигляді бітової маски з наступних прапорів.)` .. |void| replace:: :abbr:`void (Значення не повертається.)`