17/10/2026 –, Principal
I tried porting my wind-synth's MIDI firmware from C to MicroPython and hit a wall: the interpreter speed itself. A talk on where Python fails in real-time firmware and where it still can win.
The NuEVI is an open-source wind synthesizer: a MIDI controller you play with your breath and some buttons similar to a trumpet. Its firmware has lived in C/C++ since day one. I've been playing it and contributing to that firmware for two years, and at some point I asked myself the same question we probably all ask when we see code written in another language: why not Python?
This talk is the story of finding out.
We'll start with the instrument itself, live and unmodified. I’ll play a quick demo so you can hear what a sub-millisecond MIDI controller sounds like. From there we'll look at MIDI control from a system-architecture point of view: what the firmware is really doing between a breath and a note, and why latency matters.
Then we'll try to port it. We'll run identical hardware in both languages, side by side, and let the instrument tell you what it thinks. Along the way we'll talk about real-time constraints, interpreter overhead, GC pauses, and the parts of the signal chain where those things stop being problems and start being opportunities.
Python: comfortable reading and writing everyday Python. You should recognize classes, decorators, generators, and with blocks without needing them explained. No advanced metaprogramming, async, or typing-system knowledge required.
Real-time / embedded: none required. The talk explains what firmware, interrupts, and microcontrollers are as it goes. If you have touched an Arduino, MicroPython, or CircuitPython project, you'll recognize a few extra references but won't get ahead.
MIDI and audio: none required. Concepts (MIDI messages, CC values, DAWs, sample rates, latency, jitter) are introduced from first principles. Musicians will enjoy extra context; non-musicians will not feel locked out.
Helpful but optional: any prior exposure to C or C++ syntax, any project that involved talking to hardware over USB or serial, any experience reasoning about performance budgets.
Not required: DSP math, music theory, prior knowledge of wind instruments, or owning any of the hardware shown.
O que as pessoas que participarem podem esperar aprender na sua atividade?:By the end of this talk, you'll be able to:
• Trace the real-time path of a MIDI controller from sensor to sound, and pinpoint where latency comes from.
• Reason in latency budgets — a framework that applies to any interactive system, not just audio.
• Name the parts of Python (GC, interpreter overhead, ISR limits) that break under real-time pressure and recognize them in other domains.
• Find the boundary where those problems vanish and Python's ecosystem starts winning.
• Partition a hybrid system between a compiled core and a Python layer with confidence.
Aside from working full time as a software engineer/data scientist, I moonlight as a jazz and funk musician. I am excited to bring both of my passions together and discuss them with such a cool group