Skip to main content

🔊 Play music and sounds in your Python scripts

Project description

🔊 Play sounds in Python scripts

play_sounds provides a simple cross-platform API to play sounds in Python scripts. It includes a synchronous API and an equivalent asynchronous API that is compatible with asyncio and trio.

For code examples, you can check out onhold and ding, or scroll down to the Usage section.

Why play_sounds?

boombox is great and 90% of the way there, however it is limited to only playing WAV files on Windows. playsound will play other formats than WAV on Windows, but it requires GStreamer and PyGObject bindings on Linux, while boombox has several playback backends for Linux other than, and including, GStreamer.

Neither boombox or playsound provide asyncio and async/await compatible APIs, but play_sounds does.

If you're targeting multiple desktop platforms and don't want to get mired down in the details of when and where to use playsound or boombox, or if your project uses async/await, you can just reach for play_sounds and call it a day.

Installation

$ python3 -m pip install play_sounds

Usage

This library uses pathlib.Path objects when pointing to filenames and paths. It can use aiopath.AsyncPath objects, too.

There's a synchronous API and an asynchronous API that you can use with the async/await syntax and asyncio.

Synchronous API

Play a file

from play_sounds import play_file, DEFAULT_SONG


play_file(DEFAULT_SONG)  # blocks by default

# play without blocking
play_file(DEFAULT_SONG, block=False) 

Play while work completes

from time import sleep
from play_sounds import play_while_running, DEFAULT_SONG


WAIT: int = 60


with play_while_running(DEFAULT_SONG):
  sleep(WAIT)

Play a file after work completes

from time import sleep
from play_sounds import play_after, DEFAULT_SOUND


with play_after(DEFAULT_SOUND):  # blocks by default
  sleep(WAIT)

# play without blocking
with play_after(DEFAULT_SOUND, block=False):
  sleep(WAIT)

Ring the terminal bell

from play_sounds import bell, bell_after


# play bell
bell()

# ensure the bell is played even if an exception is thrown
with bell_after():
  raise Exception("Bye")

Asynchronous API

To run the following examples with top-level await expressions, launch an asynchronous Python REPL using python3 -m asyncio or an IPython shell.

Play a file

from play_sounds import play_file_async, DEFAULT_SONG


await play_file_async(DEFAULT_SONG)  # blocks by default

# play without blocking
await play_file_async(DEFAULT_SONG, block=False) 

Play while work completes

from asyncio import sleep
from play_sounds import play_while_running_async, DEFAULT_SONG


async with play_while_running_async(DEFAULT_SONG):
  await sleep(WAIT)

Play a file after work completes

from asyncio import sleep
from play_sounds import play_after_async, DEFAULT_SOUND


async with play_after_async(DEFAULT_SOUND):  # blocks by default
  await sleep(WAIT)

# play without blocking
async with play_after_async(DEFAULT_SOUND, block=False):
  await sleep(WAIT)

Support

Want to support this project and other open-source projects like it?

Buy Me A Coffee

Copyright

See CREDIT.md.

License

See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

play_sounds-0.6.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

play_sounds-0.6.0-py2.py3-none-any.whl (8.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file play_sounds-0.6.0.tar.gz.

File metadata

  • Download URL: play_sounds-0.6.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for play_sounds-0.6.0.tar.gz
Algorithm Hash digest
SHA256 814f920ff5776a5cb5aa18b537491a78ad835312bd7dc3b2366c4bcc7176d6dc
MD5 f829f0d147c9b752f6f78056cf521993
BLAKE2b-256 35f62f07208726d6246e4171431134d2b292d8b48a971867cfe7b76ce49a9232

See more details on using hashes here.

File details

Details for the file play_sounds-0.6.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for play_sounds-0.6.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 20bce95cb24e2d3e8ae84b8a4f0a92ae7a34e5d59d9c50ea571f72ed42733ab2
MD5 5633737b35c5bf1bcfeb4c7ca0c4209d
BLAKE2b-256 2aa1a8f5e46e6036a99ae9d25f4d848eeb8bf66119d82f98f257b7d051809fae

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page