nbplay: making music in notebooks
Did you know you can build a digital audio workstation inside a Jupyter notebook? In this talk, we'll use nbplay, an experimental notebook-based DAW, to explore Jupyter as a platform for mixed programmable and interactive computing. We'll make music with synthesizers, samplers, sequencers, mixers, and transport controls, but the real subject is bigger: what becomes possible when code cells, rich browser UI, kernel state, and live interaction all share the same workspace.
Jupyter is usually introduced as a place to write code, show outputs, and explain analysis. That framing is useful, but undersells what the notebook can be. A modern notebook is also a browser application, a Python runtime, a document, a widget host, and a communication channel between all of those pieces. It is one of the few environments where programmable computation and direct manipulation can sit side by side without forcing the user to choose between them.
Data workflows already take advantage of this. We write code, inspect tables, drag sliders, view charts, and iterate in place. But the same pattern can support stranger and more demanding applications. A digital audio workstation is a great stress test: it needs real-time interaction, visual controls, shared state, timing, playback, and enough immediacy that the result feels like an instrument rather than a report.
In this talk, we'll build up a small music-making environment using nbplay. We'll start with a single synthesizer controlled from Python and the notebook UI. Then we'll add a sampler, step sequencer, keyboard, mixer, and transport controls until the notebook starts to look less like a linear document and more like a programmable studio. Along the way, we'll look at how the pieces fit together at a high level: Python objects and traitlets for state, browser widgets for interaction, Web Audio for playback, and a shared rust (and webassembly) core for the parts that need to be fast and reusable.
The goal is not to convince anyone that Jupyter should replace Ableton Live or any other DAW. It should not. The goal is to use a DAW as an unusually vivid example of a broader idea: notebooks can host interactive tools that are still deeply programmable. By the end of the talk, the audience will have a concrete mental model for building notebook applications that combine code, UI, media, and live state, plus a better sense of where Jupyter can go beyond analysis notebooks and dashboards.
Tim is a Quantitative Developer at Cubist Systematic Strategies.