はじめに
しばらくごぶさたしておりました。
Arduinoを使った ArLFO を製作して以来、しばらくシンセDIYから離れていましたが、久しぶりに新しいモジュールを作り始めることにしました。
今回のテーマは STM32を使ったデジタルVCO です。
NuVCOとは?
NuVCOは、STM32 Nucleoボードを使ったデジタルVCOです。
名前の Nu は Nucleo の頭文字から取りました。また、"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を回したときの音の変化も確認できます。





0 件のコメント:
コメントを投稿