I built a real-time Yamaha DX7 synthesizer emulator in pure Python (~2500 lines). It implements the full DX7 FM synthesis architecture: 6 operators,
all 32 algorithms, 4-rate/4-level envelopes, LFO with 6 waveforms, keyboard level scaling, velocity sensitivity, and feedback — all computed
sample-by-sample at 44.1 kHz.
Includes 32 factory presets from the original ROM1A bank (BRASS 1, E.PIANO 1, STRINGS, etc.), a tkinter GUI with a DX7-style panel layout, pitch bend
and mod wheels, a clickable 5-octave keyboard, and optional MIDI input.
The audio engine runs in a real-time callback via sounddevice/PortAudio with ~5.8 ms latency. No external DSP libraries — just NumPy for the math.
Tech: Python 3.10+, NumPy, sounddevice, tkinter. Optional python-rtmidi for MIDI controllers.
pip install numpy sounddevice && python main.py
I built a real-time Yamaha DX7 synthesizer emulator in pure Python (~2500 lines). It implements the full DX7 FM synthesis architecture: 6 operators, all 32 algorithms, 4-rate/4-level envelopes, LFO with 6 waveforms, keyboard level scaling, velocity sensitivity, and feedback — all computed sample-by-sample at 44.1 kHz.
very nice, helped a friend a little on this one a few years back, if it sparks any https://github.com/cannc4/DX7-Supercollider
How much overlap does this have with the voog project? Why not factor out common components?
Weird that everyone was bagging on your Voog project, but they've got nothing to say about this. I guess Yamahas lack the caché..?
Anyhow, they're both nice reads, man!