Python game programming in Jupyter notebooks.

Related tags

Audiojupylet
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)
Synchronize a local directory of songs' (MP3, MP4) metadata (genre, ratings) and playlists with a Plex server.

PlexMusicSync Synchronize a local directory of songs' (MP3, MP4) metadata (genre, ratings) and playlists (m3u, m3u8) with a Plex server. The song file

Tom Goetz 9 Jul 07, 2022
Stevan KZ 1 Oct 27, 2021
Learn chords with your MIDI keyboard !

miditeach miditeach is a music learning tool that can be used to practice your chords skills with a midi keyboard 🎹 ! Features Midi keyboard input se

Alexis LOUIS 3 Oct 20, 2021
GNU Radio – the Free and Open Software Radio Ecosystem

GNU Radio is a free & open-source software development toolkit that provides signal processing blocks to implement software radios. It can be used wit

GNU Radio 4.1k Jan 06, 2023
PatrikZero's CS:GO Hearing protection

Program that lowers volume when you die and get flashed in CS:GO. It aims to lower the chance of hearing damage by reducing overall sound exposure. Uses game state integration. Anti-cheat safe.

Patrik Žúdel 224 Dec 04, 2022
Tune in is a Collaborative Music Playing Systems where multiple guests can join a room and enjoy the song being played

✨A collaborative music playing systems🎶 where multiple guests can join a room ➡🚪 and enjoy the song🎧 being played.

Vedansh Vijaywargiya 8 Nov 05, 2022
Pythonic bindings for FFmpeg's libraries.

PyAV PyAV is a Pythonic binding for the FFmpeg libraries. We aim to provide all of the power and control of the underlying library, but manage the gri

PyAV 1.8k Jan 03, 2023
Audio spatialization over WebRTC and JACK Audio Connection Kit

Audio spatialization over WebRTC Spatify provides a framework for building multichannel installations using WebRTC.

Bruno Gola 34 Jun 29, 2022
Supysonic is a Python implementation of the Subsonic server API.

Supysonic Supysonic is a Python implementation of the Subsonic server API. Current supported features are: browsing (by folders or tags) streaming of

Alban 228 Nov 19, 2022
A python wrapper for REAPER

pyreaper A python wrapper for REAPER (Robust Epoch And Pitch EstimatoR) Installation pip install pyreaper Demonstration notebnook http://nbviewer.jupy

Ryuichi Yamamoto 56 Dec 27, 2022
Generating a structured library of .wav samples with Python.

sample-library Scripts for generating a structured sample library with Python Requires Docker about Samples are written to wave files in lib/. Differe

Ben Mangold 1 Nov 11, 2021
A useful tool to generate chord progressions according to melody MIDIs

Auto chord generator, pure python package that generate chord progressions according to given melodies

Billy Yi 53 Dec 30, 2022
Official implementation of A cappella: Audio-visual Singing VoiceSeparation, from BMVC21

Y-Net Official implementation of A cappella: Audio-visual Singing VoiceSeparation, British Machine Vision Conference 2021 Project page: ipcv.github.io

Juan F. Montesinos 12 Oct 22, 2022
Spotipy - Player de música simples em Python

Spotipy Player de música simples em Python, utilizando a biblioteca Pysimplegui para a interface gráfica. Este tocador é bastante simples em si, mas p

Adelino Almeida 4 Feb 28, 2022
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 02, 2023
SU Music Player — The first open-source PyTgCalls based Pyrogram bot to play music in voice chats

SU Music Player — The first open-source PyTgCalls based Pyrogram bot to play music in voice chats Note Neither this, or PyTgCalls are fully

SU Projects 58 Jan 02, 2023
Terminal-based audio-to-text converter

att Terminal-based audio-to-text converter Project description A terminal-based audio-to-text converter written in python, enabling you to convert .wa

Sven Eschlbeck 4 Dec 15, 2022
A Python wrapper around the Soundcloud API

soundcloud-python A friendly wrapper around the Soundcloud API. Installation To install soundcloud-python, simply: pip install soundcloud Or if you'r

SoundCloud 84 Dec 31, 2022
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 07, 2023
This Is Telegram Music UserBot To Play Music Without Being Admin

This Is Telegram Music UserBot To Play Music Without Being Admin

Krishna Kumar 36 Sep 13, 2022