SkillAgentSearch skills...

Vx7

VX7 — Open-source Yamaha DX7 emulator in Python. 6-operator FM synthesis, 32 factory presets, real-time audio, MIDI support, tkinter GUI.

Install / Use

/learn @gpasquero/Vx7

README

VX7 - Virtual DX7 Synthesizer

A Python GUI application that emulates the legendary Yamaha DX7 FM synthesizer, with authentic aesthetics, 6-operator FM synthesis, original factory presets, and optional MIDI support.

Python License Status

Features

  • 6-Operator FM Synthesis — Full implementation of the DX7's FM engine with all 32 algorithms
  • 32 Factory Presets — Original ROM1A bank: BRASS, STRINGS, PIANO, E.PIANO, ORGAN, BELLS, and more
  • Authentic DX7 GUI — Dark brown panel, green LCD display, membrane-style buttons, algorithm diagram
  • 16-Voice Polyphony — With voice stealing, just like the original hardware
  • DX7 Envelopes — 4-rate/4-level envelope generators per operator with accurate rate-to-time curves
  • LFO — 6 waveforms (Triangle, Saw Down, Saw Up, Square, Sine, Sample & Hold)
  • Optional MIDI Support — Auto-detects MIDI devices, fully configurable, works without MIDI
  • Computer Keyboard — Play notes with your QWERTY keyboard (two octaves mapped)
  • On-Screen Keyboard — 4-octave clickable piano (C2-C6)
  • Real-Time Audio — Low-latency output (~5.8ms) via PortAudio

Requirements

  • Python 3.10+ with Tkinter (Tk 8.6+)
  • macOS, Linux, or Windows

Installation

# Clone the repository
git clone https://github.com/gpasquero/vx7.git
cd vx7

# Install dependencies
pip install -r requirements.txt

macOS (with Homebrew)

brew install python-tk@3.12
/opt/homebrew/bin/python3.12 -m pip install --break-system-packages numpy sounddevice python-rtmidi

Usage

python main.py

Or on macOS with Homebrew Python:

/opt/homebrew/bin/python3.12 main.py

Keyboard Mapping

| Keys | Notes | |------|-------| | Z S X D C V G B H N J M | C3 to B3 (lower octave) | | Q 2 W 3 E R 5 T 6 Y 7 U | C4 to B4 (upper octave) | | Up / Down arrows | Previous / Next preset | | Escape | Quit |

MIDI

MIDI input is optional. If a MIDI controller is connected, VX7 auto-detects it on startup. If python-rtmidi is not installed, the app runs normally with the on-screen and computer keyboards.

Project Structure

vx7/
├── main.py              # Entry point + controller
├── requirements.txt     # Dependencies
├── engine/
│   ├── envelope.py      # DX7 4-rate/4-level envelope generator
│   ├── operator.py      # FM operator with KLS, velocity scaling
│   ├── algorithm.py     # All 32 DX7 algorithms + rendering
│   ├── lfo.py           # LFO with 6 waveforms
│   ├── voice.py         # Single voice (6 ops + LFO + algorithm)
│   └── synth.py         # 16-voice polyphonic synthesizer
├── presets/
│   └── factory.py       # 32 ROM1A factory presets
├── gui/
│   ├── styles.py        # Colors, fonts, dimensions
│   ├── display.py       # LCD display emulation (green glow + scanlines)
│   ├── panel.py         # DX7-style control panel
│   └── app.py           # Main application window
├── audio/
│   └── output.py        # Real-time audio output (sounddevice)
└── midi/
    └── handler.py       # Optional MIDI input handler

Factory Presets (ROM1A)

| # | Name | # | Name | # | Name | # | Name | |---|------|---|------|---|------|---|------| | 1 | BRASS 1 | 9 | PIANO 2 | 17 | MARIMBA | 25 | PIPES | | 2 | BRASS 2 | 10 | PIANO 3 | 18 | KOTO | 26 | HARP 1 | | 3 | BRASS 3 | 11 | E.PIANO 1 | 19 | FLUTE 1 | 27 | GUITAR 1 | | 4 | STRINGS 1 | 12 | E.PIANO 2 | 20 | FLUTE 2 | 28 | SYN-LEAD | | 5 | STRINGS 2 | 13 | E.PIANO 3 | 21 | OBOE | 29 | BASS 1 | | 6 | STRINGS 3 | 14 | HARPSICH | 22 | TRUMPET | 30 | BASS 2 | | 7 | ORCHSTRA | 15 | CLAV 1 | 23 | ORGAN 1 | 31 | TUB BELL | | 8 | PIANO 1 | 16 | VIBE | 24 | ORGAN 2 | 32 | BELLS |

Status

This project is in beta. Known issues:

  • GUI layout has overlapping elements in some sections (work in progress)
  • Preset parameters are approximations of the original DX7 SysEx data
  • Some algorithms may need fine-tuning for accuracy

License

MIT License

Acknowledgments

Inspired by the Yamaha DX7 (1983), one of the most influential synthesizers ever made.

Related Skills

View on GitHub
GitHub Stars12
CategoryCustomer
Updated1mo ago
Forks0

Languages

Python

Security Score

95/100

Audited on Feb 25, 2026

No findings