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.

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

Rationale

boombox is great and 90% of the way there, however the default options for playing sounds on Windows are limited to WAV files. If the platform is Windows, play_sounds will default to the playsound backend.

Installation

python3 -m pip install play_sounds

Usage

This library uses pathlib.Path objects when pointing to filenames and paths.

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

with play_while_running(DEFAULT_SONG):
  sleep(60)

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(60)

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

Asynchronous API

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

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(DEFAULT_SONG):
  await sleep(60)

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(60)

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

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.3.3.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

play_sounds-0.3.3-py2.py3-none-any.whl (7.5 MB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: play_sounds-0.3.3.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.6

File hashes

Hashes for play_sounds-0.3.3.tar.gz
Algorithm Hash digest
SHA256 62fc14b13bcfc2d4af9c3b8f0b55307589f4f4bf0c3699bf58e819ca0264ce2b
MD5 dbdbf440b50e9c9e37a47b365fea569b
BLAKE2b-256 1954e8d183248c2d28f5208ee306e2c8ee1d763112aa0f585c5c9685e85a9c74

See more details on using hashes here.

File details

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

File metadata

  • Download URL: play_sounds-0.3.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.6

File hashes

Hashes for play_sounds-0.3.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2482152072a1acfa174a1cc8c89d51b81e1c4221cb66fe0b6c6afb7498d0e8eb
MD5 f3db7dd4d46c36f1e944c03d0300451d
BLAKE2b-256 ee78eb1c46e0d11a379deb10ff88982eb6768469a48169de637b761b0e53386d

See more details on using hashes here.

Supported by

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