Python game programming in Jupyter notebooks.

Related tags

Audio jupylet
Overview

Jupylet

Jupylet is a Python library for programming 2D and 3D games, graphics, music and sound synthesizers, interactively in a Jupyter notebook. It is intended for three types of audiences:

  • Computer scientists, researchers, and students of deep reinforcement learning.
  • Musicians interested in sound synthesis and live music coding.
  • Kids and their parents interested in learning to program.

 

Jupylet for Kids

A Jupyter notebook is in essence a laboratory for programming. It is the ideal environment for playing around with code, experimenting, and exploring ideas. It is used by professional machine learning scientists who come every day to play at work, so why not by kids?

Jupylet is wonderfully easy to use for creating simple 2D and 3D games and music interactively and experimentally. Change a variable or a function and see how the game is affected immediately while running.

Jupylet for Deep Reinforcement Learning

Jupylet makes it is super easy to create and modify environments in which to experiment with deep reinforcement learning algorithms and it includes the API to programmatically control multiple simultaneous games and render thousands of frames per second.

Consider for example the pong game included in this code base. With a few lines of code you can modify the colors of the game to experiment with transfer learning, or turn the game into 4-way pong with agents on all four sides of the game court to experiment with cooperation between multiple agents. And since you can modify the game interactively in Jupyter this process is not only easy but also fun.

Check out the Programming Graphics and the Reinforcement Learning chapters in the Jupylet Programmer's Reference Guide.

Jupylet for Musicians

Jupylet imports ideas and methods from machine learning into the domain of sound synthesis to easily let you create sound synthesizers as wild as you can dream up - it includes impulse response reverb effects, colored noise generators, resonant filters with cutoff frequency sweeping, oscillators with LFO modulation, multi sampled instruments, and much more... And all of it in pure Python for you to modify and experiment with.

In addition Jupylet draws inspiration from the wonderful Sonic Pi and brings live loops and live music coding to Jupyter and Python. Hook up your MIDI keyboard and take off.

Check out the Programming Sound and Music and the Programming Synthesizers chapters in the Jupylet Programmer's Reference Guide.

Requirements

Jupylet should run on Python 3.6, 3.7, or 3.8 on Windows, Mac, and Linux. At the moment Jupylet is not compatible with Python 3.9.

How to Install and Run Jupylet

If you are new to Python, I recommend that you install and use the Miniconda Python distribution.

On Windows download and run the 64-bit installer for Python 3.8. Once Miniconda is installed press the ⊞ Winkey and then type Miniconda and press the Enter key. This should open a small window that programmers call console or shell in which you can enter commands and run programs.

On Mac OS X download and run "Miniconda3 MacOSX 64-bit pkg" for Python 3.8. Once installed click the Spotlight icon 🔍 and in the search field type terminal and press the Enter key to open the console.

To run jupylet first install it by typing the following command in the console:

pip install jupylet

If you are using Python 3.8 on Windows you also need to run following command:

python -m jupylet postinstall

Next, to run the example notebooks, download the jupylet source code. If you have Git installed type the following command:

git clone https://github.com/nir/jupylet.git

Alternatively, you can download the source code with the following command:

python -m jupylet download

Next, enter the jupylet/examples/ directory with the change directory command:

cd jupylet/examples/

And start a jupyter notebook with:

jupyter notebook 11-spaceship.ipynb

Run the notebook by following the instructions in the notebook and a game canvas should appear with the spaceship example:

Alternatively, you can run the same game as a Python script from the console with:

python spaceship.py

Documentation

To get started with Jupylet head over to the Jupylet Programmer's Reference Guide which you can find at jupylet.readthedocs.io.

To complement the online guide check out the growing collection of example notebooks that you can download and run on your computer as explained above.

Contact

For questions and feedback send an email to Nir Aides or join the discussion.

Spread the Word

Jupylet is a new library and you can help it grow with a few clicks - if you like it let your friends know about it!

Acknowledgements

  • Einar Forselv - The programmer behind ModernGL for his endless help in the trenches of OpenGL programming.
  • Alban Fichet - For kindly licensing his sound visualizer Shadertoy as CC BY 4.0 license.

What's New in Version 0.8.7

  • Workaround auto-completion bug in Jupyter notebooks.

What's New in Version 0.8.6

Comments
  • get realtime soundcard audio as input for shadertoy shaders

    get realtime soundcard audio as input for shadertoy shaders

    Hi,

    I have tried some shadertoys examples.

    It seems the audio input can be the 'output' from the sounds playing in jupylet, but is there a way to use realtime audio input from the soundcard?

    Thank you

    opened by cyberic99 6
  • how to run an App() in a separate thread?

    how to run an App() in a separate thread?

    Hi,

    I'd like to run an (headless) App in a separate thread.

    I'd like to render some shaders, and use the framebuffer into another part of my application.

    I tried this simple code:

    #!/usr/bin/python3
    
    import time
    from jupylet.app import App
    
    if __name__ == '__main__':
    
        def create_and_run_app():
            app = App(width=512, height=512, quality=100, fullscreen=False, mode="hidden")  #, log_level=logging.INFO)
            app.start()
    
        import _thread
        _thread.start_new_thread(create_and_run_app, ())
    
        time.sleep(10)
    

    but I get this error:

    Exception ignored in thread started by: <function create_and_run_app at 0x7f807b0060d0>
    Traceback (most recent call last):
      File "p.py", line 9, in create_and_run_app
        app = App(width=512, height=512, quality=100, fullscreen=False, mode="hidden")  #, log_level=logging.INFO)
      File "/home/eric/tmp/jupylet/jupylet/app.py", line 184, in __init__
        self.window = window_cls(size=(width, height), **conf)
      File "/home/eric/tmp/jupylet/jupylet/event.py", line 81, in __init__
        self.init_mgl_context()
      File "/home/eric/tmp/jupylet/jupylet/event.py", line 103, in init_mgl_context
        self._ctx = moderngl.create_standalone_context(
      File "/home/eric/.local/lib/python3.9/site-packages/moderngl/context.py", line 1672, in create_standalone_context
        raise ValueError('Requested OpenGL version {}, got version {}'.format(
    ValueError: Requested OpenGL version 330, got version 0
    

    I also tried to use mode="auto" and app.run(), but I get:

    Exception ignored in thread started by: <function create_and_run_app at 0x7f34e3fc30d0>
    Traceback (most recent call last):
      File "p.py", line 10, in create_and_run_app
        app.run()
      File "/home/eric/tmp/jupylet/jupylet/app.py", line 333, in run
        loop = asyncio.get_event_loop()
      File "/usr/lib/python3.9/asyncio/events.py", line 642, in get_event_loop
        raise RuntimeError('There is no current event loop in thread %r.'
    RuntimeError: There is no current event loop in thread 'Dummy-1'.
    

    Is there a way to call a render iteration x times per second, or in a separate thread?

    Thank you

    opened by cyberic99 5
  • App.run() does not automatically exit / quit

    App.run() does not automatically exit / quit

    Hi, thanks for this amazing jupylet. Installed and now trying the examples to understand how to use jupylet. On Windows 10, using Python 3.6, I can't close all examples started from IDLE. The same goes for all examples run on jupyter. When I close the jupyter's browser tabs, all jupylet examples are still running. The only way to close the examples are thru Task Managers.

    Is there any flag to set so that App.run() can automatically exit / quit when its window / display is closed ? Or maybe "exit/quit event" that needs to be handled ?

    Thank you

    opened by sefgit 5
  • "SystemError: error return without exception set" when creating App

    Hi,

    I'm trying to run jupylet on Windows, with Python 3.9.1. After installing the libraries following the instructions on the docs, if I try to run any example that creates an App I am getting the error:

    app = App()
    ---------------------------------------------------------------------------
    SystemError                               Traceback (most recent call last)
    <ipython-input-5-91042f890017> in <module>
    ----> 1 app = App()
    
    ~\Source\Repos\jupylet\jupylet\app.py in __init__(self, width, height, mode, resource_dir, quality, **kwargs)
        236 
        237         shader = set_shader_2d(self.load_program('shaders/sprite.glsl'))
    --> 238         shader['projection'].write(glm.ortho(
        239             0, width, 0, height, -1, 1
        240         ))
    
    ~\Miniconda3\envs\jupylet\lib\site-packages\moderngl\program_members\uniform.py in write(self, data)
        176         '''
        177 
    --> 178         self.mglo.data = data
    
    SystemError: error return without exception set
    

    Any idea what could be wrong?

    Thank you!

    opened by gmseabra 5
  • support python 3.9

    support python 3.9

    Hi,

    When trying to install jupylet on archlinux, with python 3.9.2, I get:

    $ pip install jupylet --user --verbose
    

    I get:

    $ pip install jupylet --user --verbose
    Using pip 20.2.3 from /home/eric/.local/lib/python3.9/site-packages/pip (python 3.9)
    User install by explicit request
    Created temporary directory: /tmp/pip-ephem-wheel-cache-3wvo_4kp
    Created temporary directory: /tmp/pip-req-tracker-_m4zqxh6
    Initialized build tracking at /tmp/pip-req-tracker-_m4zqxh6
    Created build tracker: /tmp/pip-req-tracker-_m4zqxh6
    Entered build tracker: /tmp/pip-req-tracker-_m4zqxh6
    Created temporary directory: /tmp/pip-install-ui97ta1b
    1 location(s) to search for versions of jupylet:
    * https://pypi.org/simple/jupylet/
    Fetching project page and analyzing links: https://pypi.org/simple/jupylet/
    Getting page https://pypi.org/simple/jupylet/
    Found index url https://pypi.org/simple
    Looking up "https://pypi.org/simple/jupylet/" in the cache
    Request header has "max_age" as 0, cache bypassed
    Starting new HTTPS connection (1): pypi.org:443
    https://pypi.org:443 "GET /simple/jupylet/ HTTP/1.1" 304 0
      Link requires a different Python (3.9.2 not in: '>=3.6, <3.9'): https://files.pythonhosted.org/packages/04/43/73317ed5ac537cc113f15ba8961a82b0becf58dd38d208b8aa53f6c6cd71/jupylet-0.8.2.tar.gz#sha256=65b29691461836ff56800596f74f4bf10620c7734982babe7e44c145bebef712 (from https://pypi.org/simple/jupylet/) (requires-python:>=3.6, <3.9)
      Link requires a different Python (3.9.2 not in: '>=3.6, <3.9'): https://files.pythonhosted.org/packages/d5/4a/759e69ce9edb0faf295efd9852354c810ba2d126f9d01d666694ab56a91e/jupylet-0.8.3.tar.gz#sha256=d8587839e785976ede70b54c2281044d3c6ab3ef99655c46d25259807cad4205 (from https://pypi.org/simple/jupylet/) (requires-python:>=3.6, <3.9)
      Link requires a different Python (3.9.2 not in: '>=3.6, <3.9'): https://files.pythonhosted.org/packages/39/ce/b57320a8f4338dddc64a17065b9c61c8a8513a309043bda3d8731152bc66/jupylet-0.8.4.tar.gz#sha256=796637f1bca3e1d63d2838a69f4cd4bd7f4e449f210feb2e7360c4ce20bcc85c (from https://pypi.org/simple/jupylet/) (requires-python:>=3.6, <3.9)
      Link requires a different Python (3.9.2 not in: '>=3.6, <3.9'): https://files.pythonhosted.org/packages/a0/71/b99740ec81e8e5450e3a2c40ee439a765c86f1f63eedc9e76d0c54f66fa7/jupylet-0.8.5.tar.gz#sha256=3a02ce9816cd7dd9067c7712befe0f8b4416819dc52771f9718230d1f8641d2a (from https://pypi.org/simple/jupylet/) (requires-python:>=3.6, <3.9)
      Link requires a different Python (3.9.2 not in: '>=3.6, <3.9'): https://files.pythonhosted.org/packages/c7/40/97e4e17afb76dda53df66f8b7d96794e3eb8b628195bc224b9df1985e6ac/jupylet-0.8.6.tar.gz#sha256=5b803c8dcbd7b69998cc24380c44d1764de2071df728206f9c6bc18a62a7cca6 (from https://pypi.org/simple/jupylet/) (requires-python:>=3.6, <3.9)
      Link requires a different Python (3.9.2 not in: '>=3.6, <3.9'): https://files.pythonhosted.org/packages/56/66/14403cfa25c6cc6d44d16d1b4b1e644a22315e4b9de5bce4cab8f3e7fcdb/jupylet-0.8.7.tar.gz#sha256=9b3323acd71db6e5df3e684ed66f2fb1d8c267331b2fc2b4dddcae973c0c86a9 (from https://pypi.org/simple/jupylet/) (requires-python:>=3.6, <3.9)
    Given no hashes to check 0 links for project 'jupylet': discarding no candidates
    ERROR: Could not find a version that satisfies the requirement jupylet (from versions: none)
    ERROR: No matching distribution found for jupylet
    Exception information:
    Traceback (most recent call last):
      File "/home/eric/.local/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 228, in _main
        status = self.run(options, args)
      File "/home/eric/.local/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 182, in wrapper
        return func(self, options, args)
      File "/home/eric/.local/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 323, in run
        requirement_set = resolver.resolve(
      File "/home/eric/.local/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py", line 183, in resolve
        discovered_reqs.extend(self._resolve_one(requirement_set, req))
      File "/home/eric/.local/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py", line 388, in _resolve_one
        abstract_dist = self._get_abstract_dist_for(req_to_install)
      File "/home/eric/.local/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py", line 339, in _get_abstract_dist_for
        self._populate_link(req)
      File "/home/eric/.local/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py", line 305, in _populate_link
        req.link = self._find_requirement_link(req)
      File "/home/eric/.local/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py", line 270, in _find_requirement_link
        best_candidate = self.finder.find_requirement(req, upgrade)
      File "/home/eric/.local/lib/python3.9/site-packages/pip/_internal/index/package_finder.py", line 926, in find_requirement
        raise DistributionNotFound(
    pip._internal.exceptions.DistributionNotFound: No matching distribution found for jupylet
    WARNING: You are using pip version 20.2.3; however, version 21.0.1 is available.
    You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.
    Removed build tracker: '/tmp/pip-req-tracker-_m4zqxh6'
    

    Is there anything I can do about it?

    Thank you

    opened by cyberic99 4
  • ipykernel_launcher error in vscode .ipynb cell

    ipykernel_launcher error in vscode .ipynb cell

    When I run the cells of 02-hello-jupylet.ipynb or of the other files from the examples, in VSCode in .ipynb model, on Win10 with Python 3.9, and get error in cell of app = App(width=320, height=64):

    usage: ipykernel_launcher [-h] [--window {pyglet,glfw}]
                              [--log_level {DEBUG,INFO,WARNING,ERROR}]
    ipykernel_launcher: error: unrecognized arguments: --ip=127.0.0.1 --stdin=9013 --control=9011 --hb=9010 --Session.signature_scheme="hmac-sha256" --Session.key=b"5601a025-9f20-4b88-afbb-44baf429e64a" --shell=9012 --transport="tcp" --iopub=9014 --f=C:\Users\ah21\AppData\Local\Temp\tmp-10760RJVa1Rf2n20M.json
    SystemExit: 2
    An exception has occurred, use %tb to see the full traceback.
    
    SystemExit: 2
    D:\venvs\jupylet\lib\site-packages\IPython\core\interactiveshell.py:3449: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
      warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
    
    opened by Fusyong 2
  • Bump numpy from 1.19.3 to 1.22.0

    Bump numpy from 1.19.3 to 1.22.0

    Bumps numpy from 1.19.3 to 1.22.0.

    Release notes

    Sourced from numpy's releases.

    v1.22.0

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 153 contributors spread over 609 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • NameError: name 'sys' is not defined in env.py

    NameError: name 'sys' is not defined in env.py

    Hello

    I have just tried to integrate jupylet into my script. However I am getting the following error: packages/jupylet/env.py:68: in has_display if 'pyglet' in sys.modules: E NameError: name 'sys' is not defined when simply importing jupylet

    It has been fixed for me by simply adding import sys in the head of that file locally.

    Could you please fix that on the file?

    Thanks!

    opened by fatenghriss 1
  • Not working in Jupyter

    Not working in Jupyter

    When I try to test the game in Jupyter (notebook or lab) I can't play the game. When I try to press the up/down keys it responds by moving up or down a cell and when I try left/right it does nothing. It kinda seems like it might be displaying as a just image, I'm not sure.

    Is there something I'm missing? Did I miss a step somewhere?

    opened by in-tension 3
  • instantiating App() ovverrides argparse.parse_args()

    instantiating App() ovverrides argparse.parse_args()

    For example, take this code:

    #!/usr/bin/python3
    
    import argparse
    from jupylet.app import App
    # app = App(width=512, height=512)
    
    parser = argparse.ArgumentParser(description='bla')
    args = parser.parse_args()
    

    if I run:

    $ ./p.py  --help
    

    I get:

    usage: p.py [-h]
    
    bla
    
    optional arguments:
      -h, --help  show this help message and exit
    

    as expected.

    But if I uncomment the line that instantiates app, I get:

    $ ./p.py  --help
    
    usage: p.py [-h] [--window {pyglet,glfw}] [--log_level {DEBUG,INFO,WARNING,ERROR}]
    
    optional arguments:
      -h, --help            show this help message and exit
      --window {pyglet,glfw}
                            Windowing library to use.
      --log_level {DEBUG,INFO,WARNING,ERROR}
                            logging level.
    

    So it makes it hard to import App outside of jupylet

    Thanks

    opened by cyberic99 0
  • No error message if jupylet is used in a helper file

    No error message if jupylet is used in a helper file

    For example, suppose you have a file game.py with

    from jupylet.label import Label as Label
    from jupylet.app import App as App
    
    app = App(width=320, height=64)
    

    sitting next to a notebook in which you have

    import game
    
    hello = game.Label('hello, world', color='cyan', font_size=32, x=game.app.width, y=16)
    
    @game.app.run_me_every(1/30)
    def scroll(ct, dt):
        hello.x = hello.x - 1
    
        if hello.right < 0:
            hello.x = app.width
            
    @game.app.event
    def render(ct, dt):
        game.app.window.clear()
        hello.draw()
        
    game.app.run()
    

    This all runs fine. However, if syntax errors are introduced into scroll and render, no error message will appear.

    opened by quantumjim 0
  • Running as stand-alone script on Windows

    Running as stand-alone script on Windows

    When run as a stand-alone script on Windows 10 (Python 3.7.9), example programs just die silently after the first jupylet import (e.g. from jupylet.sprite import Sprite in spaceship.py)

    opened by vsavenkov 4
Releases(v0.8.9)
Audio fingerprinting and recognition in Python

dejavu Audio fingerprinting and recognition algorithm implemented in Python, see the explanation here: How it works Dejavu can memorize audio by liste

Will Drevo 6k Jan 6, 2023
Python library for audio and music analysis

librosa A python package for music and audio analysis. Documentation See https://librosa.org/doc/ for a complete reference manual and introductory tut

librosa 5.6k Jan 6, 2023
Python Audio Analysis Library: Feature Extraction, Classification, Segmentation and Applications

A Python library for audio feature extraction, classification, segmentation and applications This doc contains general info. Click here for the comple

Theodoros Giannakopoulos 5.1k Jan 2, 2023
Scalable audio processing framework written in Python with a RESTful API

TimeSide : scalable audio processing framework and server written in Python TimeSide is a python framework enabling low and high level audio analysis,

Parisson 340 Jan 4, 2023
nicfit 425 Jan 1, 2023
Python module for handling audio metadata

Mutagen is a Python module to handle audio metadata. It supports ASF, FLAC, MP4, Monkey's Audio, MP3, Musepack, Ogg Opus, Ogg FLAC, Ogg Speex, Ogg The

Quod Libet 1.1k Dec 31, 2022
Read music meta data and length of MP3, OGG, OPUS, MP4, M4A, FLAC, WMA and Wave files with python 2 or 3

tinytag tinytag is a library for reading music meta data of MP3, OGG, OPUS, MP4, M4A, FLAC, WMA and Wave files with python Install pip install tinytag

Tom Wallroth 577 Dec 26, 2022
Telegram Voice-Chat Bot Written In Python Using Pyrogram.

Telegram Voice-Chat Bot Telegram Voice-Chat Bot To Play Music From Various Sources In Your Group Support All linux based os. Windows Mac Diagram Requi

TheHamkerCat 314 Dec 29, 2022
Expressive Digital Signal Processing (DSP) package for Python

AudioLazy Development Last release PyPI status Real-Time Expressive Digital Signal Processing (DSP) Package for Python! Laziness and object representa

Danilo de Jesus da Silva Bellini 642 Dec 26, 2022
cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding for Python

audioread Decode audio files using whichever backend is available. The library currently supports: Gstreamer via PyGObject. Core Audio on Mac OS X via

beetbox 359 Feb 15, 2021
Python wrapper around sox.

pysox Python wrapper around sox. Read the Docs here. This library was presented in the following paper: R. M. Bittner, E. J. Humphrey and J. P. Bello,

Rachel Bittner 446 Dec 7, 2022
Python I/O for STEM audio files

stempeg = stems + ffmpeg Python package to read and write STEM audio files. Technically, stems are audio containers that combine multiple audio stream

Fabian-Robert Stöter 72 Dec 23, 2022
Read music meta data and length of MP3, OGG, OPUS, MP4, M4A, FLAC, WMA and Wave files with python 2 or 3

tinytag tinytag is a library for reading music meta data of MP3, OGG, OPUS, MP4, M4A, FLAC, WMA and Wave files with python Install pip install tinytag

Tom Wallroth 435 Feb 17, 2021
Python library for handling audio datasets.

AUDIOMATE Audiomate is a library for easy access to audio datasets. It provides the datastructures for accessing/loading different datasets in a gener

Matthias 121 Nov 27, 2022
python wrapper for rubberband

pyrubberband A python wrapper for rubberband. For now, this just provides lightweight wrappers for pitch-shifting and time-stretching. All processing

Brian McFee 106 Nov 28, 2022
Expressive Digital Signal Processing (DSP) package for Python

AudioLazy Development Last release PyPI status Real-Time Expressive Digital Signal Processing (DSP) Package for Python! Laziness and object representa

Danilo de Jesus da Silva Bellini 573 Feb 8, 2021
A Python library for audio data augmentation. Inspired by albumentations. Useful for machine learning.

Audiomentations A Python library for audio data augmentation. Inspired by albumentations. Useful for deep learning. Runs on CPU. Supports mono audio a

Iver Jordal 1.2k Jan 7, 2023
Praat in Python, the Pythonic way

Parselmouth - Praat in Python, the Pythonic way Parselmouth is a Python library for the Praat software. Though other attempts have been made at portin

Yannick Jadoul 786 Jan 9, 2023
Python Audio Analysis Library: Feature Extraction, Classification, Segmentation and Applications

A Python library for audio feature extraction, classification, segmentation and applications This doc contains general info. Click here for the comple

Theodoros Giannakopoulos 3.8k Feb 17, 2021