
2026/02/16 4:40
**Show HN:** VOOG ― Python で実装した Moog スタイルのポリフォニックシンセサイザー(Tkinter GUI付き)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
VOOGは、Moog風の合成をエミュレートする無料のPythonベースのバーチャルアナログシンセサイザーです。NumPyとsounddeviceで構築され、フルグラフィカルインターフェイスにはtkinterが使用されています。GUIはロータリーノブ、ダークテーマレイアウト、仮想キーボード(マウスまたはQWERTY)、およびマウスドラッグ、スクロールホイール、MIDI CCメッセージによるパラメータ制御をサポートします。
エンジンには、正弦波・鋸歯波・四角波・三角波のいずれかを生成できる3つのオシレーターが含まれます。24 dB/octレーダーフィルタはHuovilainenの実装に基づき、共振とエンベロープモジュレーションを備えています。アンプ用およびフィルタ用の2種類のADSRエンベロープ、4つの波形と3つのデスティネーションを持つLFO、グライド/ポルタメント、ノイズジェネレータ、および各チャンネルに8音声多音性を提供する4つのマルチトリムチャネルがあります。VOOGはベース、リード、パッドなどを含む19種類のプリセットパッチを備えており、
~/.synth_patches/ にパッチの保存/読み込みが可能です。
インストールにはPython 3.13+(tkinter)、NumPy、sounddevice、およびMIDIサポート用に任意でmido/python‑rtmidi が必要です。コマンドラインオプションとしては
--gui、--patch NAME、--midi-port P、--no-midi、--list-midi があります。また REPL モードも利用可能です。
プロジェクトのアーキテクチャでは、DSPモジュール(オシレーター、フィルタ、エンベロープ、LFO、グライド、ノイズ)をエンジンコンポーネント(audio_engine、channel、voice、allocator)、GUI、MIDI処理、パッチシステム、およびCLIから分離しています。VOOGはMIT ライセンスの下でリリースされており、開発者やミュージシャンがアナログ合成を実験し、ライブパフォーマンスやDAWに統合し、機能拡張へ貢献することを奨励しています。
本文
VOOG – バーチャル アナログ シンセサイザー
Pythonで書かれたモーグ風ポリフォニックシンセサイザー。Tkinter GUIは Subsequent 37 をヒントにデザインされています。
メインウィンドウレイアウト
┌─────────────────────────────────────────────────────────────────┐ │ VOOG VIRTUAL ANALOG SYNTHESIZER │ ├─────────────────────────────────────────────────────────────────┤ │ OSC 1 OSC 2 OSC 3 NOISE │ │ (Oct)(Semi) (Oct)(Semi) (Oct)(Semi) (Lvl) │ │ (Det)(Lvl) (Det)(Lvl) (Det)(Lvl) │ ├─────────────────────────────────────────────────────────────────┤ │ FILTER FILTER ENV AMP ENV LFO │ │ (Cut)(Res) (A)(D) (A)(D) (Rate)(Depth) │ │ (Env)(Key) (S)(R) (S)(R) │ ├─────────────────────────────────────────────────────────────────┤ │ [Knob grid] │ └─────────────────────────────────────────────────────────────────┘
主な機能
| 機能 | 説明 |
|---|---|
| オシレーター | 3種類(サイン、サーベル、スクエア、トライアングル) |
| フィルタ | モーグラダー(24 dB/oct)、共振・エンベロープモジュレーション付き |
| エンベロープ | アンプ用とフィルタ用に2つのADSR |
| LFO | 4種類の波形、フィルタ・ピッチ・アンプをモジュレート |
| グライド/ポルタメント | Off / Always / Legato モード |
| ノイズ | ホワイトまたはピンクノイズジェネレーター |
| マルチティブラル | 4チャンネル、各チャンネルで8音割り当て可能 |
| プリセット | バス、リード、パッド等を含む19個の内蔵プリセット |
| GUI | ロータリー・ノブ、ダークテーマ(Subsequent 37 風) |
| キーボード入力 | マウスクリック/ドラッグ+QWERTY PC キーボード |
| MIDI | 任意でサポート。失敗時は優雅にフォールバック |
| パッチシステム | に保存・読み込み |
インストール
# リポジトリをクローン git clone https://github.com/gpasquero/voog.git cd voog # 仮想環境作成 (Python 3.13+) python3.13 -m venv .venv source .venv/bin/activate # コア依存関係をインストール pip install numpy sounddevice # オプション: MIDIサポート pip install mido python-rtmidi # macOS のみ – Tkinter が欠落している場合 brew install python-tk@3.13
使い方
GUI モード
source .venv/bin/activate python -m synth --gui
CLI REPL モード
python -m synth repl
コマンドラインオプション
– グラフィカルインターフェースを起動--gui
– 名前でプリセットをロード(例:--patch NAME
)"Bass Voog"
– 指定した MIDI ポートに接続--midi-port P
– MIDI 入力なしで開始--no-midi
– 利用可能な MIDI ポート一覧表示して終了--list-midi
音符の入力
| 入力 | マッピング |
|---|---|
| QWERTY | W E T Y U O P(黒鍵)/A S D F G H J K L(白鍵) |
| マウス | 仮想キーボードをクリック/ドラッグ。ノート間でグライド |
| MIDI | 任意のコントローラ。CC メッセージはパラメータにマップ(カットオフ、共振、エンベロープ、LFO 等) |
- キーを押し続けるとサステイン。
- マウスでキー間をドラッグするとグライドします。
ロータリー・ノブ
全てのシンセパラメータはロタリーノブで制御されます:
- 垂直にドラッグ:値変更(↑=増加)
- スクロールホイール:微調整
- アンバー色の弧が現在位置を示す
プリセット(一部抜粋)
| プリセット | 説明 |
|---|---|
| Init | デフォルトパッチ |
| Bass Voog | ダブったサーベルベース、フィルタエンベロープ付き |
| Lead Saw | アグレッシブなダブル・サーベルリード、レガートグライド |
| Pad Strings | ウォームでゆっくりとしたパッド、低速フィルタLFO |
| Sub Thunder | 深いサブベース、スクエアウェーブ基盤 |
| Acid Squelch | 高共振フィルタスイープ(303風) |
| Funky Pluck | パーカッシブハット、速いデケイ |
| Screaming Lead | 明るく共振するリード、ビブラート&グライド |
| Warm Brass | スクエア/サーベル混合、中程度のアタック |
| Dark Drone | 低音のダブったサーベル、ゆっくりLFOスイープ |
| Perc Hit | ノイズバースト、極短エンベロープ |
| Vintage Keys | トライアングル/スクエアの電気ピアノ調子 |
| …(残り17個) |
プロジェクト構成
synth/ ├── dsp/ # 信号処理モジュール │ ├── oscillator # ウェーブテーブル合成(サイン、サーベル、スクエア、トライアングル) │ ├── filter # モーグラダー (24dB/oct, Huovilainen model) │ ├── envelope # ADSR エンベロープジェネレーター │ ├── lfo # 低周波オシレーター │ ├── glide # ピッチポルタメント │ └── noise # ホワイト/ピンクノイズジェネレーター ├── engine/ # オーディオエンジン │ ├── audio_engine # マスターエンジン、sounddevice 出力、MIDI ルーティング │ ├── channel # マルチティブラルチャンネル(パッチ+音割り当て) │ ├── voice # 単一音声(オシレーター+フィルタ+エンベロープ) │ └── voice_allocator # ポリフォニック割り当てとボイスストーカー ├── gui/ # GUI │ └── app # Tkinter GUI、ロータリー・ノブ&仮想キーボード ├── midi/ # MIDI サポート │ ├── midi_input # MIDI ポートリスナー (mido/rtmidi) │ ├── midi_router # メッセージルーティング │ └── cc_map # CC → パラメータマッピング ├── patch/ # パッチシステム │ ├── patch # パッチデータ構造 │ ├── patch_manager # ファイルへの保存・読み込み │ └── default_patches # 19個の内蔵プリセット └── cli/ # コマンドラインインターフェース └── repl # インタラクティブ REPL
ライセンス
MIT © 2024 gpasquero (VOOG)