{"id":46115031,"url":"https://github.com/gpasquero/vx7","last_synced_at":"2026-03-01T23:10:07.845Z","repository":{"id":338812173,"uuid":"1158829779","full_name":"gpasquero/vx7","owner":"gpasquero","description":"VX7 — Open-source Yamaha DX7 emulator in Python. 6-operator FM synthesis, 32 factory presets, real-time audio, MIDI support, tkinter GUI.","archived":false,"fork":false,"pushed_at":"2026-02-16T14:46:31.000Z","size":62,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-16T22:28:56.784Z","etag":null,"topics":["audio","digital-audio","dx7","emulator","fm-synthesis","midi","music","music-production","open-source","python","sound-synthesis","synthesizer","tkinter","virtual-instrument","yamaha"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gpasquero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-16T00:56:03.000Z","updated_at":"2026-02-16T21:04:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gpasquero/vx7","commit_stats":null,"previous_names":["gpasquero/vx7"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/gpasquero/vx7","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvx7","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvx7/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvx7/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvx7/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gpasquero","download_url":"https://codeload.github.com/gpasquero/vx7/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvx7/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29987656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T22:42:38.399Z","status":"ssl_error","status_checked_at":"2026-03-01T22:41:51.863Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","digital-audio","dx7","emulator","fm-synthesis","midi","music","music-production","open-source","python","sound-synthesis","synthesizer","tkinter","virtual-instrument","yamaha"],"created_at":"2026-03-01T23:10:07.287Z","updated_at":"2026-03-01T23:10:07.840Z","avatar_url":"https://github.com/gpasquero.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VX7 - Virtual DX7 Synthesizer\n\nA 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.\n\n![Python](https://img.shields.io/badge/Python-3.10%2B-blue)\n![License](https://img.shields.io/badge/License-MIT-green)\n![Status](https://img.shields.io/badge/Status-Beta-yellow)\n\n## Features\n\n- **6-Operator FM Synthesis** — Full implementation of the DX7's FM engine with all 32 algorithms\n- **32 Factory Presets** — Original ROM1A bank: BRASS, STRINGS, PIANO, E.PIANO, ORGAN, BELLS, and more\n- **Authentic DX7 GUI** — Dark brown panel, green LCD display, membrane-style buttons, algorithm diagram\n- **16-Voice Polyphony** — With voice stealing, just like the original hardware\n- **DX7 Envelopes** — 4-rate/4-level envelope generators per operator with accurate rate-to-time curves\n- **LFO** — 6 waveforms (Triangle, Saw Down, Saw Up, Square, Sine, Sample \u0026 Hold)\n- **Optional MIDI Support** — Auto-detects MIDI devices, fully configurable, works without MIDI\n- **Computer Keyboard** — Play notes with your QWERTY keyboard (two octaves mapped)\n- **On-Screen Keyboard** — 4-octave clickable piano (C2-C6)\n- **Real-Time Audio** — Low-latency output (~5.8ms) via PortAudio\n\n## Requirements\n\n- Python 3.10+ with Tkinter (Tk 8.6+)\n- macOS, Linux, or Windows\n\n## Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/gpasquero/vx7.git\ncd vx7\n\n# Install dependencies\npip install -r requirements.txt\n```\n\n### macOS (with Homebrew)\n\n```bash\nbrew install python-tk@3.12\n/opt/homebrew/bin/python3.12 -m pip install --break-system-packages numpy sounddevice python-rtmidi\n```\n\n## Usage\n\n```bash\npython main.py\n```\n\nOr on macOS with Homebrew Python:\n\n```bash\n/opt/homebrew/bin/python3.12 main.py\n```\n\n### Keyboard Mapping\n\n| Keys | Notes |\n|------|-------|\n| `Z S X D C V G B H N J M` | C3 to B3 (lower octave) |\n| `Q 2 W 3 E R 5 T 6 Y 7 U` | C4 to B4 (upper octave) |\n| `Up / Down arrows` | Previous / Next preset |\n| `Escape` | Quit |\n\n### MIDI\n\nMIDI 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.\n\n## Project Structure\n\n```\nvx7/\n├── main.py              # Entry point + controller\n├── requirements.txt     # Dependencies\n├── engine/\n│   ├── envelope.py      # DX7 4-rate/4-level envelope generator\n│   ├── operator.py      # FM operator with KLS, velocity scaling\n│   ├── algorithm.py     # All 32 DX7 algorithms + rendering\n│   ├── lfo.py           # LFO with 6 waveforms\n│   ├── voice.py         # Single voice (6 ops + LFO + algorithm)\n│   └── synth.py         # 16-voice polyphonic synthesizer\n├── presets/\n│   └── factory.py       # 32 ROM1A factory presets\n├── gui/\n│   ├── styles.py        # Colors, fonts, dimensions\n│   ├── display.py       # LCD display emulation (green glow + scanlines)\n│   ├── panel.py         # DX7-style control panel\n│   └── app.py           # Main application window\n├── audio/\n│   └── output.py        # Real-time audio output (sounddevice)\n└── midi/\n    └── handler.py       # Optional MIDI input handler\n```\n\n## Factory Presets (ROM1A)\n\n| # | Name | # | Name | # | Name | # | Name |\n|---|------|---|------|---|------|---|------|\n| 1 | BRASS 1 | 9 | PIANO 2 | 17 | MARIMBA | 25 | PIPES |\n| 2 | BRASS 2 | 10 | PIANO 3 | 18 | KOTO | 26 | HARP 1 |\n| 3 | BRASS 3 | 11 | E.PIANO 1 | 19 | FLUTE 1 | 27 | GUITAR 1 |\n| 4 | STRINGS 1 | 12 | E.PIANO 2 | 20 | FLUTE 2 | 28 | SYN-LEAD |\n| 5 | STRINGS 2 | 13 | E.PIANO 3 | 21 | OBOE | 29 | BASS 1 |\n| 6 | STRINGS 3 | 14 | HARPSICH | 22 | TRUMPET | 30 | BASS 2 |\n| 7 | ORCHSTRA | 15 | CLAV 1 | 23 | ORGAN 1 | 31 | TUB BELL |\n| 8 | PIANO 1 | 16 | VIBE | 24 | ORGAN 2 | 32 | BELLS |\n\n## Status\n\nThis project is in **beta**. Known issues:\n- GUI layout has overlapping elements in some sections (work in progress)\n- Preset parameters are approximations of the original DX7 SysEx data\n- Some algorithms may need fine-tuning for accuracy\n\n## License\n\nMIT License\n\n## Acknowledgments\n\nInspired by the Yamaha DX7 (1983), one of the most influential synthesizers ever made.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpasquero%2Fvx7","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgpasquero%2Fvx7","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpasquero%2Fvx7/lists"}