2026年7月2日木曜日

NuVCO開発スタート ― STM32でデジタルVCOを作る

はじめに

しばらくごぶさたしておりました。

Arduinoを使った ArLFO を製作して以来、しばらくシンセDIYから離れていましたが、久しぶりに新しいモジュールを作り始めることにしました。

今回のテーマは STM32を使ったデジタルVCO です。


NuVCOとは?

NuVCOは、STM32 Nucleoボードを使ったデジタルVCOです。

名前の NuNucleo の頭文字から取りました。また、"New" の意味も少し込めています。

これまでにもNucleoボードを使っていくつか音源を試作してきましたが、今回は本格的なEurorack向けVCOとして開発を進めます。

なぜデジタルVCOなのか

これまでにディスクリートVCOや3340を使ったアナログVCOをいくつか製作してきました。

アナログVCOには独特の揺らぎがあり、複数のVCOを重ねるだけでも温かく太い音になります。これはアナログならではの魅力です。

一方で、生成できる波形は比較的シンプルです。

もし、

  • SuperSawのような厚いDetune

  • デジタルシンセならではの複雑な波形

  • リアルタイムで変化するWave Morphing

こんな音をモジュラーシンセに持ち込めたら面白いのではないか。

そんな思いから、このプロジェクトを始めました。

もちろん、市販のデジタルVCOを買った方が安くて高性能でしょう。

それでも、自分で作る楽しさには抗えません。

開発目標

今回の目標はシンプルです。

  • STM32G431 + PCM5102AによるデジタルVCO

  • 16bit / 48kHzオーディオ

  • 1V/Oct入力対応

  • サイン波・三角波・ノコギリ波・矩形波

  • 将来的にはDetuneやWave Morphingも実装

デジタルならではの自由度を活かしながら、Eurorackの世界で気軽に使えるVCOを目指します。

ハードウェア

コアとなるマイコンは STM32G431 を搭載した Nucleo-32

オーディオDACには PCM5102A を使用しています。

どちらも比較的入手しやすく、性能も十分です。



基板を作る前は、ブレッドボード上でひたすら実験を繰り返していました。




現在ここまで動いています

現時点では次の機能が動作しています。

  • 正弦波

  • 三角波

  • ノコギリ波

  • 矩形波

  • Waveノブによる波形切り替え

  • Tuneノブによる周波数変更

  • 2 Voice Detune

ノコギリ波はこんな感じです。




PCM5102Aには内部デジタルフィルタが入っているため、急峻な波形では少しリンギングが見られます。

今回はあえてDACの生の出力を観察しています。このクセをどう扱うかも今後の楽しみの一つです。

2 Voice Detuneも動き始めました。

まだ完成ではありませんが、「おっ、シンセらしい音になってきた」と感じられるところまで来ています。




ソフトウェア

ソフトウェアはSTM32CubeMXとCubeIDEを使っています。

音声出力はI2S + DMA。

波形生成はDDS(位相アキュムレータ方式)で実装しました。

STM32G431にはFPUが搭載されているため、現在はWavetableを使わず浮動小数点演算でリアルタイム生成しています。

今後は処理速度や音質とのバランスを見ながら、アルゴリズムを改良していく予定です。

今後の予定

まだまだやりたいことはたくさんあります。

  • Wave Morphing

  • PolyBLEPによるアンチエイリアス

  • 1V/Octキャリブレーション

  • Voice数の切り替え

  • Proto-B基板での評価

デジタルVCOならではの自由度を活かして、少しずつ育てていこうと思っています。

おわりに

ようやく「音が出る」段階までたどり着きました。

ここからは音質や演奏性を磨きながら、本格的なEurorackモジュールへ仕上げていきます。

今後はDDSの実装やPolyBLEP、Detuneアルゴリズム、1V/Octの調整など、開発の過程も順番に紹介していく予定です。

お楽しみに。


USER SWで1 Voice、2 Voice Detune、3 Voice Detuneを切り替えた様子を動画にしました。Detune POTを回したときの音の変化も確認できます。