All Projects → MaxHalford → Chime

MaxHalford / Chime

Licence: mit
🎵 Python sound notifications made easy

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Chime

Soundswitch
C# application to switch default playing device. Download: https://soundswitch.aaflalo.me/
Stars: ✭ 1,190 (+2025%)
Mutual labels:  audio, sound, notifications
Ni Media
NI Media is a C++ library for reading and writing audio streams.
Stars: ✭ 158 (+182.14%)
Mutual labels:  wav, audio, sound
Minibae
The platform-neutral Beatnik Audio Engine, Mini Edition (miniBAE) is an exceptionally mature, well-rounded, and reliable computer music and sound system specially customized for small-footprint and embedded applications.
Stars: ✭ 82 (+46.43%)
Mutual labels:  wav, audio, sound
Wavefile
A Ruby gem for reading and writing sound files in Wave format (*.wav)
Stars: ✭ 193 (+244.64%)
Mutual labels:  wav, audio, sound
Img Encode
Encode an image to sound and view it as a spectrogram - turn your images into music
Stars: ✭ 157 (+180.36%)
Mutual labels:  wav, audio, sound
Beats
A command-line drum machine. Convert a beat notated in YAML into a *.wav file.
Stars: ✭ 389 (+594.64%)
Mutual labels:  command-line, audio, sound
Oto
♪ A low-level library to play sound on multiple platforms ♪
Stars: ✭ 789 (+1308.93%)
Mutual labels:  audio, sound
Lasp
Low-latency Audio Signal Processing plugin for Unity
Stars: ✭ 816 (+1357.14%)
Mutual labels:  audio, sound
Blueprintsound
A plugin for Unreal Engine 4 that surfaces sound-related functionality to Blueprint.
Stars: ✭ 6 (-89.29%)
Mutual labels:  audio, sound
Blipkit
C library for creating the beautiful sound of old sound chips
Stars: ✭ 23 (-58.93%)
Mutual labels:  audio, sound
Swift Video Generator
Stars: ✭ 517 (+823.21%)
Mutual labels:  audio, sound
Minimp3
Minimalistic MP3 decoder single header library
Stars: ✭ 898 (+1503.57%)
Mutual labels:  audio, sound
Minimumaudioplugin
Minimum implementation of a native audio plugin for Unity
Stars: ✭ 33 (-41.07%)
Mutual labels:  audio, sound
Terminal Notifier
Send User Notifications on macOS from the command-line.
Stars: ✭ 5,766 (+10196.43%)
Mutual labels:  command-line, notifications
Webaudiofont
Use full GM set of musical instruments to play MIDI and single sounds or effects. Support for reverberation and equaliser. No plugins, no Flash. Pure HTML5 implementation compatible with desktop and mobile browser. See live examples.
Stars: ✭ 600 (+971.43%)
Mutual labels:  audio, sound
Sfml
Simple and Fast Multimedia Library
Stars: ✭ 7,316 (+12964.29%)
Mutual labels:  audio, cross-platform
Csvtk
A cross-platform, efficient and practical CSV/TSV toolkit in Golang
Stars: ✭ 566 (+910.71%)
Mutual labels:  command-line, cross-platform
Pyo
Python DSP module
Stars: ✭ 904 (+1514.29%)
Mutual labels:  audio, sound
Swiftysound
SwiftySound is a simple library that lets you play sounds with a single line of code.
Stars: ✭ 995 (+1676.79%)
Mutual labels:  audio, sound
Notify.uno
Get notified when your command is done
Stars: ✭ 38 (-32.14%)
Mutual labels:  command-line, notifications

chime

Python sound notifications made easy.


Table of contents

Motivation

I made this because I wanted a simple auditory cue system to tell me when a long-running number crunching script had finished. I didn't want to have to fiddle with the command-line, and also wanted a cross-platform solution. Thus was born chime!

Installation

pip install chime

This library has no dependencies. The IPython/Jupyter functionality is only imported if you've installed the ipython library. It should work for any Python version above or equal to 3.6.

Basic usage

chime puts four functions at your disposal:

>>> import chime

>>> chime.success()
>>> chime.warning()
>>> chime.error()
>>> chime.info()

Calling any of the above functions will play a sound. Note that the sounds are played in asynchronous processes, and are thus non-blocking. Each function should take around 2ms to execute, regardless of the sound length. You're free to use each sound notification in any way you see fit. I'm not your mama.

Theming

The sounds that are played depend on which theme is being used.

>>> chime.theme()  # return the current theme
'chime'

Several themes are available:

>>> chime.themes()
['big-sur', 'chime', 'mario', 'material', 'zelda']

The theme can be changed by passing a theme name to the theme function:

>>> chime.theme('zelda')

A couple of things to note:

  • You can listen to the sounds interactively via this soundboard, which is made with Streamlit.
  • A random theme will be picked each time you play a sound if you set the theme to 'random'.

IPython/Jupyter magic

Load the extension as so:

%load_ext chime

You can wrap a line:

%chime print("I'm a line")

You can also wrap an entire cell:

%%chime

print("I'm a cell")

The magic command will call chime.success when the line/cell finishes successfully. Otherwise, chime.error is called whenever an exception is raised.

Exception notifications

If you run chime.notify_exceptions, then chime.error will be called whenever an exception is raised.

chime.notify_exceptions()

raise ValueError("I'm going to make some noise")

Command-line usage

You can run chime from the command-line:

$ chime

By default, this will play the success sound. You can also choose which sound to play, like so:

$ chime info

You can also choose which theme to use:

$ chime info --theme zelda

If you're using bash, then you can use chime to notify you when a program finishes:

$ echo "Hello world!"; chime

This will play the sound regardless of the fact that the first command succeeded or not. If you're running on Windows, then you can run the following equivalent:

> echo "Hello world!" & chime

Platform support

Under the hood, chime runs a command in the shell to play a .wav file. The command-line program that is used depends on the platform that you're using. Platform information is available in the sys.platform variable as well as the platform module from the standard library. Currently, the supported platforms are:

  • Darwin
  • Linux
  • Windows

A UserWarning is raised if you run a chime sound on an unsupported platform. Feel free to get in touch or issue a pull request if you want to add support for a specific platform. Likewise, don't hesitate if you're encountering trouble with one of the above platforms. I won't bite.

I can't hear anything 🙉

Did you check if you turned your sound on? Just kidding. 😜

This library is designed to be non-invasive. By default, sounds are played asynchronously in unchecked processes. Therefore, if something goes wrong, the process dies silently. If you can't hear anything and you think that the issue is coming from chime, then set the sync parameter when you play a sound:

>>> chime.info(sync=True)

This will play the sound synchronously and issue a warning if something goes wrong, which should allow you to debug the issue. You can also raise an exception instead of sending a warning by setting the raise_error parameter:

>>> chime.info(sync=True, raise_error=True)

Note that setting raise_error won't do anything if sync is set to False.

Setting a default theme

To change the default theme a configuration file may be created in ~/.config/chime/chime.conf on Unix or %APPDATA%\chime\chime.ini on Windows.

For example, to change the default theme to 'zelda' the configuration file would contain:

[chime]
theme = zelda

Adding a new theme

I have toyed with the idea of allowing users to add their own theme(s), but at the moment I rather keep things minimal. However, I'm happy to integrate new themes into the library. You can propose a new theme by opening a pull request that adds the necessary .wav files to the themes directory. A theme is made up of four files: success.wav, warning.wav, error.wav, and info.wav. Be creative! 👩‍🎨

Things to do

  • Some mechanism to automatically call chime.warning when a warning occurs.
  • More themes!

Acknowledgements

License

As you would probably expect, this is MIT licensed.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].