Episode 43: Deep Reinforcement Learning in a Notebook With Jupylet + Gaming and Synthesis
The Real Python Podcast
Jan 15, 2021 1h 2m
What is it like to design a Python library for three different audiences? This week on the show, we have Nir Aides, creator of Jupylet. His new library is designed for deep reinforcement learning researchers, musicians interested in live music coding, and kids interested in learning to program. Everything is designed to run inside of a Jupyter notebook.
Nir’s initial goal was to create a framework to study deep reinforcement learning, and this led to building a framework for 2D and 3D games and graphics. As he continued the development, he realized that this interactive environment could be a useful tool for learning Python.
We also talk about how he got interested in live music coding and the advanced mathematics of sound synthesis. Nir also shares some resources for finding graphic assets and tools for creating 3D models.
Course Spotlight: Using Jupyter Notebooks
In this step-by-step course, you learn how to get started with the Jupyter Notebook, an open source web application that you can use to create and share documents that contain live code, equations, visualizations, and text.
- 00:00:00 – Introduction
- 00:02:25 – When did you start the project?
- 00:02:50 – What is deep reinforcement learning?
- 00:06:11 – How is deep reinforcement learning implemented in Jupylet?
- 00:06:56 – What graphic libraries are being used?
- 00:09:56 – What are the audiences for Jupylet?
- 00:14:15 – Why create features for musicians?
- 00:15:52 – Interactive code
- 00:19:13 – Were you using Jupyter Notebooks previously?
- 00:24:01 – Sponsor Digital Ocean
- 00:24:40 – Scaling features and making it kid friendly
- 00:28:59 – Outside help and learning about audio synthesis
- 00:33:31 – Using NumPy for synthesis, effects, and algorithmic reverb
- 00:39:08 – Video Course Spotlight
- 00:40:13 – Relying on other packages for your own package
- 00:42:26 – Assets for game design and working with 3D
- 00:47:51 – What has feedback been like?
- 00:48:31 – Looking for contributors
- 00:49:45 – More on live music looping
- 00:53:24 – What are you excited about in the world of Python?
- 00:55:41 – What do you want to learn next?
- 01:01:13 – Thanks and goodbye
- Jupylet: GitHub Project Page
- Jupylet: Read the Docs
- Deep Reinforcement Learning: Wikipedia article
- DQN Breakout: YouTube
- Learn OpenGL
- ModernGL: ModernGL is a high performance rendering module for Python
- SID (Sound Interface Device) - C64 Wiki
- Chiptune: Wikipedia article
- The Best Chiptune Groups/Artists: Ranker.com
- Elektron SidStation: Wikipedia article
- Sonic Pi: Welcome to the future of music
- FoxDot: Live Coding with Python and Super Collider
- Nyquist frequency: Wikipedia article
- Aliasing: Wikipedia article
- Coding a basic reverb algorithm - Part 2: An introduction to audio programming
- Openair: Demo, download and share acoustic impulse responses
- Jupylet Docs: Impulse Response Files
- Versilian Community Sample Library: Virtual Instruments
- Versilian Community Sample Library: Github
- Free Sound Samples: One Laptop per Child
- One Laptop per Child: Wikipedia article
- Kenney.nl: Free game assets, no strings attached
- Texture Haven
- Free PBR Texture Websites: The Graphic Assembly
- Blender: Open Source 3D Creation
- Episode 7: AsyncIO + Music, Origins of Black, and Managing Python Releases
- import asyncio: Learn Python’s AsyncIO #1 - The Async Ecosystem
- PyTorch: Optimized Tensor Library for Deep Learning Using GPUs and CPUs