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)
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 04, 2023
Mina - A Telegram Music Bot 5 mandatory Assistant written in Python using Pyrogram and Py-Tgcalls

Mina - A Telegram Music Bot 5 mandatory Assistant written in Python using Pyrogram and Py-Tgcalls

3 Feb 07, 2022
An AI for Music Generation

An AI for Music Generation

Hao-Wen Dong 1.3k Dec 31, 2022
𝙰 π™Όπšžπšœπš’πšŒ π™±πš˜πš π™²πš›πšŽπšŠπšπšŽπš π™±πš’ πšƒπšŽπšŠπš–π™³πš•πš πŸ’–

TeamDltmusic 𝙰 π™Όπšžπšœπš’πšŒ π™±πš˜πš π™²πš›πšŽπšŠπšπšŽπš π™±πš’ πšƒπšŽπšŠπš–π™³πš•πš πŸ’– Deploy String Session String Click hear you can find string session OR join He

TeamDlt 5 Jan 18, 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 collection of python scripts for extracting and analyzing acoustics from audio files.

pyAcoustics A collection of python scripts for extracting and analyzing acoustics from audio files. Contents 1 Common Use Cases 2 Major revisions 3 Fe

Tim 74 Dec 26, 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
Python CD-DA ripper preferring accuracy over speed

Whipper Whipper is a Python 3 (3.6+) CD-DA ripper based on the morituri project (CDDA ripper for *nix systems aiming for accuracy over speed). It star

671 Jan 04, 2023
A Music Player Bot for Discord Servers

A Music Player Bot for Discord Servers

Halil Acar 2 Oct 25, 2021
Implicit neural differentiable FM synthesizer

Implicit neural differentiable FM synthesizer The purpose of this project is to emulate arbitrary sounds with FM synthesis, where the parameters of th

Andreas Jansson 34 Nov 06, 2022
Music Streaming Platform based on full implementation of DBSM

Symphony Music Streaming Platform based on full implementation of DBSM List of Commands Insert User (INSERT) Function to implement input in USER Get a

Parth Maradia 1 Nov 12, 2021
PianoPlayer - Automatic fingering generator for piano scores

PianoPlayer - Automatic fingering generator for piano scores

Marco Musy 571 Jan 02, 2023
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 06, 2023
spafe: Simplified Python Audio-Features Extraction

spafe aims to simplify features extractions from mono audio files. The library can extract of the following features: BFCC, LFCC, LPC, LPCC, MFCC, IMFCC, MSRCC, NGCC, PNCC, PSRCC, PLP, RPLP, Frequenc

Ayoub Malek 310 Jan 01, 2023
TONet: Tone-Octave Network for Singing Melody Extraction from Polyphonic Music

TONet Introduction The official implementation of "TONet: Tone-Octave Network for Singing Melody Extraction from Polyphonic Music", in ICASSP 2022 We

Knut(Ke) Chen 29 Dec 01, 2022
A simple voice detection system which can be applied practically for designing a device with capability to detect a baby’s cry and automatically turning on music

Auto-Baby-Cry-Detection-with-Music-Player A simple voice detection system which can be applied practically for designing a device with capability to d

2 Dec 15, 2021
Linear Prediction Coefficients estimation from mel-spectrogram implemented in Python based on Levinson-Durbin algorithm.

LPC_for_TTS Linear Prediction Coefficients estimation from mel-spectrogram implemented in Python based on Levinson-Durbin algorithm. 基于Levinson-Durbin

Zewang ZHANG 58 Nov 17, 2022
:speech_balloon: SpeechPy - A Library for Speech Processing and Recognition: http://speechpy.readthedocs.io/en/latest/

SpeechPy Official Project Documentation Table of Contents Documentation Which Python versions are supported Citation How to Install? Local Installatio

Amirsina Torfi 870 Dec 27, 2022
Library for working with sound files of the format: .ogg, .mp3, .wav

Library for working with sound files of the format: .ogg, .mp3, .wav. By work is meant - playing sound files in a straight line and in the background, obtaining information about the sound file (auth

Romanin 2 Dec 15, 2022
live coding in python + supercollider

live coding in python + supercollider

Zack 6 Feb 06, 2022