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)
A tool for retrieving audio in the past

Rewinder A tool for retrieving audio in the past. Ever felt like, I need to remember that discussion which happened 10 min back. Now you can! Rewind a

Bharat 1 Jan 24, 2022
Manipulate audio with a simple and easy high level interface

Pydub Pydub lets you do stuff to audio in a way that isn't stupid. Stuff you might be looking for: Installing Pydub API Documentation Dependencies Pla

James Robert 6.6k Jan 01, 2023
Vixtify - Python Controlled Music Player

Strumm Sound Playlist : Click me to listen Welcome to GitHub Pages You can use the editor on GitHub to maintain and preview the content for your websi

Vicky Kumar 2 Feb 03, 2022
Audio features extraction

Yaafe Yet Another Audio Feature Extractor Build status Branch master : Branch dev : Anaconda : Install Conda Yaafe can be easily install with conda. T

Yaafe 231 Dec 26, 2022
controls volume using hand gestures

controls volume using hand gestures

1 Oct 11, 2021
Jarvis From Basic to Advance - make a voice assistant similar to JARVIS (in iron man movie)

JARVIS (Basic to Advance) This was my attempt to make a voice assistant similar to JARVIS (in iron man movie) Let's be honest, it's not as intelligent

codesempai 17 Dec 25, 2022
Music player and music library manager for Linux, Windows, and macOS

Ex Falso / Quod Libet - A Music Library / Editor / Player Quod Libet is a music management program. It provides several different ways to view your au

Quod Libet 1.2k Jan 07, 2023
kapre: Keras Audio Preprocessors

Kapre Keras Audio Preprocessors - compute STFT, ISTFT, Melspectrogram, and others on GPU real-time. Tested on Python 3.6 and 3.7 Why Kapre? vs. Pre-co

Keunwoo Choi 867 Dec 29, 2022
Python audio and music signal processing library

madmom Madmom is an audio signal processing library written in Python with a strong focus on music information retrieval (MIR) tasks. The library is i

Institute of Computational Perception 1k Dec 26, 2022
This is an AI that runs in the terminal. It is a voice assistant that can do common activities and can also help in your coding doubts like

This is an AI that runs in the terminal. It is a voice assistant that can do common activities and can also help in your coding doubts like

OneBit 1 Nov 05, 2021
digital audio workstation, instrument and effect plugins, wave editor

digital audio workstation, instrument and effect plugins, wave editor

306 Jan 05, 2023
Mopidy is an extensible music server written in Python

Mopidy Mopidy is an extensible music server written in Python. Mopidy plays music from local disk, Spotify, SoundCloud, Google Play Music, and more. Y

Mopidy 7.6k Jan 05, 2023
A collection of free MIDI chords and progressions ready to be used in your DAW, Akai MPC, or Roland MC-707/101

A collection of free MIDI chords and progressions ready to be used in your DAW, Akai MPC, or Roland MC-707/101

921 Jan 05, 2023
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
Library for Python 3 to communicate with the Google Chromecast.

pychromecast Library for Python 3.6+ to communicate with the Google Chromecast. It currently supports: Auto discovering connected Chromecasts on the n

Home Assistant Libraries 2.4k Jan 02, 2023
Noinoi music is smoothly playing music on voice chat of telegram.

NOINOI MUSIC BOT ✨ Features Music & Video stream support MultiChat support Playlist & Queue support Skip, Pause, Resume, Stop feature Music & Video do

2 Feb 13, 2022
Pianote - An application that helps musicians practice piano ear training

Pianote Pianote is an application that helps musicians practice piano ear traini

3 Aug 17, 2022
DCL - An easy to use diacritic library used for diacritic and accent manipulation.

Diacritics Library This library is used for adding, and removing diacritics from strings. Getting started Start by importing the module: import dcl DC

Kreus Amredes 6 Jun 03, 2022
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
Voice package for Pycord adding extra features.

VoiceIO Voice package for Pycord adding extra features. Example Down bellow is an example of what you can currently do. import voiceio process = voic

pycord 1 Dec 24, 2021