Как воспроизвести звук в Python, параллельно с программой?

Я написал небольшую игру на Python, используя библиотеку PyGame. Все работает отлично, однако, вопреки выражению: "Работает - не трожь", я решил добавить фоновую музыку для игры. Вот тут и начались проблемы, я пробовал разные библиотеки для проигрывания звуков, такие как: playsound, pyglet, но везде возникала одна и та же проблема. При запуске самой игры, начинала проигрываться музыка, однако делать все игровые действия (ходить персонажем и т.д) я не мог. Я пробовал создавать отдельную функцию для воспроизведения и активировать ее в разных частях кода (в конце, в начале, середине), однако проблема оставалась.

Хотелось бы узнать, какую библиотеку можно использовать или как использовать те, которые прововал я, только чтобы я мог выполнять все действия в игре, но при этом играла музыка.


Ответы (2 шт):

Автор решения: WhiteApfel

Можно же делать звуки прямо в pygame

Включить звуковой эффект один раз

pygame.mixer.music.load('boom.mp3')
pygame.mixer.music.play(0)

Проигрывать постоянно по кругу (для фона)

pygame.mixer.music.load('foo.mp3')
pygame.mixer.music.play(-1)

Добавить следующую музыку в очередь:

pygame.mixer.music.queue('next_song.mp3')

Остановить

pygame.mixer.music.stop()
→ Ссылка
Автор решения: SKIP

Давайте будем вместе читать документацию playsound. Читаем:

It requires one argument - the path to the file with the sound you’d like to play. This may be a local file, or a URL.

There’s an optional second argument, block, which is set to True by default. Setting it to False makes the function run asynchronously.

Первым аргументом указываем путь, вторым включаем асинхронность, но должен заметить, что такой вариант на Linux не работает.

playsound('play.mp3', False)

Если вариант с pygame:

from pygame import mixer
mixer.init()
mixer.music.load("play.mp3")
mixer.music.play()
input()
→ Ссылка