{"id":44758922,"url":"https://github.com/gpasquero/voog","last_synced_at":"2026-02-22T07:01:21.534Z","repository":{"id":338669203,"uuid":"1158672803","full_name":"gpasquero/voog","owner":"gpasquero","description":"VOOG — Virtual Analog Synthesizer (Moog-style polyphonic synth with GUI)","archived":false,"fork":false,"pushed_at":"2026-02-16T13:49:21.000Z","size":2063,"stargazers_count":123,"open_issues_count":0,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-20T06:51:49.709Z","etag":null,"topics":["audio","dsp","gui","midi","moog","music","open-source","python","sound-synthesis","synthesizer","tkinter","virtual-analog"],"latest_commit_sha":null,"homepage":"https://github.com/gpasquero/voog/releases/tag/v1.0.0","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"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":null,"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-15T18:38:55.000Z","updated_at":"2026-02-19T22:31:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gpasquero/voog","commit_stats":null,"previous_names":["gpasquero/voog"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/gpasquero/voog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvoog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvoog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvoog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvoog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gpasquero","download_url":"https://codeload.github.com/gpasquero/voog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpasquero%2Fvoog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29674928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T05:54:28.202Z","status":"ssl_error","status_checked_at":"2026-02-21T05:53:42.585Z","response_time":107,"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","dsp","gui","midi","moog","music","open-source","python","sound-synthesis","synthesizer","tkinter","virtual-analog"],"created_at":"2026-02-16T01:47:58.530Z","updated_at":"2026-02-21T06:01:47.150Z","avatar_url":"https://github.com/gpasquero.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VOOG\n\n**Virtual Analog Synthesizer** — a Moog-style polyphonic synthesizer built in Python with a tkinter GUI inspired by the Subsequent 37.\n\n![Python 3.13+](https://img.shields.io/badge/python-3.13%2B-blue)\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│  VOOG   VIRTUAL ANALOG SYNTHESIZER                              │\n├─────────────────────────────────────────────────────────────────┤\n│  OSC 1        OSC 2        OSC 3        NOISE                   │\n│  (Oct)(Semi)  (Oct)(Semi)  (Oct)(Semi)  (Lvl)                   │\n│  (Det)(Lvl)   (Det)(Lvl)   (Det)(Lvl)                           │\n├─────────────────────────────────────────────────────────────────┤\n│  FILTER       FILTER ENV   AMP ENV      LFO                     │\n│  (Cut)(Res)   (A)(D)       (A)(D)       (Rate)(Depth)           │\n│  (Env)(Key)   (S)(R)       (S)(R)                               │\n├─────────────────────────────────────────────────────────────────┤\n│  ┌─┬█┬─┬█┬─┬─┬█┬─┬█┬─┬█┬─┬─┬█┬─┬█┬─┬─┬█┬─┬█┬─┬█┬─┐         │    │\n│  │ │█│ │█│ │ │█│ │█│ │█│ │ │█│ │█│ │ │█│ │█│ │█│ │         │    │\n│  └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘         │    │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n## Features\n\n- **3 oscillators** with sine, saw, square, and triangle waveforms\n- **Moog ladder filter** (24dB/oct) with resonance and envelope modulation\n- **Dual ADSR envelopes** for amplitude and filter\n- **LFO** with 4 waveforms and 3 modulation destinations (filter, pitch, amp)\n- **Glide/portamento** with off, always, and legato modes\n- **Noise generator** (white/pink)\n- **4 multitimbral channels**, 8-voice polyphony each\n- **19 built-in presets** from deep sub basses to screaming leads\n- **Rotary knob GUI** with Subsequent 37-inspired dark theme\n- **Virtual keyboard** — mouse click/drag + QWERTY PC keyboard input\n- **MIDI input** support (optional, graceful fallback)\n- **Patch save/load** system (`~/.synth_patches/`)\n\n## Installation\n\nRequires **Python 3.13+** with tkinter.\n\n```bash\n# Clone\ngit clone https://github.com/gpasquero/voog.git\ncd voog\n\n# Create virtual environment\npython3.13 -m venv .venv\nsource .venv/bin/activate\n\n# Install dependencies\npip install numpy sounddevice\n\n# Optional: MIDI support\npip install mido python-rtmidi\n\n# macOS only: install tkinter if needed\nbrew install python-tk@3.13\n```\n\n## Usage\n\n### GUI mode\n\n```bash\nsource .venv/bin/activate\npython -m synth --gui\n```\n\n### CLI REPL mode\n\n```bash\npython -m synth\n```\n\n### Command-line options\n\n```\n--gui          Launch graphical interface\n--patch NAME   Load a preset by name (e.g. \"Bass Voog\")\n--midi-port P  Connect to a specific MIDI port\n--no-midi      Start without MIDI input\n--list-midi    List available MIDI ports and exit\n```\n\n## Playing notes\n\n### QWERTY keyboard mapping\n\n```\n W E   T Y U   O P        ← black keys (sharps)\nA S D F G H J K L          ← white keys\nC D E F G A B C D\n```\n\nHold a key to sustain — key repeat is filtered so notes don't re-trigger.\n\n### Mouse\n\nClick and drag on the virtual keyboard. Drag across keys to glide between notes.\n\n### MIDI\n\nConnect any MIDI controller. MIDI CC messages are mapped to synth parameters (cutoff, resonance, envelopes, LFO, etc.).\n\n## Rotary knobs\n\nAll synth parameters use rotary knob controls:\n\n- **Drag vertically** on any knob to change its value (up = increase)\n- **Scroll wheel** for fine adjustment\n- The amber arc shows the current value position\n\n## Presets\n\n| Preset | Description |\n|---|---|\n| Init | Default starting patch |\n| Bass Voog | Fat detuned saw bass with filter envelope |\n| Lead Saw | Aggressive dual-saw lead with legato glide |\n| Pad Strings | Warm evolving pad with slow filter LFO |\n| Sub Thunder | Deep sub bass with square wave foundation |\n| Acid Squelch | High-resonance filter sweep, 303-style |\n| Funky Pluck | Snappy percussive hit, fast decay |\n| Screaming Lead | Bright resonant lead with vibrato and glide |\n| Warm Brass | Square/saw mix with medium attack |\n| Dark Drone | Detuned low saws with slow LFO sweep |\n| Perc Hit | Noise burst with ultra-short envelope |\n| Vintage Keys | Triangle/square electric piano tone |\n| Wobble Bass | LFO-driven filter modulation |\n| Trance Lead | Wide-detuned triple saw with pitch vibrato |\n| Fat Unison | Three saws spread ±25 cents |\n| Reso Sweep | Near self-oscillating filter with long decay |\n| Fifth Stab | Power fifth interval, short punch |\n| Glass Bell | Sine harmonics with long crystalline release |\n| Noise Sweep | Filtered noise with resonant LFO, sci-fi |\n\n## Architecture\n\n```\nsynth/\n├── dsp/            # Signal processing modules\n│   ├── oscillator  # Wavetable synthesis (sine, saw, square, triangle)\n│   ├── filter      # Moog ladder filter (24dB/oct, Huovilainen model)\n│   ├── envelope    # ADSR envelope generator\n│   ├── lfo         # Low-frequency oscillator\n│   ├── glide       # Pitch portamento\n│   └── noise       # White/pink noise generator\n├── engine/         # Audio engine\n│   ├── audio_engine  # Master engine, sounddevice output, MIDI routing\n│   ├── channel       # Multitimbral channel (patch + voice allocator)\n│   ├── voice         # Single voice (oscillators + filter + envelopes)\n│   └── voice_allocator  # Polyphonic allocation with voice stealing\n├── gui/            # Graphical interface\n│   └── app         # tkinter GUI with rotary knobs and virtual keyboard\n├── midi/           # MIDI support\n│   ├── midi_input  # MIDI port listener (mido/rtmidi)\n│   ├── midi_router # Message routing\n│   └── cc_map      # CC-to-parameter mapping\n├── patch/          # Patch system\n│   ├── patch       # Patch data structure\n│   ├── patch_manager  # Save/load to disk\n│   └── default_patches  # 19 built-in presets\n└── cli/            # Command-line interface\n    └── repl        # Interactive REPL\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpasquero%2Fvoog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgpasquero%2Fvoog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpasquero%2Fvoog/lists"}